2 %% This is file `natbib.bst', generated
\r
3 %% on <1994/9/16> with the docstrip utility (2.2h).
\r
5 %% The original source files were:
\r
7 %% genbst.mbs (with options: `ay,nat,seq-lab,nm-rev,dt-beg,yr-par,vol-bf,
\r
8 %% volp-com,etal-it')
\r
9 %% ----------------------------------------
\r
10 %% *** Personal bib style, PWD ***
\r
12 %% (Here are the specifications of the source file)
\r
13 %% \ProvidesFile{genbst.mbs}[1994/09/16 1.5 (PWD)]
\r
14 %% For use with BibTeX version 0.99a or later
\r
15 %% and with LaTeX 2.09 or 2e
\r
16 %%-------------------------------------------------------------------
\r
18 %% This file may be used for non-profit purposes.
\r
19 %% It may not be distributed in exchange for money,
\r
20 %% other than distribution costs.
\r
22 %% The author provides it `as is' and does not guarantee it in any way.
\r
24 %% Copyright (C) 1994 Patrick W. Daly
\r
25 %% Max-Planck-Institut f\"ur Aeronomie
\r
27 %% D-37189 Katlenburg-Lindau
\r
31 %% SPAN-- nsp::linmpi::daly (note nsp also known as ecd1)
\r
32 %% Internet-- daly@linmpi.dnet.gwdg.de
\r
33 %%-----------------------------------------------------------
\r
35 %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
\r
36 %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
\r
37 %% Digits \0\1\2\3\4\5\6\7\8\9
\r
38 %% Exclamation \! Double quote \" Hash (number) \#
\r
39 %% Dollar \$ Percent \% Ampersand \&
\r
40 %% Acute accent \' Left paren \( Right paren \)
\r
41 %% Asterisk \* Plus \+ Comma \,
\r
42 %% Minus \- Point \. Solidus \/
\r
43 %% Colon \: Semicolon \; Less than \<
\r
44 %% Equals \= Greater than \> Question mark \?
\r
45 %% Commercial at \@ Left bracket \[ Backslash \\
\r
46 %% Right bracket \] Circumflex \^ Underscore \_
\r
47 %% Grave accent \` Left brace \{ Vertical bar \|
\r
48 %% Right brace \} Tilde \~}
\r
49 %%---------------------------------------------------------------------
\r
50 % This is an author-year citation style bibliography. As such, it is
\r
51 % non-standard LaTeX, and requires a special package file to function properly.
\r
52 % Such a package is natbib.sty by Patrick W. Daly
\r
53 % The form of the \bibitem entries is
\r
54 % \bibitem[Jones et al.(1990)]{key}...
\r
55 % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
\r
56 % The essential feature is that the label (the part in brackets) consists
\r
57 % of the author names, as they should appear in the citation, with the year
\r
58 % in parentheses following. There must be no space before the opening
\r
60 % With natbib v5.3, a full list of authors may also follow the year.
\r
61 % In natbib.sty, it is possible to define the type of enclosures that is
\r
62 % really wanted (brackets or parentheses), but in either case, there must
\r
63 % be parentheses in the label.
\r
64 % The \cite command functions as follows:
\r
65 % \cite{key} ==>> Jones et al. (1990)
\r
66 % \cite[]{key} ==>> (Jones et al., 1990)
\r
67 % \cite[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
\r
68 % \cite[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
\r
69 % \cite[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
\r
70 % \citeauthor{key} Jones et al.
\r
71 % \citefullauthor{key} Jones, Baker, and Smith
\r
72 % \citeyear{key} 1990
\r
73 %%---------------------------------------------------------------------
\r
100 { label extra.label sort.label }
\r
102 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
\r
104 FUNCTION {init.state.consts}
\r
105 { #0 'before.all :=
\r
106 #1 'mid.sentence :=
\r
107 #2 'after.sentence :=
\r
113 FUNCTION {output.nonnull}
\r
115 output.state mid.sentence =
\r
117 { output.state after.block =
\r
118 { add.period$ write$
\r
120 "\newblock " write$
\r
122 { output.state before.all =
\r
124 { add.period$ " " * write$ }
\r
128 mid.sentence 'output.state :=
\r
135 { duplicate$ empty$
\r
141 FUNCTION {output.check}
\r
144 { pop$ "empty " t * " in " * cite$ * warning$ }
\r
149 FUNCTION {fin.entry}
\r
155 FUNCTION {new.block}
\r
156 { output.state before.all =
\r
158 { after.block 'output.state := }
\r
162 FUNCTION {new.sentence}
\r
163 { output.state after.block =
\r
165 { output.state before.all =
\r
167 { after.sentence 'output.state := }
\r
191 FUNCTION {non.stop}
\r
194 #-1 #1 substring$ "." =
\r
197 FUNCTION {new.block.checkb}
\r
206 FUNCTION {field.or.null}
\r
207 { duplicate$ empty$
\r
213 FUNCTION {emphasize}
\r
214 { duplicate$ empty$
\r
216 { "{\em " swap$ * non.stop
\r
225 { duplicate$ empty$
\r
227 { "{\bf " swap$ * "}" * }
\r
231 INTEGERS { nameptr namesleft numnames }
\r
233 FUNCTION {format.names}
\r
236 s num.names$ 'numnames :=
\r
237 numnames 'namesleft :=
\r
240 "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
\r
251 { " " * "et~al." emphasize * }
\r
259 nameptr #1 + 'nameptr :=
\r
260 namesleft #1 - 'namesleft :=
\r
265 FUNCTION {format.names.ed}
\r
268 s num.names$ 'numnames :=
\r
269 numnames 'namesleft :=
\r
272 "{f.~}{vv~}{ll}{, jj}"
\r
284 { " " * "et~al." emphasize * }
\r
292 nameptr #1 + 'nameptr :=
\r
293 namesleft #1 - 'namesleft :=
\r
298 FUNCTION {format.key}
\r
300 { key field.or.null }
\r
305 FUNCTION {format.authors}
\r
308 { author format.names }
\r
312 FUNCTION {format.editors}
\r
315 { editor format.names
\r
316 editor num.names$ #1 >
\r
324 FUNCTION {format.in.editors}
\r
327 { editor format.names.ed
\r
328 editor num.names$ #1 >
\r
336 FUNCTION {format.title}
\r
339 { title "t" change.case$
\r
344 FUNCTION {format.full.names}
\r
347 s num.names$ 'numnames :=
\r
348 numnames 'namesleft :=
\r
351 "{vv~}{ll}" format.name$ 't :=
\r
362 { " " * "et~al." emphasize * }
\r
370 nameptr #1 + 'nameptr :=
\r
371 namesleft #1 - 'namesleft :=
\r
376 FUNCTION {author.editor.key.full}
\r
380 { cite$ #1 #3 substring$ }
\r
384 { editor format.full.names }
\r
387 { author format.full.names }
\r
391 FUNCTION {author.key.full}
\r
394 { cite$ #1 #3 substring$ }
\r
398 { author format.full.names }
\r
402 FUNCTION {editor.key.full}
\r
405 { cite$ #1 #3 substring$ }
\r
409 { editor format.full.names }
\r
413 FUNCTION {make.full.names}
\r
417 'author.editor.key.full
\r
418 { type$ "proceedings" =
\r
426 FUNCTION {output.bibitem}
\r
430 ")" make.full.names * "]{" * write$
\r
435 before.all 'output.state :=
\r
438 FUNCTION {n.dashify}
\r
442 { t #1 #1 substring$ "-" =
\r
443 { t #1 #2 substring$ "--" = not
\r
445 t #2 global.max$ substring$ 't :=
\r
447 { { t #1 #1 substring$ "-" = }
\r
449 t #2 global.max$ substring$ 't :=
\r
455 { t #1 #1 substring$ *
\r
456 t #2 global.max$ substring$ 't :=
\r
466 FUNCTION {format.date}
\r
467 { year duplicate$ empty$
\r
468 { "empty year in " cite$ * "; set to ????" * warning$
\r
472 before.all 'output.state :=
\r
473 " (" swap$ * extra.label * ")" *
\r
476 FUNCTION {format.btitle}
\r
480 FUNCTION {tie.or.space.connect}
\r
481 { duplicate$ text.length$ #3 <
\r
488 FUNCTION {either.or.check}
\r
491 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
\r
495 FUNCTION {format.bvolume}
\r
498 { "volume" volume tie.or.space.connect
\r
501 { " of " * series emphasize * }
\r
503 "volume and number" number either.or.check
\r
508 FUNCTION {format.number.series}
\r
511 { series field.or.null }
\r
512 { output.state mid.sentence =
\r
516 number tie.or.space.connect
\r
518 { "there's a number but no series in " cite$ * warning$ }
\r
519 { " in " * series * }
\r
528 FUNCTION {format.edition}
\r
531 { output.state mid.sentence =
\r
532 { edition "l" change.case$ " edition" * }
\r
533 { edition "t" change.case$ " edition" * }
\r
539 INTEGERS { multiresult }
\r
541 FUNCTION {multi.page.check}
\r
548 { t #1 #1 substring$
\r
550 swap$ duplicate$ "," =
\r
553 { #1 'multiresult := }
\r
554 { t #2 global.max$ substring$ 't := }
\r
561 FUNCTION {format.pages}
\r
564 { pages multi.page.check
\r
565 { "pages" pages n.dashify tie.or.space.connect }
\r
566 { "page" pages tie.or.space.connect }
\r
572 FUNCTION {format.vol.num.pages}
\r
573 { volume field.or.null
\r
577 { "(" number * ")" * *
\r
579 { "there's a number but no volume in " cite$ * warning$ }
\r
586 { duplicate$ empty$
\r
587 { pop$ format.pages }
\r
588 { ", " * pages n.dashify * }
\r
594 FUNCTION {format.chapter.pages}
\r
599 { type "l" change.case$ }
\r
601 chapter tie.or.space.connect
\r
604 { ", " * format.pages * }
\r
610 FUNCTION {format.in.ed.booktitle}
\r
614 { word.in booktitle emphasize * }
\r
615 { word.in format.in.editors * ", " * booktitle emphasize * }
\r
621 FUNCTION {format.thesis.type}
\r
625 type "t" change.case$
\r
630 FUNCTION {format.tr.number}
\r
632 { "Technical Report" }
\r
636 { "t" change.case$ }
\r
637 { number tie.or.space.connect }
\r
641 FUNCTION {format.article.crossref}
\r
644 "\cite{" * crossref * "}" *
\r
647 FUNCTION {format.book.crossref}
\r
649 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
\r
652 { "Volume" volume tie.or.space.connect
\r
656 "\cite{" * crossref * "}" *
\r
659 FUNCTION {format.incoll.inproc.crossref}
\r
662 "\cite{" * crossref * "}" *
\r
667 format.authors "author" output.check
\r
668 author format.key output
\r
669 format.date "year" output.check
\r
671 format.title "title" output.check
\r
674 { journal emphasize "journal" output.check
\r
675 format.vol.num.pages output
\r
677 { format.article.crossref output.nonnull
\r
678 format.pages output
\r
689 { format.editors "author and editor" output.check
\r
690 editor format.key output
\r
692 { format.authors output.nonnull
\r
694 { "author and editor" editor either.or.check }
\r
699 format.date "year" output.check
\r
701 format.btitle "title" output.check
\r
703 { format.bvolume output
\r
705 format.number.series output
\r
707 publisher "publisher" output.check
\r
712 format.book.crossref output.nonnull
\r
715 format.edition output
\r
723 format.authors output
\r
724 author format.key output
\r
725 format.date "year" output.check
\r
727 format.title "title" output.check
\r
729 howpublished output
\r
739 { format.editors "author and editor" output.check
\r
740 editor format.key output
\r
742 { format.authors output.nonnull
\r
744 { "author and editor" editor either.or.check }
\r
749 format.date "year" output.check
\r
751 format.btitle "title" output.check
\r
753 { format.bvolume output
\r
754 format.chapter.pages "chapter and pages" output.check
\r
756 format.number.series output
\r
758 publisher "publisher" output.check
\r
761 { format.chapter.pages "chapter and pages" output.check
\r
763 format.book.crossref output.nonnull
\r
766 format.edition output
\r
772 FUNCTION {incollection}
\r
774 format.authors "author" output.check
\r
775 author format.key output
\r
776 format.date "year" output.check
\r
778 format.title "title" output.check
\r
781 { format.in.ed.booktitle "booktitle" output.check
\r
782 format.bvolume output
\r
783 format.number.series output
\r
784 format.chapter.pages output
\r
786 publisher "publisher" output.check
\r
788 format.edition output
\r
790 { format.incoll.inproc.crossref output.nonnull
\r
791 format.chapter.pages output
\r
799 FUNCTION {inproceedings}
\r
801 format.authors "author" output.check
\r
802 author format.key output
\r
803 format.date "year" output.check
\r
805 format.title "title" output.check
\r
808 { format.in.ed.booktitle "booktitle" output.check
\r
809 format.bvolume output
\r
810 format.number.series output
\r
811 format.pages output
\r
814 organization output
\r
817 { format.incoll.inproc.crossref output.nonnull
\r
818 format.pages output
\r
826 FUNCTION {conference} { inproceedings }
\r
830 format.authors output
\r
831 author format.key output
\r
832 format.date "year" output.check
\r
834 format.btitle "title" output.check
\r
835 organization address new.block.checkb
\r
836 organization output
\r
838 format.edition output
\r
844 FUNCTION {mastersthesis}
\r
846 format.authors "author" output.check
\r
847 author format.key output
\r
848 format.date "year" output.check
\r
850 format.btitle "title" output.check
\r
852 "Master's thesis" format.thesis.type output.nonnull
\r
853 school "school" output.check
\r
862 format.authors output
\r
863 author format.key output
\r
864 format.date "year" output.check
\r
866 format.title output
\r
868 howpublished output
\r
874 FUNCTION {phdthesis}
\r
876 format.authors "author" output.check
\r
877 author format.key output
\r
878 format.date "year" output.check
\r
880 format.btitle "title" output.check
\r
882 "Ph.D. thesis" format.thesis.type output.nonnull
\r
883 school "school" output.check
\r
890 FUNCTION {proceedings}
\r
892 format.editors output
\r
893 editor format.key output
\r
894 format.date "year" output.check
\r
896 format.btitle "title" output.check
\r
897 format.bvolume output
\r
898 format.number.series output
\r
901 organization output
\r
908 FUNCTION {techreport}
\r
910 format.authors "author" output.check
\r
911 author format.key output
\r
912 format.date "year" output.check
\r
914 format.title "title" output.check
\r
916 format.tr.number output.nonnull
\r
917 institution "institution" output.check
\r
924 FUNCTION {unpublished}
\r
926 format.authors "author" output.check
\r
927 author format.key output
\r
928 format.date "year" output.check
\r
930 format.title "title" output.check
\r
932 note "note" output.check
\r
936 FUNCTION {default.type} { misc }
\r
938 MACRO {jan} {"January"}
\r
940 MACRO {feb} {"February"}
\r
942 MACRO {mar} {"March"}
\r
944 MACRO {apr} {"April"}
\r
946 MACRO {may} {"May"}
\r
948 MACRO {jun} {"June"}
\r
950 MACRO {jul} {"July"}
\r
952 MACRO {aug} {"August"}
\r
954 MACRO {sep} {"September"}
\r
956 MACRO {oct} {"October"}
\r
958 MACRO {nov} {"November"}
\r
960 MACRO {dec} {"December"}
\r
962 MACRO {acmcs} {"ACM Computing Surveys"}
\r
964 MACRO {acta} {"Acta Informatica"}
\r
966 MACRO {cacm} {"Communications of the ACM"}
\r
968 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
\r
970 MACRO {ibmsj} {"IBM Systems Journal"}
\r
972 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
\r
974 MACRO {ieeetc} {"IEEE Transactions on Computers"}
\r
977 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
\r
979 MACRO {ipl} {"Information Processing Letters"}
\r
981 MACRO {jacm} {"Journal of the ACM"}
\r
983 MACRO {jcss} {"Journal of Computer and System Sciences"}
\r
985 MACRO {scp} {"Science of Computer Programming"}
\r
987 MACRO {sicomp} {"SIAM Journal on Computing"}
\r
989 MACRO {tocs} {"ACM Transactions on Computer Systems"}
\r
991 MACRO {tods} {"ACM Transactions on Database Systems"}
\r
993 MACRO {tog} {"ACM Transactions on Graphics"}
\r
995 MACRO {toms} {"ACM Transactions on Mathematical Software"}
\r
997 MACRO {toois} {"ACM Transactions on Office Information Systems"}
\r
999 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
\r
1001 MACRO {tcs} {"Theoretical Computer Science"}
\r
1005 FUNCTION {sortify}
\r
1012 FUNCTION {chop.word}
\r
1015 s #1 len substring$ =
\r
1016 { s len #1 + global.max$ substring$ }
\r
1021 FUNCTION {format.lab.names}
\r
1023 s #1 "{vv~}{ll}" format.name$
\r
1024 s num.names$ duplicate$
\r
1026 { pop$ " " * "et~al." emphasize * }
\r
1029 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
\r
1030 { " " * "et~al." emphasize * }
\r
1031 { " and " * s #2 "{vv~}{ll}" format.name$ * }
\r
1039 FUNCTION {author.key.label}
\r
1042 { cite$ #1 #3 substring$ }
\r
1046 { author format.lab.names }
\r
1050 FUNCTION {author.editor.key.label}
\r
1054 { cite$ #1 #3 substring$ }
\r
1058 { editor format.lab.names }
\r
1061 { author format.lab.names }
\r
1065 FUNCTION {editor.key.label}
\r
1068 { cite$ #1 #3 substring$ }
\r
1072 { editor format.lab.names }
\r
1076 FUNCTION {calc.label}
\r
1080 'author.editor.key.label
\r
1081 { type$ "proceedings" =
\r
1089 year duplicate$ empty$
\r
1091 { purify$ #-1 #4 substring$ }
\r
1097 FUNCTION {sort.format.names}
\r
1101 s num.names$ 'numnames :=
\r
1102 numnames 'namesleft :=
\r
1103 { namesleft #0 > }
\r
1109 "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
\r
1110 format.name$ 't :=
\r
1111 nameptr numnames = t "others" = and
\r
1113 { numnames #2 > nameptr #2 = and
\r
1114 { "zzzzzz" * #1 'namesleft := }
\r
1119 nameptr #1 + 'nameptr :=
\r
1120 namesleft #1 - 'namesleft :=
\r
1125 FUNCTION {sort.format.title}
\r
1129 "The " #4 t chop.word
\r
1133 #1 global.max$ substring$
\r
1136 FUNCTION {author.sort}
\r
1139 { "to sort, need author or key in " cite$ * warning$
\r
1145 { author sort.format.names }
\r
1149 FUNCTION {author.editor.sort}
\r
1153 { "to sort, need author, editor, or key in " cite$ * warning$
\r
1159 { editor sort.format.names }
\r
1162 { author sort.format.names }
\r
1166 FUNCTION {editor.sort}
\r
1169 { "to sort, need editor or key in " cite$ * warning$
\r
1175 { editor sort.format.names }
\r
1179 FUNCTION {presort}
\r
1187 'author.editor.sort
\r
1188 { type$ "proceedings" =
\r
1194 #1 entry.max$ substring$
\r
1200 title field.or.null
\r
1203 #1 entry.max$ substring$
\r
1211 STRINGS { last.label next.extra }
\r
1213 INTEGERS { last.extra.num }
\r
1215 FUNCTION {initialize.extra.label.stuff}
\r
1216 { #0 int.to.chr$ 'last.label :=
\r
1218 #0 'last.extra.num :=
\r
1221 FUNCTION {forward.pass}
\r
1222 { last.label label =
\r
1223 { last.extra.num #1 + 'last.extra.num :=
\r
1224 last.extra.num int.to.chr$ 'extra.label :=
\r
1226 { "a" chr.to.int$ 'last.extra.num :=
\r
1227 "" 'extra.label :=
\r
1228 label 'last.label :=
\r
1233 FUNCTION {reverse.pass}
\r
1234 { next.extra "b" =
\r
1235 { "a" 'extra.label := }
\r
1238 extra.label 'next.extra :=
\r
1239 label extra.label * 'label :=
\r
1242 EXECUTE {initialize.extra.label.stuff}
\r
1244 ITERATE {forward.pass}
\r
1246 REVERSE {reverse.pass}
\r
1248 FUNCTION {bib.sort.order}
\r
1252 year field.or.null sortify
\r
1256 title field.or.null
\r
1259 #1 entry.max$ substring$
\r
1263 ITERATE {bib.sort.order}
\r
1267 FUNCTION {begin.bib}
\r
1268 { preamble$ empty$
\r
1270 { preamble$ write$ newline$ }
\r
1272 "\begin{thebibliography}{}" write$ newline$
\r
1275 EXECUTE {begin.bib}
\r
1277 EXECUTE {init.state.consts}
\r
1279 ITERATE {call.type$}
\r
1281 FUNCTION {end.bib}
\r
1283 "\end{thebibliography}" write$ newline$
\r
1287 %% End of customized bst file
\r