comparison ipsjunsrt.bst @ 0:39af8ab46cbb

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