Jakub Urban FED master tex document  over 9 years ago

Commit id: 4220d372c5725974f5e6a005cd4e845d9b1e6ff2

deletions | additions      

       

\section{Abstract} \begin{abstract}  Various MHD (magnetohydrodynamic) equilibrium tools, some of which being recently developed or considerably updated, are used on the medium-size COMPASS tokamak [R. Pánek et al., Czech J Phys 56, B125, 2006]. MHD equilibrium is a fundamental property of the tokamak plasma, whose knowledge is required for many diagnostics and modelling tools. Proper benchmarking and validation of equilibrium tools is thus key for interpreting and planning tokamak experiments. We present here benchmarks and comparisons to experimental data of the EFIT++ reconstruction code [L.C. Appel et al., to be submitted to Nucl. Fusion], the free-boundary equilibrium code FREEBIE [J.-F. Artaud, S.H. Kim, EPS 2012, P4.023], and a rapid plasma boundary reconstruction code VacTH [B. Faugeras et al., PPCF 2014, accepted]. We demonstrate that FREEBIE can calculate the equilibrium and corresponding poloidal field (PF) coils currents for given plasma parameters. Both EFIT++ and VacTH can reconstruct equilibria generated by FREEBIE from synthetic diagnostic data (including an artificial noise) and hence might be suitable for real-time control. Optimum reconstruction parameters are estimated; in addition, possible enhancements using more diagnostics are discussed and simulated using synthetic diagnostics. FREEBIE can also calculate the temporal evolution of the poloidal field coils currents for a whole plasma scenario. \end{abstract}           

%%  %% This is file `elsarticle-template-num.tex',  %% generated with the docstrip utility.  %%  %% The original source files were:  %%  %% elsarticle.dtx (with options: `numtemplate')  %%   %% Copyright 2007, 2008 Elsevier Ltd.  %%   %% This file is part of the 'Elsarticle Bundle'.  %% -------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%   %% The list of all files belonging to the 'Elsarticle Bundle' is  %% given in the file `manifest.txt'.  %%   %% Template article for Elsevier's document class `elsarticle'  %% with numbered style bibliographic references  %% SP 2008/03/01  %\documentclass[5p,12pt]{elsarticle}  \documentclass[preprint,5p,times]{elsarticle}  %% Use the option review to obtain double line spacing  %% \documentclass[authoryear,preprint,review,12pt]{elsarticle}  %% Use the options 1p,twocolumn; 3p; 3p,twocolumn; 5p; or 5p,twocolumn  %% for a journal layout:  %% \documentclass[final,1p,times]{elsarticle}  %% \documentclass[final,1p,times,twocolumn]{elsarticle}  %% \documentclass[final,3p,times]{elsarticle}  %% \documentclass[final,3p,times,twocolumn]{elsarticle}  %% \documentclass[final,5p,times]{elsarticle}  %% \documentclass[final,5p,times,twocolumn]{elsarticle}  %% if you use PostScript figures in your article  %% use the graphics package for simple commands  \usepackage{graphics}  %% or use the graphicx package for more complicated commands  %% \usepackage{graphicx}  %% or use the epsfig package if you prefer to use the old commands  %% \usepackage{epsfig}  %% The amssymb package provides various useful mathematical symbols  \usepackage{amssymb}  %% The amsthm package provides extended theorem environments  %% \usepackage{amsthm}  %% The lineno packages adds line numbers. Start line numbering with  %% \begin{linenumbers}, end it with \end{linenumbers}. Or switch it on  %% for the whole article with \linenumbers.  \usepackage{lineno}  \usepackage{multirow} %&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&  \usepackage{hhline}% http://ctan.org/pkg/hhline  \usepackage[utf8]{inputenc}  \usepackage{fancyvrb}  \usepackage{hyperref}  \hyphenation{Fire-Signal}  %\journal{Nuclear Physics B}  \journal{Fusion Engineering and Design}  \begin{document}  \begin{frontmatter}  %% Title, authors and addresses  %% use the tnoteref command within \title for footnotes;  %% use the tnotetext command for theassociated footnote;  %% use the fnref command within \author or \address for footnotes;  %% use the fntext command for theassociated footnote;  %% use the corref command within \author for corresponding author footnotes;  %% use the cortext command for theassociated footnote;  %% use the ead command for the email address,  %% and the form \ead[url] for the home page:  %% \title{Title\tnoteref{label1}}  %% \tnotetext[label1]{}  %% \author{Name\corref{cor1}\fnref{label2}}  %% \ead{email address}  %% \ead[url]{home page}  %% \fntext[label2]{}  %% \cortext[cor1]{}  %% \address{Address\fnref{label3}}  %% \fntext[label3]{}  \title{Validation of equilibrium tools on the COMPASS tokamak}  %% use optional labels to link authors explicitly to addresses:  \author[label1]{J.~Urban}  \author[label2]{L.C.~Appel}  \author[label3]{J.F.~Artaud}   \author[label4]{B~Faugeras}   \author[label1,label5]{J.~Havlicek}  \author[label1]{M.~Komm}  \author[label2]{I.~Lupelli}   \author[label1,label5]{M.~Peterka}   % \address[label1]{Institute of Plasma Physics AS CR, v.v.i., Association EURATOM / IPP.CR, Za~Slovankou 3, 182 00 Praha 8, Czech Republic}  \address[label1]{Institute of Plasma Physics AS CR, v.v.i., Za~Slovankou 3, 182 00 Praha 8, Czech Republic}  \address[label2]{CCFE}  \address[label3]{CEA}  \address[label4]{UNice}  \address[label5]{Department of Surface and Plasma Science, Faculty of Mathematics and Physics, Charles University in Prague, V Hole\v{s}ovi\v{c}k\'ach 2, 180~00 Praha 8, Czech Republic}  \input{Abstract.tex}  % \begin{abstract} %% Text of abstract   % Various MHD (magnetohydrodynamic) equilibrium tools, some of which being recently developed or considerably updated, are used on the medium-size COMPASS tokamak [R. Pánek et al., Czech J Phys 56, B125, 2006]. MHD equilibrium is a fundamental property of the tokamak plasma, whose knowledge is required for many diagnostics and modelling tools. Proper benchmarking and validation of equilibrium tools is thus key for interpreting and planning tokamak experiments. We present here benchmarks and comparisons to experimental data of the EFIT++ reconstruction code [L.C. Appel et al., to be submitted to Nucl. Fusion], the free-boundary equilibrium code FREEBIE [J.-F. Artaud, S.H. Kim, EPS 2012, P4.023], and a rapid plasma boundary reconstruction code VacTH [B. Faugeras et al., PPCF 2014, accepted]. We demonstrate that FREEBIE can calculate the equilibrium and corresponding poloidal field (PF) coils currents for given plasma parameters. Both EFIT++ and VacTH can reconstruct equilibria generated by FREEBIE from synthetic diagnostic data (including an artificial noise) and hence might be suitable for real-time control. Optimum reconstruction parameters are estimated; in addition, possible enhancements using more diagnostics are discussed and simulated using synthetic diagnostics. FREEBIE can also calculate the temporal evolution of the poloidal field coils currents for a whole plasma scenario.  % \end{abstract}    \begin{keyword}  %% keywords here, in the form: keyword \sep keyword  tokamak \sep equilibrium \sep COMPASS   %% PACS codes here, in the form: \PACS code \sep code  \PACS 52.55.Fa \sep 07.05.Kf \sep 07.05.Hd   % Tokamaks, spherical tokamaks; Data management; Data acquisition  %\sep ???  %% MSC codes here, in the form: \MSC code \sep code  %% or \MSC[2008] code \sep code (2000 is the default)  \end{keyword}  \end{frontmatter}  % \begin{document}  % \title{Validation of equilibrium tools on the COMPASS tokamak}  % \appendix  % \input{Appendix.tex}  % \section*{References} % (fold)  \bibliographystyle{model1-num-names}  \bibliography{bibliography/biblio}{}  % \bibliographystyle{unsrt}  % \bibliographystyle{abbrvnat}  % \usepackage{natbib}  % \bibliographystyle{chicago}  \end{document}  \endinput           

