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 (9 years, 9 months ago) by gezelter
File size: 17073 byte(s)
Log Message:
New stuff

File Contents

# Content
1 %%% ====================================================================
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}