Mercurial > ift6266
comparison writeup/mlj_submission/spbasic.bst @ 592:0cf2c4f9ed79
added springer latex stuff
author | fsavard |
---|---|
date | Thu, 30 Sep 2010 18:00:37 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
591:8bd4ff0c5c05 | 592:0cf2c4f9ed79 |
---|---|
1 %% | |
2 %% This is file `spbasic.bst', | |
3 %% generated with the docstrip utility. | |
4 %% | |
5 %% The original source files were: | |
6 %% | |
7 %% merlin.mbs (with options: `ay,nat,seq-lab,vonx,nm-rvx,ed-rev,jnrlst,dt-beg,yr-par,yrp-x,yrpp-xsp,note-yr,jxper,jttl-rm,thtit-a,pgsep-c,num-xser,ser-vol,jnm-x,btit-rm,bt-rm,pre-pub,doi,edparxc,blk-tit,in-col,fin-bare,pp,ed,abr,mth-bare,ord,jabr,xand,eprint,url,url-blk,em-x,nfss,') | |
8 %% ---------------------------------------- | |
9 %% | |
10 %%********************************************************************************%% | |
11 %% %% | |
12 %% For Springer medical, life sciences, chemistry, geology, engineering and %% | |
13 %% computer science publications. %% | |
14 %% For use with the natbib package (see below). Default is author-year citations. %% | |
15 %% When citations are numbered, please use \usepackage[numbers]{natbib}. %% | |
16 %% A lack of punctuation is the key feature. Springer-Verlag 2004/10/15 %% | |
17 %% Report bugs and improvements to: Joylene Vette-Guillaume or Frank Holzwarth %% | |
18 %% %% | |
19 %%********************************************************************************%% | |
20 %% | |
21 %% Copyright 1994-2004 Patrick W Daly | |
22 % =============================================================== | |
23 % IMPORTANT NOTICE: | |
24 % This bibliographic style (bst) file has been generated from one or | |
25 % more master bibliographic style (mbs) files, listed above. | |
26 % | |
27 % This generated file can be redistributed and/or modified under the terms | |
28 % of the LaTeX Project Public License Distributed from CTAN | |
29 % archives in directory macros/latex/base/lppl.txt; either | |
30 % version 1 of the License, or any later version. | |
31 % =============================================================== | |
32 % Name and version information of the main mbs file: | |
33 % \ProvidesFile{merlin.mbs}[2004/02/09 4.13 (PWD, AO, DPC)] | |
34 % For use with BibTeX version 0.99a or later | |
35 %------------------------------------------------------------------- | |
36 % This bibliography style file is intended for texts in ENGLISH | |
37 % This is an author-year citation style bibliography. As such, it is | |
38 % non-standard LaTeX, and requires a special package file to function properly. | |
39 % Such a package is natbib.sty by Patrick W. Daly | |
40 % The form of the \bibitem entries is | |
41 % \bibitem[Jones et al.(1990)]{key}... | |
42 % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... | |
43 % The essential feature is that the label (the part in brackets) consists | |
44 % of the author names, as they should appear in the citation, with the year | |
45 % in parentheses following. There must be no space before the opening | |
46 % parenthesis! | |
47 % With natbib v5.3, a full list of authors may also follow the year. | |
48 % In natbib.sty, it is possible to define the type of enclosures that is | |
49 % really wanted (brackets or parentheses), but in either case, there must | |
50 % be parentheses in the label. | |
51 % The \cite command functions as follows: | |
52 % \citet{key} ==>> Jones et al. (1990) | |
53 % \citet*{key} ==>> Jones, Baker, and Smith (1990) | |
54 % \citep{key} ==>> (Jones et al., 1990) | |
55 % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) | |
56 % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) | |
57 % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) | |
58 % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) | |
59 % \citeauthor{key} ==>> Jones et al. | |
60 % \citeauthor*{key} ==>> Jones, Baker, and Smith | |
61 % \citeyear{key} ==>> 1990 | |
62 %--------------------------------------------------------------------- | |
63 | |
64 ENTRY | |
65 { address | |
66 archive | |
67 author | |
68 booktitle | |
69 chapter | |
70 doi | |
71 edition | |
72 editor | |
73 eid | |
74 eprint | |
75 howpublished | |
76 institution | |
77 journal | |
78 key | |
79 month | |
80 note | |
81 number | |
82 organization | |
83 pages | |
84 publisher | |
85 school | |
86 series | |
87 title | |
88 type | |
89 url | |
90 volume | |
91 year | |
92 } | |
93 {} | |
94 { label extra.label sort.label short.list } | |
95 INTEGERS { output.state before.all mid.sentence after.sentence after.block } | |
96 FUNCTION {init.state.consts} | |
97 { #0 'before.all := | |
98 #1 'mid.sentence := | |
99 #2 'after.sentence := | |
100 #3 'after.block := | |
101 } | |
102 STRINGS { s t} | |
103 FUNCTION {output.nonnull} | |
104 { 's := | |
105 output.state mid.sentence = | |
106 { ", " * write$ } | |
107 { output.state after.block = | |
108 { add.period$ write$ | |
109 newline$ | |
110 "\newblock " write$ | |
111 } | |
112 { output.state before.all = | |
113 'write$ | |
114 { add.period$ " " * write$ } | |
115 if$ | |
116 } | |
117 if$ | |
118 mid.sentence 'output.state := | |
119 } | |
120 if$ | |
121 s | |
122 } | |
123 FUNCTION {output} | |
124 { duplicate$ empty$ | |
125 'pop$ | |
126 'output.nonnull | |
127 if$ | |
128 } | |
129 FUNCTION {output.check} | |
130 { 't := | |
131 duplicate$ empty$ | |
132 { pop$ "empty " t * " in " * cite$ * warning$ } | |
133 'output.nonnull | |
134 if$ | |
135 } | |
136 FUNCTION {fin.entry} | |
137 { duplicate$ empty$ | |
138 'pop$ | |
139 'write$ | |
140 if$ | |
141 newline$ | |
142 } | |
143 | |
144 FUNCTION {new.block} | |
145 { output.state before.all = | |
146 'skip$ | |
147 { after.block 'output.state := } | |
148 if$ | |
149 } | |
150 FUNCTION {new.sentence} | |
151 { output.state after.block = | |
152 'skip$ | |
153 { output.state before.all = | |
154 'skip$ | |
155 { after.sentence 'output.state := } | |
156 if$ | |
157 } | |
158 if$ | |
159 } | |
160 FUNCTION {add.blank} | |
161 { " " * before.all 'output.state := | |
162 } | |
163 | |
164 FUNCTION {no.blank.or.punct} | |
165 { "\hspace{0pt}" * before.all 'output.state := | |
166 } | |
167 | |
168 FUNCTION {date.block} | |
169 { | |
170 add.blank | |
171 } | |
172 | |
173 FUNCTION {not} | |
174 { { #0 } | |
175 { #1 } | |
176 if$ | |
177 } | |
178 FUNCTION {and} | |
179 { 'skip$ | |
180 { pop$ #0 } | |
181 if$ | |
182 } | |
183 FUNCTION {or} | |
184 { { pop$ #1 } | |
185 'skip$ | |
186 if$ | |
187 } | |
188 STRINGS {z} | |
189 FUNCTION {remove.dots} | |
190 { 'z := | |
191 "" | |
192 { z empty$ not } | |
193 { z #1 #1 substring$ | |
194 z #2 global.max$ substring$ 'z := | |
195 duplicate$ "." = 'pop$ | |
196 { * } | |
197 if$ | |
198 } | |
199 while$ | |
200 } | |
201 FUNCTION {new.block.checkb} | |
202 { empty$ | |
203 swap$ empty$ | |
204 and | |
205 'skip$ | |
206 'new.block | |
207 if$ | |
208 } | |
209 FUNCTION {field.or.null} | |
210 { duplicate$ empty$ | |
211 { pop$ "" } | |
212 'skip$ | |
213 if$ | |
214 } | |
215 FUNCTION {emphasize} | |
216 { skip$ } | |
217 FUNCTION {tie.or.space.prefix} | |
218 { duplicate$ text.length$ #3 < | |
219 { "~" } | |
220 { " " } | |
221 if$ | |
222 swap$ | |
223 } | |
224 | |
225 FUNCTION {capitalize} | |
226 { "u" change.case$ "t" change.case$ } | |
227 | |
228 FUNCTION {space.word} | |
229 { " " swap$ * " " * } | |
230 % Here are the language-specific definitions for explicit words. | |
231 % Each function has a name bbl.xxx where xxx is the English word. | |
232 % The language selected here is ENGLISH | |
233 FUNCTION {bbl.and} | |
234 { "and"} | |
235 | |
236 FUNCTION {bbl.etal} | |
237 { "et~al" } | |
238 | |
239 FUNCTION {bbl.editors} | |
240 { "eds" } | |
241 | |
242 FUNCTION {bbl.editor} | |
243 { "ed" } | |
244 | |
245 FUNCTION {bbl.edby} | |
246 { "edited by" } | |
247 | |
248 FUNCTION {bbl.edition} | |
249 { "edn" } | |
250 | |
251 FUNCTION {bbl.volume} | |
252 { "vol" } | |
253 | |
254 FUNCTION {bbl.of} | |
255 { "of" } | |
256 | |
257 FUNCTION {bbl.number} | |
258 { "no." } | |
259 | |
260 FUNCTION {bbl.nr} | |
261 { "no." } | |
262 | |
263 FUNCTION {bbl.in} | |
264 { "in" } | |
265 | |
266 FUNCTION {bbl.pages} | |
267 { "pp" } | |
268 | |
269 FUNCTION {bbl.page} | |
270 { "p" } | |
271 | |
272 FUNCTION {bbl.chapter} | |
273 { "chap" } | |
274 | |
275 FUNCTION {bbl.techrep} | |
276 { "Tech. Rep." } | |
277 | |
278 FUNCTION {bbl.mthesis} | |
279 { "Master's thesis" } | |
280 | |
281 FUNCTION {bbl.phdthesis} | |
282 { "PhD thesis" } | |
283 | |
284 FUNCTION {bbl.first} | |
285 { "1st" } | |
286 | |
287 FUNCTION {bbl.second} | |
288 { "2nd" } | |
289 | |
290 FUNCTION {bbl.third} | |
291 { "3rd" } | |
292 | |
293 FUNCTION {bbl.fourth} | |
294 { "4th" } | |
295 | |
296 FUNCTION {bbl.fifth} | |
297 { "5th" } | |
298 | |
299 FUNCTION {bbl.st} | |
300 { "st" } | |
301 | |
302 FUNCTION {bbl.nd} | |
303 { "nd" } | |
304 | |
305 FUNCTION {bbl.rd} | |
306 { "rd" } | |
307 | |
308 FUNCTION {bbl.th} | |
309 { "th" } | |
310 | |
311 MACRO {jan} {"Jan."} | |
312 | |
313 MACRO {feb} {"Feb."} | |
314 | |
315 MACRO {mar} {"Mar."} | |
316 | |
317 MACRO {apr} {"Apr."} | |
318 | |
319 MACRO {may} {"May"} | |
320 | |
321 MACRO {jun} {"Jun."} | |
322 | |
323 MACRO {jul} {"Jul."} | |
324 | |
325 MACRO {aug} {"Aug."} | |
326 | |
327 MACRO {sep} {"Sep."} | |
328 | |
329 MACRO {oct} {"Oct."} | |
330 | |
331 MACRO {nov} {"Nov."} | |
332 | |
333 MACRO {dec} {"Dec."} | |
334 | |
335 FUNCTION {eng.ord} | |
336 { duplicate$ "1" swap$ * | |
337 #-2 #1 substring$ "1" = | |
338 { bbl.th * } | |
339 { duplicate$ #-1 #1 substring$ | |
340 duplicate$ "1" = | |
341 { pop$ bbl.st * } | |
342 { duplicate$ "2" = | |
343 { pop$ bbl.nd * } | |
344 { "3" = | |
345 { bbl.rd * } | |
346 { bbl.th * } | |
347 if$ | |
348 } | |
349 if$ | |
350 } | |
351 if$ | |
352 } | |
353 if$ | |
354 } | |
355 | |
356 MACRO {acmcs} {"ACM Comput Surv"} | |
357 | |
358 MACRO {acta} {"Acta Inf"} | |
359 | |
360 MACRO {cacm} {"Commun ACM"} | |
361 | |
362 MACRO {ibmjrd} {"IBM~J~Res Dev"} | |
363 | |
364 MACRO {ibmsj} {"IBM Syst~J"} | |
365 | |
366 MACRO {ieeese} {"IEEE Trans Softw Eng"} | |
367 | |
368 MACRO {ieeetc} {"IEEE Trans Comput"} | |
369 | |
370 MACRO {ieeetcad} | |
371 {"IEEE Trans Comput Aid Des"} | |
372 | |
373 MACRO {ipl} {"Inf Process Lett"} | |
374 | |
375 MACRO {jacm} {"J~ACM"} | |
376 | |
377 MACRO {jcss} {"J~Comput Syst Sci"} | |
378 | |
379 MACRO {scp} {"Sci Comput Program"} | |
380 | |
381 MACRO {sicomp} {"SIAM J~Comput"} | |
382 | |
383 MACRO {tocs} {"ACM Trans Comput Syst"} | |
384 | |
385 MACRO {tods} {"ACM Trans Database Syst"} | |
386 | |
387 MACRO {tog} {"ACM Trans Graphic"} | |
388 | |
389 MACRO {toms} {"ACM Trans Math Softw"} | |
390 | |
391 MACRO {toois} {"ACM Trans Office Inf Syst"} | |
392 | |
393 MACRO {toplas} {"ACM Trans Program Lang Syst"} | |
394 | |
395 MACRO {tcs} {"Theor Comput Sci"} | |
396 | |
397 FUNCTION {bibinfo.check} | |
398 { swap$ | |
399 duplicate$ missing$ | |
400 { | |
401 pop$ pop$ | |
402 "" | |
403 } | |
404 { duplicate$ empty$ | |
405 { | |
406 swap$ pop$ | |
407 } | |
408 { swap$ | |
409 pop$ | |
410 } | |
411 if$ | |
412 } | |
413 if$ | |
414 } | |
415 FUNCTION {bibinfo.warn} | |
416 { swap$ | |
417 duplicate$ missing$ | |
418 { | |
419 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ | |
420 "" | |
421 } | |
422 { duplicate$ empty$ | |
423 { | |
424 swap$ "empty " swap$ * " in " * cite$ * warning$ | |
425 } | |
426 { swap$ | |
427 pop$ | |
428 } | |
429 if$ | |
430 } | |
431 if$ | |
432 } | |
433 FUNCTION {format.eprint} | |
434 { eprint duplicate$ empty$ | |
435 'skip$ | |
436 { "\eprint" | |
437 archive empty$ | |
438 'skip$ | |
439 { "[" * archive * "]" * } | |
440 if$ | |
441 "{" * swap$ * "}" * | |
442 } | |
443 if$ | |
444 } | |
445 FUNCTION {format.url} | |
446 { url empty$ | |
447 { "" } | |
448 { "\urlprefix\url{" url * "}" * } | |
449 if$ | |
450 } | |
451 | |
452 STRINGS { bibinfo} | |
453 INTEGERS { nameptr namesleft numnames } | |
454 | |
455 FUNCTION {format.names} | |
456 { 'bibinfo := | |
457 duplicate$ empty$ 'skip$ { | |
458 's := | |
459 "" 't := | |
460 #1 'nameptr := | |
461 s num.names$ 'numnames := | |
462 numnames 'namesleft := | |
463 { namesleft #0 > } | |
464 { s nameptr | |
465 "{vv~}{ll}{ f{}}{ jj}" | |
466 format.name$ | |
467 remove.dots | |
468 bibinfo bibinfo.check | |
469 't := | |
470 nameptr #1 > | |
471 { | |
472 namesleft #1 > | |
473 { ", " * t * } | |
474 { | |
475 "," * | |
476 s nameptr "{ll}" format.name$ duplicate$ "others" = | |
477 { 't := } | |
478 { pop$ } | |
479 if$ | |
480 t "others" = | |
481 { | |
482 " " * bbl.etal * | |
483 } | |
484 { " " * t * } | |
485 if$ | |
486 } | |
487 if$ | |
488 } | |
489 't | |
490 if$ | |
491 nameptr #1 + 'nameptr := | |
492 namesleft #1 - 'namesleft := | |
493 } | |
494 while$ | |
495 } if$ | |
496 } | |
497 FUNCTION {format.names.ed} | |
498 { | |
499 format.names | |
500 } | |
501 FUNCTION {format.key} | |
502 { empty$ | |
503 { key field.or.null } | |
504 { "" } | |
505 if$ | |
506 } | |
507 | |
508 FUNCTION {format.authors} | |
509 { author "author" format.names | |
510 } | |
511 FUNCTION {get.bbl.editor} | |
512 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } | |
513 | |
514 FUNCTION {format.editors} | |
515 { editor "editor" format.names duplicate$ empty$ 'skip$ | |
516 { | |
517 " " * | |
518 get.bbl.editor | |
519 "(" swap$ * ")" * | |
520 * | |
521 } | |
522 if$ | |
523 } | |
524 FUNCTION {format.doi} | |
525 { doi "doi" bibinfo.check | |
526 duplicate$ empty$ 'skip$ | |
527 { | |
528 "\doi{" swap$ * "}" * | |
529 } | |
530 if$ | |
531 } | |
532 FUNCTION {format.note} | |
533 { | |
534 note empty$ | |
535 { "" } | |
536 { note #1 #1 substring$ | |
537 duplicate$ "{" = | |
538 'skip$ | |
539 { output.state mid.sentence = | |
540 { "l" } | |
541 { "u" } | |
542 if$ | |
543 change.case$ | |
544 } | |
545 if$ | |
546 note #2 global.max$ substring$ * "note" bibinfo.check | |
547 } | |
548 if$ | |
549 } | |
550 | |
551 FUNCTION {format.title} | |
552 { title | |
553 duplicate$ empty$ 'skip$ | |
554 { "t" change.case$ } | |
555 if$ | |
556 "title" bibinfo.check | |
557 } | |
558 FUNCTION {format.full.names} | |
559 {'s := | |
560 "" 't := | |
561 #1 'nameptr := | |
562 s num.names$ 'numnames := | |
563 numnames 'namesleft := | |
564 { namesleft #0 > } | |
565 { s nameptr | |
566 "{vv~}{ll}" format.name$ | |
567 't := | |
568 nameptr #1 > | |
569 { | |
570 namesleft #1 > | |
571 { ", " * t * } | |
572 { | |
573 s nameptr "{ll}" format.name$ duplicate$ "others" = | |
574 { 't := } | |
575 { pop$ } | |
576 if$ | |
577 t "others" = | |
578 { | |
579 " " * bbl.etal * | |
580 } | |
581 { | |
582 numnames #2 > | |
583 { "," * } | |
584 'skip$ | |
585 if$ | |
586 bbl.and | |
587 space.word * t * | |
588 } | |
589 if$ | |
590 } | |
591 if$ | |
592 } | |
593 't | |
594 if$ | |
595 nameptr #1 + 'nameptr := | |
596 namesleft #1 - 'namesleft := | |
597 } | |
598 while$ | |
599 } | |
600 | |
601 FUNCTION {author.editor.key.full} | |
602 { author empty$ | |
603 { editor empty$ | |
604 { key empty$ | |
605 { cite$ #1 #3 substring$ } | |
606 'key | |
607 if$ | |
608 } | |
609 { editor format.full.names } | |
610 if$ | |
611 } | |
612 { author format.full.names } | |
613 if$ | |
614 } | |
615 | |
616 FUNCTION {author.key.full} | |
617 { author empty$ | |
618 { key empty$ | |
619 { cite$ #1 #3 substring$ } | |
620 'key | |
621 if$ | |
622 } | |
623 { author format.full.names } | |
624 if$ | |
625 } | |
626 | |
627 FUNCTION {editor.key.full} | |
628 { editor empty$ | |
629 { key empty$ | |
630 { cite$ #1 #3 substring$ } | |
631 'key | |
632 if$ | |
633 } | |
634 { editor format.full.names } | |
635 if$ | |
636 } | |
637 | |
638 FUNCTION {make.full.names} | |
639 { type$ "book" = | |
640 type$ "inbook" = | |
641 or | |
642 'author.editor.key.full | |
643 { type$ "proceedings" = | |
644 'editor.key.full | |
645 'author.key.full | |
646 if$ | |
647 } | |
648 if$ | |
649 } | |
650 | |
651 FUNCTION {output.bibitem} | |
652 { newline$ | |
653 "\bibitem[{" write$ | |
654 label write$ | |
655 ")" make.full.names duplicate$ short.list = | |
656 { pop$ } | |
657 { * } | |
658 if$ | |
659 "}]{" * write$ | |
660 cite$ write$ | |
661 "}" write$ | |
662 newline$ | |
663 "" | |
664 before.all 'output.state := | |
665 } | |
666 | |
667 FUNCTION {add.period} | |
668 { duplicate$ empty$ | |
669 'skip$ | |
670 { "." * add.blank } | |
671 if$ | |
672 } | |
673 | |
674 FUNCTION {if.digit} | |
675 { duplicate$ "0" = | |
676 swap$ duplicate$ "1" = | |
677 swap$ duplicate$ "2" = | |
678 swap$ duplicate$ "3" = | |
679 swap$ duplicate$ "4" = | |
680 swap$ duplicate$ "5" = | |
681 swap$ duplicate$ "6" = | |
682 swap$ duplicate$ "7" = | |
683 swap$ duplicate$ "8" = | |
684 swap$ "9" = or or or or or or or or or | |
685 } | |
686 FUNCTION {n.separate} | |
687 { 't := | |
688 "" | |
689 #0 'numnames := | |
690 { t empty$ not } | |
691 { t #-1 #1 substring$ if.digit | |
692 { numnames #1 + 'numnames := } | |
693 { #0 'numnames := } | |
694 if$ | |
695 t #-1 #1 substring$ swap$ * | |
696 t #-2 global.max$ substring$ 't := | |
697 numnames #5 = | |
698 { duplicate$ #1 #2 substring$ swap$ | |
699 #3 global.max$ substring$ | |
700 "," swap$ * * | |
701 } | |
702 'skip$ | |
703 if$ | |
704 } | |
705 while$ | |
706 } | |
707 FUNCTION {n.dashify} | |
708 { | |
709 n.separate | |
710 't := | |
711 "" | |
712 { t empty$ not } | |
713 { t #1 #1 substring$ "-" = | |
714 { t #1 #2 substring$ "--" = not | |
715 { "--" * | |
716 t #2 global.max$ substring$ 't := | |
717 } | |
718 { { t #1 #1 substring$ "-" = } | |
719 { "-" * | |
720 t #2 global.max$ substring$ 't := | |
721 } | |
722 while$ | |
723 } | |
724 if$ | |
725 } | |
726 { t #1 #1 substring$ * | |
727 t #2 global.max$ substring$ 't := | |
728 } | |
729 if$ | |
730 } | |
731 while$ | |
732 } | |
733 | |
734 FUNCTION {word.in} | |
735 { bbl.in capitalize | |
736 ":" * | |
737 " " * } | |
738 | |
739 FUNCTION {format.date} | |
740 { year "year" bibinfo.check duplicate$ empty$ | |
741 { | |
742 "empty year in " cite$ * "; set to ????" * warning$ | |
743 pop$ "????" | |
744 } | |
745 'skip$ | |
746 if$ | |
747 extra.label * | |
748 before.all 'output.state := | |
749 " (" swap$ * ")" * | |
750 } | |
751 FUNCTION {format.btitle} | |
752 { title "title" bibinfo.check | |
753 duplicate$ empty$ 'skip$ | |
754 { | |
755 } | |
756 if$ | |
757 } | |
758 FUNCTION {either.or.check} | |
759 { empty$ | |
760 'pop$ | |
761 { "can't use both " swap$ * " fields in " * cite$ * warning$ } | |
762 if$ | |
763 } | |
764 FUNCTION {format.bvolume} | |
765 { volume empty$ | |
766 { "" } | |
767 { bbl.volume volume tie.or.space.prefix | |
768 "volume" bibinfo.check * * | |
769 series "series" bibinfo.check | |
770 duplicate$ empty$ 'pop$ | |
771 { emphasize ", " * swap$ * } | |
772 if$ | |
773 "volume and number" number either.or.check | |
774 } | |
775 if$ | |
776 } | |
777 FUNCTION {format.number.series} | |
778 { volume empty$ | |
779 { number empty$ | |
780 { series field.or.null } | |
781 { series empty$ | |
782 { number "number" bibinfo.check } | |
783 { output.state mid.sentence = | |
784 { bbl.number } | |
785 { bbl.number capitalize } | |
786 if$ | |
787 number tie.or.space.prefix "number" bibinfo.check * * | |
788 bbl.in space.word * | |
789 series "series" bibinfo.check * | |
790 } | |
791 if$ | |
792 } | |
793 if$ | |
794 } | |
795 { "" } | |
796 if$ | |
797 } | |
798 FUNCTION {is.num} | |
799 { chr.to.int$ | |
800 duplicate$ "0" chr.to.int$ < not | |
801 swap$ "9" chr.to.int$ > not and | |
802 } | |
803 | |
804 FUNCTION {extract.num} | |
805 { duplicate$ 't := | |
806 "" 's := | |
807 { t empty$ not } | |
808 { t #1 #1 substring$ | |
809 t #2 global.max$ substring$ 't := | |
810 duplicate$ is.num | |
811 { s swap$ * 's := } | |
812 { pop$ "" 't := } | |
813 if$ | |
814 } | |
815 while$ | |
816 s empty$ | |
817 'skip$ | |
818 { pop$ s } | |
819 if$ | |
820 } | |
821 | |
822 FUNCTION {convert.edition} | |
823 { extract.num "l" change.case$ 's := | |
824 s "first" = s "1" = or | |
825 { bbl.first 't := } | |
826 { s "second" = s "2" = or | |
827 { bbl.second 't := } | |
828 { s "third" = s "3" = or | |
829 { bbl.third 't := } | |
830 { s "fourth" = s "4" = or | |
831 { bbl.fourth 't := } | |
832 { s "fifth" = s "5" = or | |
833 { bbl.fifth 't := } | |
834 { s #1 #1 substring$ is.num | |
835 { s eng.ord 't := } | |
836 { edition 't := } | |
837 if$ | |
838 } | |
839 if$ | |
840 } | |
841 if$ | |
842 } | |
843 if$ | |
844 } | |
845 if$ | |
846 } | |
847 if$ | |
848 t | |
849 } | |
850 | |
851 FUNCTION {format.edition} | |
852 { edition duplicate$ empty$ 'skip$ | |
853 { | |
854 convert.edition | |
855 output.state mid.sentence = | |
856 { "l" } | |
857 { "t" } | |
858 if$ change.case$ | |
859 "edition" bibinfo.check | |
860 " " * bbl.edition * | |
861 } | |
862 if$ | |
863 } | |
864 INTEGERS { multiresult } | |
865 FUNCTION {multi.page.check} | |
866 { 't := | |
867 #0 'multiresult := | |
868 { multiresult not | |
869 t empty$ not | |
870 and | |
871 } | |
872 { t #1 #1 substring$ | |
873 duplicate$ "-" = | |
874 swap$ duplicate$ "," = | |
875 swap$ "+" = | |
876 or or | |
877 { #1 'multiresult := } | |
878 { t #2 global.max$ substring$ 't := } | |
879 if$ | |
880 } | |
881 while$ | |
882 multiresult | |
883 } | |
884 FUNCTION {format.pages} | |
885 { pages duplicate$ empty$ 'skip$ | |
886 { duplicate$ multi.page.check | |
887 { | |
888 bbl.pages swap$ | |
889 n.dashify | |
890 } | |
891 { | |
892 bbl.page swap$ | |
893 } | |
894 if$ | |
895 tie.or.space.prefix | |
896 "pages" bibinfo.check | |
897 * * | |
898 } | |
899 if$ | |
900 } | |
901 FUNCTION {format.journal.pages} | |
902 { pages duplicate$ empty$ 'pop$ | |
903 { swap$ duplicate$ empty$ | |
904 { pop$ pop$ format.pages } | |
905 { | |
906 ":" * | |
907 swap$ | |
908 n.dashify | |
909 "pages" bibinfo.check | |
910 * | |
911 } | |
912 if$ | |
913 } | |
914 if$ | |
915 } | |
916 FUNCTION {format.journal.eid} | |
917 { eid "eid" bibinfo.check | |
918 duplicate$ empty$ 'pop$ | |
919 { swap$ duplicate$ empty$ 'skip$ | |
920 { | |
921 ":" * | |
922 } | |
923 if$ | |
924 swap$ * | |
925 } | |
926 if$ | |
927 } | |
928 FUNCTION {format.vol.num.pages} | |
929 { volume field.or.null | |
930 duplicate$ empty$ 'skip$ | |
931 { | |
932 "volume" bibinfo.check | |
933 } | |
934 if$ | |
935 number "number" bibinfo.check duplicate$ empty$ 'skip$ | |
936 { | |
937 swap$ duplicate$ empty$ | |
938 { "there's a number but no volume in " cite$ * warning$ } | |
939 'skip$ | |
940 if$ | |
941 swap$ | |
942 "(" swap$ * ")" * | |
943 } | |
944 if$ * | |
945 eid empty$ | |
946 { format.journal.pages } | |
947 { format.journal.eid } | |
948 if$ | |
949 } | |
950 | |
951 FUNCTION {format.chapter.pages} | |
952 { chapter empty$ | |
953 'format.pages | |
954 { type empty$ | |
955 { bbl.chapter } | |
956 { type "l" change.case$ | |
957 "type" bibinfo.check | |
958 } | |
959 if$ | |
960 chapter tie.or.space.prefix | |
961 "chapter" bibinfo.check | |
962 * * | |
963 pages empty$ | |
964 'skip$ | |
965 { ", " * format.pages * } | |
966 if$ | |
967 } | |
968 if$ | |
969 } | |
970 | |
971 FUNCTION {format.booktitle} | |
972 { | |
973 booktitle "booktitle" bibinfo.check | |
974 } | |
975 FUNCTION {format.in.ed.booktitle} | |
976 { format.booktitle duplicate$ empty$ 'skip$ | |
977 { | |
978 editor "editor" format.names.ed duplicate$ empty$ 'pop$ | |
979 { | |
980 " " * | |
981 get.bbl.editor | |
982 "(" swap$ * ") " * | |
983 * swap$ | |
984 * } | |
985 if$ | |
986 word.in swap$ * | |
987 } | |
988 if$ | |
989 } | |
990 FUNCTION {format.thesis.type} | |
991 { type duplicate$ empty$ | |
992 'pop$ | |
993 { swap$ pop$ | |
994 "t" change.case$ "type" bibinfo.check | |
995 } | |
996 if$ | |
997 } | |
998 FUNCTION {format.tr.number} | |
999 { number "number" bibinfo.check | |
1000 type duplicate$ empty$ | |
1001 { pop$ bbl.techrep } | |
1002 'skip$ | |
1003 if$ | |
1004 "type" bibinfo.check | |
1005 swap$ duplicate$ empty$ | |
1006 { pop$ "t" change.case$ } | |
1007 { tie.or.space.prefix * * } | |
1008 if$ | |
1009 } | |
1010 FUNCTION {format.article.crossref} | |
1011 { | |
1012 word.in | |
1013 " \cite{" * crossref * "}" * | |
1014 } | |
1015 FUNCTION {format.book.crossref} | |
1016 { volume duplicate$ empty$ | |
1017 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | |
1018 pop$ word.in | |
1019 } | |
1020 { bbl.volume | |
1021 capitalize | |
1022 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * | |
1023 } | |
1024 if$ | |
1025 " \cite{" * crossref * "}" * | |
1026 } | |
1027 FUNCTION {format.incoll.inproc.crossref} | |
1028 { | |
1029 word.in | |
1030 " \cite{" * crossref * "}" * | |
1031 } | |
1032 FUNCTION {format.org.or.pub} | |
1033 { 't := | |
1034 "" | |
1035 address empty$ t empty$ and | |
1036 'skip$ | |
1037 { | |
1038 t empty$ | |
1039 { address "address" bibinfo.check * | |
1040 } | |
1041 { t * | |
1042 address empty$ | |
1043 'skip$ | |
1044 { ", " * address "address" bibinfo.check * } | |
1045 if$ | |
1046 } | |
1047 if$ | |
1048 } | |
1049 if$ | |
1050 } | |
1051 FUNCTION {format.publisher.address} | |
1052 { publisher "publisher" bibinfo.warn format.org.or.pub | |
1053 } | |
1054 | |
1055 FUNCTION {format.organization.address} | |
1056 { organization "organization" bibinfo.check format.org.or.pub | |
1057 } | |
1058 | |
1059 FUNCTION {article} | |
1060 { output.bibitem | |
1061 format.authors "author" output.check | |
1062 author format.key output | |
1063 format.date "year" output.check | |
1064 date.block | |
1065 format.title "title" output.check | |
1066 new.sentence | |
1067 crossref missing$ | |
1068 { | |
1069 journal | |
1070 remove.dots | |
1071 "journal" bibinfo.check | |
1072 "journal" output.check | |
1073 add.blank | |
1074 format.vol.num.pages output | |
1075 } | |
1076 { format.article.crossref output.nonnull | |
1077 format.pages output | |
1078 } | |
1079 if$ | |
1080 format.doi output | |
1081 format.url output | |
1082 format.note output | |
1083 format.eprint output | |
1084 fin.entry | |
1085 } | |
1086 FUNCTION {book} | |
1087 { output.bibitem | |
1088 author empty$ | |
1089 { format.editors "author and editor" output.check | |
1090 editor format.key output | |
1091 add.blank | |
1092 } | |
1093 { format.authors output.nonnull | |
1094 crossref missing$ | |
1095 { "author and editor" editor either.or.check } | |
1096 'skip$ | |
1097 if$ | |
1098 } | |
1099 if$ | |
1100 format.date "year" output.check | |
1101 date.block | |
1102 format.btitle "title" output.check | |
1103 crossref missing$ | |
1104 { format.bvolume output | |
1105 format.edition output | |
1106 new.sentence | |
1107 format.number.series output | |
1108 format.publisher.address output | |
1109 } | |
1110 { | |
1111 new.sentence | |
1112 format.book.crossref output.nonnull | |
1113 } | |
1114 if$ | |
1115 format.doi output | |
1116 format.url output | |
1117 format.note output | |
1118 format.eprint output | |
1119 fin.entry | |
1120 } | |
1121 FUNCTION {booklet} | |
1122 { output.bibitem | |
1123 format.authors output | |
1124 author format.key output | |
1125 format.date "year" output.check | |
1126 date.block | |
1127 format.title "title" output.check | |
1128 new.sentence | |
1129 howpublished "howpublished" bibinfo.check output | |
1130 address "address" bibinfo.check output | |
1131 format.doi output | |
1132 format.url output | |
1133 format.note output | |
1134 format.eprint output | |
1135 fin.entry | |
1136 } | |
1137 | |
1138 FUNCTION {inbook} | |
1139 { output.bibitem | |
1140 author empty$ | |
1141 { format.editors "author and editor" output.check | |
1142 editor format.key output | |
1143 } | |
1144 { format.authors output.nonnull | |
1145 crossref missing$ | |
1146 { "author and editor" editor either.or.check } | |
1147 'skip$ | |
1148 if$ | |
1149 } | |
1150 if$ | |
1151 format.date "year" output.check | |
1152 date.block | |
1153 format.btitle "title" output.check | |
1154 crossref missing$ | |
1155 { | |
1156 format.bvolume output | |
1157 format.edition output | |
1158 format.publisher.address output | |
1159 format.chapter.pages "chapter and pages" output.check | |
1160 new.sentence | |
1161 format.number.series output | |
1162 } | |
1163 { | |
1164 format.chapter.pages "chapter and pages" output.check | |
1165 new.sentence | |
1166 format.book.crossref output.nonnull | |
1167 } | |
1168 if$ | |
1169 format.doi output | |
1170 format.url output | |
1171 format.note output | |
1172 format.eprint output | |
1173 fin.entry | |
1174 } | |
1175 | |
1176 FUNCTION {incollection} | |
1177 { output.bibitem | |
1178 format.authors "author" output.check | |
1179 author format.key output | |
1180 format.date "year" output.check | |
1181 date.block | |
1182 format.title "title" output.check | |
1183 new.sentence | |
1184 crossref missing$ | |
1185 { format.in.ed.booktitle "booktitle" output.check | |
1186 format.bvolume output | |
1187 format.edition output | |
1188 format.number.series output | |
1189 format.publisher.address output | |
1190 format.chapter.pages output | |
1191 } | |
1192 { format.incoll.inproc.crossref output.nonnull | |
1193 format.chapter.pages output | |
1194 } | |
1195 if$ | |
1196 format.doi output | |
1197 format.url output | |
1198 format.note output | |
1199 format.eprint output | |
1200 fin.entry | |
1201 } | |
1202 FUNCTION {inproceedings} | |
1203 { output.bibitem | |
1204 format.authors "author" output.check | |
1205 author format.key output | |
1206 format.date "year" output.check | |
1207 date.block | |
1208 format.title "title" output.check | |
1209 new.sentence | |
1210 crossref missing$ | |
1211 { format.in.ed.booktitle "booktitle" output.check | |
1212 publisher empty$ | |
1213 { format.organization.address output } | |
1214 { organization "organization" bibinfo.check output | |
1215 format.publisher.address output | |
1216 } | |
1217 if$ | |
1218 format.bvolume output | |
1219 format.number.series output | |
1220 format.pages output | |
1221 } | |
1222 { format.incoll.inproc.crossref output.nonnull | |
1223 format.pages output | |
1224 } | |
1225 if$ | |
1226 format.doi output | |
1227 format.url output | |
1228 format.note output | |
1229 format.eprint output | |
1230 fin.entry | |
1231 } | |
1232 FUNCTION {conference} { inproceedings } | |
1233 FUNCTION {manual} | |
1234 { output.bibitem | |
1235 format.authors output | |
1236 author format.key output | |
1237 format.date "year" output.check | |
1238 date.block | |
1239 format.btitle "title" output.check | |
1240 new.sentence | |
1241 organization "organization" bibinfo.check output | |
1242 address "address" bibinfo.check output | |
1243 format.edition output | |
1244 format.doi output | |
1245 format.url output | |
1246 format.note output | |
1247 format.eprint output | |
1248 fin.entry | |
1249 } | |
1250 | |
1251 FUNCTION {mastersthesis} | |
1252 { output.bibitem | |
1253 format.authors "author" output.check | |
1254 author format.key output | |
1255 format.date "year" output.check | |
1256 date.block | |
1257 format.title | |
1258 "title" output.check | |
1259 new.sentence | |
1260 bbl.mthesis format.thesis.type output.nonnull | |
1261 school "school" bibinfo.warn output | |
1262 address "address" bibinfo.check output | |
1263 format.doi output | |
1264 format.url output | |
1265 format.note output | |
1266 format.eprint output | |
1267 fin.entry | |
1268 } | |
1269 | |
1270 FUNCTION {misc} | |
1271 { output.bibitem | |
1272 format.authors output | |
1273 author format.key output | |
1274 format.date "year" output.check | |
1275 date.block | |
1276 format.title output | |
1277 new.sentence | |
1278 howpublished "howpublished" bibinfo.check output | |
1279 format.doi output | |
1280 format.url output | |
1281 format.note output | |
1282 format.eprint output | |
1283 fin.entry | |
1284 } | |
1285 FUNCTION {phdthesis} | |
1286 { output.bibitem | |
1287 format.authors "author" output.check | |
1288 author format.key output | |
1289 format.date "year" output.check | |
1290 date.block | |
1291 format.title | |
1292 "title" output.check | |
1293 new.sentence | |
1294 bbl.phdthesis format.thesis.type output.nonnull | |
1295 school "school" bibinfo.warn output | |
1296 address "address" bibinfo.check output | |
1297 format.doi output | |
1298 format.url output | |
1299 format.note output | |
1300 format.eprint output | |
1301 fin.entry | |
1302 } | |
1303 | |
1304 FUNCTION {proceedings} | |
1305 { output.bibitem | |
1306 format.editors output | |
1307 editor format.key output | |
1308 format.date "year" output.check | |
1309 date.block | |
1310 format.btitle "title" output.check | |
1311 format.bvolume output | |
1312 format.number.series output | |
1313 publisher empty$ | |
1314 { format.organization.address output } | |
1315 { organization "organization" bibinfo.check output | |
1316 format.publisher.address output | |
1317 } | |
1318 if$ | |
1319 format.doi output | |
1320 format.url output | |
1321 format.note output | |
1322 format.eprint output | |
1323 fin.entry | |
1324 } | |
1325 | |
1326 FUNCTION {techreport} | |
1327 { output.bibitem | |
1328 format.authors "author" output.check | |
1329 author format.key output | |
1330 format.date "year" output.check | |
1331 date.block | |
1332 format.title | |
1333 "title" output.check | |
1334 new.sentence | |
1335 format.tr.number output.nonnull | |
1336 institution "institution" bibinfo.warn output | |
1337 address "address" bibinfo.check output | |
1338 format.doi output | |
1339 format.url output | |
1340 format.note output | |
1341 format.eprint output | |
1342 fin.entry | |
1343 } | |
1344 | |
1345 FUNCTION {unpublished} | |
1346 { output.bibitem | |
1347 format.authors "author" output.check | |
1348 author format.key output | |
1349 format.date "year" output.check | |
1350 date.block | |
1351 format.title "title" output.check | |
1352 format.doi output | |
1353 format.url output | |
1354 format.note "note" output.check | |
1355 format.eprint output | |
1356 fin.entry | |
1357 } | |
1358 | |
1359 FUNCTION {default.type} { misc } | |
1360 READ | |
1361 FUNCTION {sortify} | |
1362 { purify$ | |
1363 "l" change.case$ | |
1364 } | |
1365 INTEGERS { len } | |
1366 FUNCTION {chop.word} | |
1367 { 's := | |
1368 'len := | |
1369 s #1 len substring$ = | |
1370 { s len #1 + global.max$ substring$ } | |
1371 's | |
1372 if$ | |
1373 } | |
1374 FUNCTION {format.lab.names} | |
1375 { 's := | |
1376 "" 't := | |
1377 s #1 "{vv~}{ll}" format.name$ | |
1378 s num.names$ duplicate$ | |
1379 #2 > | |
1380 { pop$ | |
1381 " " * bbl.etal * | |
1382 } | |
1383 { #2 < | |
1384 'skip$ | |
1385 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | |
1386 { | |
1387 " " * bbl.etal * | |
1388 } | |
1389 { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ | |
1390 * } | |
1391 if$ | |
1392 } | |
1393 if$ | |
1394 } | |
1395 if$ | |
1396 } | |
1397 | |
1398 FUNCTION {author.key.label} | |
1399 { author empty$ | |
1400 { key empty$ | |
1401 { cite$ #1 #3 substring$ } | |
1402 'key | |
1403 if$ | |
1404 } | |
1405 { author format.lab.names } | |
1406 if$ | |
1407 } | |
1408 | |
1409 FUNCTION {author.editor.key.label} | |
1410 { author empty$ | |
1411 { editor empty$ | |
1412 { key empty$ | |
1413 { cite$ #1 #3 substring$ } | |
1414 'key | |
1415 if$ | |
1416 } | |
1417 { editor format.lab.names } | |
1418 if$ | |
1419 } | |
1420 { author format.lab.names } | |
1421 if$ | |
1422 } | |
1423 | |
1424 FUNCTION {editor.key.label} | |
1425 { editor empty$ | |
1426 { key empty$ | |
1427 { cite$ #1 #3 substring$ } | |
1428 'key | |
1429 if$ | |
1430 } | |
1431 { editor format.lab.names } | |
1432 if$ | |
1433 } | |
1434 | |
1435 FUNCTION {calc.short.authors} | |
1436 { type$ "book" = | |
1437 type$ "inbook" = | |
1438 or | |
1439 'author.editor.key.label | |
1440 { type$ "proceedings" = | |
1441 'editor.key.label | |
1442 'author.key.label | |
1443 if$ | |
1444 } | |
1445 if$ | |
1446 'short.list := | |
1447 } | |
1448 | |
1449 FUNCTION {calc.label} | |
1450 { calc.short.authors | |
1451 short.list | |
1452 "(" | |
1453 * | |
1454 year duplicate$ empty$ | |
1455 { pop$ "????" } | |
1456 'skip$ | |
1457 if$ | |
1458 * | |
1459 'label := | |
1460 } | |
1461 | |
1462 FUNCTION {sort.format.names} | |
1463 { 's := | |
1464 #1 'nameptr := | |
1465 "" | |
1466 s num.names$ 'numnames := | |
1467 numnames 'namesleft := | |
1468 { namesleft #0 > } | |
1469 { s nameptr | |
1470 "{ll{ }}{ f{ }}{ jj{ }}" | |
1471 format.name$ 't := | |
1472 nameptr #1 > | |
1473 { | |
1474 " " * | |
1475 namesleft #1 = t "others" = and | |
1476 { "zzzzz" * } | |
1477 { numnames #2 > nameptr #2 = and | |
1478 { "zz" * year field.or.null * " " * } | |
1479 'skip$ | |
1480 if$ | |
1481 t sortify * | |
1482 } | |
1483 if$ | |
1484 } | |
1485 { t sortify * } | |
1486 if$ | |
1487 nameptr #1 + 'nameptr := | |
1488 namesleft #1 - 'namesleft := | |
1489 } | |
1490 while$ | |
1491 } | |
1492 | |
1493 FUNCTION {sort.format.title} | |
1494 { 't := | |
1495 "A " #2 | |
1496 "An " #3 | |
1497 "The " #4 t chop.word | |
1498 chop.word | |
1499 chop.word | |
1500 sortify | |
1501 #1 global.max$ substring$ | |
1502 } | |
1503 FUNCTION {author.sort} | |
1504 { author empty$ | |
1505 { key empty$ | |
1506 { "to sort, need author or key in " cite$ * warning$ | |
1507 "" | |
1508 } | |
1509 { key sortify } | |
1510 if$ | |
1511 } | |
1512 { author sort.format.names } | |
1513 if$ | |
1514 } | |
1515 FUNCTION {author.editor.sort} | |
1516 { author empty$ | |
1517 { editor empty$ | |
1518 { key empty$ | |
1519 { "to sort, need author, editor, or key in " cite$ * warning$ | |
1520 "" | |
1521 } | |
1522 { key sortify } | |
1523 if$ | |
1524 } | |
1525 { editor sort.format.names } | |
1526 if$ | |
1527 } | |
1528 { author sort.format.names } | |
1529 if$ | |
1530 } | |
1531 FUNCTION {editor.sort} | |
1532 { editor empty$ | |
1533 { key empty$ | |
1534 { "to sort, need editor or key in " cite$ * warning$ | |
1535 "" | |
1536 } | |
1537 { key sortify } | |
1538 if$ | |
1539 } | |
1540 { editor sort.format.names } | |
1541 if$ | |
1542 } | |
1543 FUNCTION {presort} | |
1544 { calc.label | |
1545 label sortify | |
1546 " " | |
1547 * | |
1548 type$ "book" = | |
1549 type$ "inbook" = | |
1550 or | |
1551 'author.editor.sort | |
1552 { type$ "proceedings" = | |
1553 'editor.sort | |
1554 'author.sort | |
1555 if$ | |
1556 } | |
1557 if$ | |
1558 #1 entry.max$ substring$ | |
1559 'sort.label := | |
1560 sort.label | |
1561 * | |
1562 " " | |
1563 * | |
1564 title field.or.null | |
1565 sort.format.title | |
1566 * | |
1567 #1 entry.max$ substring$ | |
1568 'sort.key$ := | |
1569 } | |
1570 | |
1571 ITERATE {presort} | |
1572 SORT | |
1573 STRINGS { last.label next.extra } | |
1574 INTEGERS { last.extra.num number.label } | |
1575 FUNCTION {initialize.extra.label.stuff} | |
1576 { #0 int.to.chr$ 'last.label := | |
1577 "" 'next.extra := | |
1578 #0 'last.extra.num := | |
1579 #0 'number.label := | |
1580 } | |
1581 FUNCTION {forward.pass} | |
1582 { last.label label = | |
1583 { last.extra.num #1 + 'last.extra.num := | |
1584 last.extra.num int.to.chr$ 'extra.label := | |
1585 } | |
1586 { "a" chr.to.int$ 'last.extra.num := | |
1587 "" 'extra.label := | |
1588 label 'last.label := | |
1589 } | |
1590 if$ | |
1591 number.label #1 + 'number.label := | |
1592 } | |
1593 FUNCTION {reverse.pass} | |
1594 { next.extra "b" = | |
1595 { "a" 'extra.label := } | |
1596 'skip$ | |
1597 if$ | |
1598 extra.label 'next.extra := | |
1599 extra.label | |
1600 duplicate$ empty$ | |
1601 'skip$ | |
1602 { "{\natexlab{" swap$ * "}}" * } | |
1603 if$ | |
1604 'extra.label := | |
1605 label extra.label * 'label := | |
1606 } | |
1607 EXECUTE {initialize.extra.label.stuff} | |
1608 ITERATE {forward.pass} | |
1609 REVERSE {reverse.pass} | |
1610 FUNCTION {bib.sort.order} | |
1611 { sort.label | |
1612 " " | |
1613 * | |
1614 year field.or.null sortify | |
1615 * | |
1616 " " | |
1617 * | |
1618 title field.or.null | |
1619 sort.format.title | |
1620 * | |
1621 #1 entry.max$ substring$ | |
1622 'sort.key$ := | |
1623 } | |
1624 ITERATE {bib.sort.order} | |
1625 SORT | |
1626 FUNCTION {begin.bib} | |
1627 { preamble$ empty$ | |
1628 'skip$ | |
1629 { preamble$ write$ newline$ } | |
1630 if$ | |
1631 "\begin{thebibliography}{" number.label int.to.str$ * "}" * | |
1632 write$ newline$ | |
1633 "\providecommand{\natexlab}[1]{#1}" | |
1634 write$ newline$ | |
1635 "\providecommand{\url}[1]{{#1}}" | |
1636 write$ newline$ | |
1637 "\providecommand{\urlprefix}{URL }" | |
1638 write$ newline$ | |
1639 "\expandafter\ifx\csname urlstyle\endcsname\relax" | |
1640 write$ newline$ | |
1641 " \providecommand{\doi}[1]{DOI~\discretionary{}{}{}#1}\else" | |
1642 write$ newline$ | |
1643 " \providecommand{\doi}{DOI~\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" | |
1644 write$ newline$ | |
1645 "\providecommand{\eprint}[2][]{\url{#2}}" | |
1646 write$ newline$ | |
1647 } | |
1648 EXECUTE {begin.bib} | |
1649 EXECUTE {init.state.consts} | |
1650 ITERATE {call.type$} | |
1651 FUNCTION {end.bib} | |
1652 { newline$ | |
1653 "\end{thebibliography}" write$ newline$ | |
1654 } | |
1655 EXECUTE {end.bib} | |
1656 %% End of customized bst file | |
1657 %% | |
1658 %% End of file `spbasic.bst'. | |
1659 |