
alpar@0: %% 
alpar@0: %% Copyright 2007, 2008, 2009 Elsevier Ltd
alpar@0: %% 
alpar@0: %% This file is part of the 'Elsarticle Bundle'.
alpar@0: %% ---------------------------------------------
alpar@0: %% 
alpar@0: %% It may be distributed under the conditions of the LaTeX Project Public
alpar@0: %% License, either version 1.2 of this license or (at your option) any
alpar@0: %% later version.  The latest version of this license is in
alpar@0: %%    http://www.latex-project.org/lppl.txt
alpar@0: %% and version 1.2 or later is part of all distributions of LaTeX
alpar@0: %% version 1999/12/01 or later.
alpar@0: %% 
alpar@0: %% The list of all files belonging to the 'Elsarticle Bundle' is
alpar@0: %% given in the file `manifest.txt'.
alpar@0: %% 
alpar@0: %%
alpar@0: %% This is file `elsearticle-num-names.bst',
alpar@0: %% generated with the docstrip utility.
alpar@0: %%
alpar@0: %% The original source files were:
alpar@0: %%
alpar@0: %% 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,,{}')
alpar@0: %% 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,,{}')
alpar@0: %% 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,,{}')
alpar@0: %% ----------------------------------------
alpar@0: %% *** Journal of Sound and Vibration ***
alpar@0: %%
alpar@0: %% Copyright 1994-2004 Patrick W Daly
alpar@0:  % ===============================================================
alpar@0:  % IMPORTANT NOTICE:
alpar@0:  % This bibliographic style (bst) file has been generated from one or
alpar@0:  % more master bibliographic style (mbs) files, listed above.
alpar@0:  %
alpar@0:  % This generated file can be redistributed and/or modified under the terms
alpar@0:  % of the LaTeX Project Public License Distributed from CTAN
alpar@0:  % archives in directory macros/latex/base/lppl.txt; either
alpar@0:  % version 1 of the License, or any later version.
alpar@0:  % ===============================================================
alpar@0:  % Name and version information of the main mbs file:
alpar@0:  % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)]
alpar@0:  %   For use with BibTeX version 0.99a or later
alpar@0:  %-------------------------------------------------------------------
alpar@0: 
alpar@0: ENTRY
alpar@0:  { address
alpar@0:    author
alpar@0:    booktitle
alpar@0:    chapter
alpar@0:    doi
alpar@0:    edition
alpar@0:    editor
alpar@0:    eid
alpar@0:    howpublished
alpar@0:    institution
alpar@0:    isbn
alpar@0:    issn
alpar@0:    journal
alpar@0:    key
alpar@0:    month
alpar@0:    note
alpar@0:    number
alpar@0:    organization
alpar@0:    pages
alpar@0:    publisher
alpar@0:    school
alpar@0:    series
alpar@0:    title
alpar@0:    type
alpar@0:    url
alpar@0:    volume
alpar@0:    year
alpar@0:  }
alpar@0:  {}
alpar@0:  { label extra.label sort.label short.list }
alpar@0: INTEGERS { output.state before.all mid.sentence after.sentence after.block }
alpar@0: FUNCTION {init.state.consts}
alpar@0: { #0 'before.all :=
alpar@0:  #1 'mid.sentence :=
alpar@0:  #2 'after.sentence :=
alpar@0:  #3 'after.block :=
alpar@0: }
alpar@0: STRINGS { s t}
alpar@0: FUNCTION {output.nonnull}
alpar@0: { 's :=
alpar@0:  output.state mid.sentence =
alpar@0:    { ", " * write$ }
alpar@0:    { output.state after.block =
alpar@0:        { add.period$ write$
alpar@0:          newline$
alpar@0:          "\newblock " write$
alpar@0:        }
alpar@0:        { output.state before.all =
alpar@0:            'write$
alpar@0:            { add.period$ " " * write$ }
alpar@0:          if$
alpar@0:        }
alpar@0:      if$
alpar@0:      mid.sentence 'output.state :=
alpar@0:    }
alpar@0:  if$
alpar@0:  s
alpar@0: }
alpar@0: FUNCTION {output}
alpar@0: { duplicate$ empty$
alpar@0:    'pop$
alpar@0:    'output.nonnull
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {output.check}
alpar@0: { 't :=
alpar@0:  duplicate$ empty$
alpar@0:    { pop$ "empty " t * " in " * cite$ * warning$ }
alpar@0:    'output.nonnull
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {fin.entry}
alpar@0: { add.period$
alpar@0:  write$
alpar@0:  newline$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {new.block}
alpar@0: { output.state before.all =
alpar@0:    'skip$
alpar@0:    { after.block 'output.state := }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {new.sentence}
alpar@0: { output.state after.block =
alpar@0:    'skip$
alpar@0:    { output.state before.all =
alpar@0:        'skip$
alpar@0:        { after.sentence 'output.state := }
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {add.blank}
alpar@0: {  " " * before.all 'output.state :=
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {date.block}
alpar@0: {
alpar@0:  skip$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {not}
alpar@0: {   { #0 }
alpar@0:    { #1 }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {and}
alpar@0: {   'skip$
alpar@0:    { pop$ #0 }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {or}
alpar@0: {   { pop$ #1 }
alpar@0:    'skip$
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {new.block.checkb}
alpar@0: { empty$
alpar@0:  swap$ empty$
alpar@0:  and
alpar@0:    'skip$
alpar@0:    'new.block
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {field.or.null}
alpar@0: { duplicate$ empty$
alpar@0:    { pop$ "" }
alpar@0:    'skip$
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {emphasize}
alpar@0: { duplicate$ empty$
alpar@0:    { pop$ "" }
alpar@0:    { "\emph{" swap$ * "}" * }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {tie.or.space.prefix}
alpar@0: { duplicate$ text.length$ #3 <
alpar@0:    { "~" }
alpar@0:    { " " }
alpar@0:  if$
alpar@0:  swap$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {capitalize}
alpar@0: { "u" change.case$ "t" change.case$ }
alpar@0: 
alpar@0: FUNCTION {space.word}
alpar@0: { " " swap$ * " " * }
alpar@0:  % Here are the language-specific definitions for explicit words.
alpar@0:  % Each function has a name bbl.xxx where xxx is the English word.
alpar@0:  %-------------------------------------------------------------------
alpar@0:  % Begin module:
alpar@0:  % \ProvidesFile{english.mbs}[2003/11/06 4.2 (PWD)]
alpar@0: 
alpar@0:  % The language selected here is ENGLISH
alpar@0: FUNCTION {bbl.and}
alpar@0: { "and"}
alpar@0: 
alpar@0: FUNCTION {bbl.etal}
alpar@0: { "et~al." }
alpar@0: 
alpar@0: FUNCTION {bbl.editors}
alpar@0: { "eds." }
alpar@0: 
alpar@0: FUNCTION {bbl.editor}
alpar@0: { "ed." }
alpar@0: 
alpar@0: FUNCTION {bbl.edby}
alpar@0: { "edited by" }
alpar@0: 
alpar@0: FUNCTION {bbl.edition}
alpar@0: { "edn." }
alpar@0: 
alpar@0: FUNCTION {bbl.volume}
alpar@0: { "vol." }
alpar@0: 
alpar@0: FUNCTION {bbl.of}
alpar@0: { "of" }
alpar@0: 
alpar@0: FUNCTION {bbl.number}
alpar@0: { "no." }
alpar@0: 
alpar@0: FUNCTION {bbl.nr}
alpar@0: { "no." }
alpar@0: 
alpar@0: FUNCTION {bbl.in}
alpar@0: { "in" }
alpar@0: 
alpar@0: FUNCTION {bbl.pages}
alpar@0: { "" }
alpar@0: 
alpar@0: FUNCTION {bbl.page}
alpar@0: { "" }
alpar@0: 
alpar@0: FUNCTION {bbl.chapter}
alpar@0: { "chap." }
alpar@0: 
alpar@0: FUNCTION {bbl.techrep}
alpar@0: { "Tech. Rep." }
alpar@0: 
alpar@0: FUNCTION {bbl.mthesis}
alpar@0: { "Master's thesis" }
alpar@0: 
alpar@0: FUNCTION {bbl.phdthesis}
alpar@0: { "Ph.D. thesis" }
alpar@0: 
alpar@0: MACRO {jan} {"Jan."}
alpar@0: 
alpar@0: MACRO {feb} {"Feb."}
alpar@0: 
alpar@0: MACRO {mar} {"Mar."}
alpar@0: 
alpar@0: MACRO {apr} {"Apr."}
alpar@0: 
alpar@0: MACRO {may} {"May"}
alpar@0: 
alpar@0: MACRO {jun} {"Jun."}
alpar@0: 
alpar@0: MACRO {jul} {"Jul."}
alpar@0: 
alpar@0: MACRO {aug} {"Aug."}
alpar@0: 
alpar@0: MACRO {sep} {"Sep."}
alpar@0: 
alpar@0: MACRO {oct} {"Oct."}
alpar@0: 
alpar@0: MACRO {nov} {"Nov."}
alpar@0: 
alpar@0: MACRO {dec} {"Dec."}
alpar@0: 
alpar@0:  % End module: english.mbs
alpar@0: %% Copyright 1994-2004 Patrick W Daly
alpar@0: MACRO {acmcs} {"ACM Computing Surveys"}
alpar@0: 
alpar@0: MACRO {acta} {"Acta Informatica"}
alpar@0: 
alpar@0: MACRO {cacm} {"Communications of the ACM"}
alpar@0: 
alpar@0: MACRO {ibmjrd} {"IBM Journal of Research and Development"}
alpar@0: 
alpar@0: MACRO {ibmsj} {"IBM Systems Journal"}
alpar@0: 
alpar@0: MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
alpar@0: 
alpar@0: MACRO {ieeetc} {"IEEE Transactions on Computers"}
alpar@0: 
alpar@0: MACRO {ieeetcad}
alpar@0:  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
alpar@0: 
alpar@0: MACRO {ipl} {"Information Processing Letters"}
alpar@0: 
alpar@0: MACRO {jacm} {"Journal of the ACM"}
alpar@0: 
alpar@0: MACRO {jcss} {"Journal of Computer and System Sciences"}
alpar@0: 
alpar@0: MACRO {scp} {"Science of Computer Programming"}
alpar@0: 
alpar@0: MACRO {sicomp} {"SIAM Journal on Computing"}
alpar@0: 
alpar@0: MACRO {tocs} {"ACM Transactions on Computer Systems"}
alpar@0: 
alpar@0: MACRO {tods} {"ACM Transactions on Database Systems"}
alpar@0: 
alpar@0: MACRO {tog} {"ACM Transactions on Graphics"}
alpar@0: 
alpar@0: MACRO {toms} {"ACM Transactions on Mathematical Software"}
alpar@0: 
alpar@0: MACRO {toois} {"ACM Transactions on Office Information Systems"}
alpar@0: 
alpar@0: MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
alpar@0: 
alpar@0: MACRO {tcs} {"Theoretical Computer Science"}
alpar@0: FUNCTION {bibinfo.check}
alpar@0: { swap$
alpar@0:  duplicate$ missing$
alpar@0:    {
alpar@0:      pop$ pop$
alpar@0:      ""
alpar@0:    }
alpar@0:    { duplicate$ empty$
alpar@0:        {
alpar@0:          swap$ pop$
alpar@0:        }
alpar@0:        { swap$
alpar@0:          "\bibinfo{" swap$ * "}{" * swap$ * "}" *
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {bibinfo.warn}
alpar@0: { swap$
alpar@0:  duplicate$ missing$
alpar@0:    {
alpar@0:      swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
alpar@0:      ""
alpar@0:    }
alpar@0:    { duplicate$ empty$
alpar@0:        {
alpar@0:          swap$ "empty " swap$ * " in " * cite$ * warning$
alpar@0:        }
alpar@0:        { swap$
alpar@0:          "\bibinfo{" swap$ * "}{" * swap$ * "}" *
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.url}
alpar@0: { url empty$
alpar@0:    { "" }
alpar@0:    { "\urlprefix\url{" url * "}" * }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: STRINGS  { bibinfo}
alpar@0: INTEGERS { nameptr namesleft numnames }
alpar@0: 
alpar@0: FUNCTION {format.names}
alpar@0: { 'bibinfo :=
alpar@0:  duplicate$ empty$ 'skip$ {
alpar@0:  's :=
alpar@0:  "" 't :=
alpar@0:  #1 'nameptr :=
alpar@0:  s num.names$ 'numnames :=
alpar@0:  numnames 'namesleft :=
alpar@0:    { namesleft #0 > }
alpar@0:    { s nameptr
alpar@0:      "{f.~}{vv~}{ll}{, jj}"
alpar@0:      format.name$
alpar@0:      bibinfo bibinfo.check
alpar@0:      't :=
alpar@0:      nameptr #1 >
alpar@0:        {
alpar@0:          namesleft #1 >
alpar@0:            { ", " * t * }
alpar@0:            {
alpar@0:              "," *
alpar@0:              s nameptr "{ll}" format.name$ duplicate$ "others" =
alpar@0:                { 't := }
alpar@0:                { pop$ }
alpar@0:              if$
alpar@0:              t "others" =
alpar@0:                {
alpar@0:                  " " * bbl.etal *
alpar@0:                }
alpar@0:                { " " * t * }
alpar@0:              if$
alpar@0:            }
alpar@0:          if$
alpar@0:        }
alpar@0:        't
alpar@0:      if$
alpar@0:      nameptr #1 + 'nameptr :=
alpar@0:      namesleft #1 - 'namesleft :=
alpar@0:    }
alpar@0:  while$
alpar@0:  } if$
alpar@0: }
alpar@0: FUNCTION {format.names.ed}
alpar@0: {
alpar@0:  format.names
alpar@0: }
alpar@0: FUNCTION {format.key}
alpar@0: { empty$
alpar@0:    { key field.or.null }
alpar@0:    { "" }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.authors}
alpar@0: { author "author" format.names
alpar@0: }
alpar@0: FUNCTION {get.bbl.editor}
alpar@0: { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
alpar@0: 
alpar@0: FUNCTION {format.editors}
alpar@0: { editor "editor" format.names duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      " " *
alpar@0:      get.bbl.editor
alpar@0:      capitalize
alpar@0:   "(" swap$ * ")" *
alpar@0:      *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.isbn}
alpar@0: { isbn "isbn" bibinfo.check
alpar@0:  duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      "ISBN " swap$ *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.issn}
alpar@0: { issn "issn" bibinfo.check
alpar@0:  duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      "ISSN " swap$ *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0:  FUNCTION {format.doi}
alpar@0:  { doi "doi" bibinfo.check
alpar@0:   duplicate$ empty$ 'skip$
alpar@0:     {
alpar@0:       "\doi{" swap$  * "}" *
alpar@0:     }
alpar@0:   if$
alpar@0:  }
alpar@0: 
alpar@0: FUNCTION {format.note}
alpar@0: {
alpar@0:  note empty$
alpar@0:    { "" }
alpar@0:    { note #1 #1 substring$
alpar@0:      duplicate$ "{" =
alpar@0:        'skip$
alpar@0:        { output.state mid.sentence =
alpar@0:          { "l" }
alpar@0:          { "u" }
alpar@0:        if$
alpar@0:        change.case$
alpar@0:        }
alpar@0:      if$
alpar@0:      note #2 global.max$ substring$ * "note" bibinfo.check
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.title}
alpar@0: { title
alpar@0:  "title" bibinfo.check
alpar@0: }
alpar@0: FUNCTION {format.full.names}
alpar@0: {'s :=
alpar@0:  "" 't :=
alpar@0:  #1 'nameptr :=
alpar@0:  s num.names$ 'numnames :=
alpar@0:  numnames 'namesleft :=
alpar@0:    { namesleft #0 > }
alpar@0:    { s nameptr
alpar@0:      "{vv~}{ll}" format.name$
alpar@0:      't :=
alpar@0:      nameptr #1 >
alpar@0:        {
alpar@0:          namesleft #1 >
alpar@0:            { ", " * t * }
alpar@0:            {
alpar@0:              s nameptr "{ll}" format.name$ duplicate$ "others" =
alpar@0:                { 't := }
alpar@0:                { pop$ }
alpar@0:              if$
alpar@0:              t "others" =
alpar@0:                {
alpar@0:                  " " * bbl.etal *
alpar@0:                }
alpar@0:                {
alpar@0:                  numnames #2 >
alpar@0:                    { "," * }
alpar@0:                    'skip$
alpar@0:                  if$
alpar@0:                  bbl.and
alpar@0:                  space.word * t *
alpar@0:                }
alpar@0:              if$
alpar@0:            }
alpar@0:          if$
alpar@0:        }
alpar@0:        't
alpar@0:      if$
alpar@0:      nameptr #1 + 'nameptr :=
alpar@0:      namesleft #1 - 'namesleft :=
alpar@0:    }
alpar@0:  while$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {author.editor.key.full}
alpar@0: { author empty$
alpar@0:    { editor empty$
alpar@0:        { key empty$
alpar@0:            { cite$ #1 #3 substring$ }
alpar@0:            'key
alpar@0:          if$
alpar@0:        }
alpar@0:        { editor format.full.names }
alpar@0:      if$
alpar@0:    }
alpar@0:    { author format.full.names }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {author.key.full}
alpar@0: { author empty$
alpar@0:    { key empty$
alpar@0:         { cite$ #1 #3 substring$ }
alpar@0:          'key
alpar@0:      if$
alpar@0:    }
alpar@0:    { author format.full.names }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {editor.key.full}
alpar@0: { editor empty$
alpar@0:    { key empty$
alpar@0:         { cite$ #1 #3 substring$ }
alpar@0:          'key
alpar@0:      if$
alpar@0:    }
alpar@0:    { editor format.full.names }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {make.full.names}
alpar@0: { type$ "book" =
alpar@0:  type$ "inbook" =
alpar@0:  or
alpar@0:    'author.editor.key.full
alpar@0:    { type$ "proceedings" =
alpar@0:        'editor.key.full
alpar@0:        'author.key.full
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {output.bibitem}
alpar@0: { newline$
alpar@0:  "\bibitem[{" write$
alpar@0:  label write$
alpar@0:  ")" make.full.names duplicate$ short.list =
alpar@0:     { pop$ }
alpar@0:     { * }
alpar@0:   if$
alpar@0:  "}]{" * write$
alpar@0:  cite$ write$
alpar@0:  "}" write$
alpar@0:  newline$
alpar@0:  ""
alpar@0:  before.all 'output.state :=
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {n.dashify}
alpar@0: {
alpar@0:  't :=
alpar@0:  ""
alpar@0:    { t empty$ not }
alpar@0:    { t #1 #1 substring$ "-" =
alpar@0:        { t #1 #2 substring$ "--" = not
alpar@0:            { "--" *
alpar@0:              t #2 global.max$ substring$ 't :=
alpar@0:            }
alpar@0:            {   { t #1 #1 substring$ "-" = }
alpar@0:                { "-" *
alpar@0:                  t #2 global.max$ substring$ 't :=
alpar@0:                }
alpar@0:              while$
alpar@0:            }
alpar@0:          if$
alpar@0:        }
alpar@0:        { t #1 #1 substring$ *
alpar@0:          t #2 global.max$ substring$ 't :=
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:  while$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {word.in}
alpar@0: { bbl.in
alpar@0:  ":" *
alpar@0:  " " * }
alpar@0: 
alpar@0: FUNCTION {format.date}
alpar@0: { year "year" bibinfo.check duplicate$ empty$
alpar@0:    {
alpar@0:      "empty year in " cite$ * "; set to ????" * warning$
alpar@0:       pop$ "????"
alpar@0:    }
alpar@0:    'skip$
alpar@0:  if$
alpar@0:  extra.label *
alpar@0: }
alpar@0: FUNCTION{format.year}
alpar@0: { year "year" bibinfo.check duplicate$ empty$
alpar@0:    {  "empty year in " cite$ *
alpar@0:       "; set to ????" *
alpar@0:       warning$
alpar@0:       pop$ "????"
alpar@0:    }
alpar@0:    {
alpar@0:    }
alpar@0:  if$
alpar@0:  extra.label *
alpar@0:  "(" swap$ * ")" *
alpar@0: }
alpar@0: FUNCTION {format.btitle}
alpar@0: { title "title" bibinfo.check
alpar@0:  duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {either.or.check}
alpar@0: { empty$
alpar@0:    'pop$
alpar@0:    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.bvolume}
alpar@0: { volume empty$
alpar@0:    { "" }
alpar@0:    { bbl.volume volume tie.or.space.prefix
alpar@0:      "volume" bibinfo.check * *
alpar@0:      series "series" bibinfo.check
alpar@0:      duplicate$ empty$ 'pop$
alpar@0:        { swap$ bbl.of space.word * swap$
alpar@0:          emphasize * }
alpar@0:      if$
alpar@0:      "volume and number" number either.or.check
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.number.series}
alpar@0: { volume empty$
alpar@0:    { number empty$
alpar@0:        { series field.or.null }
alpar@0:        { series empty$
alpar@0:            { number "number" bibinfo.check }
alpar@0:            { output.state mid.sentence =
alpar@0:                { bbl.number }
alpar@0:                { bbl.number capitalize }
alpar@0:              if$
alpar@0:              number tie.or.space.prefix "number" bibinfo.check * *
alpar@0:              bbl.in space.word *
alpar@0:              series "series" bibinfo.check *
alpar@0:            }
alpar@0:          if$
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:    { "" }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.edition}
alpar@0: { edition duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      output.state mid.sentence =
alpar@0:        { "l" }
alpar@0:        { "t" }
alpar@0:      if$ change.case$
alpar@0:      "edition" bibinfo.check
alpar@0:      " " * bbl.edition *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: INTEGERS { multiresult }
alpar@0: FUNCTION {multi.page.check}
alpar@0: { 't :=
alpar@0:  #0 'multiresult :=
alpar@0:    { multiresult not
alpar@0:      t empty$ not
alpar@0:      and
alpar@0:    }
alpar@0:    { t #1 #1 substring$
alpar@0:      duplicate$ "-" =
alpar@0:      swap$ duplicate$ "," =
alpar@0:      swap$ "+" =
alpar@0:      or or
alpar@0:        { #1 'multiresult := }
alpar@0:        { t #2 global.max$ substring$ 't := }
alpar@0:      if$
alpar@0:    }
alpar@0:  while$
alpar@0:  multiresult
alpar@0: }
alpar@0: FUNCTION {format.pages}
alpar@0: { pages duplicate$ empty$ 'skip$
alpar@0:    { duplicate$ multi.page.check
alpar@0:        {
alpar@0:          n.dashify
alpar@0:        }
alpar@0:        {
alpar@0:        }
alpar@0:      if$
alpar@0:      "pages" bibinfo.check
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.journal.pages}
alpar@0: { pages duplicate$ empty$ 'pop$
alpar@0:    { swap$ duplicate$ empty$
alpar@0:        { pop$ pop$ format.pages }
alpar@0:        {
alpar@0:          " " *
alpar@0:          format.year * " " *
alpar@0:          swap$
alpar@0:          n.dashify
alpar@0:          "pages" bibinfo.check
alpar@0:          *
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.journal.eid}
alpar@0: { eid "eid" bibinfo.check
alpar@0:  duplicate$ empty$ 'pop$
alpar@0:    { swap$ duplicate$ empty$ 'skip$
alpar@0:      {
alpar@0:          " " *
alpar@0:      }
alpar@0:      if$
alpar@0:      swap$ *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.vol.num.pages}
alpar@0: { volume field.or.null
alpar@0:  duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      "volume" bibinfo.check
alpar@0:    }
alpar@0:  if$
alpar@0:  number "number" bibinfo.check duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      swap$ duplicate$ empty$
alpar@0:        { "there's a number but no volume in " cite$ * warning$ }
alpar@0:        'skip$
alpar@0:      if$
alpar@0:      swap$
alpar@0:      "~(" swap$ * ")" *
alpar@0:    }
alpar@0:  if$ *
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.chapter.pages}
alpar@0: { chapter empty$
alpar@0:    { "" }
alpar@0:    { type empty$
alpar@0:        { bbl.chapter }
alpar@0:        { type "l" change.case$
alpar@0:          "type" bibinfo.check
alpar@0:        }
alpar@0:      if$
alpar@0:      chapter tie.or.space.prefix
alpar@0:      "chapter" bibinfo.check
alpar@0:      * *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.booktitle}
alpar@0: {
alpar@0:  booktitle "booktitle" bibinfo.check
alpar@0: }
alpar@0: FUNCTION {format.in.ed.booktitle}
alpar@0: { format.booktitle duplicate$ empty$ 'skip$
alpar@0:    {
alpar@0:      editor "editor" format.names.ed duplicate$ empty$ 'pop$
alpar@0:        {
alpar@0:          " " *
alpar@0:          get.bbl.editor
alpar@0:          capitalize
alpar@0:          "(" swap$ * "), " *
alpar@0:          * swap$
alpar@0:          * }
alpar@0:      if$
alpar@0:      word.in swap$ *
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.thesis.type}
alpar@0: { type duplicate$ empty$
alpar@0:    'pop$
alpar@0:    { swap$ pop$
alpar@0:      "t" change.case$ "type" bibinfo.check
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.tr.number}
alpar@0: { number "number" bibinfo.check
alpar@0:  type duplicate$ empty$
alpar@0:    { pop$ bbl.techrep }
alpar@0:    'skip$
alpar@0:  if$
alpar@0:  "type" bibinfo.check
alpar@0:  swap$ duplicate$ empty$
alpar@0:    { pop$ "t" change.case$ }
alpar@0:    { tie.or.space.prefix * * }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.article.crossref}
alpar@0: {
alpar@0:  word.in
alpar@0:  " \cite{" * crossref * "}" *
alpar@0: }
alpar@0: FUNCTION {format.book.crossref}
alpar@0: { volume duplicate$ empty$
alpar@0:    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
alpar@0:      pop$ word.in
alpar@0:    }
alpar@0:    { bbl.volume
alpar@0:      swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
alpar@0:    }
alpar@0:  if$
alpar@0:  " \cite{" * crossref * "}" *
alpar@0: }
alpar@0: FUNCTION {format.incoll.inproc.crossref}
alpar@0: {
alpar@0:  word.in
alpar@0:  " \cite{" * crossref * "}" *
alpar@0: }
alpar@0: FUNCTION {format.org.or.pub}
alpar@0: { 't :=
alpar@0:  ""
alpar@0:  address empty$ t empty$ and
alpar@0:    'skip$
alpar@0:    {
alpar@0:      t empty$
alpar@0:        { address "address" bibinfo.check *
alpar@0:        }
alpar@0:        { t *
alpar@0:          address empty$
alpar@0:            'skip$
alpar@0:            { ", " * address "address" bibinfo.check * }
alpar@0:          if$
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.publisher.address}
alpar@0: { publisher "publisher" bibinfo.warn format.org.or.pub
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {format.organization.address}
alpar@0: { organization "organization" bibinfo.check format.org.or.pub
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {article}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.title "title" output.check
alpar@0:  crossref missing$
alpar@0:    {
alpar@0:      journal
alpar@0:      "journal" bibinfo.check
alpar@0:      "journal" output.check
alpar@0:      add.blank
alpar@0:      format.vol.num.pages output
alpar@0:    }
alpar@0:    { format.article.crossref output.nonnull
alpar@0:    }
alpar@0:  if$
alpar@0:  eid empty$
alpar@0:    { format.journal.pages }
alpar@0:    { format.journal.eid }
alpar@0:  if$
alpar@0:  format.issn output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  fin.entry
alpar@0: }
alpar@0: FUNCTION {book}
alpar@0: { output.bibitem
alpar@0:  author empty$
alpar@0:    { format.editors "author and editor" output.check
alpar@0:      editor format.key output
alpar@0:    }
alpar@0:    { format.authors output.nonnull
alpar@0:      crossref missing$
alpar@0:        { "author and editor" editor either.or.check }
alpar@0:        'skip$
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0:  format.btitle "title" output.check
alpar@0:  crossref missing$
alpar@0:    { format.bvolume output
alpar@0:      format.number.series output
alpar@0:      format.publisher.address output
alpar@0:    }
alpar@0:    {
alpar@0:      format.book.crossref output.nonnull
alpar@0:    }
alpar@0:  if$
alpar@0:  format.edition output
alpar@0:  format.isbn output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: FUNCTION {booklet}
alpar@0: { output.bibitem
alpar@0:  format.authors output
alpar@0:  author format.key output
alpar@0:  format.title "title" output.check
alpar@0:  howpublished "howpublished" bibinfo.check output
alpar@0:  address "address" bibinfo.check output
alpar@0:  format.isbn output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {inbook}
alpar@0: { output.bibitem
alpar@0:  author empty$
alpar@0:    { format.editors "author and editor" output.check
alpar@0:      editor format.key output
alpar@0:    }
alpar@0:    { format.authors output.nonnull
alpar@0:      crossref missing$
alpar@0:        { "author and editor" editor either.or.check }
alpar@0:        'skip$
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0:  format.btitle "title" output.check
alpar@0:  crossref missing$
alpar@0:    {
alpar@0:      format.bvolume output
alpar@0:      format.chapter.pages "chapter and pages" output.check
alpar@0:      format.number.series output
alpar@0:      format.publisher.address output
alpar@0:    }
alpar@0:    {
alpar@0:      format.chapter.pages "chapter and pages" output.check
alpar@0:      format.book.crossref output.nonnull
alpar@0:    }
alpar@0:  if$
alpar@0:  format.edition output
alpar@0:  crossref missing$
alpar@0:    { format.isbn output }
alpar@0:    'skip$
alpar@0:  if$
alpar@0:  format.pages "pages" output.check
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {incollection}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.title "title" output.check
alpar@0:  crossref missing$
alpar@0:    { format.in.ed.booktitle "booktitle" output.check
alpar@0:      format.bvolume output
alpar@0:      format.number.series output
alpar@0:      format.chapter.pages output
alpar@0:      format.publisher.address output
alpar@0:      format.edition output
alpar@0:      format.isbn output
alpar@0:    }
alpar@0:    { format.incoll.inproc.crossref output.nonnull
alpar@0:      format.chapter.pages output
alpar@0:    }
alpar@0:  if$
alpar@0:  format.pages "pages" output.check
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: FUNCTION {inproceedings}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.title "title" output.check
alpar@0:  crossref missing$
alpar@0:    { format.in.ed.booktitle "booktitle" output.check
alpar@0:      format.bvolume output
alpar@0:      format.number.series output
alpar@0:      publisher empty$
alpar@0:        { format.organization.address output }
alpar@0:        { organization "organization" bibinfo.check output
alpar@0:          format.publisher.address output
alpar@0:        }
alpar@0:      if$
alpar@0:      format.isbn output
alpar@0:      format.issn output
alpar@0:    }
alpar@0:    { format.incoll.inproc.crossref output.nonnull
alpar@0:    }
alpar@0:  if$
alpar@0:  format.pages "pages" output.check
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: FUNCTION {conference} { inproceedings }
alpar@0: FUNCTION {manual}
alpar@0: { output.bibitem
alpar@0:  format.authors output
alpar@0:  author format.key output
alpar@0:  format.btitle "title" output.check
alpar@0:  organization "organization" bibinfo.check output
alpar@0:  address "address" bibinfo.check output
alpar@0:  format.edition output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {mastersthesis}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.btitle
alpar@0:  "title" output.check
alpar@0:  bbl.mthesis format.thesis.type output.nonnull
alpar@0:  school "school" bibinfo.warn output
alpar@0:  address "address" bibinfo.check output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {misc}
alpar@0: { output.bibitem
alpar@0:  format.authors output
alpar@0:  author format.key output
alpar@0:  format.title output
alpar@0:  howpublished "howpublished" bibinfo.check output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: FUNCTION {phdthesis}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.btitle
alpar@0:  "title" output.check
alpar@0:  bbl.phdthesis format.thesis.type output.nonnull
alpar@0:  school "school" bibinfo.warn output
alpar@0:  address "address" bibinfo.check output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {proceedings}
alpar@0: { output.bibitem
alpar@0:  format.editors output
alpar@0:  editor format.key output
alpar@0:  format.btitle "title" output.check
alpar@0:  format.bvolume output
alpar@0:  format.number.series output
alpar@0:  publisher empty$
alpar@0:    { format.organization.address output }
alpar@0:    { organization "organization" bibinfo.check output
alpar@0:      format.publisher.address output
alpar@0:    }
alpar@0:  if$
alpar@0:  format.isbn output
alpar@0:  format.issn output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {techreport}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.title
alpar@0:  "title" output.check
alpar@0:  format.tr.number output.nonnull
alpar@0:  institution "institution" bibinfo.warn output
alpar@0:  address "address" bibinfo.check output
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note output
alpar@0:  format.date "year" output.check
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {unpublished}
alpar@0: { output.bibitem
alpar@0:  format.authors "author" output.check
alpar@0:  author format.key output
alpar@0:  format.title "title" output.check
alpar@0:  format.doi output
alpar@0:  format.url output
alpar@0:  format.note "note" output.check
alpar@0:  format.date output
alpar@0:  fin.entry
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {default.type} { misc }
alpar@0: READ
alpar@0: FUNCTION {sortify}
alpar@0: { purify$
alpar@0:  "l" change.case$
alpar@0: }
alpar@0: INTEGERS { len }
alpar@0: FUNCTION {chop.word}
alpar@0: { 's :=
alpar@0:  'len :=
alpar@0:  s #1 len substring$ =
alpar@0:    { s len #1 + global.max$ substring$ }
alpar@0:    's
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {format.lab.names}
alpar@0: { 's :=
alpar@0:  "" 't :=
alpar@0:  s #1 "{vv~}{ll}" format.name$
alpar@0:  s num.names$ duplicate$
alpar@0:  #2 >
alpar@0:    { pop$
alpar@0:      " " * bbl.etal *
alpar@0:    }
alpar@0:    { #2 <
alpar@0:        'skip$
alpar@0:        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
alpar@0:            {
alpar@0:              " " * bbl.etal *
alpar@0:            }
alpar@0:            { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
alpar@0:              * }
alpar@0:          if$
alpar@0:        }
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {author.key.label}
alpar@0: { author empty$
alpar@0:    { key empty$
alpar@0:        { cite$ #1 #3 substring$ }
alpar@0:        'key
alpar@0:      if$
alpar@0:    }
alpar@0:    { author format.lab.names }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {author.editor.key.label}
alpar@0: { author empty$
alpar@0:    { editor empty$
alpar@0:        { key empty$
alpar@0:            { cite$ #1 #3 substring$ }
alpar@0:            'key
alpar@0:          if$
alpar@0:        }
alpar@0:        { editor format.lab.names }
alpar@0:      if$
alpar@0:    }
alpar@0:    { author format.lab.names }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {editor.key.label}
alpar@0: { editor empty$
alpar@0:    { key empty$
alpar@0:        { cite$ #1 #3 substring$ }
alpar@0:        'key
alpar@0:      if$
alpar@0:    }
alpar@0:    { editor format.lab.names }
alpar@0:  if$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {calc.short.authors}
alpar@0: { type$ "book" =
alpar@0:  type$ "inbook" =
alpar@0:  or
alpar@0:    'author.editor.key.label
alpar@0:    { type$ "proceedings" =
alpar@0:        'editor.key.label
alpar@0:        'author.key.label
alpar@0:      if$
alpar@0:    }
alpar@0:  if$
alpar@0:  'short.list :=
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {calc.label}
alpar@0: { calc.short.authors
alpar@0:  short.list
alpar@0:  "("
alpar@0:  *
alpar@0:  year duplicate$ empty$
alpar@0:     { pop$ "????" }
alpar@0:     { purify$ #-1 #4 substring$ }
alpar@0:  if$
alpar@0:  *
alpar@0:  'label :=
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {sort.format.names}
alpar@0: { 's :=
alpar@0:  #1 'nameptr :=
alpar@0:  ""
alpar@0:  s num.names$ 'numnames :=
alpar@0:  numnames 'namesleft :=
alpar@0:    { namesleft #0 > }
alpar@0:    { s nameptr
alpar@0:      "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
alpar@0:      format.name$ 't :=
alpar@0:      nameptr #1 >
alpar@0:        {
alpar@0:          "   "  *
alpar@0:          namesleft #1 = t "others" = and
alpar@0:            { "zzzzz" * }
alpar@0:            { t sortify * }
alpar@0:          if$
alpar@0:        }
alpar@0:        { t sortify * }
alpar@0:      if$
alpar@0:      nameptr #1 + 'nameptr :=
alpar@0:      namesleft #1 - 'namesleft :=
alpar@0:    }
alpar@0:  while$
alpar@0: }
alpar@0: 
alpar@0: FUNCTION {sort.format.title}
alpar@0: { 't :=
alpar@0:  "A " #2
alpar@0:    "An " #3
alpar@0:      "The " #4 t chop.word
alpar@0:    chop.word
alpar@0:  chop.word
alpar@0:  sortify
alpar@0:  #1 global.max$ substring$
alpar@0: }
alpar@0: FUNCTION {author.sort}
alpar@0: { author empty$
alpar@0:    { key empty$
alpar@0:        { "to sort, need author or key in " cite$ * warning$
alpar@0:          ""
alpar@0:        }
alpar@0:        { key sortify }
alpar@0:      if$
alpar@0:    }
alpar@0:    { author sort.format.names }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {author.editor.sort}
alpar@0: { author empty$
alpar@0:    { editor empty$
alpar@0:        { key empty$
alpar@0:            { "to sort, need author, editor, or key in " cite$ * warning$
alpar@0:              ""
alpar@0:            }
alpar@0:            { key sortify }
alpar@0:          if$
alpar@0:        }
alpar@0:        { editor sort.format.names }
alpar@0:      if$
alpar@0:    }
alpar@0:    { author sort.format.names }
alpar@0:  if$
alpar@0: }
alpar@0: FUNCTION {editor.sort}
alpar@0: { editor empty$
alpar@0:    { key empty$
alpar@0:        { "to sort, need editor or key in " cite$ * warning$
alpar@0:          ""
alpar@0:        }
alpar@0:        { key sortify }
alpar@0:      if$
alpar@0:    }
alpar@0:    { editor sort.format.names }
alpar@0:  if$
alpar@0: }
alpar@0: INTEGERS { seq.num }
alpar@0: FUNCTION {init.seq}
alpar@0: { #0 'seq.num :=}
alpar@0: EXECUTE {init.seq}
alpar@0: FUNCTION {int.to.fix}
alpar@0: { "000000000" swap$ int.to.str$ *
alpar@0:  #-1 #10 substring$
alpar@0: }
alpar@0: FUNCTION {presort}
alpar@0: { calc.label
alpar@0:  label sortify
alpar@0:  "    "
alpar@0:  *
alpar@0:  seq.num #1 + 'seq.num :=
alpar@0:  seq.num  int.to.fix
alpar@0:  'sort.label :=
alpar@0:  sort.label
alpar@0:  *
alpar@0:  "    "
alpar@0:  *
alpar@0:  title field.or.null
alpar@0:  sort.format.title
alpar@0:  *
alpar@0:  #1 entry.max$ substring$
alpar@0:  'sort.key$ :=
alpar@0: }
alpar@0: 
alpar@0: ITERATE {presort}
alpar@0: SORT
alpar@0: STRINGS { last.label next.extra }
alpar@0: INTEGERS { last.extra.num number.label }
alpar@0: FUNCTION {initialize.extra.label.stuff}
alpar@0: { #0 int.to.chr$ 'last.label :=
alpar@0:  "" 'next.extra :=
alpar@0:  #0 'last.extra.num :=
alpar@0:  #0 'number.label :=
alpar@0: }
alpar@0: FUNCTION {forward.pass}
alpar@0: { last.label label =
alpar@0:    { last.extra.num #1 + 'last.extra.num :=
alpar@0:      last.extra.num int.to.chr$ 'extra.label :=
alpar@0:    }
alpar@0:    { "a" chr.to.int$ 'last.extra.num :=
alpar@0:      "" 'extra.label :=
alpar@0:      label 'last.label :=
alpar@0:    }
alpar@0:  if$
alpar@0:  number.label #1 + 'number.label :=
alpar@0: }
alpar@0: FUNCTION {reverse.pass}
alpar@0: { next.extra "b" =
alpar@0:    { "a" 'extra.label := }
alpar@0:    'skip$
alpar@0:  if$
alpar@0:  extra.label 'next.extra :=
alpar@0:  extra.label
alpar@0:  duplicate$ empty$
alpar@0:    'skip$
alpar@0:    { "{\natexlab{" swap$ * "}}" * }
alpar@0:  if$
alpar@0:  'extra.label :=
alpar@0:  label extra.label * 'label :=
alpar@0: }
alpar@0: EXECUTE {initialize.extra.label.stuff}
alpar@0: ITERATE {forward.pass}
alpar@0: REVERSE {reverse.pass}
alpar@0: FUNCTION {bib.sort.order}
alpar@0: { sort.label
alpar@0:  "    "
alpar@0:  *
alpar@0:  year field.or.null sortify
alpar@0:  *
alpar@0:  "    "
alpar@0:  *
alpar@0:  title field.or.null
alpar@0:  sort.format.title
alpar@0:  *
alpar@0:  #1 entry.max$ substring$
alpar@0:  'sort.key$ :=
alpar@0: }
alpar@0: ITERATE {bib.sort.order}
alpar@0: SORT
alpar@0: FUNCTION {begin.bib}
alpar@0: { preamble$ empty$
alpar@0:    'skip$
alpar@0:    { preamble$ write$ newline$ }
alpar@0:  if$
alpar@0:  "\begin{thebibliography}{" number.label int.to.str$ * "}" *
alpar@0:  write$ newline$
alpar@0:  "\providecommand{\natexlab}[1]{#1}"
alpar@0:  write$ newline$
alpar@0:  "\providecommand{\url}[1]{\texttt{#1}}"
alpar@0:  write$ newline$
alpar@0:  "\providecommand{\urlprefix}{URL }"
alpar@0:  write$ newline$
alpar@0:  "\expandafter\ifx\csname urlstyle\endcsname\relax"
alpar@0:  write$ newline$
alpar@0:  "  \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
alpar@0:  write$ newline$
alpar@0:  "  \providecommand{\doi}[1]{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\url{#1}\endgroup}\fi"
alpar@0:  write$ newline$
alpar@0:  "\providecommand{\bibinfo}[2]{#2}"
alpar@0:  write$ newline$
alpar@0: }
alpar@0: EXECUTE {begin.bib}
alpar@0: EXECUTE {init.state.consts}
alpar@0: ITERATE {call.type$}
alpar@0: FUNCTION {end.bib}
alpar@0: { newline$
alpar@0:  "\end{thebibliography}" write$ newline$
alpar@0: }
alpar@0: EXECUTE {end.bib}
alpar@0: %% End of customized bst file
alpar@0: %%
alpar@0: %%
alpar@0: %% End of file `elsarticle-num-names.bst'.




