/[MITgcm]/manual/agu.bst
ViewVC logotype

Contents of /manual/agu.bst

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Mon Aug 1 22:13:39 2005 UTC (18 years, 8 months ago) by jmc
Branch: MAIN
try agu bib-style (give author names & year instead of just a number)

1 %%
2 %% This is file `agu.bst', generated
3 %% on <1994/5/27> with the docstrip utility (2.2e).
4 %%
5 %% The original source files were:
6 %%
7 %% genbst.mbs (with options: `ay,seq-lab,nm-rev1,nmlm,x9,m1,dt-end,thtit-a,vol-it,volp-com,edby,blk-com,pp,ed,abr,lab-it,and-com,em-it')
8 %% ----------------------------------------
9 %% *** For publications of the American Geophysical Union ***
10 %%
11 %% (Here are the specifications of the source file)
12 %% \def\filename{genbst.mbs}
13 %% \def\filedate{1994 February 7}
14 %% \def\fileversion{1.2}
15 %% For use with BibTeX version 0.99a or later, LaTeX version 2.09
16 %%-------------------------------------------------------------------
17 %% NOTICE:
18 %% This file may be used for non-profit purposes.
19 %% It may not be distributed in exchange for money,
20 %% other than distribution costs.
21 %%
22 %% The author provides it `as is' and does not guarantee it in any way.
23 %%
24 %% Copyright (C) 1993 Patrick W. Daly
25 %% Max-Planck-Institut f\"ur Aeronomie
26 %% Postfach 20
27 %% D-37189 Katlenburg-Lindau
28 %% Germany
29 %%
30 %% E-mail:
31 %% SPAN-- nsp::linmpi::daly (note nsp also known as ecd1)
32 %% Internet-- daly@linmpi.dnet.gwdg.de
33 %%-----------------------------------------------------------
34 %% \CharacterTable
35 %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
36 %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
37 %% Digits \0\1\2\3\4\5\6\7\8\9
38 %% Exclamation \! Double quote \" Hash (number) \#
39 %% Dollar \$ Percent \% Ampersand \&
40 %% Acute accent \' Left paren \( Right paren \)
41 %% Asterisk \* Plus \+ Comma \,
42 %% Minus \- Point \. Solidus \/
43 %% Colon \: Semicolon \; Less than \<
44 %% Equals \= Greater than \> Question mark \?
45 %% Commercial at \@ Left bracket \[ Backslash \\
46 %% Right bracket \] Circumflex \^ Underscore \_
47 %% Grave accent \` Left brace \{ Vertical bar \|
48 %% Right brace \} Tilde \~}
49 %%---------------------------------------------------------------------
50 % This is an author-year citation style bibliography. As such, it is
51 % non-standard LaTeX, and requires a style option to function properly.
52 % An appropriate style option is: natbib.sty by Patrick W. Daly
53 % The form of the \bibitem entries is
54 % \bibitem[Jones et al.(1990)]{key}...
55 % The essential feature is that the label (the part in brackets) consists
56 % of the author names, as they should appear in the citation, with the year
57 % in parentheses following. There must be no space before the opening
58 % parenthesis!
59 % In natbib.sty, it is possible to define the type of enclosures that is
60 % really wanted (brackets or parentheses), but in either case, there must
61 % be parentheses in the label.
62 % The \cite command functions as follows:
63 % \cite{key} ==>> Jones et al. (1990)
64 % \cite[]{key} ==>> (Jones et al., 1990)
65 % \cite[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
66 % \cite[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
67 % \cite[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
68 % \citeauthor{key} Jones et al.
69 % \citeyear{key} 1990
70 %%---------------------------------------------------------------------
71
72 ENTRY
73 { address
74 author
75 booktitle
76 chapter
77 edition
78 editor
79 howpublished
80 institution
81 journal
82 key
83 month
84 note
85 number
86 organization
87 pages
88 publisher
89 school
90 series
91 title
92 type
93 volume
94 year
95 }
96 {}
97 { label extra.label sort.label }
98
99 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
100
101 FUNCTION {init.state.consts}
102 { #0 'before.all :=
103 #1 'mid.sentence :=
104 #2 'after.sentence :=
105 #3 'after.block :=
106 }
107
108 STRINGS { s t }
109
110 FUNCTION {output.nonnull}
111 { 's :=
112 output.state mid.sentence =
113 { ", " * write$ }
114 { output.state after.block =
115 { add.period$ write$
116 newline$
117 "\newblock " write$
118 }
119 { output.state before.all =
120 'write$
121 { add.period$ " " * write$ }
122 if$
123 }
124 if$
125 mid.sentence 'output.state :=
126 }
127 if$
128 s
129 }
130
131 FUNCTION {output}
132 { duplicate$ empty$
133 'pop$
134 'output.nonnull
135 if$
136 }
137
138 FUNCTION {output.check}
139 { 't :=
140 duplicate$ empty$
141 { pop$ "empty " t * " in " * cite$ * warning$ }
142 'output.nonnull
143 if$
144 }
145
146 FUNCTION {output.bibitem}
147 { newline$
148 "\bibitem[" write$
149 label write$
150 ")]{" write$
151 cite$ write$
152 "}" write$
153 newline$
154 ""
155 before.all 'output.state :=
156 }
157
158 FUNCTION {fin.entry}
159 { add.period$
160 write$
161 newline$
162 }
163
164 FUNCTION {new.block}
165 { output.state before.all =
166 'skip$
167 { after.block 'output.state := }
168 if$
169 }
170
171 FUNCTION {new.sentence}
172 { output.state after.block =
173 'skip$
174 { output.state before.all =
175 'skip$
176 { after.sentence 'output.state := }
177 if$
178 }
179 if$
180 }
181
182 FUNCTION {not}
183 { { #0 }
184 { #1 }
185 if$
186 }
187
188 FUNCTION {and}
189 { 'skip$
190 { pop$ #0 }
191 if$
192 }
193
194 FUNCTION {or}
195 { { pop$ #1 }
196 'skip$
197 if$
198 }
199
200 FUNCTION {new.block.checkb}
201 { empty$
202 swap$ empty$
203 and
204 'skip$
205 'new.block
206 if$
207 }
208
209 FUNCTION {field.or.null}
210 { duplicate$ empty$
211 { pop$ "" }
212 'skip$
213 if$
214 }
215
216 FUNCTION {emphasize}
217 { duplicate$ empty$
218 { pop$ "" }
219 { "{\it " swap$ * "}" * }
220 if$
221 }
222
223 INTEGERS { nameptr namesleft numnames }
224
225 FUNCTION {format.names}
226 { 's :=
227 #1 'nameptr :=
228 s num.names$ 'numnames :=
229 numnames 'namesleft :=
230 { namesleft #0 > }
231 { nameptr #1 >
232 { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := }
233 { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := }
234 if$
235 nameptr #1 >
236 {
237 nameptr #2 =
238 numnames #9 > and
239 { "others" 't :=
240 #1 'namesleft := }
241 'skip$
242 if$
243 namesleft #1 >
244 { ", " * t * }
245 {
246 "," *
247 t "others" =
248 { " et~al." * }
249 { " and " * t * }
250 if$
251 }
252 if$
253 }
254 't
255 if$
256 nameptr #1 + 'nameptr :=
257 namesleft #1 - 'namesleft :=
258 }
259 while$
260 }
261
262 FUNCTION {format.names.ed}
263 { 's :=
264 #1 'nameptr :=
265 s num.names$ 'numnames :=
266 numnames 'namesleft :=
267 { namesleft #0 > }
268 { s nameptr
269 "{f.~}{vv~}{ll}{, jj}"
270 format.name$ 't :=
271 nameptr #1 >
272 {
273 namesleft #1 >
274 { ", " * t * }
275 {
276 "," *
277 t "others" =
278 { " et~al." * }
279 { " and " * t * }
280 if$
281 }
282 if$
283 }
284 't
285 if$
286 nameptr #1 + 'nameptr :=
287 namesleft #1 - 'namesleft :=
288 }
289 while$
290 }
291
292 FUNCTION {format.key}
293 { empty$
294 { key field.or.null }
295 { "" }
296 if$
297 }
298
299 FUNCTION {format.authors}
300 { author empty$
301 { "" }
302 { author format.names }
303 if$
304 }
305
306 FUNCTION {format.editors}
307 { editor empty$
308 { "" }
309 { editor format.names
310 editor num.names$ #1 >
311 { " (eds.)" * }
312 { " (ed.)" * }
313 if$
314 }
315 if$
316 }
317
318 FUNCTION {format.in.editors}
319 { editor empty$
320 { "" }
321 { editor format.names.ed
322 }
323 if$
324 }
325
326 FUNCTION {format.title}
327 { title empty$
328 { "" }
329 { title "t" change.case$
330 }
331 if$
332 }
333
334 FUNCTION {n.dashify}
335 { 't :=
336 ""
337 { t empty$ not }
338 { t #1 #1 substring$ "-" =
339 { t #1 #2 substring$ "--" = not
340 { "--" *
341 t #2 global.max$ substring$ 't :=
342 }
343 { { t #1 #1 substring$ "-" = }
344 { "-" *
345 t #2 global.max$ substring$ 't :=
346 }
347 while$
348 }
349 if$
350 }
351 { t #1 #1 substring$ *
352 t #2 global.max$ substring$ 't :=
353 }
354 if$
355 }
356 while$
357 }
358
359 FUNCTION {word.in}
360 { "in " }
361
362 FUNCTION {format.date}
363 { year duplicate$ empty$
364 { "empty year in " cite$ * "; set to ????" * warning$
365 pop$ "????" }
366 'skip$
367 if$
368 extra.label *
369 }
370
371 FUNCTION {format.btitle}
372 { title emphasize
373 }
374
375 FUNCTION {tie.or.space.connect}
376 { duplicate$ text.length$ #3 <
377 { "~" }
378 { " " }
379 if$
380 swap$ * *
381 }
382
383 FUNCTION {either.or.check}
384 { empty$
385 'pop$
386 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
387 if$
388 }
389
390 FUNCTION {format.bvolume}
391 { volume empty$
392 { "" }
393 { "vol." volume tie.or.space.connect
394 series empty$
395 'skip$
396 { " of " * series emphasize * }
397 if$
398 "volume and number" number either.or.check
399 }
400 if$
401 }
402
403 FUNCTION {format.number.series}
404 { volume empty$
405 { number empty$
406 { series field.or.null }
407 { output.state mid.sentence =
408 { "no." }
409 { "No." }
410 if$
411 number tie.or.space.connect
412 series empty$
413 { "there's a number but no series in " cite$ * warning$ }
414 { " in " * series * }
415 if$
416 }
417 if$
418 }
419 { "" }
420 if$
421 }
422
423 FUNCTION {format.edition}
424 { edition empty$
425 { "" }
426 { output.state mid.sentence =
427 { edition "l" change.case$ " edn." * }
428 { edition "t" change.case$ " edn." * }
429 if$
430 }
431 if$
432 }
433
434 INTEGERS { multiresult }
435
436 FUNCTION {multi.page.check}
437 { 't :=
438 #0 'multiresult :=
439 { multiresult not
440 t empty$ not
441 and
442 }
443 { t #1 #1 substring$
444 duplicate$ "-" =
445 swap$ duplicate$ "," =
446 swap$ "+" =
447 or or
448 { #1 'multiresult := }
449 { t #2 global.max$ substring$ 't := }
450 if$
451 }
452 while$
453 multiresult
454 }
455
456 FUNCTION {format.pages}
457 { pages empty$
458 { "" }
459 { pages multi.page.check
460 { "pp." pages n.dashify tie.or.space.connect }
461 { "p." pages tie.or.space.connect }
462 if$
463 }
464 if$
465 }
466
467 FUNCTION {format.vol.num.pages}
468 { volume field.or.null
469 emphasize
470 number empty$
471 'skip$
472 { "(" number * ")" * *
473 volume empty$
474 { "there's a number but no volume in " cite$ * warning$ }
475 'skip$
476 if$
477 }
478 if$
479 pages empty$
480 'skip$
481 { duplicate$ empty$
482 { pop$ format.pages }
483 { ", " * pages n.dashify * }
484 if$
485 }
486 if$
487 }
488
489 FUNCTION {format.chapter.pages}
490 { chapter empty$
491 'format.pages
492 { type empty$
493 { "chap." }
494 { type "l" change.case$ }
495 if$
496 chapter tie.or.space.connect
497 pages empty$
498 'skip$
499 { ", " * format.pages * }
500 if$
501 }
502 if$
503 }
504
505 FUNCTION {format.in.ed.booktitle}
506 { booktitle empty$
507 { "" }
508 { editor empty$
509 { word.in booktitle emphasize * }
510 { word.in booktitle emphasize * ", edited by " *
511 format.in.editors * }
512 if$
513 }
514 if$
515 }
516
517 FUNCTION {format.thesis.type}
518 { type empty$
519 'skip$
520 { pop$
521 type "t" change.case$
522 }
523 if$
524 }
525
526 FUNCTION {format.tr.number}
527 { type empty$
528 { "Tech. Rep." }
529 'type
530 if$
531 number empty$
532 { "t" change.case$ }
533 { number tie.or.space.connect }
534 if$
535 }
536
537 FUNCTION {format.article.crossref}
538 {
539 word.in
540 "\cite{" * crossref * "}" *
541 }
542
543 FUNCTION {format.book.crossref}
544 { volume empty$
545 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
546 word.in
547 }
548 { "vol." volume tie.or.space.connect
549 " of " *
550 }
551 if$
552 "\cite{" * crossref * "}" *
553 }
554
555 FUNCTION {format.incoll.inproc.crossref}
556 {
557 word.in
558 "\cite{" * crossref * "}" *
559 }
560
561 FUNCTION {article}
562 { output.bibitem
563 format.authors "author" output.check
564 author format.key output
565 format.title "title" output.check
566 crossref missing$
567 { journal emphasize "journal" output.check
568 format.vol.num.pages output
569 }
570 { format.article.crossref output.nonnull
571 format.pages output
572 }
573 if$
574 note output
575 format.date "year" output.check
576 fin.entry
577 }
578
579 FUNCTION {book}
580 { output.bibitem
581 author empty$
582 { format.editors "author and editor" output.check
583 editor format.key output
584 }
585 { format.authors output.nonnull
586 crossref missing$
587 { "author and editor" editor either.or.check }
588 'skip$
589 if$
590 }
591 if$
592 format.btitle "title" output.check
593 crossref missing$
594 { format.bvolume output
595 format.number.series output
596 new.sentence
597 publisher "publisher" output.check
598 address output
599 }
600 {
601 format.book.crossref output.nonnull
602 }
603 if$
604 format.edition output
605 note output
606 format.date "year" output.check
607 fin.entry
608 }
609
610 FUNCTION {booklet}
611 { output.bibitem
612 format.authors output
613 author format.key output
614 format.title "title" output.check
615 howpublished output
616 address output
617 note output
618 format.date "year" output.check
619 fin.entry
620 }
621
622 FUNCTION {inbook}
623 { output.bibitem
624 author empty$
625 { format.editors "author and editor" output.check
626 editor format.key output
627 }
628 { format.authors output.nonnull
629 crossref missing$
630 { "author and editor" editor either.or.check }
631 'skip$
632 if$
633 }
634 if$
635 format.btitle "title" output.check
636 crossref missing$
637 { format.bvolume output
638 format.chapter.pages "chapter and pages" output.check
639 format.number.series output
640 new.sentence
641 publisher "publisher" output.check
642 address output
643 }
644 { format.chapter.pages "chapter and pages" output.check
645 format.book.crossref output.nonnull
646 }
647 if$
648 format.edition output
649 note output
650 format.date "year" output.check
651 fin.entry
652 }
653
654 FUNCTION {incollection}
655 { output.bibitem
656 format.authors "author" output.check
657 author format.key output
658 format.title "title" output.check
659 crossref missing$
660 { format.in.ed.booktitle "booktitle" output.check
661 format.bvolume output
662 format.number.series output
663 format.chapter.pages output
664 new.sentence
665 publisher "publisher" output.check
666 address output
667 format.edition output
668 }
669 { format.incoll.inproc.crossref output.nonnull
670 format.chapter.pages output
671 }
672 if$
673 note output
674 format.date "year" output.check
675 fin.entry
676 }
677
678 FUNCTION {inproceedings}
679 { output.bibitem
680 format.authors "author" output.check
681 author format.key output
682 format.title "title" output.check
683 crossref missing$
684 { format.in.ed.booktitle "booktitle" output.check
685 format.bvolume output
686 format.number.series output
687 format.pages output
688 address output
689 new.sentence
690 organization output
691 publisher output
692 }
693 { format.incoll.inproc.crossref output.nonnull
694 format.pages output
695 }
696 if$
697 note output
698 format.date "year" output.check
699 fin.entry
700 }
701
702 FUNCTION {conference} { inproceedings }
703
704 FUNCTION {manual}
705 { output.bibitem
706 format.authors output
707 author format.key output
708 format.btitle "title" output.check
709 organization output
710 address output
711 format.edition output
712 note output
713 format.date "year" output.check
714 fin.entry
715 }
716
717 FUNCTION {mastersthesis}
718 { output.bibitem
719 format.authors "author" output.check
720 author format.key output
721 format.title "title" output.check
722 "Master's thesis" format.thesis.type output.nonnull
723 school "school" output.check
724 address output
725 note output
726 format.date "year" output.check
727 fin.entry
728 }
729
730 FUNCTION {misc}
731 { output.bibitem
732 format.authors output
733 author format.key output
734 format.title output
735 howpublished output
736 note output
737 format.date "year" output.check
738 fin.entry
739 }
740
741 FUNCTION {phdthesis}
742 { output.bibitem
743 format.authors "author" output.check
744 author format.key output
745 format.title "title" output.check
746 "Ph.D. thesis" format.thesis.type output.nonnull
747 school "school" output.check
748 address output
749 note output
750 format.date "year" output.check
751 fin.entry
752 }
753
754 FUNCTION {proceedings}
755 { output.bibitem
756 format.editors output
757 editor format.key output
758 format.btitle "title" output.check
759 format.bvolume output
760 format.number.series output
761 address output
762 new.sentence
763 organization output
764 publisher output
765 note output
766 format.date "year" output.check
767 fin.entry
768 }
769
770 FUNCTION {techreport}
771 { output.bibitem
772 format.authors "author" output.check
773 author format.key output
774 format.title "title" output.check
775 format.tr.number output.nonnull
776 institution "institution" output.check
777 address output
778 note output
779 format.date "year" output.check
780 fin.entry
781 }
782
783 FUNCTION {unpublished}
784 { output.bibitem
785 format.authors "author" output.check
786 author format.key output
787 format.title "title" output.check
788 note "note" output.check
789 format.date "year" output.check
790 fin.entry
791 }
792
793 FUNCTION {default.type} { misc }
794
795 MACRO {jan} {"January"}
796
797 MACRO {feb} {"February"}
798
799 MACRO {mar} {"March"}
800
801 MACRO {apr} {"April"}
802
803 MACRO {may} {"May"}
804
805 MACRO {jun} {"June"}
806
807 MACRO {jul} {"July"}
808
809 MACRO {aug} {"August"}
810
811 MACRO {sep} {"September"}
812
813 MACRO {oct} {"October"}
814
815 MACRO {nov} {"November"}
816
817 MACRO {dec} {"December"}
818
819 MACRO {acmcs} {"ACM Computing Surveys"}
820
821 MACRO {acta} {"Acta Informatica"}
822
823 MACRO {cacm} {"Communications of the ACM"}
824
825 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
826
827 MACRO {ibmsj} {"IBM Systems Journal"}
828
829 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
830
831 MACRO {ieeetc} {"IEEE Transactions on Computers"}
832
833 MACRO {ieeetcad}
834 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
835
836 MACRO {ipl} {"Information Processing Letters"}
837
838 MACRO {jacm} {"Journal of the ACM"}
839
840 MACRO {jcss} {"Journal of Computer and System Sciences"}
841
842 MACRO {scp} {"Science of Computer Programming"}
843
844 MACRO {sicomp} {"SIAM Journal on Computing"}
845
846 MACRO {tocs} {"ACM Transactions on Computer Systems"}
847
848 MACRO {tods} {"ACM Transactions on Database Systems"}
849
850 MACRO {tog} {"ACM Transactions on Graphics"}
851
852 MACRO {toms} {"ACM Transactions on Mathematical Software"}
853
854 MACRO {toois} {"ACM Transactions on Office Information Systems"}
855
856 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
857
858 MACRO {tcs} {"Theoretical Computer Science"}
859
860 READ
861
862 FUNCTION {sortify}
863 { purify$
864 "l" change.case$
865 }
866
867 INTEGERS { len }
868
869 FUNCTION {chop.word}
870 { 's :=
871 'len :=
872 s #1 len substring$ =
873 { s len #1 + global.max$ substring$ }
874 's
875 if$
876 }
877
878 FUNCTION {format.lab.names}
879 { 's :=
880 s #1 "{vv~}{ll}" format.name$
881 s num.names$ duplicate$
882 #2 >
883 { pop$ " et~al." * }
884 { #2 <
885 'skip$
886 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
887 { " et~al." * }
888 { " and " * s #2 "{vv~}{ll}" format.name$ * }
889 if$
890 }
891 if$
892 }
893 if$
894 }
895
896 FUNCTION {author.key.label}
897 { author empty$
898 { key empty$
899 { cite$ #1 #3 substring$ }
900 'key
901 if$
902 }
903 { author format.lab.names }
904 if$
905 }
906
907 FUNCTION {author.editor.key.label}
908 { author empty$
909 { editor empty$
910 { key empty$
911 { cite$ #1 #3 substring$ }
912 'key
913 if$
914 }
915 { editor format.lab.names }
916 if$
917 }
918 { author format.lab.names }
919 if$
920 }
921
922 FUNCTION {editor.key.label}
923 { editor empty$
924 { key empty$
925 { cite$ #1 #3 substring$ }
926 'key
927 if$
928 }
929 { editor format.lab.names }
930 if$
931 }
932
933 FUNCTION {calc.label}
934 { type$ "book" =
935 type$ "inbook" =
936 or
937 'author.editor.key.label
938 { type$ "proceedings" =
939 'editor.key.label
940 'author.key.label
941 if$
942 }
943 if$
944 emphasize
945 "("
946 *
947 year duplicate$ empty$
948 { pop$ "????" }
949 { purify$ #-1 #4 substring$ }
950 if$
951 *
952 'label :=
953 }
954
955 FUNCTION {sort.format.names}
956 { 's :=
957 #1 'nameptr :=
958 ""
959 s num.names$ 'numnames :=
960 numnames 'namesleft :=
961 { namesleft #0 > }
962 { nameptr #1 >
963 { " " * }
964 'skip$
965 if$
966 s nameptr
967 "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
968 format.name$ 't :=
969 nameptr numnames = t "others" = and
970 { "et al" * }
971 { numnames #2 > nameptr #2 = and
972 { "zzzzzz" * #1 'namesleft := }
973 { t sortify * }
974 if$
975 }
976 if$
977 nameptr #1 + 'nameptr :=
978 namesleft #1 - 'namesleft :=
979 }
980 while$
981 }
982
983 FUNCTION {sort.format.title}
984 { 't :=
985 "A " #2
986 "An " #3
987 "The " #4 t chop.word
988 chop.word
989 chop.word
990 sortify
991 #1 global.max$ substring$
992 }
993
994 FUNCTION {author.sort}
995 { author empty$
996 { key empty$
997 { "to sort, need author or key in " cite$ * warning$
998 ""
999 }
1000 { key sortify }
1001 if$
1002 }
1003 { author sort.format.names }
1004 if$
1005 }
1006
1007 FUNCTION {author.editor.sort}
1008 { author empty$
1009 { editor empty$
1010 { key empty$
1011 { "to sort, need author, editor, or key in " cite$ * warning$
1012 ""
1013 }
1014 { key sortify }
1015 if$
1016 }
1017 { editor sort.format.names }
1018 if$
1019 }
1020 { author sort.format.names }
1021 if$
1022 }
1023
1024 FUNCTION {editor.sort}
1025 { editor empty$
1026 { key empty$
1027 { "to sort, need editor or key in " cite$ * warning$
1028 ""
1029 }
1030 { key sortify }
1031 if$
1032 }
1033 { editor sort.format.names }
1034 if$
1035 }
1036
1037 FUNCTION {presort}
1038 { calc.label
1039 label sortify
1040 " "
1041 *
1042 type$ "book" =
1043 type$ "inbook" =
1044 or
1045 'author.editor.sort
1046 { type$ "proceedings" =
1047 'editor.sort
1048 'author.sort
1049 if$
1050 }
1051 if$
1052 #1 entry.max$ substring$
1053 'sort.label :=
1054 sort.label
1055 *
1056 " "
1057 *
1058 title field.or.null
1059 sort.format.title
1060 *
1061 #1 entry.max$ substring$
1062 'sort.key$ :=
1063 }
1064
1065 ITERATE {presort}
1066
1067 SORT
1068
1069 STRINGS { last.label next.extra }
1070
1071 INTEGERS { last.extra.num }
1072
1073 FUNCTION {initialize.extra.label.stuff}
1074 { #0 int.to.chr$ 'last.label :=
1075 "" 'next.extra :=
1076 #0 'last.extra.num :=
1077 }
1078
1079 FUNCTION {forward.pass}
1080 { last.label label =
1081 { last.extra.num #1 + 'last.extra.num :=
1082 last.extra.num int.to.chr$ 'extra.label :=
1083 }
1084 { "a" chr.to.int$ 'last.extra.num :=
1085 "" 'extra.label :=
1086 label 'last.label :=
1087 }
1088 if$
1089 }
1090
1091 FUNCTION {reverse.pass}
1092 { next.extra "b" =
1093 { "a" 'extra.label := }
1094 'skip$
1095 if$
1096 extra.label 'next.extra :=
1097 label extra.label * 'label :=
1098 }
1099
1100 EXECUTE {initialize.extra.label.stuff}
1101
1102 ITERATE {forward.pass}
1103
1104 REVERSE {reverse.pass}
1105
1106 FUNCTION {bib.sort.order}
1107 { sort.label
1108 " "
1109 *
1110 year field.or.null sortify
1111 *
1112 " "
1113 *
1114 title field.or.null
1115 sort.format.title
1116 *
1117 #1 entry.max$ substring$
1118 'sort.key$ :=
1119 }
1120
1121 ITERATE {bib.sort.order}
1122
1123 SORT
1124
1125 FUNCTION {begin.bib}
1126 { preamble$ empty$
1127 'skip$
1128 { preamble$ write$ newline$ }
1129 if$
1130 "\begin{thebibliography}{}" write$ newline$
1131 }
1132
1133 EXECUTE {begin.bib}
1134
1135 EXECUTE {init.state.consts}
1136
1137 ITERATE {call.type$}
1138
1139 FUNCTION {end.bib}
1140 { newline$
1141 "\end{thebibliography}" write$ newline$
1142 }
1143
1144 EXECUTE {end.bib}
1145 %% End of customized bst file

  ViewVC Help
Powered by ViewVC 1.1.22