comparison writeup/mlj_submission/spbasic.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 `spbasic.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% merlin.mbs (with options: `ay,nat,seq-lab,vonx,nm-rvx,ed-rev,jnrlst,dt-beg,yr-par,yrp-x,yrpp-xsp,note-yr,jxper,jttl-rm,thtit-a,pgsep-c,num-xser,ser-vol,jnm-x,btit-rm,bt-rm,pre-pub,doi,edparxc,blk-tit,in-col,fin-bare,pp,ed,abr,mth-bare,ord,jabr,xand,eprint,url,url-blk,em-x,nfss,')
8 %% ----------------------------------------
9 %%
10 %%********************************************************************************%%
11 %% %%
12 %% For Springer medical, life sciences, chemistry, geology, engineering and %%
13 %% computer science publications. %%
14 %% For use with the natbib package (see below). Default is author-year citations. %%
15 %% When citations are numbered, please use \usepackage[numbers]{natbib}. %%
16 %% A lack of punctuation is the key feature. Springer-Verlag 2004/10/15 %%
17 %% Report bugs and improvements to: Joylene Vette-Guillaume or Frank Holzwarth %%
18 %% %%
19 %%********************************************************************************%%
20 %%
21 %% Copyright 1994-2004 Patrick W Daly
22 % ===============================================================
23 % IMPORTANT NOTICE:
24 % This bibliographic style (bst) file has been generated from one or
25 % more master bibliographic style (mbs) files, listed above.
26 %
27 % This generated file can be redistributed and/or modified under the terms
28 % of the LaTeX Project Public License Distributed from CTAN
29 % archives in directory macros/latex/base/lppl.txt; either
30 % version 1 of the License, or any later version.
31 % ===============================================================
32 % Name and version information of the main mbs file:
33 % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)]
34 % For use with BibTeX version 0.99a or later
35 %-------------------------------------------------------------------
36 % This bibliography style file is intended for texts in ENGLISH
37 % This is an author-year citation style bibliography. As such, it is
38 % non-standard LaTeX, and requires a special package file to function properly.
39 % Such a package is natbib.sty by Patrick W. Daly
40 % The form of the \bibitem entries is
41 % \bibitem[Jones et al.(1990)]{key}...
42 % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
43 % The essential feature is that the label (the part in brackets) consists
44 % of the author names, as they should appear in the citation, with the year
45 % in parentheses following. There must be no space before the opening
46 % parenthesis!
47 % With natbib v5.3, a full list of authors may also follow the year.
48 % In natbib.sty, it is possible to define the type of enclosures that is
49 % really wanted (brackets or parentheses), but in either case, there must
50 % be parentheses in the label.
51 % The \cite command functions as follows:
52 % \citet{key} ==>> Jones et al. (1990)
53 % \citet*{key} ==>> Jones, Baker, and Smith (1990)
54 % \citep{key} ==>> (Jones et al., 1990)
55 % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
56 % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
57 % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
58 % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
59 % \citeauthor{key} ==>> Jones et al.
60 % \citeauthor*{key} ==>> Jones, Baker, and Smith
61 % \citeyear{key} ==>> 1990
62 %---------------------------------------------------------------------
63
64 ENTRY
65 { address
66 archive
67 author
68 booktitle
69 chapter
70 doi
71 edition
72 editor
73 eid
74 eprint
75 howpublished
76 institution
77 journal
78 key
79 month
80 note
81 number
82 organization
83 pages
84 publisher
85 school
86 series
87 title
88 type
89 url
90 volume
91 year
92 }
93 {}
94 { label extra.label sort.label short.list }
95 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
96 FUNCTION {init.state.consts}
97 { #0 'before.all :=
98 #1 'mid.sentence :=
99 #2 'after.sentence :=
100 #3 'after.block :=
101 }
102 STRINGS { s t}
103 FUNCTION {output.nonnull}
104 { 's :=
105 output.state mid.sentence =
106 { ", " * write$ }
107 { output.state after.block =
108 { add.period$ write$
109 newline$
110 "\newblock " write$
111 }
112 { output.state before.all =
113 'write$
114 { add.period$ " " * write$ }
115 if$
116 }
117 if$
118 mid.sentence 'output.state :=
119 }
120 if$
121 s
122 }
123 FUNCTION {output}
124 { duplicate$ empty$
125 'pop$
126 'output.nonnull
127 if$
128 }
129 FUNCTION {output.check}
130 { 't :=
131 duplicate$ empty$
132 { pop$ "empty " t * " in " * cite$ * warning$ }
133 'output.nonnull
134 if$
135 }
136 FUNCTION {fin.entry}
137 { duplicate$ empty$
138 'pop$
139 'write$
140 if$
141 newline$
142 }
143
144 FUNCTION {new.block}
145 { output.state before.all =
146 'skip$
147 { after.block 'output.state := }
148 if$
149 }
150 FUNCTION {new.sentence}
151 { output.state after.block =
152 'skip$
153 { output.state before.all =
154 'skip$
155 { after.sentence 'output.state := }
156 if$
157 }
158 if$
159 }
160 FUNCTION {add.blank}
161 { " " * before.all 'output.state :=
162 }
163
164 FUNCTION {no.blank.or.punct}
165 { "\hspace{0pt}" * before.all 'output.state :=
166 }
167
168 FUNCTION {date.block}
169 {
170 add.blank
171 }
172
173 FUNCTION {not}
174 { { #0 }
175 { #1 }
176 if$
177 }
178 FUNCTION {and}
179 { 'skip$
180 { pop$ #0 }
181 if$
182 }
183 FUNCTION {or}
184 { { pop$ #1 }
185 'skip$
186 if$
187 }
188 STRINGS {z}
189 FUNCTION {remove.dots}
190 { 'z :=
191 ""
192 { z empty$ not }
193 { z #1 #1 substring$
194 z #2 global.max$ substring$ 'z :=
195 duplicate$ "." = 'pop$
196 { * }
197 if$
198 }
199 while$
200 }
201 FUNCTION {new.block.checkb}
202 { empty$
203 swap$ empty$
204 and
205 'skip$
206 'new.block
207 if$
208 }
209 FUNCTION {field.or.null}
210 { duplicate$ empty$
211 { pop$ "" }
212 'skip$
213 if$
214 }
215 FUNCTION {emphasize}
216 { skip$ }
217 FUNCTION {tie.or.space.prefix}
218 { duplicate$ text.length$ #3 <
219 { "~" }
220 { " " }
221 if$
222 swap$
223 }
224
225 FUNCTION {capitalize}
226 { "u" change.case$ "t" change.case$ }
227
228 FUNCTION {space.word}
229 { " " swap$ * " " * }
230 % Here are the language-specific definitions for explicit words.
231 % Each function has a name bbl.xxx where xxx is the English word.
232 % The language selected here is ENGLISH
233 FUNCTION {bbl.and}
234 { "and"}
235
236 FUNCTION {bbl.etal}
237 { "et~al" }
238
239 FUNCTION {bbl.editors}
240 { "eds" }
241
242 FUNCTION {bbl.editor}
243 { "ed" }
244
245 FUNCTION {bbl.edby}
246 { "edited by" }
247
248 FUNCTION {bbl.edition}
249 { "edn" }
250
251 FUNCTION {bbl.volume}
252 { "vol" }
253
254 FUNCTION {bbl.of}
255 { "of" }
256
257 FUNCTION {bbl.number}
258 { "no." }
259
260 FUNCTION {bbl.nr}
261 { "no." }
262
263 FUNCTION {bbl.in}
264 { "in" }
265
266 FUNCTION {bbl.pages}
267 { "pp" }
268
269 FUNCTION {bbl.page}
270 { "p" }
271
272 FUNCTION {bbl.chapter}
273 { "chap" }
274
275 FUNCTION {bbl.techrep}
276 { "Tech. Rep." }
277
278 FUNCTION {bbl.mthesis}
279 { "Master's thesis" }
280
281 FUNCTION {bbl.phdthesis}
282 { "PhD thesis" }
283
284 FUNCTION {bbl.first}
285 { "1st" }
286
287 FUNCTION {bbl.second}
288 { "2nd" }
289
290 FUNCTION {bbl.third}
291 { "3rd" }
292
293 FUNCTION {bbl.fourth}
294 { "4th" }
295
296 FUNCTION {bbl.fifth}
297 { "5th" }
298
299 FUNCTION {bbl.st}
300 { "st" }
301
302 FUNCTION {bbl.nd}
303 { "nd" }
304
305 FUNCTION {bbl.rd}
306 { "rd" }
307
308 FUNCTION {bbl.th}
309 { "th" }
310
311 MACRO {jan} {"Jan."}
312
313 MACRO {feb} {"Feb."}
314
315 MACRO {mar} {"Mar."}
316
317 MACRO {apr} {"Apr."}
318
319 MACRO {may} {"May"}
320
321 MACRO {jun} {"Jun."}
322
323 MACRO {jul} {"Jul."}
324
325 MACRO {aug} {"Aug."}
326
327 MACRO {sep} {"Sep."}
328
329 MACRO {oct} {"Oct."}
330
331 MACRO {nov} {"Nov."}
332
333 MACRO {dec} {"Dec."}
334
335 FUNCTION {eng.ord}
336 { duplicate$ "1" swap$ *
337 #-2 #1 substring$ "1" =
338 { bbl.th * }
339 { duplicate$ #-1 #1 substring$
340 duplicate$ "1" =
341 { pop$ bbl.st * }
342 { duplicate$ "2" =
343 { pop$ bbl.nd * }
344 { "3" =
345 { bbl.rd * }
346 { bbl.th * }
347 if$
348 }
349 if$
350 }
351 if$
352 }
353 if$
354 }
355
356 MACRO {acmcs} {"ACM Comput Surv"}
357
358 MACRO {acta} {"Acta Inf"}
359
360 MACRO {cacm} {"Commun ACM"}
361
362 MACRO {ibmjrd} {"IBM~J~Res Dev"}
363
364 MACRO {ibmsj} {"IBM Syst~J"}
365
366 MACRO {ieeese} {"IEEE Trans Softw Eng"}
367
368 MACRO {ieeetc} {"IEEE Trans Comput"}
369
370 MACRO {ieeetcad}
371 {"IEEE Trans Comput Aid Des"}
372
373 MACRO {ipl} {"Inf Process Lett"}
374
375 MACRO {jacm} {"J~ACM"}
376
377 MACRO {jcss} {"J~Comput Syst Sci"}
378
379 MACRO {scp} {"Sci Comput Program"}
380
381 MACRO {sicomp} {"SIAM J~Comput"}
382
383 MACRO {tocs} {"ACM Trans Comput Syst"}
384
385 MACRO {tods} {"ACM Trans Database Syst"}
386
387 MACRO {tog} {"ACM Trans Graphic"}
388
389 MACRO {toms} {"ACM Trans Math Softw"}
390
391 MACRO {toois} {"ACM Trans Office Inf Syst"}
392
393 MACRO {toplas} {"ACM Trans Program Lang Syst"}
394
395 MACRO {tcs} {"Theor Comput Sci"}
396
397 FUNCTION {bibinfo.check}
398 { swap$
399 duplicate$ missing$
400 {
401 pop$ pop$
402 ""
403 }
404 { duplicate$ empty$
405 {
406 swap$ pop$
407 }
408 { swap$
409 pop$
410 }
411 if$
412 }
413 if$
414 }
415 FUNCTION {bibinfo.warn}
416 { swap$
417 duplicate$ missing$
418 {
419 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
420 ""
421 }
422 { duplicate$ empty$
423 {
424 swap$ "empty " swap$ * " in " * cite$ * warning$
425 }
426 { swap$
427 pop$
428 }
429 if$
430 }
431 if$
432 }
433 FUNCTION {format.eprint}
434 { eprint duplicate$ empty$
435 'skip$
436 { "\eprint"
437 archive empty$
438 'skip$
439 { "[" * archive * "]" * }
440 if$
441 "{" * swap$ * "}" *
442 }
443 if$
444 }
445 FUNCTION {format.url}
446 { url empty$
447 { "" }
448 { "\urlprefix\url{" url * "}" * }
449 if$
450 }
451
452 STRINGS { bibinfo}
453 INTEGERS { nameptr namesleft numnames }
454
455 FUNCTION {format.names}
456 { 'bibinfo :=
457 duplicate$ empty$ 'skip$ {
458 's :=
459 "" 't :=
460 #1 'nameptr :=
461 s num.names$ 'numnames :=
462 numnames 'namesleft :=
463 { namesleft #0 > }
464 { s nameptr
465 "{vv~}{ll}{ f{}}{ jj}"
466 format.name$
467 remove.dots
468 bibinfo bibinfo.check
469 't :=
470 nameptr #1 >
471 {
472 namesleft #1 >
473 { ", " * t * }
474 {
475 "," *
476 s nameptr "{ll}" format.name$ duplicate$ "others" =
477 { 't := }
478 { pop$ }
479 if$
480 t "others" =
481 {
482 " " * bbl.etal *
483 }
484 { " " * t * }
485 if$
486 }
487 if$
488 }
489 't
490 if$
491 nameptr #1 + 'nameptr :=
492 namesleft #1 - 'namesleft :=
493 }
494 while$
495 } if$
496 }
497 FUNCTION {format.names.ed}
498 {
499 format.names
500 }
501 FUNCTION {format.key}
502 { empty$
503 { key field.or.null }
504 { "" }
505 if$
506 }
507
508 FUNCTION {format.authors}
509 { author "author" format.names
510 }
511 FUNCTION {get.bbl.editor}
512 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
513
514 FUNCTION {format.editors}
515 { editor "editor" format.names duplicate$ empty$ 'skip$
516 {
517 " " *
518 get.bbl.editor
519 "(" swap$ * ")" *
520 *
521 }
522 if$
523 }
524 FUNCTION {format.doi}
525 { doi "doi" bibinfo.check
526 duplicate$ empty$ 'skip$
527 {
528 "\doi{" swap$ * "}" *
529 }
530 if$
531 }
532 FUNCTION {format.note}
533 {
534 note empty$
535 { "" }
536 { note #1 #1 substring$
537 duplicate$ "{" =
538 'skip$
539 { output.state mid.sentence =
540 { "l" }
541 { "u" }
542 if$
543 change.case$
544 }
545 if$
546 note #2 global.max$ substring$ * "note" bibinfo.check
547 }
548 if$
549 }
550
551 FUNCTION {format.title}
552 { title
553 duplicate$ empty$ 'skip$
554 { "t" change.case$ }
555 if$
556 "title" bibinfo.check
557 }
558 FUNCTION {format.full.names}
559 {'s :=
560 "" 't :=
561 #1 'nameptr :=
562 s num.names$ 'numnames :=
563 numnames 'namesleft :=
564 { namesleft #0 > }
565 { s nameptr
566 "{vv~}{ll}" format.name$
567 't :=
568 nameptr #1 >
569 {
570 namesleft #1 >
571 { ", " * t * }
572 {
573 s nameptr "{ll}" format.name$ duplicate$ "others" =
574 { 't := }
575 { pop$ }
576 if$
577 t "others" =
578 {
579 " " * bbl.etal *
580 }
581 {
582 numnames #2 >
583 { "," * }
584 'skip$
585 if$
586 bbl.and
587 space.word * t *
588 }
589 if$
590 }
591 if$
592 }
593 't
594 if$
595 nameptr #1 + 'nameptr :=
596 namesleft #1 - 'namesleft :=
597 }
598 while$
599 }
600
601 FUNCTION {author.editor.key.full}
602 { author empty$
603 { editor empty$
604 { key empty$
605 { cite$ #1 #3 substring$ }
606 'key
607 if$
608 }
609 { editor format.full.names }
610 if$
611 }
612 { author format.full.names }
613 if$
614 }
615
616 FUNCTION {author.key.full}
617 { author empty$
618 { key empty$
619 { cite$ #1 #3 substring$ }
620 'key
621 if$
622 }
623 { author format.full.names }
624 if$
625 }
626
627 FUNCTION {editor.key.full}
628 { editor empty$
629 { key empty$
630 { cite$ #1 #3 substring$ }
631 'key
632 if$
633 }
634 { editor format.full.names }
635 if$
636 }
637
638 FUNCTION {make.full.names}
639 { type$ "book" =
640 type$ "inbook" =
641 or
642 'author.editor.key.full
643 { type$ "proceedings" =
644 'editor.key.full
645 'author.key.full
646 if$
647 }
648 if$
649 }
650
651 FUNCTION {output.bibitem}
652 { newline$
653 "\bibitem[{" write$
654 label write$
655 ")" make.full.names duplicate$ short.list =
656 { pop$ }
657 { * }
658 if$
659 "}]{" * write$
660 cite$ write$
661 "}" write$
662 newline$
663 ""
664 before.all 'output.state :=
665 }
666
667 FUNCTION {add.period}
668 { duplicate$ empty$
669 'skip$
670 { "." * add.blank }
671 if$
672 }
673
674 FUNCTION {if.digit}
675 { duplicate$ "0" =
676 swap$ duplicate$ "1" =
677 swap$ duplicate$ "2" =
678 swap$ duplicate$ "3" =
679 swap$ duplicate$ "4" =
680 swap$ duplicate$ "5" =
681 swap$ duplicate$ "6" =
682 swap$ duplicate$ "7" =
683 swap$ duplicate$ "8" =
684 swap$ "9" = or or or or or or or or or
685 }
686 FUNCTION {n.separate}
687 { 't :=
688 ""
689 #0 'numnames :=
690 { t empty$ not }
691 { t #-1 #1 substring$ if.digit
692 { numnames #1 + 'numnames := }
693 { #0 'numnames := }
694 if$
695 t #-1 #1 substring$ swap$ *
696 t #-2 global.max$ substring$ 't :=
697 numnames #5 =
698 { duplicate$ #1 #2 substring$ swap$
699 #3 global.max$ substring$
700 "," swap$ * *
701 }
702 'skip$
703 if$
704 }
705 while$
706 }
707 FUNCTION {n.dashify}
708 {
709 n.separate
710 't :=
711 ""
712 { t empty$ not }
713 { t #1 #1 substring$ "-" =
714 { t #1 #2 substring$ "--" = not
715 { "--" *
716 t #2 global.max$ substring$ 't :=
717 }
718 { { t #1 #1 substring$ "-" = }
719 { "-" *
720 t #2 global.max$ substring$ 't :=
721 }
722 while$
723 }
724 if$
725 }
726 { t #1 #1 substring$ *
727 t #2 global.max$ substring$ 't :=
728 }
729 if$
730 }
731 while$
732 }
733
734 FUNCTION {word.in}
735 { bbl.in capitalize
736 ":" *
737 " " * }
738
739 FUNCTION {format.date}
740 { year "year" bibinfo.check duplicate$ empty$
741 {
742 "empty year in " cite$ * "; set to ????" * warning$
743 pop$ "????"
744 }
745 'skip$
746 if$
747 extra.label *
748 before.all 'output.state :=
749 " (" swap$ * ")" *
750 }
751 FUNCTION {format.btitle}
752 { title "title" bibinfo.check
753 duplicate$ empty$ 'skip$
754 {
755 }
756 if$
757 }
758 FUNCTION {either.or.check}
759 { empty$
760 'pop$
761 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
762 if$
763 }
764 FUNCTION {format.bvolume}
765 { volume empty$
766 { "" }
767 { bbl.volume volume tie.or.space.prefix
768 "volume" bibinfo.check * *
769 series "series" bibinfo.check
770 duplicate$ empty$ 'pop$
771 { emphasize ", " * swap$ * }
772 if$
773 "volume and number" number either.or.check
774 }
775 if$
776 }
777 FUNCTION {format.number.series}
778 { volume empty$
779 { number empty$
780 { series field.or.null }
781 { series empty$
782 { number "number" bibinfo.check }
783 { output.state mid.sentence =
784 { bbl.number }
785 { bbl.number capitalize }
786 if$
787 number tie.or.space.prefix "number" bibinfo.check * *
788 bbl.in space.word *
789 series "series" bibinfo.check *
790 }
791 if$
792 }
793 if$
794 }
795 { "" }
796 if$
797 }
798 FUNCTION {is.num}
799 { chr.to.int$
800 duplicate$ "0" chr.to.int$ < not
801 swap$ "9" chr.to.int$ > not and
802 }
803
804 FUNCTION {extract.num}
805 { duplicate$ 't :=
806 "" 's :=
807 { t empty$ not }
808 { t #1 #1 substring$
809 t #2 global.max$ substring$ 't :=
810 duplicate$ is.num
811 { s swap$ * 's := }
812 { pop$ "" 't := }
813 if$
814 }
815 while$
816 s empty$
817 'skip$
818 { pop$ s }
819 if$
820 }
821
822 FUNCTION {convert.edition}
823 { extract.num "l" change.case$ 's :=
824 s "first" = s "1" = or
825 { bbl.first 't := }
826 { s "second" = s "2" = or
827 { bbl.second 't := }
828 { s "third" = s "3" = or
829 { bbl.third 't := }
830 { s "fourth" = s "4" = or
831 { bbl.fourth 't := }
832 { s "fifth" = s "5" = or
833 { bbl.fifth 't := }
834 { s #1 #1 substring$ is.num
835 { s eng.ord 't := }
836 { edition 't := }
837 if$
838 }
839 if$
840 }
841 if$
842 }
843 if$
844 }
845 if$
846 }
847 if$
848 t
849 }
850
851 FUNCTION {format.edition}
852 { edition duplicate$ empty$ 'skip$
853 {
854 convert.edition
855 output.state mid.sentence =
856 { "l" }
857 { "t" }
858 if$ change.case$
859 "edition" bibinfo.check
860 " " * bbl.edition *
861 }
862 if$
863 }
864 INTEGERS { multiresult }
865 FUNCTION {multi.page.check}
866 { 't :=
867 #0 'multiresult :=
868 { multiresult not
869 t empty$ not
870 and
871 }
872 { t #1 #1 substring$
873 duplicate$ "-" =
874 swap$ duplicate$ "," =
875 swap$ "+" =
876 or or
877 { #1 'multiresult := }
878 { t #2 global.max$ substring$ 't := }
879 if$
880 }
881 while$
882 multiresult
883 }
884 FUNCTION {format.pages}
885 { pages duplicate$ empty$ 'skip$
886 { duplicate$ multi.page.check
887 {
888 bbl.pages swap$
889 n.dashify
890 }
891 {
892 bbl.page swap$
893 }
894 if$
895 tie.or.space.prefix
896 "pages" bibinfo.check
897 * *
898 }
899 if$
900 }
901 FUNCTION {format.journal.pages}
902 { pages duplicate$ empty$ 'pop$
903 { swap$ duplicate$ empty$
904 { pop$ pop$ format.pages }
905 {
906 ":" *
907 swap$
908 n.dashify
909 "pages" bibinfo.check
910 *
911 }
912 if$
913 }
914 if$
915 }
916 FUNCTION {format.journal.eid}
917 { eid "eid" bibinfo.check
918 duplicate$ empty$ 'pop$
919 { swap$ duplicate$ empty$ 'skip$
920 {
921 ":" *
922 }
923 if$
924 swap$ *
925 }
926 if$
927 }
928 FUNCTION {format.vol.num.pages}
929 { volume field.or.null
930 duplicate$ empty$ 'skip$
931 {
932 "volume" bibinfo.check
933 }
934 if$
935 number "number" bibinfo.check duplicate$ empty$ 'skip$
936 {
937 swap$ duplicate$ empty$
938 { "there's a number but no volume in " cite$ * warning$ }
939 'skip$
940 if$
941 swap$
942 "(" swap$ * ")" *
943 }
944 if$ *
945 eid empty$
946 { format.journal.pages }
947 { format.journal.eid }
948 if$
949 }
950
951 FUNCTION {format.chapter.pages}
952 { chapter empty$
953 'format.pages
954 { type empty$
955 { bbl.chapter }
956 { type "l" change.case$
957 "type" bibinfo.check
958 }
959 if$
960 chapter tie.or.space.prefix
961 "chapter" bibinfo.check
962 * *
963 pages empty$
964 'skip$
965 { ", " * format.pages * }
966 if$
967 }
968 if$
969 }
970
971 FUNCTION {format.booktitle}
972 {
973 booktitle "booktitle" bibinfo.check
974 }
975 FUNCTION {format.in.ed.booktitle}
976 { format.booktitle duplicate$ empty$ 'skip$
977 {
978 editor "editor" format.names.ed duplicate$ empty$ 'pop$
979 {
980 " " *
981 get.bbl.editor
982 "(" swap$ * ") " *
983 * swap$
984 * }
985 if$
986 word.in swap$ *
987 }
988 if$
989 }
990 FUNCTION {format.thesis.type}
991 { type duplicate$ empty$
992 'pop$
993 { swap$ pop$
994 "t" change.case$ "type" bibinfo.check
995 }
996 if$
997 }
998 FUNCTION {format.tr.number}
999 { number "number" bibinfo.check
1000 type duplicate$ empty$
1001 { pop$ bbl.techrep }
1002 'skip$
1003 if$
1004 "type" bibinfo.check
1005 swap$ duplicate$ empty$
1006 { pop$ "t" change.case$ }
1007 { tie.or.space.prefix * * }
1008 if$
1009 }
1010 FUNCTION {format.article.crossref}
1011 {
1012 word.in
1013 " \cite{" * crossref * "}" *
1014 }
1015 FUNCTION {format.book.crossref}
1016 { volume duplicate$ empty$
1017 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
1018 pop$ word.in
1019 }
1020 { bbl.volume
1021 capitalize
1022 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
1023 }
1024 if$
1025 " \cite{" * crossref * "}" *
1026 }
1027 FUNCTION {format.incoll.inproc.crossref}
1028 {
1029 word.in
1030 " \cite{" * crossref * "}" *
1031 }
1032 FUNCTION {format.org.or.pub}
1033 { 't :=
1034 ""
1035 address empty$ t empty$ and
1036 'skip$
1037 {
1038 t empty$
1039 { address "address" bibinfo.check *
1040 }
1041 { t *
1042 address empty$
1043 'skip$
1044 { ", " * address "address" bibinfo.check * }
1045 if$
1046 }
1047 if$
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 author format.key output
1063 format.date "year" output.check
1064 date.block
1065 format.title "title" output.check
1066 new.sentence
1067 crossref missing$
1068 {
1069 journal
1070 remove.dots
1071 "journal" bibinfo.check
1072 "journal" output.check
1073 add.blank
1074 format.vol.num.pages output
1075 }
1076 { format.article.crossref output.nonnull
1077 format.pages output
1078 }
1079 if$
1080 format.doi output
1081 format.url output
1082 format.note output
1083 format.eprint output
1084 fin.entry
1085 }
1086 FUNCTION {book}
1087 { output.bibitem
1088 author empty$
1089 { format.editors "author and editor" output.check
1090 editor format.key output
1091 add.blank
1092 }
1093 { format.authors output.nonnull
1094 crossref missing$
1095 { "author and editor" editor either.or.check }
1096 'skip$
1097 if$
1098 }
1099 if$
1100 format.date "year" output.check
1101 date.block
1102 format.btitle "title" output.check
1103 crossref missing$
1104 { format.bvolume output
1105 format.edition output
1106 new.sentence
1107 format.number.series output
1108 format.publisher.address output
1109 }
1110 {
1111 new.sentence
1112 format.book.crossref output.nonnull
1113 }
1114 if$
1115 format.doi output
1116 format.url output
1117 format.note output
1118 format.eprint output
1119 fin.entry
1120 }
1121 FUNCTION {booklet}
1122 { output.bibitem
1123 format.authors output
1124 author format.key output
1125 format.date "year" output.check
1126 date.block
1127 format.title "title" output.check
1128 new.sentence
1129 howpublished "howpublished" bibinfo.check output
1130 address "address" bibinfo.check output
1131 format.doi output
1132 format.url output
1133 format.note output
1134 format.eprint output
1135 fin.entry
1136 }
1137
1138 FUNCTION {inbook}
1139 { output.bibitem
1140 author empty$
1141 { format.editors "author and editor" output.check
1142 editor format.key output
1143 }
1144 { format.authors output.nonnull
1145 crossref missing$
1146 { "author and editor" editor either.or.check }
1147 'skip$
1148 if$
1149 }
1150 if$
1151 format.date "year" output.check
1152 date.block
1153 format.btitle "title" output.check
1154 crossref missing$
1155 {
1156 format.bvolume output
1157 format.edition output
1158 format.publisher.address output
1159 format.chapter.pages "chapter and pages" output.check
1160 new.sentence
1161 format.number.series output
1162 }
1163 {
1164 format.chapter.pages "chapter and pages" output.check
1165 new.sentence
1166 format.book.crossref output.nonnull
1167 }
1168 if$
1169 format.doi output
1170 format.url output
1171 format.note output
1172 format.eprint output
1173 fin.entry
1174 }
1175
1176 FUNCTION {incollection}
1177 { output.bibitem
1178 format.authors "author" output.check
1179 author format.key output
1180 format.date "year" output.check
1181 date.block
1182 format.title "title" output.check
1183 new.sentence
1184 crossref missing$
1185 { format.in.ed.booktitle "booktitle" output.check
1186 format.bvolume output
1187 format.edition output
1188 format.number.series output
1189 format.publisher.address output
1190 format.chapter.pages output
1191 }
1192 { format.incoll.inproc.crossref output.nonnull
1193 format.chapter.pages output
1194 }
1195 if$
1196 format.doi output
1197 format.url output
1198 format.note output
1199 format.eprint output
1200 fin.entry
1201 }
1202 FUNCTION {inproceedings}
1203 { output.bibitem
1204 format.authors "author" output.check
1205 author format.key output
1206 format.date "year" output.check
1207 date.block
1208 format.title "title" output.check
1209 new.sentence
1210 crossref missing$
1211 { format.in.ed.booktitle "booktitle" output.check
1212 publisher empty$
1213 { format.organization.address output }
1214 { organization "organization" bibinfo.check output
1215 format.publisher.address output
1216 }
1217 if$
1218 format.bvolume output
1219 format.number.series output
1220 format.pages output
1221 }
1222 { format.incoll.inproc.crossref output.nonnull
1223 format.pages output
1224 }
1225 if$
1226 format.doi output
1227 format.url output
1228 format.note output
1229 format.eprint output
1230 fin.entry
1231 }
1232 FUNCTION {conference} { inproceedings }
1233 FUNCTION {manual}
1234 { output.bibitem
1235 format.authors output
1236 author format.key output
1237 format.date "year" output.check
1238 date.block
1239 format.btitle "title" output.check
1240 new.sentence
1241 organization "organization" bibinfo.check output
1242 address "address" bibinfo.check output
1243 format.edition output
1244 format.doi output
1245 format.url output
1246 format.note output
1247 format.eprint output
1248 fin.entry
1249 }
1250
1251 FUNCTION {mastersthesis}
1252 { output.bibitem
1253 format.authors "author" output.check
1254 author format.key output
1255 format.date "year" output.check
1256 date.block
1257 format.title
1258 "title" output.check
1259 new.sentence
1260 bbl.mthesis format.thesis.type output.nonnull
1261 school "school" bibinfo.warn output
1262 address "address" bibinfo.check output
1263 format.doi output
1264 format.url output
1265 format.note output
1266 format.eprint output
1267 fin.entry
1268 }
1269
1270 FUNCTION {misc}
1271 { output.bibitem
1272 format.authors output
1273 author format.key output
1274 format.date "year" output.check
1275 date.block
1276 format.title output
1277 new.sentence
1278 howpublished "howpublished" bibinfo.check output
1279 format.doi output
1280 format.url output
1281 format.note output
1282 format.eprint output
1283 fin.entry
1284 }
1285 FUNCTION {phdthesis}
1286 { output.bibitem
1287 format.authors "author" output.check
1288 author format.key output
1289 format.date "year" output.check
1290 date.block
1291 format.title
1292 "title" output.check
1293 new.sentence
1294 bbl.phdthesis format.thesis.type output.nonnull
1295 school "school" bibinfo.warn output
1296 address "address" bibinfo.check output
1297 format.doi output
1298 format.url output
1299 format.note output
1300 format.eprint output
1301 fin.entry
1302 }
1303
1304 FUNCTION {proceedings}
1305 { output.bibitem
1306 format.editors output
1307 editor format.key output
1308 format.date "year" output.check
1309 date.block
1310 format.btitle "title" output.check
1311 format.bvolume output
1312 format.number.series output
1313 publisher empty$
1314 { format.organization.address output }
1315 { organization "organization" bibinfo.check output
1316 format.publisher.address output
1317 }
1318 if$
1319 format.doi output
1320 format.url output
1321 format.note output
1322 format.eprint output
1323 fin.entry
1324 }
1325
1326 FUNCTION {techreport}
1327 { output.bibitem
1328 format.authors "author" output.check
1329 author format.key output
1330 format.date "year" output.check
1331 date.block
1332 format.title
1333 "title" output.check
1334 new.sentence
1335 format.tr.number output.nonnull
1336 institution "institution" bibinfo.warn output
1337 address "address" bibinfo.check output
1338 format.doi output
1339 format.url output
1340 format.note output
1341 format.eprint output
1342 fin.entry
1343 }
1344
1345 FUNCTION {unpublished}
1346 { output.bibitem
1347 format.authors "author" output.check
1348 author format.key output
1349 format.date "year" output.check
1350 date.block
1351 format.title "title" output.check
1352 format.doi output
1353 format.url output
1354 format.note "note" output.check
1355 format.eprint output
1356 fin.entry
1357 }
1358
1359 FUNCTION {default.type} { misc }
1360 READ
1361 FUNCTION {sortify}
1362 { purify$
1363 "l" change.case$
1364 }
1365 INTEGERS { len }
1366 FUNCTION {chop.word}
1367 { 's :=
1368 'len :=
1369 s #1 len substring$ =
1370 { s len #1 + global.max$ substring$ }
1371 's
1372 if$
1373 }
1374 FUNCTION {format.lab.names}
1375 { 's :=
1376 "" 't :=
1377 s #1 "{vv~}{ll}" format.name$
1378 s num.names$ duplicate$
1379 #2 >
1380 { pop$
1381 " " * bbl.etal *
1382 }
1383 { #2 <
1384 'skip$
1385 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1386 {
1387 " " * bbl.etal *
1388 }
1389 { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1390 * }
1391 if$
1392 }
1393 if$
1394 }
1395 if$
1396 }
1397
1398 FUNCTION {author.key.label}
1399 { author empty$
1400 { key empty$
1401 { cite$ #1 #3 substring$ }
1402 'key
1403 if$
1404 }
1405 { author format.lab.names }
1406 if$
1407 }
1408
1409 FUNCTION {author.editor.key.label}
1410 { author empty$
1411 { editor empty$
1412 { key empty$
1413 { cite$ #1 #3 substring$ }
1414 'key
1415 if$
1416 }
1417 { editor format.lab.names }
1418 if$
1419 }
1420 { author format.lab.names }
1421 if$
1422 }
1423
1424 FUNCTION {editor.key.label}
1425 { editor empty$
1426 { key empty$
1427 { cite$ #1 #3 substring$ }
1428 'key
1429 if$
1430 }
1431 { editor format.lab.names }
1432 if$
1433 }
1434
1435 FUNCTION {calc.short.authors}
1436 { type$ "book" =
1437 type$ "inbook" =
1438 or
1439 'author.editor.key.label
1440 { type$ "proceedings" =
1441 'editor.key.label
1442 'author.key.label
1443 if$
1444 }
1445 if$
1446 'short.list :=
1447 }
1448
1449 FUNCTION {calc.label}
1450 { calc.short.authors
1451 short.list
1452 "("
1453 *
1454 year duplicate$ empty$
1455 { pop$ "????" }
1456 'skip$
1457 if$
1458 *
1459 'label :=
1460 }
1461
1462 FUNCTION {sort.format.names}
1463 { 's :=
1464 #1 'nameptr :=
1465 ""
1466 s num.names$ 'numnames :=
1467 numnames 'namesleft :=
1468 { namesleft #0 > }
1469 { s nameptr
1470 "{ll{ }}{ f{ }}{ jj{ }}"
1471 format.name$ 't :=
1472 nameptr #1 >
1473 {
1474 " " *
1475 namesleft #1 = t "others" = and
1476 { "zzzzz" * }
1477 { numnames #2 > nameptr #2 = and
1478 { "zz" * year field.or.null * " " * }
1479 'skip$
1480 if$
1481 t sortify *
1482 }
1483 if$
1484 }
1485 { t sortify * }
1486 if$
1487 nameptr #1 + 'nameptr :=
1488 namesleft #1 - 'namesleft :=
1489 }
1490 while$
1491 }
1492
1493 FUNCTION {sort.format.title}
1494 { 't :=
1495 "A " #2
1496 "An " #3
1497 "The " #4 t chop.word
1498 chop.word
1499 chop.word
1500 sortify
1501 #1 global.max$ substring$
1502 }
1503 FUNCTION {author.sort}
1504 { author empty$
1505 { key empty$
1506 { "to sort, need author or key in " cite$ * warning$
1507 ""
1508 }
1509 { key sortify }
1510 if$
1511 }
1512 { author sort.format.names }
1513 if$
1514 }
1515 FUNCTION {author.editor.sort}
1516 { author empty$
1517 { editor empty$
1518 { key empty$
1519 { "to sort, need author, editor, or key in " cite$ * warning$
1520 ""
1521 }
1522 { key sortify }
1523 if$
1524 }
1525 { editor sort.format.names }
1526 if$
1527 }
1528 { author sort.format.names }
1529 if$
1530 }
1531 FUNCTION {editor.sort}
1532 { editor empty$
1533 { key empty$
1534 { "to sort, need editor or key in " cite$ * warning$
1535 ""
1536 }
1537 { key sortify }
1538 if$
1539 }
1540 { editor sort.format.names }
1541 if$
1542 }
1543 FUNCTION {presort}
1544 { calc.label
1545 label sortify
1546 " "
1547 *
1548 type$ "book" =
1549 type$ "inbook" =
1550 or
1551 'author.editor.sort
1552 { type$ "proceedings" =
1553 'editor.sort
1554 'author.sort
1555 if$
1556 }
1557 if$
1558 #1 entry.max$ substring$
1559 'sort.label :=
1560 sort.label
1561 *
1562 " "
1563 *
1564 title field.or.null
1565 sort.format.title
1566 *
1567 #1 entry.max$ substring$
1568 'sort.key$ :=
1569 }
1570
1571 ITERATE {presort}
1572 SORT
1573 STRINGS { last.label next.extra }
1574 INTEGERS { last.extra.num number.label }
1575 FUNCTION {initialize.extra.label.stuff}
1576 { #0 int.to.chr$ 'last.label :=
1577 "" 'next.extra :=
1578 #0 'last.extra.num :=
1579 #0 'number.label :=
1580 }
1581 FUNCTION {forward.pass}
1582 { last.label label =
1583 { last.extra.num #1 + 'last.extra.num :=
1584 last.extra.num int.to.chr$ 'extra.label :=
1585 }
1586 { "a" chr.to.int$ 'last.extra.num :=
1587 "" 'extra.label :=
1588 label 'last.label :=
1589 }
1590 if$
1591 number.label #1 + 'number.label :=
1592 }
1593 FUNCTION {reverse.pass}
1594 { next.extra "b" =
1595 { "a" 'extra.label := }
1596 'skip$
1597 if$
1598 extra.label 'next.extra :=
1599 extra.label
1600 duplicate$ empty$
1601 'skip$
1602 { "{\natexlab{" swap$ * "}}" * }
1603 if$
1604 'extra.label :=
1605 label extra.label * 'label :=
1606 }
1607 EXECUTE {initialize.extra.label.stuff}
1608 ITERATE {forward.pass}
1609 REVERSE {reverse.pass}
1610 FUNCTION {bib.sort.order}
1611 { sort.label
1612 " "
1613 *
1614 year field.or.null sortify
1615 *
1616 " "
1617 *
1618 title field.or.null
1619 sort.format.title
1620 *
1621 #1 entry.max$ substring$
1622 'sort.key$ :=
1623 }
1624 ITERATE {bib.sort.order}
1625 SORT
1626 FUNCTION {begin.bib}
1627 { preamble$ empty$
1628 'skip$
1629 { preamble$ write$ newline$ }
1630 if$
1631 "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1632 write$ newline$
1633 "\providecommand{\natexlab}[1]{#1}"
1634 write$ newline$
1635 "\providecommand{\url}[1]{{#1}}"
1636 write$ newline$
1637 "\providecommand{\urlprefix}{URL }"
1638 write$ newline$
1639 "\expandafter\ifx\csname urlstyle\endcsname\relax"
1640 write$ newline$
1641 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else"
1642 write$ newline$
1643 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
1644 write$ newline$
1645 "\providecommand{\eprint}[2][]{\url{#2}}"
1646 write$ newline$
1647 }
1648 EXECUTE {begin.bib}
1649 EXECUTE {init.state.consts}
1650 ITERATE {call.type$}
1651 FUNCTION {end.bib}
1652 { newline$
1653 "\end{thebibliography}" write$ newline$
1654 }
1655 EXECUTE {end.bib}
1656 %% End of customized bst file
1657 %%
1658 %% End of file `spbasic.bst'.
1659