%%  %% This is file `elsarticle-harv.bst',  %%   %% Copyright 2007, 2008, 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%   %% The list of all files belonging to the 'Elsarticle Bundle' is  %% given in the file `manifest.txt'.  %%   %%  %% $Id: elsarticle-harv.bst 19 2009-12-17 07:07:52Z rishi $  %%  %%  %%-------------------------------------------------------------------  %% This bibliography style file is intended for texts in ENGLISH  %% This is an author-year citation style bibliography. As such, it is  %% non-standard LaTeX, and requires a special package file  %% to function properly.  %% Such a package is natbib.sty by Patrick W. Daly  %% The form of the \bibitem entries is  %% \bibitem[Jones et al.(1990)]{key}...  %% \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...  %% The essential feature is that the label (the part in brackets) consists  %% of the author names, as they should appear in the citation, with the year  %% in parentheses following. There must be no space before the opening  %% parenthesis!  %% With natbib v5.3, a full list of authors may also follow the year.  %% In natbib.sty, it is possible to define the type of enclosures that is  %% really wanted (brackets or parentheses), but in either case, there must  %% be parentheses in the label.  %% The \cite command functions as follows:  %% \citet{key} ==>> Jones et al. (1990)  %% \citet*{key} ==>> Jones, Baker, and Smith (1990)  %% \citep{key} ==>> (Jones et al., 1990)  %% \citep*{key} ==>> (Jones, Baker, and Smith, 1990)  %% \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)  %% \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)  %% \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)  %% \citeauthor{key} ==>> Jones et al.  %% \citeauthor*{key} ==>> Jones, Baker, and Smith  %% \citeyear{key} ==>> 1990  %%---------------------------------------------------------------------  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  url  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t }  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  %%SP 2003/07/25  %% No longer used  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  new.sentence  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { skip$ }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  %% Here are the language-specific definitions for explicit words.  %% Each function has a name bbl.xxx where xxx is the English word.  %% The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "Eds." }  FUNCTION {bbl.editor}  { "Ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "Edition" }  FUNCTION {bbl.volume}  { "Vol." }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "no." }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "Ch." }  FUNCTION {bbl.techrep}  { "Tech. Rep." }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  FUNCTION {bbl.first}  { "1st" }  FUNCTION {bbl.second}  { "2nd" }  FUNCTION {bbl.third}  { "3rd" }  FUNCTION {bbl.fourth}  { "4th" }  FUNCTION {bbl.fifth}  { "5th" }  FUNCTION {bbl.st}  { "st" }  FUNCTION {bbl.nd}  { "nd" }  FUNCTION {bbl.rd}  { "rd" }  FUNCTION {bbl.th}  { "th" }  MACRO {jan} {"Jan."}  MACRO {feb} {"Feb."}  MACRO {mar} {"Mar."}  MACRO {apr} {"Apr."}  MACRO {may} {"May"}  MACRO {jun} {"Jun."}  MACRO {jul} {"Jul."}  MACRO {aug} {"Aug."}  MACRO {sep} {"Sep."}  MACRO {oct} {"Oct."}  MACRO {nov} {"Nov."}  MACRO {dec} {"Dec."}  FUNCTION {eng.ord}  { duplicate$ "1" swap$ *  #-2 #1 substring$ "1" =  { bbl.th * }  { duplicate$ #-1 #1 substring$  duplicate$ "1" =  { pop$ bbl.st * }  { duplicate$ "2" =  { pop$ bbl.nd * }  { "3" =  { bbl.rd * }  { bbl.th * }  if$  }  if$  }  if$  }  if$  }  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Softw. Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Programming"}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Gr."}  MACRO {toms} {"ACM Trans. Math. Softw."}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}  MACRO {tcs} {"Theoretical Comput. Sci."}  FUNCTION {write.url}  { url empty$  { skip$ }  { "\newline\urlprefix\url{" url * "}" * write$ newline$ }  if$  }  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 's :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{, jj}{, f.}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {format.names.ed}  { format.names }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author empty$  { "" }  { author format.names }  if$  }  FUNCTION {format.editors}  { editor empty$  { "" }  { editor format.names  editor num.names$ #1 >  { " (" * bbl.editors * ")" * }  { " (" * bbl.editor * ")" * }  if$  }  if$  }  FUNCTION {format.in.editors}  { editor empty$  { "" }  { editor format.names.ed  editor num.names$ #1 >  { " (" * bbl.editors * ")" * }  { " (" * bbl.editor * ")" * }  if$  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ *  }  if$  }  FUNCTION {format.title}  { title empty$  { "" }  { title "t" change.case$  }  if$  }  FUNCTION {format.full.names}  {'s :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  numnames #2 >  { "," * }  'skip$  if$  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in capitalize  ":" *  " " * }  FUNCTION {format.date}  { year duplicate$ empty$  { "empty year in " cite$ * "; set to ????" * warning$  pop$ "????" }  'skip$  if$  month empty$  'skip$  { month  " " * swap$ *  }  if$  extra.label *  before.all 'output.state :=  ", " swap$ *  }  FUNCTION {format.btitle}  { title  }  FUNCTION {tie.or.space.connect}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$ * *  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.connect  series empty$  'skip$  { bbl.of space.word * series emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.connect  series empty$  { "there's a number but no series in " cite$ * warning$ }  { bbl.in space.word * series * }  if$  }  if$  }  { "" }  if$  }  FUNCTION {is.num}  { chr.to.int$  duplicate$ "0" chr.to.int$ < not  swap$ "9" chr.to.int$ > not and  }  FUNCTION {extract.num}  { duplicate$ 't :=  "" 's :=  { t empty$ not }  { t #1 #1 substring$  t #2 global.max$ substring$ 't :=  duplicate$ is.num  { s swap$ * 's := }  { pop$ "" 't := }  if$  }  while$  s empty$  'skip$  { pop$ s }  if$  }  FUNCTION {convert.edition}  { edition extract.num "l" change.case$ 's :=  s "first" = s "1" = or  { bbl.first 't := }  { s "second" = s "2" = or  { bbl.second 't := }  { s "third" = s "3" = or  { bbl.third 't := }  { s "fourth" = s "4" = or  { bbl.fourth 't := }  { s "fifth" = s "5" = or  { bbl.fifth 't := }  { s #1 #1 substring$ is.num  { s eng.ord 't := }  { edition 't := }  if$  }  if$  }  if$  }  if$  }  if$  }  if$  t  }  FUNCTION {format.edition}  { edition empty$  { "" }  { output.state mid.sentence =  { convert.edition "l" change.case$ " " * bbl.edition * }  { convert.edition "t" change.case$ " " * bbl.edition * }  if$  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages empty$  { "" }  { pages multi.page.check  { bbl.pages pages n.dashify tie.or.space.connect }  { bbl.page pages tie.or.space.connect }  if$  }  if$  }  FUNCTION {format.journal.pages}  { pages empty$  'skip$  { duplicate$ empty$  { pop$ format.pages }  {  ", " *  pages n.dashify *  }  if$  }  if$  }  %%SP 2001/01/23  %% Only used in articles  FUNCTION {format.vol.num.pages}  {  %%SP 2001/01/23  %% Add the leading space only if there is a volume  %% volume field.or.null  " "  volume empty$  { pop$ "" }  { volume * }  if$  number empty$  'skip$  {  "~(" number * ")" * *  volume empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  }  if$  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$ }  if$  chapter tie.or.space.connect  }  if$  }  FUNCTION {format.in.ed.booktitle}  { booktitle empty$  { "" }  { editor empty$  { word.in booktitle * }  { word.in format.in.editors * ", " *  booktitle * }  if$  }  if$  }  FUNCTION {format.thesis.type}  { type empty$  'skip$  { pop$  type "t" change.case$  }  if$  }  FUNCTION {format.tr.number}  { type empty$  { bbl.techrep }  'type  if$  number empty$  { "t" change.case$ }  { number tie.or.space.connect }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  word.in  }  { bbl.volume capitalize  volume tie.or.space.connect  bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  t empty$  { address empty$  'skip$  { address * }  if$  }  { t *  address empty$  'skip$  { ", " * address * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher empty$  { "empty publisher in " cite$ * warning$  ""  }  { publisher }  if$  format.org.or.pub  }  FUNCTION {format.organization.address}  { organization empty$  { "" }  { organization }  if$  format.org.or.pub  }  FUNCTION {article}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  crossref missing$  { journal  "journal" output.check  %%SP 2001/01/23  %% Add the space in format.vol.num.pages  %% add.blank  before.all 'output.state :=  format.vol.num.pages output  }  { format.article.crossref output.nonnull  format.pages output  }  if$  format.journal.pages  format.note output  fin.entry  write.url  }  FUNCTION {book}  { output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.date "year" output.check  date.block  format.btitle "title" output.check  crossref missing$  { format.edition output  new.sentence  format.bvolume output  format.number.series output  new.sentence  format.publisher.address output  }  {  new.sentence  format.book.crossref output.nonnull  }  if$  format.note output  fin.entry  write.url  }  FUNCTION {booklet}  { output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  howpublished output  address output  format.note output  fin.entry  write.url  }  FUNCTION {inbook}  { output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.date "year" output.check  date.block  format.btitle "title" output.check  crossref missing$  {  format.edition output  new.sentence  format.bvolume output  format.number.series output  new.sentence  format.publisher.address output  format.chapter.pages "chapter and pages" output.check  }  {  format.chapter.pages "chapter and pages" output.check  new.sentence  format.book.crossref output.nonnull  }  if$  format.pages "pages" output.check  format.note output  fin.entry  write.url  }  FUNCTION {incollection}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.edition output  new.sentence  format.bvolume output  format.number.series output  new.sentence  format.publisher.address output  format.chapter.pages output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.pages "pages" output.check  format.note output  fin.entry  write.url  }  FUNCTION {inproceedings}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.edition output  new.sentence  format.bvolume output  format.number.series output  new.sentence  publisher empty$  { format.organization.address output }  { organization output  format.publisher.address output  }  if$  %%SP 2001/01/23  %% format.pages output  }  { format.incoll.inproc.crossref output.nonnull  %%SP 2001/01/23  %% format.pages output  }  if$  %%SP 2001/01/23  format.pages "pages" output.check  format.note output  fin.entry  write.url  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.btitle "title" output.check  new.sentence  organization output  address output  format.edition output  format.note output  fin.entry  write.url  }  FUNCTION {mastersthesis}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  bbl.mthesis format.thesis.type output.nonnull  school "school" output.check  address output  format.note output  fin.entry  write.url  }  FUNCTION {misc}  { output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.title output  new.sentence  howpublished output  format.note output  fin.entry  write.url  }  FUNCTION {phdthesis}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  bbl.phdthesis format.thesis.type output.nonnull  school "school" output.check  address output  format.note output  fin.entry  write.url  }  FUNCTION {proceedings}  { output.bibitem  format.editors output  editor format.key output  format.date "year" output.check  date.block  format.btitle "title" output.check  new.sentence  format.bvolume output  format.number.series output  new.sentence  publisher empty$  { format.organization.address output }  { organization output  format.publisher.address output  }  if$  format.note output  fin.entry  write.url  }  FUNCTION {techreport}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.sentence  format.tr.number output.nonnull  institution "institution" output.check  address output  format.note output  fin.entry  write.url  }  FUNCTION {unpublished}  { output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  format.note "note" output.check  fin.entry  write.url  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  'skip$  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\expandafter\ifx\csname url\endcsname\relax"  write$ newline$  " \def\url#1{\texttt{#1}}\fi"  write$ newline$  "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `elsarticle-harv.bst'.           

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

%%  %% This is file `elsarticle-num.bst',  %%   %% Copyright 2007, 2008, 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%   %% The list of all files belonging to the 'Elsarticle Bundle' is  %% given in the file `manifest.txt'.  %%   %%  %% $Id: elsarticle-num.bst 19 2009-12-17 07:07:52Z rishi $  %%  %%  %% ----------------------------------------  %%  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  eprint % urlbst  doi % urlbst  url % urlbst  lastchecked % urlbst  }  {}  { label }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl openinlinelink closeinlinelink } % urlbst...  INTEGERS { hrefform inlinelinks makeinlinelink addeprints adddoiresolver }  FUNCTION {init.urlbst.variables}  {  "Available from: " 'urlintro := % prefix before URL  "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref  "arXiv:" 'eprintprefix := % text prefix printed before eprint ref  "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI  "doi:" 'doiprefix := % text prefix printed before DOI ref  #1 'addeprints := % 0=no eprints; 1=include eprints  #1 'adddoiresolver := % 0=no DOI resolver; 1=include it  #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs  #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles  % the following are internal state variables, not config constants  #0 'makeinlinelink := % state variable managed by setup.inlinelink  "" 'openinlinelink := % ditto  "" 'closeinlinelink := % ditto  }  INTEGERS {  bracket.state  outside.brackets  open.brackets  within.brackets  close.brackets  }  FUNCTION {init.state.consts}  { #0 'outside.brackets := % urlbst  #1 'open.brackets :=  #2 'within.brackets :=  #3 'close.brackets :=  #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t }  FUNCTION {output.nonnull.original}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {setup.inlinelink}  { makeinlinelink  { hrefform #1 = % hypertex  { "\special {html: }{" * 'openinlinelink :=  "\special {html:}" 'closeinlinelink :=  }  { hrefform #2 = % hyperref  { "\href{" url * "}{" * 'openinlinelink :=  "}" 'closeinlinelink :=  }  'skip$  if$ % hrefform #2 =  }  if$ % hrefform #1 =  #0 'makeinlinelink :=  }  'skip$  if$ % makeinlinelink  }  FUNCTION {add.inlinelink}  { openinlinelink empty$  'skip$  { openinlinelink swap$ * closeinlinelink *  "" 'openinlinelink :=  }  if$  }  FUNCTION {output.nonnull}  { % Save the thing we've been asked to output  's :=  % If the bracket-state is close.brackets, then add a close-bracket to  % what is currently at the top of the stack, and set bracket.state  % to outside.brackets  bracket.state close.brackets =  { "]" *  outside.brackets 'bracket.state :=  }  'skip$  if$  bracket.state outside.brackets =  { % We're outside all brackets -- this is the normal situation.  % Write out what's currently at the top of the stack, using the  % original output.nonnull function.  s  add.inlinelink  output.nonnull.original % invoke the original output.nonnull  }  { % Still in brackets. Add open-bracket or (continuation) comma, add the  % new text (in s) to the top of the stack, and move to the close-brackets  % state, ready for next time (unless inbrackets resets it). If we come  % into this branch, then output.state is carefully undisturbed.  bracket.state open.brackets =  { " [" * }  { ", " * } % bracket.state will be within.brackets  if$  s *  close.brackets 'bracket.state :=  }  if$  }  FUNCTION {inbrackets}  { bracket.state close.brackets =  { within.brackets 'bracket.state := } % reset the state: not open nor closed  { open.brackets 'bracket.state := }  if$  }  FUNCTION {format.lastchecked}  { lastchecked empty$  { "" }  { inbrackets "cited " lastchecked * }  if$  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry.original}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  add.blank  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checka}  { empty$  'skip$  'new.block  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {new.sentence.checka}  { empty$  'skip$  'new.sentence  if$  }  FUNCTION {new.sentence.checkb}  { empty$  swap$ empty$  and  'skip$  'new.sentence  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { skip$ }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "Eds." }  FUNCTION {bbl.editor}  { "Ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "Edition" }  FUNCTION {bbl.volume}  { "Vol." }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "no." }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "Ch." }  FUNCTION {bbl.techrep}  { "Tech. Rep." }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  FUNCTION {bbl.first}  { "1st" }  FUNCTION {bbl.second}  { "2nd" }  FUNCTION {bbl.third}  { "3rd" }  FUNCTION {bbl.fourth}  { "4th" }  FUNCTION {bbl.fifth}  { "5th" }  FUNCTION {bbl.st}  { "st" }  FUNCTION {bbl.nd}  { "nd" }  FUNCTION {bbl.rd}  { "rd" }  FUNCTION {bbl.th}  { "th" }  MACRO {jan} {"Jan."}  MACRO {feb} {"Feb."}  MACRO {mar} {"Mar."}  MACRO {apr} {"Apr."}  MACRO {may} {"May"}  MACRO {jun} {"Jun."}  MACRO {jul} {"Jul."}  MACRO {aug} {"Aug."}  MACRO {sep} {"Sep."}  MACRO {oct} {"Oct."}  MACRO {nov} {"Nov."}  MACRO {dec} {"Dec."}  FUNCTION {eng.ord}  { duplicate$ "1" swap$ *  #-2 #1 substring$ "1" =  { bbl.th * }  { duplicate$ #-1 #1 substring$  duplicate$ "1" =  { pop$ bbl.st * }  { duplicate$ "2" =  { pop$ bbl.nd * }  { "3" =  { bbl.rd * }  { bbl.th * }  if$  }  if$  }  if$  }  if$  }  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Softw. Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Programming"}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Gr."}  MACRO {toms} {"ACM Trans. Math. Softw."}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}  MACRO {tcs} {"Theoretical Comput. Sci."}  FUNCTION {write.url}  { url empty$  { skip$ }  { "\newline\urlprefix\url{" url * "}" * write$ newline$ }  if$  }  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 's :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{f.~}{vv~}{ll}{, jj}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {format.names.ed}  { format.names }  FUNCTION {format.authors}  { author empty$  { "" }  { author format.names }  if$  }  FUNCTION {format.editors}  { editor empty$  { "" }  { editor format.names  editor num.names$ #1 >  { " (" * bbl.editors * ")" * }  { " (" * bbl.editor * ")" * }  if$  }  if$  }  FUNCTION {format.in.editors}  { editor empty$  { "" }  { editor format.names.ed  editor num.names$ #1 >  { " (" * bbl.editors * ")" * }  { " (" * bbl.editor * ")" * }  if$  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ *  }  if$  }  FUNCTION {format.title}  { title empty$  { "" }  { title "t" change.case$  }  if$  }  FUNCTION {output.bibitem.original}  { newline$  "\bibitem{" write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in  ":" *  " " * }  FUNCTION {format.date}  { year empty$  { month empty$  { "" }  { "there's a month but no year in " cite$ * warning$  month  }  if$  }  { month empty$  'year  { month " " * year * }  if$  }  if$  duplicate$ empty$  'skip$  {  before.all 'output.state :=  " (" swap$ * ")" *  }  if$  }  FUNCTION{format.year}  { year duplicate$ empty$  { "empty year in " cite$ * warning$ pop$ "" }  { "(" swap$ * ")" * }  if$  }  FUNCTION {format.btitle}  { title  }  FUNCTION {tie.or.space.connect}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$ * *  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.connect  series empty$  'skip$  { bbl.of space.word * series emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.connect  series empty$  { "there's a number but no series in " cite$ * warning$ }  { bbl.in space.word * series * }  if$  }  if$  }  { "" }  if$  }  FUNCTION {is.num}  { chr.to.int$  duplicate$ "0" chr.to.int$ < not  swap$ "9" chr.to.int$ > not and  }  FUNCTION {extract.num}  { duplicate$ 't :=  "" 's :=  { t empty$ not }  { t #1 #1 substring$  t #2 global.max$ substring$ 't :=  duplicate$ is.num  { s swap$ * 's := }  { pop$ "" 't := }  if$  }  while$  s empty$  'skip$  { pop$ s }  if$  }  FUNCTION {convert.edition}  { edition extract.num "l" change.case$ 's :=  s "first" = s "1" = or  { bbl.first 't := }  { s "second" = s "2" = or  { bbl.second 't := }  { s "third" = s "3" = or  { bbl.third 't := }  { s "fourth" = s "4" = or  { bbl.fourth 't := }  { s "fifth" = s "5" = or  { bbl.fifth 't := }  { s #1 #1 substring$ is.num  { s eng.ord 't := }  { edition 't := }  if$  }  if$  }  if$  }  if$  }  if$  }  if$  t  }  FUNCTION {format.edition}  { edition empty$  { "" }  { output.state mid.sentence =  { convert.edition "l" change.case$ " " * bbl.edition * }  { convert.edition "t" change.case$ " " * bbl.edition * }  if$  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages empty$  { "" }  { pages multi.page.check  { bbl.pages pages n.dashify tie.or.space.connect }  { bbl.page pages tie.or.space.connect }  if$  }  if$  }  FUNCTION {format.journal.pages}  { pages empty$  'skip$  { duplicate$ empty$  { pop$ format.pages }  {  " " *  format.year * " " *  pages n.dashify *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  {  % volume field.or.null  " "  volume empty$  { pop$ "" }  { volume * }  if$  number empty$  'skip$  {  "~(" number * ")" * *  volume empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  }  if$  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$ }  if$  chapter tie.or.space.connect  }  if$  }  FUNCTION {format.in.ed.booktitle}  { booktitle empty$  { "" }  { editor empty$  { word.in booktitle * }  { word.in format.in.editors * ", " *  booktitle * }  if$  }  if$  }  FUNCTION {empty.misc.check}  { author empty$ title empty$ howpublished empty$  month empty$ year empty$ note empty$  and and and and and  { "all relevant fields are empty in " cite$ * warning$ }  'skip$  if$  }  FUNCTION {format.thesis.type}  { type empty$  'skip$  { pop$  type "t" change.case$  }  if$  }  FUNCTION {format.tr.number}  { type empty$  { bbl.techrep }  'type  if$  number empty$  { "t" change.case$ }  { number tie.or.space.connect }  if$  }  FUNCTION {format.article.crossref}  {  key empty$  { journal empty$  { "need key or journal for " cite$ * " to crossref " * crossref *  warning$  ""  }  { word.in journal emphasize * }  if$  }  { word.in key * " " *}  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.crossref.editor}  { editor #1 "{vv~}{ll}" format.name$  editor num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {format.book.crossref}  { volume empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  word.in  }  { bbl.volume volume tie.or.space.connect  bbl.of space.word *  }  if$  editor empty$  editor field.or.null author field.or.null =  or  { key empty$  { series empty$  { "need editor, key, or series for " cite$ * " to crossref " *  crossref * warning$  "" *  }  { series emphasize * }  if$  }  { key * }  if$  }  { format.crossref.editor * }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  editor empty$  editor field.or.null author field.or.null =  or  { key empty$  { booktitle empty$  { "need editor, key, or booktitle for " cite$ * " to crossref " *  crossref * warning$  ""  }  { word.in booktitle * }  if$  }  { word.in key * " " *}  if$  }  { word.in format.crossref.editor * " " *}  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  year empty$  { "empty year in " cite$ * warning$ }  'skip$  if$  address empty$ t empty$ and  year empty$ and  'skip$  {  t empty$  { address empty$  'skip$  { address * }  if$  }  { t *  address empty$  'skip$  { ", " * address * }  if$  }  if$  year empty$  'skip$  { t empty$ address empty$ and  'skip$  { ", " * }  if$  year *  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher empty$  { "empty publisher in " cite$ * warning$  ""  }  { publisher }  if$  format.org.or.pub  }  FUNCTION {format.organization.address}  { organization empty$  { "" }  { organization }  if$  format.org.or.pub  }  FUNCTION {make.href.null}  {  pop$  }  FUNCTION {make.href.hypertex}  {  "\special {html: }" * swap$ *  "\special {html:}" *  }  FUNCTION {make.href.hyperref}  {  "\href {" swap$ * "} {\path{" * swap$ * "}}" *  }  FUNCTION {make.href}  { hrefform #2 =  'make.href.hyperref % hrefform = 2  { hrefform #1 =  'make.href.hypertex % hrefform = 1  'make.href.null % hrefform = 0 (or anything else)  if$  }  if$  }  FUNCTION {format.url}  { inlinelinks #1 = url empty$ or  { "" }  { hrefform #1 =  { % special case -- add HyperTeX specials  urlintro "\url{" url * "}" * url make.href.hypertex * }  { urlintro "\url{" * url * "}" * }  if$  }  if$  }  FUNCTION {format.eprint}  { eprint empty$  { "" }  { eprintprefix eprint * eprinturl eprint * make.href }  if$  }  FUNCTION {format.doi}  { doi empty$  { "" }  { doiprefix doi * doiurl doi * make.href }  if$  }  FUNCTION {output.url}  { url empty$  'skip$  { new.block  format.url output  format.lastchecked output  }  if$  }  FUNCTION {output.web.refs}  {  new.block  output.url  addeprints eprint empty$ not and  { format.eprint output.nonnull }  'skip$  if$  adddoiresolver doi empty$ not and  { format.doi output.nonnull }  'skip$  if$  }  FUNCTION {output.bibitem}  { outside.brackets 'bracket.state :=  output.bibitem.original  inlinelinks url empty$ not and  { #1 'makeinlinelink := }  { #0 'makeinlinelink := }  if$  }  FUNCTION {fin.entry}  { output.web.refs % urlbst  makeinlinelink % ooops, it appears we didn't have a title for inlinelink  { setup.inlinelink % add some artificial link text here, as a fallback  "[link]" output.nonnull }  'skip$  if$  bracket.state close.brackets = % urlbst  { "]" * }  'skip$  if$  fin.entry.original  }  FUNCTION {webpage}  { output.bibitem  author empty$  { editor empty$  'skip$ % author and editor both optional  { format.editors output.nonnull }  if$  }  { editor empty$  { format.authors output.nonnull }  { "can't use both author and editor fields in " cite$ * warning$ }  if$  }  if$  new.block  title empty$ 'skip$ 'setup.inlinelink if$  format.title "title" output.check  inbrackets "online" output  new.block  year empty$  'skip$  { format.date "year" output.check }  if$  % We don't need to output the URL details ('lastchecked' and 'url'),  % because fin.entry does that for us, using output.web.refs. The only  % reason we would want to put them here is if we were to decide that  % they should go in front of the rather miscellaneous information in 'note'.  new.block  note output  fin.entry  }  FUNCTION {article}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  crossref missing$  { journal  "journal" output.check  % add.blank  before.all 'output.state :=  format.vol.num.pages output  }  { format.article.crossref output.nonnull  format.pages output  }  if$  format.journal.pages  format.note output  fin.entry  write.url  }  FUNCTION {book}  { output.bibitem  author empty$  { format.editors "author and editor" output.check  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.btitle "title" output.check  crossref missing$  { format.edition output  format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.note output  fin.entry  write.url  }  FUNCTION {booklet}  { output.bibitem  format.authors output  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  howpublished output  address output  format.note output  format.date output  fin.entry  write.url  }  FUNCTION {inbook}  { output.bibitem  author empty$  { format.editors "author and editor" output.check  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.btitle "title" output.check  crossref missing$  {  format.edition output  format.bvolume output  format.number.series output  format.publisher.address output  format.chapter.pages "chapter and pages" output.check  }  {  format.chapter.pages "chapter and pages" output.check  format.book.crossref output.nonnull  }  if$  format.pages "pages" output.check  format.note output  fin.entry  write.url  }  FUNCTION {incollection}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.edition output  format.bvolume output  format.number.series output  format.publisher.address output  format.chapter.pages output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.pages "pages" output.check  format.note output  fin.entry  write.url  }  FUNCTION {inproceedings}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.edition output  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization output  format.publisher.address output  }  if$  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  format.note output  fin.entry  write.url  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { output.bibitem  author empty$  { organization empty$  'skip$  { organization output.nonnull  address output  }  if$  }  { format.authors output.nonnull }  if$  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.btitle "title" output.check  author empty$  { organization empty$  {  address output  }  'skip$  if$  }  {  organization output  address output  }  if$  format.edition output  format.note output  format.date output  fin.entry  write.url  }  FUNCTION {mastersthesis}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  bbl.mthesis format.thesis.type output.nonnull  school "school" output.check  address output  format.note output  format.date "year" output.check  fin.entry  write.url  }  FUNCTION {misc}  { output.bibitem  format.authors output  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title output  howpublished output  format.note output  format.date output  fin.entry  write.url  empty.misc.check  }  FUNCTION {phdthesis}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  bbl.phdthesis format.thesis.type output.nonnull  school "school" output.check  address output  format.note output  format.date "year" output.check  fin.entry  write.url  }  FUNCTION {proceedings}  { output.bibitem  editor empty$  { organization output }  { format.editors output.nonnull }  if$  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.btitle "title" output.check  format.bvolume output  format.number.series output  editor empty$  { publisher empty$  'skip$  {  format.publisher.address output  }  if$  }  { publisher empty$  {  format.organization.address output }  {  organization output  format.publisher.address output  }  if$  }  if$  format.note output  fin.entry  write.url  }  FUNCTION {techreport}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  format.tr.number output.nonnull  institution "institution" output.check  address output  format.note output  format.date "year" output.check  fin.entry  write.url  }  FUNCTION {unpublished}  { output.bibitem  format.authors "author" output.check  title empty$ 'skip$ 'setup.inlinelink if$ % urlbst  format.title "title" output.check  format.note "note" output.check  format.date output  fin.entry  write.url  }  FUNCTION {default.type} { misc }  READ  STRINGS { longest.label }  INTEGERS { number.label longest.label.width }  FUNCTION {initialize.longest.label}  { "" 'longest.label :=  #1 'number.label :=  #0 'longest.label.width :=  }  FUNCTION {longest.label.pass}  { number.label int.to.str$ 'label :=  number.label #1 + 'number.label :=  label width$ longest.label.width >  { label 'longest.label :=  label width$ 'longest.label.width :=  }  'skip$  if$  }  EXECUTE {initialize.longest.label}  ITERATE {longest.label.pass}  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" longest.label * "}" *  write$ newline$  "\expandafter\ifx\csname url\endcsname\relax"  write$ newline$  " \def\url#1{\texttt{#1}}\fi"  write$ newline$  "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi"  write$ newline$  "\expandafter\ifx\csname href\endcsname\relax"  write$ newline$  " \def\href#1#2{#2} \def\path#1{#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.urlbst.variables}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `elsarticle-num.bst'.           

%%  %% This is file `elsarticle.cls',  %% generated with the docstrip utility.  %%  %% The original source files were:  %%  %% elsarticle.dtx (with options: `class')  %%   %% Copyright 2007, 2008, 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% -------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%   %% The list of all files belonging to the 'Elsarticle Bundle' is  %% given in the file `manifest.txt'.  %%   %%  %% $Id: elsarticle.dtx 19 2009-12-17 07:07:52Z rishi $  %%  \def\RCSfile{elsarticle}%  \def\RCSversion{1.20b}%  \def\RCSdate{2009/09/17}%  \def\@shortjnl{\relax}  \def\@journal{Elsevier Ltd} \def\@company{Elsevier Ltd}  \def\@issn{000-0000}  \def\@shortjid{elsarticle}  \NeedsTeXFormat{LaTeX2e}[1995/12/01]  \ProvidesClass{\@shortjid}[\RCSdate, \RCSversion: \@journal]  \def\ABD{\AtBeginDocument}  \newif\ifpreprint \preprintfalse  \newif\iflongmktitle \longmktitlefalse  \def\@blstr{1}  \newdimen\@bls  \@bls=\baselineskip  \def\@finalWarning{%  *****************************************************\MessageBreak  This document is typeset in the CRC style which\MessageBreak  is not suitable for submission.\MessageBreak  \MessageBreak  Please typeset again using 'preprint' option\MessageBreak  for creating PDF suitable for submission.\MessageBreak  ******************************************************\MessageBreak  }  \DeclareOption{preprint}{\global\preprinttrue  \gdef\@blstr{1}\xdef\jtype{0}%  \AtBeginDocument{\@twosidefalse\@mparswitchfalse}}  \DeclareOption{final}{\gdef\@blstr{1}\global\preprintfalse}  \DeclareOption{review}{\global\preprinttrue\gdef\@blstr{1.5}}  \DeclareOption{authoryear}{\xdef\@biboptions{round,authoryear}}  \DeclareOption{number}{\xdef\@biboptions{numbers}}  \DeclareOption{numbers}{\xdef\@biboptions{numbers}}  \DeclareOption{longtitle}{\global\longmktitletrue}  \DeclareOption{5p}{\xdef\jtype{5}\global\preprintfalse  \ExecuteOptions{twocolumn}}  \def\jtype{0}  \DeclareOption{3p}{\xdef\jtype{3}\global\preprintfalse}  \DeclareOption{1p}{\xdef\jtype{1}\global\preprintfalse  \AtBeginDocument{\@twocolumnfalse}}  \DeclareOption{times}{\IfFileExists{txfonts.sty}%  {\AtEndOfClass{\RequirePackage{txfonts}%  \gdef\ttdefault{cmtt}%  \let\iint\relax  \let\iiint\relax  \let\iiiint\relax  \let\idotsint\relax  \let\openbox\relax}}{\RequirePackage{times}}}  \ExecuteOptions{a4paper,10pt,oneside,onecolumn,number,preprint}  \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}  \ProcessOptions  \LoadClass{article}  \RequirePackage{graphicx}  \let\comma\@empty  \let\tnotesep\@empty  \def\title#1{\gdef\@title{#1}}  \let\@title\@empty  \def\elsLabel#1{\@bsphack\protected@write\@auxout{}%  {\string\Newlabel{#1}{\@currentlabel}}\@esphack}  \def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}  \def\elsRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}%  }  \def\tnotemark[#1]{\textsuperscript{\@for\@@tmark:=#1\do{%  \edef\tnotenum{\@ifundefined{X@\@@tmark}{1}{\elsRef{\@@tmark}}}%  \ifcase\tnotenum\or\ding{73}\or,\ding{73}\ding{73}\fi}}%  }  \let\@tnotemark\@empty  \let\@tnotes\@empty  \RequirePackage{pifont}  \newcounter{tnote}  \def\tnotetext[#1]#2{\g@addto@macro\@tnotes{%  \refstepcounter{tnote}\elsLabel{#1}%  \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}%  \footnotetext{#2}}}  \let\@nonumnotes\@empty  \def\nonumnote#1{\g@addto@macro\@nonumnotes{%  \let\thefootnote\relax\footnotetext{#1}}}  \newcounter{fnote}  \def\fnmark[#1]{\let\comma\@empty  \def\@fnmark{\@for\@@fnmark:=#1\do{%  \edef\fnotenum{\@ifundefined{X@\@@fnmark}{1}{\elsRef{\@@fnmark}}}%  \unskip\comma\fnotenum\let\comma,}}%  }  \let\@fnotes\@empty\let\@fnmark\@empty  \def\fntext[#1]#2{\g@addto@macro\@fnotes{%  \refstepcounter{fnote}\elsLabel{#1}%  \def\thefootnote{\thefnote}%  \global\setcounter{footnote}{\thefnote}%  \footnotetext{#2}}}  \def\cormark[#1]{\edef\cnotenum{\elsRef{#1}}%  \unskip\textsuperscript{\sep\ifcase\cnotenum\or  $\ast$\or$\ast\ast$\fi\hspace{-1pt}}\let\sep=,}  \let\@cormark\@empty  \let\@cornotes\@empty  \newcounter{cnote}  \def\cortext[#1]#2{\g@addto@macro\@cornotes{%  \refstepcounter{cnote}\elsLabel{#1}%  \def\thefootnote{\ifcase\thecnote\or$\ast$\or  $\ast\ast$\fi}%  \footnotetext{#2}}}  \let\@corref\@empty  \def\corref#1{\edef\cnotenum{\elsRef{#1}}%  \edef\@corref{\ifcase\cnotenum\or  $\ast$\or$\ast\ast$\fi\hskip-1pt}}  \def\fnref#1{\fnmark[#1]}  \def\tnoteref#1{\tnotemark[#1]}  \def\resetTitleCounters{\c@cnote=0  \c@fnote=0 \c@tnote=0 \c@footnote=0}  \let\eadsep\@empty  \let\@elseads\@empty  \let\@elsuads\@empty  \let\@cormark\@empty  \def\hashchar{\expandafter\@gobble\string\~}  \def\underscorechar{\expandafter\@gobble\string\_}  \def\lbracechar{\expandafter\@gobble\string\{}  \def\rbracechar{\expandafter\@gobble\string\}}  \def\ead{\@ifnextchar[{\@uad}{\@ead}}  \gdef\@ead#1{\bgroup\def\_{\string\underscorechar\space}%  \def\{{\string\lbracechar\space}%  \def~{\hashchar\space}%  \def\}{\string\rbracechar\space}%  \edef\tmp{\the\@eadauthor}  \immediate\write\@auxout{\string\emailauthor  {#1}{\expandafter\strip@prefix\meaning\tmp}}%  \egroup  }  \newcounter{ead}  \gdef\emailauthor#1#2{\stepcounter{ead}%  \g@addto@macro\@elseads{\raggedright%  \let\corref\@gobble  \eadsep\texttt{#1} (#2)\def\eadsep{\unskip,\space}}%  }  \gdef\@uad[#1]#2{\bgroup  \def~{\string\hashchar\space}%  \def\_{\string\underscorechar\space}%  \edef\tmp{\the\@eadauthor}  \immediate\write\@auxout{\string\urlauthor  {#2}{\expandafter\strip@prefix\meaning\tmp}}%  \egroup  }  \def\urlauthor#1#2{\g@addto@macro\@elsuads{\let\corref\@gobble%  \raggedright\eadsep\texttt{#1}\space(#2)%  \def\eadsep{\unskip,\space}}%  }  \def\elsauthors{}  \def\pprinttitle{}  \let\authorsep\@empty  \let\sep\@empty  \newcounter{author}  \def\author{\@ifnextchar[{\@@author}{\@author}}  \newtoks\@eadauthor  \def\@@author[#1]#2{\g@addto@macro\elsauthors{%  \def\baselinestretch{1}%  \authorsep#2\unskip\textsuperscript{%#1%  \@for\@@affmark:=#1\do{%  \edef\affnum{\@ifundefined{X@\@@affmark}{1}{\elsRef{\@@affmark}}}%  \unskip\sep\affnum\let\sep=,}%  \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi  \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi  }%  \def\authorsep{\unskip,\space}%  \global\let\sep\@empty\global\let\@corref\@empty  \global\let\@fnmark\@empty}%  \@eadauthor={#2}  }  \def\@author#1{\g@addto@macro\elsauthors{\normalsize%  \def\baselinestretch{1}%  \upshape\authorsep#1\unskip\textsuperscript{%  \ifx\@fnmark\@empty\else\unskip\sep\@fnmark\let\sep=,\fi  \ifx\@corref\@empty\else\unskip\sep\@corref\let\sep=,\fi  }%  \def\authorsep{\unskip,\space}%  \global\let\@fnmark\@empty  \global\let\@corref\@empty  \global\let\sep\@empty}%  \@eadauthor={#1}  }  \def\elsaddress{}  \def\addsep{\par\vskip6pt}  \def\address{\@ifnextchar[{\@@address}{\@address}}  \def\@alph#1{%  \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or  l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or  y\or z%  \or aa\or ab\or ac\or ad\or ae\or af\or ag\or ah\or ai\or aj\or  ak\or al\or am\or an\or ao\or ap\or aq\or ar\or as\or at\or au\or  av\or aw\or ax\or ay\or az%  \or ba\or bb\or bc\or bd\or be\or bf\or bg\or bh\or bi\or bj\or  bk\or bl\or bm\or bn\or bo\or bp\or bq\or br\or bs\or bt\or bu\or  bv\or bw\or bx\or by\or bz%  \or ca\or cb\or cc\or cd\or ce\or cf\or cg\or ch\or ci\or cj\or  ck\or cl\or cm\or cn\or co\or cp\or cq\or cr\or cs\or ct\or cu\or  cv\or cw\or cx\or cy\or cz%  \or da\or db\or dc\or dd\or de\or df\or dg\or dh\or di\or dj\or  dk\or dl\or dm\or dn\or do\or dp\or dq\or dr\or ds\or dt\or du\or  dv\or dw\or dx\or dy\or dz%  \or ea\or eb\or ec\or ed\or ee\or ef\or eg\or eh\or ei\or ej\or  ek\or el\or em\or en\or eo\or ep\or eq\or er\or es\or et\or eu\or  ev\or ew\or ex\or ey\or ez%  \or fa\or fb\or fc\or fd\or fe\or ff\or fg\or fh\or fi\or fj\or  fk\or fl\or fm\or fn\or fo\or fp\or fq\or fr\or fs\or ft\or fu\or  fv\or fw\or fx\or fy\or fz%  \or ga\or gb\or gc\or gd\or ge\or gf\or gg\or gh\or gi\or gj\or  gk\or gl\or gm\or gn\or go\or gp\or gq\or gr\or gs\or gt\or gu\or  gv\or gw\or gx\or gy\or gz%  \else\@ctrerr\fi}  \newcounter{affn}  \renewcommand\theaffn{\alph{affn}}  \long\def\@@address[#1]#2{\g@addto@macro\elsaddress{%  \def\baselinestretch{1}%  \refstepcounter{affn}  \xdef\@currentlabel{\theaffn}  \elsLabel{#1}%  \textsuperscript{\theaffn}#2\par}}  \long\def\@address#1{\g@addto@macro\elsauthors{%  \def\baselinestretch{1}%  \addsep\footnotesize\itshape#1\def\addsep{\par\vskip6pt}%  \def\authorsep{\par\vskip8pt}}}  \newbox\absbox  \renewenvironment{abstract}{\global\setbox\absbox=\vbox\bgroup  \hsize=\textwidth\def\baselinestretch{1}%  \noindent\unskip\textbf{Abstract}  \par\medskip\noindent\unskip\ignorespaces}  {\egroup}  \newbox\keybox  \def\keyword{%  \def\sep{\unskip, }%  \def\MSC{\@ifnextchar[{\@MSC}{\@MSC[2000]}}  \def\@MSC[##1]{\par\leavevmode\hbox {\it ##1~MSC:\space}}%  \def\PACS{\par\leavevmode\hbox {\it PACS:\space}}%  \def\JEL{\par\leavevmode\hbox {\it JEL:\space}}%  \global\setbox\keybox=\vbox\bgroup\hsize=\textwidth  \normalsize\normalfont\def\baselinestretch{1}  \parskip\z@  \noindent\textit{Keywords: }  \raggedright % Keywords are not justified.  \ignorespaces}  \def\endkeyword{\par \egroup}  \newdimen\Columnwidth  \Columnwidth=\columnwidth  \def\printFirstPageNotes{%  \iflongmktitle  \let\columnwidth=\textwidth\fi  \ifx\@tnotes\@empty\else\@tnotes\fi  \ifx\@nonumnotes\@empty\else\@nonumnotes\fi  \ifx\@cornotes\@empty\else\@cornotes\fi  \ifx\@elseads\@empty\relax\else  \let\thefootnote\relax  \footnotetext{\ifnum\theead=1\relax  \textit{Email address:\space}\else  \textit{Email addresses:\space}\fi  \@elseads}\fi  \ifx\@elsuads\@empty\relax\else  \let\thefootnote\relax  \footnotetext{\textit{URL:\space}%  \@elsuads}\fi  \ifx\@fnotes\@empty\else\@fnotes\fi  \iflongmktitle\if@twocolumn  \let\columnwidth=\Columnwidth\fi\fi  }  \long\def\pprintMaketitle{\clearpage  \iflongmktitle\if@twocolumn\let\columnwidth=\textwidth\fi\fi  \resetTitleCounters  \def\baselinestretch{1}%  \printFirstPageNotes  \begin{center}%  \thispagestyle{pprintTitle}%  \def\baselinestretch{1}%  \Large\@title\par\vskip18pt  \normalsize\elsauthors\par\vskip10pt  \footnotesize\itshape\elsaddress\par\vskip36pt  \hrule\vskip12pt  \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi  \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi  \hrule\vskip12pt  \end{center}%  \gdef\thefootnote{\arabic{footnote}}%  }  \def\printWarning{%  \mbox{}\par\vfill\par\bgroup  \fboxsep12pt\fboxrule1pt  \hspace*{.18\textwidth}  \fcolorbox{gray50}{gray10}{\box\warnbox}  \egroup\par\vfill\thispagestyle{empty}  \setcounter{page}{0}  \clearpage}  \long\def\finalMaketitle{%  \resetTitleCounters  \def\baselinestretch{1}%  \MaketitleBox  \thispagestyle{pprintTitle}%  \gdef\thefootnote{\arabic{footnote}}%  }  \long\def\MaketitleBox{%  \resetTitleCounters  \def\baselinestretch{1}%  \begin{center}%  \def\baselinestretch{1}%  \Large\@title\par\vskip18pt  \normalsize\elsauthors\par\vskip10pt  \footnotesize\itshape\elsaddress\par\vskip36pt  \hrule\vskip12pt  \ifvoid\absbox\else\unvbox\absbox\par\vskip10pt\fi  \ifvoid\keybox\else\unvbox\keybox\par\vskip10pt\fi  \hrule\vskip12pt  \end{center}%  }  \def\FNtext#1{\par\bgroup\footnotesize#1\egroup}  \newdimen\space@left  \def\alarm#1{\typeout{******************************}%  \typeout{#1}%  \typeout{******************************}%  }  \long\def\getSpaceLeft{%\global\@twocolumnfalse%  \global\setbox0=\vbox{\hsize=\textwidth\MaketitleBox}%  \global\setbox1=\vbox{\hsize=\textwidth  \let\footnotetext\FNtext  \printFirstPageNotes}%  \xdef\noteheight{\the\ht1}%  \xdef\titleheight{\the\ht0}%  \@tempdima=\vsize  \advance\@tempdima-\noteheight  \advance\@tempdima-1\baselineskip  }  \skip\footins=24pt  \newbox\els@boxa  \newbox\els@boxb  \ifpreprint  \def\maketitle{\pprintMaketitle}  \else  \ifnum\jtype=1  \def\maketitle{%  \iflongmktitle\getSpaceLeft  \global\setbox\els@boxa=\vsplit0 to \@tempdima  \box\els@boxa\par\resetTitleCounters  \thispagestyle{pprintTitle}%  \printFirstPageNotes  \box0%  \else  \finalMaketitle\printFirstPageNotes  \fi  \gdef\thefootnote{\arabic{footnote}}}%  \else  \ifnum\jtype=5  \def\maketitle{%  \iflongmktitle\getSpaceLeft  \global\setbox\els@boxa=\vsplit0 to \@tempdima  \box\els@boxa\par\resetTitleCounters  \thispagestyle{pprintTitle}%  \printFirstPageNotes  \twocolumn[\box0]%\printFirstPageNotes  \else  \twocolumn[\finalMaketitle]\printFirstPageNotes  \fi  \gdef\thefootnote{\arabic{footnote}}}  \else  \if@twocolumn  \def\maketitle{%  \iflongmktitle\getSpaceLeft  \global\setbox\els@boxa=\vsplit0 to \@tempdima  \box\els@boxa\par\resetTitleCounters  \thispagestyle{pprintTitle}%  \printFirstPageNotes  \twocolumn[\box0]%  \else  \twocolumn[\finalMaketitle]\printFirstPageNotes  \fi  \gdef\thefootnote{\arabic{footnote}}}%  \else  \def\maketitle{%  \iflongmktitle\getSpaceLeft  \global\setbox\els@boxa=\vsplit0 to \@tempdima  \box\els@boxa\par\resetTitleCounters  \thispagestyle{pprintTitle}%  \printFirstPageNotes  \box0%  \else  \finalMaketitle\printFirstPageNotes  \fi  \gdef\thefootnote{\arabic{footnote}}}%  \fi  \fi  \fi  \fi  \def\ps@pprintTitle{%  \let\@oddhead\@empty  \let\@evenhead\@empty  \def\@oddfoot{\footnotesize\itshape  Preprint submitted to \ifx\@journal\@empty Elsevier  \else\@journal\fi\hfill\today}%  \let\@evenfoot\@oddfoot}  \def\@seccntDot{.}  \def\@seccntformat#1{\csname the#1\endcsname\@seccntDot\hskip 0.5em}  \renewcommand\section{\@startsection {section}{1}{\z@}%  {18\p@ \@plus 6\p@ \@minus 3\p@}%  {9\p@ \@plus 6\p@ \@minus 3\p@}%  {\normalsize\bfseries\boldmath}}  \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%  {12\p@ \@plus 6\p@ \@minus 3\p@}%  {3\p@ \@plus 6\p@ \@minus 3\p@}%  {\normalfont\normalsize\itshape}}  \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%  {12\p@ \@plus 6\p@ \@minus 3\p@}%  {\p@}%  {\normalfont\normalsize\itshape}}  \def\paragraph{\secdef{\els@aparagraph}{\els@bparagraph}}  \def\els@aparagraph[#1]#2{\elsparagraph[#1]{#2.}}  \def\els@bparagraph#1{\elsparagraph*{#1.}}  \newcommand\elsparagraph{\@startsection{paragraph}{4}{0\z@}%  {10\p@ \@plus 6\p@ \@minus 3\p@}%  {-6\p@}%  {\normalfont\itshape}}  \newdimen\leftMargin  \leftMargin=2em  \newtoks\@enLab %\newtoks\@enfont  \def\@enQmark{?}  \def\@enLabel#1#2{%  \edef\@enThe{\noexpand#1{\@enumctr}}%  \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}%  \@enloop}  \def\@enSpace{\afterassignment\@enSp@ce\let\@tempa= }  \def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop}  \def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop}  \def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop}  \def\@enloop{\futurelet\@entemp\@enloop@}  \def\@enloop@{%  \ifx A\@entemp \def\@tempa{\@enLabel\Alph }\else  \ifx a\@entemp \def\@tempa{\@enLabel\alph }\else  \ifx i\@entemp \def\@tempa{\@enLabel\roman }\else  \ifx I\@entemp \def\@tempa{\@enLabel\Roman }\else  \ifx 1\@entemp \def\@tempa{\@enLabel\arabic}\else  \ifx \@sptoken\@entemp \let\@tempa\@enSpace \else  \ifx \bgroup\@entemp \let\@tempa\@enGroup \else  \ifx \@enum@\@entemp \let\@tempa\@gobble \else  \let\@tempa\@enOther  \fi\fi\fi\fi\fi\fi\fi\fi  \@tempa}  \newlength{\@sep} \newlength{\@@sep}  \setlength{\@sep}{.5\baselineskip plus.2\baselineskip  minus.2\baselineskip}  \setlength{\@@sep}{.1\baselineskip plus.01\baselineskip  minus.05\baselineskip}  \providecommand{\sfbc}{\rmfamily\upshape}  \providecommand{\sfn}{\rmfamily\upshape}  \def\@enfont{\ifnum \@enumdepth >1\let\@nxt\sfn \else\let\@nxt\sfbc \fi\@nxt}  \def\enumerate{%  \ifnum \@enumdepth >3 \@toodeep\else  \advance\@enumdepth \@ne  \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi  \@ifnextchar[{\@@enum@}{\@enum@}}  \def\@@enum@[#1]{%  \@enLab{}\let\@enThe\@enQmark  \@enloop#1\@enum@  \ifx\@enThe\@enQmark\@warning{The counter will not be printed.%  ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi  \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}%  \expandafter\let\csname the\@enumctr\endcsname\@enThe  \csname c@\@enumctr\endcsname7  \expandafter\settowidth  \csname leftmargin\romannumeral\@enumdepth\endcsname  {\the\@enLab\hskip\labelsep}%  \@enum@}  \def\@enum@{\list{{\@enfont\csname label\@enumctr\endcsname}}%  {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}%  \ifnum \@enumdepth>1\setlength{\topsep}{\@@sep}\else  \setlength{\topsep}{\@sep}\fi  \ifnum \@enumdepth>1\setlength{\itemsep}{0pt plus1pt minus1pt}%  \else \setlength{\itemsep}{\@@sep}\fi  %\setlength\leftmargin{\leftMargin}%%%{1.8em}  \setlength{\parsep}{0pt plus1pt minus1pt}%  \setlength{\parskip}{0pt plus1pt minus1pt}  }}  \def\endenumerate{\par\ifnum \@enumdepth >1\addvspace{\@@sep}\else  \addvspace{\@sep}\fi \endlist}  \def\sitem{\@noitemargtrue\@item[\@itemlabel *]}  \def\itemize{\@ifnextchar[{\@Itemize}{\@Itemize[]}}  \def\@Itemize[#1]{\def\next{#1}%  \ifnum \@itemdepth >\thr@@\@toodeep\else  \advance\@itemdepth\@ne  \ifx\next\@empty\else\expandafter\def\csname  labelitem\romannumeral\the\@itemdepth\endcsname{#1}\fi%  \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%  \expandafter\list\csname\@itemitem\endcsname  {\def\makelabel##1{\hss\llap{##1}}}%  \fi}  \def\newdefinition#1{%  \@ifnextchar[{\@odfn{#1}}{\@ndfn{#1}}}%]  \def\@ndfn#1#2{%  \@ifnextchar[{\@xndfn{#1}{#2}}{\@yndfn{#1}{#2}}}  \def\@xndfn#1#2[#3]{%  \expandafter\@ifdefinable\csname #1\endcsname  {\@definecounter{#1}\@newctr{#1}[#3]%  \expandafter\xdef\csname the#1\endcsname{%  \expandafter\noexpand\csname the#3\endcsname \@dfncountersep  \@dfncounter{#1}}%  \global\@namedef{#1}{\@dfn{#1}{#2}}%  \global\@namedef{end#1}{\@enddefinition}}}  \def\@yndfn#1#2{%  \expandafter\@ifdefinable\csname #1\endcsname  {\@definecounter{#1}%  \expandafter\xdef\csname the#1\endcsname{\@dfncounter{#1}}%  \global\@namedef{#1}{\@dfn{#1}{#2}}%  \global\@namedef{end#1}{\@enddefinition}}}  \def\@odfn#1[#2]#3{%  \@ifundefined{c@#2}{\@nocounterr{#2}}%  {\expandafter\@ifdefinable\csname #1\endcsname  {\global\@namedef{the#1}{\@nameuse{the#2}}  \global\@namedef{#1}{\@dfn{#2}{#3}}%  \global\@namedef{end#1}{\@enddefinition}}}}  \def\@dfn#1#2{%  \refstepcounter{#1}%  \@ifnextchar[{\@ydfn{#1}{#2}}{\@xdfn{#1}{#2}}}  \def\@xdfn#1#2{%  \@begindefinition{#2}{\csname the#1\endcsname}\ignorespaces}  \def\@ydfn#1#2[#3]{%  \@opargbegindefinition{#2}{\csname the#1\endcsname}{#3}\ignorespaces}  \def\@dfncounter#1{\noexpand\arabic{#1}}  \def\@dfncountersep{.}  \def\@begindefinition#1#2{\trivlist  \item[\hskip\labelsep{\bfseries #1\ #2.}]\upshape}  \def\@opargbegindefinition#1#2#3{\trivlist  \item[\hskip\labelsep{\bfseries #1\ #2\ (#3).}]\upshape}  \def\@enddefinition{\endtrivlist}  \def\@begintheorem#1#2{\trivlist  \let\baselinestretch\@blstr  \item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape}  \def\@opargbegintheorem#1#2#3{\trivlist  \let\baselinestretch\@blstr  \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\itshape}  \def\newproof#1{%  \@ifnextchar[{\@oprf{#1}}{\@nprf{#1}}}  \def\@nprf#1#2{%  \@ifnextchar[{\@xnprf{#1}{#2}}{\@ynprf{#1}{#2}}}  \def\@xnprf#1#2[#3]{%  \expandafter\@ifdefinable\csname #1\endcsname  {\@definecounter{#1}\@newctr{#1}[#3]%  \expandafter\xdef\csname the#1\endcsname{%  \expandafter\noexpand\csname the#3\endcsname \@prfcountersep  \@prfcounter{#1}}%  \global\@namedef{#1}{\@prf{#1}{#2}}%  \global\@namedef{end#1}{\@endproof}}}  \def\@ynprf#1#2{%  \expandafter\@ifdefinable\csname #1\endcsname  {\@definecounter{#1}%  \expandafter\xdef\csname the#1\endcsname{\@prfcounter{#1}}%  \global\@namedef{#1}{\@prf{#1}{#2}}%  \global\@namedef{end#1}{\@endproof}}}  \def\@oprf#1[#2]#3{%  \@ifundefined{c@#2}{\@nocounterr{#2}}%  {\expandafter\@ifdefinable\csname #1\endcsname  {\global\@namedef{the#1}{\@nameuse{the#2}}%  \global\@namedef{#1}{\@prf{#2}{#3}}%  \global\@namedef{end#1}{\@endproof}}}}  \def\@prf#1#2{%  \refstepcounter{#1}%  \@ifnextchar[{\@yprf{#1}{#2}}{\@xprf{#1}{#2}}}  \def\@xprf#1#2{%  \@beginproof{#2}{\csname the#1\endcsname}\ignorespaces}  \def\@yprf#1#2[#3]{%  \@opargbeginproof{#2}{\csname the#1\endcsname}{#3}\ignorespaces}  \def\@prfcounter#1{\noexpand\arabic{#1}}  \def\@prfcountersep{.}  \def\@beginproof#1#2{\trivlist\let\baselinestretch\@blstr  \item[\hskip \labelsep{\scshape #1.}]\rmfamily}  \def\@opargbeginproof#1#2#3{\trivlist\let\baselinestretch\@blstr  \item[\hskip \labelsep{\scshape #1\ (#3).}]\rmfamily}  \def\@endproof{\endtrivlist}  \newcommand*{\qed}{\hbox{}\hfill$\Box$}  \@ifundefined{@biboptions}{\xdef\@biboptions{numbers}}{}  \InputIfFileExists{\jobname.spl}{}{}  \RequirePackage[\@biboptions]{natbib}  \newwrite\splwrite  \immediate\openout\splwrite=\jobname.spl  \def\biboptions#1{\def\next{#1}\immediate\write\splwrite{%  \string\g@addto@macro\string\@biboptions{%  ,\expandafter\strip@prefix\meaning\next}}}  \let\baselinestretch=\@blstr  \ifnum\jtype=1  \RequirePackage{geometry}  \geometry{twoside,  paperwidth=210mm,  paperheight=297mm,  textheight=562pt,  textwidth=384pt,  centering,  headheight=50pt,  headsep=12pt,  footskip=12pt,  footnotesep=24pt plus 2pt minus 12pt,  }  \global\let\bibfont=\footnotesize  \global\bibsep=0pt  \if@twocolumn\global\@twocolumnfalse\fi  \else\ifnum\jtype=3  \RequirePackage{geometry}  \geometry{twoside,  paperwidth=210mm,  paperheight=297mm,  textheight=622pt,  textwidth=468pt,  centering,  headheight=50pt,  headsep=12pt,  footskip=18pt,  footnotesep=24pt plus 2pt minus 12pt,  columnsep=2pc  }  \global\let\bibfont=\footnotesize  \global\bibsep=0pt  \if@twocolumn\input{fleqn.clo}\fi  \else\ifnum\jtype=5  \RequirePackage{geometry}  \geometry{twoside,  paperwidth=210mm,  paperheight=297mm,  textheight=682pt,  textwidth=522pt,  centering,  headheight=50pt,  headsep=12pt,  footskip=18pt,  footnotesep=24pt plus 2pt minus 12pt,  columnsep=18pt  }%  \global\let\bibfont=\footnotesize  \global\bibsep=0pt  \input{fleqn.clo}  \global\@twocolumntrue  %%  %% End of option '5p'  %%  \fi\fi\fi  \def\journal#1{\gdef\@journal{#1}}  \let\@journal\@empty  \newenvironment{frontmatter}{}{\maketitle}  \long\def\@makecaption#1#2{%  \vskip\abovecaptionskip\footnotesize  \sbox\@tempboxa{#1: #2}%  \ifdim \wd\@tempboxa >\hsize  #1: #2\par  \else  \global \@minipagefalse  \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%  \fi  \vskip\belowcaptionskip}  \AtBeginDocument{\@ifpackageloaded{hyperref}  {\def\@linkcolor{blue}  \def\@anchorcolor{blue}  \def\@citecolor{blue}  \def\@filecolor{blue}  \def\@urlcolor{blue}  \def\@menucolor{blue}  \def\@pagecolor{blue}  \begingroup  \@makeother\`%  \@makeother\=%  \edef\x{%  \edef\noexpand\x{%  \endgroup  \noexpand\toks@{%  \catcode 96=\noexpand\the\catcode`\noexpand\`\relax  \catcode 61=\noexpand\the\catcode`\noexpand\=\relax  }%  }%  \noexpand\x  }%  \x  \@makeother\`  \@makeother\=  }{}}  %%  \def\appendixname{Appendix }  \renewcommand\appendix{\par  \setcounter{section}{0}%  \setcounter{subsection}{0}%  \setcounter{equation}{0}  \gdef\thefigure{\@Alph\c@section.\arabic{figure}}%  \gdef\thetable{\@Alph\c@section.\arabic{table}}%  \gdef\thesection{\appendixname~\@Alph\c@section}%  \@addtoreset{equation}{section}%  \gdef\theequation{\@Alph\c@section.\arabic{equation}}%  \addtocontents{toc}{\string\let\string\numberline\string\tmptocnumberline}{}{}  }  %%%% \numberline width calculation for appendix.  \newdimen\appnamewidth  \def\tmptocnumberline#1{%  \setbox0=\hbox{\appendixname}  \appnamewidth=\wd0  \addtolength\appnamewidth{2.5pc}  \hb@xt@\appnamewidth{#1\hfill}  }  %% Added for work with amsrefs.sty  \@ifpackageloaded{amsrefs}%  {}  {%\let\bibsection\relax%  \AtBeginDocument{\def\cites@b#1#2,#3{%  \begingroup[%  \toks@{\InnerCite{#2}#1}%  \ifx\@empty#3\@xp\@gobble\fi  \cites@c#3%  }}}  %%  %% Added for avoiding clash with cleveref.sty  \@ifpackageloaded{cleveref}%  {}  {\def\tnotetext[#1]#2{\g@addto@macro\@tnotes{%  \refstepcounter{tnote}%  \immediate\write\@auxout{\string\Newlabel{#1}{\thetnote}}  \def\thefootnote{\ifcase\c@tnote\or\ding{73}\or\ding{73}\ding{73}\fi}%  \footnotetext{#2}}}  %%%  \def\fntext[#1]#2{\g@addto@macro\@fnotes{%  \refstepcounter{fnote}%  \immediate\write\@auxout{\string\Newlabel{#1}{\thefnote}}  \def\thefootnote{\thefnote}%  \global\setcounter{footnote}{\thefnote}%  \footnotetext{#2}}}  %%%  \def\cortext[#1]#2{\g@addto@macro\@cornotes{%  \refstepcounter{cnote}%  \immediate\write\@auxout{\string\Newlabel{#1}{\thecnote}}  \def\thefootnote{\ifcase\thecnote\or$\ast$\or  $\ast\ast$\fi}%  \footnotetext{#2}}}  }  \endinput  %%  %% End of file `elsarticle.cls'.           

%%  %% This is file `model1-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model1-num-names.bst 125 2009-10-07 11:47:47Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1/model1-num-names.bst $  %%  %%  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  % { add.period$ write$  { ", " * write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  skip$  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\textit{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "eds." }  FUNCTION {bbl.editor}  { "ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "edition" }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{f.~}{vv~}{ll}{, jj}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * ")" *  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  numnames #2 >  { "," * }  'skip$  if$  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION{format.year}  { year "year" bibinfo.check duplicate$ empty$  { "empty year in " cite$ *  "; set to ????" *  warning$  pop$ "????"  }  {  }  if$  extra.label *  " (" swap$ * ")" *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  " " *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  format.year *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * "), " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  t empty$  { address "address" bibinfo.check *  }  { t *  address empty$  'skip$  { ", " * address "address" bibinfo.check * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  add.blank  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  format.journal.pages  new.sentence  format.note output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  { format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  format.title "title" output.check  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.publisher.address output  format.edition output  format.date output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  format.date output  }  if$  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  format.btitle "title" output.check  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  format.title output  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  format.btitle "title" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  format.date "year" output.check  new.sentence  format.note "note" output.check  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  { purify$ #-1 #4 substring$ }  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  %SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  %SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model1-num-names.bst'.           

%%  %% This is file `model1a-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model1a-num-names.bst 126 2009-10-07 11:48:24Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1a/model1a-num-names.bst $  %%  %%  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  skip$  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\textit{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "eds." }  FUNCTION {bbl.editor}  { "ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "edition" }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{f.~}{vv~}{ll}{, jj}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * ")" *  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  numnames #2 >  { "," * }  'skip$  if$  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION{format.year}  { year "year" bibinfo.check duplicate$ empty$  { "empty year in " cite$ *  "; set to ????" *  warning$  pop$ "????"  }  {  }  if$  extra.label *  " (" swap$ * ")" *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  " " *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  format.year *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * "), " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  t empty$  { address "address" bibinfo.check *  }  { t *  address empty$  'skip$  { ", " * address "address" bibinfo.check * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  add.blank  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  format.journal.pages  new.sentence  format.note output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  { format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  format.title "title" output.check  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.publisher.address output  format.edition output  format.date output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  format.date output  }  if$  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  format.btitle "title" output.check  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  format.title output  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  format.btitle "title" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  format.date "year" output.check  new.sentence  format.note "note" output.check  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  { purify$ #-1 #4 substring$ }  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  %SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  %SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model1a-num-names.bst'.           

