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