waves-16-arma

Simulation of Standing and Propagating Sea Waves with Three-Dimensional ARMA Model
git clone https://git.igankevich.com/waves-16-arma.git
Log | Files | Refs

spbasic.bst (33250B)


      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