%%  %% This is file `model1b-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model1b-num-names.bst 138 2009-10-07 12:23:54Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1b/model1b-num-names.bst $  %%  %%  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  skip$  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\textit{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "eds." }  FUNCTION {bbl.editor}  { "ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "edition" }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{f{.}.~}{vv~}{ll}{, jj}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * ")" *  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION{format.year}  { year "year" bibinfo.check duplicate$ empty$  { "empty year in " cite$ *  "; set to ????" *  warning$  pop$ "????"  }  {  }  if$  extra.label *  " (" swap$ * ")" *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  " " *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  format.year *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * "), " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  t empty$  { address "address" bibinfo.check *  }  { t *  address empty$  'skip$  { ", " * address "address" bibinfo.check * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  add.blank  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  format.journal.pages  new.sentence  format.note output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  { format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  format.title "title" output.check  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  format.title "title" output.check  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.number.series output  format.publisher.address output  format.date "year" output.check  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.publisher.address output  format.date "year" output.check  format.edition output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  format.date "year" output.check  }  if$  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  format.btitle "title" output.check  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  format.title output  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  format.btitle "title" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  format.date "year" output.check  new.sentence  format.note "note" output.check  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  { purify$ #-1 #4 substring$ }  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model1b-num-names.bst'.           

%%  %% This is file `model1c-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model1c-num-names.bst 139 2009-10-07 12:24:10Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-1c/model1c-num-names.bst $  %%   ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  skip$  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\textit{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "eds." }  FUNCTION {bbl.editor}  { "ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "edition" }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{f{.}.~}{vv~}{ll}{, jj}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * ")" *  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION{format.year}  { year "year" bibinfo.check duplicate$ empty$  { "empty year in " cite$ *  "; set to ????" *  warning$  pop$ "????"  }  {  }  if$  extra.label *  " (" swap$ * ")" *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  " " *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  format.year *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * "), " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  t empty$  { address "address" bibinfo.check *  }  { t *  address empty$  'skip$  { ", " * address "address" bibinfo.check * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  add.blank  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  format.journal.pages  new.sentence  format.note output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  { format.bvolume output  format.number.series output  format.publisher.address output  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  format.title "title" output.check  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.number.series output  format.publisher.address output  format.date "year" output.check  }  {  format.book.crossref output.nonnull  }  if$  format.edition output  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.publisher.address output  format.date "year" output.check  format.edition output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  format.date "year" output.check  }  if$  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.pages "pages" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  format.btitle "title" output.check  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  format.title output  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  format.btitle "title" output.check  format.bvolume output  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.btitle  "title" output.check  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.sentence  format.note output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.title "title" output.check  format.date "year" output.check  new.sentence  format.note "note" output.check  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  { purify$ #-1 #4 substring$ }  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model1c-num-names.bst'.           

