home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume38 / annote / part04 < prev    next >
Encoding:
Text File  |  1993-06-19  |  61.4 KB  |  3,268 lines

  1. Newsgroups: comp.sources.misc
  2. From: arrouye@cosmos.imag.fr (Yves Arrouye)
  3. Subject: v38i008:  annote - BibTeX styles supporting annotations, v1.5.1, Part04/04
  4. Message-ID: <1993Jun17.185647.10453@sparky.imd.sterling.com>
  5. X-Md4-Signature: b7bc6fe0da7727ad845b2efcb6141beb
  6. Sender: kent@sparky.imd.sterling.com (Kent Landfield)
  7. Organization: IMAG Institute, University of Grenoble
  8. Date: Thu, 17 Jun 1993 18:56:47 GMT
  9. Approved: kent@sparky.imd.sterling.com
  10.  
  11. Submitted-by: arrouye@cosmos.imag.fr (Yves Arrouye)
  12. Posting-number: Volume 38, Issue 8
  13. Archive-name: annote/part04
  14. Environment: LaTex
  15. Supersedes: annote: Volume 37, Issue 57-59
  16.  
  17. #! /bin/sh
  18. # This is a shell archive.  Remove anything before this line, then unpack
  19. # it by saving it into a file and typing "sh file".  To overwrite existing
  20. # files, type "sh file -c".  You can also feed this as standard input via
  21. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  22. # will see the following message at the end:
  23. #        "End of shell archive."
  24. # Contents:  siam.bst fsiam.bst lsiam.bst
  25. # Wrapped by arrouye@cosmos on Tue Jun  8 13:47:10 1993
  26. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  27. if test -f 'siam.bst' -a "${1}" != "-c" ; then 
  28.   echo shar: Will not clobber existing file \"'siam.bst'\"
  29. else
  30. echo shar: Extracting \"'siam.bst'\" \(19083 characters\)
  31. sed "s/^X//" >'siam.bst' <<'END_OF_FILE'
  32. X% Style file modified on Tue Jun  8 12:31:16 1993 with `annotebib.el' v1.5.1
  33. X%                     by Yves.Arrouye <arrouye@cosmos>
  34. X%                     to support the `annote' annotation field.
  35. X% Style file modified on Tue Jun  8 12:31:16 1993 with `annotebib.el' v1.5.1
  36. X%                     by Yves.Arrouye <arrouye@cosmos>
  37. X%                     to support the `commentaire' annotation field.
  38. X
  39. X% This bibliography style was made `annote'-compatible by "annotebib.el".
  40. X% It can be used for both annotated and non-annotated bibliographies listing
  41. X% (`annote' package by Yves Arrouye <arrouye@imag.imag.fr>).
  42. X
  43. X% SIAM bibliography style (29-Jan-88 version)
  44. X%    numeric labels, alphabetic order, Mathematical Reviews abbreviations,
  45. X%    names in \sc, titles in italics, book titles mixed upper-lower and article
  46. X%    titles lowercase, commas separate all fields except before "notes".
  47. X%
  48. X%   History
  49. X%    1/30/86    (HWT)    Original version, by Howard Trickey.
  50. X%    6/15/87    (HWT)    Fix format.editors---Martin Costabel.
  51. X%    1/29/88    (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
  52. X%            THIS `siam' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
  53. X
  54. XENTRY
  55. X  { annote
  56. X    commentaire
  57. X    address
  58. X    author
  59. X    booktitle
  60. X    chapter
  61. X    edition
  62. X    editor
  63. X    howpublished
  64. X    institution
  65. X    journal
  66. X    key
  67. X    month
  68. X    note
  69. X    number
  70. X    organization
  71. X    pages
  72. X    publisher
  73. X    school
  74. X    series
  75. X    title
  76. X    type
  77. X    volume
  78. X    year
  79. X  }
  80. X  {}
  81. X  { label }
  82. X
  83. XINTEGERS { output.state before.all mid.sentence after.block }
  84. X
  85. XFUNCTION {init.state.consts}
  86. X{ #0 'before.all :=
  87. X  #1 'mid.sentence :=
  88. X  #2 'after.block :=
  89. X}
  90. X
  91. XSTRINGS { s t }
  92. X
  93. XFUNCTION {output.nonnull}
  94. X{ 's :=
  95. X  output.state mid.sentence =
  96. X    { ", " * write$ }
  97. X    { output.state after.block =
  98. X    { add.period$ write$
  99. X      newline$
  100. X      "\newblock " write$
  101. X    }
  102. X    'write$
  103. X      if$
  104. X      mid.sentence 'output.state :=
  105. X    }
  106. X  if$
  107. X  s
  108. X}
  109. X
  110. XFUNCTION {output}
  111. X{ duplicate$ empty$
  112. X    'pop$
  113. X    'output.nonnull
  114. X  if$
  115. X}
  116. X
  117. XFUNCTION {output.check}
  118. X{ 't :=
  119. X  duplicate$ empty$
  120. X    { pop$ "empty " t * " in " * cite$ * warning$ }
  121. X    'output.nonnull
  122. X  if$
  123. X}
  124. X
  125. XFUNCTION {output.bibitem}
  126. X{ newline$
  127. X  "\bibitem{" write$
  128. X  cite$ write$
  129. X  "}" write$
  130. X  newline$
  131. X  ""
  132. X  before.all 'output.state :=
  133. X}
  134. X
  135. XFUNCTION {annotebib.format.commentaire}
  136. X{ commentaire empty$
  137. X        { "" }
  138. X        { "\ifx\commentaire\undefined\else\begin{commentaire} "
  139. X          commentaire
  140. X          * " \end{commentaire}\fi " *
  141. X        }
  142. X      if$
  143. X}
  144. X
  145. XFUNCTION {annotebib.format.annote}
  146. X{ annote empty$
  147. X        { "" }
  148. X        { "\ifx\annote\undefined\else\begin{annote} "
  149. X          annote
  150. X          * " \end{annote}\fi " *
  151. X        }
  152. X      if$
  153. X}
  154. X
  155. XFUNCTION {fin.entry}
  156. X{ add.period$
  157. X  write$
  158. X  newline$
  159. X  annotebib.format.commentaire write$
  160. X  annotebib.format.annote write$
  161. X}
  162. X
  163. XFUNCTION {new.block}
  164. X{ output.state before.all =
  165. X    'skip$
  166. X    { after.block 'output.state := }
  167. X  if$
  168. X}
  169. X
  170. XFUNCTION {not}
  171. X{   { #0 }
  172. X    { #1 }
  173. X  if$
  174. X}
  175. X
  176. XFUNCTION {and}
  177. X{   'skip$
  178. X    { pop$ #0 }
  179. X  if$
  180. X}
  181. X
  182. XFUNCTION {or}
  183. X{   { pop$ #1 }
  184. X    'skip$
  185. X  if$
  186. X}
  187. X
  188. XFUNCTION {new.block.checka}
  189. X{ empty$
  190. X    'skip$
  191. X    'new.block
  192. X  if$
  193. X}
  194. X
  195. XFUNCTION {field.or.null}
  196. X{ duplicate$ empty$
  197. X    { pop$ "" }
  198. X    'skip$
  199. X  if$
  200. X}
  201. X
  202. XFUNCTION {emphasize}
  203. X{ duplicate$ empty$
  204. X    { pop$ "" }
  205. X    { "{\em " swap$ * "}" * }
  206. X  if$
  207. X}
  208. X
  209. XFUNCTION {scapify}
  210. X{ duplicate$ empty$
  211. X    { pop$ "" }
  212. X    { "{\sc " swap$ * "}" * }
  213. X  if$
  214. X}
  215. X
  216. XINTEGERS { nameptr namesleft numnames }
  217. X
  218. XFUNCTION {format.names}
  219. X{ 's :=
  220. X  #1 'nameptr :=
  221. X  s num.names$ 'numnames :=
  222. X  numnames 'namesleft :=
  223. X    { namesleft #0 > }
  224. X    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
  225. X      nameptr #1 >
  226. X    { namesleft #1 >
  227. X        { ", " * t * }
  228. X        { numnames #2 >
  229. X        { "," * }
  230. X        'skip$
  231. X          if$
  232. X          t "others" =
  233. X        { " et~al." * }
  234. X        { " and " * t * }
  235. X          if$
  236. X        }
  237. X      if$
  238. X    }
  239. X    't
  240. X      if$
  241. X      nameptr #1 + 'nameptr :=
  242. X      namesleft #1 - 'namesleft :=
  243. X    }
  244. X  while$
  245. X}
  246. X
  247. XSTRINGS { last.authors }
  248. X
  249. XFUNCTION {init.last.authors}
  250. X{ "" 'last.authors :=
  251. X}
  252. X
  253. XFUNCTION {format.authors}
  254. X{ author empty$
  255. X    { "" 'last.authors :=
  256. X      ""
  257. X    }
  258. X    { author last.authors =
  259. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  260. X        { author format.names scapify }
  261. X      if$
  262. X      author 'last.authors :=
  263. X    }
  264. X  if$
  265. X}
  266. X
  267. XFUNCTION {format.organization}
  268. X{ organization empty$
  269. X    { "" 'last.authors :=
  270. X      ""
  271. X    }
  272. X    { organization last.authors =
  273. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  274. X        { organization scapify }
  275. X      if$
  276. X      organization 'last.authors :=
  277. X    }
  278. X  if$
  279. X}
  280. X
  281. XFUNCTION {format.editors}
  282. X{ editor empty$
  283. X    { "" 'last.authors :=
  284. X      ""
  285. X    }
  286. X    { editor last.authors =
  287. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  288. X    { editor format.names scapify }
  289. X      if$
  290. X      editor num.names$ #1 >
  291. X        { ", eds." * }
  292. X    { ", ed." * }
  293. X      if$
  294. X      editor 'last.authors :=
  295. X    }
  296. X  if$
  297. X}
  298. X
  299. XFUNCTION {format.ineditors}
  300. X{ editor empty$
  301. X    { "" }
  302. X    { editor format.names
  303. X      editor num.names$ #1 >
  304. X    { ", eds." * }
  305. X    { ", ed." * }
  306. X      if$
  307. X    }
  308. X  if$
  309. X}
  310. X
  311. XFUNCTION {format.title}
  312. X{ title empty$
  313. X    { "" }
  314. X    { title "t" change.case$ emphasize }
  315. X  if$
  316. X}
  317. X
  318. XFUNCTION {n.dashify}
  319. X{ 't :=
  320. X  ""
  321. X    { t empty$ not }
  322. X    { t #1 #1 substring$ "-" =
  323. X    { t #1 #2 substring$ "--" = not
  324. X        { "--" *
  325. X          t #2 global.max$ substring$ 't :=
  326. X        }
  327. X        {   { t #1 #1 substring$ "-" = }
  328. X        { "-" *
  329. X          t #2 global.max$ substring$ 't :=
  330. X        }
  331. X          while$
  332. X        }
  333. X      if$
  334. X    }
  335. X    { t #1 #1 substring$ *
  336. X      t #2 global.max$ substring$ 't :=
  337. X    }
  338. X      if$
  339. X    }
  340. X  while$
  341. X}
  342. X
  343. XFUNCTION {format.date}
  344. X{ year empty$
  345. X    { month empty$
  346. X    { "" }
  347. X    { "there's a month but no year in " cite$ * warning$
  348. X      month
  349. X    }
  350. X      if$
  351. X    }
  352. X    { month empty$
  353. X    'year
  354. X    { month " " * year * }
  355. X      if$
  356. X    }
  357. X  if$
  358. X}
  359. X
  360. XFUNCTION {format.btitle}
  361. X{ title emphasize
  362. X}
  363. X
  364. XFUNCTION {tie.or.space.connect}
  365. X{ duplicate$ text.length$ #3 <
  366. X    { "~" }
  367. X    { " " }
  368. X  if$
  369. X  swap$ * *
  370. X}
  371. X
  372. XFUNCTION {either.or.check}
  373. X{ empty$
  374. X    'pop$
  375. X    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  376. X  if$
  377. X}
  378. X
  379. XFUNCTION {format.bvolume}
  380. X{ volume empty$
  381. X    { "" }
  382. X    { "vol.~" volume *
  383. X      series empty$
  384. X    'skip$
  385. X    { " of " * series * }
  386. X      if$
  387. X      "volume and number" number either.or.check
  388. X    }
  389. X  if$
  390. X}
  391. X
  392. XFUNCTION {format.number.series}
  393. X{ volume empty$
  394. X    { number empty$
  395. X    { series field.or.null }
  396. X    { "no.~" number *
  397. X      series empty$
  398. X        { "there's a number but no series in " cite$ * warning$ }
  399. X        { " in " * series * }
  400. X      if$
  401. X    }
  402. X      if$
  403. X    }
  404. X    { "" }
  405. X  if$
  406. X}
  407. X
  408. XFUNCTION {format.edition}
  409. X{ edition empty$
  410. X    { "" }
  411. X    { edition "l" change.case$ "~ed." * }
  412. X  if$
  413. X}
  414. X
  415. XINTEGERS { multiresult }
  416. X
  417. XFUNCTION {multi.page.check}
  418. X{ 't :=
  419. X  #0 'multiresult :=
  420. X    { multiresult not
  421. X      t empty$ not
  422. X      and
  423. X    }
  424. X    { t #1 #1 substring$
  425. X      duplicate$ "-" =
  426. X      swap$ duplicate$ "," =
  427. X      swap$ "+" =
  428. X      or or
  429. X    { #1 'multiresult := }
  430. X    { t #2 global.max$ substring$ 't := }
  431. X      if$
  432. X    }
  433. X  while$
  434. X  multiresult
  435. X}
  436. X
  437. XFUNCTION {format.pages}
  438. X{ pages empty$
  439. X    { "" }
  440. X    { pages multi.page.check
  441. X    { "pp.~" pages n.dashify * }
  442. X    { "p.~" pages * }
  443. X      if$
  444. X    }
  445. X  if$
  446. X}
  447. X
  448. XFUNCTION {format.vol.year}
  449. X{ volume field.or.null
  450. X  year empty$
  451. X    { "empty year in " cite$ * warning$ }
  452. X    { " (" year * ")" * * }
  453. X  if$
  454. X}
  455. X
  456. XFUNCTION {format.chapter.pages}
  457. X{ chapter empty$
  458. X    'format.pages
  459. X    { type empty$
  460. X    { "ch.~" chapter * }
  461. X    { type "l" change.case$ chapter tie.or.space.connect }
  462. X      if$
  463. X      pages empty$
  464. X    'skip$
  465. X    { ", " * format.pages * }
  466. X      if$
  467. X    }
  468. X  if$
  469. X}
  470. X
  471. XFUNCTION {format.in.ed.booktitle}
  472. X{ booktitle empty$
  473. X    { "" }
  474. X    { editor empty$
  475. X    { "in " booktitle * }
  476. X    { "in " booktitle * ", " * format.ineditors * }
  477. X      if$
  478. X    }
  479. X  if$
  480. X}
  481. X
  482. XFUNCTION {empty.misc.check}
  483. X{ author empty$ title empty$ howpublished empty$
  484. X  month empty$ year empty$ note empty$
  485. X  and and and and and
  486. X  key empty$ not and
  487. X    { "all relevant fields are empty in " cite$ * warning$ }
  488. X    'skip$
  489. X  if$
  490. X}
  491. X
  492. XFUNCTION {format.thesis.type}
  493. X{ type empty$
  494. X    'skip$
  495. X    { pop$
  496. X      type "l" change.case$
  497. X    }
  498. X  if$
  499. X}
  500. X
  501. XFUNCTION {format.tr.number}
  502. X{ type empty$
  503. X    { "Tech. Rep." }
  504. X    'type
  505. X  if$
  506. X  number empty$
  507. X    { "l" change.case$ }
  508. X    { number tie.or.space.connect }
  509. X  if$
  510. X}
  511. X
  512. XFUNCTION {format.article.crossref}
  513. X{ key empty$
  514. X    { journal empty$
  515. X    { "need key or journal for " cite$ * " to crossref " * crossref *
  516. X      warning$
  517. X      ""
  518. X    }
  519. X    { "in " journal * }
  520. X      if$
  521. X    }
  522. X    { "in " key * }
  523. X  if$
  524. X  " \cite{" * crossref * "}" *
  525. X}
  526. X
  527. XFUNCTION {format.crossref.editor}
  528. X{ editor #1 "{vv~}{ll}" format.name$
  529. X  editor num.names$ duplicate$
  530. X  #2 >
  531. X    { pop$ " et~al." * }
  532. X    { #2 <
  533. X    'skip$
  534. X    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  535. X        { " et~al." * }
  536. X        { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  537. X      if$
  538. X    }
  539. X      if$
  540. X    }
  541. X  if$
  542. X}
  543. X
  544. XFUNCTION {format.book.crossref}
  545. X{ volume empty$
  546. X    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  547. X      "in "
  548. X    }
  549. X    { "vol.~" volume *
  550. X      " of " *
  551. X    }
  552. X  if$
  553. X  editor empty$
  554. X  editor field.or.null author field.or.null =
  555. X  or
  556. X    { key empty$
  557. X    { series empty$
  558. X        { "need editor, key, or series for " cite$ * " to crossref " *
  559. X          crossref * warning$
  560. X          "" *
  561. X        }
  562. X        { series * }
  563. X      if$
  564. X    }
  565. X    { key * }
  566. X      if$
  567. X    }
  568. X    { format.crossref.editor * }
  569. X  if$
  570. X  " \cite{" * crossref * "}" *
  571. X}
  572. X
  573. XFUNCTION {format.incoll.inproc.crossref}
  574. X{ editor empty$
  575. X  editor field.or.null author field.or.null =
  576. X  or
  577. X    { key empty$
  578. X    { booktitle empty$
  579. X        { "need editor, key, or booktitle for " cite$ * " to crossref " *
  580. X          crossref * warning$
  581. X          ""
  582. X        }
  583. X        { "in " booktitle * }
  584. X      if$
  585. X    }
  586. X    { "in " key * }
  587. X      if$
  588. X    }
  589. X    { "in " format.crossref.editor * }
  590. X  if$
  591. X  " \cite{" * crossref * "}" *
  592. X}
  593. X
  594. XFUNCTION {article}
  595. X{ output.bibitem
  596. X  format.authors "author" output.check
  597. X  format.title "title" output.check
  598. X  crossref missing$
  599. X    { journal "journal" output.check
  600. X      format.vol.year output
  601. X    }
  602. X    { format.article.crossref output.nonnull }
  603. X  if$
  604. X  format.pages output
  605. X  new.block
  606. X  note output
  607. X  fin.entry
  608. X}
  609. X
  610. XFUNCTION {book}
  611. X{ output.bibitem
  612. X  author empty$
  613. X    { format.editors "author and editor" output.check }
  614. X    { format.authors output.nonnull
  615. X      crossref missing$
  616. X    { "author and editor" editor either.or.check }
  617. X    'skip$
  618. X      if$
  619. X    }
  620. X  if$
  621. X  format.btitle "title" output.check
  622. X  crossref missing$
  623. X    { format.bvolume output
  624. X      format.number.series output
  625. X      publisher "publisher" output.check
  626. X      address output
  627. X    }
  628. X    { format.book.crossref output.nonnull }
  629. X  if$
  630. X  format.edition output
  631. X  format.date "year" output.check
  632. X  new.block
  633. X  note output
  634. X  fin.entry
  635. X}
  636. X
  637. XFUNCTION {booklet}
  638. X{ output.bibitem
  639. X  format.authors output
  640. X  format.title "title" output.check
  641. X  howpublished new.block.checka
  642. X  howpublished output
  643. X  address output
  644. X  format.date output
  645. X  new.block
  646. X  note output
  647. X  fin.entry
  648. X}
  649. X
  650. XFUNCTION {inbook}
  651. X{ output.bibitem
  652. X  author empty$
  653. X    { format.editors "author and editor" output.check }
  654. X    { format.authors output.nonnull
  655. X      crossref missing$
  656. X    { "author and editor" editor either.or.check }
  657. X    'skip$
  658. X      if$
  659. X    }
  660. X  if$
  661. X  format.btitle "title" output.check
  662. X  crossref missing$
  663. X    { format.bvolume output
  664. X      format.number.series output
  665. X      publisher "publisher" output.check
  666. X      address output
  667. X    }
  668. X    { format.book.crossref output.nonnull }
  669. X  if$
  670. X  format.edition output
  671. X  format.date "year" output.check
  672. X  format.chapter.pages "chapter and pages" output.check
  673. X  new.block
  674. X  note output
  675. X  fin.entry
  676. X}
  677. X
  678. XFUNCTION {incollection}
  679. X{ output.bibitem
  680. X  format.authors "author" output.check
  681. X  format.title "title" output.check
  682. X  crossref missing$
  683. X    { format.in.ed.booktitle "booktitle" output.check
  684. X      format.bvolume output
  685. X      format.number.series output
  686. X      publisher "publisher" output.check
  687. X      address output
  688. X      format.edition output
  689. X      format.date "year" output.check
  690. X    }
  691. X    { format.incoll.inproc.crossref output.nonnull }
  692. X  if$
  693. X  format.chapter.pages output
  694. X  new.block
  695. X  note output
  696. X  fin.entry
  697. X}
  698. X
  699. XFUNCTION {inproceedings}
  700. X{ output.bibitem
  701. X  format.authors "author" output.check
  702. X  format.title "title" output.check
  703. X  crossref missing$
  704. X    { format.in.ed.booktitle "booktitle" output.check
  705. X      format.bvolume output
  706. X      format.number.series output
  707. X      address empty$
  708. X    { organization output
  709. X      publisher output
  710. X      format.date "year" output.check
  711. X    }
  712. X    { address output.nonnull
  713. X      format.date "year" output.check
  714. X      organization output
  715. X      publisher output
  716. X    }
  717. X      if$
  718. X    }
  719. X    { format.incoll.inproc.crossref output.nonnull }
  720. X  if$
  721. X  format.pages output
  722. X  new.block
  723. X  note output
  724. X  fin.entry
  725. X}
  726. X
  727. XFUNCTION {conference} { inproceedings }
  728. X
  729. XFUNCTION {manual}
  730. X{ output.bibitem
  731. X  author empty$
  732. X    { format.organization output }
  733. X    { format.authors output.nonnull }
  734. X  if$
  735. X  format.btitle "title" output.check
  736. X  author empty$
  737. X    'skip$
  738. X    { organization output }
  739. X  if$
  740. X  address output
  741. X  format.edition output
  742. X  format.date output
  743. X  new.block
  744. X  note output
  745. X  fin.entry
  746. X}
  747. X
  748. XFUNCTION {mastersthesis}
  749. X{ output.bibitem
  750. X  format.authors "author" output.check
  751. X  format.title "title" output.check
  752. X  "Master's thesis" format.thesis.type output.nonnull
  753. X  school "school" output.check
  754. X  address output
  755. X  format.date "year" output.check
  756. X  new.block
  757. X  note output
  758. X  fin.entry
  759. X}
  760. X
  761. XFUNCTION {misc}
  762. X{ output.bibitem
  763. X  format.authors output
  764. X  format.title output
  765. X  howpublished new.block.checka
  766. X  howpublished output
  767. X  format.date output
  768. X  new.block
  769. X  note output
  770. X  fin.entry
  771. X  empty.misc.check
  772. X}
  773. X
  774. XFUNCTION {phdthesis}
  775. X{ output.bibitem
  776. X  format.authors "author" output.check
  777. X  format.btitle "title" output.check
  778. X  "PhD thesis" format.thesis.type output.nonnull
  779. X  school "school" output.check
  780. X  address output
  781. X  format.date "year" output.check
  782. X  new.block
  783. X  note output
  784. X  fin.entry
  785. X}
  786. X
  787. XFUNCTION {proceedings}
  788. X{ output.bibitem
  789. X  editor empty$
  790. X    { format.organization output }
  791. X    { format.editors output.nonnull }
  792. X  if$
  793. X  format.btitle "title" output.check
  794. X  format.bvolume output
  795. X  format.number.series output
  796. X  address empty$
  797. X    { editor empty$
  798. X    'skip$
  799. X    { organization output }
  800. X      if$
  801. X      publisher output
  802. X      format.date "year" output.check
  803. X    }
  804. X    { address output.nonnull
  805. X      format.date "year" output.check
  806. X      editor empty$
  807. X    'skip$
  808. X    { organization output }
  809. X      if$
  810. X      publisher output
  811. X    }
  812. X  if$
  813. X  new.block
  814. X  note output
  815. X  fin.entry
  816. X}
  817. X
  818. XFUNCTION {techreport}
  819. X{ output.bibitem
  820. X  format.authors "author" output.check
  821. X  format.title "title" output.check
  822. X  format.tr.number output.nonnull
  823. X  institution "institution" output.check
  824. X  address output
  825. X  format.date "year" output.check
  826. X  new.block
  827. X  note output
  828. X  fin.entry
  829. X}
  830. X
  831. XFUNCTION {unpublished}
  832. X{ output.bibitem
  833. X  format.authors "author" output.check
  834. X  format.title "title" output.check
  835. X  new.block
  836. X  note "note" output.check
  837. X  format.date output
  838. X  fin.entry
  839. X}
  840. X
  841. XFUNCTION {default.type} { misc }
  842. X
  843. XMACRO {jan} {"Jan."}
  844. X
  845. XMACRO {feb} {"Feb."}
  846. X
  847. XMACRO {mar} {"Mar."}
  848. X
  849. XMACRO {apr} {"Apr."}
  850. X
  851. XMACRO {may} {"May"}
  852. X
  853. XMACRO {jun} {"June"}
  854. X
  855. XMACRO {jul} {"July"}
  856. X
  857. XMACRO {aug} {"Aug."}
  858. X
  859. XMACRO {sep} {"Sept."}
  860. X
  861. XMACRO {oct} {"Oct."}
  862. X
  863. XMACRO {nov} {"Nov."}
  864. X
  865. XMACRO {dec} {"Dec."}
  866. X
  867. XMACRO {acmcs} {"ACM Comput. Surveys"}
  868. X
  869. XMACRO {acta} {"Acta Inf."}
  870. X
  871. XMACRO {cacm} {"Comm. ACM"}
  872. X
  873. XMACRO {ibmjrd} {"IBM J. Res. Dev."}
  874. X
  875. XMACRO {ibmsj} {"IBM Syst.~J."}
  876. X
  877. XMACRO {ieeese} {"IEEE Trans. Softw. Eng."}
  878. X
  879. XMACRO {ieeetc} {"IEEE Trans. Comput."}
  880. X
  881. XMACRO {ieeetcad}
  882. X {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
  883. X
  884. XMACRO {ipl} {"Inf. Process. Lett."}
  885. X
  886. XMACRO {jacm} {"J.~Assoc. Comput. Mach."}
  887. X
  888. XMACRO {jcss} {"J.~Comput. System Sci."}
  889. X
  890. XMACRO {scp} {"Sci. Comput. Programming"}
  891. X
  892. XMACRO {sicomp} {"SIAM J. Comput."}
  893. X
  894. XMACRO {tocs} {"ACM Trans. Comput. Syst."}
  895. X
  896. XMACRO {tods} {"ACM Trans. Database Syst."}
  897. X
  898. XMACRO {tog} {"ACM Trans. Gr."}
  899. X
  900. XMACRO {toms} {"ACM Trans. Math. Softw."}
  901. X
  902. XMACRO {toois} {"ACM Trans. Office Inf. Syst."}
  903. X
  904. XMACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
  905. X
  906. XMACRO {tcs} {"Theoretical Comput. Sci."}
  907. X
  908. XREAD
  909. X
  910. XFUNCTION {sortify}
  911. X{ purify$
  912. X  "l" change.case$
  913. X}
  914. X
  915. XINTEGERS { len }
  916. X
  917. XFUNCTION {chop.word}
  918. X{ 's :=
  919. X  'len :=
  920. X  s #1 len substring$ =
  921. X    { s len #1 + global.max$ substring$ }
  922. X    's
  923. X  if$
  924. X}
  925. X
  926. XFUNCTION {sort.format.names}
  927. X{ 's :=
  928. X  #1 'nameptr :=
  929. X  ""
  930. X  s num.names$ 'numnames :=
  931. X  numnames 'namesleft :=
  932. X    { namesleft #0 > }
  933. X    { nameptr #1 >
  934. X    { "   " * }
  935. X    'skip$
  936. X      if$
  937. X      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
  938. X      nameptr numnames = t "others" = and
  939. X    { "et al" * }
  940. X    { t sortify * }
  941. X      if$
  942. X      nameptr #1 + 'nameptr :=
  943. X      namesleft #1 - 'namesleft :=
  944. X    }
  945. X  while$
  946. X}
  947. X
  948. XFUNCTION {sort.format.title}
  949. X{ 't :=
  950. X  "A " #2
  951. X    "An " #3
  952. X      "The " #4 t chop.word
  953. X    chop.word
  954. X  chop.word
  955. X  sortify
  956. X  #1 global.max$ substring$
  957. X}
  958. X
  959. XFUNCTION {author.sort}
  960. X{ author empty$
  961. X    { key empty$
  962. X    { "to sort, need author or key in " cite$ * warning$
  963. X      ""
  964. X    }
  965. X    { key sortify }
  966. X      if$
  967. X    }
  968. X    { author sort.format.names }
  969. X  if$
  970. X}
  971. X
  972. XFUNCTION {author.editor.sort}
  973. X{ author empty$
  974. X    { editor empty$
  975. X    { key empty$
  976. X        { "to sort, need author, editor, or key in " cite$ * warning$
  977. X          ""
  978. X        }
  979. X        { key sortify }
  980. X      if$
  981. X    }
  982. X    { editor sort.format.names }
  983. X      if$
  984. X    }
  985. X    { author sort.format.names }
  986. X  if$
  987. X}
  988. X
  989. XFUNCTION {author.organization.sort}
  990. X{ author empty$
  991. X    { organization empty$
  992. X    { key empty$
  993. X        { "to sort, need author, organization, or key in " cite$ * warning$
  994. X          ""
  995. X        }
  996. X        { key sortify }
  997. X      if$
  998. X    }
  999. X    { "The " #4 organization chop.word sortify }
  1000. X      if$
  1001. X    }
  1002. X    { author sort.format.names }
  1003. X  if$
  1004. X}
  1005. X
  1006. XFUNCTION {editor.organization.sort}
  1007. X{ editor empty$
  1008. X    { organization empty$
  1009. X    { key empty$
  1010. X        { "to sort, need editor, organization, or key in " cite$ * warning$
  1011. X          ""
  1012. X        }
  1013. X        { key sortify }
  1014. X      if$
  1015. X    }
  1016. X    { "The " #4 organization chop.word sortify }
  1017. X      if$
  1018. X    }
  1019. X    { editor sort.format.names }
  1020. X  if$
  1021. X}
  1022. X
  1023. XFUNCTION {presort}
  1024. X{ type$ "book" =
  1025. X  type$ "inbook" =
  1026. X  or
  1027. X    'author.editor.sort
  1028. X    { type$ "proceedings" =
  1029. X    'editor.organization.sort
  1030. X    { type$ "manual" =
  1031. X        'author.organization.sort
  1032. X        'author.sort
  1033. X      if$
  1034. X    }
  1035. X      if$
  1036. X    }
  1037. X  if$
  1038. X  "    "
  1039. X  *
  1040. X  year field.or.null sortify
  1041. X  *
  1042. X  "    "
  1043. X  *
  1044. X  title field.or.null
  1045. X  sort.format.title
  1046. X  *
  1047. X  #1 entry.max$ substring$
  1048. X  'sort.key$ :=
  1049. X}
  1050. X
  1051. XITERATE {presort}
  1052. X
  1053. XSORT
  1054. X
  1055. XSTRINGS { longest.label }
  1056. X
  1057. XINTEGERS { number.label longest.label.width }
  1058. X
  1059. XFUNCTION {initialize.longest.label}
  1060. X{ "" 'longest.label :=
  1061. X  #1 'number.label :=
  1062. X  #0 'longest.label.width :=
  1063. X}
  1064. X
  1065. XFUNCTION {longest.label.pass}
  1066. X{ number.label int.to.str$ 'label :=
  1067. X  number.label #1 + 'number.label :=
  1068. X  label width$ longest.label.width >
  1069. X    { label 'longest.label :=
  1070. X      label width$ 'longest.label.width :=
  1071. X    }
  1072. X    'skip$
  1073. X  if$
  1074. X}
  1075. X
  1076. XEXECUTE {initialize.longest.label}
  1077. X
  1078. XITERATE {longest.label.pass}
  1079. X
  1080. XFUNCTION {begin.bib}
  1081. X{ preamble$ empty$
  1082. X    'skip$
  1083. X    { preamble$ write$ newline$ }
  1084. X  if$
  1085. X  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  1086. X}
  1087. X
  1088. XEXECUTE {begin.bib}
  1089. X
  1090. XEXECUTE {init.state.consts}
  1091. X
  1092. XEXECUTE {init.last.authors}
  1093. X
  1094. XITERATE {call.type$}
  1095. X
  1096. XFUNCTION {end.bib}
  1097. X{ newline$
  1098. X  "\end{thebibliography}" write$ newline$
  1099. X}
  1100. X
  1101. XEXECUTE {end.bib}
  1102. END_OF_FILE
  1103. if test 19083 -ne `wc -c <'siam.bst'`; then
  1104.     echo shar: \"'siam.bst'\" unpacked with wrong size!
  1105. fi
  1106. # end of 'siam.bst'
  1107. fi
  1108. if test -f 'fsiam.bst' -a "${1}" != "-c" ; then 
  1109.   echo shar: Will not clobber existing file \"'fsiam.bst'\"
  1110. else
  1111. echo shar: Extracting \"'fsiam.bst'\" \(19322 characters\)
  1112. sed "s/^X//" >'fsiam.bst' <<'END_OF_FILE'
  1113. X% Style file modified on Tue Jun  8 12:31:07 1993 with `annotebib.el' v1.5.1
  1114. X%                     by Yves.Arrouye <arrouye@cosmos>
  1115. X%                     to support the `annote' annotation field.
  1116. X% Style file modified on Tue Jun  8 12:31:07 1993 with `annotebib.el' v1.5.1
  1117. X%                     by Yves.Arrouye <arrouye@cosmos>
  1118. X%                     to support the `commentaire' annotation field.
  1119. X
  1120. X% This bibliography style was made `annote'-compatible by "annotebib.el".
  1121. X% It can be used for both annotated and non-annotated bibliographies listing
  1122. X% (`annote' package by Yves Arrouye <arrouye@imag.imag.fr>).
  1123. X
  1124. X% FSIAM bibliography style (1992), french version by arrouye@imag.imag.fr)
  1125. X% SIAM bibliography style (29-Jan-88 version)
  1126. X%    numeric labels, alphabetic order, Mathematical Reviews abbreviations,
  1127. X%    names in \sc, titles in italics, book titles mixed upper-lower and article
  1128. X%    titles lowercase, commas separate all fields except before "notes".
  1129. X%
  1130. X%   History
  1131. X%    1/30/86    (HWT)    Original version, by Howard Trickey.
  1132. X%    6/15/87    (HWT)    Fix format.editors---Martin Costabel.
  1133. X%    1/29/88    (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
  1134. X%            THIS `siam' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
  1135. X
  1136. XENTRY
  1137. X  { annote
  1138. X    commentaire
  1139. X    address
  1140. X    author
  1141. X    booktitle
  1142. X    chapter
  1143. X    edition
  1144. X    editor
  1145. X    howpublished
  1146. X    institution
  1147. X    journal
  1148. X    key
  1149. X    month
  1150. X    note
  1151. X    number
  1152. X    organization
  1153. X    pages
  1154. X    publisher
  1155. X    school
  1156. X    series
  1157. X    title
  1158. X    type
  1159. X    volume
  1160. X    year
  1161. X  }
  1162. X  {}
  1163. X  { label }
  1164. X
  1165. XINTEGERS { output.state before.all mid.sentence after.block }
  1166. X
  1167. XFUNCTION {init.state.consts}
  1168. X{ #0 'before.all :=
  1169. X  #1 'mid.sentence :=
  1170. X  #2 'after.block :=
  1171. X}
  1172. X
  1173. XSTRINGS { s t }
  1174. X
  1175. XFUNCTION {output.nonnull}
  1176. X{ 's :=
  1177. X  output.state mid.sentence =
  1178. X    { ", " * write$ }
  1179. X    { output.state after.block =
  1180. X    { add.period$ write$
  1181. X      newline$
  1182. X      "\newblock " write$
  1183. X    }
  1184. X    'write$
  1185. X      if$
  1186. X      mid.sentence 'output.state :=
  1187. X    }
  1188. X  if$
  1189. X  s
  1190. X}
  1191. X
  1192. XFUNCTION {output}
  1193. X{ duplicate$ empty$
  1194. X    'pop$
  1195. X    'output.nonnull
  1196. X  if$
  1197. X}
  1198. X
  1199. XFUNCTION {output.check}
  1200. X{ 't :=
  1201. X  duplicate$ empty$
  1202. X    { pop$ "empty " t * " in " * cite$ * warning$ }
  1203. X    'output.nonnull
  1204. X  if$
  1205. X}
  1206. X
  1207. XFUNCTION {output.bibitem}
  1208. X{ newline$
  1209. X  "\bibitem{" write$
  1210. X  cite$ write$
  1211. X  "}" write$
  1212. X  newline$
  1213. X  ""
  1214. X  before.all 'output.state :=
  1215. X}
  1216. X
  1217. XFUNCTION {annotebib.format.commentaire}
  1218. X{ commentaire empty$
  1219. X        { "" }
  1220. X        { "\ifx\commentaire\undefined\else\begin{commentaire} "
  1221. X          commentaire
  1222. X          * " \end{commentaire}\fi " *
  1223. X        }
  1224. X      if$
  1225. X}
  1226. X
  1227. XFUNCTION {annotebib.format.annote}
  1228. X{ annote empty$
  1229. X        { "" }
  1230. X        { "\ifx\annote\undefined\else\begin{annote} "
  1231. X          annote
  1232. X          * " \end{annote}\fi " *
  1233. X        }
  1234. X      if$
  1235. X}
  1236. X
  1237. XFUNCTION {fin.entry}
  1238. X{ add.period$
  1239. X  write$
  1240. X  newline$
  1241. X  annotebib.format.commentaire write$
  1242. X  annotebib.format.annote write$
  1243. X}
  1244. X
  1245. XFUNCTION {new.block}
  1246. X{ output.state before.all =
  1247. X    'skip$
  1248. X    { after.block 'output.state := }
  1249. X  if$
  1250. X}
  1251. X
  1252. XFUNCTION {not}
  1253. X{   { #0 }
  1254. X    { #1 }
  1255. X  if$
  1256. X}
  1257. X
  1258. XFUNCTION {and}
  1259. X{   'skip$
  1260. X    { pop$ #0 }
  1261. X  if$
  1262. X}
  1263. X
  1264. XFUNCTION {or}
  1265. X{   { pop$ #1 }
  1266. X    'skip$
  1267. X  if$
  1268. X}
  1269. X
  1270. XFUNCTION {new.block.checka}
  1271. X{ empty$
  1272. X    'skip$
  1273. X    'new.block
  1274. X  if$
  1275. X}
  1276. X
  1277. XFUNCTION {field.or.null}
  1278. X{ duplicate$ empty$
  1279. X    { pop$ "" }
  1280. X    'skip$
  1281. X  if$
  1282. X}
  1283. X
  1284. XFUNCTION {emphasize}
  1285. X{ duplicate$ empty$
  1286. X    { pop$ "" }
  1287. X    { "{\em " swap$ * "}" * }
  1288. X  if$
  1289. X}
  1290. X
  1291. XFUNCTION {scapify}
  1292. X{ duplicate$ empty$
  1293. X    { pop$ "" }
  1294. X    { "{\sc " swap$ * "}" * }
  1295. X  if$
  1296. X}
  1297. X
  1298. XINTEGERS { nameptr namesleft numnames }
  1299. X
  1300. XFUNCTION {format.names}
  1301. X{ 's :=
  1302. X  #1 'nameptr :=
  1303. X  s num.names$ 'numnames :=
  1304. X  numnames 'namesleft :=
  1305. X    { namesleft #0 > }
  1306. X    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
  1307. X      nameptr #1 >
  1308. X    { namesleft #1 >
  1309. X        { ", " * t * }
  1310. X        { numnames #2 >
  1311. X        { "," * }
  1312. X        'skip$
  1313. X          if$
  1314. X          t "others" =
  1315. X        { " et~al." * }
  1316. X        { " et " * t * }
  1317. X          if$
  1318. X        }
  1319. X      if$
  1320. X    }
  1321. X    't
  1322. X      if$
  1323. X      nameptr #1 + 'nameptr :=
  1324. X      namesleft #1 - 'namesleft :=
  1325. X    }
  1326. X  while$
  1327. X}
  1328. X
  1329. XSTRINGS { last.authors }
  1330. X
  1331. XFUNCTION {init.last.authors}
  1332. X{ "" 'last.authors :=
  1333. X}
  1334. X
  1335. XFUNCTION {format.authors}
  1336. X{ author empty$
  1337. X    { "" 'last.authors :=
  1338. X      ""
  1339. X    }
  1340. X    { author last.authors =
  1341. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  1342. X        { author format.names scapify }
  1343. X      if$
  1344. X      author 'last.authors :=
  1345. X    }
  1346. X  if$
  1347. X}
  1348. X
  1349. XFUNCTION {format.organization}
  1350. X{ organization empty$
  1351. X    { "" 'last.authors :=
  1352. X      ""
  1353. X    }
  1354. X    { organization last.authors =
  1355. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  1356. X        { organization scapify }
  1357. X      if$
  1358. X      organization 'last.authors :=
  1359. X    }
  1360. X  if$
  1361. X}
  1362. X
  1363. XFUNCTION {format.editors}
  1364. X{ editor empty$
  1365. X    { "" 'last.authors :=
  1366. X      ""
  1367. X    }
  1368. X    { editor last.authors =
  1369. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  1370. X    { editor format.names scapify }
  1371. X      if$
  1372. X      editor num.names$ #1 >
  1373. X        { ", eds." * }
  1374. X    { ", ed." * }
  1375. X      if$
  1376. X      editor 'last.authors :=
  1377. X    }
  1378. X  if$
  1379. X}
  1380. X
  1381. XFUNCTION {format.ineditors}
  1382. X{ editor empty$
  1383. X    { "" }
  1384. X    { editor format.names
  1385. X      editor num.names$ #1 >
  1386. X    { ", eds." * }
  1387. X    { ", ed." * }
  1388. X      if$
  1389. X    }
  1390. X  if$
  1391. X}
  1392. X
  1393. XFUNCTION {format.title}
  1394. X{ title empty$
  1395. X    { "" }
  1396. X    { title "t" change.case$ emphasize }
  1397. X  if$
  1398. X}
  1399. X
  1400. XFUNCTION {n.dashify}
  1401. X{ 't :=
  1402. X  ""
  1403. X    { t empty$ not }
  1404. X    { t #1 #1 substring$ "-" =
  1405. X    { t #1 #2 substring$ "--" = not
  1406. X        { "--" *
  1407. X          t #2 global.max$ substring$ 't :=
  1408. X        }
  1409. X        {   { t #1 #1 substring$ "-" = }
  1410. X        { "-" *
  1411. X          t #2 global.max$ substring$ 't :=
  1412. X        }
  1413. X          while$
  1414. X        }
  1415. X      if$
  1416. X    }
  1417. X    { t #1 #1 substring$ *
  1418. X      t #2 global.max$ substring$ 't :=
  1419. X    }
  1420. X      if$
  1421. X    }
  1422. X  while$
  1423. X}
  1424. X
  1425. XFUNCTION {format.date}
  1426. X{ year empty$
  1427. X    { month empty$
  1428. X    { "" }
  1429. X    { "there's a month but no year in " cite$ * warning$
  1430. X      month
  1431. X    }
  1432. X      if$
  1433. X    }
  1434. X    { month empty$
  1435. X    'year
  1436. X    { month " " * year * }
  1437. X      if$
  1438. X    }
  1439. X  if$
  1440. X}
  1441. X
  1442. XFUNCTION {format.btitle}
  1443. X{ title emphasize
  1444. X}
  1445. X
  1446. XFUNCTION {tie.or.space.connect}
  1447. X{ duplicate$ text.length$ #3 <
  1448. X    { "~" }
  1449. X    { " " }
  1450. X  if$
  1451. X  swap$ * *
  1452. X}
  1453. X
  1454. XFUNCTION {either.or.check}
  1455. X{ empty$
  1456. X    'pop$
  1457. X    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  1458. X  if$
  1459. X}
  1460. X
  1461. XFUNCTION {format.bvolume}
  1462. X{ volume empty$
  1463. X    { "" }
  1464. X    { "vol.~" volume *
  1465. X      series empty$
  1466. X    'skip$
  1467. X    { " de " * series * }
  1468. X      if$
  1469. X      "volume and number" number either.or.check
  1470. X    }
  1471. X  if$
  1472. X}
  1473. X
  1474. XFUNCTION {format.number.series}
  1475. X{ volume empty$
  1476. X    { number empty$
  1477. X    { series field.or.null }
  1478. X    { "no.~" number *
  1479. X      series empty$
  1480. X        { "there's a number but no series in " cite$ * warning$ }
  1481. X        { " in " * series * }
  1482. X      if$
  1483. X    }
  1484. X      if$
  1485. X    }
  1486. X    { "" }
  1487. X  if$
  1488. X}
  1489. X
  1490. XFUNCTION {format.edition}
  1491. X{ edition empty$
  1492. X    { "" }
  1493. X    { "ed.~" edition "l" change.case$ * }
  1494. X  if$
  1495. X}
  1496. X
  1497. XINTEGERS { multiresult }
  1498. X
  1499. XFUNCTION {multi.page.check}
  1500. X{ 't :=
  1501. X  #0 'multiresult :=
  1502. X    { multiresult not
  1503. X      t empty$ not
  1504. X      and
  1505. X    }
  1506. X    { t #1 #1 substring$
  1507. X      duplicate$ "-" =
  1508. X      swap$ duplicate$ "," =
  1509. X      swap$ "+" =
  1510. X      or or
  1511. X    { #1 'multiresult := }
  1512. X    { t #2 global.max$ substring$ 't := }
  1513. X      if$
  1514. X    }
  1515. X  while$
  1516. X  multiresult
  1517. X}
  1518. X
  1519. XFUNCTION {format.pages}
  1520. X{ pages empty$
  1521. X    { "" }
  1522. X    { pages multi.page.check
  1523. X    { "pp.~" pages n.dashify * }
  1524. X    { "p.~" pages * }
  1525. X      if$
  1526. X    }
  1527. X  if$
  1528. X}
  1529. X
  1530. XFUNCTION {format.vol.year}
  1531. X{
  1532. X%  number empty$
  1533. X%    { "" * }
  1534. X%    { " " * number * "(" * }
  1535. X%  if$
  1536. X  volume field.or.null
  1537. X%  number empty$
  1538. X%    { "" * }
  1539. X%    { ")" * }
  1540. X%  if$
  1541. X  year empty$
  1542. X    { "empty year in " cite$ * warning$ }
  1543. X    { " (" year * ")" * * }
  1544. X  if$
  1545. X}
  1546. X
  1547. XFUNCTION {format.chapter.pages}
  1548. X{ chapter empty$
  1549. X    'format.pages
  1550. X    { type empty$
  1551. X    { "ch.~" chapter * }
  1552. X    { type "l" change.case$ chapter tie.or.space.connect }
  1553. X      if$
  1554. X      pages empty$
  1555. X    'skip$
  1556. X    { ", " * format.pages * }
  1557. X      if$
  1558. X    }
  1559. X  if$
  1560. X}
  1561. X
  1562. XFUNCTION {format.in.ed.booktitle}
  1563. X{ booktitle empty$
  1564. X    { "" }
  1565. X    { editor empty$
  1566. X    { "in " booktitle * }
  1567. X    { "in " booktitle * ", " * format.ineditors * }
  1568. X      if$
  1569. X    }
  1570. X  if$
  1571. X}
  1572. X
  1573. XFUNCTION {empty.misc.check}
  1574. X{ author empty$ title empty$ howpublished empty$
  1575. X  month empty$ year empty$ note empty$
  1576. X  and and and and and
  1577. X  key empty$ not and
  1578. X    { "all relevant fields are empty in " cite$ * warning$ }
  1579. X    'skip$
  1580. X  if$
  1581. X}
  1582. X
  1583. XFUNCTION {format.thesis.type}
  1584. X{ type empty$
  1585. X    'skip$
  1586. X    { pop$
  1587. X      type "l" change.case$
  1588. X    }
  1589. X  if$
  1590. X}
  1591. X
  1592. XFUNCTION {format.tr.number}
  1593. X{ type empty$
  1594. X    { "Rapp. Tech." }
  1595. X    'type
  1596. X  if$
  1597. X  number empty$
  1598. X    { "l" change.case$ }
  1599. X    { number tie.or.space.connect }
  1600. X  if$
  1601. X}
  1602. X
  1603. XFUNCTION {format.article.crossref}
  1604. X{ key empty$
  1605. X    { journal empty$
  1606. X    { "need key or journal for " cite$ * " to crossref " * crossref *
  1607. X      warning$
  1608. X      ""
  1609. X    }
  1610. X    { "in " journal * }
  1611. X      if$
  1612. X    }
  1613. X    { "in " key * }
  1614. X  if$
  1615. X  " \cite{" * crossref * "}" *
  1616. X}
  1617. X
  1618. XFUNCTION {format.crossref.editor}
  1619. X{ editor #1 "{vv~}{ll}" format.name$
  1620. X  editor num.names$ duplicate$
  1621. X  #2 >
  1622. X    { pop$ " et~al." * }
  1623. X    { #2 <
  1624. X    'skip$
  1625. X    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  1626. X        { " et~al." * }
  1627. X        { " et " * editor #2 "{vv~}{ll}" format.name$ * }
  1628. X      if$
  1629. X    }
  1630. X      if$
  1631. X    }
  1632. X  if$
  1633. X}
  1634. X
  1635. XFUNCTION {format.book.crossref}
  1636. X{ volume empty$
  1637. X    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  1638. X      "in "
  1639. X    }
  1640. X    { "vol.~" volume *
  1641. X      " of " *
  1642. X    }
  1643. X  if$
  1644. X  editor empty$
  1645. X  editor field.or.null author field.or.null =
  1646. X  or
  1647. X    { key empty$
  1648. X    { series empty$
  1649. X        { "need editor, key, or series for " cite$ * " to crossref " *
  1650. X          crossref * warning$
  1651. X          "" *
  1652. X        }
  1653. X        { series * }
  1654. X      if$
  1655. X    }
  1656. X    { key * }
  1657. X      if$
  1658. X    }
  1659. X    { format.crossref.editor * }
  1660. X  if$
  1661. X  " \cite{" * crossref * "}" *
  1662. X}
  1663. X
  1664. XFUNCTION {format.incoll.inproc.crossref}
  1665. X{ editor empty$
  1666. X  editor field.or.null author field.or.null =
  1667. X  or
  1668. X    { key empty$
  1669. X    { booktitle empty$
  1670. X        { "need editor, key, or booktitle for " cite$ * " to crossref " *
  1671. X          crossref * warning$
  1672. X          ""
  1673. X        }
  1674. X        { "in " booktitle * }
  1675. X      if$
  1676. X    }
  1677. X    { "in " key * }
  1678. X      if$
  1679. X    }
  1680. X    { "in " format.crossref.editor * }
  1681. X  if$
  1682. X  " \cite{" * crossref * "}" *
  1683. X}
  1684. X
  1685. XFUNCTION {article}
  1686. X{ output.bibitem
  1687. X  format.authors "author" output.check
  1688. X  format.title "title" output.check
  1689. X  crossref missing$
  1690. X    { journal "journal" output.check
  1691. X      format.vol.year output
  1692. X    }
  1693. X    { format.article.crossref output.nonnull }
  1694. X  if$
  1695. X  format.pages output
  1696. X  new.block
  1697. X  note output
  1698. X  fin.entry
  1699. X  newline$
  1700. X}
  1701. X
  1702. XFUNCTION {book}
  1703. X{ output.bibitem
  1704. X  author empty$
  1705. X    { format.editors "author and editor" output.check }
  1706. X    { format.authors output.nonnull
  1707. X      crossref missing$
  1708. X    { "author and editor" editor either.or.check }
  1709. X    'skip$
  1710. X      if$
  1711. X    }
  1712. X  if$
  1713. X  format.btitle "title" output.check
  1714. X  crossref missing$
  1715. X    { format.bvolume output
  1716. X      format.number.series output
  1717. X      publisher "publisher" output.check
  1718. X      address output
  1719. X    }
  1720. X    { format.book.crossref output.nonnull }
  1721. X  if$
  1722. X  format.edition output
  1723. X  format.date "year" output.check
  1724. X  new.block
  1725. X  note output
  1726. X  fin.entry
  1727. X  newline$
  1728. X}
  1729. X
  1730. XFUNCTION {booklet}
  1731. X{ output.bibitem
  1732. X  format.authors output
  1733. X  format.title "title" output.check
  1734. X  howpublished new.block.checka
  1735. X  howpublished output
  1736. X  address output
  1737. X  format.date output
  1738. X  new.block
  1739. X  note output
  1740. X  fin.entry
  1741. X  newline$
  1742. X}
  1743. X
  1744. XFUNCTION {inbook}
  1745. X{ output.bibitem
  1746. X  author empty$
  1747. X    { format.editors "author and editor" output.check }
  1748. X    { format.authors output.nonnull
  1749. X      crossref missing$
  1750. X    { "author and editor" editor either.or.check }
  1751. X    'skip$
  1752. X      if$
  1753. X    }
  1754. X  if$
  1755. X  format.btitle "title" output.check
  1756. X  crossref missing$
  1757. X    { format.bvolume output
  1758. X      format.number.series output
  1759. X      publisher "publisher" output.check
  1760. X      address output
  1761. X    }
  1762. X    { format.book.crossref output.nonnull }
  1763. X  if$
  1764. X  format.edition output
  1765. X  format.date "year" output.check
  1766. X  format.chapter.pages "chapter and pages" output.check
  1767. X  new.block
  1768. X  note output
  1769. X  fin.entry
  1770. X}
  1771. X
  1772. XFUNCTION {incollection}
  1773. X{ output.bibitem
  1774. X  format.authors "author" output.check
  1775. X  format.title "title" output.check
  1776. X  crossref missing$
  1777. X    { format.in.ed.booktitle "booktitle" output.check
  1778. X      format.bvolume output
  1779. X      format.number.series output
  1780. X      publisher "publisher" output.check
  1781. X      address output
  1782. X      format.edition output
  1783. X      format.date "year" output.check
  1784. X    }
  1785. X    { format.incoll.inproc.crossref output.nonnull }
  1786. X  if$
  1787. X  format.chapter.pages output
  1788. X  new.block
  1789. X  note output
  1790. X  fin.entry
  1791. X}
  1792. X
  1793. XFUNCTION {inproceedings}
  1794. X{ output.bibitem
  1795. X  format.authors "author" output.check
  1796. X  format.title "title" output.check
  1797. X  crossref missing$
  1798. X    { format.in.ed.booktitle "booktitle" output.check
  1799. X      format.bvolume output
  1800. X      format.number.series output
  1801. X      address empty$
  1802. X    { organization output
  1803. X      publisher output
  1804. X      format.date "year" output.check
  1805. X    }
  1806. X    { address output.nonnull
  1807. X      format.date "year" output.check
  1808. X      organization output
  1809. X      publisher output
  1810. X    }
  1811. X      if$
  1812. X    }
  1813. X    { format.incoll.inproc.crossref output.nonnull }
  1814. X  if$
  1815. X  format.pages output
  1816. X  new.block
  1817. X  note output
  1818. X  fin.entry
  1819. X}
  1820. X
  1821. XFUNCTION {conference} { inproceedings }
  1822. X
  1823. XFUNCTION {manual}
  1824. X{ output.bibitem
  1825. X  author empty$
  1826. X    { format.organization output }
  1827. X    { format.authors output.nonnull }
  1828. X  if$
  1829. X  format.btitle "title" output.check
  1830. X  author empty$
  1831. X    'skip$
  1832. X    { organization output }
  1833. X  if$
  1834. X  address output
  1835. X  format.edition output
  1836. X  format.date output
  1837. X  new.block
  1838. X  note output
  1839. X  fin.entry
  1840. X}
  1841. X
  1842. XFUNCTION {mastersthesis}
  1843. X{ output.bibitem
  1844. X  format.authors "author" output.check
  1845. X  format.title "title" output.check
  1846. X  "Master's thesis" format.thesis.type output.nonnull
  1847. X  school "school" output.check
  1848. X  address output
  1849. X  format.date "year" output.check
  1850. X  new.block
  1851. X  note output
  1852. X  fin.entry
  1853. X}
  1854. X
  1855. XFUNCTION {misc}
  1856. X{ output.bibitem
  1857. X  format.authors output
  1858. X  format.title output
  1859. X  howpublished new.block.checka
  1860. X  howpublished output
  1861. X  format.date output
  1862. X  new.block
  1863. X  note output
  1864. X  fin.entry
  1865. X  empty.misc.check
  1866. X}
  1867. X
  1868. XFUNCTION {phdthesis}
  1869. X{ output.bibitem
  1870. X  format.authors "author" output.check
  1871. X  format.btitle "title" output.check
  1872. X  "PhD thesis" format.thesis.type output.nonnull
  1873. X  school "school" output.check
  1874. X  address output
  1875. X  format.date "year" output.check
  1876. X  new.block
  1877. X  note output
  1878. X  fin.entry
  1879. X}
  1880. X
  1881. XFUNCTION {proceedings}
  1882. X{ output.bibitem
  1883. X  editor empty$
  1884. X    { format.organization output }
  1885. X    { format.editors output.nonnull }
  1886. X  if$
  1887. X  format.btitle "title" output.check
  1888. X  format.bvolume output
  1889. X  format.number.series output
  1890. X  address empty$
  1891. X    { editor empty$
  1892. X    'skip$
  1893. X    { organization output }
  1894. X      if$
  1895. X      publisher output
  1896. X      format.date "year" output.check
  1897. X    }
  1898. X    { address output.nonnull
  1899. X      format.date "year" output.check
  1900. X      editor empty$
  1901. X    'skip$
  1902. X    { organization output }
  1903. X      if$
  1904. X      publisher output
  1905. X    }
  1906. X  if$
  1907. X  new.block
  1908. X  note output
  1909. X  fin.entry
  1910. X}
  1911. X
  1912. XFUNCTION {techreport}
  1913. X{ output.bibitem
  1914. X  format.authors "author" output.check
  1915. X  format.title "title" output.check
  1916. X  format.tr.number output.nonnull
  1917. X  institution "institution" output.check
  1918. X  address output
  1919. X  format.date "year" output.check
  1920. X  new.block
  1921. X  note output
  1922. X  fin.entry
  1923. X}
  1924. X
  1925. XFUNCTION {unpublished}
  1926. X{ output.bibitem
  1927. X  format.authors "author" output.check
  1928. X  format.title "title" output.check
  1929. X  new.block
  1930. X  note "note" output.check
  1931. X  format.date output
  1932. X  fin.entry
  1933. X}
  1934. X
  1935. XFUNCTION {default.type} { misc }
  1936. X
  1937. XMACRO {jan} {"Jan."}
  1938. X
  1939. XMACRO {feb} {"F\'ev."}
  1940. X
  1941. XMACRO {mar} {"Mars"}
  1942. X
  1943. XMACRO {apr} {"Avr."}
  1944. X
  1945. XMACRO {may} {"Mai"}
  1946. X
  1947. XMACRO {jun} {"Juin"}
  1948. X
  1949. XMACRO {jul} {"Juil."}
  1950. X
  1951. XMACRO {aug} {"Ao\^{u}t"}
  1952. X
  1953. XMACRO {sep} {"Sept."}
  1954. X
  1955. XMACRO {oct} {"Oct."}
  1956. X
  1957. XMACRO {nov} {"Nov."}
  1958. X
  1959. XMACRO {dec} {"D\'ec."}
  1960. X
  1961. XMACRO {acmcs} {"ACM Comput. Surveys"}
  1962. X
  1963. XMACRO {acta} {"Acta Inf."}
  1964. X
  1965. XMACRO {cacm} {"Comm. ACM"}
  1966. X
  1967. XMACRO {ibmjrd} {"IBM J. Res. Dev."}
  1968. X
  1969. XMACRO {ibmsj} {"IBM Syst.~J."}
  1970. X
  1971. XMACRO {ieeese} {"IEEE Trans. Softw. Eng."}
  1972. X
  1973. XMACRO {ieeetc} {"IEEE Trans. Comput."}
  1974. X
  1975. XMACRO {ieeetcad}
  1976. X {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
  1977. X
  1978. XMACRO {ipl} {"Inf. Process. Lett."}
  1979. X
  1980. XMACRO {jacm} {"J.~Assoc. Comput. Mach."}
  1981. X
  1982. XMACRO {jcss} {"J.~Comput. System Sci."}
  1983. X
  1984. XMACRO {scp} {"Sci. Comput. Programming"}
  1985. X
  1986. XMACRO {sicomp} {"SIAM J. Comput."}
  1987. X
  1988. XMACRO {tocs} {"ACM Trans. Comput. Syst."}
  1989. X
  1990. XMACRO {tods} {"ACM Trans. Database Syst."}
  1991. X
  1992. XMACRO {tog} {"ACM Trans. Gr."}
  1993. X
  1994. XMACRO {toms} {"ACM Trans. Math. Softw."}
  1995. X
  1996. XMACRO {toois} {"ACM Trans. Office Inf. Syst."}
  1997. X
  1998. XMACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
  1999. X
  2000. XMACRO {tcs} {"Theoretical Comput. Sci."}
  2001. X
  2002. XREAD
  2003. X
  2004. XFUNCTION {sortify}
  2005. X{ purify$
  2006. X  "l" change.case$
  2007. X}
  2008. X
  2009. XINTEGERS { len }
  2010. X
  2011. XFUNCTION {chop.word}
  2012. X{ 's :=
  2013. X  'len :=
  2014. X  s #1 len substring$ =
  2015. X    { s len #1 + global.max$ substring$ }
  2016. X    's
  2017. X  if$
  2018. X}
  2019. X
  2020. XFUNCTION {sort.format.names}
  2021. X{ 's :=
  2022. X  #1 'nameptr :=
  2023. X  ""
  2024. X  s num.names$ 'numnames :=
  2025. X  numnames 'namesleft :=
  2026. X    { namesleft #0 > }
  2027. X    { nameptr #1 >
  2028. X    { "   " * }
  2029. X    'skip$
  2030. X      if$
  2031. X      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
  2032. X      nameptr numnames = t "others" = and
  2033. X    { "et al" * }
  2034. X    { t sortify * }
  2035. X      if$
  2036. X      nameptr #1 + 'nameptr :=
  2037. X      namesleft #1 - 'namesleft :=
  2038. X    }
  2039. X  while$
  2040. X}
  2041. X
  2042. XFUNCTION {sort.format.title}
  2043. X{ 't :=
  2044. X  "A " #2
  2045. X    "An " #3
  2046. X      "The " #4 t chop.word
  2047. X    chop.word
  2048. X  chop.word
  2049. X  sortify
  2050. X  #1 global.max$ substring$
  2051. X}
  2052. X
  2053. XFUNCTION {author.sort}
  2054. X{ author empty$
  2055. X    { key empty$
  2056. X    { "to sort, need author or key in " cite$ * warning$
  2057. X      ""
  2058. X    }
  2059. X    { key sortify }
  2060. X      if$
  2061. X    }
  2062. X    { author sort.format.names }
  2063. X  if$
  2064. X}
  2065. X
  2066. XFUNCTION {author.editor.sort}
  2067. X{ author empty$
  2068. X    { editor empty$
  2069. X    { key empty$
  2070. X        { "to sort, need author, editor, or key in " cite$ * warning$
  2071. X          ""
  2072. X        }
  2073. X        { key sortify }
  2074. X      if$
  2075. X    }
  2076. X    { editor sort.format.names }
  2077. X      if$
  2078. X    }
  2079. X    { author sort.format.names }
  2080. X  if$
  2081. X}
  2082. X
  2083. XFUNCTION {author.organization.sort}
  2084. X{ author empty$
  2085. X    { organization empty$
  2086. X    { key empty$
  2087. X        { "to sort, need author, organization, or key in " cite$ * warning$
  2088. X          ""
  2089. X        }
  2090. X        { key sortify }
  2091. X      if$
  2092. X    }
  2093. X    { "The " #4 organization chop.word sortify }
  2094. X      if$
  2095. X    }
  2096. X    { author sort.format.names }
  2097. X  if$
  2098. X}
  2099. X
  2100. XFUNCTION {editor.organization.sort}
  2101. X{ editor empty$
  2102. X    { organization empty$
  2103. X    { key empty$
  2104. X        { "to sort, need editor, organization, or key in " cite$ * warning$
  2105. X          ""
  2106. X        }
  2107. X        { key sortify }
  2108. X      if$
  2109. X    }
  2110. X    { "The " #4 organization chop.word sortify }
  2111. X      if$
  2112. X    }
  2113. X    { editor sort.format.names }
  2114. X  if$
  2115. X}
  2116. X
  2117. XFUNCTION {presort}
  2118. X{ type$ "book" =
  2119. X  type$ "inbook" =
  2120. X  or
  2121. X    'author.editor.sort
  2122. X    { type$ "proceedings" =
  2123. X    'editor.organization.sort
  2124. X    { type$ "manual" =
  2125. X        'author.organization.sort
  2126. X        'author.sort
  2127. X      if$
  2128. X    }
  2129. X      if$
  2130. X    }
  2131. X  if$
  2132. X  "    "
  2133. X  *
  2134. X  year field.or.null sortify
  2135. X  *
  2136. X  "    "
  2137. X  *
  2138. X  title field.or.null
  2139. X  sort.format.title
  2140. X  *
  2141. X  #1 entry.max$ substring$
  2142. X  'sort.key$ :=
  2143. X}
  2144. X
  2145. XITERATE {presort}
  2146. X
  2147. XSORT
  2148. X
  2149. XSTRINGS { longest.label }
  2150. X
  2151. XINTEGERS { number.label longest.label.width }
  2152. X
  2153. XFUNCTION {initialize.longest.label}
  2154. X{ "" 'longest.label :=
  2155. X  #1 'number.label :=
  2156. X  #0 'longest.label.width :=
  2157. X}
  2158. X
  2159. XFUNCTION {longest.label.pass}
  2160. X{ number.label int.to.str$ 'label :=
  2161. X  number.label #1 + 'number.label :=
  2162. X  label width$ longest.label.width >
  2163. X    { label 'longest.label :=
  2164. X      label width$ 'longest.label.width :=
  2165. X    }
  2166. X    'skip$
  2167. X  if$
  2168. X}
  2169. X
  2170. XEXECUTE {initialize.longest.label}
  2171. X
  2172. XITERATE {longest.label.pass}
  2173. X
  2174. XFUNCTION {begin.bib}
  2175. X{ preamble$ empty$
  2176. X    'skip$
  2177. X    { preamble$ write$ newline$ }
  2178. X  if$
  2179. X  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  2180. X}
  2181. X
  2182. XEXECUTE {begin.bib}
  2183. X
  2184. XEXECUTE {init.state.consts}
  2185. X
  2186. XEXECUTE {init.last.authors}
  2187. X
  2188. XITERATE {call.type$}
  2189. X
  2190. XFUNCTION {end.bib}
  2191. X{ newline$
  2192. X  "\end{thebibliography}" write$ newline$
  2193. X}
  2194. X
  2195. XEXECUTE {end.bib}
  2196. END_OF_FILE
  2197. if test 19322 -ne `wc -c <'fsiam.bst'`; then
  2198.     echo shar: \"'fsiam.bst'\" unpacked with wrong size!
  2199. fi
  2200. # end of 'fsiam.bst'
  2201. fi
  2202. if test -f 'lsiam.bst' -a "${1}" != "-c" ; then 
  2203.   echo shar: Will not clobber existing file \"'lsiam.bst'\"
  2204. else
  2205. echo shar: Extracting \"'lsiam.bst'\" \(18967 characters\)
  2206. sed "s/^X//" >'lsiam.bst' <<'END_OF_FILE'
  2207. X% Style file modified on Tue Jun  8 12:31:10 1993 with `annotebib.el' v1.5.1
  2208. X%                     by Yves.Arrouye <arrouye@cosmos>
  2209. X%                     to support the `annote' annotation field.
  2210. X% Style file modified on Tue Jun  8 12:31:10 1993 with `annotebib.el' v1.5.1
  2211. X%                     by Yves.Arrouye <arrouye@cosmos>
  2212. X%                     to support the `commentaire' annotation field.
  2213. X
  2214. X% This bibliography style was made `annote'-compatible by "annotebib.el".
  2215. X% It can be used for both annotated and non-annotated bibliographies listing
  2216. X% (`annote' package by Yves Arrouye <arrouye@imag.imag.fr>).
  2217. X
  2218. X% LSIAM bibliograohy style, labelized by Yves Arrouye (arrouye@imag.imag.fr)
  2219. X% SIAM bibliography style (29-Jan-88 version)
  2220. X%    numeric labels, alphabetic order, Mathematical Reviews abbreviations,
  2221. X%    names in \sc, titles in italics, book titles mixed upper-lower and article
  2222. X%    titles lowercase, commas separate all fields except before "notes".
  2223. X%
  2224. X%   History
  2225. X%    1/30/86    (HWT)    Original version, by Howard Trickey.
  2226. X%    6/15/87    (HWT)    Fix format.editors---Martin Costabel.
  2227. X%    1/29/88    (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
  2228. X%            THIS `siam' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
  2229. X%    4/16/92    (YGA)    Last change to the style to be LSIAM, that is a style
  2230. X%            producing the reference labels. This style is based
  2231. X%            on FSIAM which is a french version of SIAM
  2232. X
  2233. XENTRY
  2234. X  { annote
  2235. X    commentaire
  2236. X    address
  2237. X    author
  2238. X    booktitle
  2239. X    chapter
  2240. X    edition
  2241. X    editor
  2242. X    howpublished
  2243. X    institution
  2244. X    journal
  2245. X    key
  2246. X    month
  2247. X    note
  2248. X    number
  2249. X    organization
  2250. X    pages
  2251. X    publisher
  2252. X    school
  2253. X    series
  2254. X    title
  2255. X    type
  2256. X    volume
  2257. X    year
  2258. X  }
  2259. X  {}
  2260. X  { label }
  2261. X
  2262. XINTEGERS { output.state before.all mid.sentence after.block }
  2263. X
  2264. XFUNCTION {init.state.consts}
  2265. X{ #0 'before.all :=
  2266. X  #1 'mid.sentence :=
  2267. X  #2 'after.block :=
  2268. X}
  2269. X
  2270. XSTRINGS { s t }
  2271. X
  2272. XFUNCTION {output.nonnull}
  2273. X{ 's :=
  2274. X  output.state mid.sentence =
  2275. X    { ", " * write$ }
  2276. X    { output.state after.block =
  2277. X    { add.period$ write$
  2278. X      newline$
  2279. X      "\newblock " write$
  2280. X    }
  2281. X    'write$
  2282. X      if$
  2283. X      mid.sentence 'output.state :=
  2284. X    }
  2285. X  if$
  2286. X  s
  2287. X}
  2288. X
  2289. XFUNCTION {output}
  2290. X{ duplicate$ empty$
  2291. X    'pop$
  2292. X    'output.nonnull
  2293. X  if$
  2294. X}
  2295. X
  2296. XFUNCTION {output.check}
  2297. X{ 't :=
  2298. X  duplicate$ empty$
  2299. X    { pop$ "empty " t * " in " * cite$ * warning$ }
  2300. X    'output.nonnull
  2301. X  if$
  2302. X}
  2303. X
  2304. XFUNCTION {output.bibitem}
  2305. X{ newline$
  2306. X  "\bibitem[" write$ cite$ write$ "]{" write$
  2307. X  cite$ write$
  2308. X  "}" write$
  2309. X  newline$
  2310. X  ""
  2311. X  before.all 'output.state :=
  2312. X}
  2313. X
  2314. XFUNCTION {annotebib.format.commentaire}
  2315. X{ commentaire empty$
  2316. X        { "" }
  2317. X        { "\ifx\commentaire\undefined\else\begin{commentaire} "
  2318. X          commentaire
  2319. X          * " \end{commentaire}\fi " *
  2320. X        }
  2321. X      if$
  2322. X}
  2323. X
  2324. XFUNCTION {annotebib.format.annote}
  2325. X{ annote empty$
  2326. X        { "" }
  2327. X        { "\ifx\annote\undefined\else\begin{annote} "
  2328. X          annote
  2329. X          * " \end{annote}\fi " *
  2330. X        }
  2331. X      if$
  2332. X}
  2333. X
  2334. XFUNCTION {fin.entry}
  2335. X{ add.period$
  2336. X  write$
  2337. X  newline$
  2338. X  annotebib.format.commentaire write$
  2339. X  annotebib.format.annote write$
  2340. X}
  2341. X
  2342. XFUNCTION {new.block}
  2343. X{ output.state before.all =
  2344. X    'skip$
  2345. X    { after.block 'output.state := }
  2346. X  if$
  2347. X}
  2348. X
  2349. XFUNCTION {not}
  2350. X{   { #0 }
  2351. X    { #1 }
  2352. X  if$
  2353. X}
  2354. X
  2355. XFUNCTION {and}
  2356. X{   'skip$
  2357. X    { pop$ #0 }
  2358. X  if$
  2359. X}
  2360. X
  2361. XFUNCTION {or}
  2362. X{   { pop$ #1 }
  2363. X    'skip$
  2364. X  if$
  2365. X}
  2366. X
  2367. XFUNCTION {new.block.checka}
  2368. X{ empty$
  2369. X    'skip$
  2370. X    'new.block
  2371. X  if$
  2372. X}
  2373. X
  2374. XFUNCTION {field.or.null}
  2375. X{ duplicate$ empty$
  2376. X    { pop$ "" }
  2377. X    'skip$
  2378. X  if$
  2379. X}
  2380. X
  2381. XFUNCTION {emphasize}
  2382. X{ duplicate$ empty$
  2383. X    { pop$ "" }
  2384. X    { "{\em " swap$ * "}" * }
  2385. X  if$
  2386. X}
  2387. X
  2388. XFUNCTION {scapify}
  2389. X{ duplicate$ empty$
  2390. X    { pop$ "" }
  2391. X    { "{\sc " swap$ * "}" * }
  2392. X  if$
  2393. X}
  2394. X
  2395. XINTEGERS { nameptr namesleft numnames }
  2396. X
  2397. XFUNCTION {format.names}
  2398. X{ 's :=
  2399. X  #1 'nameptr :=
  2400. X  s num.names$ 'numnames :=
  2401. X  numnames 'namesleft :=
  2402. X    { namesleft #0 > }
  2403. X    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
  2404. X      nameptr #1 >
  2405. X    { namesleft #1 >
  2406. X        { ", " * t * }
  2407. X        { numnames #2 >
  2408. X        { "," * }
  2409. X        'skip$
  2410. X          if$
  2411. X          t "others" =
  2412. X        { " et~al." * }
  2413. X        { " et " * t * }
  2414. X          if$
  2415. X        }
  2416. X      if$
  2417. X    }
  2418. X    't
  2419. X      if$
  2420. X      nameptr #1 + 'nameptr :=
  2421. X      namesleft #1 - 'namesleft :=
  2422. X    }
  2423. X  while$
  2424. X}
  2425. X
  2426. XSTRINGS { last.authors }
  2427. X
  2428. XFUNCTION {init.last.authors}
  2429. X{ "" 'last.authors :=
  2430. X}
  2431. X
  2432. XFUNCTION {format.authors}
  2433. X{ author empty$
  2434. X    { "" 'last.authors :=
  2435. X      ""
  2436. X    }
  2437. X    { author last.authors =
  2438. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  2439. X        { author format.names scapify }
  2440. X      if$
  2441. X      author 'last.authors :=
  2442. X    }
  2443. X  if$
  2444. X}
  2445. X
  2446. XFUNCTION {format.organization}
  2447. X{ organization empty$
  2448. X    { "" 'last.authors :=
  2449. X      ""
  2450. X    }
  2451. X    { organization last.authors =
  2452. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  2453. X        { organization scapify }
  2454. X      if$
  2455. X      organization 'last.authors :=
  2456. X    }
  2457. X  if$
  2458. X}
  2459. X
  2460. XFUNCTION {format.editors}
  2461. X{ editor empty$
  2462. X    { "" 'last.authors :=
  2463. X      ""
  2464. X    }
  2465. X    { editor last.authors =
  2466. X        { "\leavevmode\vrule height 2pt depth -1.6pt width 23pt" }
  2467. X    { editor format.names scapify }
  2468. X      if$
  2469. X      editor num.names$ #1 >
  2470. X        { ", eds." * }
  2471. X    { ", ed." * }
  2472. X      if$
  2473. X      editor 'last.authors :=
  2474. X    }
  2475. X  if$
  2476. X}
  2477. X
  2478. XFUNCTION {format.ineditors}
  2479. X{ editor empty$
  2480. X    { "" }
  2481. X    { editor format.names
  2482. X      editor num.names$ #1 >
  2483. X    { ", eds." * }
  2484. X    { ", ed." * }
  2485. X      if$
  2486. X    }
  2487. X  if$
  2488. X}
  2489. X
  2490. XFUNCTION {format.title}
  2491. X{ title empty$
  2492. X    { "" }
  2493. X    { title "t" change.case$ emphasize }
  2494. X  if$
  2495. X}
  2496. X
  2497. XFUNCTION {n.dashify}
  2498. X{ 't :=
  2499. X  ""
  2500. X    { t empty$ not }
  2501. X    { t #1 #1 substring$ "-" =
  2502. X    { t #1 #2 substring$ "--" = not
  2503. X        { "--" *
  2504. X          t #2 global.max$ substring$ 't :=
  2505. X        }
  2506. X        {   { t #1 #1 substring$ "-" = }
  2507. X        { "-" *
  2508. X          t #2 global.max$ substring$ 't :=
  2509. X        }
  2510. X          while$
  2511. X        }
  2512. X      if$
  2513. X    }
  2514. X    { t #1 #1 substring$ *
  2515. X      t #2 global.max$ substring$ 't :=
  2516. X    }
  2517. X      if$
  2518. X    }
  2519. X  while$
  2520. X}
  2521. X
  2522. XFUNCTION {format.date}
  2523. X{ year empty$
  2524. X    { month empty$
  2525. X    { "" }
  2526. X    { "there's a month but no year in " cite$ * warning$
  2527. X      month
  2528. X    }
  2529. X      if$
  2530. X    }
  2531. X    { month empty$
  2532. X    'year
  2533. X    { month " " * year * }
  2534. X      if$
  2535. X    }
  2536. X  if$
  2537. X}
  2538. X
  2539. XFUNCTION {format.btitle}
  2540. X{ title emphasize
  2541. X}
  2542. X
  2543. XFUNCTION {tie.or.space.connect}
  2544. X{ duplicate$ text.length$ #3 <
  2545. X    { "~" }
  2546. X    { " " }
  2547. X  if$
  2548. X  swap$ * *
  2549. X}
  2550. X
  2551. XFUNCTION {either.or.check}
  2552. X{ empty$
  2553. X    'pop$
  2554. X    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  2555. X  if$
  2556. X}
  2557. X
  2558. XFUNCTION {format.bvolume}
  2559. X{ volume empty$
  2560. X    { "" }
  2561. X    { "vol.~" volume *
  2562. X      series empty$
  2563. X    'skip$
  2564. X    { " of " * series * }
  2565. X      if$
  2566. X      "volume and number" number either.or.check
  2567. X    }
  2568. X  if$
  2569. X}
  2570. X
  2571. XFUNCTION {format.number.series}
  2572. X{ volume empty$
  2573. X    { number empty$
  2574. X    { series field.or.null }
  2575. X    { "no.~" number *
  2576. X      series empty$
  2577. X        { "there's a number but no series in " cite$ * warning$ }
  2578. X        { " in " * series * }
  2579. X      if$
  2580. X    }
  2581. X      if$
  2582. X    }
  2583. X    { "" }
  2584. X  if$
  2585. X}
  2586. X
  2587. XFUNCTION {format.edition}
  2588. X{ edition empty$
  2589. X    { "" }
  2590. X    { edition "l" change.case$ "~ed." * }
  2591. X  if$
  2592. X}
  2593. X
  2594. XINTEGERS { multiresult }
  2595. X
  2596. XFUNCTION {multi.page.check}
  2597. X{ 't :=
  2598. X  #0 'multiresult :=
  2599. X    { multiresult not
  2600. X      t empty$ not
  2601. X      and
  2602. X    }
  2603. X    { t #1 #1 substring$
  2604. X      duplicate$ "-" =
  2605. X      swap$ duplicate$ "," =
  2606. X      swap$ "+" =
  2607. X      or or
  2608. X    { #1 'multiresult := }
  2609. X    { t #2 global.max$ substring$ 't := }
  2610. X      if$
  2611. X    }
  2612. X  while$
  2613. X  multiresult
  2614. X}
  2615. X
  2616. XFUNCTION {format.pages}
  2617. X{ pages empty$
  2618. X    { "" }
  2619. X    { pages multi.page.check
  2620. X    { "pp.~" pages n.dashify * }
  2621. X    { "p.~" pages * }
  2622. X      if$
  2623. X    }
  2624. X  if$
  2625. X}
  2626. X
  2627. XFUNCTION {format.vol.year}
  2628. X{ volume field.or.null
  2629. X  year empty$
  2630. X    { "empty year in " cite$ * warning$ }
  2631. X    { " (" year * ")" * * }
  2632. X  if$
  2633. X}
  2634. X
  2635. XFUNCTION {format.chapter.pages}
  2636. X{ chapter empty$
  2637. X    'format.pages
  2638. X    { type empty$
  2639. X    { "ch.~" chapter * }
  2640. X    { type "l" change.case$ chapter tie.or.space.connect }
  2641. X      if$
  2642. X      pages empty$
  2643. X    'skip$
  2644. X    { ", " * format.pages * }
  2645. X      if$
  2646. X    }
  2647. X  if$
  2648. X}
  2649. X
  2650. XFUNCTION {format.in.ed.booktitle}
  2651. X{ booktitle empty$
  2652. X    { "" }
  2653. X    { editor empty$
  2654. X    { "in " booktitle * }
  2655. X    { "in " booktitle * ", " * format.ineditors * }
  2656. X      if$
  2657. X    }
  2658. X  if$
  2659. X}
  2660. X
  2661. XFUNCTION {empty.misc.check}
  2662. X{ author empty$ title empty$ howpublished empty$
  2663. X  month empty$ year empty$ note empty$
  2664. X  and and and and and
  2665. X  key empty$ not and
  2666. X    { "all relevant fields are empty in " cite$ * warning$ }
  2667. X    'skip$
  2668. X  if$
  2669. X}
  2670. X
  2671. XFUNCTION {format.thesis.type}
  2672. X{ type empty$
  2673. X    'skip$
  2674. X    { pop$
  2675. X      type "l" change.case$
  2676. X    }
  2677. X  if$
  2678. X}
  2679. X
  2680. XFUNCTION {format.tr.number}
  2681. X{ type empty$
  2682. X    { "Rapp. Tech." }
  2683. X    'type
  2684. X  if$
  2685. X  number empty$
  2686. X    { "l" change.case$ }
  2687. X    { number tie.or.space.connect }
  2688. X  if$
  2689. X}
  2690. X
  2691. XFUNCTION {format.article.crossref}
  2692. X{ key empty$
  2693. X    { journal empty$
  2694. X    { "need key or journal for " cite$ * " to crossref " * crossref *
  2695. X      warning$
  2696. X      ""
  2697. X    }
  2698. X    { "in " journal * }
  2699. X      if$
  2700. X    }
  2701. X    { "in " key * }
  2702. X  if$
  2703. X  " \cite{" * crossref * "}" *
  2704. X}
  2705. X
  2706. XFUNCTION {format.crossref.editor}
  2707. X{ editor #1 "{vv~}{ll}" format.name$
  2708. X  editor num.names$ duplicate$
  2709. X  #2 >
  2710. X    { pop$ " et~al." * }
  2711. X    { #2 <
  2712. X    'skip$
  2713. X    { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  2714. X        { " et~al." * }
  2715. X        { " et " * editor #2 "{vv~}{ll}" format.name$ * }
  2716. X      if$
  2717. X    }
  2718. X      if$
  2719. X    }
  2720. X  if$
  2721. X}
  2722. X
  2723. XFUNCTION {format.book.crossref}
  2724. X{ volume empty$
  2725. X    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  2726. X      "in "
  2727. X    }
  2728. X    { "vol.~" volume *
  2729. X      " of " *
  2730. X    }
  2731. X  if$
  2732. X  editor empty$
  2733. X  editor field.or.null author field.or.null =
  2734. X  or
  2735. X    { key empty$
  2736. X    { series empty$
  2737. X        { "need editor, key, or series for " cite$ * " to crossref " *
  2738. X          crossref * warning$
  2739. X          "" *
  2740. X        }
  2741. X        { series * }
  2742. X      if$
  2743. X    }
  2744. X    { key * }
  2745. X      if$
  2746. X    }
  2747. X    { format.crossref.editor * }
  2748. X  if$
  2749. X  " \cite{" * crossref * "}" *
  2750. X}
  2751. X
  2752. XFUNCTION {format.incoll.inproc.crossref}
  2753. X{ editor empty$
  2754. X  editor field.or.null author field.or.null =
  2755. X  or
  2756. X    { key empty$
  2757. X    { booktitle empty$
  2758. X        { "need editor, key, or booktitle for " cite$ * " to crossref " *
  2759. X          crossref * warning$
  2760. X          ""
  2761. X        }
  2762. X        { "in " booktitle * }
  2763. X      if$
  2764. X    }
  2765. X    { "in " key * }
  2766. X      if$
  2767. X    }
  2768. X    { "in " format.crossref.editor * }
  2769. X  if$
  2770. X  " \cite{" * crossref * "}" *
  2771. X}
  2772. X
  2773. XFUNCTION {article}
  2774. X{ output.bibitem
  2775. X  format.authors "author" output.check
  2776. X  format.title "title" output.check
  2777. X  crossref missing$
  2778. X    { journal "journal" output.check
  2779. X      format.vol.year output
  2780. X    }
  2781. X    { format.article.crossref output.nonnull }
  2782. X  if$
  2783. X  format.pages output
  2784. X  new.block
  2785. X  note output
  2786. X  fin.entry
  2787. X}
  2788. X
  2789. XFUNCTION {book}
  2790. X{ output.bibitem
  2791. X  author empty$
  2792. X    { format.editors "author and editor" output.check }
  2793. X    { format.authors output.nonnull
  2794. X      crossref missing$
  2795. X    { "author and editor" editor either.or.check }
  2796. X    'skip$
  2797. X      if$
  2798. X    }
  2799. X  if$
  2800. X  format.btitle "title" output.check
  2801. X  crossref missing$
  2802. X    { format.bvolume output
  2803. X      format.number.series output
  2804. X      publisher "publisher" output.check
  2805. X      address output
  2806. X    }
  2807. X    { format.book.crossref output.nonnull }
  2808. X  if$
  2809. X  format.edition output
  2810. X  format.date "year" output.check
  2811. X  new.block
  2812. X  note output
  2813. X  fin.entry
  2814. X}
  2815. X
  2816. XFUNCTION {booklet}
  2817. X{ output.bibitem
  2818. X  format.authors output
  2819. X  format.title "title" output.check
  2820. X  howpublished new.block.checka
  2821. X  howpublished output
  2822. X  address output
  2823. X  format.date output
  2824. X  new.block
  2825. X  note output
  2826. X  fin.entry
  2827. X}
  2828. X
  2829. XFUNCTION {inbook}
  2830. X{ output.bibitem
  2831. X  author empty$
  2832. X    { format.editors "author and editor" output.check }
  2833. X    { format.authors output.nonnull
  2834. X      crossref missing$
  2835. X    { "author and editor" editor either.or.check }
  2836. X    'skip$
  2837. X      if$
  2838. X    }
  2839. X  if$
  2840. X  format.btitle "title" output.check
  2841. X  crossref missing$
  2842. X    { format.bvolume output
  2843. X      format.number.series output
  2844. X      publisher "publisher" output.check
  2845. X      address output
  2846. X    }
  2847. X    { format.book.crossref output.nonnull }
  2848. X  if$
  2849. X  format.edition output
  2850. X  format.date "year" output.check
  2851. X  format.chapter.pages "chapter and pages" output.check
  2852. X  new.block
  2853. X  note output
  2854. X  fin.entry
  2855. X}
  2856. X
  2857. XFUNCTION {incollection}
  2858. X{ output.bibitem
  2859. X  format.authors "author" output.check
  2860. X  format.title "title" output.check
  2861. X  crossref missing$
  2862. X    { format.in.ed.booktitle "booktitle" output.check
  2863. X      format.bvolume output
  2864. X      format.number.series output
  2865. X      publisher "publisher" output.check
  2866. X      address output
  2867. X      format.edition output
  2868. X      format.date "year" output.check
  2869. X    }
  2870. X    { format.incoll.inproc.crossref output.nonnull }
  2871. X  if$
  2872. X  format.chapter.pages output
  2873. X  new.block
  2874. X  note output
  2875. X  fin.entry
  2876. X}
  2877. X
  2878. XFUNCTION {inproceedings}
  2879. X{ output.bibitem
  2880. X  format.authors "author" output.check
  2881. X  format.title "title" output.check
  2882. X  crossref missing$
  2883. X    { format.in.ed.booktitle "booktitle" output.check
  2884. X      format.bvolume output
  2885. X      format.number.series output
  2886. X      address empty$
  2887. X    { organization output
  2888. X      publisher output
  2889. X      format.date "year" output.check
  2890. X    }
  2891. X    { address output.nonnull
  2892. X      format.date "year" output.check
  2893. X      organization output
  2894. X      publisher output
  2895. X    }
  2896. X      if$
  2897. X    }
  2898. X    { format.incoll.inproc.crossref output.nonnull }
  2899. X  if$
  2900. X  format.pages output
  2901. X  new.block
  2902. X  note output
  2903. X  fin.entry
  2904. X}
  2905. X
  2906. XFUNCTION {conference} { inproceedings }
  2907. X
  2908. XFUNCTION {manual}
  2909. X{ output.bibitem
  2910. X  author empty$
  2911. X    { format.organization output }
  2912. X    { format.authors output.nonnull }
  2913. X  if$
  2914. X  format.btitle "title" output.check
  2915. X  author empty$
  2916. X    'skip$
  2917. X    { organization output }
  2918. X  if$
  2919. X  address output
  2920. X  format.edition output
  2921. X  format.date output
  2922. X  new.block
  2923. X  note output
  2924. X  fin.entry
  2925. X}
  2926. X
  2927. XFUNCTION {mastersthesis}
  2928. X{ output.bibitem
  2929. X  format.authors "author" output.check
  2930. X  format.title "title" output.check
  2931. X  "Master's thesis" format.thesis.type output.nonnull
  2932. X  school "school" output.check
  2933. X  address output
  2934. X  format.date "year" output.check
  2935. X  new.block
  2936. X  note output
  2937. X  fin.entry
  2938. X}
  2939. X
  2940. XFUNCTION {misc}
  2941. X{ output.bibitem
  2942. X  format.authors output
  2943. X  format.title output
  2944. X  howpublished new.block.checka
  2945. X  howpublished output
  2946. X  format.date output
  2947. X  new.block
  2948. X  note output
  2949. X  fin.entry
  2950. X  empty.misc.check
  2951. X}
  2952. X
  2953. XFUNCTION {phdthesis}
  2954. X{ output.bibitem
  2955. X  format.authors "author" output.check
  2956. X  format.btitle "title" output.check
  2957. X  "PhD thesis" format.thesis.type output.nonnull
  2958. X  school "school" output.check
  2959. X  address output
  2960. X  format.date "year" output.check
  2961. X  new.block
  2962. X  note output
  2963. X  fin.entry
  2964. X}
  2965. X
  2966. XFUNCTION {proceedings}
  2967. X{ output.bibitem
  2968. X  editor empty$
  2969. X    { format.organization output }
  2970. X    { format.editors output.nonnull }
  2971. X  if$
  2972. X  format.btitle "title" output.check
  2973. X  format.bvolume output
  2974. X  format.number.series output
  2975. X  address empty$
  2976. X    { editor empty$
  2977. X    'skip$
  2978. X    { organization output }
  2979. X      if$
  2980. X      publisher output
  2981. X      format.date "year" output.check
  2982. X    }
  2983. X    { address output.nonnull
  2984. X      format.date "year" output.check
  2985. X      editor empty$
  2986. X    'skip$
  2987. X    { organization output }
  2988. X      if$
  2989. X      publisher output
  2990. X    }
  2991. X  if$
  2992. X  new.block
  2993. X  note output
  2994. X  fin.entry
  2995. X}
  2996. X
  2997. XFUNCTION {techreport}
  2998. X{ output.bibitem
  2999. X  format.authors "author" output.check
  3000. X  format.title "title" output.check
  3001. X  format.tr.number output.nonnull
  3002. X  institution "institution" output.check
  3003. X  address output
  3004. X  format.date "year" output.check
  3005. X  new.block
  3006. X  note output
  3007. X  fin.entry
  3008. X}
  3009. X
  3010. XFUNCTION {unpublished}
  3011. X{ output.bibitem
  3012. X  format.authors "author" output.check
  3013. X  format.title "title" output.check
  3014. X  new.block
  3015. X  note "note" output.check
  3016. X  format.date output
  3017. X  fin.entry
  3018. X}
  3019. X
  3020. XFUNCTION {default.type} { misc }
  3021. X
  3022. XMACRO {jan} {"Jan."}
  3023. X
  3024. XMACRO {feb} {"Fev."}
  3025. X
  3026. XMACRO {mar} {"Mars"}
  3027. X
  3028. XMACRO {apr} {"Avr."}
  3029. X
  3030. XMACRO {may} {"Mai"}
  3031. X
  3032. XMACRO {jun} {"Juin"}
  3033. X
  3034. XMACRO {jul} {"Juil."}
  3035. X
  3036. XMACRO {aug} {"Ao\^{u}t"}
  3037. X
  3038. XMACRO {sep} {"Sept."}
  3039. X
  3040. XMACRO {oct} {"Oct."}
  3041. X
  3042. XMACRO {nov} {"Nov."}
  3043. X
  3044. XMACRO {dec} {"Dec."}
  3045. X
  3046. XMACRO {acmcs} {"ACM Comput. Surveys"}
  3047. X
  3048. XMACRO {acta} {"Acta Inf."}
  3049. X
  3050. XMACRO {cacm} {"Comm. ACM"}
  3051. X
  3052. XMACRO {ibmjrd} {"IBM J. Res. Dev."}
  3053. X
  3054. XMACRO {ibmsj} {"IBM Syst.~J."}
  3055. X
  3056. XMACRO {ieeese} {"IEEE Trans. Softw. Eng."}
  3057. X
  3058. XMACRO {ieeetc} {"IEEE Trans. Comput."}
  3059. X
  3060. XMACRO {ieeetcad}
  3061. X {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
  3062. X
  3063. XMACRO {ipl} {"Inf. Process. Lett."}
  3064. X
  3065. XMACRO {jacm} {"J.~Assoc. Comput. Mach."}
  3066. X
  3067. XMACRO {jcss} {"J.~Comput. System Sci."}
  3068. X
  3069. XMACRO {scp} {"Sci. Comput. Programming"}
  3070. X
  3071. XMACRO {sicomp} {"SIAM J. Comput."}
  3072. X
  3073. XMACRO {tocs} {"ACM Trans. Comput. Syst."}
  3074. X
  3075. XMACRO {tods} {"ACM Trans. Database Syst."}
  3076. X
  3077. XMACRO {tog} {"ACM Trans. Gr."}
  3078. X
  3079. XMACRO {toms} {"ACM Trans. Math. Softw."}
  3080. X
  3081. XMACRO {toois} {"ACM Trans. Office Inf. Syst."}
  3082. X
  3083. XMACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
  3084. X
  3085. XMACRO {tcs} {"Theoretical Comput. Sci."}
  3086. X
  3087. XREAD
  3088. X
  3089. XFUNCTION {sortify}
  3090. X{ purify$
  3091. X  "l" change.case$
  3092. X}
  3093. X
  3094. XINTEGERS { len }
  3095. X
  3096. XFUNCTION {chop.word}
  3097. X{ 's :=
  3098. X  'len :=
  3099. X  s #1 len substring$ =
  3100. X    { s len #1 + global.max$ substring$ }
  3101. X    's
  3102. X  if$
  3103. X}
  3104. X
  3105. XFUNCTION {sort.format.names}
  3106. X{ 's :=
  3107. X  #1 'nameptr :=
  3108. X  ""
  3109. X  s num.names$ 'numnames :=
  3110. X  numnames 'namesleft :=
  3111. X    { namesleft #0 > }
  3112. X    { nameptr #1 >
  3113. X    { "   " * }
  3114. X    'skip$
  3115. X      if$
  3116. X      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
  3117. X      nameptr numnames = t "others" = and
  3118. X    { "et al" * }
  3119. X    { t sortify * }
  3120. X      if$
  3121. X      nameptr #1 + 'nameptr :=
  3122. X      namesleft #1 - 'namesleft :=
  3123. X    }
  3124. X  while$
  3125. X}
  3126. X
  3127. XFUNCTION {sort.format.title}
  3128. X{ 't :=
  3129. X  "A " #2
  3130. X    "An " #3
  3131. X      "The " #4 t chop.word
  3132. X    chop.word
  3133. X  chop.word
  3134. X  sortify
  3135. X  #1 global.max$ substring$
  3136. X}
  3137. X
  3138. XFUNCTION {author.sort}
  3139. X{ author empty$
  3140. X    { key empty$
  3141. X    { "to sort, need author or key in " cite$ * warning$
  3142. X      ""
  3143. X    }
  3144. X    { key sortify }
  3145. X      if$
  3146. X    }
  3147. X    { author sort.format.names }
  3148. X  if$
  3149. X}
  3150. X
  3151. XFUNCTION {author.editor.sort}
  3152. X{ author empty$
  3153. X    { editor empty$
  3154. X    { key empty$
  3155. X        { "to sort, need author, editor, or key in " cite$ * warning$
  3156. X          ""
  3157. X        }
  3158. X        { key sortify }
  3159. X      if$
  3160. X    }
  3161. X    { editor sort.format.names }
  3162. X      if$
  3163. X    }
  3164. X    { author sort.format.names }
  3165. X  if$
  3166. X}
  3167. X
  3168. XFUNCTION {author.organization.sort}
  3169. X{ author empty$
  3170. X    { organization empty$
  3171. X    { key empty$
  3172. X        { "to sort, need author, organization, or key in " cite$ * warning$
  3173. X          ""
  3174. X        }
  3175. X        { key sortify }
  3176. X      if$
  3177. X    }
  3178. X    { "The " #4 organization chop.word sortify }
  3179. X      if$
  3180. X    }
  3181. X    { author sort.format.names }
  3182. X  if$
  3183. X}
  3184. X
  3185. XFUNCTION {editor.organization.sort}
  3186. X{ editor empty$
  3187. X    { organization empty$
  3188. X    { key empty$
  3189. X        { "to sort, need editor, organization, or key in " cite$ * warning$
  3190. X          ""
  3191. X        }
  3192. X        { key sortify }
  3193. X      if$
  3194. X    }
  3195. X    { "The " #4 organization chop.word sortify }
  3196. X      if$
  3197. X    }
  3198. X    { editor sort.format.names }
  3199. X  if$
  3200. X}
  3201. X
  3202. XFUNCTION {presort}
  3203. X{
  3204. X  cite$ 'sort.key$ :=
  3205. X}
  3206. X
  3207. XITERATE {presort}
  3208. X
  3209. XSORT
  3210. X
  3211. XSTRINGS { longest.label }
  3212. X
  3213. XINTEGERS { number.label longest.label.width }
  3214. X
  3215. XFUNCTION {initialize.longest.label}
  3216. X{ "" 'longest.label :=
  3217. X  #1 'number.label :=
  3218. X  #0 'longest.label.width :=
  3219. X}
  3220. X
  3221. XFUNCTION {longest.label.pass}
  3222. X{ 
  3223. X  cite$ 'label :=
  3224. X  label width$ longest.label.width >
  3225. X    { label 'longest.label :=
  3226. X      label width$ 'longest.label.width :=
  3227. X    }
  3228. X    'skip$
  3229. X  if$
  3230. X}
  3231. X
  3232. XEXECUTE {initialize.longest.label}
  3233. X
  3234. XITERATE {longest.label.pass}
  3235. X
  3236. XFUNCTION {begin.bib}
  3237. X{ preamble$ empty$
  3238. X    'skip$
  3239. X    { preamble$ write$ newline$ }
  3240. X  if$
  3241. X  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  3242. X}
  3243. X
  3244. XEXECUTE {begin.bib}
  3245. X
  3246. XEXECUTE {init.state.consts}
  3247. X
  3248. XEXECUTE {init.last.authors}
  3249. X
  3250. XITERATE {call.type$}
  3251. X
  3252. XFUNCTION {end.bib}
  3253. X{ newline$
  3254. X  "\end{thebibliography}" write$ newline$
  3255. X}
  3256. X
  3257. XEXECUTE {end.bib}
  3258. END_OF_FILE
  3259. if test 18967 -ne `wc -c <'lsiam.bst'`; then
  3260.     echo shar: \"'lsiam.bst'\" unpacked with wrong size!
  3261. fi
  3262. # end of 'lsiam.bst'
  3263. fi
  3264. echo shar: End of shell archive.
  3265. exit 0
  3266.  
  3267. exit 0 # Just in case...
  3268.