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$
578 { t #1 #1 substring$ "-" =
579 { t #1 #2 substring$ "--" = not
581 t #2 global.max$ substring$ 't :=
583 { { t #1 #1 substring$ "-" = }
585 t #2 global.max$ substring$ 't :=
591 { t #1 #1 substring$ *
592 t #2 global.max$ substring$ 't :=
604 FUNCTION {format.date}
608 year "year" bibinfo.check duplicate$ empty$
610 { "there's a month but no year in " cite$ * warning$ }
626 before.all 'output.state :=
631 FUNCTION {format.btitle}
632 { title "title" bibinfo.check
633 duplicate$ empty$ 'skip$
638 FUNCTION {either.or.check}
641 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
644 FUNCTION {format.bvolume}
647 { bbl.volume volume tie.or.space.prefix
648 "volume" bibinfo.check * *
649 series "series" bibinfo.check
650 duplicate$ empty$ 'pop$
651 { emphasize ", " * swap$ * }
653 "volume and number" number either.or.check
657 FUNCTION {format.number.series}
660 { series field.or.null }
662 { number "number" bibinfo.check }
663 { output.state mid.sentence =
665 { bbl.number capitalize }
667 number tie.or.space.prefix "number" bibinfo.check * *
669 series "series" bibinfo.check *
679 FUNCTION {format.edition}
680 { edition duplicate$ empty$ 'skip$
682 output.state mid.sentence =
686 "edition" bibinfo.check
691 INTEGERS { multiresult }
692 FUNCTION {multi.page.check}
701 swap$ duplicate$ "," =
704 { #1 'multiresult := }
705 { t #2 global.max$ substring$ 't := }
711 FUNCTION {format.pages}
712 { pages duplicate$ empty$ 'skip$
713 { duplicate$ multi.page.check
723 "pages" bibinfo.check
728 FUNCTION {format.journal.pages}
729 { pages duplicate$ empty$ 'pop$
730 { swap$ duplicate$ empty$
731 { pop$ pop$ format.pages }
736 "pages" bibinfo.check
743 FUNCTION {format.journal.eid}
744 { eid "eid" bibinfo.check
745 duplicate$ empty$ 'pop$
746 { swap$ duplicate$ empty$ 'skip$
755 FUNCTION {format.vol.num.pages}
756 { volume field.or.null
757 duplicate$ empty$ 'skip$
759 "volume" bibinfo.check
763 number "number" bibinfo.check duplicate$ empty$ 'skip$
765 swap$ duplicate$ empty$
766 { "there's a number but no volume in " cite$ * warning$ }
774 { format.journal.pages }
775 { format.journal.eid }
779 FUNCTION {format.chapter.pages}
784 { type "l" change.case$
788 chapter tie.or.space.prefix
789 "chapter" bibinfo.check
793 { ", " * format.pages * }
799 FUNCTION {format.booktitle}
801 booktitle "booktitle" bibinfo.check
803 FUNCTION {format.in.ed.booktitle}
804 { format.booktitle duplicate$ empty$ 'skip$
806 format.bvolume duplicate$ empty$ 'pop$
809 editor "editor" format.names.ed duplicate$ empty$ 'pop$
821 FUNCTION {empty.misc.check}
822 { author empty$ title empty$ howpublished empty$
823 month empty$ year empty$ note empty$
826 { "all relevant fields are empty in " cite$ * warning$ }
830 FUNCTION {format.thesis.type}
831 { type duplicate$ empty$
834 "t" change.case$ "type" bibinfo.check
838 FUNCTION {format.tr.number}
839 { number "number" bibinfo.check
840 type duplicate$ empty$
845 swap$ duplicate$ empty$
846 { pop$ "t" change.case$ }
847 { tie.or.space.prefix * * }
850 FUNCTION {format.article.crossref}
852 key duplicate$ empty$
854 journal duplicate$ empty$
855 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
856 { "journal" bibinfo.check emphasize word.in swap$ * }
859 { word.in swap$ * " " *}
861 " \cite{" * crossref * "}" *
863 FUNCTION {format.crossref.editor}
864 { editor #1 "{vv~}{ll}" format.name$
865 "editor" bibinfo.check
866 editor num.names$ duplicate$
869 "editor" bibinfo.check
875 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
877 "editor" bibinfo.check
883 * editor #2 "{vv~}{ll}" format.name$
884 "editor" bibinfo.check
893 FUNCTION {format.book.crossref}
894 { volume duplicate$ empty$
895 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
900 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
904 editor field.or.null author field.or.null =
908 { "need editor, key, or series for " cite$ * " to crossref " *
912 { series emphasize * }
918 { format.crossref.editor * }
920 " \cite{" * crossref * "}" *
922 FUNCTION {format.incoll.inproc.crossref}
925 editor field.or.null author field.or.null =
928 { format.booktitle duplicate$ empty$
929 { "need editor, key, or booktitle for " cite$ * " to crossref " *
935 { word.in key * " " *}
938 { word.in format.crossref.editor * " " *}
940 " \cite{" * crossref * "}" *
942 FUNCTION {format.org.or.pub}
945 address empty$ t empty$ and
949 { address "address" bibinfo.check *
954 { ", " * address "address" bibinfo.check * }
961 FUNCTION {format.publisher.address}
962 { publisher "publisher" bibinfo.warn format.org.or.pub
965 FUNCTION {format.organization.address}
966 { organization "organization" bibinfo.check format.org.or.pub
971 format.authors "author" output.check
974 format.title "title" output.check
979 "journal" bibinfo.check
980 "journal" output.check
982 format.vol.num.pages output
983 format.date "year" output.check
985 { format.article.crossref output.nonnull
999 { format.editors "author and editor" output.check
1002 { format.authors output.nonnull
1005 { "author and editor" editor either.or.check }
1011 format.btitle "title" output.check
1013 { format.bvolume output
1014 format.edition output
1016 format.number.series output
1018 format.publisher.address output
1022 format.book.crossref output.nonnull
1025 format.date "year" output.check
1035 format.authors output
1038 format.title "title" output.check
1040 howpublished "howpublished" bibinfo.check output
1041 address "address" bibinfo.check output
1054 { format.editors "author and editor" output.check
1057 { format.authors output.nonnull
1060 { "author and editor" editor either.or.check }
1066 format.btitle "title" output.check
1069 format.bvolume output
1070 format.edition output
1071 format.chapter.pages "chapter and pages" output.check
1073 format.number.series output
1075 format.publisher.address output
1078 format.chapter.pages "chapter and pages" output.check
1080 format.book.crossref output.nonnull
1083 format.date "year" output.check
1092 FUNCTION {incollection}
1094 format.authors "author" output.check
1097 format.title "title" output.check
1100 { format.in.ed.booktitle "booktitle" output.check
1101 format.number.series output
1102 format.edition output
1103 format.chapter.pages output
1105 format.publisher.address output
1106 format.date "year" output.check
1108 { format.incoll.inproc.crossref output.nonnull
1109 format.chapter.pages output
1119 FUNCTION {inproceedings}
1121 format.authors "author" output.check
1124 format.title "title" output.check
1127 { format.in.ed.booktitle "booktitle" output.check
1128 format.number.series output
1132 { format.organization.address output }
1133 { organization "organization" bibinfo.check output
1134 format.publisher.address output
1137 format.date "year" output.check
1139 { format.incoll.inproc.crossref output.nonnull
1150 FUNCTION {conference} { inproceedings }
1154 { organization "organization" bibinfo.check
1155 duplicate$ empty$ 'pop$
1157 address "address" bibinfo.check output
1161 { format.authors output.nonnull }
1165 format.btitle "title" output.check
1167 { organization empty$
1169 address new.block.checka
1170 address "address" bibinfo.check output
1176 organization address new.block.checkb
1177 organization "organization" bibinfo.check output
1178 address "address" bibinfo.check output
1181 format.edition output
1191 FUNCTION {mastersthesis}
1193 format.authors "author" output.check
1197 "title" output.check
1199 bbl.mthesis format.thesis.type output.nonnull
1200 school "school" bibinfo.warn output
1201 address "address" bibinfo.check output
1202 format.date "year" output.check
1213 format.authors output
1215 title howpublished new.block.checkb
1217 howpublished new.block.checka
1218 howpublished "howpublished" bibinfo.check output
1228 FUNCTION {phdthesis}
1230 format.authors "author" output.check
1234 "title" output.check
1236 bbl.phdthesis format.thesis.type output.nonnull
1237 school "school" bibinfo.warn output
1238 address "address" bibinfo.check output
1239 format.date "year" output.check
1248 FUNCTION {proceedings}
1251 { organization "organization" bibinfo.check output
1253 { format.editors output.nonnull }
1257 format.btitle "title" output.check
1258 format.bvolume output
1259 format.number.series output
1265 format.publisher.address output
1272 format.organization.address output }
1275 organization "organization" bibinfo.check output
1276 format.publisher.address output
1281 format.date "year" output.check
1290 FUNCTION {techreport}
1292 format.authors "author" output.check
1296 "title" output.check
1298 format.tr.number output.nonnull
1299 institution "institution" bibinfo.warn output
1300 address "address" bibinfo.check output
1301 format.date "year" output.check
1310 FUNCTION {unpublished}
1312 format.authors "author" output.check
1315 format.title "title" output.check
1321 format.note "note" output.check
1325 FUNCTION {default.type} { misc }
1332 FUNCTION {chop.word}
1335 s #1 len substring$ =
1336 { s len #1 + global.max$ substring$ }
1340 FUNCTION {sort.format.names}
1344 s num.names$ 'numnames :=
1345 numnames 'namesleft :=
1348 "{ll{ }}{ f{ }}{ jj{ }}"
1353 namesleft #1 = t "others" = and
1360 nameptr #1 + 'nameptr :=
1361 namesleft #1 - 'namesleft :=
1366 FUNCTION {sort.format.title}
1370 "The " #4 t chop.word
1374 #1 global.max$ substring$
1376 FUNCTION {author.sort}
1379 { "to sort, need author or key in " cite$ * warning$
1385 { author sort.format.names }
1388 FUNCTION {author.editor.sort}
1392 { "to sort, need author, editor, or key in " cite$ * warning$
1398 { editor sort.format.names }
1401 { author sort.format.names }
1404 FUNCTION {author.organization.sort}
1406 { organization empty$
1408 { "to sort, need author, organization, or key in " cite$ * warning$
1414 { "The " #4 organization chop.word sortify }
1417 { author sort.format.names }
1420 FUNCTION {editor.organization.sort}
1422 { organization empty$
1424 { "to sort, need editor, organization, or key in " cite$ * warning$
1430 { "The " #4 organization chop.word sortify }
1433 { editor sort.format.names }
1441 { type$ "proceedings" =
1442 'editor.organization.sort
1444 'author.organization.sort
1453 year field.or.null sortify
1460 #1 entry.max$ substring$
1465 STRINGS { longest.label }
1466 INTEGERS { number.label longest.label.width }
1467 FUNCTION {initialize.longest.label}
1468 { "" 'longest.label :=
1470 #0 'longest.label.width :=
1472 FUNCTION {longest.label.pass}
1473 { number.label int.to.str$ 'label :=
1474 number.label #1 + 'number.label :=
1475 label width$ longest.label.width >
1476 { label 'longest.label :=
1477 label width$ 'longest.label.width :=
1482 EXECUTE {initialize.longest.label}
1483 ITERATE {longest.label.pass}
1484 FUNCTION {begin.bib}
1487 { preamble$ write$ newline$ }
1489 "\begin{thebibliography}{" longest.label * "}" *
1491 "\providecommand{\url}[1]{{#1}}"
1493 "\providecommand{\urlprefix}{URL }"
1495 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1497 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else"
1499 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1503 EXECUTE {init.state.consts}
1504 ITERATE {call.type$}
1507 "\end{thebibliography}" write$ newline$
1510 %% End of customized bst file
1512 %% End of file `spmpsci.bst'.