%%  %% This is file `model2-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model2-names.bst 140 2009-10-07 12:24:29Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-2/model2-names.bst $  %%   ENTRY  { address  archive  author  booktitle  chapter  edition  editor  eprint  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.comma}  { ", " * write$}    FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ". " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { ", " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output.commanull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { ", " * write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {output.book.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  new.block  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\textit{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "Eds." }  FUNCTION {bbl.editor}  { "Ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "edition" }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  FUNCTION {format.eprint}  { eprint duplicate$ empty$  'skip$  { "\eprint"  archive empty$  'skip$  { "[" * archive * "]" * }  if$  "{" * swap$ * "}" *  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{, jj}{, f{.}.}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * ")" *  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in %capitalize  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  }  'skip$  if$  extra.label *  before.all 'output.state :=  ", " swap$ *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  %FUNCTION {format.pages}  %{ pages duplicate$ empty$ 'skip$  % { duplicate$ multi.page.check  % {  % n.dashify  % }  % {  % }  % if$  % "pages" bibinfo.check  % }  % if$  %}  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  ", " *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * "), " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  capitalize  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  t empty$  { address "address" bibinfo.check *  }  { t *  address empty$  'skip$  { ", " * address "address" bibinfo.check * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  crossref missing$  {  journal  "journal" bibinfo.check  "journal" output.check  add.blank  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  format.journal.pages  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.date "year" output.check  date.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  new.block  format.number.series output  new.sentence  format.publisher.address output  }  {  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.date "year" output.check  date.block  format.btitle "title" output.check  crossref missing$  {  format.publisher.address output  format.bvolume output  format.chapter.pages "chapter and pages" output.check  new.block  format.number.series output  new.sentence  }  {  format.chapter.pages "chapter and pages" output.check  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  format.pages "pages" output.check  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.book.check  new.sentence  crossref missing$  { format.in.ed.booktitle "booktitle" output.book.check  format.publisher.address output  format.bvolume output  format.number.series output  format.chapter.pages output  new.sentence  format.edition output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.pages "pages" output.check  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.book.check  new.sentence  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  % format.bvolume output  % format.number.series output  % format.pages output  }  { format.incoll.inproc.crossref output.nonnull  format.pages output  }  if$  format.pages "pages" output.check  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.btitle "title" output.check  organization address new.block.checkb  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.btitle  "title" output.check  new.block  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.title output  new.block  howpublished "howpublished" bibinfo.check output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.btitle  "title" output.check  new.block  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  format.date "year" output.check  date.block  format.btitle "title" output.check  format.bvolume output  format.number.series output  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.btitle  "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  new.block  format.note output  format.eprint output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  format.note "note" output.check  format.eprint output  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  short.list key field.or.null = or  { pop$ "" }  'skip$  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  % { "{\natexlab{" swap$ * "}}" * }  { "" swap$ * "" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\expandafter\ifx\csname url\endcsname\relax"  write$ newline$  " \def\url#1{\texttt{#1}}\fi"  write$ newline$  "\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi"  write$ newline$  "\providecommand{\eprint}[2][]{\url{#2}}"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model2-names.bst'.           

%%  %% This is file `model3-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model3-num-names.bst 130 2009-10-07 11:50:55Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-3/model3-num-names.bst $  %%  %%  ENTRY  { address  archive  author  booktitle  chapter  collaboration  doi  edition  editor  eid  eprint  howpublished  institution  isbn  journal  key  month  note  number  numpages  organization  pages  publisher  school  series  title  type  url  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { "; " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {no.blank.or.punct}  { "" * before.all 'output.state :=  }  FUNCTION {date.block}  {  ";" *  no.blank.or.punct  }  FUNCTION {book.date.block}  {  "," *  no.blank.or.punct  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  STRINGS {z}  FUNCTION {remove.dots}  { 'z :=  ""  { z empty$ not }  { z #1 #1 substring$  z #2 global.max$ substring$ 'z :=  duplicate$ "." = 'pop$  { * }  if$  }  while$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\emph{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "editors" }  FUNCTION {bbl.editor}  { "editor" }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "ed." }  FUNCTION {bbl.volume}  { "vol." }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "no." }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { " p." }  FUNCTION {bbl.page}  { " p." }  FUNCTION {bbl.eidpp}  { "pages" }  FUNCTION {bbl.chapter}  { "chap." }  FUNCTION {bbl.techrep}  { "Tech. Rep." }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  FUNCTION {close.brace}  { "}{}" }  MACRO {jan} {"Jan."}  MACRO {feb} {"Feb."}  MACRO {mar} {"Mar."}  MACRO {apr} {"Apr."}  MACRO {may} {"May"}  MACRO {jun} {"Jun."}  MACRO {jul} {"Jul."}  MACRO {aug} {"Aug."}  MACRO {sep} {"Sep."}  MACRO {oct} {"Oct."}  MACRO {nov} {"Nov."}  MACRO {dec} {"Dec."}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  FUNCTION {format.eprint}  { eprint duplicate$ empty$  'skip$  { "\eprint"  archive empty$  'skip$  { "[" * archive * "]" * }  if$  "{" * swap$ * "}" *  }  if$  }  FUNCTION {format.url}  { url empty$  { "" }  { "\urlprefix\url{" url * "}" * }  if$  }  INTEGERS { nameptr namesleft numnames }  STRINGS { bibinfo}  % FUNCTION {format.names}  % { 'bibinfo :=  % duplicate$ empty$ 'skip$ {  % 's :=  % "" 't :=  % #1 'nameptr :=  % s num.names$ 'numnames :=  % numnames 'namesleft :=  % { namesleft #0 > }  % { s nameptr  % "{vv~}{ll}{ jj}{ f{}}"  % format.name$  % remove.dots  % bibinfo bibinfo.check  % 't :=  % nameptr #1 >  % {  % namesleft #1 >  % { ", " * t * }  % {  % s nameptr "{ll}" format.name$ duplicate$ "others" =  % { 't := }  % { pop$ }  % if$  % "," *  % t "others" =  % {  % " " * bbl.etal *  % }  % { " " * t * }  % if$  % }  % if$  % }  % 't  % if$  % nameptr #1 + 'nameptr :=  % namesleft #1 - 'namesleft :=  % }  % while$  % } if$  % }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{ jj}\xfnm[{ f{.}.}]"  format.name$  % remove.dots  bibinfo bibinfo.check  't :=  nameptr #1 >  {  nameptr #6  #1 + =  numnames #6  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  duplicate$ empty$ 'skip$  { collaboration "collaboration" bibinfo.check  duplicate$ empty$ 'skip$  { " (" swap$ * ")" * }  if$  *  }  if$  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  "," *  " " *  get.bbl.editor  *  }  if$  }  FUNCTION {format.isbn}  { isbn "isbn" bibinfo.check  duplicate$ empty$ 'skip$  {  new.block  "ISBN " swap$ *  }  if$  }  FUNCTION {format.doi}  { doi "doi" bibinfo.check  duplicate$ empty$ 'skip$  {  new.block  "\doi{" swap$ * "}" *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  nameptr #6  #1 + =  numnames #6  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in capitalize  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  ":" *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.journal.eid}  { eid "eid" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$ 'skip$  {  ":" *  }  if$  swap$ *  numpages empty$ 'skip$  { bbl.eidpp numpages tie.or.space.prefix  "numpages" bibinfo.check * *  " (" swap$ * ")" * *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  number "number" bibinfo.check duplicate$ empty$ 'skip$  {  swap$ duplicate$ empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  swap$  "(" swap$ * ")" *  }  if$ *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  "," *  " " *  get.bbl.editor  ". " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  capitalize  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  address "address" bibinfo.check *  t empty$  'skip$  { address empty$  'skip$  { ": " * }  if$  t *  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  {  journal  remove.dots  "journal" bibinfo.check  "journal" output.check  add.blank  format.date "year" output.check  date.block  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  eid empty$  { format.journal.pages }  { format.journal.eid }  if$  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  new.block  new.sentence  format.number.series output  format.publisher.address output  }  {  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title "title" output.check  new.block  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.chapter.pages "chapter and pages" output.check  new.block  new.sentence  format.number.series output  format.publisher.address output  }  {  format.chapter.pages "chapter and pages" output.check  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  crossref missing$  { format.isbn output }  'skip$  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.chapter.pages output  new.sentence  format.number.series output  format.publisher.address output  format.edition output  format.isbn output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  new.sentence  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.isbn output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  new.block  format.btitle "title" output.check  organization address new.block.checkb  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title output  new.block  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  new.block  format.btitle "title" output.check  format.bvolume output  new.sentence  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  format.date "year" output.check  format.doi output  new.block  format.note "note" output.check  format.eprint output  format.url output  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  { purify$ #-1 #4 substring$ }  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"  % "{vv~}{ll~}{\rd[f.f.]}{jj~}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  INTEGERS { seq.num }  FUNCTION {init.seq}  { #0 'seq.num :=}  EXECUTE {init.seq}  FUNCTION {int.to.fix}  { "000000000" swap$ int.to.str$ *  #-1 #10 substring$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  seq.num #1 + 'seq.num :=  seq.num int.to.fix  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\providecommand{\natexlab}[1]{#1}"  write$ newline$  "\providecommand{\url}[1]{\texttt{#1}}"  write$ newline$  "\providecommand{\urlprefix}{URL }"  write$ newline$  "\expandafter\ifx\csname urlstyle\endcsname\relax"  write$ newline$  " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"  write$ newline$  " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"  write$ newline$  "\providecommand{\eprint}[2][]{\url{#2}}"  write$ newline$  "\providecommand{\BIBand}{and}"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\undefined \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model3-num-names.bst'.           

%%  %% This is file `model3a-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%   %% $Id: model3a-num-names.bst 161 2009-10-08 06:57:45Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-3a/model3a-num-names.bst $  %%   ENTRY  { address  archive  author  booktitle  chapter  collaboration  doi  edition  editor  eid  eprint  howpublished  institution  isbn  journal  key  month  note  number  numpages  organization  pages  publisher  school  series  title  type  url  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { "; " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {no.blank.or.punct}  { "\hspace{0pt}" * before.all 'output.state :=  }  FUNCTION {date.block}  {  ";" *  no.blank.or.punct  }  FUNCTION {book.date.block}  {  ", " *  no.blank.or.punct  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  STRINGS {z}  FUNCTION {remove.dots}  { 'z :=  ""  { z empty$ not }  { z #1 #1 substring$  z #2 global.max$ substring$ 'z :=  duplicate$ "." = 'pop$  { * }  if$  }  while$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\emph{" swap$ * "}" * }  if$  }  FUNCTION {bolden}  { duplicate$ empty$  { pop$ "" }  { "\textbf{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "editors" }  FUNCTION {bbl.editor}  { "editor" }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "ed." }  FUNCTION {bbl.volume}  { "vol." }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "no." }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "p." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.eidpp}  { "pages" }  FUNCTION {bbl.chapter}  { "chap." }  FUNCTION {bbl.techrep}  { "Tech. Rep." }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  MACRO {jan} {"Jan."}  MACRO {feb} {"Feb."}  MACRO {mar} {"Mar."}  MACRO {apr} {"Apr."}  MACRO {may} {"May"}  MACRO {jun} {"Jun."}  MACRO {jul} {"Jul."}  MACRO {aug} {"Aug."}  MACRO {sep} {"Sep."}  MACRO {oct} {"Oct."}  MACRO {nov} {"Nov."}  MACRO {dec} {"Dec."}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  FUNCTION {format.eprint}  { eprint duplicate$ empty$  'skip$  { "\eprint"  archive empty$  'skip$  { "[" * archive * "]" * }  if$  "{" * swap$ * "}" *  }  if$  }  FUNCTION {format.url}  { url empty$  { "" }  { "\urlprefix\url{" url * "}" * }  if$  }  INTEGERS { nameptr namesleft numnames }  STRINGS { bibinfo}  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{ jj}\xfnm[{ f{.}.}]"  format.name$  % remove.dots  bibinfo bibinfo.check  't :=  nameptr #1 >  {  nameptr #6  #1 + =  numnames #6  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  "," *  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  duplicate$ empty$ 'skip$  { collaboration "collaboration" bibinfo.check  duplicate$ empty$ 'skip$  { " (" swap$ * ")" * }  if$  *  }  if$  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  "," *  " " *  get.bbl.editor  *  }  if$  }  FUNCTION {format.isbn}  { isbn "isbn" bibinfo.check  duplicate$ empty$ 'skip$  {  new.block  "ISBN " swap$ *  }  if$  }  FUNCTION {format.doi}  { doi "doi" bibinfo.check  duplicate$ empty$ 'skip$  {  new.block  "\doi{" swap$ * "}" *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  nameptr #6  #1 + =  numnames #6  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in capitalize  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  emphasize  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  ":" *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.journal.eid}  { eid "eid" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$ 'skip$  {  ":" *  }  if$  swap$ *  numpages empty$ 'skip$  { bbl.eidpp numpages tie.or.space.prefix  "numpages" bibinfo.check * *  " (" swap$ * ")" * *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  bolden  number "number" bibinfo.check duplicate$ empty$ 'skip$  {  swap$ duplicate$ empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  swap$  "(" swap$ * ")" *  }  if$ *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  emphasize  }  %FUNCTION {format.in.ed.booktitle}  %{ format.booktitle duplicate$ empty$ 'skip$  % {  % editor "editor" format.names.ed duplicate$ empty$ 'pop$  % {  % get.bbl.editor  % " " * swap$ *  % swap$  % "," *  % " " * swap$  % * }  % if$  % word.in swap$ *  % }  % if$  %}  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  "," *  " " *  get.bbl.editor  ". " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  capitalize  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  address "address" bibinfo.check *  t empty$  'skip$  { address empty$  'skip$  { ": " * }  if$  t *  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  {  journal  remove.dots  "journal" bibinfo.check  emphasize  "journal" output.check  add.blank  format.date "year" output.check  date.block  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  eid empty$  { format.journal.pages }  { format.journal.eid }  if$  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  new.block  format.number.series output  new.sentence  format.publisher.address output  }  {  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title "title" output.check  new.block  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.chapter.pages "chapter and pages" output.check  new.block  format.number.series output  new.sentence  format.publisher.address output  }  {  format.chapter.pages "chapter and pages" output.check  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  crossref missing$  { format.isbn output }  'skip$  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.chapter.pages output  new.sentence  format.publisher.address output  format.edition output  format.isbn output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.isbn output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  new.block  format.btitle "title" output.check  organization address new.block.checkb  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.btitle  "title" output.check  new.block  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title output  new.block  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.btitle  "title" output.check  new.block  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  new.block  format.btitle "title" output.check  format.bvolume output  format.number.series output  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  format.date "year" output.check  format.doi output  new.block  format.note "note" output.check  format.eprint output  format.url output  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  short.list key field.or.null = or  { pop$ "" }  'skip$  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  INTEGERS { seq.num }  FUNCTION {init.seq}  { #0 'seq.num :=}  EXECUTE {init.seq}  FUNCTION {int.to.fix}  { "000000000" swap$ int.to.str$ *  #-1 #10 substring$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  seq.num #1 + 'seq.num :=  seq.num int.to.fix  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\providecommand{\natexlab}[1]{#1}"  write$ newline$  "\providecommand{\url}[1]{\texttt{#1}}"  write$ newline$  "\providecommand{\urlprefix}{URL }"  write$ newline$  "\expandafter\ifx\csname urlstyle\endcsname\relax"  write$ newline$  " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"  write$ newline$  " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"  write$ newline$  "\providecommand{\eprint}[2][]{\url{#2}}"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\undefined \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  "\makeatletter\def\@biblabel#1{#1.}\makeatother"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model3a-num-names.bst'.           

%%  %% This is file `model4-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model4-names.bst 132 2009-10-07 11:51:44Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-4/model4-names.bst $  %%  %%  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { "; " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {no.blank.or.punct}  { "" * before.all 'output.state :=  }  FUNCTION {date.block}  {  ";" *  no.blank.or.punct  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  STRINGS {z}  FUNCTION {remove.dots}  { 'z :=  ""  { z empty$ not }  { z #1 #1 substring$  z #2 global.max$ substring$ 'z :=  duplicate$ "." = 'pop$  { * }  if$  }  while$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\textit{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "editors" }  FUNCTION {bbl.editor}  { "editor" }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "ed." }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "p." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  FUNCTION {bbl.first}  { "1st" }  FUNCTION {bbl.second}  { "2nd" }  FUNCTION {bbl.third}  { "3rd" }  FUNCTION {bbl.fourth}  { "4th" }  FUNCTION {bbl.fifth}  { "5th" }  FUNCTION {bbl.st}  { "st" }  FUNCTION {bbl.nd}  { "nd" }  FUNCTION {bbl.rd}  { "rd" }  FUNCTION {bbl.th}  { "th" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  FUNCTION {eng.ord}  { duplicate$ "1" swap$ *  #-2 #1 substring$ "1" =  { bbl.th * }  { duplicate$ #-1 #1 substring$  duplicate$ "1" =  { pop$ bbl.st * }  { duplicate$ "2" =  { pop$ bbl.nd * }  { "3" =  { bbl.rd * }  { bbl.th * }  if$  }  if$  }  if$  }  if$  }  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{ jj}\xfnm[{ f{.}.}]"  format.name$  % remove.dots  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  "," *  " " *  get.bbl.editor  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in capitalize  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  }  'skip$  if$  extra.label *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  series empty$  { "there's a number but no series in " cite$ * warning$ }  { bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {is.num}  { chr.to.int$  duplicate$ "0" chr.to.int$ < not  swap$ "9" chr.to.int$ > not and  }  FUNCTION {extract.num}  { duplicate$ 't :=  "" 's :=  { t empty$ not }  { t #1 #1 substring$  t #2 global.max$ substring$ 't :=  duplicate$ is.num  { s swap$ * 's := }  { pop$ "" 't := }  if$  }  while$  s empty$  'skip$  { pop$ s }  if$  }  FUNCTION {convert.edition}  { extract.num "l" change.case$ 's :=  s "first" = s "1" = or  { bbl.first 't := }  { s "second" = s "2" = or  { bbl.second 't := }  { s "third" = s "3" = or  { bbl.third 't := }  { s "fourth" = s "4" = or  { bbl.fourth 't := }  { s "fifth" = s "5" = or  { bbl.fifth 't := }  { s #1 #1 substring$ is.num  { s eng.ord 't := }  { edition 't := }  if$  }  if$  }  if$  }  if$  }  if$  }  if$  t  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  convert.edition  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  ":" *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  number "number" bibinfo.check duplicate$ empty$ 'skip$  {  swap$ duplicate$ empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  swap$  "(" swap$ * ")" *  }  if$ *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  "," *  " " *  get.bbl.editor  ". " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  capitalize  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  address "address" bibinfo.check *  t empty$  'skip$  { address empty$  'skip$  { ": " * }  if$  t *  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {book.date.block}  {  ", " *  no.blank.or.punct  }  FUNCTION {inbook.date.block}  {  ". " *  no.blank.or.punct  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  {  journal  remove.dots  "journal" bibinfo.check  "journal" output.check  add.blank  format.date "year" output.check  date.block  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  format.journal.pages  new.block  format.note output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  new.block  format.edition output  crossref missing$  { format.bvolume output  new.block  format.number.series output  new.sentence  format.publisher.address output  }  {  new.block  format.book.crossref output.nonnull  }  if$  new.block  book.date.block  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title "title" output.check  new.block  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  {  format.publisher.address output  format.bvolume output  new.block  format.number.series output  new.sentence  }  {  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  format.pages "pages" output.check  new.block  format.note output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.bvolume output  format.number.series output  format.edition output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.date "year" output.check  inbook.date.block  format.pages "pages" output.check  new.block  format.note output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.bvolume output  format.number.series output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.date "year" output.check  inbook.date.block  format.pages "pages" output.check  new.block  format.note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  new.block  format.btitle "title" output.check  organization address new.block.checkb  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  inbook.date.block  format.pages "pages" output.check  new.block  format.note output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.btitle  "title" output.check  new.block  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title output  new.block  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.btitle  "title" output.check  new.block  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  new.block  format.btitle "title" output.check  format.bvolume output  format.number.series output  new.sentence  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.btitle  "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  new.block  format.note output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  format.date "year" output.check  new.block  format.note "note" output.check  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  short.list key field.or.null = or  { pop$ "" }  'skip$  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\undefined \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model4-names.bst'.           

%%  %% This is file `model5-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model5-names.bst 141 2009-10-07 12:25:09Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-5/model5-names.bst $  %%  %%  ENTRY  { address  author  booktitle  chapter  edition  editor  howpublished  institution  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { " " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {date.block}  {  new.block  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "{\it " swap$ * "\/}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "\&"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "eds." }  FUNCTION {bbl.editor}  { "ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "ed." }  FUNCTION {bbl.volume}  { "volume" }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "number" }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "pp." }  FUNCTION {bbl.page}  { "p." }  FUNCTION {bbl.chapter}  { "chapter" }  FUNCTION {bbl.techrep}  { "Technical Report" }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  FUNCTION {bbl.first}  { "1st" }  FUNCTION {bbl.second}  { "2nd" }  FUNCTION {bbl.third}  { "3rd" }  FUNCTION {bbl.fourth}  { "4th" }  FUNCTION {bbl.fifth}  { "5th" }  FUNCTION {bbl.st}  { "st" }  FUNCTION {bbl.nd}  { "nd" }  FUNCTION {bbl.rd}  { "rd" }  FUNCTION {bbl.th}  { "th" }  MACRO {jan} {"January"}  MACRO {feb} {"February"}  MACRO {mar} {"March"}  MACRO {apr} {"April"}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"August"}  MACRO {sep} {"September"}  MACRO {oct} {"October"}  MACRO {nov} {"November"}  MACRO {dec} {"December"}  FUNCTION {eng.ord}  { duplicate$ "1" swap$ *  #-2 #1 substring$ "1" =  { bbl.th * }  { duplicate$ #-1 #1 substring$  duplicate$ "1" =  { pop$ bbl.st * }  { duplicate$ "2" =  { pop$ bbl.nd * }  { "3" =  { bbl.rd * }  { bbl.th * }  if$  }  if$  }  if$  }  if$  }  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  STRINGS { bibinfo}  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{, f.}{, jj}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  nameptr #9  #90 +  #1 + =  numnames #9  #90 +  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {"," *  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{f.~}{vv~}{ll}{, jj}"  format.name$  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {"," *  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * ")" *  *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  nameptr #9  #90 +  #1 + =  numnames #9  #90 +  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in capitalize  "" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  }  'skip$  if$  extra.label *  before.all 'output.state :=  " (" swap$ * ")" *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  emphasize  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {is.num}  { chr.to.int$  duplicate$ "0" chr.to.int$ < not  swap$ "9" chr.to.int$ > not and  }  FUNCTION {extract.num}  { duplicate$ 't :=  "" 's :=  { t empty$ not }  { t #1 #1 substring$  t #2 global.max$ substring$ 't :=  duplicate$ is.num  { s swap$ * 's := }  { pop$ "" 't := }  if$  }  while$  s empty$  'skip$  { pop$ s }  if$  }  FUNCTION {convert.edition}  { extract.num "l" change.case$ 's :=  s "first" = s "1" = or  { bbl.first 't := }  { s "second" = s "2" = or  { bbl.second 't := }  { s "third" = s "3" = or  { bbl.third 't := }  { s "fourth" = s "4" = or  { bbl.fourth 't := }  { s "fifth" = s "5" = or  { bbl.fifth 't := }  { s #1 #1 substring$ is.num  { s eng.ord 't := }  { edition 't := }  if$  }  if$  }  if$  }  if$  }  if$  }  if$  t  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  convert.edition  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  "(" swap$ * ")" *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  "(" swap$ * ")" *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  ", " *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  emphasize  format.journal.pages  }  FUNCTION {format.chapter.pages}  { chapter empty$  'format.pages  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  pages empty$  'skip$  { ". " * format.pages * }  if$  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  emphasize  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  " " *  get.bbl.editor  capitalize  "(" swap$ * "), " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  capitalize  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  address "address" bibinfo.check *  t empty$  'skip$  { address empty$  'skip$  { ": " * }  if$  t *  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  crossref missing$  {  journal  "journal" bibinfo.check  emphasize  "journal" output.check  ", " *  format.vol.num.pages output  }  { format.article.crossref output.nonnull  format.pages output  }  if$  new.block  format.note output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  format.date "year" output.check  date.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  new.block  new.sentence  format.number.series output  format.edition output  new.block  format.publisher.address output  }  {  new.block  format.book.crossref output.nonnull  }  if$  new.block  format.note output  fin.entry  }  FUNCTION {booklet}  { "%Type = booklet" write$  output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  new.block  format.note output  fin.entry  }  %FUNCTION {inbook}  %{ output.bibitem  % author empty$  % { format.editors "author and editor" output.check  % editor format.key output  % }  % { format.authors output.nonnull  % crossref missing$  % { "author and editor" editor either.or.check }  % 'skip$  % if$  % }  % if$  % format.date "year" output.check  % date.block  % format.btitle "title" output.check  % crossref missing$  % {  % format.number.series output  % format.publisher.address output  % format.chapter.pages "chapter and pages" output.check  % format.bvolume output  % format.chapter.pages "chapter and pages" output.check  % new.block  % new.sentence  % }  % {  % new.block  % format.book.crossref output.nonnull  % }  % if$  % format.edition output  % new.block  % format.note output  % fin.entry  %}  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.number.series output  format.chapter.pages output  new.block  format.publisher.address output  format.bvolume output  new.sentence  format.edition output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  new.block  format.note output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.number.series output  format.chapter.pages output  new.block  format.publisher.address output  format.bvolume output  new.sentence  format.edition output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  new.block  format.note output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.number.series output  format.pages output  new.block  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.bvolume output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  new.block  format.note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.btitle "title" output.check  organization address new.block.checkb  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  new.block  format.note output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Masterthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.btitle  "title" output.check  new.block  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  new.block  format.note output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  format.date "year" output.check  date.block  format.title output  new.block  howpublished "howpublished" bibinfo.check output  new.block  format.note output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.btitle  "title" output.check  new.block  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  new.block  format.note output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  format.date "year" output.check  date.block  format.btitle "title" output.check  format.bvolume output  new.sentence  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  new.block  format.note output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.btitle  "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  new.block  format.note output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  format.date "year" output.check  date.block  format.title "title" output.check  new.block  format.note "note" output.check  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  short.list key field.or.null = or  { pop$ "" }  'skip$  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{ll{ }}{ f{ }}{ jj{ }}"  format.name$ 't :=  nameptr #1 >  {  nameptr #9  #90 +  #1 + =  numnames #9  #90 +  > and  { "others" 't :=  #1 'namesleft := }  'skip$  if$  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.sort  'author.sort  if$  }  if$  #1 entry.max$ substring$  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\relax \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model5-names.bst'.           

%%  %% This is file `model6-num-names.bst',  %%   %% Copyright 2009 Elsevier Ltd  %%   %% This file is part of the 'Elsarticle Bundle'.  %% ---------------------------------------------  %%   %% It may be distributed under the conditions of the LaTeX Project Public  %% License, either version 1.2 of this license or (at your option) any  %% later version. The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: model6-num-names.bst 162 2009-10-08 06:58:50Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/New-Model-6/model6-num-names.bst $  %%  %%  ENTRY  { address  archive  author  booktitle  chapter  collaboration  doi  edition  editor  eid  eprint  howpublished  institution  isbn  journal  key  month  note  number  numpages  organization  pages  publisher  school  series  title  type  url  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t}  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { "; " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  if$  }  if$  mid.sentence 'output.state :=  }  if$  s  }  FUNCTION {output}  { duplicate$ empty$  'pop$  'output.nonnull  if$  }  FUNCTION {output.check}  { 't :=  duplicate$ empty$  { pop$ "empty " t * " in " * cite$ * warning$ }  'output.nonnull  if$  }  FUNCTION {fin.entry}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block 'output.state := }  if$  }  FUNCTION {new.sentence}  { output.state after.block =  'skip$  { output.state before.all =  'skip$  { after.sentence 'output.state := }  if$  }  if$  }  FUNCTION {add.blank}  { " " * before.all 'output.state :=  }  FUNCTION {no.blank.or.punct}  { "" * before.all 'output.state :=  }  FUNCTION {date.block}  {  ";" *  no.blank.or.punct  }  FUNCTION {book.date.block}  { ":\unskip" *   no.blank.or.punct  }  FUNCTION {not}  { { #0 }  { #1 }  if$  }  FUNCTION {and}  { 'skip$  { pop$ #0 }  if$  }  FUNCTION {or}  { { pop$ #1 }  'skip$  if$  }  STRINGS {z}  FUNCTION {remove.dots}  { 'z :=  ""  { z empty$ not }  { z #1 #1 substring$  z #2 global.max$ substring$ 'z :=  duplicate$ "." = 'pop$  { * }  if$  }  while$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\emph{" swap$ * "}" * }  if$  }  FUNCTION {tie.or.space.prefix}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$  }  FUNCTION {capitalize}  { "u" change.case$ "t" change.case$ }  FUNCTION {space.word}  { " " swap$ * " " * }  % Here are the language-specific definitions for explicit words.  % Each function has a name bbl.xxx where xxx is the English word.  % The language selected here is ENGLISH  FUNCTION {bbl.and}  { "and"}  FUNCTION {bbl.etal}  { "et~al." }  FUNCTION {bbl.editors}  { "eds." }  FUNCTION {bbl.editor}  { "ed." }  FUNCTION {bbl.edby}  { "edited by" }  FUNCTION {bbl.edition}  { "ed." }  FUNCTION {bbl.volume}  { "vol." }  FUNCTION {bbl.of}  { "of" }  FUNCTION {bbl.number}  { "no." }  FUNCTION {bbl.nr}  { "no." }  FUNCTION {bbl.in}  { "in" }  FUNCTION {bbl.pages}  { "" }  FUNCTION {bbl.page}  { "" }  FUNCTION {bbl.eidpp}  { "pages" }  FUNCTION {bbl.chapter}  { "chap." }  FUNCTION {bbl.techrep}  { "Tech. Rep." }  FUNCTION {bbl.mthesis}  { "Master's thesis" }  FUNCTION {bbl.phdthesis}  { "Ph.D. thesis" }  FUNCTION {close.brace}  { "}{}" }  MACRO {jan} {"Jan."}  MACRO {feb} {"Feb."}  MACRO {mar} {"Mar."}  MACRO {apr} {"Apr."}  MACRO {may} {"May"}  MACRO {jun} {"Jun."}  MACRO {jul} {"Jul."}  MACRO {aug} {"Aug."}  MACRO {sep} {"Sep."}  MACRO {oct} {"Oct."}  MACRO {nov} {"Nov."}  MACRO {dec} {"Dec."}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Software Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput. Aid. Des."}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Program."}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Graphic."}  MACRO {toms} {"ACM Trans. Math. Software"}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}  MACRO {tcs} {"Theor. Comput. Sci."}  FUNCTION {bibinfo.check}  { swap$  duplicate$ missing$  {  pop$ pop$  ""  }  { duplicate$ empty$  {  swap$ pop$  }  { swap$  "\bibinfo{" swap$ * "}{" * swap$ * "}" *  }  if$  }  if$  }  FUNCTION {bibinfo.warn}  { swap$  duplicate$ missing$  {  swap$ "missing " swap$ * " in " * cite$ * warning$ pop$  ""  }  { duplicate$ empty$  {  swap$ "empty " swap$ * " in " * cite$ * warning$  }  { swap$  pop$  }  if$  }  if$  }  FUNCTION {format.eprint}  { eprint duplicate$ empty$  'skip$  { "\eprint"  archive empty$  'skip$  { "[" * archive * "]" * }  if$  "{" * swap$ * "}" *  }  if$  }  FUNCTION {format.url}  { url empty$  { "" }  { "\urlprefix\url{" url * "}" * }  if$  }  INTEGERS { nameptr namesleft numnames }  STRINGS { bibinfo}  % FUNCTION {format.names}  % { 'bibinfo :=  % duplicate$ empty$ 'skip$ {  % 's :=  % "" 't :=  % #1 'nameptr :=  % s num.names$ 'numnames :=  % numnames 'namesleft :=  % { namesleft #0 > }  % { s nameptr  % "{vv~}{ll}{ jj}{ f{}}"  % format.name$  % remove.dots  % bibinfo bibinfo.check  % 't :=  % nameptr #1 >  % {  % namesleft #1 >  % { ", " * t * }  % {  % s nameptr "{ll}" format.name$ duplicate$ "others" =  % { 't := }  % { pop$ }  % if$  % "," *  % t "others" =  % {  % " " * bbl.etal *  % }  % { " " * t * }  % if$  % }  % if$  % }  % 't  % if$  % nameptr #1 + 'nameptr :=  % namesleft #1 - 'namesleft :=  % }  % while$  % } if$  % }  FUNCTION {format.names}  { 'bibinfo :=  duplicate$ empty$ 'skip$ {  's :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}{ jj}\xfnm[{ f{.}.}]"  format.name$  % remove.dots  bibinfo bibinfo.check  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  "," *  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  { " " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  } if$  }  FUNCTION {format.names.ed}  {  format.names  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author "author" format.names  duplicate$ empty$ 'skip$  { collaboration "collaboration" bibinfo.check  duplicate$ empty$ 'skip$  { " (" swap$ * ")" * }  if$  *  }  if$  }  FUNCTION {get.bbl.editor}  { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }  FUNCTION {format.editors}  { editor "editor" format.names duplicate$ empty$ 'skip$  {  "," *  " " *  get.bbl.editor  *  }  if$  }  FUNCTION {format.isbn}  { isbn "isbn" bibinfo.check  duplicate$ empty$ 'skip$  {  new.block  "ISBN " swap$ *  }  if$  }  FUNCTION {format.doi}  { doi "doi" bibinfo.check  duplicate$ empty$ 'skip$  {  new.block  "\doi{" swap$ * "}" *  }  if$  }  FUNCTION {format.note}  {  note empty$  { "" }  { note #1 #1 substring$  duplicate$ "{" =  'skip$  { output.state mid.sentence =  { "l" }  { "u" }  if$  change.case$  }  if$  note #2 global.max$ substring$ * "note" bibinfo.check  }  if$  }  FUNCTION {format.title}  { title  duplicate$ empty$ 'skip$  { "t" change.case$ }  if$  "title" bibinfo.check  }  FUNCTION {format.full.names}  {'s :=  "" 't :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$  't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  s nameptr "{ll}" format.name$ duplicate$ "others" =  { 't := }  { pop$ }  if$  t "others" =  {  " " * bbl.etal *  }  {  bbl.and  space.word * t *  }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.key.full}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.key.full}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.full.names }  if$  }  FUNCTION {editor.key.full}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.full  { type$ "proceedings" =  'editor.key.full  'author.key.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[{" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "}]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  {  't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {word.in}  { bbl.in capitalize  ":" *  " " * }  FUNCTION {format.date}  { year "year" bibinfo.check duplicate$ empty$  {  "empty year in " cite$ * "; set to ????" * warning$  pop$ "????"  }  'skip$  if$  extra.label *  }  FUNCTION {format.btitle}  { title "title" bibinfo.check  duplicate$ empty$ 'skip$  {  }  if$  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { bbl.volume volume tie.or.space.prefix  "volume" bibinfo.check * *  series "series" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ bbl.of space.word * swap$  emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { series empty$  { number "number" bibinfo.check }  { output.state mid.sentence =  { bbl.number }  { bbl.number capitalize }  if$  number tie.or.space.prefix "number" bibinfo.check * *  bbl.in space.word *  series "series" bibinfo.check *  }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition duplicate$ empty$ 'skip$  {  output.state mid.sentence =  { "l" }  { "t" }  if$ change.case$  "edition" bibinfo.check  " " * bbl.edition *  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages duplicate$ empty$ 'skip$  { duplicate$ multi.page.check  {  bbl.pages swap$  n.dashify  }  {  bbl.page swap$  }  if$  tie.or.space.prefix  "pages" bibinfo.check  * *  }  if$  }  FUNCTION {format.journal.pages}  { pages duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$  { pop$ pop$ format.pages }  {  ":" *  swap$  n.dashify  "pages" bibinfo.check  *  }  if$  }  if$  }  FUNCTION {format.journal.eid}  { eid "eid" bibinfo.check  duplicate$ empty$ 'pop$  { swap$ duplicate$ empty$ 'skip$  {  ":" *  }  if$  swap$ *  numpages empty$ 'skip$  { bbl.eidpp numpages tie.or.space.prefix  "numpages" bibinfo.check * *  " (" swap$ * ")" * *  }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  duplicate$ empty$ 'skip$  {  "volume" bibinfo.check  }  if$  number "number" bibinfo.check duplicate$ empty$ 'skip$  {  swap$ duplicate$ empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  swap$  "(" swap$ * ")" *  }  if$ *  }  FUNCTION {format.chapter.pages}  { chapter empty$  { "" }  { type empty$  { bbl.chapter }  { type "l" change.case$  "type" bibinfo.check  }  if$  chapter tie.or.space.prefix  "chapter" bibinfo.check  * *  }  if$  }  FUNCTION {format.booktitle}  {  booktitle "booktitle" bibinfo.check  emphasize  }  FUNCTION {format.in.ed.booktitle}  { format.booktitle duplicate$ empty$ 'skip$  {  editor "editor" format.names.ed duplicate$ empty$ 'pop$  {  "," *  " " *  get.bbl.editor  " " *  * swap$  * }  if$  word.in swap$ *  }  if$  }  FUNCTION {format.thesis.type}  { type duplicate$ empty$  'pop$  { swap$ pop$  "t" change.case$ "type" bibinfo.check  }  if$  }  FUNCTION {format.tr.number}  { number "number" bibinfo.check  type duplicate$ empty$  { pop$ bbl.techrep }  'skip$  if$  "type" bibinfo.check  swap$ duplicate$ empty$  { pop$ "t" change.case$ }  { tie.or.space.prefix * * }  if$  }  FUNCTION {format.article.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume duplicate$ empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  pop$ word.in  }  { bbl.volume  capitalize  swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *  }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  {  word.in  " \cite{" * crossref * "}" *  }  FUNCTION {format.org.or.pub}  { 't :=  ""  address empty$ t empty$ and  'skip$  {  address "address" bibinfo.check *  t empty$  'skip$  { address empty$  'skip$  { ": " * }  if$  t *  }  if$  }  if$  }  FUNCTION {format.publisher.address}  { publisher "publisher" bibinfo.check format.org.or.pub  }  FUNCTION {format.organization.address}  { organization "organization" bibinfo.check format.org.or.pub  }  FUNCTION {article}  { "%Type = Article" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  {  journal  remove.dots  "journal" bibinfo.check  emphasize  "journal" output.check  add.blank  format.date "year" output.check  date.block  format.vol.num.pages output  }  { format.article.crossref output.nonnull  }  if$  eid empty$  { format.journal.pages }  { format.journal.eid }  if$  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {book}  { "%Type = Book" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  new.block  new.sentence  format.number.series output  format.edition output  format.publisher.address output  }  {  new.block  format.book.crossref output.nonnull  }  if$  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {booklet}  { "%Type = Booklet" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title "title" output.check  new.block  howpublished "howpublished" bibinfo.check output  address "address" bibinfo.check output  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {inbook}  { "%Type = Inbook" write$  output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  {  format.bvolume output  format.chapter.pages "chapter and pages" output.check  new.block  new.sentence  format.number.series output  format.publisher.address output  }  {  format.chapter.pages "chapter and pages" output.check  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  crossref missing$  { format.isbn output }  'skip$  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {incollection}  { "%Type = Incollection" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.chapter.pages output  new.sentence  format.number.series output  format.publisher.address output  format.edition output  format.isbn output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {inproceedings}  { "%Type = Inproceedings" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  new.sentence  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.isbn output  }  { format.incoll.inproc.crossref output.nonnull  }  if$  format.date "year" output.check  book.date.block  format.pages "pages" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { "%Type = Manual" write$  output.bibitem  format.authors output  author format.key output  new.block  format.btitle "title" output.check  organization address new.block.checkb  organization "organization" bibinfo.check output  address "address" bibinfo.check output  format.edition output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {mastersthesis}  { "%Type = Mastersthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  bbl.mthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {misc}  { "%Type = Misc" write$  output.bibitem  format.authors output  author format.key output  new.block  format.title output  new.block  howpublished "howpublished" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {phdthesis}  { "%Type = Phdthesis" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  bbl.phdthesis format.thesis.type output.nonnull  school "school" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {proceedings}  { "%Type = Proceedings" write$  output.bibitem  format.editors output  editor format.key output  new.block  format.btitle "title" output.check  format.bvolume output  new.sentence  format.number.series output  publisher empty$  { format.organization.address output }  { organization "organization" bibinfo.check output  format.publisher.address output  }  if$  format.date "year" output.check  format.isbn output  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {techreport}  { "%Type = Techreport" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title  "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" bibinfo.warn output  address "address" bibinfo.check output  format.date "year" output.check  format.doi output  new.block  format.note output  format.eprint output  format.url output  fin.entry  }  FUNCTION {unpublished}  { "%Type = Unpublished" write$  output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  format.date "year" output.check  format.doi output  new.block  format.note "note" output.check  format.eprint output  format.url output  fin.entry  }  FUNCTION {default.type} { misc }  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  "" 't :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$  " " * bbl.etal *  }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  {  " " * bbl.etal *  }  { bbl.and space.word * s #2 "{vv~}{ll}" format.name$  * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.label}  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.label  'author.key.label  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  { pop$ "????" }  { purify$ #-1 #4 substring$ }  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"  % "{vv~}{ll~}{\rd[f.f.]}{jj~}"  format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { t sortify * }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.sort}  { editor empty$  { key empty$  { "to sort, need editor or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  INTEGERS { seq.num }  FUNCTION {init.seq}  { #0 'seq.num :=}  EXECUTE {init.seq}  FUNCTION {int.to.fix}  { "000000000" swap$ int.to.str$ *  #-1 #10 substring$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  seq.num #1 + 'seq.num :=  seq.num int.to.fix  'sort.label :=  sort.label  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { last.label next.extra }  INTEGERS { last.extra.num number.label }  FUNCTION {initialize.extra.label.stuff}  { #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.extra.label.stuff}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label  " "  *  year field.or.null sortify  *  " "  *  title field.or.null  sort.format.title  *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\providecommand{\natexlab}[1]{#1}"  write$ newline$  "\providecommand{\url}[1]{\texttt{#1}}"  write$ newline$  "\providecommand{\urlprefix}{URL }"  write$ newline$  "\expandafter\ifx\csname urlstyle\endcsname\relax"  write$ newline$  " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"  write$ newline$  " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"  write$ newline$  "\providecommand{\eprint}[2][]{\url{#2}}"  write$ newline$  "\providecommand{\BIBand}{and}"  write$ newline$  "\providecommand{\bibinfo}[2]{#2}"  write$ newline$  "\ifx\xfnm\undefined \def\xfnm[#1]{\unskip,\space#1}\fi"  write$ newline$  "\makeatletter\def\@biblabel#1{#1.}\makeatother"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}  %% End of customized bst file  %%  %% End of file `model6-num-names.bst'.           

%%  %% This is file 'numcompress.sty',  %%  %% Copyright (C) 2009 River Valley Technologies   %%   %%   %% This file may be distributed and/or modified under the  %% conditions of the LaTeX Project Public License, either version 1.2  %% of this license or (at your option) any later version.  %% The latest version of this license is in  %% http://www.latex-project.org/lppl.txt  %% and version 1.2 or later is part of all distributions of LaTeX  %% version 1999/12/01 or later.  %%  %% $Id: numcompress.sty 144 2009-10-08 04:04:13Z rishi $  %%  %% $URL: http://lenova.river-valley.com/svn/elsbst/trunk/numcompress.sty $  %%  \newif\ifdots \dotstrue  \newif\ifnumcompress \numcompresstrue  \DeclareOption{dots}{\global\dotstrue}  \DeclareOption{nodots}{\global\dotsfalse}  \DeclareOption{compress}{\global\numcompresstrue}  \DeclareOption{nocompress}{\global\numcompressfalse}  \ProcessOptions  \def\removeDot#1{\def\tmp{#1}%  \ifx\tmp\@empty\else\@removeDot#1\@nil\fi}  \def\@removeDot#1\@nil{\edef\fchar{\expandafter\@car#1\@nil}%  \edef\rchar{\expandafter\@cdr#1!\@nil}%  \def\@xmltempa{.}\def\@xmltempb{!}%  \ifx\fchar\@xmltempb\relax\else%  \ifx\fchar\@xmltempa\relax\else%  \fchar\ignorespaces\fi\removeDot{\rchar}\fi}  \def\First[#1]{\csname First#1\endcsname}  \def\Second[#1]{\csname Second#1\endcsname}  \def\parseFirstPage#1{\@tempcnta=0  \@tfor\@digits:=#1\do{%  {\global\advance\@tempcnta by 1  \expandafter\xdef\csname  First\the\@tempcnta\endcsname{\@digits}%  \xdef\flength{\the\@tempcnta}}}}  \def\parseSecondPage#1{\@tempcnta=0  \@tfor\@digits:=#1\do{%  {\global\advance\@tempcnta by 1  \expandafter\xdef\csname  Second\the\@tempcnta\endcsname{\@digits}%  \xdef\llength{\the\@tempcnta}}}}  \newif\ifdissimilar\dissimilarfalse  \def\checkequal#1#2{\edef\Farg{#1}\edef\Sarg{#2}%  \edef\One{A}%  \ifcat\One\Farg \relax\else%  \ifdissimilar\Sarg\else%  \ifnum\Farg=\Sarg\relax\else\Sarg\dissimilartrue\fi\fi\fi}  %  \let\@@fpage\@empty  \let\@@lpage\@empty  \def\fpage@compress#1{%  \gdef\@@fpage{#1}%  \edef\llength{0}%  \parseFirstPage{#1}%  \ifnum\flength=\llength%  \gdef\@fpage{\@@fpage}%  \gdef\@lpage{%  \@ifundefined{Second1}{}{\checkequal{\First[1]}{\Second[1]}}%  \@ifundefined{Second2}{}{\checkequal{\First[2]}{\Second[2]}}%  \@ifundefined{Second3}{}{\checkequal{\First[3]}{\Second[3]}}%  \@ifundefined{Second4}{}{\checkequal{\First[4]}{\Second[4]}}%  \@ifundefined{Second5}{}{\checkequal{\First[5]}{\Second[5]}}%  }%  \else%  \gdef\@fpage{\@@fpage}%  \gdef\@lpage{\@@lpage}%  \fi}  \def\lpage@compress#1{%  \gdef\@@lpage{#1}%  \parseSecondPage{#1}%  \ifnum\flength=\llength%  \gdef\@fpage{\@@fpage}%  \gdef\@lpage{%  \edef\One{A}%  \edef\xFirst{\First[1]}%  \edef\xSecond{\Second[1]}%  \ifcat\One\xSecond\relax%  \ifx\xFirst\xSecond%  \@ifundefined{Second1}{}{\checkequal{\First[1]}{\Second[1]}}%  \@ifundefined{Second2}{}{\checkequal{\First[2]}{\Second[2]}}%  \@ifundefined{Second3}{}{\checkequal{\First[3]}{\Second[3]}}%  \@ifundefined{Second4}{}{\checkequal{\First[4]}{\Second[4]}}%  \@ifundefined{Second5}{}{\checkequal{\First[5]}{\Second[5]}}%  \else#1\fi%  \else%  \ifx\xFirst\xSecond%  \@ifundefined{Second1}{}{\checkequal{\First[1]}{\Second[1]}}%  \@ifundefined{Second2}{}{\checkequal{\First[2]}{\Second[2]}}%  \@ifundefined{Second3}{}{\checkequal{\First[3]}{\Second[3]}}%  \@ifundefined{Second4}{}{\checkequal{\First[4]}{\Second[4]}}%  \@ifundefined{Second5}{}{\checkequal{\First[5]}{\Second[5]}}%  \else#1\fi%  \fi%  }%  \else  \gdef\@fpage{\@@fpage}%  \gdef\@lpage{%  \edef\Targ{#1}%  \edef\One{A}%  \edef\xFirst{\First[1]}%  \edef\xSecond{\Second[1]}%  \ifx\xFirst\xSecond  \ifcat\One\xSecond\relax\else\@@lpage\fi%  \else#1\fi%  }%  \fi}  \newwrite\xx  \immediate\openout\xx=tmpbib.tex  \gdef\@@@pages#1#2{\def\next{#2}%  \immediate\write\xx{[\the\c@NAT@ctr.]\space [#1][#2]}%  \fpage@compress{#1}%\ifx\next\@empty\relax\else  \lpage@compress{#2}%\fi  {\@fpage\ifx\next\@empty\relax\else  --\@lpage\fi}\resetall}  \def\mk@empty#1{\@tempcnta=1  \loop\ifnum\@tempcnta<6  \expandafter\let\csname#1\the\@tempcnta\endcsname\relax  \advance\@tempcnta by 1 \repeat}  \def\resetall{\let\@lpage\@empty\let\@fpage\@empty  \def\flength{0}\def\llength{0}%  \let\@@fpage\@empty\let\@@lpage\@empty  \mk@empty{First}\mk@empty{Second}}  \ifdots  \gdef\xfnm[#1]{\unskip\space#1}  \def\bibinfo#1#2{\@ifnextchar.{\@@bibinfo{#1}{#2}}{\@@@bibinfo{#1}{#2}}}  \def\@@@bibinfo#1#2{\def\next{#1}%  \def\@@@pg{pages}\def\@@@au{author}%  \ifx\next\@@@pg\bibpages{#2}\else  \ifx\next\@@@au\bibauthor{#2}\else  #2\fi\fi}  \def\@@bibinfo#1#2.{\def\next{#1}%  \def\@@@pg{pages}\def\@@@au{author}%  \ifx\next\@@@pg\bibpages{#2}.\else  \ifx\next\@@@au\bibauthor{#2}\else  #2.\fi\fi}  \else  \gdef\xfnm[#1]{\unskip\space\removeDot{#1}}  \def\bibinfo#1#2{\def\next{#1}%  \def\@@@pg{pages}\def\@@@au{author}%  \ifx\next\@@@pg\bibpages{#2}\else  \ifx\next\@@@au\bibauthor{#2}\else  #2\fi\fi}  \fi  \ifnumcompress  \def\bibpages#1{\@@bibpages#1\@nil}  \def\@@bibpages#1--#2\@nil{\@@@pages{#1}{#2}}  \else  \def\bibpages#1{#1}  \fi  \def\bibauthor#1{#1}