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

spmpsci.bst (30143B)


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