0
|
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
|