~hnarayanan/+junk/mechanics

« back to all changes in this revision

Viewing changes to mechanics.bst

  • Committer: Harish Narayanan
  • Date: 2010-02-18 11:55:47 UTC
  • Revision ID: harish@megatr0n.local-20100218115547-xh1r4sfqb0q032ou
Initial creation of the repository

Show diffs side-by-side

added added

removed removed

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