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