initial setup of thesis repository
[cluster_expansion_thesis.git] / Bibliography / jacs-new.bst
blob24d5c7dabc7b57328fdeb78506f7301a7df60360
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.
13 ENTRY
14   { address
15     author
16     booktitle
17     chapter
18     edition
19     editor
20     howpublished
21     institution
22     journal
23     key
24     month
25     note
26     number
27     organization
28     pages
29     publisher
30     school
31     series
32     title
33     type
34     volume
35     year
36     Urldate
37   }
38   {}
39   { label }
41 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
43 FUNCTION {init.state.consts}
44 { #0 'before.all :=
45   #1 'mid.sentence :=
46   #2 'after.sentence :=
47   #3 'after.block :=
50 STRINGS { s t }
52 FUNCTION {output.nonnull}
53 { 's :=
54   output.state mid.sentence =
55     { ", " * write$ }
56     { output.state after.block =
57         { add.period$ write$
58           newline$
59           "\newblock " write$
60         }
61         { output.state before.all =
62             'write$
63             { add.period$ " " * write$ }
64           if$
65         }
66       if$
67       mid.sentence 'output.state :=
68     }
69   if$
70   s
73 FUNCTION {output}
74 { duplicate$ empty$
75     'pop$
76     'output.nonnull
77   if$
80 FUNCTION {output.check}
81 { 't :=
82   duplicate$ empty$
83     { pop$ "empty " t * " in " * cite$ * warning$ }
84     'output.nonnull
85   if$
88 FUNCTION {output.bibitem}
89 { newline$
90   "\bibitem{" write$
91   cite$ write$
92   "}" write$
93   newline$
94   ""
95   before.all 'output.state :=
98 FUNCTION {fin.entry}
99 { add.period$
100   write$
101   newline$
104 FUNCTION {new.block}
105 { output.state before.all =
106     'skip$
107     { after.block 'output.state := }
108   if$
111 FUNCTION {new.sentence}
112 { output.state after.block =
113     'skip$
114     { output.state before.all =
115         'skip$
116         { after.sentence 'output.state := }
117       if$
118     }
119   if$
122 FUNCTION {not}
123 {   { #0 }
124     { #1 }
125   if$
128 FUNCTION {and}
129 {   'skip$
130     { pop$ #0 }
131   if$
134 FUNCTION {or}
135 {   { pop$ #1 }
136     'skip$
137   if$
140 FUNCTION {new.block.checka}
141 { empty$
142     'skip$
143     'new.block
144   if$
147 FUNCTION {new.block.checkb}
148 { empty$
149   swap$ empty$
150   and
151     'skip$
152     'new.block
153   if$
156 FUNCTION {new.sentence.checka}
157 { empty$
158     'skip$
159     'new.sentence
160   if$
163 FUNCTION {new.sentence.checkb}
164 { empty$
165   swap$ empty$
166   and
167     'skip$
168     'new.sentence
169   if$
172 FUNCTION {field.or.null}
173 { duplicate$ empty$
174     { pop$ "" }
175     'skip$
176   if$
179 FUNCTION {emphasize}
180 { duplicate$ empty$
181     { pop$ "" }
182     { "{\em " swap$ * "}" * }
183   if$
186 FUNCTION {boldface}
187 { duplicate$ empty$
188     { pop$ "" }
189     { "{\bf " swap$ * "}" * }
190   if$
193 INTEGERS { nameptr namesleft numnames }
195 FUNCTION {format.names}
196 { 's :=
197   #1 'nameptr :=
198   s num.names$ 'numnames :=
199   numnames 'namesleft :=
200     { namesleft #0 > }
201 %   { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
202     { s nameptr "{vv~}{ll}{, f.}{~jj}" format.name$ 't :=
203       nameptr #1 >
204         { namesleft #1 >
205             { "; " * t * }
206             { numnames #2 >
207                 { }
208                 'skip$
209               if$
210               t "others" =
211                 { " et~al." * }
212                 { "; " * t * }
213               if$
214             }
215           if$
216         }
217         't
218       if$
219       nameptr #1 + 'nameptr :=
220       namesleft #1 - 'namesleft :=
221     }
222   while$
225 FUNCTION {format.authors}
226 { author empty$
227     { "" }
228     { author format.names }
229   if$
232 FUNCTION {format.editors}
233 { editor empty$
234     { "" }
235     { editor format.names
236       editor num.names$ #1 >
237         { ", Eds." * }
238         { ", Ed." * }
239       if$
240     }
241   if$
244 FUNCTION {format.title}
245 { title empty$
246     { "" }
247     { title "t" change.case$ }
248   if$
251 FUNCTION {n.dashify}
252 { 't :=
253   ""
254     { t empty$ not }
255     { t #1 #1 substring$ "-" =
256         { t #1 #2 substring$ "--" = not
257             { "--" *
258               t #2 global.max$ substring$ 't :=
259             }
260             {   { t #1 #1 substring$ "-" = }
261                 { "-" *
262                   t #2 global.max$ substring$ 't :=
263                 }
264               while$
265             }
266           if$
267         }
268         { t #1 #1 substring$ *
269           t #2 global.max$ substring$ 't :=
270         }
271       if$
272     }
273   while$
276 FUNCTION {format.date}
277 { year empty$
278     { month empty$
279         { "" }
280         { "there's a month but no year in " cite$ * warning$
281           month
282         }
283       if$
284     }
285     { month empty$
286         'year
287         { month " " * year * }
288       if$
289     }
290   if$
293 FUNCTION {format.date.bold}
294 { year empty$
295     { month empty$
296         { "" }
297         { "there's a month but no year in " cite$ * warning$
298           month
299         }
300       if$
301     }
302     { month empty$
303         { year boldface }
304         { month " " * year * }
305       if$
306     }
307   if$
310 FUNCTION {format.btitle}
311 { title emphasize
314 FUNCTION {tie.or.space.connect}
315 { duplicate$ text.length$ #3 <
316     { "~" }
317     { " " }
318   if$
319   swap$ * *
322 FUNCTION {either.or.check}
323 { empty$
324     'pop$
325     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
326   if$
329 FUNCTION {format.bvolume}
330 { volume empty$
331     { "" }
332     { "volume" volume tie.or.space.connect
333       series empty$
334         'skip$
335         { " of " * series emphasize * }
336       if$
337       "volume and number" number either.or.check
338     }
339   if$
342 FUNCTION {format.number.series}
343 { volume empty$
344     { number empty$
345         { series field.or.null }
346         { output.state mid.sentence =
347             { "number" }
348             { "Number" }
349           if$
350           number tie.or.space.connect
351           series empty$
352             { "there's a number but no series in " cite$ * warning$ }
353             { " in " * series * }
354           if$
355         }
356       if$
357     }
358     { "" }
359   if$
362 FUNCTION {format.edition}
363 { edition empty$
364     { "" }
365     { output.state mid.sentence =
366         { edition "l" change.case$ " edition" * }
367         { edition "t" change.case$ " edition" * }
368       if$
369     }
370   if$
373 INTEGERS { multiresult }
375 FUNCTION {multi.page.check}
376 { 't :=
377   #0 'multiresult :=
378     { multiresult not
379       t empty$ not
380       and
381     }
382     { t #1 #1 substring$
383       duplicate$ "-" =
384       swap$ duplicate$ "," =
385       swap$ "+" =
386       or or
387         { #1 'multiresult := }
388         { t #2 global.max$ substring$ 't := }
389       if$
390     }
391   while$
392   multiresult
395 FUNCTION {format.pages}
396 { pages empty$
397     { "" }
398     { pages multi.page.check
399         { "pp" pages n.dashify tie.or.space.connect }
400         { "p" pages tie.or.space.connect }
401       if$
402     }
403   if$
406 FUNCTION {format.vol.num.pages}
407 { volume emphasize field.or.null
408   number empty$
409     'skip$
410     { "(" number * ")" * *
411       volume empty$
412         { "there's a number but no volume in " cite$ * warning$ }
413         'skip$
414       if$
415     }
416   if$
417   pages empty$
418     'skip$
419     { duplicate$ empty$
420         { pop$ format.pages }
421         { ", " * pages n.dashify * }
422       if$
423     }
424   if$
427 FUNCTION {format.chapter.pages}
428 { chapter empty$
429     'format.pages
430     { type empty$
431         { "chapter" }
432         { type "l" change.case$ }
433       if$
434       chapter tie.or.space.connect
435       pages empty$
436         'skip$
437         { ", " * format.pages * }
438       if$
439     }
440   if$
443 FUNCTION {format.in.ed.booktitle}
444 { booktitle empty$
445     { "" }
446     { editor empty$
447         { "In " booktitle emphasize * }
448         { "In " format.editors * ", " * booktitle emphasize * }
449       if$
450     }
451   if$
454 FUNCTION {format.in.booktitle.ed}
455 { booktitle empty$
456     { "" }
457     { editor empty$
458         { "in " booktitle emphasize * }
459         { "in " booktitle emphasize * ", " * format.editors * }
460       if$
461     }    
462   if$
465 FUNCTION {format.pub.address}
466 { publisher empty$
467     { "" }
468     { address empty$
469         { "(" publisher * ")" }
470         { "(" publisher * ", " * address * ")" * }
471       if$
472     }    
473   if$
476 FUNCTION {empty.misc.check}
477 { author empty$ title empty$ howpublished empty$
478   month empty$ year empty$ note empty$
479   and and and and and
480     { "all relevant fields are empty in " cite$ * warning$ }
481     'skip$
482   if$
485 FUNCTION {format.thesis.type}
486 { type empty$
487     'skip$
488     { pop$
489       type "t" change.case$
490     }
491   if$
494 FUNCTION {format.tr.number}
495 { type empty$
496     { "Technical Report" }
497     'type
498   if$
499   number empty$
500     { "t" change.case$ }
501     { number tie.or.space.connect }
502   if$
505 FUNCTION {format.article.crossref}
506 { key empty$
507     { journal empty$
508         { "need key or journal for " cite$ * " to crossref " * crossref *
509           warning$
510           ""
511         }
512         { "In {\em " journal * "\/}" * }
513       if$
514     }
515     { "In " key * }
516   if$
517   " \cite{" * crossref * "}" *
520 FUNCTION {format.crossref.editor}
521 { editor #1 "{vv~}{ll}" format.name$
522   editor num.names$ duplicate$
523   #2 >
524     { pop$ " et~al." * }
525     { #2 <
526         'skip$
527         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
528             { " et~al." * }
529             { " and " * editor #2 "{vv~}{ll}" format.name$ * }
530           if$
531         }
532       if$
533     }
534   if$
537 FUNCTION {format.book.crossref}
538 { volume empty$
539     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
540       "In "
541     }
542     { "Volume" volume tie.or.space.connect
543       " of " *
544     }
545   if$
546   editor empty$
547   editor field.or.null author field.or.null =
548   or
549     { key empty$
550         { series empty$
551             { "need editor, key, or series for " cite$ * " to crossref " *
552               crossref * warning$
553               "" *
554             }
555             { "{\em " * series * "\/}" * }
556           if$
557         }
558         { key * }
559       if$
560     }
561     { format.crossref.editor * }
562   if$
563   " \cite{" * crossref * "}" *
566 FUNCTION {format.incoll.inproc.crossref}
567 { editor empty$
568   editor field.or.null author field.or.null =
569   or
570     { key empty$
571         { booktitle empty$
572             { "need editor, key, or booktitle for " cite$ * " to crossref " *
573               crossref * warning$
574               ""
575             }
576             { "In {\em " booktitle * "\/}" * }
577           if$
578         }
579         { "In " key * }
580       if$
581     }
582     { "In " format.crossref.editor * }
583   if$
584   " \cite{" * crossref * "}" *
587 FUNCTION {article}
588 { output.bibitem
589   format.authors "author" output.check
590   new.block
591   crossref missing$
592     { journal emphasize "journal" output.check
593       format.date.bold "year" output.check
594       format.vol.num.pages output
595     }
596     { format.article.crossref output.nonnull
597       format.pages output
598     }
599   if$
600   new.block
601   note output
602   fin.entry
606 FUNCTION {book}
607 { output.bibitem
608   author empty$
609     { format.editors "author and editor" output.check }
610     { format.authors output.nonnull
611       crossref missing$
612         { "author and editor" editor either.or.check }
613         'skip$
614       if$
615     }
616   if$
617   new.block
618   format.btitle "title" output.check
619   crossref missing$
620     { format.bvolume output
621       new.block
622       format.number.series output
623       new.sentence
624       publisher "publisher" output.check
625       address output
626     }
627     { new.block
628       format.book.crossref output.nonnull
629     }
630   if$
631   format.edition output
632   format.date "year" output.check
633   new.block
634   note output
635   fin.entry
638 FUNCTION {booklet}
639 { output.bibitem
640   format.authors output
641   new.block
642   format.title "title" output.check
643   howpublished address new.block.checkb
644   howpublished output
645   address output
646   format.date output
647   new.block
648   note output
649   fin.entry
652 FUNCTION {inbook}
653 { output.bibitem
654   author empty$
655     { format.editors "author and editor" output.check }
656     { format.authors output.nonnull
657 %      crossref missing$
658 %       { "author and editor" editor either.or.check }
659 %       'skip$
660 %      if$
661     }
662   if$
663   new.block
664   format.in.booktitle.ed "title" output.check
665   crossref missing$
666     { format.pub.address "publisher" output.check
667       new.block
668       format.bvolume output
669       new.block
670       format.chapter.pages "chapter and pages" output.check
671       new.block
672       format.number.series output
673     }
674     { format.chapter.pages "chapter and pages" output.check
675       new.block
676       format.book.crossref output.nonnull
677     }
678   if$
679   format.edition output
680   format.date "year" output.check
681   new.block
682   note output
683   fin.entry
686 FUNCTION {incollection}
687 { output.bibitem
688   format.authors "author" output.check
689   new.block
690 %  format.title "title" output.check
691   new.block
692   crossref missing$
693     { format.in.booktitle.ed "booktitle" output.check
694       format.bvolume output
695       format.number.series output
696       format.chapter.pages output
697       new.sentence
698       publisher "publisher" output.check
699       address output
700       format.edition output
701       format.date "year" output.check
702     }
703     { format.incoll.inproc.crossref output.nonnull
704       format.chapter.pages output
705     }
706   if$
707   new.block
708   note output
709   fin.entry
712 FUNCTION {inproceedings}
713 { output.bibitem
714   format.authors "author" output.check
715   new.block
716   format.title "title" output.check
717   new.block
718   crossref missing$
719     { format.in.booktitle.ed "booktitle" output.check
720       format.bvolume output
721       format.number.series output
722       format.pages output
723       address empty$
724         { organization publisher new.sentence.checkb
725           organization output
726           publisher output
727           format.date "year" output.check
728         }
729         { address output.nonnull
730           format.date "year" output.check
731           new.sentence
732           organization output
733           publisher output
734         }
735       if$
736     }
737     { format.incoll.inproc.crossref output.nonnull
738       format.pages output
739     }
740   if$
741   new.block
742   note output
743   fin.entry
746 FUNCTION {conference} { inproceedings }
748 FUNCTION {manual}
749 { output.bibitem
750   author empty$
751     { organization empty$
752         'skip$
753         { organization output.nonnull
754           address output
755         }
756       if$
757     }
758     { format.authors output.nonnull }
759   if$
760   new.block
761   format.btitle "title" output.check
762   author empty$
763     { organization empty$
764         { address new.block.checka
765           address output
766         }
767         'skip$
768       if$
769     }
770     { organization address new.block.checkb
771       organization output
772       address output
773     }
774   if$
775   format.edition output
776   format.date output
777   new.block
778   note output
779   fin.entry
782 FUNCTION {mastersthesis}
783 { output.bibitem
784   format.authors "author" output.check
785   new.block
786   format.title "title" output.check
787   new.block
788   "Master's thesis" format.thesis.type output.nonnull
789   school "school" output.check
790   address output
791   format.date "year" output.check
792   new.block
793   note output
794   fin.entry
797 FUNCTION {misc}
798 { output.bibitem
799   format.authors output
800   title howpublished new.block.checkb
801   format.title output
802   howpublished new.block.checka
803   howpublished output
804   format.date output
805   new.block
806   note output
807   fin.entry
808   empty.misc.check
811 FUNCTION {url}
812 { output.bibitem
813   format.authors output
814   title howpublished new.block.checkb
815   format.title output
816   howpublished new.block.checka
817   howpublished output
818   format.date output
819   new.block
820   urldate output
821   fin.entry
822   empty.misc.check
825 FUNCTION {phdthesis}
826 { output.bibitem
827   format.authors "author" output.check
828   new.block
829   format.btitle "title" output.check
830   new.block
831   "PhD thesis" format.thesis.type output.nonnull
832   school "school" output.check
833   address output
834   format.date "year" output.check
835   new.block
836   note output
837   fin.entry
840 FUNCTION {proceedings}
841 { output.bibitem
842   editor empty$
843     { organization output }
844     { format.editors output.nonnull }
845   if$
846   new.block
847   format.btitle "title" output.check
848   format.bvolume output
849   format.number.series output
850   address empty$
851     { editor empty$
852         { publisher new.sentence.checka }
853         { organization publisher new.sentence.checkb
854           organization output
855         }
856       if$
857       publisher output
858       format.date "year" output.check
859     }
860     { address output.nonnull
861       format.date "year" output.check
862       new.sentence
863       editor empty$
864         'skip$
865         { organization output }
866       if$
867       publisher output
868     }
869   if$
870   new.block
871   note output
872   fin.entry
875 FUNCTION {techreport}
876 { output.bibitem
877   format.authors "author" output.check
878   new.block
879   format.title "title" output.check
880   new.block
881   format.tr.number output.nonnull
882   institution "institution" output.check
883   address output
884   format.date "year" output.check
885   new.block
886   note output
887   fin.entry
890 FUNCTION {unpublished}
891 { output.bibitem
892   format.authors "author" output.check
893   new.block
894   format.title "title" output.check
895   new.block
896   note "note" output.check
897   format.date output
898   fin.entry
901 FUNCTION {default.type} { misc }
903 MACRO {jan} {"January"}
905 MACRO {feb} {"February"}
907 MACRO {mar} {"March"}
909 MACRO {apr} {"April"}
911 MACRO {may} {"May"}
913 MACRO {jun} {"June"}
915 MACRO {jul} {"July"}
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."}
943 MACRO {ieeetcad}
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"}
970 READ
972 STRINGS { longest.label }
974 INTEGERS { number.label longest.label.width }
976 FUNCTION {initialize.longest.label}
977 { "" 'longest.label :=
978   #1 'number.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 :=
988     }
989     'skip$
990   if$
993 EXECUTE {initialize.longest.label}
995 ITERATE {longest.label.pass}
997 FUNCTION {begin.bib}
998 { preamble$ empty$
999     'skip$
1000     { preamble$ write$ newline$ }
1001   if$
1002   "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
1005 EXECUTE {begin.bib}
1007 EXECUTE {init.state.consts}
1009 ITERATE {call.type$}
1011 FUNCTION {end.bib}
1012 { newline$
1013   "\end{thebibliography}" write$ newline$
1016 EXECUTE {end.bib}