comparison ipsjunsrt-e.bst @ 0:5de476fabbbc

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