ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/electrostaticMethodsPaper/jcp.bst
Revision: 2617
Committed: Tue Mar 14 16:22:54 2006 UTC (18 years, 3 months ago) by gezelter
File size: 17322 byte(s)
Log Message:
we're writing a paper.  What more do you want?

File Contents

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