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

Annotation of /manual/agu.bst

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


Revision 1.1 - (hide 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 jmc 1.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