ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/iceWater2/pnas2011.bst
Revision: 4245
Committed: Wed Dec 10 20:49:40 2014 UTC (10 years, 9 months ago) by gezelter
File size: 17073 byte(s)
Log Message:
New stuff

File Contents

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