source: Papers/polymorphic-variants-2012/spbasic.bst @ 3418

Last change on this file since 3418 was 2396, checked in by mulligan, 7 years ago

Polymorphic variants paper skeleton

File size: 32.5 KB
Line 
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
64ENTRY
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 }
95INTEGERS { output.state before.all mid.sentence after.sentence after.block }
96FUNCTION {init.state.consts}
97{ #0 'before.all :=
98  #1 'mid.sentence :=
99  #2 'after.sentence :=
100  #3 'after.block :=
101}
102STRINGS { s t}
103FUNCTION {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}
123FUNCTION {output}
124{ duplicate$ empty$
125    'pop$
126    'output.nonnull
127  if$
128}
129FUNCTION {output.check}
130{ 't :=
131  duplicate$ empty$
132    { pop$ "empty " t * " in " * cite$ * warning$ }
133    'output.nonnull
134  if$
135}
136FUNCTION {fin.entry}
137{ duplicate$ empty$
138    'pop$
139    'write$
140  if$
141  newline$
142}
143
144FUNCTION {new.block}
145{ output.state before.all =
146    'skip$
147    { after.block 'output.state := }
148  if$
149}
150FUNCTION {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}
160FUNCTION {add.blank}
161{  " " * before.all 'output.state :=
162}
163
164FUNCTION {no.blank.or.punct}
165{  "\hspace{0pt}" * before.all 'output.state :=
166}
167
168FUNCTION {date.block}
169{
170    add.blank
171}
172
173FUNCTION {not}
174{   { #0 }
175    { #1 }
176  if$
177}
178FUNCTION {and}
179{   'skip$
180    { pop$ #0 }
181  if$
182}
183FUNCTION {or}
184{   { pop$ #1 }
185    'skip$
186  if$
187}
188STRINGS {z}
189FUNCTION {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}
201FUNCTION {new.block.checkb}
202{ empty$
203  swap$ empty$
204  and
205    'skip$
206    'new.block
207  if$
208}
209FUNCTION {field.or.null}
210{ duplicate$ empty$
211    { pop$ "" }
212    'skip$
213  if$
214}
215FUNCTION {emphasize}
216{ skip$ }
217FUNCTION {tie.or.space.prefix}
218{ duplicate$ text.length$ #3 <
219    { "~" }
220    { " " }
221  if$
222  swap$
223}
224
225FUNCTION {capitalize}
226{ "u" change.case$ "t" change.case$ }
227
228FUNCTION {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
233FUNCTION {bbl.and}
234{ "and"}
235
236FUNCTION {bbl.etal}
237{ "et~al" }
238
239FUNCTION {bbl.editors}
240{ "eds" }
241
242FUNCTION {bbl.editor}
243{ "ed" }
244
245FUNCTION {bbl.edby}
246{ "edited by" }
247
248FUNCTION {bbl.edition}
249{ "edn" }
250
251FUNCTION {bbl.volume}
252{ "vol" }
253
254FUNCTION {bbl.of}
255{ "of" }
256
257FUNCTION {bbl.number}
258{ "no." }
259
260FUNCTION {bbl.nr}
261{ "no." }
262
263FUNCTION {bbl.in}
264{ "in" }
265
266FUNCTION {bbl.pages}
267{ "pp" }
268
269FUNCTION {bbl.page}
270{ "p" }
271
272FUNCTION {bbl.chapter}
273{ "chap" }
274
275FUNCTION {bbl.techrep}
276{ "Tech. Rep." }
277
278FUNCTION {bbl.mthesis}
279{ "Master's thesis" }
280
281FUNCTION {bbl.phdthesis}
282{ "PhD thesis" }
283
284FUNCTION {bbl.first}
285{ "1st" }
286
287FUNCTION {bbl.second}
288{ "2nd" }
289
290FUNCTION {bbl.third}
291{ "3rd" }
292
293FUNCTION {bbl.fourth}
294{ "4th" }
295
296FUNCTION {bbl.fifth}
297{ "5th" }
298
299FUNCTION {bbl.st}
300{ "st" }
301
302FUNCTION {bbl.nd}
303{ "nd" }
304
305FUNCTION {bbl.rd}
306{ "rd" }
307
308FUNCTION {bbl.th}
309{ "th" }
310
311MACRO {jan} {"Jan."}
312
313MACRO {feb} {"Feb."}
314
315MACRO {mar} {"Mar."}
316
317MACRO {apr} {"Apr."}
318
319MACRO {may} {"May"}
320
321MACRO {jun} {"Jun."}
322
323MACRO {jul} {"Jul."}
324
325MACRO {aug} {"Aug."}
326
327MACRO {sep} {"Sep."}
328
329MACRO {oct} {"Oct."}
330
331MACRO {nov} {"Nov."}
332
333MACRO {dec} {"Dec."}
334
335FUNCTION {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
356MACRO {acmcs} {"ACM Comput Surv"}
357
358MACRO {acta} {"Acta Inf"}
359
360MACRO {cacm} {"Commun ACM"}
361
362MACRO {ibmjrd} {"IBM~J~Res Dev"}
363
364MACRO {ibmsj} {"IBM Syst~J"}
365
366MACRO {ieeese} {"IEEE Trans Softw Eng"}
367
368MACRO {ieeetc} {"IEEE Trans Comput"}
369
370MACRO {ieeetcad}
371 {"IEEE Trans Comput Aid Des"}
372
373MACRO {ipl} {"Inf Process Lett"}
374
375MACRO {jacm} {"J~ACM"}
376
377MACRO {jcss} {"J~Comput Syst Sci"}
378
379MACRO {scp} {"Sci Comput Program"}
380
381MACRO {sicomp} {"SIAM J~Comput"}
382
383MACRO {tocs} {"ACM Trans Comput Syst"}
384
385MACRO {tods} {"ACM Trans Database Syst"}
386
387MACRO {tog} {"ACM Trans Graphic"}
388
389MACRO {toms} {"ACM Trans Math Softw"}
390
391MACRO {toois} {"ACM Trans Office Inf Syst"}
392
393MACRO {toplas} {"ACM Trans Program Lang Syst"}
394
395MACRO {tcs} {"Theor Comput Sci"}
396
397FUNCTION {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}
415FUNCTION {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}
433FUNCTION {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}
445FUNCTION {format.url}
446{ url empty$
447    { "" }
448    { "\urlprefix\url{" url * "}" * }
449  if$
450}
451
452STRINGS  { bibinfo}
453INTEGERS { nameptr namesleft numnames }
454
455FUNCTION {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}
497FUNCTION {format.names.ed}
498{
499  format.names
500}
501FUNCTION {format.key}
502{ empty$
503    { key field.or.null }
504    { "" }
505  if$
506}
507
508FUNCTION {format.authors}
509{ author "author" format.names
510}
511FUNCTION {get.bbl.editor}
512{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
513
514FUNCTION {format.editors}
515{ editor "editor" format.names duplicate$ empty$ 'skip$
516    {
517      " " *
518      get.bbl.editor
519   "(" swap$ * ")" *
520      *
521    }
522  if$
523}
524FUNCTION {format.doi}
525{ doi "doi" bibinfo.check
526  duplicate$ empty$ 'skip$
527    {
528      "\doi{" swap$ * "}" *
529    }
530  if$
531}
532FUNCTION {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
551FUNCTION {format.title}
552{ title
553  duplicate$ empty$ 'skip$
554    { "t" change.case$ }
555  if$
556  "title" bibinfo.check
557}
558FUNCTION {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
601FUNCTION {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
616FUNCTION {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
627FUNCTION {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
638FUNCTION {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
651FUNCTION {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
667FUNCTION {add.period}
668{ duplicate$ empty$
669    'skip$
670    { "." * add.blank }
671  if$
672}
673
674FUNCTION {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}
686FUNCTION {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}
707FUNCTION {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
734FUNCTION {word.in}
735{ bbl.in capitalize
736  ":" *
737  " " * }
738
739FUNCTION {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}
751FUNCTION {format.btitle}
752{ title "title" bibinfo.check
753  duplicate$ empty$ 'skip$
754    {
755    }
756  if$
757}
758FUNCTION {either.or.check}
759{ empty$
760    'pop$
761    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
762  if$
763}
764FUNCTION {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}
777FUNCTION {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}
798FUNCTION {is.num}
799{ chr.to.int$
800  duplicate$ "0" chr.to.int$ < not
801  swap$ "9" chr.to.int$ > not and
802}
803
804FUNCTION {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
822FUNCTION {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
851FUNCTION {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}
864INTEGERS { multiresult }
865FUNCTION {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}
884FUNCTION {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}
901FUNCTION {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}
916FUNCTION {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}
928FUNCTION {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
951FUNCTION {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
971FUNCTION {format.booktitle}
972{
973  booktitle "booktitle" bibinfo.check
974}
975FUNCTION {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}
990FUNCTION {format.thesis.type}
991{ type duplicate$ empty$
992    'pop$
993    { swap$ pop$
994      "t" change.case$ "type" bibinfo.check
995    }
996  if$
997}
998FUNCTION {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}
1010FUNCTION {format.article.crossref}
1011{
1012  word.in
1013  " \cite{" * crossref * "}" *
1014}
1015FUNCTION {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}
1027FUNCTION {format.incoll.inproc.crossref}
1028{
1029  word.in
1030  " \cite{" * crossref * "}" *
1031}
1032FUNCTION {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}
1051FUNCTION {format.publisher.address}
1052{ publisher "publisher" bibinfo.warn format.org.or.pub
1053}
1054
1055FUNCTION {format.organization.address}
1056{ organization "organization" bibinfo.check format.org.or.pub
1057}
1058
1059FUNCTION {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}
1086FUNCTION {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}
1121FUNCTION {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
1138FUNCTION {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
1176FUNCTION {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}
1202FUNCTION {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}
1232FUNCTION {conference} { inproceedings }
1233FUNCTION {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
1251FUNCTION {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
1270FUNCTION {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}
1285FUNCTION {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
1304FUNCTION {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
1326FUNCTION {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
1345FUNCTION {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
1359FUNCTION {default.type} { misc }
1360READ
1361FUNCTION {sortify}
1362{ purify$
1363  "l" change.case$
1364}
1365INTEGERS { len }
1366FUNCTION {chop.word}
1367{ 's :=
1368  'len :=
1369  s #1 len substring$ =
1370    { s len #1 + global.max$ substring$ }
1371    's
1372  if$
1373}
1374FUNCTION {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
1398FUNCTION {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
1409FUNCTION {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
1424FUNCTION {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
1435FUNCTION {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
1449FUNCTION {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
1462FUNCTION {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
1493FUNCTION {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}
1503FUNCTION {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}
1515FUNCTION {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}
1531FUNCTION {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}
1543FUNCTION {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
1571ITERATE {presort}
1572SORT
1573STRINGS { last.label next.extra }
1574INTEGERS { last.extra.num number.label }
1575FUNCTION {initialize.extra.label.stuff}
1576{ #0 int.to.chr$ 'last.label :=
1577  "" 'next.extra :=
1578  #0 'last.extra.num :=
1579  #0 'number.label :=
1580}
1581FUNCTION {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}
1593FUNCTION {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}
1607EXECUTE {initialize.extra.label.stuff}
1608ITERATE {forward.pass}
1609REVERSE {reverse.pass}
1610FUNCTION {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}
1624ITERATE {bib.sort.order}
1625SORT
1626FUNCTION {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}
1648EXECUTE {begin.bib}
1649EXECUTE {init.state.consts}
1650ITERATE {call.type$}
1651FUNCTION {end.bib}
1652{ newline$
1653  "\end{thebibliography}" write$ newline$
1654}
1655EXECUTE {end.bib}
1656%% End of customized bst file
1657%%
1658%% End of file `spbasic.bst'.
1659
Note: See TracBrowser for help on using the repository browser.