WileyNJD-AMA.bst 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095
  1. %
  2. % THIS IS AN ALPHA VERSION!!!
  3. %
  4. % USE AT YOUR OWN RISK
  5. %
  6. % This should work for articles...I don't know if it works well for
  7. % books, etc (give it a try and see!).
  8. %
  9. % PLEASE COMPARE RESULTS WITH THE INSTRUCTIONS FOR AUTHORS FOR THE
  10. % JOURNAL YOU ARE SUBMITTING FOR...I CANNOT ACCEPT RESPONSIBILITY
  11. % FOR REJECTED MANUSCRIPTS (but I will try to fix it if you point out
  12. % a bug)
  13. %
  14. % AMA Manual of Style (JAMA, Cancer, many others..)
  15. % -Up to 6 authors, otherwise 3 authors et al.
  16. % -Title in italics
  17. % -numeric labels
  18. % -order-of-reference.
  19. %
  20. % Author L, Author S, Author D, et al. Title. Journal.
  21. % YYYY;VOL(NUM):PPP-PPP.
  22. %
  23. %
  24. % History
  25. % 9/30/85 (HWT) IEETR Original version, by Howard Trickey.
  26. % 1/29/88 (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
  27. % 3/27/02 IEETR style used as framework. Formats heavily changed by
  28. % Eric Kort ([email protected])
  29. %
  30. % THIS VERSION DOES NOT WORK WITH BIBTEX 0.98i.
  31. %
  32. ENTRY
  33. { address
  34. author
  35. booktitle
  36. chapter
  37. edition
  38. editor
  39. howpublished
  40. institution
  41. journal
  42. key
  43. month
  44. note
  45. number
  46. organization
  47. pages
  48. publisher
  49. school
  50. series
  51. title
  52. type
  53. volume
  54. year
  55. }
  56. {}
  57. { label }
  58. INTEGERS { output.state before.all mid.sentence after.quote after.sentence
  59. after.quoted.block after.block }
  60. FUNCTION {init.state.consts}
  61. { #0 'before.all :=
  62. #1 'mid.sentence :=
  63. #2 'after.quote :=
  64. #3 'after.sentence :=
  65. #4 'after.quoted.block :=
  66. #5 'after.block :=
  67. }
  68. STRINGS { s t }
  69. FUNCTION {output.nonnull}
  70. { 's :=
  71. output.state mid.sentence =
  72. { "" * write$ }
  73. { output.state after.quote =
  74. { " " * write$ }
  75. { output.state after.block =
  76. { add.period$ write$
  77. newline$
  78. "\newblock " write$
  79. }
  80. { output.state before.all =
  81. 'write$
  82. { output.state after.quoted.block =
  83. { write$
  84. newline$
  85. "\newblock " write$
  86. }
  87. { add.period$ " " * write$ }
  88. if$
  89. }
  90. if$
  91. }
  92. if$
  93. }
  94. if$
  95. mid.sentence 'output.state :=
  96. }
  97. if$
  98. s
  99. }
  100. FUNCTION {output}
  101. { duplicate$ empty$
  102. 'pop$
  103. 'output.nonnull
  104. if$
  105. }
  106. FUNCTION {output.check}
  107. { 't :=
  108. duplicate$ empty$
  109. { pop$ "empty " t * " in " * cite$ * warning$ }
  110. 'output.nonnull
  111. if$
  112. }
  113. FUNCTION {output.bibitem}
  114. { newline$
  115. "\bibitem{" write$
  116. cite$ write$
  117. "}" write$
  118. newline$
  119. ""
  120. before.all 'output.state :=
  121. }
  122. FUNCTION {blank.sep}
  123. { after.quote 'output.state :=
  124. }
  125. FUNCTION {fin.entry}
  126. { output.state after.quoted.block =
  127. 'skip$
  128. 'add.period$
  129. if$
  130. write$
  131. newline$
  132. }
  133. FUNCTION {new.block}
  134. { output.state before.all =
  135. 'skip$
  136. { output.state after.quote =
  137. { after.quoted.block 'output.state := }
  138. { after.block 'output.state := }
  139. if$
  140. }
  141. if$
  142. }
  143. FUNCTION {new.sentence}
  144. { output.state after.block =
  145. 'skip$
  146. { output.state before.all =
  147. 'skip$
  148. { after.sentence 'output.state := }
  149. if$
  150. }
  151. if$
  152. }
  153. FUNCTION {not}
  154. { { #0 }
  155. { #1 }
  156. if$
  157. }
  158. FUNCTION {and}
  159. { 'skip$
  160. { pop$ #0 }
  161. if$
  162. }
  163. FUNCTION {or}
  164. { { pop$ #1 }
  165. 'skip$
  166. if$
  167. }
  168. FUNCTION {new.block.checka}
  169. { empty$
  170. 'skip$
  171. 'new.block
  172. if$
  173. }
  174. FUNCTION {new.block.checkb}
  175. { empty$
  176. swap$ empty$
  177. and
  178. 'skip$
  179. 'new.block
  180. if$
  181. }
  182. FUNCTION {new.sentence.checka}
  183. { empty$
  184. 'skip$
  185. 'new.sentence
  186. if$
  187. }
  188. FUNCTION {field.or.null}
  189. { duplicate$ empty$
  190. { pop$ "" }
  191. 'skip$
  192. if$
  193. }
  194. FUNCTION {emphasize}
  195. { duplicate$ empty$
  196. { pop$ "" }
  197. { "{\it " swap$ * "}" * }
  198. if$
  199. }
  200. INTEGERS { nameptr namesleft numnames etal}
  201. FUNCTION {format.names}
  202. { 's := % push the name s, pop s and author (already on stack), assign author to s
  203. #1 'nameptr :=
  204. #0 'etal :=
  205. s num.names$ 'numnames :=
  206. numnames #6 >
  207. {#3 'numnames :=
  208. #1 'etal :=
  209. }
  210. {}
  211. %end if
  212. if$
  213. numnames 'namesleft :=
  214. { namesleft #0 > }
  215. {s nameptr "{ll~}{ff}" format.name$ 't :=
  216. namesleft #1 >
  217. {t * ", " * }
  218. {t}
  219. %end if
  220. if$
  221. nameptr #1 + 'nameptr :=
  222. namesleft #1 - 'namesleft :=
  223. }
  224. while$
  225. etal
  226. {", et al. "}
  227. {". "}
  228. if$
  229. *
  230. }
  231. FUNCTION {format.editors.names}
  232. { 's := % push the name s, pop s and author (already on stack), assign author to s
  233. #1 'nameptr :=
  234. #0 'etal :=
  235. s num.names$ 'numnames :=
  236. numnames #6 >
  237. {#3 'numnames :=
  238. #1 'etal :=
  239. }
  240. {}
  241. %end if
  242. if$
  243. numnames 'namesleft :=
  244. { namesleft #0 > }
  245. {s nameptr "{ll~}{ff}" format.name$ 't :=
  246. namesleft #1 >
  247. {t * ", " * }
  248. {t}
  249. %end if
  250. if$
  251. nameptr #1 + 'nameptr :=
  252. namesleft #1 - 'namesleft :=
  253. }
  254. while$
  255. etal
  256. {", et al. "}
  257. {""}
  258. if$
  259. *
  260. }
  261. FUNCTION {format.authors}
  262. { author empty$
  263. { "" }
  264. { author format.names }
  265. if$
  266. }
  267. FUNCTION {format.editors}
  268. { editor empty$
  269. { "" }
  270. { editor format.editors.names
  271. editor num.names$ #1 >
  272. { ", eds." * }
  273. { ", ed." * }
  274. if$
  275. }
  276. if$
  277. }
  278. FUNCTION {format.title}
  279. { title empty$
  280. { "" }
  281. { title ". " *}% modified by SPi-Global on 12Jun2017
  282. if$
  283. }
  284. FUNCTION {format.journal}
  285. { journal empty$
  286. { "" }
  287. { journal ". " *}
  288. if$
  289. }
  290. FUNCTION {format.title.p}
  291. { title empty$
  292. { "" }
  293. { title " " *}
  294. if$
  295. }
  296. FUNCTION {n.dashify}
  297. { 't :=
  298. ""
  299. { t empty$ not }
  300. { t #1 #1 substring$ "-" =
  301. { t #1 #2 substring$ "--" = not
  302. { "--" *
  303. t #2 global.max$ substring$ 't :=
  304. }
  305. { { t #1 #1 substring$ "-" = }
  306. { "-" *
  307. t #2 global.max$ substring$ 't :=
  308. }
  309. while$
  310. }
  311. if$
  312. }
  313. { t #1 #1 substring$ *
  314. t #2 global.max$ substring$ 't :=
  315. }
  316. if$
  317. }
  318. while$
  319. }
  320. FUNCTION {format.date}
  321. { year empty$
  322. { "" }
  323. { "" * year }
  324. if$
  325. }
  326. FUNCTION {inproformat.date}
  327. { year empty$
  328. { "" }
  329. { "; " * year }
  330. if$
  331. }
  332. FUNCTION {format.btitle}
  333. %%{ title emphasize
  334. { title % modified by SPi-Global on 12Jun2017
  335. }
  336. FUNCTION {tie.or.space.connect}
  337. { duplicate$ text.length$ #3 <
  338. { "~" }
  339. { " " }
  340. if$
  341. swap$ * *
  342. }
  343. FUNCTION {either.or.check}
  344. { empty$
  345. 'pop$
  346. { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  347. if$
  348. }
  349. FUNCTION {format.bvolume}
  350. { volume empty$
  351. { "" }
  352. { series empty$
  353. 'skip$
  354. { " " * series * ", vol. " volume * ": " *}
  355. if$
  356. "volume and number" number either.or.check
  357. }
  358. if$
  359. }
  360. FUNCTION {format.number.series}
  361. { volume empty$
  362. { number empty$
  363. { series field.or.null }
  364. { output.state mid.sentence =
  365. { "no.~" }
  366. { "No.~" }
  367. if$
  368. number *
  369. series empty$
  370. { "there's a number but no series in " cite$ * warning$ }
  371. { " in " * series * }
  372. if$
  373. }
  374. if$
  375. }
  376. { "" }
  377. if$
  378. }
  379. FUNCTION {format.edition}
  380. { edition empty$
  381. { "" }
  382. { edition "l" change.case$ "~ed." * }
  383. if$
  384. }
  385. INTEGERS { multiresult }
  386. FUNCTION {multi.page.check}
  387. { 't :=
  388. #0 'multiresult :=
  389. { multiresult not
  390. t empty$ not
  391. and
  392. }
  393. { t #1 #1 substring$
  394. duplicate$ "-" =
  395. swap$ duplicate$ "," =
  396. swap$ "+" =
  397. or or
  398. { #1 'multiresult := }
  399. { t #2 global.max$ substring$ 't := }
  400. if$
  401. }
  402. while$
  403. multiresult
  404. }
  405. FUNCTION {format.pages}
  406. { pages empty$
  407. { "" }
  408. {":" pages *}
  409. if$
  410. }
  411. FUNCTION {incollecformat.pages}
  412. { pages empty$
  413. { "" }
  414. {" (pp. " pages * ")" *}
  415. if$
  416. }
  417. FUNCTION {format.volume}
  418. { volume empty$
  419. { "" }
  420. { "" volume * }
  421. if$
  422. }
  423. FUNCTION {format.number}
  424. { number empty$
  425. { "" }
  426. { "(" number * ")" *}
  427. if$
  428. }
  429. FUNCTION {format.chapter.pages}
  430. { chapter empty$
  431. 'format.pages
  432. { type empty$
  433. { "ch.~" chapter * }
  434. { type "l" change.case$ chapter tie.or.space.connect }
  435. if$
  436. pages empty$
  437. 'skip$
  438. { ", " * format.pages * }
  439. if$
  440. }
  441. if$
  442. }
  443. FUNCTION {format.in.ed.booktitle}
  444. { booktitle empty$
  445. { "In: " }
  446. { "In: "
  447. editor empty$
  448. 'skip$
  449. { " " * format.editors * " " * booktitle emphasize * ", " * }
  450. if$
  451. }
  452. if$
  453. }
  454. FUNCTION {format.thesis.type}
  455. { type empty$
  456. 'skip$
  457. { pop$
  458. output.state after.block =
  459. { type "t" change.case$ }
  460. { type "l" change.case$ }
  461. if$
  462. }
  463. if$
  464. }
  465. FUNCTION {empty.misc.check}
  466. { author empty$ title empty$ howpublished empty$
  467. month empty$ year empty$ note empty$
  468. and and and and and
  469. { "all relevant fields are empty in " cite$ * warning$ }
  470. 'skip$
  471. if$
  472. }
  473. FUNCTION {format.tr.number}
  474. { type empty$
  475. %%{ "Tech. Rep." }% modified by SPi-Global - 16Jun2017
  476. { "" }
  477. 'type
  478. if$
  479. number empty$
  480. { "l" change.case$ }
  481. { number tie.or.space.connect }
  482. if$
  483. }
  484. FUNCTION {format.addr.pub}
  485. { publisher empty$
  486. { "" }
  487. { address empty$
  488. { "" }
  489. { address ": " * }
  490. if$
  491. publisher * " " *
  492. }
  493. if$
  494. }
  495. FUNCTION {format.book.addr.pub}
  496. { publisher empty$
  497. { "" }
  498. { address empty$
  499. { "" }
  500. { address ": " * }
  501. if$
  502. publisher * "; " *
  503. }
  504. if$
  505. }
  506. FUNCTION {format.paddress}
  507. { address empty$
  508. { "" }
  509. { "(" address * ")" * }
  510. if$
  511. }
  512. FUNCTION {format.ppaddress}
  513. { address empty$
  514. { "" }
  515. { "; " address * "" * }
  516. if$
  517. }
  518. FUNCTION {format.article.crossref}
  519. { key empty$
  520. { journal empty$
  521. { "need key or journal for " cite$ * " to crossref " * crossref *
  522. warning$
  523. ""
  524. }
  525. { "in {\em " journal * "\/}" * }
  526. if$
  527. }
  528. { "in " key * }
  529. if$
  530. " \cite{" * crossref * "}" *
  531. }
  532. FUNCTION {format.crossref.editor}
  533. { editor #1 "{vv~}{ll}" format.name$
  534. editor num.names$ duplicate$
  535. #2 >
  536. { pop$ " {\em et~al.}" * }
  537. { #2 <
  538. 'skip$
  539. { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  540. { " {\em et~al.}" * }
  541. { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  542. if$
  543. }
  544. if$
  545. }
  546. if$
  547. }
  548. FUNCTION {format.book.crossref}
  549. { volume empty$
  550. { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  551. "In "
  552. }
  553. { "Vol.~" volume *
  554. " of " *
  555. }
  556. if$
  557. editor empty$
  558. editor field.or.null author field.or.null =
  559. or
  560. { key empty$
  561. { series empty$
  562. { "need editor, key, or series for " cite$ * " to crossref " *
  563. crossref * warning$
  564. "" *
  565. }
  566. { "{\em " * series * "\/}" * }
  567. if$
  568. }
  569. { key * }
  570. if$
  571. }
  572. { format.crossref.editor * }
  573. if$
  574. " \cite{" * crossref * "}" *
  575. }
  576. FUNCTION {format.incoll.inproc.crossref}
  577. { editor empty$
  578. editor field.or.null author field.or.null =
  579. or
  580. { key empty$
  581. { booktitle empty$
  582. { "need editor, key, or booktitle for " cite$ * " to crossref " *
  583. crossref * warning$
  584. ""
  585. }
  586. { "in {\em " booktitle * "\/}" * }
  587. if$
  588. }
  589. { "in " key * }
  590. if$
  591. }
  592. { "in " format.crossref.editor * }
  593. if$
  594. " \cite{" * crossref * "}" *
  595. }
  596. FUNCTION {no.blank.or.punct}
  597. { "" * before.all 'output.state :=
  598. }
  599. FUNCTION {add.semicolon}
  600. {
  601. ";" *
  602. no.blank.or.punct
  603. }
  604. FUNCTION {add.colon}
  605. {
  606. ": " *
  607. no.blank.or.punct
  608. }
  609. FUNCTION {add.space}
  610. {
  611. " " *
  612. no.blank.or.punct
  613. }
  614. FUNCTION {article}
  615. { output.bibitem
  616. format.authors "author" output.check
  617. format.title "title" output.check
  618. blank.sep
  619. crossref missing$
  620. { format.journal emphasize "journal" output.check
  621. format.date add.semicolon "year" output.check
  622. format.volume output
  623. format.number output
  624. format.pages output
  625. }
  626. { format.article.crossref output.nonnull
  627. format.pages output
  628. }
  629. if$
  630. new.block
  631. note output
  632. fin.entry
  633. }
  634. FUNCTION {book}
  635. { output.bibitem
  636. author empty$
  637. { format.editors "author and editor" output.check }
  638. { format.authors output.nonnull
  639. crossref missing$
  640. { "author and editor" editor either.or.check }
  641. 'skip$
  642. if$
  643. }
  644. if$
  645. format.btitle emphasize "title" output.check
  646. crossref missing$
  647. { format.bvolume output
  648. new.block
  649. format.number.series output
  650. format.book.addr.pub "publisher" output.check
  651. }
  652. { new.block
  653. format.book.crossref output.nonnull
  654. }
  655. if$
  656. format.edition output
  657. format.date "year" output.check
  658. new.block
  659. note output
  660. fin.entry
  661. }
  662. FUNCTION {booklet}
  663. { output.bibitem
  664. format.authors output
  665. title empty$
  666. { "empty title in " cite$ * warning$
  667. howpublished new.sentence.checka
  668. }
  669. { howpublished empty$ not
  670. address empty$ month empty$ year empty$ and and
  671. or
  672. { format.title.p output.nonnull }
  673. { format.title output.nonnull }
  674. if$
  675. blank.sep
  676. }
  677. if$
  678. howpublished output
  679. address output
  680. format.date output
  681. new.block
  682. note output
  683. fin.entry
  684. }
  685. FUNCTION {inbook}
  686. { output.bibitem
  687. author empty$
  688. { format.editors "author and editor" output.check }
  689. { format.authors output.nonnull
  690. crossref missing$
  691. { "author and editor" editor either.or.check }
  692. 'skip$
  693. if$
  694. }
  695. if$
  696. format.btitle "title" output.check
  697. crossref missing$
  698. { format.bvolume output
  699. format.chapter.pages "chapter and pages" output.check
  700. new.block
  701. format.number.series output
  702. format.addr.pub "publisher" output.check
  703. }
  704. { format.chapter.pages "chapter and pages" output.check
  705. new.block
  706. format.book.crossref output.nonnull
  707. }
  708. if$
  709. format.edition output
  710. format.date "year" output.check
  711. new.block
  712. note output
  713. fin.entry
  714. }
  715. FUNCTION {incollection}
  716. { output.bibitem
  717. format.authors "author" output.check
  718. format.title "title" output.check
  719. blank.sep
  720. crossref missing$
  721. { format.in.ed.booktitle "booktitle" output.check
  722. format.number.series add.period$ add.space output
  723. format.bvolume output
  724. format.addr.pub "publisher" output.check
  725. format.edition output
  726. format.date "year" output.check
  727. %%format.chapter.pages output
  728. incollecformat.pages output
  729. }
  730. { format.incoll.inproc.crossref output.nonnull
  731. format.chapter.pages output
  732. }
  733. if$
  734. new.block
  735. note output
  736. fin.entry
  737. }
  738. FUNCTION {inproceedings}
  739. { output.bibitem
  740. format.authors "author" output.check
  741. format.title "title" output.check
  742. blank.sep
  743. crossref missing$
  744. { format.in.ed.booktitle "booktitle" output.check
  745. format.bvolume output
  746. format.number.series output
  747. format.pages output
  748. organization output
  749. publisher output
  750. inproformat.date "year" output.check
  751. format.ppaddress output
  752. }
  753. { format.incoll.inproc.crossref output.nonnull
  754. format.pages output
  755. }
  756. if$
  757. new.block
  758. note output
  759. fin.entry
  760. }
  761. FUNCTION {conference} { inproceedings }
  762. FUNCTION {manual}
  763. { output.bibitem
  764. author empty$
  765. { organization empty$
  766. 'skip$
  767. { organization output.nonnull
  768. address output
  769. }
  770. if$
  771. }
  772. { format.authors output.nonnull }
  773. if$
  774. format.btitle "title" output.check
  775. author empty$
  776. { organization empty$
  777. { address new.block.checka
  778. address output
  779. }
  780. 'skip$
  781. if$
  782. }
  783. { organization address new.block.checkb
  784. organization output
  785. address output
  786. }
  787. if$
  788. format.edition output
  789. format.date output
  790. new.block
  791. note output
  792. fin.entry
  793. }
  794. FUNCTION {mastersthesis}
  795. { output.bibitem
  796. format.authors "author" output.check
  797. format.title "title" output.check
  798. blank.sep
  799. "Master's thesis" format.thesis.type output.nonnull
  800. school "school" output.check
  801. address output
  802. format.date "year" output.check
  803. new.block
  804. note output
  805. fin.entry
  806. }
  807. FUNCTION {format.note}
  808. { note empty$
  809. { "" }
  810. { note "; " *}
  811. if$
  812. }
  813. FUNCTION {misc}
  814. { output.bibitem
  815. format.authors output
  816. title empty$
  817. { howpublished new.sentence.checka }
  818. { howpublished empty$ not
  819. month empty$ year empty$ and
  820. or
  821. { format.title.p output.nonnull }
  822. { format.title emphasize output.nonnull }
  823. if$
  824. blank.sep
  825. }
  826. if$
  827. howpublished output
  828. format.note output
  829. %%new.block
  830. format.date output
  831. fin.entry
  832. empty.misc.check
  833. }
  834. FUNCTION {phdthesis}
  835. { output.bibitem
  836. format.authors "author" output.check
  837. format.btitle "title" output.check
  838. new.block
  839. "PhD thesis" format.thesis.type output.nonnull
  840. school "school" output.check
  841. address output
  842. format.date "year" output.check
  843. new.block
  844. note output
  845. fin.entry
  846. }
  847. FUNCTION {proceedings}
  848. { output.bibitem
  849. editor empty$
  850. { organization output }
  851. { format.editors output.nonnull }
  852. if$
  853. format.btitle "title" output.check
  854. format.bvolume output
  855. format.number.series output
  856. format.paddress output
  857. editor empty$
  858. 'skip$
  859. { organization output }
  860. if$
  861. publisher output
  862. format.date "year" output.check
  863. new.block
  864. note output
  865. fin.entry
  866. }
  867. FUNCTION {add.spperiod}
  868. {
  869. ". " *
  870. no.blank.or.punct
  871. }
  872. FUNCTION {techreport}
  873. { output.bibitem
  874. format.authors "author" output.check
  875. format.title emphasize "title" output.check
  876. blank.sep
  877. format.tr.number add.colon output.nonnull
  878. institution "institution" output.check
  879. address output
  880. add.semicolon add.space format.date "year" output.check
  881. new.block
  882. note output
  883. fin.entry
  884. }
  885. FUNCTION {unpublished}
  886. { output.bibitem
  887. format.authors "author" output.check
  888. format.title.p "title" output.check
  889. blank.sep
  890. note "note" output.check
  891. format.date output
  892. fin.entry
  893. }
  894. FUNCTION {default.type} { misc }
  895. MACRO {jan} {"Jan."}
  896. MACRO {feb} {"Feb."}
  897. MACRO {mar} {"Mar."}
  898. MACRO {apr} {"Apr."}
  899. MACRO {may} {"May"}
  900. MACRO {jun} {"June"}
  901. MACRO {jul} {"July"}
  902. MACRO {aug} {"Aug."}
  903. MACRO {sep} {"Sept."}
  904. MACRO {oct} {"Oct."}
  905. MACRO {nov} {"Nov."}
  906. MACRO {dec} {"Dec."}
  907. MACRO {acmcs} {"ACM Computing Surveys"}
  908. MACRO {acta} {"Acta Informatica"}
  909. MACRO {cacm} {"Communications ACM"}
  910. MACRO {ibmjrd} {"IBM J. Research and Development"}
  911. MACRO {ibmsj} {"IBM Systems~J."}
  912. MACRO {ieeese} {"IEEE Trans. Software Engineering"}
  913. MACRO {ieeetc} {"IEEE Trans. Computers"}
  914. MACRO {ieeetcad}
  915. {"IEEE Trans. Computer-Aided Design"}
  916. MACRO {ipl} {"Information Processing Letters"}
  917. MACRO {jacm} {"J.~ACM"}
  918. MACRO {jcss} {"J.~Computer and System Sciences"}
  919. MACRO {scp} {"Science of Computer Programming"}
  920. MACRO {sicomp} {"SIAM J. Computing"}
  921. MACRO {tocs} {"ACM Trans. Computer Systems"}
  922. MACRO {tods} {"ACM Trans. Database Systems"}
  923. MACRO {tog} {"ACM Trans. Graphics"}
  924. MACRO {toms} {"ACM Trans. Mathematical Software"}
  925. MACRO {toois} {"ACM Trans. Office Information Systems"}
  926. MACRO {toplas} {"ACM Trans. Programming Languages and Systems"}
  927. MACRO {tcs} {"Theoretical Computer Science"}
  928. READ
  929. STRINGS { longest.label }
  930. INTEGERS { number.label longest.label.width }
  931. FUNCTION {initialize.longest.label}
  932. { "" 'longest.label :=
  933. #1 'number.label :=
  934. #0 'longest.label.width :=
  935. }
  936. FUNCTION {longest.label.pass}
  937. { number.label int.to.str$ 'label :=
  938. number.label #1 + 'number.label :=
  939. label width$ longest.label.width >
  940. { label 'longest.label :=
  941. label width$ 'longest.label.width :=
  942. }
  943. 'skip$
  944. if$
  945. }
  946. EXECUTE {initialize.longest.label}
  947. ITERATE {longest.label.pass}
  948. FUNCTION {begin.bib}
  949. { preamble$ empty$
  950. 'skip$
  951. { preamble$ write$ newline$ }
  952. if$
  953. "\begin{thebibliography}{" longest.label * "}" * write$ newline$
  954. }
  955. EXECUTE {begin.bib}
  956. EXECUTE {init.state.consts}
  957. ITERATE {call.type$}
  958. FUNCTION {end.bib}
  959. { newline$
  960. "\end{thebibliography}" write$ newline$
  961. }
  962. EXECUTE {end.bib}