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