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