2 % ---------------------------------------------------------------
\r
4 % $Id: latex8.bst,v 1.1 1995/09/15 15:13:49 ienne Exp $
\r
6 % by Paolo.Ienne@di.epfl.ch
\r
9 % ---------------------------------------------------------------
\r
11 % no guarantee is given that the format corresponds perfectly to
\r
12 % IEEE 8.5" x 11" Proceedings, but most features should be ok.
\r
14 % ---------------------------------------------------------------
\r
16 % `latex8' from BibTeX standard bibliography style `abbrv'
\r
17 % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
\r
18 % Copyright (C) 1985, all rights reserved.
\r
19 % Copying of this file is authorized only if either
\r
20 % (1) you make absolutely no changes to your copy, including name, or
\r
21 % (2) if you do make changes, you name it something other than
\r
22 % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
\r
23 % This restriction helps ensure that all standard styles are identical.
\r
24 % The file btxbst.doc has the documentation for this style.
\r
53 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
\r
55 FUNCTION {init.state.consts}
\r
58 #2 'after.sentence :=
\r
64 FUNCTION {output.nonnull}
\r
66 output.state mid.sentence =
\r
68 { output.state after.block =
\r
69 { add.period$ write$
\r
73 { output.state before.all =
\r
75 { add.period$ " " * write$ }
\r
79 mid.sentence 'output.state :=
\r
92 FUNCTION {output.check}
\r
95 { pop$ "empty " t * " in " * cite$ * warning$ }
\r
100 FUNCTION {output.bibitem}
\r
107 before.all 'output.state :=
\r
110 FUNCTION {fin.entry}
\r
116 FUNCTION {new.block}
\r
117 { output.state before.all =
\r
119 { after.block 'output.state := }
\r
123 FUNCTION {new.sentence}
\r
124 { output.state after.block =
\r
126 { output.state before.all =
\r
128 { after.sentence 'output.state := }
\r
152 FUNCTION {new.block.checka}
\r
159 FUNCTION {new.block.checkb}
\r
168 FUNCTION {new.sentence.checka}
\r
175 FUNCTION {new.sentence.checkb}
\r
184 FUNCTION {field.or.null}
\r
185 { duplicate$ empty$
\r
191 FUNCTION {emphasize}
\r
192 { duplicate$ empty$
\r
194 { "{\em " swap$ * "}" * }
\r
198 INTEGERS { nameptr namesleft numnames }
\r
200 FUNCTION {format.names}
\r
203 s num.names$ 'numnames :=
\r
204 numnames 'namesleft :=
\r
206 { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
\r
223 nameptr #1 + 'nameptr :=
\r
225 namesleft #1 - 'namesleft :=
\r
230 FUNCTION {format.authors}
\r
233 { author format.names }
\r
237 FUNCTION {format.editors}
\r
240 { editor format.names
\r
241 editor num.names$ #1 >
\r
249 FUNCTION {format.title}
\r
252 { title "t" change.case$ }
\r
256 FUNCTION {n.dashify}
\r
260 { t #1 #1 substring$ "-" =
\r
261 { t #1 #2 substring$ "--" = not
\r
263 t #2 global.max$ substring$ 't :=
\r
265 { { t #1 #1 substring$ "-" = }
\r
267 t #2 global.max$ substring$ 't :=
\r
273 { t #1 #1 substring$ *
\r
274 t #2 global.max$ substring$ 't :=
\r
281 FUNCTION {format.date}
\r
285 { "there's a month but no year in " cite$ * warning$
\r
292 { month " " * year * }
\r
298 FUNCTION {format.btitle}
\r
302 FUNCTION {tie.or.space.connect}
\r
303 { duplicate$ text.length$ #3 <
\r
310 FUNCTION {either.or.check}
\r
313 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
\r
317 FUNCTION {format.bvolume}
\r
320 { "volume" volume tie.or.space.connect
\r
323 { " of " * series emphasize * }
\r
325 "volume and number" number either.or.check
\r
330 FUNCTION {format.number.series}
\r
333 { series field.or.null }
\r
334 { output.state mid.sentence =
\r
338 number tie.or.space.connect
\r
340 { "there's a number but no series in " cite$ * warning$ }
\r
341 { " in " * series * }
\r
350 FUNCTION {format.edition}
\r
353 { output.state mid.sentence =
\r
354 { edition "l" change.case$ " edition" * }
\r
355 { edition "t" change.case$ " edition" * }
\r
361 INTEGERS { multiresult }
\r
363 FUNCTION {multi.page.check}
\r
370 { t #1 #1 substring$
\r
372 swap$ duplicate$ "," =
\r
375 { #1 'multiresult := }
\r
376 { t #2 global.max$ substring$ 't := }
\r
383 FUNCTION {format.pages}
\r
386 { pages multi.page.check
\r
387 { "pages" pages n.dashify tie.or.space.connect }
\r
388 { "page" pages tie.or.space.connect }
\r
394 FUNCTION {format.vol.num.pages}
\r
395 { volume field.or.null
\r
398 { "(" number * ")" * *
\r
400 { "there's a number but no volume in " cite$ * warning$ }
\r
407 { duplicate$ empty$
\r
408 { pop$ format.pages }
\r
409 { ":" * pages n.dashify * }
\r
415 FUNCTION {format.chapter.pages}
\r
420 { type "l" change.case$ }
\r
422 chapter tie.or.space.connect
\r
425 { ", " * format.pages * }
\r
431 FUNCTION {format.in.ed.booktitle}
\r
435 { "In " booktitle emphasize * }
\r
436 { "In " format.editors * ", " * booktitle emphasize * }
\r
442 FUNCTION {empty.misc.check}
\r
444 { author empty$ title empty$ howpublished empty$
\r
445 month empty$ year empty$ note empty$
\r
446 and and and and and
\r
448 { "all relevant fields are empty in " cite$ * warning$ }
\r
453 FUNCTION {format.thesis.type}
\r
457 type "t" change.case$
\r
462 FUNCTION {format.tr.number}
\r
464 { "Technical Report" }
\r
468 { "t" change.case$ }
\r
469 { number tie.or.space.connect }
\r
473 FUNCTION {format.article.crossref}
\r
476 { "need key or journal for " cite$ * " to crossref " * crossref *
\r
480 { "In {\em " journal * "\/}" * }
\r
485 " \cite{" * crossref * "}" *
\r
488 FUNCTION {format.crossref.editor}
\r
489 { editor #1 "{vv~}{ll}" format.name$
\r
490 editor num.names$ duplicate$
\r
492 { pop$ " et~al." * }
\r
495 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
\r
497 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
\r
505 FUNCTION {format.book.crossref}
\r
507 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
\r
510 { "Volume" volume tie.or.space.connect
\r
515 editor field.or.null author field.or.null =
\r
519 { "need editor, key, or series for " cite$ * " to crossref " *
\r
520 crossref * warning$
\r
523 { "{\em " * series * "\/}" * }
\r
529 { format.crossref.editor * }
\r
531 " \cite{" * crossref * "}" *
\r
534 FUNCTION {format.incoll.inproc.crossref}
\r
536 editor field.or.null author field.or.null =
\r
540 { "need editor, key, or booktitle for " cite$ * " to crossref " *
\r
541 crossref * warning$
\r
544 { "In {\em " booktitle * "\/}" * }
\r
550 { "In " format.crossref.editor * }
\r
552 " \cite{" * crossref * "}" *
\r
557 format.authors "author" output.check
\r
559 format.title "title" output.check
\r
562 { journal emphasize "journal" output.check
\r
563 format.vol.num.pages output
\r
564 format.date "year" output.check
\r
566 { format.article.crossref output.nonnull
\r
567 format.pages output
\r
578 { format.editors "author and editor" output.check }
\r
579 { format.authors output.nonnull
\r
581 { "author and editor" editor either.or.check }
\r
587 format.btitle "title" output.check
\r
589 { format.bvolume output
\r
591 format.number.series output
\r
593 publisher "publisher" output.check
\r
597 format.book.crossref output.nonnull
\r
600 format.edition output
\r
601 format.date "year" output.check
\r
609 format.authors output
\r
611 format.title "title" output.check
\r
612 howpublished address new.block.checkb
\r
613 howpublished output
\r
624 { format.editors "author and editor" output.check }
\r
625 { format.authors output.nonnull
\r
628 { "author and editor" editor either.or.check }
\r
634 format.btitle "title" output.check
\r
636 { format.bvolume output
\r
637 format.chapter.pages "chapter and pages" output.check
\r
639 format.number.series output
\r
641 publisher "publisher" output.check
\r
644 { format.chapter.pages "chapter and pages" output.check
\r
646 format.book.crossref output.nonnull
\r
649 format.edition output
\r
650 format.date "year" output.check
\r
656 FUNCTION {incollection}
\r
658 format.authors "author" output.check
\r
660 format.title "title" output.check
\r
663 { format.in.ed.booktitle "booktitle" output.check
\r
664 format.bvolume output
\r
665 format.number.series output
\r
666 format.chapter.pages output
\r
668 publisher "publisher" output.check
\r
670 format.edition output
\r
671 format.date "year" output.check
\r
673 { format.incoll.inproc.crossref output.nonnull
\r
674 format.chapter.pages output
\r
682 FUNCTION {inproceedings}
\r
684 format.authors "author" output.check
\r
686 format.title "title" output.check
\r
689 { format.in.ed.booktitle "booktitle" output.check
\r
690 format.bvolume output
\r
691 format.number.series output
\r
692 format.pages output
\r
694 { organization publisher new.sentence.checkb
\r
695 organization output
\r
697 format.date "year" output.check
\r
699 { address output.nonnull
\r
700 format.date "year" output.check
\r
702 organization output
\r
707 { format.incoll.inproc.crossref output.nonnull
\r
708 format.pages output
\r
716 FUNCTION {conference} { inproceedings }
\r
721 { organization empty$
\r
723 { organization output.nonnull
\r
728 { format.authors output.nonnull }
\r
731 format.btitle "title" output.check
\r
733 { organization empty$
\r
734 { address new.block.checka
\r
740 { organization address new.block.checkb
\r
741 organization output
\r
745 format.edition output
\r
752 FUNCTION {mastersthesis}
\r
754 format.authors "author" output.check
\r
756 format.title "title" output.check
\r
758 "Master's thesis" format.thesis.type output.nonnull
\r
759 school "school" output.check
\r
761 format.date "year" output.check
\r
769 format.authors output
\r
770 title howpublished new.block.checkb
\r
771 format.title output
\r
772 howpublished new.block.checka
\r
773 howpublished output
\r
781 FUNCTION {phdthesis}
\r
783 format.authors "author" output.check
\r
785 format.btitle "title" output.check
\r
787 "PhD thesis" format.thesis.type output.nonnull
\r
788 school "school" output.check
\r
790 format.date "year" output.check
\r
796 FUNCTION {proceedings}
\r
799 { organization output }
\r
800 { format.editors output.nonnull }
\r
804 format.btitle "title" output.check
\r
805 format.bvolume output
\r
806 format.number.series output
\r
809 { publisher new.sentence.checka }
\r
810 { organization publisher new.sentence.checkb
\r
811 organization output
\r
815 format.date "year" output.check
\r
817 { address output.nonnull
\r
818 format.date "year" output.check
\r
822 { organization output }
\r
832 FUNCTION {techreport}
\r
834 format.authors "author" output.check
\r
836 format.title "title" output.check
\r
838 format.tr.number output.nonnull
\r
839 institution "institution" output.check
\r
841 format.date "year" output.check
\r
847 FUNCTION {unpublished}
\r
849 format.authors "author" output.check
\r
851 format.title "title" output.check
\r
853 note "note" output.check
\r
858 FUNCTION {default.type} { misc }
\r
860 MACRO {jan} {"Jan."}
\r
862 MACRO {feb} {"Feb."}
\r
864 MACRO {mar} {"Mar."}
\r
866 MACRO {apr} {"Apr."}
\r
868 MACRO {may} {"May"}
\r
870 MACRO {jun} {"June"}
\r
872 MACRO {jul} {"July"}
\r
874 MACRO {aug} {"Aug."}
\r
876 MACRO {sep} {"Sept."}
\r
878 MACRO {oct} {"Oct."}
\r
880 MACRO {nov} {"Nov."}
\r
882 MACRO {dec} {"Dec."}
\r
884 MACRO {acmcs} {"ACM Comput. Surv."}
\r
886 MACRO {acta} {"Acta Inf."}
\r
888 MACRO {cacm} {"Commun. ACM"}
\r
890 MACRO {ibmjrd} {"IBM J. Res. Dev."}
\r
892 MACRO {ibmsj} {"IBM Syst.~J."}
\r
894 MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
\r
896 MACRO {ieeetc} {"IEEE Trans. Comput."}
\r
899 {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
\r
901 MACRO {ipl} {"Inf. Process. Lett."}
\r
903 MACRO {jacm} {"J.~ACM"}
\r
905 MACRO {jcss} {"J.~Comput. Syst. Sci."}
\r
907 MACRO {scp} {"Sci. Comput. Programming"}
\r
909 MACRO {sicomp} {"SIAM J. Comput."}
\r
911 MACRO {tocs} {"ACM Trans. Comput. Syst."}
\r
913 MACRO {tods} {"ACM Trans. Database Syst."}
\r
915 MACRO {tog} {"ACM Trans. Gr."}
\r
917 MACRO {toms} {"ACM Trans. Math. Softw."}
\r
919 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
\r
921 MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
\r
923 MACRO {tcs} {"Theoretical Comput. Sci."}
\r
934 FUNCTION {chop.word}
\r
937 s #1 len substring$ =
\r
938 { s len #1 + global.max$ substring$ }
\r
943 FUNCTION {sort.format.names}
\r
947 s num.names$ 'numnames :=
\r
948 numnames 'namesleft :=
\r
954 s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
\r
955 nameptr numnames = t "others" = and
\r
959 nameptr #1 + 'nameptr :=
\r
960 namesleft #1 - 'namesleft :=
\r
965 FUNCTION {sort.format.title}
\r
969 "The " #4 t chop.word
\r
973 #1 global.max$ substring$
\r
976 FUNCTION {author.sort}
\r
979 { "to sort, need author or key in " cite$ * warning$
\r
985 { author sort.format.names }
\r
989 FUNCTION {author.editor.sort}
\r
993 { "to sort, need author, editor, or key in " cite$ * warning$
\r
999 { editor sort.format.names }
\r
1002 { author sort.format.names }
\r
1006 FUNCTION {author.organization.sort}
\r
1009 { organization empty$
\r
1011 { "to sort, need author, organization, or key in " cite$ * warning$
\r
1017 { "The " #4 organization chop.word sortify }
\r
1020 { author sort.format.names }
\r
1024 FUNCTION {editor.organization.sort}
\r
1026 { organization empty$
\r
1028 { "to sort, need editor, organization, or key in " cite$ * warning$
\r
1034 { "The " #4 organization chop.word sortify }
\r
1037 { editor sort.format.names }
\r
1041 FUNCTION {presort}
\r
1045 'author.editor.sort
\r
1046 { type$ "proceedings" =
\r
1047 'editor.organization.sort
\r
1048 { type$ "manual" =
\r
1049 'author.organization.sort
\r
1058 year field.or.null sortify
\r
1062 title field.or.null
\r
1065 #1 entry.max$ substring$
\r
1073 STRINGS { longest.label }
\r
1075 INTEGERS { number.label longest.label.width }
\r
1077 FUNCTION {initialize.longest.label}
\r
1078 { "" 'longest.label :=
\r
1079 #1 'number.label :=
\r
1080 #0 'longest.label.width :=
\r
1083 FUNCTION {longest.label.pass}
\r
1084 { number.label int.to.str$ 'label :=
\r
1085 number.label #1 + 'number.label :=
\r
1086 label width$ longest.label.width >
\r
1087 { label 'longest.label :=
\r
1088 label width$ 'longest.label.width :=
\r
1094 EXECUTE {initialize.longest.label}
\r
1096 ITERATE {longest.label.pass}
\r
1098 FUNCTION {begin.bib}
\r
1099 { preamble$ empty$
\r
1101 { preamble$ write$ newline$ }
\r
1103 "\begin{thebibliography}{" longest.label *
\r
1104 "}\setlength{\itemsep}{-1ex}\small" * write$ newline$
\r
1107 EXECUTE {begin.bib}
\r
1109 EXECUTE {init.state.consts}
\r
1111 ITERATE {call.type$}
\r
1113 FUNCTION {end.bib}
\r
1115 "\end{thebibliography}" write$ newline$
\r
1120 % end of file latex8.bst
\r
1121 % ---------------------------------------------------------------
\r