Mercurial > hg > do-we-sing-like-we-speak
comparison Write Up/splncs.bst @ 3:475bddaf580c tip
Add report and Presentation
author | Dave Moffat <d.j.moffat@qmul.ac.uk> |
---|---|
date | Wed, 25 Feb 2015 16:07:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2:675ab63caba7 | 3:475bddaf580c |
---|---|
1 % BibTeX bibliography style `splncs' | |
2 | |
3 % An attempt to match the bibliography style required for use with | |
4 % numbered references in Springer Verlag's "Lecture Notes in Computer | |
5 % Science" series. (See Springer's documentation for llncs.sty for | |
6 % more details of the suggested reference format.) Note that this | |
7 % file will not work for author-year style citations. | |
8 | |
9 % Use \documentclass{llncs} and \bibliographystyle{splncs}, and cite | |
10 % a reference with (e.g.) \cite{smith77} to get a "[1]" in the text. | |
11 | |
12 % Copyright (C) 1999 Jason Noble. | |
13 % Last updated: Thursday 20 May 1999, 13:22:19 | |
14 % | |
15 % Based on the BibTeX standard bibliography style `unsrt' | |
16 | |
17 ENTRY | |
18 { address | |
19 author | |
20 booktitle | |
21 chapter | |
22 edition | |
23 editor | |
24 howpublished | |
25 institution | |
26 journal | |
27 key | |
28 month | |
29 note | |
30 number | |
31 organization | |
32 pages | |
33 publisher | |
34 school | |
35 series | |
36 title | |
37 type | |
38 volume | |
39 year | |
40 } | |
41 {} | |
42 { label } | |
43 | |
44 INTEGERS { output.state before.all mid.sentence after.sentence | |
45 after.block after.authors between.elements} | |
46 | |
47 FUNCTION {init.state.consts} | |
48 { #0 'before.all := | |
49 #1 'mid.sentence := | |
50 #2 'after.sentence := | |
51 #3 'after.block := | |
52 #4 'after.authors := | |
53 #5 'between.elements := | |
54 } | |
55 | |
56 STRINGS { s t } | |
57 | |
58 FUNCTION {output.nonnull} | |
59 { 's := | |
60 output.state mid.sentence = | |
61 { " " * write$ } | |
62 { output.state after.block = | |
63 { add.period$ write$ | |
64 newline$ | |
65 "\newblock " write$ | |
66 } | |
67 { | |
68 output.state after.authors = | |
69 { ": " * write$ | |
70 newline$ | |
71 "\newblock " write$ | |
72 } | |
73 { output.state between.elements = | |
74 { ", " * write$ } | |
75 { output.state before.all = | |
76 'write$ | |
77 { add.period$ " " * write$ } | |
78 if$ | |
79 } | |
80 if$ | |
81 } | |
82 if$ | |
83 } | |
84 if$ | |
85 mid.sentence 'output.state := | |
86 } | |
87 if$ | |
88 s | |
89 } | |
90 | |
91 FUNCTION {output} | |
92 { duplicate$ empty$ | |
93 'pop$ | |
94 'output.nonnull | |
95 if$ | |
96 } | |
97 | |
98 FUNCTION {output.check} | |
99 { 't := | |
100 duplicate$ empty$ | |
101 { pop$ "empty " t * " in " * cite$ * warning$ } | |
102 'output.nonnull | |
103 if$ | |
104 } | |
105 | |
106 FUNCTION {output.bibitem} | |
107 { newline$ | |
108 "\bibitem{" write$ | |
109 cite$ write$ | |
110 "}" write$ | |
111 newline$ | |
112 "" | |
113 before.all 'output.state := | |
114 } | |
115 | |
116 FUNCTION {fin.entry} | |
117 { write$ | |
118 newline$ | |
119 } | |
120 | |
121 FUNCTION {new.block} | |
122 { output.state before.all = | |
123 'skip$ | |
124 { after.block 'output.state := } | |
125 if$ | |
126 } | |
127 | |
128 FUNCTION {stupid.colon} | |
129 { after.authors 'output.state := } | |
130 | |
131 FUNCTION {insert.comma} | |
132 { output.state before.all = | |
133 'skip$ | |
134 { between.elements 'output.state := } | |
135 if$ | |
136 } | |
137 | |
138 FUNCTION {new.sentence} | |
139 { output.state after.block = | |
140 'skip$ | |
141 { output.state before.all = | |
142 'skip$ | |
143 { after.sentence 'output.state := } | |
144 if$ | |
145 } | |
146 if$ | |
147 } | |
148 | |
149 FUNCTION {not} | |
150 { { #0 } | |
151 { #1 } | |
152 if$ | |
153 } | |
154 | |
155 FUNCTION {and} | |
156 { 'skip$ | |
157 { pop$ #0 } | |
158 if$ | |
159 } | |
160 | |
161 FUNCTION {or} | |
162 { { pop$ #1 } | |
163 'skip$ | |
164 if$ | |
165 } | |
166 | |
167 FUNCTION {new.block.checka} | |
168 { empty$ | |
169 'skip$ | |
170 'new.block | |
171 if$ | |
172 } | |
173 | |
174 FUNCTION {new.block.checkb} | |
175 { empty$ | |
176 swap$ empty$ | |
177 and | |
178 'skip$ | |
179 'new.block | |
180 if$ | |
181 } | |
182 | |
183 FUNCTION {new.sentence.checka} | |
184 { empty$ | |
185 'skip$ | |
186 'new.sentence | |
187 if$ | |
188 } | |
189 | |
190 FUNCTION {new.sentence.checkb} | |
191 { empty$ | |
192 swap$ empty$ | |
193 and | |
194 'skip$ | |
195 'new.sentence | |
196 if$ | |
197 } | |
198 | |
199 FUNCTION {field.or.null} | |
200 { duplicate$ empty$ | |
201 { pop$ "" } | |
202 'skip$ | |
203 if$ | |
204 } | |
205 | |
206 FUNCTION {emphasize} | |
207 { duplicate$ empty$ | |
208 { pop$ "" } | |
209 { "" swap$ * "" * } | |
210 if$ | |
211 } | |
212 | |
213 FUNCTION {bold} | |
214 { duplicate$ empty$ | |
215 { pop$ "" } | |
216 { "\textbf{" swap$ * "}" * } | |
217 if$ | |
218 } | |
219 | |
220 FUNCTION {parens} | |
221 { duplicate$ empty$ | |
222 { pop$ "" } | |
223 { "(" swap$ * ")" * } | |
224 if$ | |
225 } | |
226 | |
227 INTEGERS { nameptr namesleft numnames } | |
228 | |
229 FUNCTION {format.springer.names} | |
230 { 's := | |
231 #1 'nameptr := | |
232 s num.names$ 'numnames := | |
233 numnames 'namesleft := | |
234 { namesleft #0 > } | |
235 { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't := | |
236 nameptr #1 > | |
237 { namesleft #1 > | |
238 { ", " * t * } | |
239 { numnames #1 > | |
240 { ", " * } | |
241 'skip$ | |
242 if$ | |
243 t "others" = | |
244 { " et~al." * } | |
245 { "" * t * } | |
246 if$ | |
247 } | |
248 if$ | |
249 } | |
250 't | |
251 if$ | |
252 nameptr #1 + 'nameptr := | |
253 namesleft #1 - 'namesleft := | |
254 } | |
255 while$ | |
256 } | |
257 | |
258 FUNCTION {format.names} | |
259 { 's := | |
260 #1 'nameptr := | |
261 s num.names$ 'numnames := | |
262 numnames 'namesleft := | |
263 { namesleft #0 > } | |
264 { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := | |
265 nameptr #1 > | |
266 { namesleft #1 > | |
267 { ", " * t * } | |
268 { numnames #2 > | |
269 { "," * } | |
270 'skip$ | |
271 if$ | |
272 t "others" = | |
273 { " et~al." * } | |
274 { " \& " * t * } | |
275 if$ | |
276 } | |
277 if$ | |
278 } | |
279 't | |
280 if$ | |
281 nameptr #1 + 'nameptr := | |
282 namesleft #1 - 'namesleft := | |
283 } | |
284 while$ | |
285 } | |
286 | |
287 FUNCTION {format.authors} | |
288 { author empty$ | |
289 { "" } | |
290 { author format.springer.names } | |
291 if$ | |
292 } | |
293 | |
294 FUNCTION {format.editors} | |
295 { editor empty$ | |
296 { "" } | |
297 { editor format.springer.names | |
298 editor num.names$ #1 > | |
299 { ", eds." * } | |
300 { ", ed." * } | |
301 if$ | |
302 } | |
303 if$ | |
304 } | |
305 | |
306 FUNCTION {format.title} | |
307 { title empty$ | |
308 { "" } | |
309 { title "t" change.case$ } | |
310 if$ | |
311 } | |
312 | |
313 FUNCTION {n.dashify} | |
314 { 't := | |
315 "" | |
316 { t empty$ not } | |
317 { t #1 #1 substring$ "-" = | |
318 { t #1 #2 substring$ "--" = not | |
319 { "--" * | |
320 t #2 global.max$ substring$ 't := | |
321 } | |
322 { { t #1 #1 substring$ "-" = } | |
323 { "-" * | |
324 t #2 global.max$ substring$ 't := | |
325 } | |
326 while$ | |
327 } | |
328 if$ | |
329 } | |
330 { t #1 #1 substring$ * | |
331 t #2 global.max$ substring$ 't := | |
332 } | |
333 if$ | |
334 } | |
335 while$ | |
336 } | |
337 | |
338 FUNCTION {format.date} | |
339 { year empty$ | |
340 { "there's no year in " cite$ * warning$ } | |
341 'year | |
342 if$ | |
343 } | |
344 | |
345 FUNCTION {format.btitle} | |
346 { title emphasize | |
347 } | |
348 | |
349 FUNCTION {tie.or.space.connect} | |
350 { duplicate$ text.length$ #3 < | |
351 { "~" } | |
352 { " " } | |
353 if$ | |
354 swap$ * * | |
355 } | |
356 | |
357 FUNCTION {either.or.check} | |
358 { empty$ | |
359 'pop$ | |
360 { "can't use both " swap$ * " fields in " * cite$ * warning$ } | |
361 if$ | |
362 } | |
363 | |
364 FUNCTION {format.bvolume} | |
365 { volume empty$ | |
366 { "" } | |
367 { "Volume" volume tie.or.space.connect | |
368 series empty$ | |
369 'skip$ | |
370 { " of " * series emphasize * } | |
371 if$ | |
372 add.period$ | |
373 "volume and number" number either.or.check | |
374 } | |
375 if$ | |
376 } | |
377 | |
378 FUNCTION {format.number.series} | |
379 { volume empty$ | |
380 { number empty$ | |
381 { series field.or.null } | |
382 { output.state mid.sentence = | |
383 { "number" } | |
384 { "Number" } | |
385 if$ | |
386 number tie.or.space.connect | |
387 series empty$ | |
388 { "there's a number but no series in " cite$ * warning$ } | |
389 { " in " * series * } | |
390 if$ | |
391 } | |
392 if$ | |
393 } | |
394 { "" } | |
395 if$ | |
396 } | |
397 | |
398 FUNCTION {format.edition} | |
399 { edition empty$ | |
400 { "" } | |
401 { output.state mid.sentence = | |
402 { edition "l" change.case$ " edn." * } | |
403 { edition "t" change.case$ " edn." * } | |
404 if$ | |
405 } | |
406 if$ | |
407 } | |
408 | |
409 INTEGERS { multiresult } | |
410 | |
411 FUNCTION {multi.page.check} | |
412 { 't := | |
413 #0 'multiresult := | |
414 { multiresult not | |
415 t empty$ not | |
416 and | |
417 } | |
418 { t #1 #1 substring$ | |
419 duplicate$ "-" = | |
420 swap$ duplicate$ "," = | |
421 swap$ "+" = | |
422 or or | |
423 { #1 'multiresult := } | |
424 { t #2 global.max$ substring$ 't := } | |
425 if$ | |
426 } | |
427 while$ | |
428 multiresult | |
429 } | |
430 | |
431 FUNCTION {format.pages} | |
432 { pages empty$ | |
433 { "" } | |
434 { pages multi.page.check | |
435 { "" pages n.dashify tie.or.space.connect } | |
436 { "" pages tie.or.space.connect } | |
437 if$ | |
438 } | |
439 if$ | |
440 } | |
441 | |
442 FUNCTION {format.vol} | |
443 { volume bold | |
444 } | |
445 | |
446 FUNCTION {pre.format.pages} | |
447 { pages empty$ | |
448 'skip$ | |
449 { duplicate$ empty$ | |
450 { pop$ format.pages } | |
451 { " " * pages n.dashify * } | |
452 if$ | |
453 } | |
454 if$ | |
455 } | |
456 | |
457 FUNCTION {format.chapter.pages} | |
458 { chapter empty$ | |
459 'format.pages | |
460 { type empty$ | |
461 { "chapter" } | |
462 { type "l" change.case$ } | |
463 if$ | |
464 chapter tie.or.space.connect | |
465 pages empty$ | |
466 'skip$ | |
467 { " " * format.pages * } | |
468 if$ | |
469 } | |
470 if$ | |
471 } | |
472 | |
473 FUNCTION {format.in.ed.booktitle} | |
474 { booktitle empty$ | |
475 { "" } | |
476 { editor empty$ | |
477 { "In: " booktitle emphasize * } | |
478 { "In " format.editors * ": " * booktitle emphasize * } | |
479 if$ | |
480 } | |
481 if$ | |
482 } | |
483 | |
484 FUNCTION {empty.misc.check} | |
485 { author empty$ title empty$ howpublished empty$ | |
486 month empty$ year empty$ note empty$ | |
487 and and and and and | |
488 { "all relevant fields are empty in " cite$ * warning$ } | |
489 'skip$ | |
490 if$ | |
491 } | |
492 | |
493 FUNCTION {format.thesis.type} | |
494 { type empty$ | |
495 'skip$ | |
496 { pop$ | |
497 type "t" change.case$ | |
498 } | |
499 if$ | |
500 } | |
501 | |
502 FUNCTION {format.tr.number} | |
503 { type empty$ | |
504 { "Technical Report" } | |
505 'type | |
506 if$ | |
507 number empty$ | |
508 { "t" change.case$ } | |
509 { number tie.or.space.connect } | |
510 if$ | |
511 } | |
512 | |
513 FUNCTION {format.article.crossref} | |
514 { key empty$ | |
515 { journal empty$ | |
516 { "need key or journal for " cite$ * " to crossref " * crossref * | |
517 warning$ | |
518 "" | |
519 } | |
520 { "In {\em " journal * "\/}" * } | |
521 if$ | |
522 } | |
523 { "In " key * } | |
524 if$ | |
525 " \cite{" * crossref * "}" * | |
526 } | |
527 | |
528 FUNCTION {format.crossref.editor} | |
529 { editor #1 "{vv~}{ll}" format.name$ | |
530 editor num.names$ duplicate$ | |
531 #2 > | |
532 { pop$ " et~al." * } | |
533 { #2 < | |
534 'skip$ | |
535 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = | |
536 { " et~al." * } | |
537 { " and " * editor #2 "{vv~}{ll}" format.name$ * } | |
538 if$ | |
539 } | |
540 if$ | |
541 } | |
542 if$ | |
543 } | |
544 | |
545 FUNCTION {format.book.crossref} | |
546 { volume empty$ | |
547 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ | |
548 "In " | |
549 } | |
550 { "Volume" volume tie.or.space.connect | |
551 " of " * | |
552 } | |
553 if$ | |
554 " \cite{" * crossref * "}" * | |
555 } | |
556 | |
557 FUNCTION {format.incoll.inproc.crossref} | |
558 { editor empty$ | |
559 editor field.or.null author field.or.null = | |
560 or | |
561 { key empty$ | |
562 { booktitle empty$ | |
563 { "need editor, key, or booktitle for " cite$ * " to crossref " * | |
564 crossref * warning$ | |
565 "" | |
566 } | |
567 { "" } | |
568 if$ | |
569 } | |
570 { "" } | |
571 if$ | |
572 } | |
573 { "" } | |
574 if$ | |
575 " \cite{" * crossref * "}" * | |
576 } | |
577 | |
578 FUNCTION {and.the.note} | |
579 { note output | |
580 note empty$ | |
581 'skip$ | |
582 { add.period$ } | |
583 if$ | |
584 } | |
585 | |
586 FUNCTION {article} | |
587 { output.bibitem | |
588 format.authors "author" output.check | |
589 stupid.colon | |
590 format.title "title" output.check | |
591 new.block | |
592 crossref missing$ | |
593 { journal emphasize "journal" output.check | |
594 format.vol output | |
595 format.date parens output | |
596 format.pages output | |
597 } | |
598 { format.article.crossref output.nonnull | |
599 format.pages output | |
600 } | |
601 if$ | |
602 and.the.note | |
603 fin.entry | |
604 } | |
605 | |
606 FUNCTION {book} | |
607 { output.bibitem | |
608 author empty$ | |
609 { format.editors "author and editor" output.check } | |
610 { format.authors output.nonnull | |
611 crossref missing$ | |
612 { "author and editor" editor either.or.check } | |
613 'skip$ | |
614 if$ | |
615 } | |
616 if$ | |
617 stupid.colon | |
618 format.btitle "title" output.check | |
619 new.sentence | |
620 crossref missing$ | |
621 { format.edition output | |
622 format.bvolume output | |
623 new.block | |
624 format.number.series output | |
625 new.sentence | |
626 publisher "publisher" output.check | |
627 address empty$ | |
628 'skip$ | |
629 { insert.comma } | |
630 if$ | |
631 address output | |
632 format.date parens output | |
633 } | |
634 { format.book.crossref output.nonnull | |
635 } | |
636 if$ | |
637 and.the.note | |
638 fin.entry | |
639 } | |
640 | |
641 FUNCTION {booklet} | |
642 { output.bibitem | |
643 format.authors output | |
644 stupid.colon | |
645 format.title "title" output.check | |
646 howpublished address new.block.checkb | |
647 howpublished output | |
648 address empty$ | |
649 'skip$ | |
650 { insert.comma } | |
651 if$ | |
652 address output | |
653 format.date parens output | |
654 and.the.note | |
655 fin.entry | |
656 } | |
657 | |
658 FUNCTION {inbook} | |
659 { output.bibitem | |
660 author empty$ | |
661 { format.editors "author and editor" output.check } | |
662 { format.authors output.nonnull | |
663 crossref missing$ | |
664 { "author and editor" editor either.or.check } | |
665 'skip$ | |
666 if$ | |
667 } | |
668 if$ | |
669 stupid.colon | |
670 crossref missing$ | |
671 { chapter output | |
672 new.block | |
673 format.number.series output | |
674 new.sentence | |
675 "In:" output | |
676 format.btitle "title" output.check | |
677 new.sentence | |
678 format.edition output | |
679 format.bvolume output | |
680 publisher "publisher" output.check | |
681 address empty$ | |
682 'skip$ | |
683 { insert.comma } | |
684 if$ | |
685 address output | |
686 format.date parens output | |
687 } | |
688 { chapter output | |
689 new.block | |
690 format.incoll.inproc.crossref output.nonnull | |
691 } | |
692 if$ | |
693 format.pages output | |
694 and.the.note | |
695 fin.entry | |
696 } | |
697 | |
698 FUNCTION {incollection} | |
699 { output.bibitem | |
700 format.authors "author" output.check | |
701 stupid.colon | |
702 format.title "title" output.check | |
703 new.block | |
704 crossref missing$ | |
705 { format.in.ed.booktitle "booktitle" output.check | |
706 new.sentence | |
707 format.bvolume output | |
708 format.number.series output | |
709 new.block | |
710 format.edition output | |
711 publisher "publisher" output.check | |
712 address empty$ | |
713 'skip$ | |
714 { insert.comma } | |
715 if$ | |
716 address output | |
717 format.date parens output | |
718 format.pages output | |
719 } | |
720 { format.incoll.inproc.crossref output.nonnull | |
721 format.chapter.pages output | |
722 } | |
723 if$ | |
724 and.the.note | |
725 fin.entry | |
726 } | |
727 | |
728 FUNCTION {inproceedings} | |
729 { output.bibitem | |
730 format.authors "author" output.check | |
731 stupid.colon | |
732 format.title "title" output.check | |
733 new.block | |
734 crossref missing$ | |
735 { format.in.ed.booktitle "booktitle" output.check | |
736 new.sentence | |
737 format.bvolume output | |
738 format.number.series output | |
739 address empty$ | |
740 { organization publisher new.sentence.checkb | |
741 organization empty$ | |
742 'skip$ | |
743 { insert.comma } | |
744 if$ | |
745 organization output | |
746 publisher empty$ | |
747 'skip$ | |
748 { insert.comma } | |
749 if$ | |
750 publisher output | |
751 format.date parens output | |
752 } | |
753 { insert.comma | |
754 address output.nonnull | |
755 organization empty$ | |
756 'skip$ | |
757 { insert.comma } | |
758 if$ | |
759 organization output | |
760 publisher empty$ | |
761 'skip$ | |
762 { insert.comma } | |
763 if$ | |
764 publisher output | |
765 format.date parens output | |
766 } | |
767 if$ | |
768 } | |
769 { format.incoll.inproc.crossref output.nonnull | |
770 } | |
771 if$ | |
772 format.pages output | |
773 and.the.note | |
774 fin.entry | |
775 } | |
776 | |
777 FUNCTION {conference} { inproceedings } | |
778 | |
779 FUNCTION {manual} | |
780 { output.bibitem | |
781 author empty$ | |
782 { organization empty$ | |
783 'skip$ | |
784 { organization output.nonnull | |
785 address output | |
786 } | |
787 if$ | |
788 } | |
789 { format.authors output.nonnull } | |
790 if$ | |
791 stupid.colon | |
792 format.btitle "title" output.check | |
793 author empty$ | |
794 { organization empty$ | |
795 { address new.block.checka | |
796 address output | |
797 } | |
798 'skip$ | |
799 if$ | |
800 } | |
801 { organization address new.block.checkb | |
802 organization output | |
803 address empty$ | |
804 'skip$ | |
805 { insert.comma } | |
806 if$ | |
807 address output | |
808 } | |
809 if$ | |
810 new.sentence | |
811 format.edition output | |
812 format.date parens output | |
813 and.the.note | |
814 fin.entry | |
815 } | |
816 | |
817 FUNCTION {mastersthesis} | |
818 { output.bibitem | |
819 format.authors "author" output.check | |
820 stupid.colon | |
821 format.title "title" output.check | |
822 new.block | |
823 "Master's thesis" format.thesis.type output.nonnull | |
824 school empty$ | |
825 'skip$ | |
826 { insert.comma } | |
827 if$ | |
828 school "school" output.check | |
829 address empty$ | |
830 'skip$ | |
831 { insert.comma } | |
832 if$ | |
833 address output | |
834 format.date parens output | |
835 and.the.note | |
836 fin.entry | |
837 } | |
838 | |
839 FUNCTION {misc} | |
840 { output.bibitem | |
841 format.authors "author" output.check | |
842 stupid.colon | |
843 format.title "title" output.check | |
844 howpublished new.block.checka | |
845 howpublished output | |
846 format.date parens output | |
847 and.the.note | |
848 fin.entry | |
849 empty.misc.check | |
850 } | |
851 | |
852 FUNCTION {phdthesis} | |
853 { output.bibitem | |
854 format.authors "author" output.check | |
855 stupid.colon | |
856 format.btitle "title" output.check | |
857 new.block | |
858 "PhD thesis" format.thesis.type output.nonnull | |
859 school empty$ | |
860 'skip$ | |
861 { insert.comma } | |
862 if$ | |
863 school "school" output.check | |
864 address empty$ | |
865 'skip$ | |
866 { insert.comma } | |
867 if$ | |
868 address output | |
869 format.date parens output | |
870 and.the.note | |
871 fin.entry | |
872 } | |
873 | |
874 FUNCTION {proceedings} | |
875 { output.bibitem | |
876 editor empty$ | |
877 { organization empty$ | |
878 { "" } | |
879 { organization output | |
880 stupid.colon } | |
881 if$ | |
882 } | |
883 { format.editors output.nonnull | |
884 stupid.colon | |
885 } | |
886 if$ | |
887 format.btitle "title" output.check | |
888 new.block | |
889 crossref missing$ | |
890 { format.in.ed.booktitle "booktitle" output.check | |
891 new.sentence | |
892 format.bvolume output | |
893 format.number.series output | |
894 address empty$ | |
895 { organization publisher new.sentence.checkb | |
896 organization empty$ | |
897 'skip$ | |
898 { insert.comma } | |
899 if$ | |
900 organization output | |
901 publisher empty$ | |
902 'skip$ | |
903 { insert.comma } | |
904 if$ | |
905 publisher output | |
906 format.date parens output | |
907 } | |
908 { insert.comma | |
909 address output.nonnull | |
910 organization empty$ | |
911 'skip$ | |
912 { insert.comma } | |
913 if$ | |
914 organization output | |
915 publisher empty$ | |
916 'skip$ | |
917 { insert.comma } | |
918 if$ | |
919 publisher output | |
920 format.date parens output | |
921 } | |
922 if$ | |
923 } | |
924 { format.incoll.inproc.crossref output.nonnull | |
925 } | |
926 if$ | |
927 and.the.note | |
928 fin.entry | |
929 } | |
930 | |
931 FUNCTION {techreport} | |
932 { output.bibitem | |
933 format.authors "author" output.check | |
934 stupid.colon | |
935 format.title "title" output.check | |
936 new.block | |
937 format.tr.number output.nonnull | |
938 institution empty$ | |
939 'skip$ | |
940 { insert.comma } | |
941 if$ | |
942 institution "institution" output.check | |
943 address empty$ | |
944 'skip$ | |
945 { insert.comma } | |
946 if$ | |
947 address output | |
948 format.date parens output | |
949 and.the.note | |
950 fin.entry | |
951 } | |
952 | |
953 FUNCTION {unpublished} | |
954 { output.bibitem | |
955 format.authors "author" output.check | |
956 stupid.colon | |
957 format.title "title" output.check | |
958 new.block | |
959 note "note" output.check | |
960 format.date parens output | |
961 fin.entry | |
962 } | |
963 | |
964 FUNCTION {default.type} { misc } | |
965 | |
966 MACRO {jan} {"January"} | |
967 | |
968 MACRO {feb} {"February"} | |
969 | |
970 MACRO {mar} {"March"} | |
971 | |
972 MACRO {apr} {"April"} | |
973 | |
974 MACRO {may} {"May"} | |
975 | |
976 MACRO {jun} {"June"} | |
977 | |
978 MACRO {jul} {"July"} | |
979 | |
980 MACRO {aug} {"August"} | |
981 | |
982 MACRO {sep} {"September"} | |
983 | |
984 MACRO {oct} {"October"} | |
985 | |
986 MACRO {nov} {"November"} | |
987 | |
988 MACRO {dec} {"December"} | |
989 | |
990 MACRO {acmcs} {"ACM Computing Surveys"} | |
991 | |
992 MACRO {acta} {"Acta Informatica"} | |
993 | |
994 MACRO {cacm} {"Communications of the ACM"} | |
995 | |
996 MACRO {ibmjrd} {"IBM Journal of Research and Development"} | |
997 | |
998 MACRO {ibmsj} {"IBM Systems Journal"} | |
999 | |
1000 MACRO {ieeese} {"IEEE Transactions on Software Engineering"} | |
1001 | |
1002 MACRO {ieeetc} {"IEEE Transactions on Computers"} | |
1003 | |
1004 MACRO {ieeetcad} | |
1005 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} | |
1006 | |
1007 MACRO {ipl} {"Information Processing Letters"} | |
1008 | |
1009 MACRO {jacm} {"Journal of the ACM"} | |
1010 | |
1011 MACRO {jcss} {"Journal of Computer and System Sciences"} | |
1012 | |
1013 MACRO {scp} {"Science of Computer Programming"} | |
1014 | |
1015 MACRO {sicomp} {"SIAM Journal on Computing"} | |
1016 | |
1017 MACRO {tocs} {"ACM Transactions on Computer Systems"} | |
1018 | |
1019 MACRO {tods} {"ACM Transactions on Database Systems"} | |
1020 | |
1021 MACRO {tog} {"ACM Transactions on Graphics"} | |
1022 | |
1023 MACRO {toms} {"ACM Transactions on Mathematical Software"} | |
1024 | |
1025 MACRO {toois} {"ACM Transactions on Office Information Systems"} | |
1026 | |
1027 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} | |
1028 | |
1029 MACRO {tcs} {"Theoretical Computer Science"} | |
1030 | |
1031 READ | |
1032 | |
1033 STRINGS { longest.label } | |
1034 | |
1035 INTEGERS { number.label longest.label.width } | |
1036 | |
1037 FUNCTION {initialize.longest.label} | |
1038 { "" 'longest.label := | |
1039 #1 'number.label := | |
1040 #0 'longest.label.width := | |
1041 } | |
1042 | |
1043 FUNCTION {longest.label.pass} | |
1044 { number.label int.to.str$ 'label := | |
1045 number.label #1 + 'number.label := | |
1046 label width$ longest.label.width > | |
1047 { label 'longest.label := | |
1048 label width$ 'longest.label.width := | |
1049 } | |
1050 'skip$ | |
1051 if$ | |
1052 } | |
1053 | |
1054 EXECUTE {initialize.longest.label} | |
1055 | |
1056 ITERATE {longest.label.pass} | |
1057 | |
1058 FUNCTION {begin.bib} | |
1059 { preamble$ empty$ | |
1060 'skip$ | |
1061 { preamble$ write$ newline$ } | |
1062 if$ | |
1063 "\begin{thebibliography}{" longest.label * "}" * write$ newline$ | |
1064 } | |
1065 | |
1066 EXECUTE {begin.bib} | |
1067 | |
1068 EXECUTE {init.state.consts} | |
1069 | |
1070 ITERATE {call.type$} | |
1071 | |
1072 FUNCTION {end.bib} | |
1073 { newline$ | |
1074 "\end{thebibliography}" write$ newline$ | |
1075 } | |
1076 | |
1077 EXECUTE {end.bib} | |
1078 | |
1079 | |
1080 |