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

# User Rev Content
1 gezelter 2617 % 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}