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$
712 { t #1 #1 substring$ "-" =
713 { t #1 #2 substring$ "--" = not
715 t #2 global.max$ substring$ 't :=
717 { { t #1 #1 substring$ "-" = }
719 t #2 global.max$ substring$ 't :=
725 { t #1 #1 substring$ *
726 t #2 global.max$ substring$ 't :=
738 FUNCTION {format.date}
739 { year "year" bibinfo.check duplicate$ empty$
741 "empty year in " cite$ * "; set to ????" * warning$
747 before.all 'output.state :=
750 FUNCTION {format.btitle}
751 { title "title" bibinfo.check
752 duplicate$ empty$ 'skip$
757 FUNCTION {either.or.check}
760 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
763 FUNCTION {format.bvolume}
766 { bbl.volume volume tie.or.space.prefix
767 "volume" bibinfo.check * *
768 series "series" bibinfo.check
769 duplicate$ empty$ 'pop$
770 { emphasize ", " * swap$ * }
772 "volume and number" number either.or.check
776 FUNCTION {format.number.series}
779 { series field.or.null }
781 { number "number" bibinfo.check }
782 { output.state mid.sentence =
784 { bbl.number capitalize }
786 number tie.or.space.prefix "number" bibinfo.check * *
788 series "series" bibinfo.check *
799 duplicate$ "0" chr.to.int$ < not
800 swap$ "9" chr.to.int$ > not and
803 FUNCTION {extract.num}
808 t #2 global.max$ substring$ 't :=
821 FUNCTION {convert.edition}
822 { extract.num "l" change.case$ 's :=
823 s "first" = s "1" = or
825 { s "second" = s "2" = or
827 { s "third" = s "3" = or
829 { s "fourth" = s "4" = or
831 { s "fifth" = s "5" = or
833 { s #1 #1 substring$ is.num
850 FUNCTION {format.edition}
851 { edition duplicate$ empty$ 'skip$
854 output.state mid.sentence =
858 "edition" bibinfo.check
863 INTEGERS { multiresult }
864 FUNCTION {multi.page.check}
873 swap$ duplicate$ "," =
876 { #1 'multiresult := }
877 { t #2 global.max$ substring$ 't := }
883 FUNCTION {format.pages}
884 { pages duplicate$ empty$ 'skip$
885 { duplicate$ multi.page.check
895 "pages" bibinfo.check
900 FUNCTION {format.journal.pages}
901 { pages duplicate$ empty$ 'pop$
902 { swap$ duplicate$ empty$
903 { pop$ pop$ format.pages }
908 "pages" bibinfo.check
915 FUNCTION {format.journal.eid}
916 { eid "eid" bibinfo.check
917 duplicate$ empty$ 'pop$
918 { swap$ duplicate$ empty$ 'skip$
927 FUNCTION {format.vol.num.pages}
928 { volume field.or.null
929 duplicate$ empty$ 'skip$
931 "volume" bibinfo.check
934 number "number" bibinfo.check duplicate$ empty$ 'skip$
936 swap$ duplicate$ empty$
937 { "there's a number but no volume in " cite$ * warning$ }
945 { format.journal.pages }
946 { format.journal.eid }
950 FUNCTION {format.chapter.pages}
955 { type "l" change.case$
959 chapter tie.or.space.prefix
960 "chapter" bibinfo.check
964 { ", " * format.pages * }
970 FUNCTION {format.booktitle}
972 booktitle "booktitle" bibinfo.check
974 FUNCTION {format.in.ed.booktitle}
975 { format.booktitle duplicate$ empty$ 'skip$
977 editor "editor" format.names.ed duplicate$ empty$ 'pop$
989 FUNCTION {format.thesis.type}
990 { type duplicate$ empty$
993 "t" change.case$ "type" bibinfo.check
997 FUNCTION {format.tr.number}
998 { number "number" bibinfo.check
999 type duplicate$ empty$
1000 { pop$ bbl.techrep }
1003 "type" bibinfo.check
1004 swap$ duplicate$ empty$
1005 { pop$ "t" change.case$ }
1006 { tie.or.space.prefix * * }
1009 FUNCTION {format.article.crossref}
1012 " \cite{" * crossref * "}" *
1014 FUNCTION {format.book.crossref}
1015 { volume duplicate$ empty$
1016 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
1021 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
1024 " \cite{" * crossref * "}" *
1026 FUNCTION {format.incoll.inproc.crossref}
1029 " \cite{" * crossref * "}" *
1031 FUNCTION {format.org.or.pub}
1034 address empty$ t empty$ and
1038 { address "address" bibinfo.check *
1043 { ", " * address "address" bibinfo.check * }
1050 FUNCTION {format.publisher.address}
1051 { publisher "publisher" bibinfo.warn format.org.or.pub
1054 FUNCTION {format.organization.address}
1055 { organization "organization" bibinfo.check format.org.or.pub
1060 format.authors "author" output.check
1061 author format.key output
1062 format.date "year" output.check
1064 format.title "title" output.check
1070 "journal" bibinfo.check
1071 "journal" output.check
1073 format.vol.num.pages output
1075 { format.article.crossref output.nonnull
1082 format.eprint output
1088 { format.editors "author and editor" output.check
1089 editor format.key output
1092 { format.authors output.nonnull
1094 { "author and editor" editor either.or.check }
1099 format.date "year" output.check
1101 format.btitle "title" output.check
1103 { format.bvolume output
1104 format.edition output
1106 format.number.series output
1107 format.publisher.address output
1111 format.book.crossref output.nonnull
1117 format.eprint output
1122 format.authors output
1123 author format.key output
1124 format.date "year" output.check
1126 format.title "title" output.check
1128 howpublished "howpublished" bibinfo.check output
1129 address "address" bibinfo.check output
1133 format.eprint output
1140 { format.editors "author and editor" output.check
1141 editor format.key output
1143 { format.authors output.nonnull
1145 { "author and editor" editor either.or.check }
1150 format.date "year" output.check
1152 format.btitle "title" output.check
1155 format.bvolume output
1156 format.edition output
1157 format.publisher.address output
1158 format.chapter.pages "chapter and pages" output.check
1160 format.number.series output
1163 format.chapter.pages "chapter and pages" output.check
1165 format.book.crossref output.nonnull
1171 format.eprint output
1175 FUNCTION {incollection}
1177 format.authors "author" output.check
1178 author format.key output
1179 format.date "year" output.check
1181 format.title "title" output.check
1184 { format.in.ed.booktitle "booktitle" output.check
1185 format.bvolume output
1186 format.edition output
1187 format.number.series output
1188 format.publisher.address output
1189 format.chapter.pages output
1191 { format.incoll.inproc.crossref output.nonnull
1192 format.chapter.pages output
1198 format.eprint output
1201 FUNCTION {inproceedings}
1203 format.authors "author" output.check
1204 author format.key output
1205 format.date "year" output.check
1207 format.title "title" output.check
1210 { format.in.ed.booktitle "booktitle" output.check
1212 { format.organization.address output }
1213 { organization "organization" bibinfo.check output
1214 format.publisher.address output
1217 format.bvolume output
1218 format.number.series output
1221 { format.incoll.inproc.crossref output.nonnull
1228 format.eprint output
1231 FUNCTION {conference} { inproceedings }
1234 format.authors output
1235 author format.key output
1236 format.date "year" output.check
1238 format.btitle "title" output.check
1240 organization "organization" bibinfo.check output
1241 address "address" bibinfo.check output
1242 format.edition output
1246 format.eprint output
1250 FUNCTION {mastersthesis}
1252 format.authors "author" output.check
1253 author format.key output
1254 format.date "year" output.check
1257 "title" output.check
1259 bbl.mthesis format.thesis.type output.nonnull
1260 school "school" bibinfo.warn output
1261 address "address" bibinfo.check output
1265 format.eprint output
1271 format.authors output
1272 author format.key output
1273 format.date "year" output.check
1277 howpublished "howpublished" bibinfo.check output
1281 format.eprint output
1284 FUNCTION {phdthesis}
1286 format.authors "author" output.check
1287 author format.key output
1288 format.date "year" output.check
1291 "title" output.check
1293 bbl.phdthesis format.thesis.type output.nonnull
1294 school "school" bibinfo.warn output
1295 address "address" bibinfo.check output
1299 format.eprint output
1303 FUNCTION {proceedings}
1305 format.editors output
1306 editor format.key output
1307 format.date "year" output.check
1309 format.btitle "title" output.check
1310 format.bvolume output
1311 format.number.series output
1313 { format.organization.address output }
1314 { organization "organization" bibinfo.check output
1315 format.publisher.address output
1321 format.eprint output
1325 FUNCTION {techreport}
1327 format.authors "author" output.check
1328 author format.key output
1329 format.date "year" output.check
1332 "title" output.check
1334 format.tr.number output.nonnull
1335 institution "institution" bibinfo.warn output
1336 address "address" bibinfo.check output
1340 format.eprint output
1344 FUNCTION {unpublished}
1346 format.authors "author" output.check
1347 author format.key output
1348 format.date "year" output.check
1350 format.title "title" output.check
1353 format.note "note" output.check
1354 format.eprint output
1358 FUNCTION {default.type} { misc }
1365 FUNCTION {chop.word}
1368 s #1 len substring$ =
1369 { s len #1 + global.max$ substring$ }
1373 FUNCTION {format.lab.names}
1376 s #1 "{vv~}{ll}" format.name$
1377 s num.names$ duplicate$
1384 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1388 { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1397 FUNCTION {author.key.label}
1400 { cite$ #1 #3 substring$ }
1404 { author format.lab.names }
1408 FUNCTION {author.editor.key.label}
1412 { cite$ #1 #3 substring$ }
1416 { editor format.lab.names }
1419 { author format.lab.names }
1423 FUNCTION {editor.key.label}
1426 { cite$ #1 #3 substring$ }
1430 { editor format.lab.names }
1434 FUNCTION {calc.short.authors}
1438 'author.editor.key.label
1439 { type$ "proceedings" =
1448 FUNCTION {calc.label}
1449 { calc.short.authors
1453 year duplicate$ empty$
1461 FUNCTION {sort.format.names}
1465 s num.names$ 'numnames :=
1466 numnames 'namesleft :=
1469 "{ll{ }}{ f{ }}{ jj{ }}"
1474 namesleft #1 = t "others" = and
1476 { numnames #2 > nameptr #2 = and
1477 { "zz" * year field.or.null * " " * }
1486 nameptr #1 + 'nameptr :=
1487 namesleft #1 - 'namesleft :=
1492 FUNCTION {sort.format.title}
1496 "The " #4 t chop.word
1500 #1 global.max$ substring$
1502 FUNCTION {author.sort}
1505 { "to sort, need author or key in " cite$ * warning$
1511 { author sort.format.names }
1514 FUNCTION {author.editor.sort}
1518 { "to sort, need author, editor, or key in " cite$ * warning$
1524 { editor sort.format.names }
1527 { author sort.format.names }
1530 FUNCTION {editor.sort}
1533 { "to sort, need editor or key in " cite$ * warning$
1539 { editor sort.format.names }
1551 { type$ "proceedings" =
1557 #1 entry.max$ substring$
1566 #1 entry.max$ substring$
1572 STRINGS { last.label next.extra }
1573 INTEGERS { last.extra.num number.label }
1574 FUNCTION {initialize.extra.label.stuff}
1575 { #0 int.to.chr$ 'last.label :=
1577 #0 'last.extra.num :=
1580 FUNCTION {forward.pass}
1581 { last.label label =
1582 { last.extra.num #1 + 'last.extra.num :=
1583 last.extra.num int.to.chr$ 'extra.label :=
1585 { "a" chr.to.int$ 'last.extra.num :=
1587 label 'last.label :=
1590 number.label #1 + 'number.label :=
1592 FUNCTION {reverse.pass}
1594 { "a" 'extra.label := }
1597 extra.label 'next.extra :=
1601 { "{\natexlab{" swap$ * "}}" * }
1604 label extra.label * 'label :=
1606 EXECUTE {initialize.extra.label.stuff}
1607 ITERATE {forward.pass}
1608 REVERSE {reverse.pass}
1609 FUNCTION {bib.sort.order}
1613 year field.or.null sortify
1620 #1 entry.max$ substring$
1623 ITERATE {bib.sort.order}
1625 FUNCTION {begin.bib}
1628 { preamble$ write$ newline$ }
1630 "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1632 "\providecommand{\natexlab}[1]{#1}"
1634 "\providecommand{\url}[1]{{#1}}"
1636 "\providecommand{\urlprefix}{URL }"
1638 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1640 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else"
1642 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1644 "\providecommand{\eprint}[2][]{\url{#2}}"
1648 EXECUTE {init.state.consts}
1649 ITERATE {call.type$}
1652 "\end{thebibliography}" write$ newline$
1655 %% End of customized bst file
1657 %% End of file `spbasic.bst'.