2 %% This is file `spphys.bst',
3 %% generated with the docstrip utility.
5 %% The original source files were:
7 %% merlin.mbs (with options: `seq-no,vonx,nm-init,ed-au,yr-par,xmth,jtit-x,jttl-rm,thtit-a,vol-bf,volp-com,jpg-1,pgsep-c,num-xser,ser-vol,ser-ed,jnm-x,pub-date,pre-pub,doi,edpar,edby,fin-bare,pp,ed,abr,ord,jabr,xand,url,url-blk,nfss,')
8 %% ----------------------------------------
9 %%********************************************************************************%%
11 %% For Springer physics publications. Based on the APS reference style. %%
12 %% Report bugs and improvements to: Joylene Vette-Guillaume or Frank Holzwarth %%
13 %% Springer-Verlag 2004/10/15 %%
15 %%********************************************************************************%%
17 %% Copyright 1994-2004 Patrick W Daly
18 % ===============================================================
20 % This bibliographic style (bst) file has been generated from one or
21 % more master bibliographic style (mbs) files, listed above.
23 % This generated file can be redistributed and/or modified under the terms
24 % of the LaTeX Project Public License Distributed from CTAN
25 % archives in directory macros/latex/base/lppl.txt; either
26 % version 1 of the License, or any later version.
27 % ===============================================================
28 % Name and version information of the main mbs file:
29 % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)]
30 % For use with BibTeX version 0.99a or later
31 %-------------------------------------------------------------------
32 % This bibliography style file is intended for texts in ENGLISH
33 % This is a numerical citation style, and as such is standard LaTeX.
34 % It requires no extra package to interface to the main text.
35 % The form of the \bibitem entries is
37 % Usage of \cite is as follows:
39 % \cite[chap. 2]{key} ==>> [#, chap. 2]
40 % where # is a number determined by the ordering in the reference list.
41 % The order in the reference list is that by which the works were originally
42 % cited in the text, or that in the database.
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}
286 FUNCTION {bbl.second}
292 FUNCTION {bbl.fourth}
335 { duplicate$ "1" swap$ *
336 #-2 #1 substring$ "1" =
338 { duplicate$ #-1 #1 substring$
355 MACRO {acmcs} {"ACM Comput. Surv."}
357 MACRO {acta} {"Acta Inf."}
359 MACRO {cacm} {"Commun. ACM"}
361 MACRO {ibmjrd} {"IBM J. Res. Dev."}
363 MACRO {ibmsj} {"IBM Syst.~J."}
365 MACRO {ieeese} {"IEEE Trans. Software Eng."}
367 MACRO {ieeetc} {"IEEE Trans. Comput."}
370 {"IEEE Trans. Comput. Aid. Des."}
372 MACRO {ipl} {"Inf. Process. Lett."}
374 MACRO {jacm} {"J.~ACM"}
376 MACRO {jcss} {"J.~Comput. Syst. Sci."}
378 MACRO {scp} {"Sci. Comput. Program."}
380 MACRO {sicomp} {"SIAM J. Comput."}
382 MACRO {tocs} {"ACM Trans. Comput. Syst."}
384 MACRO {tods} {"ACM Trans. Database Syst."}
386 MACRO {tog} {"ACM Trans. Graphic."}
388 MACRO {toms} {"ACM Trans. Math. Software"}
390 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
392 MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
394 MACRO {tcs} {"Theor. Comput. Sci."}
396 FUNCTION {bibinfo.check}
414 FUNCTION {bibinfo.warn}
418 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
423 swap$ "empty " swap$ * " in " * cite$ * warning$
432 FUNCTION {format.url}
435 { "\urlprefix\url{" url * "}" * }
440 INTEGERS { nameptr namesleft numnames }
442 FUNCTION {format.names}
444 duplicate$ empty$ 'skip$ {
448 s num.names$ 'numnames :=
449 numnames 'namesleft :=
452 "{f{.}.~}{vv~}{ll}{, jj}"
454 bibinfo bibinfo.check
462 s nameptr "{ll}" format.name$ duplicate$ "others" =
477 nameptr #1 + 'nameptr :=
478 namesleft #1 - 'namesleft :=
483 FUNCTION {format.names.ed}
487 FUNCTION {format.authors}
488 { author "author" format.names
490 FUNCTION {get.bbl.editor}
491 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
493 FUNCTION {format.editors}
494 { editor "editor" format.names duplicate$ empty$ 'skip$
503 FUNCTION {format.doi}
504 { doi "doi" bibinfo.check
505 duplicate$ empty$ 'skip$
508 "\doi{" swap$ * "}" *
512 FUNCTION {format.note}
516 { note #1 #1 substring$
519 { output.state mid.sentence =
526 note #2 global.max$ substring$ * "note" bibinfo.check
531 FUNCTION {format.title}
533 duplicate$ empty$ 'skip$
536 "title" bibinfo.check
538 FUNCTION {output.bibitem}
545 before.all 'output.state :=
550 swap$ duplicate$ "1" =
551 swap$ duplicate$ "2" =
552 swap$ duplicate$ "3" =
553 swap$ duplicate$ "4" =
554 swap$ duplicate$ "5" =
555 swap$ duplicate$ "6" =
556 swap$ duplicate$ "7" =
557 swap$ duplicate$ "8" =
558 swap$ "9" = or or or or or or or or or
560 FUNCTION {n.separate}
565 { t #-1 #1 substring$ if.digit
566 { numnames #1 + 'numnames := }
569 t #-1 #1 substring$ swap$ *
570 t #-2 global.max$ substring$ 't :=
572 { duplicate$ #1 #2 substring$ swap$
573 #3 global.max$ substring$
587 { t #1 #1 substring$ "-" =
588 { t #1 #2 substring$ "--" = not
590 t #2 global.max$ substring$ 't :=
592 { { t #1 #1 substring$ "-" = }
594 t #2 global.max$ substring$ 't :=
600 { t #1 #1 substring$ *
601 t #2 global.max$ substring$ 't :=
612 FUNCTION {format.date}
616 year "year" bibinfo.check duplicate$ empty$
618 { "there's a month but no year in " cite$ * warning$ }
634 before.all 'output.state :=
639 FUNCTION {format.btitle}
640 { title "title" bibinfo.check
641 duplicate$ empty$ 'skip$
647 FUNCTION {either.or.check}
650 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
653 FUNCTION {format.bvolume}
656 { bbl.volume volume tie.or.space.prefix
657 "volume" bibinfo.check * *
658 series "series" bibinfo.check
659 duplicate$ empty$ 'pop$
660 { emphasize ", " * swap$ * }
662 "volume and number" number either.or.check
666 FUNCTION {format.number.series}
669 { series field.or.null }
671 { number "number" bibinfo.check }
672 { output.state mid.sentence =
674 { bbl.number capitalize }
676 number tie.or.space.prefix "number" bibinfo.check * *
678 series "series" bibinfo.check *
689 duplicate$ "0" chr.to.int$ < not
690 swap$ "9" chr.to.int$ > not and
693 FUNCTION {extract.num}
698 t #2 global.max$ substring$ 't :=
711 FUNCTION {convert.edition}
712 { extract.num "l" change.case$ 's :=
713 s "first" = s "1" = or
715 { s "second" = s "2" = or
717 { s "third" = s "3" = or
719 { s "fourth" = s "4" = or
721 { s "fifth" = s "5" = or
723 { s #1 #1 substring$ is.num
740 FUNCTION {format.edition}
741 { edition duplicate$ empty$ 'skip$
744 output.state mid.sentence =
748 "edition" bibinfo.check
753 INTEGERS { multiresult }
754 FUNCTION {multi.page.check}
763 swap$ duplicate$ "," =
766 { #1 'multiresult := }
767 { t #2 global.max$ substring$ 't := }
773 FUNCTION {format.pages}
774 { pages duplicate$ empty$ 'skip$
775 { duplicate$ multi.page.check
785 "pages" bibinfo.check
790 FUNCTION {first.page}
793 { t empty$ not t #1 #1 substring$ "-" = not and }
794 { t #1 #1 substring$ *
795 t #2 global.max$ substring$ 't :=
800 FUNCTION {format.journal.pages}
801 { pages duplicate$ empty$ 'pop$
802 { swap$ duplicate$ empty$
803 { pop$ pop$ format.pages }
808 "pages" bibinfo.check
815 FUNCTION {format.journal.eid}
816 { eid "eid" bibinfo.check
817 duplicate$ empty$ 'pop$
818 { swap$ duplicate$ empty$ 'skip$
827 FUNCTION {format.vol.num.pages}
828 { volume field.or.null
829 duplicate$ empty$ 'skip$
831 "volume" bibinfo.check
835 number "number" bibinfo.check duplicate$ empty$ 'skip$
837 swap$ duplicate$ empty$
838 { "there's a number but no volume in " cite$ * warning$ }
846 { format.journal.pages }
847 { format.journal.eid }
851 FUNCTION {format.chapter.pages}
856 { type "l" change.case$
860 chapter tie.or.space.prefix
861 "chapter" bibinfo.check
865 { ", " * format.pages * }
871 FUNCTION {format.booktitle}
873 booktitle "booktitle" bibinfo.check
876 FUNCTION {format.in.ed.booktitle}
877 { format.booktitle duplicate$ empty$ 'skip$
879 format.bvolume duplicate$ empty$ 'pop$
882 editor "editor" format.names.ed duplicate$ empty$ 'pop$
895 FUNCTION {empty.misc.check}
896 { author empty$ title empty$ howpublished empty$
897 month empty$ year empty$ note empty$
899 { "all relevant fields are empty in " cite$ * warning$ }
903 FUNCTION {format.thesis.type}
904 { type duplicate$ empty$
907 "t" change.case$ "type" bibinfo.check
911 FUNCTION {format.tr.number}
912 { number "number" bibinfo.check
913 type duplicate$ empty$
918 swap$ duplicate$ empty$
919 { pop$ "t" change.case$ }
920 { tie.or.space.prefix * * }
923 FUNCTION {format.article.crossref}
925 key duplicate$ empty$
927 journal duplicate$ empty$
928 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
929 { "journal" bibinfo.check emphasize word.in swap$ * }
932 { word.in swap$ * " " *}
934 " \cite{" * crossref * "}" *
936 FUNCTION {format.crossref.editor}
937 { editor #1 "{vv~}{ll}" format.name$
938 "editor" bibinfo.check
939 editor num.names$ duplicate$
942 "editor" bibinfo.check
948 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
950 "editor" bibinfo.check
956 * editor #2 "{vv~}{ll}" format.name$
957 "editor" bibinfo.check
966 FUNCTION {format.book.crossref}
967 { volume duplicate$ empty$
968 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
973 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
977 editor field.or.null author field.or.null =
981 { "need editor, key, or series for " cite$ * " to crossref " *
985 { series emphasize * }
991 { format.crossref.editor * }
993 " \cite{" * crossref * "}" *
995 FUNCTION {format.incoll.inproc.crossref}
998 editor field.or.null author field.or.null =
1001 { format.booktitle duplicate$ empty$
1002 { "need editor, key, or booktitle for " cite$ * " to crossref " *
1008 { word.in key * " " *}
1011 { word.in format.crossref.editor * " " *}
1013 " \cite{" * crossref * "}" *
1015 FUNCTION {format.org.or.pub}
1019 { "empty year in " cite$ * warning$ }
1022 address empty$ t empty$ and
1028 { address "address" bibinfo.check *
1033 { ", " * address "address" bibinfo.check * }
1039 { t empty$ address empty$ and
1043 year "year" 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
1066 "journal" bibinfo.check
1067 "journal" output.check
1069 format.vol.num.pages output
1070 format.date "year" output.check
1072 { format.article.crossref output.nonnull
1086 { format.editors "author and editor" output.check
1088 { format.authors output.nonnull
1090 { "author and editor" editor either.or.check }
1096 format.btitle "title" output.check
1098 { format.bvolume output
1099 format.edition output
1101 format.number.series output
1103 format.publisher.address output
1107 format.book.crossref output.nonnull
1108 format.date "year" output.check
1120 format.authors output
1122 format.title "title" output.check
1124 howpublished "howpublished" bibinfo.check output
1125 address "address" bibinfo.check output
1138 { format.editors "author and editor" output.check
1140 { format.authors output.nonnull
1142 { "author and editor" editor either.or.check }
1148 format.btitle "title" output.check
1151 format.publisher.address output
1152 format.bvolume output
1153 format.edition output
1154 format.chapter.pages "chapter and pages" output.check
1156 format.number.series output
1160 format.chapter.pages "chapter and pages" output.check
1162 format.book.crossref output.nonnull
1163 format.date "year" output.check
1174 FUNCTION {incollection}
1176 format.authors "author" output.check
1179 { format.in.ed.booktitle "booktitle" output.check
1180 format.edition output
1181 format.number.series output
1182 format.publisher.address output
1183 format.chapter.pages output
1186 { format.incoll.inproc.crossref output.nonnull
1187 format.chapter.pages output
1197 FUNCTION {inproceedings}
1199 format.authors "author" output.check
1202 { format.in.ed.booktitle "booktitle" output.check
1205 { format.organization.address output }
1206 { organization "organization" bibinfo.check output
1207 format.publisher.address output
1210 format.bvolume output
1211 format.number.series output
1214 { format.incoll.inproc.crossref output.nonnull
1225 FUNCTION {conference} { inproceedings }
1229 { organization "organization" bibinfo.check
1230 duplicate$ empty$ 'pop$
1232 address "address" bibinfo.check output
1236 { format.authors output.nonnull }
1239 format.btitle "title" output.check
1241 { organization empty$
1243 address new.block.checka
1244 address "address" bibinfo.check output
1250 organization address new.block.checkb
1251 organization "organization" bibinfo.check output
1252 address "address" bibinfo.check output
1255 format.edition output
1265 FUNCTION {mastersthesis}
1267 format.authors "author" output.check
1270 "title" output.check
1272 bbl.mthesis format.thesis.type output.nonnull
1273 school "school" bibinfo.warn output
1274 address "address" bibinfo.check output
1275 format.date "year" output.check
1286 format.authors output
1287 title howpublished new.block.checkb
1289 howpublished new.block.checka
1290 howpublished "howpublished" bibinfo.check output
1300 FUNCTION {phdthesis}
1302 format.authors "author" output.check
1305 "title" output.check
1307 bbl.phdthesis format.thesis.type output.nonnull
1308 school "school" bibinfo.warn output
1309 address "address" bibinfo.check output
1310 format.date "year" output.check
1319 FUNCTION {proceedings}
1322 { organization "organization" bibinfo.check output
1324 { format.editors output.nonnull }
1327 format.btitle "title" output.check
1328 format.bvolume output
1329 format.number.series output
1335 format.publisher.address output
1342 format.organization.address output }
1345 organization "organization" bibinfo.check output
1346 format.publisher.address output
1359 FUNCTION {techreport}
1361 format.authors "author" output.check
1364 "title" output.check
1366 format.tr.number output.nonnull
1367 institution "institution" bibinfo.warn output
1368 address "address" bibinfo.check output
1369 format.date "year" output.check
1378 FUNCTION {unpublished}
1380 format.authors "author" output.check
1382 format.title "title" output.check
1388 format.note "note" output.check
1392 FUNCTION {default.type} { misc }
1394 STRINGS { longest.label }
1395 INTEGERS { number.label longest.label.width }
1396 FUNCTION {initialize.longest.label}
1397 { "" 'longest.label :=
1399 #0 'longest.label.width :=
1401 FUNCTION {longest.label.pass}
1402 { number.label int.to.str$ 'label :=
1403 number.label #1 + 'number.label :=
1404 label width$ longest.label.width >
1405 { label 'longest.label :=
1406 label width$ 'longest.label.width :=
1411 EXECUTE {initialize.longest.label}
1412 ITERATE {longest.label.pass}
1413 FUNCTION {begin.bib}
1416 { preamble$ write$ newline$ }
1418 "\begin{thebibliography}{" longest.label * "}" *
1420 "\providecommand{\url}[1]{{#1}}"
1422 "\providecommand{\urlprefix}{URL }"
1424 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1426 " \providecommand{\doi}[1]{DOI \discretionary{}{}{}#1}\else"
1428 " \providecommand{\doi}{DOI \discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1432 EXECUTE {init.state.consts}
1433 ITERATE {call.type$}
1436 "\end{thebibliography}" write$ newline$
1439 %% End of customized bst file
1441 %% End of file `spphys.bst'.