]> AND Private Git Repository - bibliographie.git/blob - styles/spphys.bst
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
resf
[bibliographie.git] / styles / spphys.bst
1 %%
2 %% This is file `spphys.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
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 %%********************************************************************************%%
10 %%                                                                                %%
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        %%
14 %%                                                                                %%
15 %%********************************************************************************%%
16 %%
17 %% Copyright 1994-2004 Patrick W Daly
18  % ===============================================================
19  % IMPORTANT NOTICE:
20  % This bibliographic style (bst) file has been generated from one or
21  % more master bibliographic style (mbs) files, listed above.
22  %
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
36  %   \bibitem{key}...
37  % Usage of \cite is as follows:
38  %   \cite{key} ==>>          [#]
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  %---------------------------------------------------------------------
44
45 ENTRY
46   { address
47     author
48     booktitle
49     chapter
50     doi
51     edition
52     editor
53     eid
54     howpublished
55     institution
56     journal
57     key
58     month
59     note
60     number
61     organization
62     pages
63     publisher
64     school
65     series
66     title
67     type
68     url
69     volume
70     year
71   }
72   {}
73   { label }
74 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
75 FUNCTION {init.state.consts}
76 { #0 'before.all :=
77   #1 'mid.sentence :=
78   #2 'after.sentence :=
79   #3 'after.block :=
80 }
81 STRINGS { s t}
82 FUNCTION {output.nonnull}
83 { 's :=
84   output.state mid.sentence =
85     { ", " * write$ }
86     { output.state after.block =
87         { add.period$ write$
88           newline$
89           "\newblock " write$
90         }
91         { output.state before.all =
92             'write$
93             { add.period$ " " * write$ }
94           if$
95         }
96       if$
97       mid.sentence 'output.state :=
98     }
99   if$
100   s
101 }
102 FUNCTION {output}
103 { duplicate$ empty$
104     'pop$
105     'output.nonnull
106   if$
107 }
108 FUNCTION {output.check}
109 { 't :=
110   duplicate$ empty$
111     { pop$ "empty " t * " in " * cite$ * warning$ }
112     'output.nonnull
113   if$
114 }
115 FUNCTION {fin.entry}
116 { duplicate$ empty$
117     'pop$
118     'write$
119   if$
120   newline$
121 }
122
123 FUNCTION {new.block}
124 { output.state before.all =
125     'skip$
126     { after.block 'output.state := }
127   if$
128 }
129 FUNCTION {new.sentence}
130 { output.state after.block =
131     'skip$
132     { output.state before.all =
133         'skip$
134         { after.sentence 'output.state := }
135       if$
136     }
137   if$
138 }
139 FUNCTION {add.blank}
140 {  " " * before.all 'output.state :=
141 }
142
143 FUNCTION {add.comma}
144 { duplicate$ empty$
145     'skip$
146     { "," * add.blank }
147   if$
148 }
149
150 FUNCTION {date.block}
151 {
152   new.block
153 }
154
155 FUNCTION {not}
156 {   { #0 }
157     { #1 }
158   if$
159 }
160 FUNCTION {and}
161 {   'skip$
162     { pop$ #0 }
163   if$
164 }
165 FUNCTION {or}
166 {   { pop$ #1 }
167     'skip$
168   if$
169 }
170 FUNCTION {new.block.checka}
171 { empty$
172     'skip$
173     'new.block
174   if$
175 }
176 FUNCTION {new.block.checkb}
177 { empty$
178   swap$ empty$
179   and
180     'skip$
181     'new.block
182   if$
183 }
184 FUNCTION {new.sentence.checka}
185 { empty$
186     'skip$
187     'new.sentence
188   if$
189 }
190 FUNCTION {new.sentence.checkb}
191 { empty$
192   swap$ empty$
193   and
194     'skip$
195     'new.sentence
196   if$
197 }
198 FUNCTION {field.or.null}
199 { duplicate$ empty$
200     { pop$ "" }
201     'skip$
202   if$
203 }
204 FUNCTION {emphasize}
205 { duplicate$ empty$
206     { pop$ "" }
207     { "\emph{" swap$ * "}" * }
208   if$
209 }
210 FUNCTION {bolden}
211 { duplicate$ empty$
212     { pop$ "" }
213     { "\textbf{" swap$ * "}" * }
214   if$
215 }
216 FUNCTION {tie.or.space.prefix}
217 { duplicate$ text.length$ #3 <
218     { "~" }
219     { " " }
220   if$
221   swap$
222 }
223
224 FUNCTION {capitalize}
225 { "u" change.case$ "t" change.case$ }
226
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
232 FUNCTION {bbl.and}
233 { "and"}
234
235 FUNCTION {bbl.etal}
236 { "et~al." }
237
238 FUNCTION {bbl.editors}
239 { "eds." }
240
241 FUNCTION {bbl.editor}
242 { "ed." }
243
244 FUNCTION {bbl.edby}
245 { "ed. by" }
246
247 FUNCTION {bbl.edition}
248 { "edn." }
249
250 FUNCTION {bbl.volume}
251 { "vol." }
252
253 FUNCTION {bbl.of}
254 { "of" }
255
256 FUNCTION {bbl.number}
257 { "no." }
258
259 FUNCTION {bbl.nr}
260 { "no." }
261
262 FUNCTION {bbl.in}
263 { "in" }
264
265 FUNCTION {bbl.pages}
266 { "pp." }
267
268 FUNCTION {bbl.page}
269 { "p." }
270
271 FUNCTION {bbl.chapter}
272 { "chap." }
273
274 FUNCTION {bbl.techrep}
275 { "Tech. Rep." }
276
277 FUNCTION {bbl.mthesis}
278 { "Master's thesis" }
279
280 FUNCTION {bbl.phdthesis}
281 { "Ph.D. thesis" }
282
283 FUNCTION {bbl.first}
284 { "1st" }
285
286 FUNCTION {bbl.second}
287 { "2nd" }
288
289 FUNCTION {bbl.third}
290 { "3rd" }
291
292 FUNCTION {bbl.fourth}
293 { "4th" }
294
295 FUNCTION {bbl.fifth}
296 { "5th" }
297
298 FUNCTION {bbl.st}
299 { "st" }
300
301 FUNCTION {bbl.nd}
302 { "nd" }
303
304 FUNCTION {bbl.rd}
305 { "rd" }
306
307 FUNCTION {bbl.th}
308 { "th" }
309
310 MACRO {jan} {"Jan."}
311
312 MACRO {feb} {"Feb."}
313
314 MACRO {mar} {"Mar."}
315
316 MACRO {apr} {"Apr."}
317
318 MACRO {may} {"May"}
319
320 MACRO {jun} {"Jun."}
321
322 MACRO {jul} {"Jul."}
323
324 MACRO {aug} {"Aug."}
325
326 MACRO {sep} {"Sep."}
327
328 MACRO {oct} {"Oct."}
329
330 MACRO {nov} {"Nov."}
331
332 MACRO {dec} {"Dec."}
333
334 FUNCTION {eng.ord}
335 { duplicate$ "1" swap$ *
336   #-2 #1 substring$ "1" =
337      { bbl.th * }
338      { duplicate$ #-1 #1 substring$
339        duplicate$ "1" =
340          { pop$ bbl.st * }
341          { duplicate$ "2" =
342              { pop$ bbl.nd * }
343              { "3" =
344                  { bbl.rd * }
345                  { bbl.th * }
346                if$
347              }
348            if$
349           }
350        if$
351      }
352    if$
353 }
354
355 MACRO {acmcs} {"ACM Comput. Surv."}
356
357 MACRO {acta} {"Acta Inf."}
358
359 MACRO {cacm} {"Commun. ACM"}
360
361 MACRO {ibmjrd} {"IBM J. Res. Dev."}
362
363 MACRO {ibmsj} {"IBM Syst.~J."}
364
365 MACRO {ieeese} {"IEEE Trans. Software Eng."}
366
367 MACRO {ieeetc} {"IEEE Trans. Comput."}
368
369 MACRO {ieeetcad}
370  {"IEEE Trans. Comput. Aid. Des."}
371
372 MACRO {ipl} {"Inf. Process. Lett."}
373
374 MACRO {jacm} {"J.~ACM"}
375
376 MACRO {jcss} {"J.~Comput. Syst. Sci."}
377
378 MACRO {scp} {"Sci. Comput. Program."}
379
380 MACRO {sicomp} {"SIAM J. Comput."}
381
382 MACRO {tocs} {"ACM Trans. Comput. Syst."}
383
384 MACRO {tods} {"ACM Trans. Database Syst."}
385
386 MACRO {tog} {"ACM Trans. Graphic."}
387
388 MACRO {toms} {"ACM Trans. Math. Software"}
389
390 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
391
392 MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
393
394 MACRO {tcs} {"Theor. Comput. Sci."}
395
396 FUNCTION {bibinfo.check}
397 { swap$
398   duplicate$ missing$
399     {
400       pop$ pop$
401       ""
402     }
403     { duplicate$ empty$
404         {
405           swap$ pop$
406         }
407         { swap$
408           pop$
409         }
410       if$
411     }
412   if$
413 }
414 FUNCTION {bibinfo.warn}
415 { swap$
416   duplicate$ missing$
417     {
418       swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
419       ""
420     }
421     { duplicate$ empty$
422         {
423           swap$ "empty " swap$ * " in " * cite$ * warning$
424         }
425         { swap$
426           pop$
427         }
428       if$
429     }
430   if$
431 }
432 FUNCTION {format.url}
433 { url empty$
434     { "" }
435     { "\urlprefix\url{" url * "}" * }
436   if$
437 }
438
439 STRINGS  { bibinfo}
440 INTEGERS { nameptr namesleft numnames }
441
442 FUNCTION {format.names}
443 { 'bibinfo :=
444   duplicate$ empty$ 'skip$ {
445   's :=
446   "" 't :=
447   #1 'nameptr :=
448   s num.names$ 'numnames :=
449   numnames 'namesleft :=
450     { namesleft #0 > }
451     { s nameptr
452       "{f{.}.~}{vv~}{ll}{, jj}"
453       format.name$
454       bibinfo bibinfo.check
455       't :=
456       nameptr #1 >
457         {
458           namesleft #1 >
459             { ", " * t * }
460             {
461               "," *
462               s nameptr "{ll}" format.name$ duplicate$ "others" =
463                 { 't := }
464                 { pop$ }
465               if$
466               t "others" =
467                 {
468                   " " * bbl.etal *
469                 }
470                 { " " * t * }
471               if$
472             }
473           if$
474         }
475         't
476       if$
477       nameptr #1 + 'nameptr :=
478       namesleft #1 - 'namesleft :=
479     }
480   while$
481   } if$
482 }
483 FUNCTION {format.names.ed}
484 {
485   format.names
486 }
487 FUNCTION {format.authors}
488 { author "author" format.names
489 }
490 FUNCTION {get.bbl.editor}
491 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
492
493 FUNCTION {format.editors}
494 { editor "editor" format.names duplicate$ empty$ 'skip$
495     {
496       " " *
497       get.bbl.editor
498    "(" swap$ * ")" *
499       *
500     }
501   if$
502 }
503 FUNCTION {format.doi}
504 { doi "doi" bibinfo.check
505   duplicate$ empty$ 'skip$
506     {
507       new.block
508       "\doi{" swap$ * "}" *
509     }
510   if$
511 }
512 FUNCTION {format.note}
513 {
514  note empty$
515     { "" }
516     { note #1 #1 substring$
517       duplicate$ "{" =
518         'skip$
519         { output.state mid.sentence =
520           { "l" }
521           { "u" }
522         if$
523         change.case$
524         }
525       if$
526       note #2 global.max$ substring$ * "note" bibinfo.check
527     }
528   if$
529 }
530
531 FUNCTION {format.title}
532 { title
533   duplicate$ empty$ 'skip$
534     { "t" change.case$ }
535   if$
536   "title" bibinfo.check
537 }
538 FUNCTION {output.bibitem}
539 { newline$
540   "\bibitem{" write$
541   cite$ write$
542   "}" write$
543   newline$
544   ""
545   before.all 'output.state :=
546 }
547
548 FUNCTION {if.digit}
549 { duplicate$ "0" =
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
559 }
560 FUNCTION {n.separate}
561 { 't :=
562   ""
563   #0 'numnames :=
564   { t empty$ not }
565   { t #-1 #1 substring$ if.digit
566       { numnames #1 + 'numnames := }
567       { #0 'numnames := }
568     if$
569     t #-1 #1 substring$ swap$ *
570     t #-2 global.max$ substring$ 't :=
571     numnames #5 =
572       { duplicate$ #1 #2 substring$ swap$
573         #3 global.max$ substring$
574         "," swap$ * *
575       }
576       'skip$
577     if$
578   }
579   while$
580 }
581 FUNCTION {n.dashify}
582 {
583   n.separate
584   't :=
585   ""
586     { t empty$ not }
587     { t #1 #1 substring$ "-" =
588         { t #1 #2 substring$ "--" = not
589             { "--" *
590               t #2 global.max$ substring$ 't :=
591             }
592             {   { t #1 #1 substring$ "-" = }
593                 { "-" *
594                   t #2 global.max$ substring$ 't :=
595                 }
596               while$
597             }
598           if$
599         }
600         { t #1 #1 substring$ *
601           t #2 global.max$ substring$ 't :=
602         }
603       if$
604     }
605   while$
606 }
607
608 FUNCTION {word.in}
609 { bbl.in
610   " " * }
611
612 FUNCTION {format.date}
613 {
614   ""
615   duplicate$ empty$
616   year  "year"  bibinfo.check duplicate$ empty$
617     { swap$ 'skip$
618         { "there's a month but no year in " cite$ * warning$ }
619       if$
620       *
621     }
622     { swap$ 'skip$
623         {
624           swap$
625           " " * swap$
626         }
627       if$
628       *
629     }
630   if$
631   duplicate$ empty$
632     'skip$
633     {
634       before.all 'output.state :=
635     " (" swap$ * ")" *
636     }
637   if$
638 }
639 FUNCTION {format.btitle}
640 { title "title" bibinfo.check
641   duplicate$ empty$ 'skip$
642     {
643       emphasize
644     }
645   if$
646 }
647 FUNCTION {either.or.check}
648 { empty$
649     'pop$
650     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
651   if$
652 }
653 FUNCTION {format.bvolume}
654 { volume empty$
655     { "" }
656     { bbl.volume volume tie.or.space.prefix
657       "volume" bibinfo.check * *
658       series "series" bibinfo.check
659       duplicate$ empty$ 'pop$
660         { emphasize ", " * swap$ * }
661       if$
662       "volume and number" number either.or.check
663     }
664   if$
665 }
666 FUNCTION {format.number.series}
667 { volume empty$
668     { number empty$
669         { series field.or.null }
670         { series empty$
671             { number "number" bibinfo.check }
672             { output.state mid.sentence =
673                 { bbl.number }
674                 { bbl.number capitalize }
675               if$
676               number tie.or.space.prefix "number" bibinfo.check * *
677               bbl.in space.word *
678               series "series" bibinfo.check *
679             }
680           if$
681         }
682       if$
683     }
684     { "" }
685   if$
686 }
687 FUNCTION {is.num}
688 { chr.to.int$
689   duplicate$ "0" chr.to.int$ < not
690   swap$ "9" chr.to.int$ > not and
691 }
692
693 FUNCTION {extract.num}
694 { duplicate$ 't :=
695   "" 's :=
696   { t empty$ not }
697   { t #1 #1 substring$
698     t #2 global.max$ substring$ 't :=
699     duplicate$ is.num
700       { s swap$ * 's := }
701       { pop$ "" 't := }
702     if$
703   }
704   while$
705   s empty$
706     'skip$
707     { pop$ s }
708   if$
709 }
710
711 FUNCTION {convert.edition}
712 { extract.num "l" change.case$ 's :=
713   s "first" = s "1" = or
714     { bbl.first 't := }
715     { s "second" = s "2" = or
716         { bbl.second 't := }
717         { s "third" = s "3" = or
718             { bbl.third 't := }
719             { s "fourth" = s "4" = or
720                 { bbl.fourth 't := }
721                 { s "fifth" = s "5" = or
722                     { bbl.fifth 't := }
723                     { s #1 #1 substring$ is.num
724                         { s eng.ord 't := }
725                         { edition 't := }
726                       if$
727                     }
728                   if$
729                 }
730               if$
731             }
732           if$
733         }
734       if$
735     }
736   if$
737   t
738 }
739
740 FUNCTION {format.edition}
741 { edition duplicate$ empty$ 'skip$
742     {
743       convert.edition
744       output.state mid.sentence =
745         { "l" }
746         { "t" }
747       if$ change.case$
748       "edition" bibinfo.check
749       " " * bbl.edition *
750     }
751   if$
752 }
753 INTEGERS { multiresult }
754 FUNCTION {multi.page.check}
755 { 't :=
756   #0 'multiresult :=
757     { multiresult not
758       t empty$ not
759       and
760     }
761     { t #1 #1 substring$
762       duplicate$ "-" =
763       swap$ duplicate$ "," =
764       swap$ "+" =
765       or or
766         { #1 'multiresult := }
767         { t #2 global.max$ substring$ 't := }
768       if$
769     }
770   while$
771   multiresult
772 }
773 FUNCTION {format.pages}
774 { pages duplicate$ empty$ 'skip$
775     { duplicate$ multi.page.check
776         {
777           bbl.pages swap$
778           n.dashify
779         }
780         {
781           bbl.page swap$
782         }
783       if$
784       tie.or.space.prefix
785       "pages" bibinfo.check
786       * *
787     }
788   if$
789 }
790 FUNCTION {first.page}
791 { 't :=
792   ""
793     {  t empty$ not t #1 #1 substring$ "-" = not and }
794     { t #1 #1 substring$ *
795       t #2 global.max$ substring$ 't :=
796     }
797   while$
798 }
799
800 FUNCTION {format.journal.pages}
801 { pages duplicate$ empty$ 'pop$
802     { swap$ duplicate$ empty$
803         { pop$ pop$ format.pages }
804         {
805           ", " *
806           swap$
807           first.page
808           "pages" bibinfo.check
809           *
810         }
811       if$
812     }
813   if$
814 }
815 FUNCTION {format.journal.eid}
816 { eid "eid" bibinfo.check
817   duplicate$ empty$ 'pop$
818     { swap$ duplicate$ empty$ 'skip$
819       {
820           ", " *
821       }
822       if$
823       swap$ *
824     }
825   if$
826 }
827 FUNCTION {format.vol.num.pages}
828 { volume field.or.null
829   duplicate$ empty$ 'skip$
830     {
831       "volume" bibinfo.check
832     }
833   if$
834   bolden
835   number "number" bibinfo.check duplicate$ empty$ 'skip$
836     {
837       swap$ duplicate$ empty$
838         { "there's a number but no volume in " cite$ * warning$ }
839         'skip$
840       if$
841       swap$
842       "(" swap$ * ")" *
843     }
844   if$ *
845   eid empty$
846     { format.journal.pages }
847     { format.journal.eid }
848   if$
849 }
850
851 FUNCTION {format.chapter.pages}
852 { chapter empty$
853     'format.pages
854     { type empty$
855         { bbl.chapter }
856         { type "l" change.case$
857           "type" bibinfo.check
858         }
859       if$
860       chapter tie.or.space.prefix
861       "chapter" bibinfo.check
862       * *
863       pages empty$
864         'skip$
865         { ", " * format.pages * }
866       if$
867     }
868   if$
869 }
870
871 FUNCTION {format.booktitle}
872 {
873   booktitle "booktitle" bibinfo.check
874   emphasize
875 }
876 FUNCTION {format.in.ed.booktitle}
877 { format.booktitle duplicate$ empty$ 'skip$
878     {
879       format.bvolume duplicate$ empty$ 'pop$
880         { ", " swap$ * * }
881       if$
882       editor "editor" format.names.ed duplicate$ empty$ 'pop$
883         {
884           bbl.edby
885           " " * swap$ *
886           swap$
887           "," *
888           " " * swap$
889           * }
890       if$
891       word.in swap$ *
892     }
893   if$
894 }
895 FUNCTION {empty.misc.check}
896 { author empty$ title empty$ howpublished empty$
897   month empty$ year empty$ note empty$
898   and and and and and
899     { "all relevant fields are empty in " cite$ * warning$ }
900     'skip$
901   if$
902 }
903 FUNCTION {format.thesis.type}
904 { type duplicate$ empty$
905     'pop$
906     { swap$ pop$
907       "t" change.case$ "type" bibinfo.check
908     }
909   if$
910 }
911 FUNCTION {format.tr.number}
912 { number "number" bibinfo.check
913   type duplicate$ empty$
914     { pop$ bbl.techrep }
915     'skip$
916   if$
917   "type" bibinfo.check
918   swap$ duplicate$ empty$
919     { pop$ "t" change.case$ }
920     { tie.or.space.prefix * * }
921   if$
922 }
923 FUNCTION {format.article.crossref}
924 {
925   key duplicate$ empty$
926     { pop$
927       journal duplicate$ empty$
928         { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
929         { "journal" bibinfo.check emphasize word.in swap$ * }
930       if$
931     }
932     { word.in swap$ * " " *}
933   if$
934   " \cite{" * crossref * "}" *
935 }
936 FUNCTION {format.crossref.editor}
937 { editor #1 "{vv~}{ll}" format.name$
938   "editor" bibinfo.check
939   editor num.names$ duplicate$
940   #2 >
941     { pop$
942       "editor" bibinfo.check
943       " " * bbl.etal
944       *
945     }
946     { #2 <
947         'skip$
948         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
949             {
950               "editor" bibinfo.check
951               " " * bbl.etal
952               *
953             }
954             {
955              bbl.and space.word
956               * editor #2 "{vv~}{ll}" format.name$
957               "editor" bibinfo.check
958               *
959             }
960           if$
961         }
962       if$
963     }
964   if$
965 }
966 FUNCTION {format.book.crossref}
967 { volume duplicate$ empty$
968     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
969       pop$ word.in
970     }
971     { bbl.volume
972       capitalize
973       swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
974     }
975   if$
976   editor empty$
977   editor field.or.null author field.or.null =
978   or
979     { key empty$
980         { series empty$
981             { "need editor, key, or series for " cite$ * " to crossref " *
982               crossref * warning$
983               "" *
984             }
985             { series emphasize * }
986           if$
987         }
988         { key * }
989       if$
990     }
991     { format.crossref.editor * }
992   if$
993   " \cite{" * crossref * "}" *
994 }
995 FUNCTION {format.incoll.inproc.crossref}
996 {
997   editor empty$
998   editor field.or.null author field.or.null =
999   or
1000     { key empty$
1001         { format.booktitle duplicate$ empty$
1002             { "need editor, key, or booktitle for " cite$ * " to crossref " *
1003               crossref * warning$
1004             }
1005             { word.in swap$ * }
1006           if$
1007         }
1008         { word.in key * " " *}
1009       if$
1010     }
1011     { word.in format.crossref.editor * " " *}
1012   if$
1013   " \cite{" * crossref * "}" *
1014 }
1015 FUNCTION {format.org.or.pub}
1016 { 't :=
1017   ""
1018   year empty$
1019     { "empty year in " cite$ * warning$ }
1020     'skip$
1021   if$
1022   address empty$ t empty$ and
1023   year empty$ and
1024     'skip$
1025     {
1026       add.blank "(" *
1027       t empty$
1028         { address "address" bibinfo.check *
1029         }
1030         { t *
1031           address empty$
1032             'skip$
1033             { ", " * address "address" bibinfo.check * }
1034           if$
1035         }
1036       if$
1037       year empty$
1038         'skip$
1039         { t empty$ address empty$ and
1040             'skip$
1041             { ", " * }
1042           if$
1043           year "year" bibinfo.check
1044           *
1045         }
1046       if$
1047       ")" *
1048     }
1049   if$
1050 }
1051 FUNCTION {format.publisher.address}
1052 { publisher "publisher" bibinfo.warn format.org.or.pub
1053 }
1054
1055 FUNCTION {format.organization.address}
1056 { organization "organization" bibinfo.check format.org.or.pub
1057 }
1058
1059 FUNCTION {article}
1060 { output.bibitem
1061   format.authors "author" output.check
1062   add.comma
1063   crossref missing$
1064     {
1065       journal
1066       "journal" bibinfo.check
1067       "journal" output.check
1068       add.blank
1069       format.vol.num.pages output
1070       format.date "year" output.check
1071     }
1072     { format.article.crossref output.nonnull
1073       format.pages output
1074     }
1075   if$
1076   format.doi output
1077   new.block
1078   format.url output
1079   new.block
1080   format.note output
1081   fin.entry
1082 }
1083 FUNCTION {book}
1084 { output.bibitem
1085   author empty$
1086     { format.editors "author and editor" output.check
1087     }
1088     { format.authors output.nonnull
1089       crossref missing$
1090         { "author and editor" editor either.or.check }
1091         'skip$
1092       if$
1093     }
1094   if$
1095   add.comma
1096   format.btitle "title" output.check
1097   crossref missing$
1098     { format.bvolume output
1099       format.edition output
1100       new.block
1101       format.number.series output
1102       new.sentence
1103       format.publisher.address output
1104     }
1105     {
1106       new.block
1107       format.book.crossref output.nonnull
1108       format.date "year" output.check
1109     }
1110   if$
1111   format.doi output
1112   new.block
1113   format.url output
1114   new.block
1115   format.note output
1116   fin.entry
1117 }
1118 FUNCTION {booklet}
1119 { output.bibitem
1120   format.authors output
1121   add.comma
1122   format.title "title" output.check
1123   new.block
1124   howpublished "howpublished" bibinfo.check output
1125   address "address" bibinfo.check output
1126   format.date output
1127   format.doi output
1128   new.block
1129   format.url output
1130   new.block
1131   format.note output
1132   fin.entry
1133 }
1134
1135 FUNCTION {inbook}
1136 { output.bibitem
1137   author empty$
1138     { format.editors "author and editor" output.check
1139     }
1140     { format.authors output.nonnull
1141       crossref missing$
1142         { "author and editor" editor either.or.check }
1143         'skip$
1144       if$
1145     }
1146   if$
1147   add.comma
1148   format.btitle "title" output.check
1149   crossref missing$
1150     {
1151       format.publisher.address output
1152       format.bvolume output
1153       format.edition output
1154       format.chapter.pages "chapter and pages" output.check
1155       new.block
1156       format.number.series output
1157       new.sentence
1158     }
1159     {
1160       format.chapter.pages "chapter and pages" output.check
1161       new.block
1162       format.book.crossref output.nonnull
1163       format.date "year" output.check
1164     }
1165   if$
1166   format.doi output
1167   new.block
1168   format.url output
1169   new.block
1170   format.note output
1171   fin.entry
1172 }
1173
1174 FUNCTION {incollection}
1175 { output.bibitem
1176   format.authors "author" output.check
1177   add.comma
1178   crossref missing$
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
1184       new.sentence
1185     }
1186     { format.incoll.inproc.crossref output.nonnull
1187       format.chapter.pages output
1188     }
1189   if$
1190   format.doi output
1191   new.block
1192   format.url output
1193   new.block
1194   format.note output
1195   fin.entry
1196 }
1197 FUNCTION {inproceedings}
1198 { output.bibitem
1199   format.authors "author" output.check
1200   add.comma
1201   crossref missing$
1202     { format.in.ed.booktitle "booktitle" output.check
1203       new.sentence
1204       publisher empty$
1205         { format.organization.address output }
1206         { organization "organization" bibinfo.check output
1207           format.publisher.address output
1208         }
1209       if$
1210       format.bvolume output
1211       format.number.series output
1212       format.pages output
1213     }
1214     { format.incoll.inproc.crossref output.nonnull
1215       format.pages output
1216     }
1217   if$
1218   format.doi output
1219   new.block
1220   format.url output
1221   new.block
1222   format.note output
1223   fin.entry
1224 }
1225 FUNCTION {conference} { inproceedings }
1226 FUNCTION {manual}
1227 { output.bibitem
1228   author empty$
1229     { organization "organization" bibinfo.check
1230       duplicate$ empty$ 'pop$
1231         { output
1232           address "address" bibinfo.check output
1233         }
1234       if$
1235     }
1236     { format.authors output.nonnull }
1237   if$
1238   add.comma
1239   format.btitle "title" output.check
1240   author empty$
1241     { organization empty$
1242         {
1243           address new.block.checka
1244           address "address" bibinfo.check output
1245         }
1246         'skip$
1247       if$
1248     }
1249     {
1250       organization address new.block.checkb
1251       organization "organization" bibinfo.check output
1252       address "address" bibinfo.check output
1253     }
1254   if$
1255   format.edition output
1256   format.date output
1257   format.doi output
1258   new.block
1259   format.url output
1260   new.block
1261   format.note output
1262   fin.entry
1263 }
1264
1265 FUNCTION {mastersthesis}
1266 { output.bibitem
1267   format.authors "author" output.check
1268   add.comma
1269   format.title
1270   "title" output.check
1271   new.block
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
1276   format.doi output
1277   new.block
1278   format.url output
1279   new.block
1280   format.note output
1281   fin.entry
1282 }
1283
1284 FUNCTION {misc}
1285 { output.bibitem
1286   format.authors output
1287   title howpublished new.block.checkb
1288   format.title output
1289   howpublished new.block.checka
1290   howpublished "howpublished" bibinfo.check output
1291   format.date output
1292   format.doi output
1293   new.block
1294   format.url output
1295   new.block
1296   format.note output
1297   fin.entry
1298   empty.misc.check
1299 }
1300 FUNCTION {phdthesis}
1301 { output.bibitem
1302   format.authors "author" output.check
1303   add.comma
1304   format.title
1305   "title" output.check
1306   new.block
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
1311   format.doi output
1312   new.block
1313   format.url output
1314   new.block
1315   format.note output
1316   fin.entry
1317 }
1318
1319 FUNCTION {proceedings}
1320 { output.bibitem
1321   editor empty$
1322     { organization "organization" bibinfo.check output
1323     }
1324     { format.editors output.nonnull }
1325   if$
1326   new.block
1327   format.btitle "title" output.check
1328   format.bvolume output
1329   format.number.series output
1330   editor empty$
1331     { publisher empty$
1332         'skip$
1333         {
1334           new.sentence
1335           format.publisher.address output
1336         }
1337       if$
1338     }
1339     { publisher empty$
1340         {
1341           new.sentence
1342           format.organization.address output }
1343         {
1344           new.sentence
1345           organization "organization" bibinfo.check output
1346           format.publisher.address output
1347         }
1348       if$
1349      }
1350   if$
1351   format.doi output
1352   new.block
1353   format.url output
1354   new.block
1355   format.note output
1356   fin.entry
1357 }
1358
1359 FUNCTION {techreport}
1360 { output.bibitem
1361   format.authors "author" output.check
1362   add.comma
1363   format.title
1364   "title" output.check
1365   new.block
1366   format.tr.number output.nonnull
1367   institution "institution" bibinfo.warn output
1368   address "address" bibinfo.check output
1369   format.date "year" output.check
1370   format.doi output
1371   new.block
1372   format.url output
1373   new.block
1374   format.note output
1375   fin.entry
1376 }
1377
1378 FUNCTION {unpublished}
1379 { output.bibitem
1380   format.authors "author" output.check
1381   add.comma
1382   format.title "title" output.check
1383   format.date output
1384   format.doi output
1385   new.block
1386   format.url output
1387   new.block
1388   format.note "note" output.check
1389   fin.entry
1390 }
1391
1392 FUNCTION {default.type} { misc }
1393 READ
1394 STRINGS { longest.label }
1395 INTEGERS { number.label longest.label.width }
1396 FUNCTION {initialize.longest.label}
1397 { "" 'longest.label :=
1398   #1 'number.label :=
1399   #0 'longest.label.width :=
1400 }
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 :=
1407     }
1408     'skip$
1409   if$
1410 }
1411 EXECUTE {initialize.longest.label}
1412 ITERATE {longest.label.pass}
1413 FUNCTION {begin.bib}
1414 { preamble$ empty$
1415     'skip$
1416     { preamble$ write$ newline$ }
1417   if$
1418   "\begin{thebibliography}{"  longest.label  * "}" *
1419   write$ newline$
1420   "\providecommand{\url}[1]{{#1}}"
1421   write$ newline$
1422   "\providecommand{\urlprefix}{URL }"
1423   write$ newline$
1424   "\expandafter\ifx\csname urlstyle\endcsname\relax"
1425   write$ newline$
1426   "  \providecommand{\doi}[1]{DOI \discretionary{}{}{}#1}\else"
1427   write$ newline$
1428   "  \providecommand{\doi}{DOI \discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1429   write$ newline$
1430 }
1431 EXECUTE {begin.bib}
1432 EXECUTE {init.state.consts}
1433 ITERATE {call.type$}
1434 FUNCTION {end.bib}
1435 { newline$
1436   "\end{thebibliography}" write$ newline$
1437 }
1438 EXECUTE {end.bib}
1439 %% End of customized bst file
1440 %%
1441 %% End of file `spphys.bst'.
1442