elsarticle/elsarticle-num-names.bst
changeset 0 bc6edeef8717
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/elsarticle/elsarticle-num-names.bst	Fri Nov 18 16:18:02 2016 +0100
     1.3 @@ -0,0 +1,1461 @@
     1.4 +%% 
     1.5 +%% Copyright 2007, 2008, 2009 Elsevier Ltd
     1.6 +%% 
     1.7 +%% This file is part of the 'Elsarticle Bundle'.
     1.8 +%% ---------------------------------------------
     1.9 +%% 
    1.10 +%% It may be distributed under the conditions of the LaTeX Project Public
    1.11 +%% License, either version 1.2 of this license or (at your option) any
    1.12 +%% later version.  The latest version of this license is in
    1.13 +%%    http://www.latex-project.org/lppl.txt
    1.14 +%% and version 1.2 or later is part of all distributions of LaTeX
    1.15 +%% version 1999/12/01 or later.
    1.16 +%% 
    1.17 +%% The list of all files belonging to the 'Elsarticle Bundle' is
    1.18 +%% given in the file `manifest.txt'.
    1.19 +%% 
    1.20 +%%
    1.21 +%% This is file `elsearticle-num-names.bst',
    1.22 +%% generated with the docstrip utility.
    1.23 +%%
    1.24 +%% The original source files were:
    1.25 +%%
    1.26 +%% merlin.mbs  (with options: `head,exlang,ay,nat,seq-no,nm-init,ed-au,dt-jnl,dt-end,atit-u,jttl-rm,vnum-sp,volp-blk,jdt-p,pp-last,num-xser,jnm-x,btit-rm,bt-rm,bkpg-x,isbn,issn,doi,edpar,bkedcap,blk-com,in-col,english,ppx,ed,abr,xedn,varand,xand,url,url-blk,bibinfo,nfss,,{}')
    1.27 +%% english.mbs  (with options: `exlang,ay,nat,seq-no,nm-init,ed-au,dt-jnl,dt-end,atit-u,jttl-rm,vnum-sp,volp-blk,jdt-p,pp-last,num-xser,jnm-x,btit-rm,bt-rm,bkpg-x,isbn,issn,doi,edpar,bkedcap,blk-com,in-col,english,ppx,ed,abr,xedn,varand,xand,url,url-blk,bibinfo,nfss,,{}')
    1.28 +%% merlin.mbs  (with options: `tail,exlang,ay,nat,seq-no,nm-init,ed-au,dt-jnl,dt-end,atit-u,jttl-rm,vnum-sp,volp-blk,jdt-p,pp-last,num-xser,jnm-x,btit-rm,bt-rm,bkpg-x,isbn,issn,doi,edpar,bkedcap,blk-com,in-col,english,ppx,ed,abr,xedn,varand,xand,url,url-blk,bibinfo,nfss,,{}')
    1.29 +%% ----------------------------------------
    1.30 +%% *** Journal of Sound and Vibration ***
    1.31 +%%
    1.32 +%% Copyright 1994-2004 Patrick W Daly
    1.33 + % ===============================================================
    1.34 + % IMPORTANT NOTICE:
    1.35 + % This bibliographic style (bst) file has been generated from one or
    1.36 + % more master bibliographic style (mbs) files, listed above.
    1.37 + %
    1.38 + % This generated file can be redistributed and/or modified under the terms
    1.39 + % of the LaTeX Project Public License Distributed from CTAN
    1.40 + % archives in directory macros/latex/base/lppl.txt; either
    1.41 + % version 1 of the License, or any later version.
    1.42 + % ===============================================================
    1.43 + % Name and version information of the main mbs file:
    1.44 + % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)]
    1.45 + %   For use with BibTeX version 0.99a or later
    1.46 + %-------------------------------------------------------------------
    1.47 +
    1.48 +ENTRY
    1.49 + { address
    1.50 +   author
    1.51 +   booktitle
    1.52 +   chapter
    1.53 +   doi
    1.54 +   edition
    1.55 +   editor
    1.56 +   eid
    1.57 +   howpublished
    1.58 +   institution
    1.59 +   isbn
    1.60 +   issn
    1.61 +   journal
    1.62 +   key
    1.63 +   month
    1.64 +   note
    1.65 +   number
    1.66 +   organization
    1.67 +   pages
    1.68 +   publisher
    1.69 +   school
    1.70 +   series
    1.71 +   title
    1.72 +   type
    1.73 +   url
    1.74 +   volume
    1.75 +   year
    1.76 + }
    1.77 + {}
    1.78 + { label extra.label sort.label short.list }
    1.79 +INTEGERS { output.state before.all mid.sentence after.sentence after.block }
    1.80 +FUNCTION {init.state.consts}
    1.81 +{ #0 'before.all :=
    1.82 + #1 'mid.sentence :=
    1.83 + #2 'after.sentence :=
    1.84 + #3 'after.block :=
    1.85 +}
    1.86 +STRINGS { s t}
    1.87 +FUNCTION {output.nonnull}
    1.88 +{ 's :=
    1.89 + output.state mid.sentence =
    1.90 +   { ", " * write$ }
    1.91 +   { output.state after.block =
    1.92 +       { add.period$ write$
    1.93 +         newline$
    1.94 +         "\newblock " write$
    1.95 +       }
    1.96 +       { output.state before.all =
    1.97 +           'write$
    1.98 +           { add.period$ " " * write$ }
    1.99 +         if$
   1.100 +       }
   1.101 +     if$
   1.102 +     mid.sentence 'output.state :=
   1.103 +   }
   1.104 + if$
   1.105 + s
   1.106 +}
   1.107 +FUNCTION {output}
   1.108 +{ duplicate$ empty$
   1.109 +   'pop$
   1.110 +   'output.nonnull
   1.111 + if$
   1.112 +}
   1.113 +FUNCTION {output.check}
   1.114 +{ 't :=
   1.115 + duplicate$ empty$
   1.116 +   { pop$ "empty " t * " in " * cite$ * warning$ }
   1.117 +   'output.nonnull
   1.118 + if$
   1.119 +}
   1.120 +FUNCTION {fin.entry}
   1.121 +{ add.period$
   1.122 + write$
   1.123 + newline$
   1.124 +}
   1.125 +
   1.126 +FUNCTION {new.block}
   1.127 +{ output.state before.all =
   1.128 +   'skip$
   1.129 +   { after.block 'output.state := }
   1.130 + if$
   1.131 +}
   1.132 +FUNCTION {new.sentence}
   1.133 +{ output.state after.block =
   1.134 +   'skip$
   1.135 +   { output.state before.all =
   1.136 +       'skip$
   1.137 +       { after.sentence 'output.state := }
   1.138 +     if$
   1.139 +   }
   1.140 + if$
   1.141 +}
   1.142 +FUNCTION {add.blank}
   1.143 +{  " " * before.all 'output.state :=
   1.144 +}
   1.145 +
   1.146 +FUNCTION {date.block}
   1.147 +{
   1.148 + skip$
   1.149 +}
   1.150 +
   1.151 +FUNCTION {not}
   1.152 +{   { #0 }
   1.153 +   { #1 }
   1.154 + if$
   1.155 +}
   1.156 +FUNCTION {and}
   1.157 +{   'skip$
   1.158 +   { pop$ #0 }
   1.159 + if$
   1.160 +}
   1.161 +FUNCTION {or}
   1.162 +{   { pop$ #1 }
   1.163 +   'skip$
   1.164 + if$
   1.165 +}
   1.166 +FUNCTION {new.block.checkb}
   1.167 +{ empty$
   1.168 + swap$ empty$
   1.169 + and
   1.170 +   'skip$
   1.171 +   'new.block
   1.172 + if$
   1.173 +}
   1.174 +FUNCTION {field.or.null}
   1.175 +{ duplicate$ empty$
   1.176 +   { pop$ "" }
   1.177 +   'skip$
   1.178 + if$
   1.179 +}
   1.180 +FUNCTION {emphasize}
   1.181 +{ duplicate$ empty$
   1.182 +   { pop$ "" }
   1.183 +   { "\emph{" swap$ * "}" * }
   1.184 + if$
   1.185 +}
   1.186 +FUNCTION {tie.or.space.prefix}
   1.187 +{ duplicate$ text.length$ #3 <
   1.188 +   { "~" }
   1.189 +   { " " }
   1.190 + if$
   1.191 + swap$
   1.192 +}
   1.193 +
   1.194 +FUNCTION {capitalize}
   1.195 +{ "u" change.case$ "t" change.case$ }
   1.196 +
   1.197 +FUNCTION {space.word}
   1.198 +{ " " swap$ * " " * }
   1.199 + % Here are the language-specific definitions for explicit words.
   1.200 + % Each function has a name bbl.xxx where xxx is the English word.
   1.201 + %-------------------------------------------------------------------
   1.202 + % Begin module:
   1.203 + % \ProvidesFile{english.mbs}[2003/11/06 4.2 (PWD)]
   1.204 +
   1.205 + % The language selected here is ENGLISH
   1.206 +FUNCTION {bbl.and}
   1.207 +{ "and"}
   1.208 +
   1.209 +FUNCTION {bbl.etal}
   1.210 +{ "et~al." }
   1.211 +
   1.212 +FUNCTION {bbl.editors}
   1.213 +{ "eds." }
   1.214 +
   1.215 +FUNCTION {bbl.editor}
   1.216 +{ "ed." }
   1.217 +
   1.218 +FUNCTION {bbl.edby}
   1.219 +{ "edited by" }
   1.220 +
   1.221 +FUNCTION {bbl.edition}
   1.222 +{ "edn." }
   1.223 +
   1.224 +FUNCTION {bbl.volume}
   1.225 +{ "vol." }
   1.226 +
   1.227 +FUNCTION {bbl.of}
   1.228 +{ "of" }
   1.229 +
   1.230 +FUNCTION {bbl.number}
   1.231 +{ "no." }
   1.232 +
   1.233 +FUNCTION {bbl.nr}
   1.234 +{ "no." }
   1.235 +
   1.236 +FUNCTION {bbl.in}
   1.237 +{ "in" }
   1.238 +
   1.239 +FUNCTION {bbl.pages}
   1.240 +{ "" }
   1.241 +
   1.242 +FUNCTION {bbl.page}
   1.243 +{ "" }
   1.244 +
   1.245 +FUNCTION {bbl.chapter}
   1.246 +{ "chap." }
   1.247 +
   1.248 +FUNCTION {bbl.techrep}
   1.249 +{ "Tech. Rep." }
   1.250 +
   1.251 +FUNCTION {bbl.mthesis}
   1.252 +{ "Master's thesis" }
   1.253 +
   1.254 +FUNCTION {bbl.phdthesis}
   1.255 +{ "Ph.D. thesis" }
   1.256 +
   1.257 +MACRO {jan} {"Jan."}
   1.258 +
   1.259 +MACRO {feb} {"Feb."}
   1.260 +
   1.261 +MACRO {mar} {"Mar."}
   1.262 +
   1.263 +MACRO {apr} {"Apr."}
   1.264 +
   1.265 +MACRO {may} {"May"}
   1.266 +
   1.267 +MACRO {jun} {"Jun."}
   1.268 +
   1.269 +MACRO {jul} {"Jul."}
   1.270 +
   1.271 +MACRO {aug} {"Aug."}
   1.272 +
   1.273 +MACRO {sep} {"Sep."}
   1.274 +
   1.275 +MACRO {oct} {"Oct."}
   1.276 +
   1.277 +MACRO {nov} {"Nov."}
   1.278 +
   1.279 +MACRO {dec} {"Dec."}
   1.280 +
   1.281 + % End module: english.mbs
   1.282 +%% Copyright 1994-2004 Patrick W Daly
   1.283 +MACRO {acmcs} {"ACM Computing Surveys"}
   1.284 +
   1.285 +MACRO {acta} {"Acta Informatica"}
   1.286 +
   1.287 +MACRO {cacm} {"Communications of the ACM"}
   1.288 +
   1.289 +MACRO {ibmjrd} {"IBM Journal of Research and Development"}
   1.290 +
   1.291 +MACRO {ibmsj} {"IBM Systems Journal"}
   1.292 +
   1.293 +MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
   1.294 +
   1.295 +MACRO {ieeetc} {"IEEE Transactions on Computers"}
   1.296 +
   1.297 +MACRO {ieeetcad}
   1.298 + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
   1.299 +
   1.300 +MACRO {ipl} {"Information Processing Letters"}
   1.301 +
   1.302 +MACRO {jacm} {"Journal of the ACM"}
   1.303 +
   1.304 +MACRO {jcss} {"Journal of Computer and System Sciences"}
   1.305 +
   1.306 +MACRO {scp} {"Science of Computer Programming"}
   1.307 +
   1.308 +MACRO {sicomp} {"SIAM Journal on Computing"}
   1.309 +
   1.310 +MACRO {tocs} {"ACM Transactions on Computer Systems"}
   1.311 +
   1.312 +MACRO {tods} {"ACM Transactions on Database Systems"}
   1.313 +
   1.314 +MACRO {tog} {"ACM Transactions on Graphics"}
   1.315 +
   1.316 +MACRO {toms} {"ACM Transactions on Mathematical Software"}
   1.317 +
   1.318 +MACRO {toois} {"ACM Transactions on Office Information Systems"}
   1.319 +
   1.320 +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
   1.321 +
   1.322 +MACRO {tcs} {"Theoretical Computer Science"}
   1.323 +FUNCTION {bibinfo.check}
   1.324 +{ swap$
   1.325 + duplicate$ missing$
   1.326 +   {
   1.327 +     pop$ pop$
   1.328 +     ""
   1.329 +   }
   1.330 +   { duplicate$ empty$
   1.331 +       {
   1.332 +         swap$ pop$
   1.333 +       }
   1.334 +       { swap$
   1.335 +         "\bibinfo{" swap$ * "}{" * swap$ * "}" *
   1.336 +       }
   1.337 +     if$
   1.338 +   }
   1.339 + if$
   1.340 +}
   1.341 +FUNCTION {bibinfo.warn}
   1.342 +{ swap$
   1.343 + duplicate$ missing$
   1.344 +   {
   1.345 +     swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
   1.346 +     ""
   1.347 +   }
   1.348 +   { duplicate$ empty$
   1.349 +       {
   1.350 +         swap$ "empty " swap$ * " in " * cite$ * warning$
   1.351 +       }
   1.352 +       { swap$
   1.353 +         "\bibinfo{" swap$ * "}{" * swap$ * "}" *
   1.354 +       }
   1.355 +     if$
   1.356 +   }
   1.357 + if$
   1.358 +}
   1.359 +FUNCTION {format.url}
   1.360 +{ url empty$
   1.361 +   { "" }
   1.362 +   { "\urlprefix\url{" url * "}" * }
   1.363 + if$
   1.364 +}
   1.365 +
   1.366 +STRINGS  { bibinfo}
   1.367 +INTEGERS { nameptr namesleft numnames }
   1.368 +
   1.369 +FUNCTION {format.names}
   1.370 +{ 'bibinfo :=
   1.371 + duplicate$ empty$ 'skip$ {
   1.372 + 's :=
   1.373 + "" 't :=
   1.374 + #1 'nameptr :=
   1.375 + s num.names$ 'numnames :=
   1.376 + numnames 'namesleft :=
   1.377 +   { namesleft #0 > }
   1.378 +   { s nameptr
   1.379 +     "{f.~}{vv~}{ll}{, jj}"
   1.380 +     format.name$
   1.381 +     bibinfo bibinfo.check
   1.382 +     't :=
   1.383 +     nameptr #1 >
   1.384 +       {
   1.385 +         namesleft #1 >
   1.386 +           { ", " * t * }
   1.387 +           {
   1.388 +             "," *
   1.389 +             s nameptr "{ll}" format.name$ duplicate$ "others" =
   1.390 +               { 't := }
   1.391 +               { pop$ }
   1.392 +             if$
   1.393 +             t "others" =
   1.394 +               {
   1.395 +                 " " * bbl.etal *
   1.396 +               }
   1.397 +               { " " * t * }
   1.398 +             if$
   1.399 +           }
   1.400 +         if$
   1.401 +       }
   1.402 +       't
   1.403 +     if$
   1.404 +     nameptr #1 + 'nameptr :=
   1.405 +     namesleft #1 - 'namesleft :=
   1.406 +   }
   1.407 + while$
   1.408 + } if$
   1.409 +}
   1.410 +FUNCTION {format.names.ed}
   1.411 +{
   1.412 + format.names
   1.413 +}
   1.414 +FUNCTION {format.key}
   1.415 +{ empty$
   1.416 +   { key field.or.null }
   1.417 +   { "" }
   1.418 + if$
   1.419 +}
   1.420 +
   1.421 +FUNCTION {format.authors}
   1.422 +{ author "author" format.names
   1.423 +}
   1.424 +FUNCTION {get.bbl.editor}
   1.425 +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
   1.426 +
   1.427 +FUNCTION {format.editors}
   1.428 +{ editor "editor" format.names duplicate$ empty$ 'skip$
   1.429 +   {
   1.430 +     " " *
   1.431 +     get.bbl.editor
   1.432 +     capitalize
   1.433 +  "(" swap$ * ")" *
   1.434 +     *
   1.435 +   }
   1.436 + if$
   1.437 +}
   1.438 +FUNCTION {format.isbn}
   1.439 +{ isbn "isbn" bibinfo.check
   1.440 + duplicate$ empty$ 'skip$
   1.441 +   {
   1.442 +     "ISBN " swap$ *
   1.443 +   }
   1.444 + if$
   1.445 +}
   1.446 +
   1.447 +FUNCTION {format.issn}
   1.448 +{ issn "issn" bibinfo.check
   1.449 + duplicate$ empty$ 'skip$
   1.450 +   {
   1.451 +     "ISSN " swap$ *
   1.452 +   }
   1.453 + if$
   1.454 +}
   1.455 +
   1.456 + FUNCTION {format.doi}
   1.457 + { doi "doi" bibinfo.check
   1.458 +  duplicate$ empty$ 'skip$
   1.459 +    {
   1.460 +      "\doi{" swap$  * "}" *
   1.461 +    }
   1.462 +  if$
   1.463 + }
   1.464 +
   1.465 +FUNCTION {format.note}
   1.466 +{
   1.467 + note empty$
   1.468 +   { "" }
   1.469 +   { note #1 #1 substring$
   1.470 +     duplicate$ "{" =
   1.471 +       'skip$
   1.472 +       { output.state mid.sentence =
   1.473 +         { "l" }
   1.474 +         { "u" }
   1.475 +       if$
   1.476 +       change.case$
   1.477 +       }
   1.478 +     if$
   1.479 +     note #2 global.max$ substring$ * "note" bibinfo.check
   1.480 +   }
   1.481 + if$
   1.482 +}
   1.483 +
   1.484 +FUNCTION {format.title}
   1.485 +{ title
   1.486 + "title" bibinfo.check
   1.487 +}
   1.488 +FUNCTION {format.full.names}
   1.489 +{'s :=
   1.490 + "" 't :=
   1.491 + #1 'nameptr :=
   1.492 + s num.names$ 'numnames :=
   1.493 + numnames 'namesleft :=
   1.494 +   { namesleft #0 > }
   1.495 +   { s nameptr
   1.496 +     "{vv~}{ll}" format.name$
   1.497 +     't :=
   1.498 +     nameptr #1 >
   1.499 +       {
   1.500 +         namesleft #1 >
   1.501 +           { ", " * t * }
   1.502 +           {
   1.503 +             s nameptr "{ll}" format.name$ duplicate$ "others" =
   1.504 +               { 't := }
   1.505 +               { pop$ }
   1.506 +             if$
   1.507 +             t "others" =
   1.508 +               {
   1.509 +                 " " * bbl.etal *
   1.510 +               }
   1.511 +               {
   1.512 +                 numnames #2 >
   1.513 +                   { "," * }
   1.514 +                   'skip$
   1.515 +                 if$
   1.516 +                 bbl.and
   1.517 +                 space.word * t *
   1.518 +               }
   1.519 +             if$
   1.520 +           }
   1.521 +         if$
   1.522 +       }
   1.523 +       't
   1.524 +     if$
   1.525 +     nameptr #1 + 'nameptr :=
   1.526 +     namesleft #1 - 'namesleft :=
   1.527 +   }
   1.528 + while$
   1.529 +}
   1.530 +
   1.531 +FUNCTION {author.editor.key.full}
   1.532 +{ author empty$
   1.533 +   { editor empty$
   1.534 +       { key empty$
   1.535 +           { cite$ #1 #3 substring$ }
   1.536 +           'key
   1.537 +         if$
   1.538 +       }
   1.539 +       { editor format.full.names }
   1.540 +     if$
   1.541 +   }
   1.542 +   { author format.full.names }
   1.543 + if$
   1.544 +}
   1.545 +
   1.546 +FUNCTION {author.key.full}
   1.547 +{ author empty$
   1.548 +   { key empty$
   1.549 +        { cite$ #1 #3 substring$ }
   1.550 +         'key
   1.551 +     if$
   1.552 +   }
   1.553 +   { author format.full.names }
   1.554 + if$
   1.555 +}
   1.556 +
   1.557 +FUNCTION {editor.key.full}
   1.558 +{ editor empty$
   1.559 +   { key empty$
   1.560 +        { cite$ #1 #3 substring$ }
   1.561 +         'key
   1.562 +     if$
   1.563 +   }
   1.564 +   { editor format.full.names }
   1.565 + if$
   1.566 +}
   1.567 +
   1.568 +FUNCTION {make.full.names}
   1.569 +{ type$ "book" =
   1.570 + type$ "inbook" =
   1.571 + or
   1.572 +   'author.editor.key.full
   1.573 +   { type$ "proceedings" =
   1.574 +       'editor.key.full
   1.575 +       'author.key.full
   1.576 +     if$
   1.577 +   }
   1.578 + if$
   1.579 +}
   1.580 +
   1.581 +FUNCTION {output.bibitem}
   1.582 +{ newline$
   1.583 + "\bibitem[{" write$
   1.584 + label write$
   1.585 + ")" make.full.names duplicate$ short.list =
   1.586 +    { pop$ }
   1.587 +    { * }
   1.588 +  if$
   1.589 + "}]{" * write$
   1.590 + cite$ write$
   1.591 + "}" write$
   1.592 + newline$
   1.593 + ""
   1.594 + before.all 'output.state :=
   1.595 +}
   1.596 +
   1.597 +FUNCTION {n.dashify}
   1.598 +{
   1.599 + 't :=
   1.600 + ""
   1.601 +   { t empty$ not }
   1.602 +   { t #1 #1 substring$ "-" =
   1.603 +       { t #1 #2 substring$ "--" = not
   1.604 +           { "--" *
   1.605 +             t #2 global.max$ substring$ 't :=
   1.606 +           }
   1.607 +           {   { t #1 #1 substring$ "-" = }
   1.608 +               { "-" *
   1.609 +                 t #2 global.max$ substring$ 't :=
   1.610 +               }
   1.611 +             while$
   1.612 +           }
   1.613 +         if$
   1.614 +       }
   1.615 +       { t #1 #1 substring$ *
   1.616 +         t #2 global.max$ substring$ 't :=
   1.617 +       }
   1.618 +     if$
   1.619 +   }
   1.620 + while$
   1.621 +}
   1.622 +
   1.623 +FUNCTION {word.in}
   1.624 +{ bbl.in
   1.625 + ":" *
   1.626 + " " * }
   1.627 +
   1.628 +FUNCTION {format.date}
   1.629 +{ year "year" bibinfo.check duplicate$ empty$
   1.630 +   {
   1.631 +     "empty year in " cite$ * "; set to ????" * warning$
   1.632 +      pop$ "????"
   1.633 +   }
   1.634 +   'skip$
   1.635 + if$
   1.636 + extra.label *
   1.637 +}
   1.638 +FUNCTION{format.year}
   1.639 +{ year "year" bibinfo.check duplicate$ empty$
   1.640 +   {  "empty year in " cite$ *
   1.641 +      "; set to ????" *
   1.642 +      warning$
   1.643 +      pop$ "????"
   1.644 +   }
   1.645 +   {
   1.646 +   }
   1.647 + if$
   1.648 + extra.label *
   1.649 + "(" swap$ * ")" *
   1.650 +}
   1.651 +FUNCTION {format.btitle}
   1.652 +{ title "title" bibinfo.check
   1.653 + duplicate$ empty$ 'skip$
   1.654 +   {
   1.655 +   }
   1.656 + if$
   1.657 +}
   1.658 +FUNCTION {either.or.check}
   1.659 +{ empty$
   1.660 +   'pop$
   1.661 +   { "can't use both " swap$ * " fields in " * cite$ * warning$ }
   1.662 + if$
   1.663 +}
   1.664 +FUNCTION {format.bvolume}
   1.665 +{ volume empty$
   1.666 +   { "" }
   1.667 +   { bbl.volume volume tie.or.space.prefix
   1.668 +     "volume" bibinfo.check * *
   1.669 +     series "series" bibinfo.check
   1.670 +     duplicate$ empty$ 'pop$
   1.671 +       { swap$ bbl.of space.word * swap$
   1.672 +         emphasize * }
   1.673 +     if$
   1.674 +     "volume and number" number either.or.check
   1.675 +   }
   1.676 + if$
   1.677 +}
   1.678 +FUNCTION {format.number.series}
   1.679 +{ volume empty$
   1.680 +   { number empty$
   1.681 +       { series field.or.null }
   1.682 +       { series empty$
   1.683 +           { number "number" bibinfo.check }
   1.684 +           { output.state mid.sentence =
   1.685 +               { bbl.number }
   1.686 +               { bbl.number capitalize }
   1.687 +             if$
   1.688 +             number tie.or.space.prefix "number" bibinfo.check * *
   1.689 +             bbl.in space.word *
   1.690 +             series "series" bibinfo.check *
   1.691 +           }
   1.692 +         if$
   1.693 +       }
   1.694 +     if$
   1.695 +   }
   1.696 +   { "" }
   1.697 + if$
   1.698 +}
   1.699 +
   1.700 +FUNCTION {format.edition}
   1.701 +{ edition duplicate$ empty$ 'skip$
   1.702 +   {
   1.703 +     output.state mid.sentence =
   1.704 +       { "l" }
   1.705 +       { "t" }
   1.706 +     if$ change.case$
   1.707 +     "edition" bibinfo.check
   1.708 +     " " * bbl.edition *
   1.709 +   }
   1.710 + if$
   1.711 +}
   1.712 +INTEGERS { multiresult }
   1.713 +FUNCTION {multi.page.check}
   1.714 +{ 't :=
   1.715 + #0 'multiresult :=
   1.716 +   { multiresult not
   1.717 +     t empty$ not
   1.718 +     and
   1.719 +   }
   1.720 +   { t #1 #1 substring$
   1.721 +     duplicate$ "-" =
   1.722 +     swap$ duplicate$ "," =
   1.723 +     swap$ "+" =
   1.724 +     or or
   1.725 +       { #1 'multiresult := }
   1.726 +       { t #2 global.max$ substring$ 't := }
   1.727 +     if$
   1.728 +   }
   1.729 + while$
   1.730 + multiresult
   1.731 +}
   1.732 +FUNCTION {format.pages}
   1.733 +{ pages duplicate$ empty$ 'skip$
   1.734 +   { duplicate$ multi.page.check
   1.735 +       {
   1.736 +         n.dashify
   1.737 +       }
   1.738 +       {
   1.739 +       }
   1.740 +     if$
   1.741 +     "pages" bibinfo.check
   1.742 +   }
   1.743 + if$
   1.744 +}
   1.745 +FUNCTION {format.journal.pages}
   1.746 +{ pages duplicate$ empty$ 'pop$
   1.747 +   { swap$ duplicate$ empty$
   1.748 +       { pop$ pop$ format.pages }
   1.749 +       {
   1.750 +         " " *
   1.751 +         format.year * " " *
   1.752 +         swap$
   1.753 +         n.dashify
   1.754 +         "pages" bibinfo.check
   1.755 +         *
   1.756 +       }
   1.757 +     if$
   1.758 +   }
   1.759 + if$
   1.760 +}
   1.761 +FUNCTION {format.journal.eid}
   1.762 +{ eid "eid" bibinfo.check
   1.763 + duplicate$ empty$ 'pop$
   1.764 +   { swap$ duplicate$ empty$ 'skip$
   1.765 +     {
   1.766 +         " " *
   1.767 +     }
   1.768 +     if$
   1.769 +     swap$ *
   1.770 +   }
   1.771 + if$
   1.772 +}
   1.773 +FUNCTION {format.vol.num.pages}
   1.774 +{ volume field.or.null
   1.775 + duplicate$ empty$ 'skip$
   1.776 +   {
   1.777 +     "volume" bibinfo.check
   1.778 +   }
   1.779 + if$
   1.780 + number "number" bibinfo.check duplicate$ empty$ 'skip$
   1.781 +   {
   1.782 +     swap$ duplicate$ empty$
   1.783 +       { "there's a number but no volume in " cite$ * warning$ }
   1.784 +       'skip$
   1.785 +     if$
   1.786 +     swap$
   1.787 +     "~(" swap$ * ")" *
   1.788 +   }
   1.789 + if$ *
   1.790 +}
   1.791 +
   1.792 +FUNCTION {format.chapter.pages}
   1.793 +{ chapter empty$
   1.794 +   { "" }
   1.795 +   { type empty$
   1.796 +       { bbl.chapter }
   1.797 +       { type "l" change.case$
   1.798 +         "type" bibinfo.check
   1.799 +       }
   1.800 +     if$
   1.801 +     chapter tie.or.space.prefix
   1.802 +     "chapter" bibinfo.check
   1.803 +     * *
   1.804 +   }
   1.805 + if$
   1.806 +}
   1.807 +
   1.808 +FUNCTION {format.booktitle}
   1.809 +{
   1.810 + booktitle "booktitle" bibinfo.check
   1.811 +}
   1.812 +FUNCTION {format.in.ed.booktitle}
   1.813 +{ format.booktitle duplicate$ empty$ 'skip$
   1.814 +   {
   1.815 +     editor "editor" format.names.ed duplicate$ empty$ 'pop$
   1.816 +       {
   1.817 +         " " *
   1.818 +         get.bbl.editor
   1.819 +         capitalize
   1.820 +         "(" swap$ * "), " *
   1.821 +         * swap$
   1.822 +         * }
   1.823 +     if$
   1.824 +     word.in swap$ *
   1.825 +   }
   1.826 + if$
   1.827 +}
   1.828 +FUNCTION {format.thesis.type}
   1.829 +{ type duplicate$ empty$
   1.830 +   'pop$
   1.831 +   { swap$ pop$
   1.832 +     "t" change.case$ "type" bibinfo.check
   1.833 +   }
   1.834 + if$
   1.835 +}
   1.836 +FUNCTION {format.tr.number}
   1.837 +{ number "number" bibinfo.check
   1.838 + type duplicate$ empty$
   1.839 +   { pop$ bbl.techrep }
   1.840 +   'skip$
   1.841 + if$
   1.842 + "type" bibinfo.check
   1.843 + swap$ duplicate$ empty$
   1.844 +   { pop$ "t" change.case$ }
   1.845 +   { tie.or.space.prefix * * }
   1.846 + if$
   1.847 +}
   1.848 +FUNCTION {format.article.crossref}
   1.849 +{
   1.850 + word.in
   1.851 + " \cite{" * crossref * "}" *
   1.852 +}
   1.853 +FUNCTION {format.book.crossref}
   1.854 +{ volume duplicate$ empty$
   1.855 +   { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
   1.856 +     pop$ word.in
   1.857 +   }
   1.858 +   { bbl.volume
   1.859 +     swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
   1.860 +   }
   1.861 + if$
   1.862 + " \cite{" * crossref * "}" *
   1.863 +}
   1.864 +FUNCTION {format.incoll.inproc.crossref}
   1.865 +{
   1.866 + word.in
   1.867 + " \cite{" * crossref * "}" *
   1.868 +}
   1.869 +FUNCTION {format.org.or.pub}
   1.870 +{ 't :=
   1.871 + ""
   1.872 + address empty$ t empty$ and
   1.873 +   'skip$
   1.874 +   {
   1.875 +     t empty$
   1.876 +       { address "address" bibinfo.check *
   1.877 +       }
   1.878 +       { t *
   1.879 +         address empty$
   1.880 +           'skip$
   1.881 +           { ", " * address "address" bibinfo.check * }
   1.882 +         if$
   1.883 +       }
   1.884 +     if$
   1.885 +   }
   1.886 + if$
   1.887 +}
   1.888 +FUNCTION {format.publisher.address}
   1.889 +{ publisher "publisher" bibinfo.warn format.org.or.pub
   1.890 +}
   1.891 +
   1.892 +FUNCTION {format.organization.address}
   1.893 +{ organization "organization" bibinfo.check format.org.or.pub
   1.894 +}
   1.895 +
   1.896 +FUNCTION {article}
   1.897 +{ output.bibitem
   1.898 + format.authors "author" output.check
   1.899 + author format.key output
   1.900 + format.title "title" output.check
   1.901 + crossref missing$
   1.902 +   {
   1.903 +     journal
   1.904 +     "journal" bibinfo.check
   1.905 +     "journal" output.check
   1.906 +     add.blank
   1.907 +     format.vol.num.pages output
   1.908 +   }
   1.909 +   { format.article.crossref output.nonnull
   1.910 +   }
   1.911 + if$
   1.912 + eid empty$
   1.913 +   { format.journal.pages }
   1.914 +   { format.journal.eid }
   1.915 + if$
   1.916 + format.issn output
   1.917 + format.doi output
   1.918 + format.url output
   1.919 + format.note output
   1.920 + fin.entry
   1.921 +}
   1.922 +FUNCTION {book}
   1.923 +{ output.bibitem
   1.924 + author empty$
   1.925 +   { format.editors "author and editor" output.check
   1.926 +     editor format.key output
   1.927 +   }
   1.928 +   { format.authors output.nonnull
   1.929 +     crossref missing$
   1.930 +       { "author and editor" editor either.or.check }
   1.931 +       'skip$
   1.932 +     if$
   1.933 +   }
   1.934 + if$
   1.935 + format.btitle "title" output.check
   1.936 + crossref missing$
   1.937 +   { format.bvolume output
   1.938 +     format.number.series output
   1.939 +     format.publisher.address output
   1.940 +   }
   1.941 +   {
   1.942 +     format.book.crossref output.nonnull
   1.943 +   }
   1.944 + if$
   1.945 + format.edition output
   1.946 + format.isbn output
   1.947 + format.doi output
   1.948 + format.url output
   1.949 + format.note output
   1.950 + format.date "year" output.check
   1.951 + fin.entry
   1.952 +}
   1.953 +FUNCTION {booklet}
   1.954 +{ output.bibitem
   1.955 + format.authors output
   1.956 + author format.key output
   1.957 + format.title "title" output.check
   1.958 + howpublished "howpublished" bibinfo.check output
   1.959 + address "address" bibinfo.check output
   1.960 + format.isbn output
   1.961 + format.doi output
   1.962 + format.url output
   1.963 + format.note output
   1.964 + format.date "year" output.check
   1.965 + fin.entry
   1.966 +}
   1.967 +
   1.968 +FUNCTION {inbook}
   1.969 +{ output.bibitem
   1.970 + author empty$
   1.971 +   { format.editors "author and editor" output.check
   1.972 +     editor format.key output
   1.973 +   }
   1.974 +   { format.authors output.nonnull
   1.975 +     crossref missing$
   1.976 +       { "author and editor" editor either.or.check }
   1.977 +       'skip$
   1.978 +     if$
   1.979 +   }
   1.980 + if$
   1.981 + format.btitle "title" output.check
   1.982 + crossref missing$
   1.983 +   {
   1.984 +     format.bvolume output
   1.985 +     format.chapter.pages "chapter and pages" output.check
   1.986 +     format.number.series output
   1.987 +     format.publisher.address output
   1.988 +   }
   1.989 +   {
   1.990 +     format.chapter.pages "chapter and pages" output.check
   1.991 +     format.book.crossref output.nonnull
   1.992 +   }
   1.993 + if$
   1.994 + format.edition output
   1.995 + crossref missing$
   1.996 +   { format.isbn output }
   1.997 +   'skip$
   1.998 + if$
   1.999 + format.pages "pages" output.check
  1.1000 + format.doi output
  1.1001 + format.url output
  1.1002 + format.note output
  1.1003 + format.date "year" output.check
  1.1004 + fin.entry
  1.1005 +}
  1.1006 +
  1.1007 +FUNCTION {incollection}
  1.1008 +{ output.bibitem
  1.1009 + format.authors "author" output.check
  1.1010 + author format.key output
  1.1011 + format.title "title" output.check
  1.1012 + crossref missing$
  1.1013 +   { format.in.ed.booktitle "booktitle" output.check
  1.1014 +     format.bvolume output
  1.1015 +     format.number.series output
  1.1016 +     format.chapter.pages output
  1.1017 +     format.publisher.address output
  1.1018 +     format.edition output
  1.1019 +     format.isbn output
  1.1020 +   }
  1.1021 +   { format.incoll.inproc.crossref output.nonnull
  1.1022 +     format.chapter.pages output
  1.1023 +   }
  1.1024 + if$
  1.1025 + format.pages "pages" output.check
  1.1026 + format.doi output
  1.1027 + format.url output
  1.1028 + format.note output
  1.1029 + format.date "year" output.check
  1.1030 + fin.entry
  1.1031 +}
  1.1032 +FUNCTION {inproceedings}
  1.1033 +{ output.bibitem
  1.1034 + format.authors "author" output.check
  1.1035 + author format.key output
  1.1036 + format.title "title" output.check
  1.1037 + crossref missing$
  1.1038 +   { format.in.ed.booktitle "booktitle" output.check
  1.1039 +     format.bvolume output
  1.1040 +     format.number.series output
  1.1041 +     publisher empty$
  1.1042 +       { format.organization.address output }
  1.1043 +       { organization "organization" bibinfo.check output
  1.1044 +         format.publisher.address output
  1.1045 +       }
  1.1046 +     if$
  1.1047 +     format.isbn output
  1.1048 +     format.issn output
  1.1049 +   }
  1.1050 +   { format.incoll.inproc.crossref output.nonnull
  1.1051 +   }
  1.1052 + if$
  1.1053 + format.pages "pages" output.check
  1.1054 + format.doi output
  1.1055 + format.url output
  1.1056 + format.note output
  1.1057 + format.date "year" output.check
  1.1058 + fin.entry
  1.1059 +}
  1.1060 +FUNCTION {conference} { inproceedings }
  1.1061 +FUNCTION {manual}
  1.1062 +{ output.bibitem
  1.1063 + format.authors output
  1.1064 + author format.key output
  1.1065 + format.btitle "title" output.check
  1.1066 + organization "organization" bibinfo.check output
  1.1067 + address "address" bibinfo.check output
  1.1068 + format.edition output
  1.1069 + format.doi output
  1.1070 + format.url output
  1.1071 + format.note output
  1.1072 + format.date "year" output.check
  1.1073 + fin.entry
  1.1074 +}
  1.1075 +
  1.1076 +FUNCTION {mastersthesis}
  1.1077 +{ output.bibitem
  1.1078 + format.authors "author" output.check
  1.1079 + author format.key output
  1.1080 + format.btitle
  1.1081 + "title" output.check
  1.1082 + bbl.mthesis format.thesis.type output.nonnull
  1.1083 + school "school" bibinfo.warn output
  1.1084 + address "address" bibinfo.check output
  1.1085 + format.doi output
  1.1086 + format.url output
  1.1087 + format.note output
  1.1088 + format.date "year" output.check
  1.1089 + fin.entry
  1.1090 +}
  1.1091 +
  1.1092 +FUNCTION {misc}
  1.1093 +{ output.bibitem
  1.1094 + format.authors output
  1.1095 + author format.key output
  1.1096 + format.title output
  1.1097 + howpublished "howpublished" bibinfo.check output
  1.1098 + format.doi output
  1.1099 + format.url output
  1.1100 + format.note output
  1.1101 + format.date "year" output.check
  1.1102 + fin.entry
  1.1103 +}
  1.1104 +FUNCTION {phdthesis}
  1.1105 +{ output.bibitem
  1.1106 + format.authors "author" output.check
  1.1107 + author format.key output
  1.1108 + format.btitle
  1.1109 + "title" output.check
  1.1110 + bbl.phdthesis format.thesis.type output.nonnull
  1.1111 + school "school" bibinfo.warn output
  1.1112 + address "address" bibinfo.check output
  1.1113 + format.doi output
  1.1114 + format.url output
  1.1115 + format.note output
  1.1116 + format.date "year" output.check
  1.1117 + fin.entry
  1.1118 +}
  1.1119 +
  1.1120 +FUNCTION {proceedings}
  1.1121 +{ output.bibitem
  1.1122 + format.editors output
  1.1123 + editor format.key output
  1.1124 + format.btitle "title" output.check
  1.1125 + format.bvolume output
  1.1126 + format.number.series output
  1.1127 + publisher empty$
  1.1128 +   { format.organization.address output }
  1.1129 +   { organization "organization" bibinfo.check output
  1.1130 +     format.publisher.address output
  1.1131 +   }
  1.1132 + if$
  1.1133 + format.isbn output
  1.1134 + format.issn output
  1.1135 + format.doi output
  1.1136 + format.url output
  1.1137 + format.note output
  1.1138 + format.date "year" output.check
  1.1139 + fin.entry
  1.1140 +}
  1.1141 +
  1.1142 +FUNCTION {techreport}
  1.1143 +{ output.bibitem
  1.1144 + format.authors "author" output.check
  1.1145 + author format.key output
  1.1146 + format.title
  1.1147 + "title" output.check
  1.1148 + format.tr.number output.nonnull
  1.1149 + institution "institution" bibinfo.warn output
  1.1150 + address "address" bibinfo.check output
  1.1151 + format.doi output
  1.1152 + format.url output
  1.1153 + format.note output
  1.1154 + format.date "year" output.check
  1.1155 + fin.entry
  1.1156 +}
  1.1157 +
  1.1158 +FUNCTION {unpublished}
  1.1159 +{ output.bibitem
  1.1160 + format.authors "author" output.check
  1.1161 + author format.key output
  1.1162 + format.title "title" output.check
  1.1163 + format.doi output
  1.1164 + format.url output
  1.1165 + format.note "note" output.check
  1.1166 + format.date output
  1.1167 + fin.entry
  1.1168 +}
  1.1169 +
  1.1170 +FUNCTION {default.type} { misc }
  1.1171 +READ
  1.1172 +FUNCTION {sortify}
  1.1173 +{ purify$
  1.1174 + "l" change.case$
  1.1175 +}
  1.1176 +INTEGERS { len }
  1.1177 +FUNCTION {chop.word}
  1.1178 +{ 's :=
  1.1179 + 'len :=
  1.1180 + s #1 len substring$ =
  1.1181 +   { s len #1 + global.max$ substring$ }
  1.1182 +   's
  1.1183 + if$
  1.1184 +}
  1.1185 +FUNCTION {format.lab.names}
  1.1186 +{ 's :=
  1.1187 + "" 't :=
  1.1188 + s #1 "{vv~}{ll}" format.name$
  1.1189 + s num.names$ duplicate$
  1.1190 + #2 >
  1.1191 +   { pop$
  1.1192 +     " " * bbl.etal *
  1.1193 +   }
  1.1194 +   { #2 <
  1.1195 +       'skip$
  1.1196 +       { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  1.1197 +           {
  1.1198 +             " " * bbl.etal *
  1.1199 +           }
  1.1200 +           { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
  1.1201 +             * }
  1.1202 +         if$
  1.1203 +       }
  1.1204 +     if$
  1.1205 +   }
  1.1206 + if$
  1.1207 +}
  1.1208 +
  1.1209 +FUNCTION {author.key.label}
  1.1210 +{ author empty$
  1.1211 +   { key empty$
  1.1212 +       { cite$ #1 #3 substring$ }
  1.1213 +       'key
  1.1214 +     if$
  1.1215 +   }
  1.1216 +   { author format.lab.names }
  1.1217 + if$
  1.1218 +}
  1.1219 +
  1.1220 +FUNCTION {author.editor.key.label}
  1.1221 +{ author empty$
  1.1222 +   { editor empty$
  1.1223 +       { key empty$
  1.1224 +           { cite$ #1 #3 substring$ }
  1.1225 +           'key
  1.1226 +         if$
  1.1227 +       }
  1.1228 +       { editor format.lab.names }
  1.1229 +     if$
  1.1230 +   }
  1.1231 +   { author format.lab.names }
  1.1232 + if$
  1.1233 +}
  1.1234 +
  1.1235 +FUNCTION {editor.key.label}
  1.1236 +{ editor empty$
  1.1237 +   { key empty$
  1.1238 +       { cite$ #1 #3 substring$ }
  1.1239 +       'key
  1.1240 +     if$
  1.1241 +   }
  1.1242 +   { editor format.lab.names }
  1.1243 + if$
  1.1244 +}
  1.1245 +
  1.1246 +FUNCTION {calc.short.authors}
  1.1247 +{ type$ "book" =
  1.1248 + type$ "inbook" =
  1.1249 + or
  1.1250 +   'author.editor.key.label
  1.1251 +   { type$ "proceedings" =
  1.1252 +       'editor.key.label
  1.1253 +       'author.key.label
  1.1254 +     if$
  1.1255 +   }
  1.1256 + if$
  1.1257 + 'short.list :=
  1.1258 +}
  1.1259 +
  1.1260 +FUNCTION {calc.label}
  1.1261 +{ calc.short.authors
  1.1262 + short.list
  1.1263 + "("
  1.1264 + *
  1.1265 + year duplicate$ empty$
  1.1266 +    { pop$ "????" }
  1.1267 +    { purify$ #-1 #4 substring$ }
  1.1268 + if$
  1.1269 + *
  1.1270 + 'label :=
  1.1271 +}
  1.1272 +
  1.1273 +FUNCTION {sort.format.names}
  1.1274 +{ 's :=
  1.1275 + #1 'nameptr :=
  1.1276 + ""
  1.1277 + s num.names$ 'numnames :=
  1.1278 + numnames 'namesleft :=
  1.1279 +   { namesleft #0 > }
  1.1280 +   { s nameptr
  1.1281 +     "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
  1.1282 +     format.name$ 't :=
  1.1283 +     nameptr #1 >
  1.1284 +       {
  1.1285 +         "   "  *
  1.1286 +         namesleft #1 = t "others" = and
  1.1287 +           { "zzzzz" * }
  1.1288 +           { t sortify * }
  1.1289 +         if$
  1.1290 +       }
  1.1291 +       { t sortify * }
  1.1292 +     if$
  1.1293 +     nameptr #1 + 'nameptr :=
  1.1294 +     namesleft #1 - 'namesleft :=
  1.1295 +   }
  1.1296 + while$
  1.1297 +}
  1.1298 +
  1.1299 +FUNCTION {sort.format.title}
  1.1300 +{ 't :=
  1.1301 + "A " #2
  1.1302 +   "An " #3
  1.1303 +     "The " #4 t chop.word
  1.1304 +   chop.word
  1.1305 + chop.word
  1.1306 + sortify
  1.1307 + #1 global.max$ substring$
  1.1308 +}
  1.1309 +FUNCTION {author.sort}
  1.1310 +{ author empty$
  1.1311 +   { key empty$
  1.1312 +       { "to sort, need author or key in " cite$ * warning$
  1.1313 +         ""
  1.1314 +       }
  1.1315 +       { key sortify }
  1.1316 +     if$
  1.1317 +   }
  1.1318 +   { author sort.format.names }
  1.1319 + if$
  1.1320 +}
  1.1321 +FUNCTION {author.editor.sort}
  1.1322 +{ author empty$
  1.1323 +   { editor empty$
  1.1324 +       { key empty$
  1.1325 +           { "to sort, need author, editor, or key in " cite$ * warning$
  1.1326 +             ""
  1.1327 +           }
  1.1328 +           { key sortify }
  1.1329 +         if$
  1.1330 +       }
  1.1331 +       { editor sort.format.names }
  1.1332 +     if$
  1.1333 +   }
  1.1334 +   { author sort.format.names }
  1.1335 + if$
  1.1336 +}
  1.1337 +FUNCTION {editor.sort}
  1.1338 +{ editor empty$
  1.1339 +   { key empty$
  1.1340 +       { "to sort, need editor or key in " cite$ * warning$
  1.1341 +         ""
  1.1342 +       }
  1.1343 +       { key sortify }
  1.1344 +     if$
  1.1345 +   }
  1.1346 +   { editor sort.format.names }
  1.1347 + if$
  1.1348 +}
  1.1349 +INTEGERS { seq.num }
  1.1350 +FUNCTION {init.seq}
  1.1351 +{ #0 'seq.num :=}
  1.1352 +EXECUTE {init.seq}
  1.1353 +FUNCTION {int.to.fix}
  1.1354 +{ "000000000" swap$ int.to.str$ *
  1.1355 + #-1 #10 substring$
  1.1356 +}
  1.1357 +FUNCTION {presort}
  1.1358 +{ calc.label
  1.1359 + label sortify
  1.1360 + "    "
  1.1361 + *
  1.1362 + seq.num #1 + 'seq.num :=
  1.1363 + seq.num  int.to.fix
  1.1364 + 'sort.label :=
  1.1365 + sort.label
  1.1366 + *
  1.1367 + "    "
  1.1368 + *
  1.1369 + title field.or.null
  1.1370 + sort.format.title
  1.1371 + *
  1.1372 + #1 entry.max$ substring$
  1.1373 + 'sort.key$ :=
  1.1374 +}
  1.1375 +
  1.1376 +ITERATE {presort}
  1.1377 +SORT
  1.1378 +STRINGS { last.label next.extra }
  1.1379 +INTEGERS { last.extra.num number.label }
  1.1380 +FUNCTION {initialize.extra.label.stuff}
  1.1381 +{ #0 int.to.chr$ 'last.label :=
  1.1382 + "" 'next.extra :=
  1.1383 + #0 'last.extra.num :=
  1.1384 + #0 'number.label :=
  1.1385 +}
  1.1386 +FUNCTION {forward.pass}
  1.1387 +{ last.label label =
  1.1388 +   { last.extra.num #1 + 'last.extra.num :=
  1.1389 +     last.extra.num int.to.chr$ 'extra.label :=
  1.1390 +   }
  1.1391 +   { "a" chr.to.int$ 'last.extra.num :=
  1.1392 +     "" 'extra.label :=
  1.1393 +     label 'last.label :=
  1.1394 +   }
  1.1395 + if$
  1.1396 + number.label #1 + 'number.label :=
  1.1397 +}
  1.1398 +FUNCTION {reverse.pass}
  1.1399 +{ next.extra "b" =
  1.1400 +   { "a" 'extra.label := }
  1.1401 +   'skip$
  1.1402 + if$
  1.1403 + extra.label 'next.extra :=
  1.1404 + extra.label
  1.1405 + duplicate$ empty$
  1.1406 +   'skip$
  1.1407 +   { "{\natexlab{" swap$ * "}}" * }
  1.1408 + if$
  1.1409 + 'extra.label :=
  1.1410 + label extra.label * 'label :=
  1.1411 +}
  1.1412 +EXECUTE {initialize.extra.label.stuff}
  1.1413 +ITERATE {forward.pass}
  1.1414 +REVERSE {reverse.pass}
  1.1415 +FUNCTION {bib.sort.order}
  1.1416 +{ sort.label
  1.1417 + "    "
  1.1418 + *
  1.1419 + year field.or.null sortify
  1.1420 + *
  1.1421 + "    "
  1.1422 + *
  1.1423 + title field.or.null
  1.1424 + sort.format.title
  1.1425 + *
  1.1426 + #1 entry.max$ substring$
  1.1427 + 'sort.key$ :=
  1.1428 +}
  1.1429 +ITERATE {bib.sort.order}
  1.1430 +SORT
  1.1431 +FUNCTION {begin.bib}
  1.1432 +{ preamble$ empty$
  1.1433 +   'skip$
  1.1434 +   { preamble$ write$ newline$ }
  1.1435 + if$
  1.1436 + "\begin{thebibliography}{" number.label int.to.str$ * "}" *
  1.1437 + write$ newline$
  1.1438 + "\providecommand{\natexlab}[1]{#1}"
  1.1439 + write$ newline$
  1.1440 + "\providecommand{\url}[1]{\texttt{#1}}"
  1.1441 + write$ newline$
  1.1442 + "\providecommand{\urlprefix}{URL }"
  1.1443 + write$ newline$
  1.1444 + "\expandafter\ifx\csname urlstyle\endcsname\relax"
  1.1445 + write$ newline$
  1.1446 + "  \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
  1.1447 + write$ newline$
  1.1448 + "  \providecommand{\doi}[1]{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\url{#1}\endgroup}\fi"
  1.1449 + write$ newline$
  1.1450 + "\providecommand{\bibinfo}[2]{#2}"
  1.1451 + write$ newline$
  1.1452 +}
  1.1453 +EXECUTE {begin.bib}
  1.1454 +EXECUTE {init.state.consts}
  1.1455 +ITERATE {call.type$}
  1.1456 +FUNCTION {end.bib}
  1.1457 +{ newline$
  1.1458 + "\end{thebibliography}" write$ newline$
  1.1459 +}
  1.1460 +EXECUTE {end.bib}
  1.1461 +%% End of customized bst file
  1.1462 +%%
  1.1463 +%%
  1.1464 +%% End of file `elsarticle-num-names.bst'.