Mercurial > hg > Papers > 2017 > mitsuki-sigos
comparison paper/ipsjsort.bst @ 1:59cb9d3f9a55
add
author | mir3636 |
---|---|
date | Fri, 14 Apr 2017 23:30:08 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:581d76326ace | 1:59cb9d3f9a55 |
---|---|
1 % ipsjsort.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12) | |
2 % ipsjsort.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00) | |
3 % ipsjsort.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 FUNCTION {sortify} | |
1090 { purify$ | |
1091 "l" change.case$ | |
1092 } | |
1093 | |
1094 INTEGERS { len } | |
1095 | |
1096 FUNCTION {chop.word} | |
1097 { 's := | |
1098 'len := | |
1099 s #1 len substring$ = | |
1100 { s len #1 + global.max$ substring$ } | |
1101 's | |
1102 if$ | |
1103 } | |
1104 | |
1105 FUNCTION {sort.format.names} | |
1106 { 's := | |
1107 yomi empty$ | |
1108 'skip$ | |
1109 { yomi 's := } | |
1110 if$ | |
1111 | |
1112 #1 'nameptr := | |
1113 "" | |
1114 s num.names$ 'numnames := | |
1115 numnames 'namesleft := | |
1116 { namesleft #0 > } | |
1117 { nameptr #1 > | |
1118 { " " * } | |
1119 'skip$ | |
1120 if$ | |
1121 s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := | |
1122 nameptr numnames = t "others" = and | |
1123 { "et al" * } | |
1124 { t sortify * } | |
1125 if$ | |
1126 nameptr #1 + 'nameptr := | |
1127 namesleft #1 - 'namesleft := | |
1128 } | |
1129 while$ | |
1130 } | |
1131 | |
1132 FUNCTION {sort.format.title} | |
1133 { 't := | |
1134 "A " #2 | |
1135 "An " #3 | |
1136 "The " #4 t chop.word | |
1137 chop.word | |
1138 chop.word | |
1139 sortify | |
1140 #1 global.max$ substring$ | |
1141 } | |
1142 | |
1143 FUNCTION {author.sort} | |
1144 { author empty$ | |
1145 { key empty$ | |
1146 { "to sort, need author or key in " cite$ * warning$ | |
1147 "" | |
1148 } | |
1149 { key sortify } | |
1150 if$ | |
1151 } | |
1152 { author sort.format.names } | |
1153 if$ | |
1154 } | |
1155 | |
1156 FUNCTION {author.editor.sort} | |
1157 { author empty$ | |
1158 { editor empty$ | |
1159 { key empty$ | |
1160 { "to sort, need author, editor, or key in " cite$ * warning$ | |
1161 "" | |
1162 } | |
1163 { key sortify } | |
1164 if$ | |
1165 } | |
1166 { editor sort.format.names } | |
1167 if$ | |
1168 } | |
1169 { author sort.format.names } | |
1170 if$ | |
1171 } | |
1172 | |
1173 FUNCTION {author.organization.sort} | |
1174 { author empty$ | |
1175 { organization empty$ | |
1176 { key empty$ | |
1177 { "to sort, need author, organization, or key in " cite$ * warning$ | |
1178 "" | |
1179 } | |
1180 { key sortify } | |
1181 if$ | |
1182 } | |
1183 { "The " #4 organization chop.word sortify } | |
1184 if$ | |
1185 } | |
1186 { author sort.format.names } | |
1187 if$ | |
1188 } | |
1189 | |
1190 FUNCTION {editor.organization.sort} | |
1191 { editor empty$ | |
1192 { organization empty$ | |
1193 { key empty$ | |
1194 { "to sort, need editor, organization, or key in " cite$ * warning$ | |
1195 "" | |
1196 } | |
1197 { key sortify } | |
1198 if$ | |
1199 } | |
1200 { "The " #4 organization chop.word sortify } | |
1201 if$ | |
1202 } | |
1203 { editor sort.format.names } | |
1204 if$ | |
1205 } | |
1206 | |
1207 FUNCTION {presort} | |
1208 { type$ "book" = | |
1209 type$ "inbook" = | |
1210 or | |
1211 'author.editor.sort | |
1212 { type$ "proceedings" = | |
1213 'editor.organization.sort | |
1214 { type$ "manual" = | |
1215 'author.organization.sort | |
1216 'author.sort | |
1217 if$ | |
1218 } | |
1219 if$ | |
1220 } | |
1221 if$ | |
1222 " " | |
1223 * | |
1224 year field.or.null sortify | |
1225 * | |
1226 " " | |
1227 * | |
1228 title field.or.null | |
1229 sort.format.title | |
1230 * | |
1231 #1 entry.max$ substring$ | |
1232 'sort.key$ := | |
1233 } | |
1234 | |
1235 ITERATE {presort} | |
1236 | |
1237 SORT | |
1238 | |
1239 STRINGS { longest.label } | |
1240 | |
1241 INTEGERS { number.label longest.label.width } | |
1242 | |
1243 FUNCTION {initialize.longest.label} | |
1244 { "" 'longest.label := | |
1245 #1 'number.label := | |
1246 #0 'longest.label.width := | |
1247 } | |
1248 | |
1249 FUNCTION {longest.label.pass} | |
1250 { number.label int.to.str$ 'label := | |
1251 number.label #1 + 'number.label := | |
1252 label width$ longest.label.width > | |
1253 { label 'longest.label := | |
1254 label width$ 'longest.label.width := | |
1255 } | |
1256 'skip$ | |
1257 if$ | |
1258 } | |
1259 | |
1260 EXECUTE {initialize.longest.label} | |
1261 | |
1262 ITERATE {longest.label.pass} | |
1263 | |
1264 FUNCTION {begin.bib} | |
1265 { preamble$ empty$ | |
1266 'skip$ | |
1267 { preamble$ write$ newline$ } | |
1268 if$ | |
1269 "\begin{thebibliography}{" longest.label * "}" * write$ newline$ | |
1270 } | |
1271 | |
1272 EXECUTE {begin.bib} | |
1273 | |
1274 EXECUTE {init.state.consts} | |
1275 | |
1276 ITERATE {call.type$} | |
1277 | |
1278 FUNCTION {end.bib} | |
1279 { newline$ | |
1280 "\end{thebibliography}" write$ newline$ | |
1281 } | |
1282 | |
1283 EXECUTE {end.bib} | |
1284 | |
1285 |