ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/oopseDocs/jcc.bst
Revision: 3395
Committed: Fri May 16 14:25:26 2008 UTC (16 years, 1 month ago) by gezelter
File size: 17810 byte(s)
Log Message:
OOPSE docs for version 4

File Contents

# User Rev Content
1 gezelter 3395 % BibTeX bibliography style `jcc' for J. Comp. Chem.
2     % 1/26/96 Joerg-R. Hill
3     % no output of 'title' for 'article', 'book', 'inbook', 'incollection'
4     % no output of 'note' except in 'unpublished'
5     %
6     % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
7     % Copyright (C) 1985, all rights reserved.
8     % Copying of this file is authorized only if either
9     % (1) you make absolutely no changes to your copy, including name, or
10     % (2) if you do make changes, you name it something other than
11     % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
12     % This restriction helps ensure that all standard styles are identical.
13     % The file btxbst.doc has the documentation for this style.
14     %
15     % Fixed article, book references 11/10/92---CLF
16    
17     ENTRY
18     { address
19     author
20     booktitle
21     chapter
22     edition
23     editor
24     howpublished
25     institution
26     journal
27     key
28     month
29     note
30     number
31     organization
32     pages
33     publisher
34     school
35     series
36     title
37     type
38     volume
39     year
40     }
41     {}
42     { label }
43    
44     INTEGERS { output.state before.all mid.sentence after.sentence after.block after.item author.or.editor }
45    
46     FUNCTION {init.state.consts}
47     { #0 'before.all :=
48     #1 'mid.sentence :=
49     #2 'after.sentence :=
50     #3 'after.block :=
51     #4 'after.item :=
52     }
53    
54     FUNCTION {add.semicolon}
55     { duplicate$
56     #-1 #1 substring$ "}" =
57     { #-2 #1024 substring$ ";} " * }
58     { "; " * }
59     if$
60     }
61    
62     STRINGS { s t }
63    
64     FUNCTION {output.nonnull}
65     { 's :=
66     output.state mid.sentence =
67     { ", " * write$ }
68     { output.state after.block =
69     { add.semicolon write$
70     newline$
71     "\newblock " write$
72     }
73     { output.state before.all =
74     'write$
75     { output.state after.item =
76     { " " * write$ }
77     { add.period$ " " * write$ }
78     if$
79     }
80     if$
81     }
82     if$
83     mid.sentence 'output.state :=
84     }
85     if$
86     s
87     }
88    
89     FUNCTION {output}
90     { duplicate$ empty$
91     'pop$
92     'output.nonnull
93     if$
94     }
95    
96     FUNCTION {output.check}
97     { 't :=
98     duplicate$ empty$
99     { pop$ "empty " t * " in " * cite$ * warning$ }
100     'output.nonnull
101     if$
102     }
103    
104     FUNCTION {output.bibitem}
105     { newline$
106     "\bibitem{" write$
107     cite$ write$
108     "}" write$
109     newline$
110     ""
111     before.all 'output.state :=
112     }
113    
114     FUNCTION {fin.entry}
115     { add.period$
116     write$
117     newline$
118     }
119    
120     FUNCTION {new.block}
121     { output.state before.all =
122     'skip$
123     { after.block 'output.state := }
124     if$
125     }
126    
127     FUNCTION {new.sentence}
128     { output.state after.block =
129     'skip$
130     { output.state before.all =
131     'skip$
132     { after.sentence 'output.state := }
133     if$
134     }
135     if$
136     }
137    
138     FUNCTION {new.item}
139     { duplicate$ empty$
140     { skip$ }
141     { output.state mid.sentence =
142     { after.item 'output.state := }
143     { skip$ }
144     if$
145     }
146     if$
147     }
148    
149     FUNCTION {not}
150     { { #0 }
151     { #1 }
152     if$
153     }
154    
155     FUNCTION {and}
156     { 'skip$
157     { pop$ #0 }
158     if$
159     }
160    
161     FUNCTION {or}
162     { { pop$ #1 }
163     'skip$
164     if$
165     }
166    
167     FUNCTION {new.block.checka}
168     { empty$
169     'skip$
170     'new.block
171     if$
172     }
173    
174     FUNCTION {new.block.checkb}
175     { empty$
176     swap$ empty$
177     and
178     'skip$
179     'new.block
180     if$
181     }
182    
183     FUNCTION {new.sentence.checka}
184     { empty$
185     'skip$
186     'new.sentence
187     if$
188     }
189    
190     FUNCTION {new.sentence.checkb}
191     { empty$
192     swap$ empty$
193     and
194     'skip$
195     'new.sentence
196     if$
197     }
198    
199     FUNCTION {new.item.checka}
200     { empty$
201     'skip$
202     'new.item
203     if$
204     }
205    
206     FUNCTION {field.or.null}
207     { duplicate$ empty$
208     { pop$ "" }
209     'skip$
210     if$
211     }
212    
213     FUNCTION {emphasize}
214     { duplicate$ empty$
215     { pop$ "" }
216     { "{\em " swap$ * "}" * }
217     if$
218     }
219    
220     FUNCTION {boldface}
221     { duplicate$ empty$
222     { pop$ "" }
223     { "{\bf " swap$ * "}" * }
224     if$
225     }
226    
227     FUNCTION {paren}
228     { duplicate$ empty$
229     { pop$ "" }
230     { "(" swap$ * ")" * }
231     if$
232     }
233    
234     INTEGERS { nameptr namesleft numnames }
235    
236     FUNCTION {format.names}
237     { 's :=
238     #1 'nameptr :=
239     s num.names$ 'numnames :=
240     numnames 'namesleft :=
241     { namesleft #0 > }
242     { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
243     nameptr #1 >
244     { namesleft #1 >
245     { ", " * t * }
246     { numnames #2 >
247     { "," * }
248     'skip$
249     if$
250     t "others" =
251     { " et~al." * }
252     { " and " * t * }
253     if$
254     }
255     if$
256     }
257     't
258     if$
259     nameptr #1 + 'nameptr :=
260     namesleft #1 - 'namesleft :=
261     }
262     while$
263     }
264    
265     FUNCTION {format.authors}
266     { author empty$
267     { "" }
268     { #1 'author.or.editor :=
269     author format.names }
270     if$
271     }
272    
273     FUNCTION {format.editors}
274     { editor empty$
275     { "" }
276     { #2 'author.or.editor :=
277     editor format.names
278     editor num.names$ #1 >
279     { ", Eds." * }
280     { ", Ed." * }
281     if$
282     }
283     if$
284     }
285    
286     FUNCTION {format.title}
287     { title empty$
288     { "" }
289     { title "t" change.case$ }
290     if$
291     }
292    
293     FUNCTION {n.dashify}
294     { 't :=
295     ""
296     { t empty$ not }
297     { t #1 #1 substring$ "-" =
298     { t #1 #2 substring$ "--" = not
299     { "--" *
300     t #2 global.max$ substring$ 't :=
301     }
302     { { t #1 #1 substring$ "-" = }
303     { "-" *
304     t #2 global.max$ substring$ 't :=
305     }
306     while$
307     }
308     if$
309     }
310     { t #1 #1 substring$ *
311     t #2 global.max$ substring$ 't :=
312     }
313     if$
314     }
315     while$
316     }
317    
318     FUNCTION {format.date}
319     { year empty$
320     { month empty$
321     { "" }
322     { "there's a month but no year in " cite$ * warning$
323     month
324     }
325     if$
326     }
327     { month empty$
328     { year paren }
329     { month " " * year paren }
330     if$
331     }
332     if$
333     }
334    
335     FUNCTION {format.bdate}
336     { year empty$
337     { "there's no year in " cite$ * warning$ }
338     'year
339     if$
340     }
341    
342     FUNCTION {format.btitle}
343     { title emphasize
344     }
345    
346     FUNCTION {tie.or.space.connect}
347     { duplicate$ text.length$ #3 <
348     { "~" }
349     { " " }
350     if$
351     swap$ * *
352     }
353    
354     FUNCTION {either.or.check}
355     { empty$
356     'pop$
357     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
358     if$
359     }
360    
361     FUNCTION {format.bvolume}
362     { volume empty$
363     { "" }
364     { "Vol. " volume tie.or.space.connect
365     series empty$
366     'skip$
367     { " of " * series emphasize * }
368     if$
369     "volume and number" number either.or.check
370     }
371     if$
372     }
373    
374     FUNCTION {format.number.series}
375     { volume empty$
376     { number empty$
377     { series field.or.null }
378     { output.state mid.sentence =
379     { "number" }
380     { "Number" }
381     if$
382     number tie.or.space.connect
383     series empty$
384     { "there's a number but no series in " cite$ * warning$ }
385     { " in " * series * }
386     if$
387     }
388     if$
389     }
390     { "" }
391     if$
392     }
393    
394     FUNCTION {format.edition}
395     { edition empty$
396     { "" }
397     { output.state mid.sentence =
398     { edition "l" change.case$ " ed." * }
399     { edition "t" change.case$ " ed." * }
400     if$
401     }
402     if$
403     }
404    
405     INTEGERS { multiresult }
406    
407     FUNCTION {multi.page.check}
408     { 't :=
409     #0 'multiresult :=
410     { multiresult not
411     t empty$ not
412     and
413     }
414     { t #1 #1 substring$
415     duplicate$ "-" =
416     swap$ duplicate$ "," =
417     swap$ "+" =
418     or or
419     { #1 'multiresult := }
420     { t #2 global.max$ substring$ 't := }
421     if$
422     }
423     while$
424     multiresult
425     }
426    
427     FUNCTION {format.pages}
428     { pages empty$
429     { "" }
430     { pages multi.page.check
431     { "pages" pages n.dashify tie.or.space.connect }
432     { "page" pages tie.or.space.connect }
433     if$
434     }
435     if$
436     }
437    
438     FUNCTION {format.vol.num.pages}
439     { volume boldface field.or.null
440     number empty$
441     'skip$
442     { "(" number * ")" * *
443     volume empty$
444     { "there's a number but no volume in " cite$ * warning$ }
445     'skip$
446     if$
447     }
448     if$
449     pages empty$
450     'skip$
451     { duplicate$ empty$
452     { pop$ format.pages }
453     { ", " * pages n.dashify * }
454     if$
455     }
456     if$
457     }
458    
459     FUNCTION {format.chapter.pages}
460     { chapter empty$
461     'format.pages
462     { type empty$
463     { "chapter" }
464     { type "l" change.case$ }
465     if$
466     chapter tie.or.space.connect
467     pages empty$
468     'skip$
469     { ", " * format.pages * }
470     if$
471     }
472     if$
473     }
474    
475     FUNCTION {format.in.ed.booktitle}
476     { booktitle empty$
477     { "" }
478     { editor empty$
479     { "In " booktitle emphasize * }
480     { "In " format.editors * ", " * booktitle emphasize * }
481     if$
482     }
483     if$
484     }
485    
486     FUNCTION {format.in.booktitle.ed}
487     { booktitle empty$
488     { "" }
489     { editor empty$
490     { "In " booktitle emphasize * }
491     { "In " booktitle emphasize * ", " * format.editors * }
492     if$
493     }
494     if$
495     }
496    
497     FUNCTION {format.pub.address}
498     { publisher empty$
499     { "" }
500     { address empty$
501     { publisher }
502     { publisher ", " * address *}
503     if$
504     }
505     if$
506     }
507    
508     FUNCTION {empty.misc.check}
509     { author empty$ title empty$ howpublished empty$
510     month empty$ year empty$ note empty$
511     and and and and and
512     { "all relevant fields are empty in " cite$ * warning$ }
513     'skip$
514     if$
515     }
516    
517     FUNCTION {format.thesis.type}
518     { type empty$
519     'skip$
520     { pop$
521     type "t" change.case$
522     }
523     if$
524     }
525    
526     FUNCTION {format.tr.number}
527     { type empty$
528     { "Technical Report" }
529     'type
530     if$
531     number empty$
532     { "t" change.case$ }
533     { number tie.or.space.connect }
534     if$
535     }
536    
537     FUNCTION {format.article.crossref}
538     { key empty$
539     { journal empty$
540     { "need key or journal for " cite$ * " to crossref " * crossref *
541     warning$
542     ""
543     }
544     { "In {\em " journal * "\/}" * }
545     if$
546     }
547     { "In " key * }
548     if$
549     " \cite{" * crossref * "}" *
550     }
551    
552     FUNCTION {format.crossref.editor}
553     { editor #1 "{vv~}{ll}" format.name$
554     editor num.names$ duplicate$
555     #2 >
556     { pop$ " et~al." * }
557     { #2 <
558     'skip$
559     { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
560     { " et~al." * }
561     { " and " * editor #2 "{vv~}{ll}" format.name$ * }
562     if$
563     }
564     if$
565     }
566     if$
567     }
568    
569     FUNCTION {format.book.crossref}
570     { volume empty$
571     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
572     "In "
573     }
574     { "Volume" volume tie.or.space.connect
575     " of " *
576     }
577     if$
578     editor empty$
579     editor field.or.null author field.or.null =
580     or
581     { key empty$
582     { series empty$
583     { "need editor, key, or series for " cite$ * " to crossref " *
584     crossref * warning$
585     "" *
586     }
587     { "{\em " * series * "\/}" * }
588     if$
589     }
590     { key * }
591     if$
592     }
593     { format.crossref.editor * }
594     if$
595     " \cite{" * crossref * "}" *
596     }
597    
598     FUNCTION {format.incoll.inproc.crossref}
599     { editor empty$
600     editor field.or.null author field.or.null =
601     or
602     { key empty$
603     { booktitle empty$
604     { "need editor, key, or booktitle for " cite$ * " to crossref " *
605     crossref * warning$
606     ""
607     }
608     { "In {\em " booktitle * "\/}" * }
609     if$
610     }
611     { "In " key * }
612     if$
613     }
614     { "In " format.crossref.editor * }
615     if$
616     " \cite{" * crossref * "}" *
617     }
618    
619     FUNCTION {article}
620     { output.bibitem
621     format.authors "author" output.check
622     crossref missing$
623     { journal emphasize "journal" output.check
624     format.vol.num.pages output new.item
625     format.date "year" output.check
626     }
627     { format.article.crossref output.nonnull
628     format.pages output
629     }
630     if$
631     fin.entry
632     }
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 "title" output.check
646     crossref missing$
647     { format.bvolume output
648     format.number.series output
649     format.pub.address "publisher" output.check
650     }
651     { format.book.crossref output.nonnull }
652     if$
653     format.edition output
654     format.bdate "year" output.check
655     new.block
656     fin.entry
657     }
658    
659     FUNCTION {booklet}
660     { output.bibitem
661     format.authors output new.item
662     format.title "title" output.check
663     howpublished address new.block.checkb
664     howpublished output
665     address output
666     format.date output
667     new.block
668     fin.entry
669     }
670    
671     FUNCTION {inbook}
672     { output.bibitem
673     author empty$
674     { format.editors "author and editor" output.check }
675     { format.authors output.nonnull }
676     if$
677     format.in.booktitle.ed "title" output.check
678     crossref missing$
679     { format.pub.address "publisher" output.check
680     format.bdate "year" output.check
681     new.block
682     format.bvolume output
683     new.block
684     format.chapter.pages "chapter and pages" output.check
685     new.block
686     format.number.series output
687     }
688     { format.chapter.pages "chapter and pages" output.check
689     new.block
690     format.book.crossref output.nonnull
691     }
692     if$
693     format.edition output
694     new.block
695     fin.entry
696     }
697    
698     FUNCTION {incollection}
699     { output.bibitem
700     format.authors "author" output.check new.item
701     crossref missing$
702     { format.in.booktitle.ed "booktitle" output.check
703     format.bvolume output
704     format.number.series output
705     new.block
706     format.pub.address "publisher" output.check
707     format.edition output
708     format.bdate "year" output.check
709     new.block
710     format.chapter.pages output
711     }
712     { format.incoll.inproc.crossref output.nonnull
713     format.chapter.pages output
714     }
715     if$
716     new.block
717     fin.entry
718     }
719    
720     FUNCTION {inproceedings}
721     { output.bibitem
722     format.authors "author" output.check new.item
723     crossref missing$
724     { format.in.ed.booktitle "booktitle" output.check
725     format.bvolume output
726     format.number.series output
727     format.pages output
728     address empty$
729     { organization publisher new.sentence.checkb
730     organization output
731     publisher output
732     format.bdate "year" output.check
733     }
734     { address output.nonnull
735     format.bdate "year" output.check
736     new.sentence
737     organization output
738     publisher output
739     }
740     if$
741     }
742     { format.incoll.inproc.crossref output.nonnull
743     format.pages output
744     }
745     if$
746     new.block
747     fin.entry
748     }
749    
750     FUNCTION {conference} { inproceedings }
751    
752     FUNCTION {manual}
753     { output.bibitem
754     format.title "title" output.check new.sentence
755     author empty$
756     { organization empty$
757     'skip$
758     { organization output.nonnull
759     address output
760     }
761     if$
762     }
763     { format.authors output.nonnull new.item }
764     if$
765     author empty$
766     { organization empty$
767     { address new.block.checka
768     address output
769     }
770     'skip$
771     if$
772     }
773     { organization address new.block.checkb
774     organization output
775     address output
776     }
777     if$
778     format.edition output
779     format.date output
780     new.block
781     fin.entry
782     }
783    
784     FUNCTION {mastersthesis}
785     { output.bibitem
786     format.authors "author" output.check new.item
787     format.title "title" output.check new.item
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     fin.entry
794     }
795    
796     FUNCTION {misc}
797     { output.bibitem
798     format.authors output
799     format.title output
800     howpublished new.item.checka
801     howpublished output
802     format.bdate output
803     new.block
804     fin.entry
805     empty.misc.check
806     }
807    
808     FUNCTION {phdthesis}
809     { output.bibitem
810     format.authors "author" output.check new.item
811     format.btitle "title" output.check new.item
812     "PhD thesis" format.thesis.type output.nonnull
813     school "school" output.check
814     address output
815     format.date "year" output.check
816     new.block
817     fin.entry
818     }
819    
820     FUNCTION {proceedings}
821     { output.bibitem
822     editor empty$
823     { organization output }
824     { format.editors output.nonnull new.item }
825     if$
826     new.block
827     format.btitle "title" output.check
828     format.bvolume output
829     format.number.series output
830     address empty$
831     { editor empty$
832     { publisher new.sentence.checka }
833     { organization publisher new.sentence.checkb
834     organization output
835     }
836     if$
837     publisher output
838     format.date "year" output.check
839     }
840     { address output.nonnull
841     format.date "year" output.check
842     new.sentence
843     editor empty$
844     'skip$
845     { organization output }
846     if$
847     publisher output
848     }
849     if$
850     new.block
851     fin.entry
852     }
853    
854     FUNCTION {techreport}
855     { output.bibitem
856     format.authors "author" output.check new.item
857     format.title "title" output.check new.item
858     format.tr.number output.nonnull
859     institution "institution" output.check
860     address output
861     format.date "year" output.check
862     new.block
863     fin.entry
864     }
865    
866     FUNCTION {unpublished}
867     { output.bibitem
868     format.authors "author" output.check new.item
869     % format.title "title" output.check new.item
870     note "note" output.check
871     format.date output
872     fin.entry
873     }
874    
875     FUNCTION {default.type} { misc }
876    
877     MACRO {jan} {"January"}
878    
879     MACRO {feb} {"February"}
880    
881     MACRO {mar} {"March"}
882    
883     MACRO {apr} {"April"}
884    
885     MACRO {may} {"May"}
886    
887     MACRO {jun} {"June"}
888    
889     MACRO {jul} {"July"}
890    
891     MACRO {aug} {"August"}
892    
893     MACRO {sep} {"September"}
894    
895     MACRO {oct} {"October"}
896    
897     MACRO {nov} {"November"}
898    
899     MACRO {dec} {"December"}
900    
901     MACRO {bbrc} {"Biochem. Biophys. Res. Commun."}
902    
903     MACRO {jacs} {"J. Amer. Chem. Soc."}
904    
905     MACRO {jbc} {"J. Biol. Chem."}
906    
907     MACRO {pnas} {"Proc. Natl. Acad. Sci."}
908    
909     MACRO {jmb} {"J. Mol. Biol."}
910    
911     MACRO {embo} {"EMBO J."}
912    
913     MACRO {tibs} {"Trends Biochem. Sci."}
914    
915     MACRO {protsfg} {"Proteins: Struct. Func. Gen."}
916    
917     MACRO {ieeetcad}
918     {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
919    
920     MACRO {ipl} {"Information Processing Letters"}
921    
922     MACRO {jacm} {"Journal of the ACM"}
923    
924     MACRO {jcss} {"Journal of Computer and System Sciences"}
925    
926     MACRO {scp} {"Science of Computer Programming"}
927    
928     MACRO {sicomp} {"SIAM Journal on Computing"}
929    
930     MACRO {tocs} {"ACM Transactions on Computer Systems"}
931    
932     MACRO {tods} {"ACM Transactions on Database Systems"}
933    
934     MACRO {tog} {"ACM Transactions on Graphics"}
935    
936     MACRO {toms} {"ACM Transactions on Mathematical Software"}
937    
938     MACRO {toois} {"ACM Transactions on Office Information Systems"}
939    
940     MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
941    
942     MACRO {tcs} {"Theoretical Computer Science"}
943    
944     READ
945    
946     STRINGS { longest.label }
947    
948     INTEGERS { number.label longest.label.width }
949    
950     FUNCTION {initialize.longest.label}
951     { "" 'longest.label :=
952     #1 'number.label :=
953     #0 'longest.label.width :=
954     }
955    
956     FUNCTION {longest.label.pass}
957     { number.label int.to.str$ 'label :=
958     number.label #1 + 'number.label :=
959     label width$ longest.label.width >
960     { label 'longest.label :=
961     label width$ 'longest.label.width :=
962     }
963     'skip$
964     if$
965     }
966    
967     EXECUTE {initialize.longest.label}
968    
969     ITERATE {longest.label.pass}
970    
971     FUNCTION {begin.bib}
972     { preamble$ empty$
973     'skip$
974     { preamble$ write$ newline$ }
975     if$
976     "\begin{thebibliography}{" longest.label * "}" * write$ newline$
977     }
978    
979     EXECUTE {begin.bib}
980    
981     EXECUTE {init.state.consts}
982    
983     ITERATE {call.type$}
984    
985     FUNCTION {end.bib}
986     { newline$
987     "\end{thebibliography}" write$ newline$
988     }
989    
990     EXECUTE {end.bib}