2 %% This is file `spmpsci.bst',
3 %% generated with the docstrip utility.
5 %% The original source files were:
7 %% merlin.mbs (with options: `vonx,nm-rvv,yr-par,xmth,jttl-rm,thtit-a,vol-bf,volp-com,pgsep-c,num-xser,ser-vol,ser-ed,jnm-x,btit-rm,bt-rm,doi,edparxc,au-col,in-col,fin-bare,pp,ed,abr,xedn,jabr,xand,url,url-blk,nfss,')
8 %% ----------------------------------------
9 %%********************************************************************************%%
11 %% For Springer mathematics, computer science, and physical sciences journals %%
13 %% Report bugs and improvements to: Joylene Vette-Guillaume or Frank Holzwarth %%
14 %% Springer-Verlag 2004/10/15 %%
16 %%********************************************************************************%%
18 %% Copyright 1994-2004 Patrick W Daly
19 % ===============================================================
21 % This bibliographic style (bst) file has been generated from one or
22 % more master bibliographic style (mbs) files, listed above.
24 % This generated file can be redistributed and/or modified under the terms
25 % of the LaTeX Project Public License Distributed from CTAN
26 % archives in directory macros/latex/base/lppl.txt; either
27 % version 1 of the License, or any later version.
28 % ===============================================================
29 % Name and version information of the main mbs file:
30 % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)]
31 % For use with BibTeX version 0.99a or later
32 %-------------------------------------------------------------------
33 % This bibliography style file is intended for texts in ENGLISH
34 % This is a numerical citation style, and as such is standard LaTeX.
35 % It requires no extra package to interface to the main text.
36 % The form of the \bibitem entries is
38 % Usage of \cite is as follows:
40 % \cite[chap. 2]{key} ==>> [#, chap. 2]
41 % where # is a number determined by the ordering in the reference list.
42 % The order in the reference list is alphabetical by authors.
43 %---------------------------------------------------------------------
74 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
75 FUNCTION {init.state.consts}
82 FUNCTION {output.nonnull}
84 output.state mid.sentence =
86 { output.state after.block =
91 { output.state before.all =
93 { add.period$ " " * write$ }
97 mid.sentence 'output.state :=
108 FUNCTION {output.check}
111 { pop$ "empty " t * " in " * cite$ * warning$ }
124 { output.state before.all =
126 { after.block 'output.state := }
129 FUNCTION {new.sentence}
130 { output.state after.block =
132 { output.state before.all =
134 { after.sentence 'output.state := }
140 { " " * before.all 'output.state :=
150 FUNCTION {date.block}
170 FUNCTION {new.block.checka}
176 FUNCTION {new.block.checkb}
184 FUNCTION {new.sentence.checka}
190 FUNCTION {new.sentence.checkb}
198 FUNCTION {field.or.null}
207 { "\emph{" swap$ * "}" * }
213 { "\textbf{" swap$ * "}" * }
216 FUNCTION {tie.or.space.prefix}
217 { duplicate$ text.length$ #3 <
224 FUNCTION {capitalize}
225 { "u" change.case$ "t" change.case$ }
227 FUNCTION {space.word}
228 { " " swap$ * " " * }
229 % Here are the language-specific definitions for explicit words.
230 % Each function has a name bbl.xxx where xxx is the English word.
231 % The language selected here is ENGLISH
238 FUNCTION {bbl.editors}
241 FUNCTION {bbl.editor}
247 FUNCTION {bbl.edition}
250 FUNCTION {bbl.volume}
256 FUNCTION {bbl.number}
271 FUNCTION {bbl.chapter}
274 FUNCTION {bbl.techrep}
277 FUNCTION {bbl.mthesis}
278 { "Master's thesis" }
280 FUNCTION {bbl.phdthesis}
307 MACRO {acmcs} {"ACM Comput. Surv."}
309 MACRO {acta} {"Acta Inf."}
311 MACRO {cacm} {"Commun. ACM"}
313 MACRO {ibmjrd} {"IBM J. Res. Dev."}
315 MACRO {ibmsj} {"IBM Syst.~J."}
317 MACRO {ieeese} {"IEEE Trans. Software Eng."}
319 MACRO {ieeetc} {"IEEE Trans. Comput."}
322 {"IEEE Trans. Comput. Aid. Des."}
324 MACRO {ipl} {"Inf. Process. Lett."}
326 MACRO {jacm} {"J.~ACM"}
328 MACRO {jcss} {"J.~Comput. Syst. Sci."}
330 MACRO {scp} {"Sci. Comput. Program."}
332 MACRO {sicomp} {"SIAM J. Comput."}
334 MACRO {tocs} {"ACM Trans. Comput. Syst."}
336 MACRO {tods} {"ACM Trans. Database Syst."}
338 MACRO {tog} {"ACM Trans. Graphic."}
340 MACRO {toms} {"ACM Trans. Math. Software"}
342 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
344 MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
346 MACRO {tcs} {"Theor. Comput. Sci."}
348 FUNCTION {bibinfo.check}
366 FUNCTION {bibinfo.warn}
370 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
375 swap$ "empty " swap$ * " in " * cite$ * warning$
384 FUNCTION {format.url}
387 { "\urlprefix\url{" url * "}" * }
392 INTEGERS { nameptr namesleft numnames }
394 FUNCTION {format.names}
396 duplicate$ empty$ 'skip$ {
400 s num.names$ 'numnames :=
401 numnames 'namesleft :=
404 "{vv~}{ll}{ jj}{, f{.}.}"
406 bibinfo bibinfo.check
414 s nameptr "{ll}" format.name$ duplicate$ "others" =
429 nameptr #1 + 'nameptr :=
430 namesleft #1 - 'namesleft :=
435 FUNCTION {format.names.ed}
438 duplicate$ empty$ 'skip$ {
442 s num.names$ 'numnames :=
443 numnames 'namesleft :=
446 "{f{.}.~}{vv~}{ll}{ jj}"
448 bibinfo bibinfo.check
456 s nameptr "{ll}" format.name$ duplicate$ "others" =
472 nameptr #1 + 'nameptr :=
473 namesleft #1 - 'namesleft :=
478 FUNCTION {format.authors}
479 { author "author" format.names
481 FUNCTION {get.bbl.editor}
482 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
484 FUNCTION {format.editors}
485 { editor "editor" format.names duplicate$ empty$ 'skip$
494 FUNCTION {format.doi}
495 { doi "doi" bibinfo.check
496 duplicate$ empty$ 'skip$
499 "\doi{" swap$ * "}" *
503 FUNCTION {format.note}
507 { note #1 #1 substring$
510 { output.state mid.sentence =
517 note #2 global.max$ substring$ * "note" bibinfo.check
522 FUNCTION {format.title}
524 duplicate$ empty$ 'skip$
527 "title" bibinfo.check
529 FUNCTION {output.bibitem}
536 before.all 'output.state :=
541 swap$ duplicate$ "1" =
542 swap$ duplicate$ "2" =
543 swap$ duplicate$ "3" =
544 swap$ duplicate$ "4" =
545 swap$ duplicate$ "5" =
546 swap$ duplicate$ "6" =
547 swap$ duplicate$ "7" =
548 swap$ duplicate$ "8" =
549 swap$ "9" = or or or or or or or or or
551 FUNCTION {n.separate}
556 { t #-1 #1 substring$ if.digit
557 { numnames #1 + 'numnames := }
560 t #-1 #1 substring$ swap$ *
561 t #-2 global.max$ substring$ 't :=
563 { duplicate$ #1 #2 substring$ swap$
564 #3 global.max$ substring$
577 { t #1 #1 substring$ "-" =
578 { t #1 #2 substring$ "--" = not
580 t #2 global.max$ substring$ 't :=
582 { { t #1 #1 substring$ "-" = }
584 t #2 global.max$ substring$ 't :=
590 { t #1 #1 substring$ *
591 t #2 global.max$ substring$ 't :=
603 FUNCTION {format.date}
607 year "year" bibinfo.check duplicate$ empty$
609 { "there's a month but no year in " cite$ * warning$ }
625 before.all 'output.state :=
630 FUNCTION {format.btitle}
631 { title "title" bibinfo.check
632 duplicate$ empty$ 'skip$
637 FUNCTION {either.or.check}
640 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
643 FUNCTION {format.bvolume}
646 { bbl.volume volume tie.or.space.prefix
647 "volume" bibinfo.check * *
648 series "series" bibinfo.check
649 duplicate$ empty$ 'pop$
650 { emphasize ", " * swap$ * }
652 "volume and number" number either.or.check
656 FUNCTION {format.number.series}
659 { series field.or.null }
661 { number "number" bibinfo.check }
662 { output.state mid.sentence =
664 { bbl.number capitalize }
666 number tie.or.space.prefix "number" bibinfo.check * *
668 series "series" bibinfo.check *
678 FUNCTION {format.edition}
679 { edition duplicate$ empty$ 'skip$
681 output.state mid.sentence =
685 "edition" bibinfo.check
690 INTEGERS { multiresult }
691 FUNCTION {multi.page.check}
700 swap$ duplicate$ "," =
703 { #1 'multiresult := }
704 { t #2 global.max$ substring$ 't := }
710 FUNCTION {format.pages}
711 { pages duplicate$ empty$ 'skip$
712 { duplicate$ multi.page.check
722 "pages" bibinfo.check
727 FUNCTION {format.journal.pages}
728 { pages duplicate$ empty$ 'pop$
729 { swap$ duplicate$ empty$
730 { pop$ pop$ format.pages }
735 "pages" bibinfo.check
742 FUNCTION {format.journal.eid}
743 { eid "eid" bibinfo.check
744 duplicate$ empty$ 'pop$
745 { swap$ duplicate$ empty$ 'skip$
754 FUNCTION {format.vol.num.pages}
755 { volume field.or.null
756 duplicate$ empty$ 'skip$
758 "volume" bibinfo.check
762 number "number" bibinfo.check duplicate$ empty$ 'skip$
764 swap$ duplicate$ empty$
765 { "there's a number but no volume in " cite$ * warning$ }
773 { format.journal.pages }
774 { format.journal.eid }
778 FUNCTION {format.chapter.pages}
783 { type "l" change.case$
787 chapter tie.or.space.prefix
788 "chapter" bibinfo.check
792 { ", " * format.pages * }
798 FUNCTION {format.booktitle}
800 booktitle "booktitle" bibinfo.check
802 FUNCTION {format.in.ed.booktitle}
803 { format.booktitle duplicate$ empty$ 'skip$
805 format.bvolume duplicate$ empty$ 'pop$
808 editor "editor" format.names.ed duplicate$ empty$ 'pop$
820 FUNCTION {empty.misc.check}
821 { author empty$ title empty$ howpublished empty$
822 month empty$ year empty$ note empty$
825 { "all relevant fields are empty in " cite$ * warning$ }
829 FUNCTION {format.thesis.type}
830 { type duplicate$ empty$
833 "t" change.case$ "type" bibinfo.check
837 FUNCTION {format.tr.number}
838 { number "number" bibinfo.check
839 type duplicate$ empty$
844 swap$ duplicate$ empty$
845 { pop$ "t" change.case$ }
846 { tie.or.space.prefix * * }
849 FUNCTION {format.article.crossref}
851 key duplicate$ empty$
853 journal duplicate$ empty$
854 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
855 { "journal" bibinfo.check emphasize word.in swap$ * }
858 { word.in swap$ * " " *}
860 " \cite{" * crossref * "}" *
862 FUNCTION {format.crossref.editor}
863 { editor #1 "{vv~}{ll}" format.name$
864 "editor" bibinfo.check
865 editor num.names$ duplicate$
868 "editor" bibinfo.check
874 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
876 "editor" bibinfo.check
882 * editor #2 "{vv~}{ll}" format.name$
883 "editor" bibinfo.check
892 FUNCTION {format.book.crossref}
893 { volume duplicate$ empty$
894 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
899 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
903 editor field.or.null author field.or.null =
907 { "need editor, key, or series for " cite$ * " to crossref " *
911 { series emphasize * }
917 { format.crossref.editor * }
919 " \cite{" * crossref * "}" *
921 FUNCTION {format.incoll.inproc.crossref}
924 editor field.or.null author field.or.null =
927 { format.booktitle duplicate$ empty$
928 { "need editor, key, or booktitle for " cite$ * " to crossref " *
934 { word.in key * " " *}
937 { word.in format.crossref.editor * " " *}
939 " \cite{" * crossref * "}" *
941 FUNCTION {format.org.or.pub}
944 address empty$ t empty$ and
948 { address "address" bibinfo.check *
953 { ", " * address "address" bibinfo.check * }
960 FUNCTION {format.publisher.address}
961 { publisher "publisher" bibinfo.warn format.org.or.pub
964 FUNCTION {format.organization.address}
965 { organization "organization" bibinfo.check format.org.or.pub
970 format.authors "author" output.check
973 format.title "title" output.check
978 "journal" bibinfo.check
979 "journal" output.check
981 format.vol.num.pages output
982 format.date "year" output.check
984 { format.article.crossref output.nonnull
998 { format.editors "author and editor" output.check
1001 { format.authors output.nonnull
1004 { "author and editor" editor either.or.check }
1010 format.btitle "title" output.check
1012 { format.bvolume output
1013 format.edition output
1015 format.number.series output
1017 format.publisher.address output
1021 format.book.crossref output.nonnull
1024 format.date "year" output.check
1034 format.authors output
1037 format.title "title" output.check
1039 howpublished "howpublished" bibinfo.check output
1040 address "address" bibinfo.check output
1053 { format.editors "author and editor" output.check
1056 { format.authors output.nonnull
1059 { "author and editor" editor either.or.check }
1065 format.btitle "title" output.check
1068 format.bvolume output
1069 format.edition output
1070 format.chapter.pages "chapter and pages" output.check
1072 format.number.series output
1074 format.publisher.address output
1077 format.chapter.pages "chapter and pages" output.check
1079 format.book.crossref output.nonnull
1082 format.date "year" output.check
1091 FUNCTION {incollection}
1093 format.authors "author" output.check
1096 format.title "title" output.check
1099 { format.in.ed.booktitle "booktitle" output.check
1100 format.number.series output
1101 format.edition output
1102 format.chapter.pages output
1104 format.publisher.address output
1105 format.date "year" output.check
1107 { format.incoll.inproc.crossref output.nonnull
1108 format.chapter.pages output
1118 FUNCTION {inproceedings}
1120 format.authors "author" output.check
1123 format.title "title" output.check
1126 { format.in.ed.booktitle "booktitle" output.check
1127 format.number.series output
1131 { format.organization.address output }
1132 { organization "organization" bibinfo.check output
1133 format.publisher.address output
1136 format.date "year" output.check
1138 { format.incoll.inproc.crossref output.nonnull
1149 FUNCTION {conference} { inproceedings }
1153 { organization "organization" bibinfo.check
1154 duplicate$ empty$ 'pop$
1156 address "address" bibinfo.check output
1160 { format.authors output.nonnull }
1164 format.btitle "title" output.check
1166 { organization empty$
1168 address new.block.checka
1169 address "address" bibinfo.check output
1175 organization address new.block.checkb
1176 organization "organization" bibinfo.check output
1177 address "address" bibinfo.check output
1180 format.edition output
1190 FUNCTION {mastersthesis}
1192 format.authors "author" output.check
1196 "title" output.check
1198 bbl.mthesis format.thesis.type output.nonnull
1199 school "school" bibinfo.warn output
1200 address "address" bibinfo.check output
1201 format.date "year" output.check
1212 format.authors output
1214 title howpublished new.block.checkb
1216 howpublished new.block.checka
1217 howpublished "howpublished" bibinfo.check output
1227 FUNCTION {phdthesis}
1229 format.authors "author" output.check
1233 "title" output.check
1235 bbl.phdthesis format.thesis.type output.nonnull
1236 school "school" bibinfo.warn output
1237 address "address" bibinfo.check output
1238 format.date "year" output.check
1247 FUNCTION {proceedings}
1250 { organization "organization" bibinfo.check output
1252 { format.editors output.nonnull }
1256 format.btitle "title" output.check
1257 format.bvolume output
1258 format.number.series output
1264 format.publisher.address output
1271 format.organization.address output }
1274 organization "organization" bibinfo.check output
1275 format.publisher.address output
1280 format.date "year" output.check
1289 FUNCTION {techreport}
1291 format.authors "author" output.check
1295 "title" output.check
1297 format.tr.number output.nonnull
1298 institution "institution" bibinfo.warn output
1299 address "address" bibinfo.check output
1300 format.date "year" output.check
1309 FUNCTION {unpublished}
1311 format.authors "author" output.check
1314 format.title "title" output.check
1320 format.note "note" output.check
1324 FUNCTION {default.type} { misc }
1331 FUNCTION {chop.word}
1334 s #1 len substring$ =
1335 { s len #1 + global.max$ substring$ }
1339 FUNCTION {sort.format.names}
1343 s num.names$ 'numnames :=
1344 numnames 'namesleft :=
1347 "{ll{ }}{ f{ }}{ jj{ }}"
1352 namesleft #1 = t "others" = and
1359 nameptr #1 + 'nameptr :=
1360 namesleft #1 - 'namesleft :=
1365 FUNCTION {sort.format.title}
1369 "The " #4 t chop.word
1373 #1 global.max$ substring$
1375 FUNCTION {author.sort}
1378 { "to sort, need author or key in " cite$ * warning$
1384 { author sort.format.names }
1387 FUNCTION {author.editor.sort}
1391 { "to sort, need author, editor, or key in " cite$ * warning$
1397 { editor sort.format.names }
1400 { author sort.format.names }
1403 FUNCTION {author.organization.sort}
1405 { organization empty$
1407 { "to sort, need author, organization, or key in " cite$ * warning$
1413 { "The " #4 organization chop.word sortify }
1416 { author sort.format.names }
1419 FUNCTION {editor.organization.sort}
1421 { organization empty$
1423 { "to sort, need editor, organization, or key in " cite$ * warning$
1429 { "The " #4 organization chop.word sortify }
1432 { editor sort.format.names }
1440 { type$ "proceedings" =
1441 'editor.organization.sort
1443 'author.organization.sort
1452 year field.or.null sortify
1459 #1 entry.max$ substring$
1464 STRINGS { longest.label }
1465 INTEGERS { number.label longest.label.width }
1466 FUNCTION {initialize.longest.label}
1467 { "" 'longest.label :=
1469 #0 'longest.label.width :=
1471 FUNCTION {longest.label.pass}
1472 { number.label int.to.str$ 'label :=
1473 number.label #1 + 'number.label :=
1474 label width$ longest.label.width >
1475 { label 'longest.label :=
1476 label width$ 'longest.label.width :=
1481 EXECUTE {initialize.longest.label}
1482 ITERATE {longest.label.pass}
1483 FUNCTION {begin.bib}
1486 { preamble$ write$ newline$ }
1488 "\begin{thebibliography}{" longest.label * "}" *
1490 "\providecommand{\url}[1]{{#1}}"
1492 "\providecommand{\urlprefix}{URL }"
1494 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1496 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else"
1498 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1502 EXECUTE {init.state.consts}
1503 ITERATE {call.type$}
1506 "\end{thebibliography}" write$ newline$
1509 %% End of customized bst file
1511 %% End of file `spmpsci.bst'.