1 % BibTeX bibliography style `jacs' for J. Amer. Chem. Soc.
2 % Modified Februari 10, 1993 by R. W. W. Hooft (hooft@chem.ruu.nl)
4 % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
5 % Copyright (C) 1985, all rights reserved.
6 % Copying of this file is authorized only if either
7 % (1) you make absolutely no changes to your copy, including name, or
8 % (2) if you do make changes, you name it something other than
9 % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
10 % This restriction helps ensure that all standard styles are identical.
11 % The file btxbst.doc has the documentation for this style.
41 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
43 FUNCTION {init.state.consts}
52 FUNCTION {output.nonnull}
54 output.state mid.sentence =
56 { output.state after.block =
61 { output.state before.all =
63 { add.period$ " " * write$ }
67 mid.sentence 'output.state :=
80 FUNCTION {output.check}
83 { pop$ "empty " t * " in " * cite$ * warning$ }
88 FUNCTION {output.bibitem}
95 before.all 'output.state :=
105 { output.state before.all =
107 { after.block 'output.state := }
111 FUNCTION {new.sentence}
112 { output.state after.block =
114 { output.state before.all =
116 { after.sentence 'output.state := }
140 FUNCTION {new.block.checka}
147 FUNCTION {new.block.checkb}
156 FUNCTION {new.sentence.checka}
163 FUNCTION {new.sentence.checkb}
172 FUNCTION {field.or.null}
182 { "{\em " swap$ * "}" * }
189 { "{\bf " swap$ * "}" * }
193 INTEGERS { nameptr namesleft numnames }
195 FUNCTION {format.names}
198 s num.names$ 'numnames :=
199 numnames 'namesleft :=
201 % { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
202 { s nameptr "{vv~}{ll}{, f.}{~jj}" format.name$ 't :=
219 nameptr #1 + 'nameptr :=
220 namesleft #1 - 'namesleft :=
225 FUNCTION {format.authors}
228 { author format.names }
232 FUNCTION {format.editors}
235 { editor format.names
236 editor num.names$ #1 >
244 FUNCTION {format.title}
247 { title "t" change.case$ }
255 { t #1 #1 substring$ "-" =
256 { t #1 #2 substring$ "--" = not
258 t #2 global.max$ substring$ 't :=
260 { { t #1 #1 substring$ "-" = }
262 t #2 global.max$ substring$ 't :=
268 { t #1 #1 substring$ *
269 t #2 global.max$ substring$ 't :=
276 FUNCTION {format.date}
280 { "there's a month but no year in " cite$ * warning$
287 { month " " * year * }
293 FUNCTION {format.date.bold}
297 { "there's a month but no year in " cite$ * warning$
304 { month " " * year * }
310 FUNCTION {format.btitle}
314 FUNCTION {tie.or.space.connect}
315 { duplicate$ text.length$ #3 <
322 FUNCTION {either.or.check}
325 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
329 FUNCTION {format.bvolume}
332 { "volume" volume tie.or.space.connect
335 { " of " * series emphasize * }
337 "volume and number" number either.or.check
342 FUNCTION {format.number.series}
345 { series field.or.null }
346 { output.state mid.sentence =
350 number tie.or.space.connect
352 { "there's a number but no series in " cite$ * warning$ }
353 { " in " * series * }
362 FUNCTION {format.edition}
365 { output.state mid.sentence =
366 { edition "l" change.case$ " edition" * }
367 { edition "t" change.case$ " edition" * }
373 INTEGERS { multiresult }
375 FUNCTION {multi.page.check}
384 swap$ duplicate$ "," =
387 { #1 'multiresult := }
388 { t #2 global.max$ substring$ 't := }
395 FUNCTION {format.pages}
398 { pages multi.page.check
399 { "pp" pages n.dashify tie.or.space.connect }
400 { "p" pages tie.or.space.connect }
406 FUNCTION {format.vol.num.pages}
407 { volume emphasize field.or.null
410 { "(" number * ")" * *
412 { "there's a number but no volume in " cite$ * warning$ }
420 { pop$ format.pages }
421 { ", " * pages n.dashify * }
427 FUNCTION {format.chapter.pages}
432 { type "l" change.case$ }
434 chapter tie.or.space.connect
437 { ", " * format.pages * }
443 FUNCTION {format.in.ed.booktitle}
447 { "In " booktitle emphasize * }
448 { "In " format.editors * ", " * booktitle emphasize * }
454 FUNCTION {format.in.booktitle.ed}
458 { "in " booktitle emphasize * }
459 { "in " booktitle emphasize * ", " * format.editors * }
465 FUNCTION {format.pub.address}
469 { "(" publisher * ")" }
470 { "(" publisher * ", " * address * ")" * }
476 FUNCTION {empty.misc.check}
477 { author empty$ title empty$ howpublished empty$
478 month empty$ year empty$ note empty$
480 { "all relevant fields are empty in " cite$ * warning$ }
485 FUNCTION {format.thesis.type}
489 type "t" change.case$
494 FUNCTION {format.tr.number}
496 { "Technical Report" }
501 { number tie.or.space.connect }
505 FUNCTION {format.article.crossref}
508 { "need key or journal for " cite$ * " to crossref " * crossref *
512 { "In {\em " journal * "\/}" * }
517 " \cite{" * crossref * "}" *
520 FUNCTION {format.crossref.editor}
521 { editor #1 "{vv~}{ll}" format.name$
522 editor num.names$ duplicate$
527 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
529 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
537 FUNCTION {format.book.crossref}
539 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
542 { "Volume" volume tie.or.space.connect
547 editor field.or.null author field.or.null =
551 { "need editor, key, or series for " cite$ * " to crossref " *
555 { "{\em " * series * "\/}" * }
561 { format.crossref.editor * }
563 " \cite{" * crossref * "}" *
566 FUNCTION {format.incoll.inproc.crossref}
568 editor field.or.null author field.or.null =
572 { "need editor, key, or booktitle for " cite$ * " to crossref " *
576 { "In {\em " booktitle * "\/}" * }
582 { "In " format.crossref.editor * }
584 " \cite{" * crossref * "}" *
589 format.authors "author" output.check
592 { journal emphasize "journal" output.check
593 format.date.bold "year" output.check
594 format.vol.num.pages output
596 { format.article.crossref output.nonnull
609 { format.editors "author and editor" output.check }
610 { format.authors output.nonnull
612 { "author and editor" editor either.or.check }
618 format.btitle "title" output.check
620 { format.bvolume output
622 format.number.series output
624 publisher "publisher" output.check
628 format.book.crossref output.nonnull
631 format.edition output
632 format.date "year" output.check
640 format.authors output
642 format.title "title" output.check
643 howpublished address new.block.checkb
655 { format.editors "author and editor" output.check }
656 { format.authors output.nonnull
658 % { "author and editor" editor either.or.check }
664 format.in.booktitle.ed "title" output.check
666 { format.pub.address "publisher" output.check
668 format.bvolume output
670 format.chapter.pages "chapter and pages" output.check
672 format.number.series output
674 { format.chapter.pages "chapter and pages" output.check
676 format.book.crossref output.nonnull
679 format.edition output
680 format.date "year" output.check
686 FUNCTION {incollection}
688 format.authors "author" output.check
690 % format.title "title" output.check
693 { format.in.booktitle.ed "booktitle" output.check
694 format.bvolume output
695 format.number.series output
696 format.chapter.pages output
698 publisher "publisher" output.check
700 format.edition output
701 format.date "year" output.check
703 { format.incoll.inproc.crossref output.nonnull
704 format.chapter.pages output
712 FUNCTION {inproceedings}
714 format.authors "author" output.check
716 format.title "title" output.check
719 { format.in.booktitle.ed "booktitle" output.check
720 format.bvolume output
721 format.number.series output
724 { organization publisher new.sentence.checkb
727 format.date "year" output.check
729 { address output.nonnull
730 format.date "year" output.check
737 { format.incoll.inproc.crossref output.nonnull
746 FUNCTION {conference} { inproceedings }
751 { organization empty$
753 { organization output.nonnull
758 { format.authors output.nonnull }
761 format.btitle "title" output.check
763 { organization empty$
764 { address new.block.checka
770 { organization address new.block.checkb
775 format.edition output
782 FUNCTION {mastersthesis}
784 format.authors "author" output.check
786 format.title "title" output.check
788 "Master's thesis" format.thesis.type output.nonnull
789 school "school" output.check
791 format.date "year" output.check
799 format.authors output
800 title howpublished new.block.checkb
802 howpublished new.block.checka
813 format.authors output
814 title howpublished new.block.checkb
816 howpublished new.block.checka
827 format.authors "author" output.check
829 format.btitle "title" output.check
831 "PhD thesis" format.thesis.type output.nonnull
832 school "school" output.check
834 format.date "year" output.check
840 FUNCTION {proceedings}
843 { organization output }
844 { format.editors output.nonnull }
847 format.btitle "title" output.check
848 format.bvolume output
849 format.number.series output
852 { publisher new.sentence.checka }
853 { organization publisher new.sentence.checkb
858 format.date "year" output.check
860 { address output.nonnull
861 format.date "year" output.check
865 { organization output }
875 FUNCTION {techreport}
877 format.authors "author" output.check
879 format.title "title" output.check
881 format.tr.number output.nonnull
882 institution "institution" output.check
884 format.date "year" output.check
890 FUNCTION {unpublished}
892 format.authors "author" output.check
894 format.title "title" output.check
896 note "note" output.check
901 FUNCTION {default.type} { misc }
903 MACRO {jan} {"January"}
905 MACRO {feb} {"February"}
907 MACRO {mar} {"March"}
909 MACRO {apr} {"April"}
917 MACRO {aug} {"August"}
919 MACRO {sep} {"September"}
921 MACRO {oct} {"October"}
923 MACRO {nov} {"November"}
925 MACRO {dec} {"December"}
927 MACRO {bbrc} {"Biochem. Biophys. Res. Commun."}
929 MACRO {jacs} {"J. Amer. Chem. Soc."}
931 MACRO {jbc} {"J. Biol. Chem."}
933 MACRO {pnas} {"Proc. Natl. Acad. Sci."}
935 MACRO {jmb} {"J. Mol. Biol."}
937 MACRO {embo} {"EMBO J."}
939 MACRO {tibs} {"Trends Biochem. Sci."}
941 MACRO {protsfg} {"Proteins: Struct. Func. Gen."}
944 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
946 MACRO {ipl} {"Information Processing Letters"}
948 MACRO {jacm} {"Journal of the ACM"}
950 MACRO {jcss} {"Journal of Computer and System Sciences"}
952 MACRO {scp} {"Science of Computer Programming"}
954 MACRO {sicomp} {"SIAM Journal on Computing"}
956 MACRO {tocs} {"ACM Transactions on Computer Systems"}
958 MACRO {tods} {"ACM Transactions on Database Systems"}
960 MACRO {tog} {"ACM Transactions on Graphics"}
962 MACRO {toms} {"ACM Transactions on Mathematical Software"}
964 MACRO {toois} {"ACM Transactions on Office Information Systems"}
966 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
968 MACRO {tcs} {"Theoretical Computer Science"}
972 STRINGS { longest.label }
974 INTEGERS { number.label longest.label.width }
976 FUNCTION {initialize.longest.label}
977 { "" 'longest.label :=
979 #0 'longest.label.width :=
982 FUNCTION {longest.label.pass}
983 { number.label int.to.str$ 'label :=
984 number.label #1 + 'number.label :=
985 label width$ longest.label.width >
986 { label 'longest.label :=
987 label width$ 'longest.label.width :=
993 EXECUTE {initialize.longest.label}
995 ITERATE {longest.label.pass}
1000 { preamble$ write$ newline$ }
1002 "\begin{thebibliography}{" longest.label * "}" * write$ newline$
1007 EXECUTE {init.state.consts}
1009 ITERATE {call.type$}
1013 "\end{thebibliography}" write$ newline$