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