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