2 %% This is file `spbasic.bst',
3 %% generated with the docstrip utility.
5 %% The original source files were:
7 %% merlin.mbs (with options: `ay,nat,seq-lab,vonx,nm-rvx,ed-rev,jnrlst,dt-beg,yr-par,yrp-x,yrpp-xsp,note-yr,jxper,jttl-rm,thtit-a,pgsep-c,num-xser,ser-vol,jnm-x,btit-rm,bt-rm,pre-pub,doi,edparxc,blk-tit,in-col,fin-bare,pp,ed,abr,mth-bare,ord,jabr,xand,eprint,url,url-blk,em-x,nfss,')
8 %% ----------------------------------------
10 %%********************************************************************************%%
12 %% For Springer medical, life sciences, chemistry, geology, engineering and %%
13 %% computer science publications. %%
14 %% For use with the natbib package (see below). Default is author-year citations. %%
15 %% When citations are numbered, please use \usepackage[numbers]{natbib}. %%
16 %% A lack of punctuation is the key feature. Springer-Verlag 2004/10/15 %%
17 %% Report bugs and improvements to: Joylene Vette-Guillaume or Frank Holzwarth %%
19 %%********************************************************************************%%
21 %% Copyright 1994-2004 Patrick W Daly
22 % ===============================================================
24 % This bibliographic style (bst) file has been generated from one or
25 % more master bibliographic style (mbs) files, listed above.
27 % This generated file can be redistributed and/or modified under the terms
28 % of the LaTeX Project Public License Distributed from CTAN
29 % archives in directory macros/latex/base/lppl.txt; either
30 % version 1 of the License, or any later version.
31 % ===============================================================
32 % Name and version information of the main mbs file:
33 % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)]
34 % For use with BibTeX version 0.99a or later
35 %-------------------------------------------------------------------
36 % This bibliography style file is intended for texts in ENGLISH
37 % This is an author-year citation style bibliography. As such, it is
38 % non-standard LaTeX, and requires a special package file to function properly.
39 % Such a package is natbib.sty by Patrick W. Daly
40 % The form of the \bibitem entries is
41 % \bibitem[Jones et al.(1990)]{key}...
42 % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
43 % The essential feature is that the label (the part in brackets) consists
44 % of the author names, as they should appear in the citation, with the year
45 % in parentheses following. There must be no space before the opening
47 % With natbib v5.3, a full list of authors may also follow the year.
48 % In natbib.sty, it is possible to define the type of enclosures that is
49 % really wanted (brackets or parentheses), but in either case, there must
50 % be parentheses in the label.
51 % The \cite command functions as follows:
52 % \citet{key} ==>> Jones et al. (1990)
53 % \citet*{key} ==>> Jones, Baker, and Smith (1990)
54 % \citep{key} ==>> (Jones et al., 1990)
55 % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
56 % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
57 % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
58 % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
59 % \citeauthor{key} ==>> Jones et al.
60 % \citeauthor*{key} ==>> Jones, Baker, and Smith
61 % \citeyear{key} ==>> 1990
62 %---------------------------------------------------------------------
94 { label extra.label sort.label short.list }
95 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
96 FUNCTION {init.state.consts}
103 FUNCTION {output.nonnull}
105 output.state mid.sentence =
107 { output.state after.block =
112 { output.state before.all =
114 { add.period$ " " * write$ }
118 mid.sentence 'output.state :=
129 FUNCTION {output.check}
132 { pop$ "empty " t * " in " * cite$ * warning$ }
145 { output.state before.all =
147 { after.block 'output.state := }
150 FUNCTION {new.sentence}
151 { output.state after.block =
153 { output.state before.all =
155 { after.sentence 'output.state := }
161 { " " * before.all 'output.state :=
164 FUNCTION {no.blank.or.punct}
165 { "\hspace{0pt}" * before.all 'output.state :=
168 FUNCTION {date.block}
189 FUNCTION {remove.dots}
194 z #2 global.max$ substring$ 'z :=
195 duplicate$ "." = 'pop$
201 FUNCTION {new.block.checkb}
209 FUNCTION {field.or.null}
217 FUNCTION {tie.or.space.prefix}
218 { duplicate$ text.length$ #3 <
225 FUNCTION {capitalize}
226 { "u" change.case$ "t" change.case$ }
228 FUNCTION {space.word}
229 { " " swap$ * " " * }
230 % Here are the language-specific definitions for explicit words.
231 % Each function has a name bbl.xxx where xxx is the English word.
232 % The language selected here is ENGLISH
239 FUNCTION {bbl.editors}
242 FUNCTION {bbl.editor}
248 FUNCTION {bbl.edition}
251 FUNCTION {bbl.volume}
257 FUNCTION {bbl.number}
272 FUNCTION {bbl.chapter}
275 FUNCTION {bbl.techrep}
278 FUNCTION {bbl.mthesis}
279 { "Master's thesis" }
281 FUNCTION {bbl.phdthesis}
287 FUNCTION {bbl.second}
293 FUNCTION {bbl.fourth}
336 { duplicate$ "1" swap$ *
337 #-2 #1 substring$ "1" =
339 { duplicate$ #-1 #1 substring$
356 MACRO {acmcs} {"ACM Comput Surv"}
358 MACRO {acta} {"Acta Inf"}
360 MACRO {cacm} {"Commun ACM"}
362 MACRO {ibmjrd} {"IBM~J~Res Dev"}
364 MACRO {ibmsj} {"IBM Syst~J"}
366 MACRO {ieeese} {"IEEE Trans Softw Eng"}
368 MACRO {ieeetc} {"IEEE Trans Comput"}
371 {"IEEE Trans Comput Aid Des"}
373 MACRO {ipl} {"Inf Process Lett"}
375 MACRO {jacm} {"J~ACM"}
377 MACRO {jcss} {"J~Comput Syst Sci"}
379 MACRO {scp} {"Sci Comput Program"}
381 MACRO {sicomp} {"SIAM J~Comput"}
383 MACRO {tocs} {"ACM Trans Comput Syst"}
385 MACRO {tods} {"ACM Trans Database Syst"}
387 MACRO {tog} {"ACM Trans Graphic"}
389 MACRO {toms} {"ACM Trans Math Softw"}
391 MACRO {toois} {"ACM Trans Office Inf Syst"}
393 MACRO {toplas} {"ACM Trans Program Lang Syst"}
395 MACRO {tcs} {"Theor Comput Sci"}
397 FUNCTION {bibinfo.check}
415 FUNCTION {bibinfo.warn}
419 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
424 swap$ "empty " swap$ * " in " * cite$ * warning$
433 FUNCTION {format.eprint}
434 { eprint duplicate$ empty$
439 { "[" * archive * "]" * }
445 FUNCTION {format.url}
448 { "\urlprefix\url{" url * "}" * }
453 INTEGERS { nameptr namesleft numnames }
455 FUNCTION {format.names}
457 duplicate$ empty$ 'skip$ {
461 s num.names$ 'numnames :=
462 numnames 'namesleft :=
465 "{vv~}{ll}{ f{}}{ jj}"
468 bibinfo bibinfo.check
476 s nameptr "{ll}" format.name$ duplicate$ "others" =
491 nameptr #1 + 'nameptr :=
492 namesleft #1 - 'namesleft :=
497 FUNCTION {format.names.ed}
501 FUNCTION {format.key}
503 { key field.or.null }
508 FUNCTION {format.authors}
509 { author "author" format.names
511 FUNCTION {get.bbl.editor}
512 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
514 FUNCTION {format.editors}
515 { editor "editor" format.names duplicate$ empty$ 'skip$
524 FUNCTION {format.doi}
525 { doi "doi" bibinfo.check
526 duplicate$ empty$ 'skip$
528 "\doi{" swap$ * "}" *
532 FUNCTION {format.note}
536 { note #1 #1 substring$
539 { output.state mid.sentence =
546 note #2 global.max$ substring$ * "note" bibinfo.check
551 FUNCTION {format.title}
553 duplicate$ empty$ 'skip$
556 "title" bibinfo.check
558 FUNCTION {format.full.names}
562 s num.names$ 'numnames :=
563 numnames 'namesleft :=
566 "{vv~}{ll}" format.name$
573 s nameptr "{ll}" format.name$ duplicate$ "others" =
595 nameptr #1 + 'nameptr :=
596 namesleft #1 - 'namesleft :=
601 FUNCTION {author.editor.key.full}
605 { cite$ #1 #3 substring$ }
609 { editor format.full.names }
612 { author format.full.names }
616 FUNCTION {author.key.full}
619 { cite$ #1 #3 substring$ }
623 { author format.full.names }
627 FUNCTION {editor.key.full}
630 { cite$ #1 #3 substring$ }
634 { editor format.full.names }
638 FUNCTION {make.full.names}
642 'author.editor.key.full
643 { type$ "proceedings" =
651 FUNCTION {output.bibitem}
655 ")" make.full.names duplicate$ short.list =
664 before.all 'output.state :=
667 FUNCTION {add.period}
676 swap$ duplicate$ "1" =
677 swap$ duplicate$ "2" =
678 swap$ duplicate$ "3" =
679 swap$ duplicate$ "4" =
680 swap$ duplicate$ "5" =
681 swap$ duplicate$ "6" =
682 swap$ duplicate$ "7" =
683 swap$ duplicate$ "8" =
684 swap$ "9" = or or or or or or or or or
686 FUNCTION {n.separate}
691 { t #-1 #1 substring$ if.digit
692 { numnames #1 + 'numnames := }
695 t #-1 #1 substring$ swap$ *
696 t #-2 global.max$ substring$ 't :=
698 { duplicate$ #1 #2 substring$ swap$
699 #3 global.max$ substring$
713 { t #1 #1 substring$ "-" =
714 { t #1 #2 substring$ "--" = not
716 t #2 global.max$ substring$ 't :=
718 { { t #1 #1 substring$ "-" = }
720 t #2 global.max$ substring$ 't :=
726 { t #1 #1 substring$ *
727 t #2 global.max$ substring$ 't :=
739 FUNCTION {format.date}
740 { year "year" bibinfo.check duplicate$ empty$
742 "empty year in " cite$ * "; set to ????" * warning$
748 before.all 'output.state :=
751 FUNCTION {format.btitle}
752 { title "title" bibinfo.check
753 duplicate$ empty$ 'skip$
758 FUNCTION {either.or.check}
761 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
764 FUNCTION {format.bvolume}
767 { bbl.volume volume tie.or.space.prefix
768 "volume" bibinfo.check * *
769 series "series" bibinfo.check
770 duplicate$ empty$ 'pop$
771 { emphasize ", " * swap$ * }
773 "volume and number" number either.or.check
777 FUNCTION {format.number.series}
780 { series field.or.null }
782 { number "number" bibinfo.check }
783 { output.state mid.sentence =
785 { bbl.number capitalize }
787 number tie.or.space.prefix "number" bibinfo.check * *
789 series "series" bibinfo.check *
800 duplicate$ "0" chr.to.int$ < not
801 swap$ "9" chr.to.int$ > not and
804 FUNCTION {extract.num}
809 t #2 global.max$ substring$ 't :=
822 FUNCTION {convert.edition}
823 { extract.num "l" change.case$ 's :=
824 s "first" = s "1" = or
826 { s "second" = s "2" = or
828 { s "third" = s "3" = or
830 { s "fourth" = s "4" = or
832 { s "fifth" = s "5" = or
834 { s #1 #1 substring$ is.num
851 FUNCTION {format.edition}
852 { edition duplicate$ empty$ 'skip$
855 output.state mid.sentence =
859 "edition" bibinfo.check
864 INTEGERS { multiresult }
865 FUNCTION {multi.page.check}
874 swap$ duplicate$ "," =
877 { #1 'multiresult := }
878 { t #2 global.max$ substring$ 't := }
884 FUNCTION {format.pages}
885 { pages duplicate$ empty$ 'skip$
886 { duplicate$ multi.page.check
896 "pages" bibinfo.check
901 FUNCTION {format.journal.pages}
902 { pages duplicate$ empty$ 'pop$
903 { swap$ duplicate$ empty$
904 { pop$ pop$ format.pages }
909 "pages" bibinfo.check
916 FUNCTION {format.journal.eid}
917 { eid "eid" bibinfo.check
918 duplicate$ empty$ 'pop$
919 { swap$ duplicate$ empty$ 'skip$
928 FUNCTION {format.vol.num.pages}
929 { volume field.or.null
930 duplicate$ empty$ 'skip$
932 "volume" bibinfo.check
935 number "number" bibinfo.check duplicate$ empty$ 'skip$
937 swap$ duplicate$ empty$
938 { "there's a number but no volume in " cite$ * warning$ }
946 { format.journal.pages }
947 { format.journal.eid }
951 FUNCTION {format.chapter.pages}
956 { type "l" change.case$
960 chapter tie.or.space.prefix
961 "chapter" bibinfo.check
965 { ", " * format.pages * }
971 FUNCTION {format.booktitle}
973 booktitle "booktitle" bibinfo.check
975 FUNCTION {format.in.ed.booktitle}
976 { format.booktitle duplicate$ empty$ 'skip$
978 editor "editor" format.names.ed duplicate$ empty$ 'pop$
990 FUNCTION {format.thesis.type}
991 { type duplicate$ empty$
994 "t" change.case$ "type" bibinfo.check
998 FUNCTION {format.tr.number}
999 { number "number" bibinfo.check
1000 type duplicate$ empty$
1001 { pop$ bbl.techrep }
1004 "type" bibinfo.check
1005 swap$ duplicate$ empty$
1006 { pop$ "t" change.case$ }
1007 { tie.or.space.prefix * * }
1010 FUNCTION {format.article.crossref}
1013 " \cite{" * crossref * "}" *
1015 FUNCTION {format.book.crossref}
1016 { volume duplicate$ empty$
1017 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
1022 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
1025 " \cite{" * crossref * "}" *
1027 FUNCTION {format.incoll.inproc.crossref}
1030 " \cite{" * crossref * "}" *
1032 FUNCTION {format.org.or.pub}
1035 address empty$ t empty$ and
1039 { address "address" bibinfo.check *
1044 { ", " * address "address" bibinfo.check * }
1051 FUNCTION {format.publisher.address}
1052 { publisher "publisher" bibinfo.warn format.org.or.pub
1055 FUNCTION {format.organization.address}
1056 { organization "organization" bibinfo.check format.org.or.pub
1061 format.authors "author" output.check
1062 author format.key output
1063 format.date "year" output.check
1065 format.title "title" output.check
1071 "journal" bibinfo.check
1072 "journal" output.check
1074 format.vol.num.pages output
1076 { format.article.crossref output.nonnull
1083 format.eprint output
1089 { format.editors "author and editor" output.check
1090 editor format.key output
1093 { format.authors output.nonnull
1095 { "author and editor" editor either.or.check }
1100 format.date "year" output.check
1102 format.btitle "title" output.check
1104 { format.bvolume output
1105 format.edition output
1107 format.number.series output
1108 format.publisher.address output
1112 format.book.crossref output.nonnull
1118 format.eprint output
1123 format.authors output
1124 author format.key output
1125 format.date "year" output.check
1127 format.title "title" output.check
1129 howpublished "howpublished" bibinfo.check output
1130 address "address" bibinfo.check output
1134 format.eprint output
1141 { format.editors "author and editor" output.check
1142 editor format.key output
1144 { format.authors output.nonnull
1146 { "author and editor" editor either.or.check }
1151 format.date "year" output.check
1153 format.btitle "title" output.check
1156 format.bvolume output
1157 format.edition output
1158 format.publisher.address output
1159 format.chapter.pages "chapter and pages" output.check
1161 format.number.series output
1164 format.chapter.pages "chapter and pages" output.check
1166 format.book.crossref output.nonnull
1172 format.eprint output
1176 FUNCTION {incollection}
1178 format.authors "author" output.check
1179 author format.key output
1180 format.date "year" output.check
1182 format.title "title" output.check
1185 { format.in.ed.booktitle "booktitle" output.check
1186 format.bvolume output
1187 format.edition output
1188 format.number.series output
1189 format.publisher.address output
1190 format.chapter.pages output
1192 { format.incoll.inproc.crossref output.nonnull
1193 format.chapter.pages output
1199 format.eprint output
1202 FUNCTION {inproceedings}
1204 format.authors "author" output.check
1205 author format.key output
1206 format.date "year" output.check
1208 format.title "title" output.check
1211 { format.in.ed.booktitle "booktitle" output.check
1213 { format.organization.address output }
1214 { organization "organization" bibinfo.check output
1215 format.publisher.address output
1218 format.bvolume output
1219 format.number.series output
1222 { format.incoll.inproc.crossref output.nonnull
1229 format.eprint output
1232 FUNCTION {conference} { inproceedings }
1235 format.authors output
1236 author format.key output
1237 format.date "year" output.check
1239 format.btitle "title" output.check
1241 organization "organization" bibinfo.check output
1242 address "address" bibinfo.check output
1243 format.edition output
1247 format.eprint output
1251 FUNCTION {mastersthesis}
1253 format.authors "author" output.check
1254 author format.key output
1255 format.date "year" output.check
1258 "title" output.check
1260 bbl.mthesis format.thesis.type output.nonnull
1261 school "school" bibinfo.warn output
1262 address "address" bibinfo.check output
1266 format.eprint output
1272 format.authors output
1273 author format.key output
1274 format.date "year" output.check
1278 howpublished "howpublished" bibinfo.check output
1282 format.eprint output
1285 FUNCTION {phdthesis}
1287 format.authors "author" output.check
1288 author format.key output
1289 format.date "year" output.check
1292 "title" output.check
1294 bbl.phdthesis format.thesis.type output.nonnull
1295 school "school" bibinfo.warn output
1296 address "address" bibinfo.check output
1300 format.eprint output
1304 FUNCTION {proceedings}
1306 format.editors output
1307 editor format.key output
1308 format.date "year" output.check
1310 format.btitle "title" output.check
1311 format.bvolume output
1312 format.number.series output
1314 { format.organization.address output }
1315 { organization "organization" bibinfo.check output
1316 format.publisher.address output
1322 format.eprint output
1326 FUNCTION {techreport}
1328 format.authors "author" output.check
1329 author format.key output
1330 format.date "year" output.check
1333 "title" output.check
1335 format.tr.number output.nonnull
1336 institution "institution" bibinfo.warn output
1337 address "address" bibinfo.check output
1341 format.eprint output
1345 FUNCTION {unpublished}
1347 format.authors "author" output.check
1348 author format.key output
1349 format.date "year" output.check
1351 format.title "title" output.check
1354 format.note "note" output.check
1355 format.eprint output
1359 FUNCTION {default.type} { misc }
1366 FUNCTION {chop.word}
1369 s #1 len substring$ =
1370 { s len #1 + global.max$ substring$ }
1374 FUNCTION {format.lab.names}
1377 s #1 "{vv~}{ll}" format.name$
1378 s num.names$ duplicate$
1385 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1389 { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1398 FUNCTION {author.key.label}
1401 { cite$ #1 #3 substring$ }
1405 { author format.lab.names }
1409 FUNCTION {author.editor.key.label}
1413 { cite$ #1 #3 substring$ }
1417 { editor format.lab.names }
1420 { author format.lab.names }
1424 FUNCTION {editor.key.label}
1427 { cite$ #1 #3 substring$ }
1431 { editor format.lab.names }
1435 FUNCTION {calc.short.authors}
1439 'author.editor.key.label
1440 { type$ "proceedings" =
1449 FUNCTION {calc.label}
1450 { calc.short.authors
1454 year duplicate$ empty$
1462 FUNCTION {sort.format.names}
1466 s num.names$ 'numnames :=
1467 numnames 'namesleft :=
1470 "{ll{ }}{ f{ }}{ jj{ }}"
1475 namesleft #1 = t "others" = and
1477 { numnames #2 > nameptr #2 = and
1478 { "zz" * year field.or.null * " " * }
1487 nameptr #1 + 'nameptr :=
1488 namesleft #1 - 'namesleft :=
1493 FUNCTION {sort.format.title}
1497 "The " #4 t chop.word
1501 #1 global.max$ substring$
1503 FUNCTION {author.sort}
1506 { "to sort, need author or key in " cite$ * warning$
1512 { author sort.format.names }
1515 FUNCTION {author.editor.sort}
1519 { "to sort, need author, editor, or key in " cite$ * warning$
1525 { editor sort.format.names }
1528 { author sort.format.names }
1531 FUNCTION {editor.sort}
1534 { "to sort, need editor or key in " cite$ * warning$
1540 { editor sort.format.names }
1552 { type$ "proceedings" =
1558 #1 entry.max$ substring$
1567 #1 entry.max$ substring$
1573 STRINGS { last.label next.extra }
1574 INTEGERS { last.extra.num number.label }
1575 FUNCTION {initialize.extra.label.stuff}
1576 { #0 int.to.chr$ 'last.label :=
1578 #0 'last.extra.num :=
1581 FUNCTION {forward.pass}
1582 { last.label label =
1583 { last.extra.num #1 + 'last.extra.num :=
1584 last.extra.num int.to.chr$ 'extra.label :=
1586 { "a" chr.to.int$ 'last.extra.num :=
1588 label 'last.label :=
1591 number.label #1 + 'number.label :=
1593 FUNCTION {reverse.pass}
1595 { "a" 'extra.label := }
1598 extra.label 'next.extra :=
1602 { "{\natexlab{" swap$ * "}}" * }
1605 label extra.label * 'label :=
1607 EXECUTE {initialize.extra.label.stuff}
1608 ITERATE {forward.pass}
1609 REVERSE {reverse.pass}
1610 FUNCTION {bib.sort.order}
1614 year field.or.null sortify
1621 #1 entry.max$ substring$
1624 ITERATE {bib.sort.order}
1626 FUNCTION {begin.bib}
1629 { preamble$ write$ newline$ }
1631 "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1633 "\providecommand{\natexlab}[1]{#1}"
1635 "\providecommand{\url}[1]{{#1}}"
1637 "\providecommand{\urlprefix}{URL }"
1639 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1641 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else"
1643 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1645 "\providecommand{\eprint}[2][]{\url{#2}}"
1649 EXECUTE {init.state.consts}
1650 ITERATE {call.type$}
1653 "\end{thebibliography}" write$ newline$
1656 %% End of customized bst file
1658 %% End of file `spbasic.bst'.