comparison writeup/mlj_submission/spmpsci.bst @ 592:0cf2c4f9ed79

added springer latex stuff
author fsavard
date Thu, 30 Sep 2010 18:00:37 -0400
parents
children
comparison
equal deleted inserted replaced
591:8bd4ff0c5c05 592:0cf2c4f9ed79
1 %%
2 %% This is file `spmpsci.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
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 %%********************************************************************************%%
10 %% %%
11 %% For Springer mathematics, computer science, and physical sciences journals %%
12 %% publications. %%
13 %% Report bugs and improvements to: Joylene Vette-Guillaume or Frank Holzwarth %%
14 %% Springer-Verlag 2004/10/15 %%
15 %% %%
16 %%********************************************************************************%%
17 %%
18 %% Copyright 1994-2004 Patrick W Daly
19 % ===============================================================
20 % IMPORTANT NOTICE:
21 % This bibliographic style (bst) file has been generated from one or
22 % more master bibliographic style (mbs) files, listed above.
23 %
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
37 % \bibitem{key}...
38 % Usage of \cite is as follows:
39 % \cite{key} ==>> [#]
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 %---------------------------------------------------------------------
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.colon}
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 { "edited 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 MACRO {jan} {"Jan."}
284
285 MACRO {feb} {"Feb."}
286
287 MACRO {mar} {"Mar."}
288
289 MACRO {apr} {"Apr."}
290
291 MACRO {may} {"May"}
292
293 MACRO {jun} {"Jun."}
294
295 MACRO {jul} {"Jul."}
296
297 MACRO {aug} {"Aug."}
298
299 MACRO {sep} {"Sep."}
300
301 MACRO {oct} {"Oct."}
302
303 MACRO {nov} {"Nov."}
304
305 MACRO {dec} {"Dec."}
306
307 MACRO {acmcs} {"ACM Comput. Surv."}
308
309 MACRO {acta} {"Acta Inf."}
310
311 MACRO {cacm} {"Commun. ACM"}
312
313 MACRO {ibmjrd} {"IBM J. Res. Dev."}
314
315 MACRO {ibmsj} {"IBM Syst.~J."}
316
317 MACRO {ieeese} {"IEEE Trans. Software Eng."}
318
319 MACRO {ieeetc} {"IEEE Trans. Comput."}
320
321 MACRO {ieeetcad}
322 {"IEEE Trans. Comput. Aid. Des."}
323
324 MACRO {ipl} {"Inf. Process. Lett."}
325
326 MACRO {jacm} {"J.~ACM"}
327
328 MACRO {jcss} {"J.~Comput. Syst. Sci."}
329
330 MACRO {scp} {"Sci. Comput. Program."}
331
332 MACRO {sicomp} {"SIAM J. Comput."}
333
334 MACRO {tocs} {"ACM Trans. Comput. Syst."}
335
336 MACRO {tods} {"ACM Trans. Database Syst."}
337
338 MACRO {tog} {"ACM Trans. Graphic."}
339
340 MACRO {toms} {"ACM Trans. Math. Software"}
341
342 MACRO {toois} {"ACM Trans. Office Inf. Syst."}
343
344 MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
345
346 MACRO {tcs} {"Theor. Comput. Sci."}
347
348 FUNCTION {bibinfo.check}
349 { swap$
350 duplicate$ missing$
351 {
352 pop$ pop$
353 ""
354 }
355 { duplicate$ empty$
356 {
357 swap$ pop$
358 }
359 { swap$
360 pop$
361 }
362 if$
363 }
364 if$
365 }
366 FUNCTION {bibinfo.warn}
367 { swap$
368 duplicate$ missing$
369 {
370 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
371 ""
372 }
373 { duplicate$ empty$
374 {
375 swap$ "empty " swap$ * " in " * cite$ * warning$
376 }
377 { swap$
378 pop$
379 }
380 if$
381 }
382 if$
383 }
384 FUNCTION {format.url}
385 { url empty$
386 { "" }
387 { "\urlprefix\url{" url * "}" * }
388 if$
389 }
390
391 STRINGS { bibinfo}
392 INTEGERS { nameptr namesleft numnames }
393
394 FUNCTION {format.names}
395 { 'bibinfo :=
396 duplicate$ empty$ 'skip$ {
397 's :=
398 "" 't :=
399 #1 'nameptr :=
400 s num.names$ 'numnames :=
401 numnames 'namesleft :=
402 { namesleft #0 > }
403 { s nameptr
404 "{vv~}{ll}{ jj}{, f{.}.}"
405 format.name$
406 bibinfo bibinfo.check
407 't :=
408 nameptr #1 >
409 {
410 namesleft #1 >
411 { ", " * t * }
412 {
413 "," *
414 s nameptr "{ll}" format.name$ duplicate$ "others" =
415 { 't := }
416 { pop$ }
417 if$
418 t "others" =
419 {
420 " " * bbl.etal *
421 }
422 { " " * t * }
423 if$
424 }
425 if$
426 }
427 't
428 if$
429 nameptr #1 + 'nameptr :=
430 namesleft #1 - 'namesleft :=
431 }
432 while$
433 } if$
434 }
435 FUNCTION {format.names.ed}
436 {
437 'bibinfo :=
438 duplicate$ empty$ 'skip$ {
439 's :=
440 "" 't :=
441 #1 'nameptr :=
442 s num.names$ 'numnames :=
443 numnames 'namesleft :=
444 { namesleft #0 > }
445 { s nameptr
446 "{f{.}.~}{vv~}{ll}{ jj}"
447 format.name$
448 bibinfo bibinfo.check
449 't :=
450 nameptr #1 >
451 {
452 namesleft #1 >
453 { ", " * t * }
454 {
455 "," *
456 s nameptr "{ll}" format.name$ duplicate$ "others" =
457 { 't := }
458 { pop$ }
459 if$
460 t "others" =
461 {
462
463 " " * bbl.etal *
464 }
465 { " " * t * }
466 if$
467 }
468 if$
469 }
470 't
471 if$
472 nameptr #1 + 'nameptr :=
473 namesleft #1 - 'namesleft :=
474 }
475 while$
476 } if$
477 }
478 FUNCTION {format.authors}
479 { author "author" format.names
480 }
481 FUNCTION {get.bbl.editor}
482 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
483
484 FUNCTION {format.editors}
485 { editor "editor" format.names duplicate$ empty$ 'skip$
486 {
487 " " *
488 get.bbl.editor
489 "(" swap$ * ")" *
490 *
491 }
492 if$
493 }
494 FUNCTION {format.doi}
495 { doi "doi" bibinfo.check
496 duplicate$ empty$ 'skip$
497 {
498 new.block
499 "\doi{" swap$ * "}" *
500 }
501 if$
502 }
503 FUNCTION {format.note}
504 {
505 note empty$
506 { "" }
507 { note #1 #1 substring$
508 duplicate$ "{" =
509 'skip$
510 { output.state mid.sentence =
511 { "l" }
512 { "u" }
513 if$
514 change.case$
515 }
516 if$
517 note #2 global.max$ substring$ * "note" bibinfo.check
518 }
519 if$
520 }
521
522 FUNCTION {format.title}
523 { title
524 duplicate$ empty$ 'skip$
525 { "t" change.case$ }
526 if$
527 "title" bibinfo.check
528 }
529 FUNCTION {output.bibitem}
530 { newline$
531 "\bibitem{" write$
532 cite$ write$
533 "}" write$
534 newline$
535 ""
536 before.all 'output.state :=
537 }
538
539 FUNCTION {if.digit}
540 { duplicate$ "0" =
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
550 }
551 FUNCTION {n.separate}
552 { 't :=
553 ""
554 #0 'numnames :=
555 { t empty$ not }
556 { t #-1 #1 substring$ if.digit
557 { numnames #1 + 'numnames := }
558 { #0 'numnames := }
559 if$
560 t #-1 #1 substring$ swap$ *
561 t #-2 global.max$ substring$ 't :=
562 numnames #5 =
563 { duplicate$ #1 #2 substring$ swap$
564 #3 global.max$ substring$
565 "," swap$ * *
566 }
567 'skip$
568 if$
569 }
570 while$
571 }
572 FUNCTION {n.dashify}
573 {
574 n.separate
575 't :=
576 ""
577 { t empty$ not }
578 { t #1 #1 substring$ "-" =
579 { t #1 #2 substring$ "--" = not
580 { "--" *
581 t #2 global.max$ substring$ 't :=
582 }
583 { { t #1 #1 substring$ "-" = }
584 { "-" *
585 t #2 global.max$ substring$ 't :=
586 }
587 while$
588 }
589 if$
590 }
591 { t #1 #1 substring$ *
592 t #2 global.max$ substring$ 't :=
593 }
594 if$
595 }
596 while$
597 }
598
599 FUNCTION {word.in}
600 { bbl.in capitalize
601 ":" *
602 " " * }
603
604 FUNCTION {format.date}
605 {
606 ""
607 duplicate$ empty$
608 year "year" bibinfo.check duplicate$ empty$
609 { swap$ 'skip$
610 { "there's a month but no year in " cite$ * warning$ }
611 if$
612 *
613 }
614 { swap$ 'skip$
615 {
616 swap$
617 " " * swap$
618 }
619 if$
620 *
621 }
622 if$
623 duplicate$ empty$
624 'skip$
625 {
626 before.all 'output.state :=
627 " (" swap$ * ")" *
628 }
629 if$
630 }
631 FUNCTION {format.btitle}
632 { title "title" bibinfo.check
633 duplicate$ empty$ 'skip$
634 {
635 }
636 if$
637 }
638 FUNCTION {either.or.check}
639 { empty$
640 'pop$
641 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
642 if$
643 }
644 FUNCTION {format.bvolume}
645 { volume empty$
646 { "" }
647 { bbl.volume volume tie.or.space.prefix
648 "volume" bibinfo.check * *
649 series "series" bibinfo.check
650 duplicate$ empty$ 'pop$
651 { emphasize ", " * swap$ * }
652 if$
653 "volume and number" number either.or.check
654 }
655 if$
656 }
657 FUNCTION {format.number.series}
658 { volume empty$
659 { number empty$
660 { series field.or.null }
661 { series empty$
662 { number "number" bibinfo.check }
663 { output.state mid.sentence =
664 { bbl.number }
665 { bbl.number capitalize }
666 if$
667 number tie.or.space.prefix "number" bibinfo.check * *
668 bbl.in space.word *
669 series "series" bibinfo.check *
670 }
671 if$
672 }
673 if$
674 }
675 { "" }
676 if$
677 }
678
679 FUNCTION {format.edition}
680 { edition duplicate$ empty$ 'skip$
681 {
682 output.state mid.sentence =
683 { "l" }
684 { "t" }
685 if$ change.case$
686 "edition" bibinfo.check
687 " " * bbl.edition *
688 }
689 if$
690 }
691 INTEGERS { multiresult }
692 FUNCTION {multi.page.check}
693 { 't :=
694 #0 'multiresult :=
695 { multiresult not
696 t empty$ not
697 and
698 }
699 { t #1 #1 substring$
700 duplicate$ "-" =
701 swap$ duplicate$ "," =
702 swap$ "+" =
703 or or
704 { #1 'multiresult := }
705 { t #2 global.max$ substring$ 't := }
706 if$
707 }
708 while$
709 multiresult
710 }
711 FUNCTION {format.pages}
712 { pages duplicate$ empty$ 'skip$
713 { duplicate$ multi.page.check
714 {
715 bbl.pages swap$
716 n.dashify
717 }
718 {
719 bbl.page swap$
720 }
721 if$
722 tie.or.space.prefix
723 "pages" bibinfo.check
724 * *
725 }
726 if$
727 }
728 FUNCTION {format.journal.pages}
729 { pages duplicate$ empty$ 'pop$
730 { swap$ duplicate$ empty$
731 { pop$ pop$ format.pages }
732 {
733 ", " *
734 swap$
735 n.dashify
736 "pages" bibinfo.check
737 *
738 }
739 if$
740 }
741 if$
742 }
743 FUNCTION {format.journal.eid}
744 { eid "eid" bibinfo.check
745 duplicate$ empty$ 'pop$
746 { swap$ duplicate$ empty$ 'skip$
747 {
748 ", " *
749 }
750 if$
751 swap$ *
752 }
753 if$
754 }
755 FUNCTION {format.vol.num.pages}
756 { volume field.or.null
757 duplicate$ empty$ 'skip$
758 {
759 "volume" bibinfo.check
760 }
761 if$
762 bolden
763 number "number" bibinfo.check duplicate$ empty$ 'skip$
764 {
765 swap$ duplicate$ empty$
766 { "there's a number but no volume in " cite$ * warning$ }
767 'skip$
768 if$
769 swap$
770 "(" swap$ * ")" *
771 }
772 if$ *
773 eid empty$
774 { format.journal.pages }
775 { format.journal.eid }
776 if$
777 }
778
779 FUNCTION {format.chapter.pages}
780 { chapter empty$
781 'format.pages
782 { type empty$
783 { bbl.chapter }
784 { type "l" change.case$
785 "type" bibinfo.check
786 }
787 if$
788 chapter tie.or.space.prefix
789 "chapter" bibinfo.check
790 * *
791 pages empty$
792 'skip$
793 { ", " * format.pages * }
794 if$
795 }
796 if$
797 }
798
799 FUNCTION {format.booktitle}
800 {
801 booktitle "booktitle" bibinfo.check
802 }
803 FUNCTION {format.in.ed.booktitle}
804 { format.booktitle duplicate$ empty$ 'skip$
805 {
806 format.bvolume duplicate$ empty$ 'pop$
807 { ", " swap$ * * }
808 if$
809 editor "editor" format.names.ed duplicate$ empty$ 'pop$
810 {
811 " " *
812 get.bbl.editor
813 "(" swap$ * ") " *
814 * swap$
815 * }
816 if$
817 word.in swap$ *
818 }
819 if$
820 }
821 FUNCTION {empty.misc.check}
822 { author empty$ title empty$ howpublished empty$
823 month empty$ year empty$ note empty$
824 and and and and and
825 key empty$ not and
826 { "all relevant fields are empty in " cite$ * warning$ }
827 'skip$
828 if$
829 }
830 FUNCTION {format.thesis.type}
831 { type duplicate$ empty$
832 'pop$
833 { swap$ pop$
834 "t" change.case$ "type" bibinfo.check
835 }
836 if$
837 }
838 FUNCTION {format.tr.number}
839 { number "number" bibinfo.check
840 type duplicate$ empty$
841 { pop$ bbl.techrep }
842 'skip$
843 if$
844 "type" bibinfo.check
845 swap$ duplicate$ empty$
846 { pop$ "t" change.case$ }
847 { tie.or.space.prefix * * }
848 if$
849 }
850 FUNCTION {format.article.crossref}
851 {
852 key duplicate$ empty$
853 { pop$
854 journal duplicate$ empty$
855 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
856 { "journal" bibinfo.check emphasize word.in swap$ * }
857 if$
858 }
859 { word.in swap$ * " " *}
860 if$
861 " \cite{" * crossref * "}" *
862 }
863 FUNCTION {format.crossref.editor}
864 { editor #1 "{vv~}{ll}" format.name$
865 "editor" bibinfo.check
866 editor num.names$ duplicate$
867 #2 >
868 { pop$
869 "editor" bibinfo.check
870 " " * bbl.etal
871 *
872 }
873 { #2 <
874 'skip$
875 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
876 {
877 "editor" bibinfo.check
878 " " * bbl.etal
879 *
880 }
881 {
882 bbl.and space.word
883 * editor #2 "{vv~}{ll}" format.name$
884 "editor" bibinfo.check
885 *
886 }
887 if$
888 }
889 if$
890 }
891 if$
892 }
893 FUNCTION {format.book.crossref}
894 { volume duplicate$ empty$
895 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
896 pop$ word.in
897 }
898 { bbl.volume
899 capitalize
900 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
901 }
902 if$
903 editor empty$
904 editor field.or.null author field.or.null =
905 or
906 { key empty$
907 { series empty$
908 { "need editor, key, or series for " cite$ * " to crossref " *
909 crossref * warning$
910 "" *
911 }
912 { series emphasize * }
913 if$
914 }
915 { key * }
916 if$
917 }
918 { format.crossref.editor * }
919 if$
920 " \cite{" * crossref * "}" *
921 }
922 FUNCTION {format.incoll.inproc.crossref}
923 {
924 editor empty$
925 editor field.or.null author field.or.null =
926 or
927 { key empty$
928 { format.booktitle duplicate$ empty$
929 { "need editor, key, or booktitle for " cite$ * " to crossref " *
930 crossref * warning$
931 }
932 { word.in swap$ * }
933 if$
934 }
935 { word.in key * " " *}
936 if$
937 }
938 { word.in format.crossref.editor * " " *}
939 if$
940 " \cite{" * crossref * "}" *
941 }
942 FUNCTION {format.org.or.pub}
943 { 't :=
944 ""
945 address empty$ t empty$ and
946 'skip$
947 {
948 t empty$
949 { address "address" bibinfo.check *
950 }
951 { t *
952 address empty$
953 'skip$
954 { ", " * address "address" bibinfo.check * }
955 if$
956 }
957 if$
958 }
959 if$
960 }
961 FUNCTION {format.publisher.address}
962 { publisher "publisher" bibinfo.warn format.org.or.pub
963 }
964
965 FUNCTION {format.organization.address}
966 { organization "organization" bibinfo.check format.org.or.pub
967 }
968
969 FUNCTION {article}
970 { output.bibitem
971 format.authors "author" output.check
972 add.colon
973 new.block
974 format.title "title" output.check
975 new.block
976 crossref missing$
977 {
978 journal
979 "journal" bibinfo.check
980 "journal" output.check
981 add.blank
982 format.vol.num.pages output
983 format.date "year" output.check
984 }
985 { format.article.crossref output.nonnull
986 format.pages output
987 }
988 if$
989 format.doi output
990 new.block
991 format.url output
992 new.block
993 format.note output
994 fin.entry
995 }
996 FUNCTION {book}
997 { output.bibitem
998 author empty$
999 { format.editors "author and editor" output.check
1000 add.colon
1001 }
1002 { format.authors output.nonnull
1003 add.colon
1004 crossref missing$
1005 { "author and editor" editor either.or.check }
1006 'skip$
1007 if$
1008 }
1009 if$
1010 new.block
1011 format.btitle "title" output.check
1012 crossref missing$
1013 { format.bvolume output
1014 format.edition output
1015 new.block
1016 format.number.series output
1017 new.sentence
1018 format.publisher.address output
1019 }
1020 {
1021 new.block
1022 format.book.crossref output.nonnull
1023 }
1024 if$
1025 format.date "year" output.check
1026 format.doi output
1027 new.block
1028 format.url output
1029 new.block
1030 format.note output
1031 fin.entry
1032 }
1033 FUNCTION {booklet}
1034 { output.bibitem
1035 format.authors output
1036 add.colon
1037 new.block
1038 format.title "title" output.check
1039 new.block
1040 howpublished "howpublished" bibinfo.check output
1041 address "address" bibinfo.check output
1042 format.date output
1043 format.doi output
1044 new.block
1045 format.url output
1046 new.block
1047 format.note output
1048 fin.entry
1049 }
1050
1051 FUNCTION {inbook}
1052 { output.bibitem
1053 author empty$
1054 { format.editors "author and editor" output.check
1055 add.colon
1056 }
1057 { format.authors output.nonnull
1058 add.colon
1059 crossref missing$
1060 { "author and editor" editor either.or.check }
1061 'skip$
1062 if$
1063 }
1064 if$
1065 new.block
1066 format.btitle "title" output.check
1067 crossref missing$
1068 {
1069 format.bvolume output
1070 format.edition output
1071 format.chapter.pages "chapter and pages" output.check
1072 new.block
1073 format.number.series output
1074 new.sentence
1075 format.publisher.address output
1076 }
1077 {
1078 format.chapter.pages "chapter and pages" output.check
1079 new.block
1080 format.book.crossref output.nonnull
1081 }
1082 if$
1083 format.date "year" output.check
1084 format.doi output
1085 new.block
1086 format.url output
1087 new.block
1088 format.note output
1089 fin.entry
1090 }
1091
1092 FUNCTION {incollection}
1093 { output.bibitem
1094 format.authors "author" output.check
1095 add.colon
1096 new.block
1097 format.title "title" output.check
1098 new.block
1099 crossref missing$
1100 { format.in.ed.booktitle "booktitle" output.check
1101 format.number.series output
1102 format.edition output
1103 format.chapter.pages output
1104 new.sentence
1105 format.publisher.address output
1106 format.date "year" output.check
1107 }
1108 { format.incoll.inproc.crossref output.nonnull
1109 format.chapter.pages output
1110 }
1111 if$
1112 format.doi output
1113 new.block
1114 format.url output
1115 new.block
1116 format.note output
1117 fin.entry
1118 }
1119 FUNCTION {inproceedings}
1120 { output.bibitem
1121 format.authors "author" output.check
1122 add.colon
1123 new.block
1124 format.title "title" output.check
1125 new.block
1126 crossref missing$
1127 { format.in.ed.booktitle "booktitle" output.check
1128 format.number.series output
1129 format.pages output
1130 new.sentence
1131 publisher empty$
1132 { format.organization.address output }
1133 { organization "organization" bibinfo.check output
1134 format.publisher.address output
1135 }
1136 if$
1137 format.date "year" output.check
1138 }
1139 { format.incoll.inproc.crossref output.nonnull
1140 format.pages output
1141 }
1142 if$
1143 format.doi output
1144 new.block
1145 format.url output
1146 new.block
1147 format.note output
1148 fin.entry
1149 }
1150 FUNCTION {conference} { inproceedings }
1151 FUNCTION {manual}
1152 { output.bibitem
1153 author empty$
1154 { organization "organization" bibinfo.check
1155 duplicate$ empty$ 'pop$
1156 { output
1157 address "address" bibinfo.check output
1158 }
1159 if$
1160 }
1161 { format.authors output.nonnull }
1162 if$
1163 add.colon
1164 new.block
1165 format.btitle "title" output.check
1166 author empty$
1167 { organization empty$
1168 {
1169 address new.block.checka
1170 address "address" bibinfo.check output
1171 }
1172 'skip$
1173 if$
1174 }
1175 {
1176 organization address new.block.checkb
1177 organization "organization" bibinfo.check output
1178 address "address" bibinfo.check output
1179 }
1180 if$
1181 format.edition output
1182 format.date output
1183 format.doi output
1184 new.block
1185 format.url output
1186 new.block
1187 format.note output
1188 fin.entry
1189 }
1190
1191 FUNCTION {mastersthesis}
1192 { output.bibitem
1193 format.authors "author" output.check
1194 add.colon
1195 new.block
1196 format.title
1197 "title" output.check
1198 new.block
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
1203 format.doi output
1204 new.block
1205 format.url output
1206 new.block
1207 format.note output
1208 fin.entry
1209 }
1210
1211 FUNCTION {misc}
1212 { output.bibitem
1213 format.authors output
1214 add.colon
1215 title howpublished new.block.checkb
1216 format.title output
1217 howpublished new.block.checka
1218 howpublished "howpublished" bibinfo.check output
1219 format.date output
1220 format.doi output
1221 new.block
1222 format.url output
1223 new.block
1224 format.note output
1225 fin.entry
1226 empty.misc.check
1227 }
1228 FUNCTION {phdthesis}
1229 { output.bibitem
1230 format.authors "author" output.check
1231 add.colon
1232 new.block
1233 format.title
1234 "title" output.check
1235 new.block
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
1240 format.doi output
1241 new.block
1242 format.url output
1243 new.block
1244 format.note output
1245 fin.entry
1246 }
1247
1248 FUNCTION {proceedings}
1249 { output.bibitem
1250 editor empty$
1251 { organization "organization" bibinfo.check output
1252 }
1253 { format.editors output.nonnull }
1254 if$
1255 add.colon
1256 new.block
1257 format.btitle "title" output.check
1258 format.bvolume output
1259 format.number.series output
1260 editor empty$
1261 { publisher empty$
1262 'skip$
1263 {
1264 new.sentence
1265 format.publisher.address output
1266 }
1267 if$
1268 }
1269 { publisher empty$
1270 {
1271 new.sentence
1272 format.organization.address output }
1273 {
1274 new.sentence
1275 organization "organization" bibinfo.check output
1276 format.publisher.address output
1277 }
1278 if$
1279 }
1280 if$
1281 format.date "year" output.check
1282 format.doi output
1283 new.block
1284 format.url output
1285 new.block
1286 format.note output
1287 fin.entry
1288 }
1289
1290 FUNCTION {techreport}
1291 { output.bibitem
1292 format.authors "author" output.check
1293 add.colon
1294 new.block
1295 format.title
1296 "title" output.check
1297 new.block
1298 format.tr.number output.nonnull
1299 institution "institution" bibinfo.warn output
1300 address "address" bibinfo.check output
1301 format.date "year" output.check
1302 format.doi output
1303 new.block
1304 format.url output
1305 new.block
1306 format.note output
1307 fin.entry
1308 }
1309
1310 FUNCTION {unpublished}
1311 { output.bibitem
1312 format.authors "author" output.check
1313 add.colon
1314 new.block
1315 format.title "title" output.check
1316 format.date output
1317 format.doi output
1318 new.block
1319 format.url output
1320 new.block
1321 format.note "note" output.check
1322 fin.entry
1323 }
1324
1325 FUNCTION {default.type} { misc }
1326 READ
1327 FUNCTION {sortify}
1328 { purify$
1329 "l" change.case$
1330 }
1331 INTEGERS { len }
1332 FUNCTION {chop.word}
1333 { 's :=
1334 'len :=
1335 s #1 len substring$ =
1336 { s len #1 + global.max$ substring$ }
1337 's
1338 if$
1339 }
1340 FUNCTION {sort.format.names}
1341 { 's :=
1342 #1 'nameptr :=
1343 ""
1344 s num.names$ 'numnames :=
1345 numnames 'namesleft :=
1346 { namesleft #0 > }
1347 { s nameptr
1348 "{ll{ }}{ f{ }}{ jj{ }}"
1349 format.name$ 't :=
1350 nameptr #1 >
1351 {
1352 " " *
1353 namesleft #1 = t "others" = and
1354 { "zzzzz" * }
1355 { t sortify * }
1356 if$
1357 }
1358 { t sortify * }
1359 if$
1360 nameptr #1 + 'nameptr :=
1361 namesleft #1 - 'namesleft :=
1362 }
1363 while$
1364 }
1365
1366 FUNCTION {sort.format.title}
1367 { 't :=
1368 "A " #2
1369 "An " #3
1370 "The " #4 t chop.word
1371 chop.word
1372 chop.word
1373 sortify
1374 #1 global.max$ substring$
1375 }
1376 FUNCTION {author.sort}
1377 { author empty$
1378 { key empty$
1379 { "to sort, need author or key in " cite$ * warning$
1380 ""
1381 }
1382 { key sortify }
1383 if$
1384 }
1385 { author sort.format.names }
1386 if$
1387 }
1388 FUNCTION {author.editor.sort}
1389 { author empty$
1390 { editor empty$
1391 { key empty$
1392 { "to sort, need author, editor, or key in " cite$ * warning$
1393 ""
1394 }
1395 { key sortify }
1396 if$
1397 }
1398 { editor sort.format.names }
1399 if$
1400 }
1401 { author sort.format.names }
1402 if$
1403 }
1404 FUNCTION {author.organization.sort}
1405 { author empty$
1406 { organization empty$
1407 { key empty$
1408 { "to sort, need author, organization, or key in " cite$ * warning$
1409 ""
1410 }
1411 { key sortify }
1412 if$
1413 }
1414 { "The " #4 organization chop.word sortify }
1415 if$
1416 }
1417 { author sort.format.names }
1418 if$
1419 }
1420 FUNCTION {editor.organization.sort}
1421 { editor empty$
1422 { organization empty$
1423 { key empty$
1424 { "to sort, need editor, organization, or key in " cite$ * warning$
1425 ""
1426 }
1427 { key sortify }
1428 if$
1429 }
1430 { "The " #4 organization chop.word sortify }
1431 if$
1432 }
1433 { editor sort.format.names }
1434 if$
1435 }
1436 FUNCTION {presort}
1437 { type$ "book" =
1438 type$ "inbook" =
1439 or
1440 'author.editor.sort
1441 { type$ "proceedings" =
1442 'editor.organization.sort
1443 { type$ "manual" =
1444 'author.organization.sort
1445 'author.sort
1446 if$
1447 }
1448 if$
1449 }
1450 if$
1451 " "
1452 *
1453 year field.or.null sortify
1454 *
1455 " "
1456 *
1457 title field.or.null
1458 sort.format.title
1459 *
1460 #1 entry.max$ substring$
1461 'sort.key$ :=
1462 }
1463 ITERATE {presort}
1464 SORT
1465 STRINGS { longest.label }
1466 INTEGERS { number.label longest.label.width }
1467 FUNCTION {initialize.longest.label}
1468 { "" 'longest.label :=
1469 #1 'number.label :=
1470 #0 'longest.label.width :=
1471 }
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 :=
1478 }
1479 'skip$
1480 if$
1481 }
1482 EXECUTE {initialize.longest.label}
1483 ITERATE {longest.label.pass}
1484 FUNCTION {begin.bib}
1485 { preamble$ empty$
1486 'skip$
1487 { preamble$ write$ newline$ }
1488 if$
1489 "\begin{thebibliography}{" longest.label * "}" *
1490 write$ newline$
1491 "\providecommand{\url}[1]{{#1}}"
1492 write$ newline$
1493 "\providecommand{\urlprefix}{URL }"
1494 write$ newline$
1495 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1496 write$ newline$
1497 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else"
1498 write$ newline$
1499 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1500 write$ newline$
1501 }
1502 EXECUTE {begin.bib}
1503 EXECUTE {init.state.consts}
1504 ITERATE {call.type$}
1505 FUNCTION {end.bib}
1506 { newline$
1507 "\end{thebibliography}" write$ newline$
1508 }
1509 EXECUTE {end.bib}
1510 %% End of customized bst file
1511 %%
1512 %% End of file `spmpsci.bst'.
1513