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