]> AND Private Git Repository - JournalMultiRounds.git/blob - elsarticle-num-names.bst
Logo AND Algorithmique Numérique Distribuée

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