comparison ipsjunsrt.bst @ 0:88c3fd4f9bb2

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