/[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.3 - (hide annotations) (download)
Wed Jun 28 21:13:22 2006 UTC (17 years, 9 months ago) by cnh
Branch: MAIN
CVS Tags: checkpoint01, HEAD
Changes since 1.2: +1 -1 lines
Small hacks to fix up latex2html problem

1 cnh 1.2 %%% Modification of BibTeX style file agu.bst
2     %%% ... by urlbst, version 0.5 (marked with "% urlbst")
3     %%% See <http://www.astro.gla.ac.uk/users/norman/distrib/urlbst/>
4     %%% Added webpage entry type, and url and lastchecked fields.
5     %%% Added eprint support.
6     %%% Added DOI support.
7     %%% Added hyperref support.
8     %%% Original headers follow...
9    
10 jmc 1.1 %%
11     %% This is file `agu.bst', generated
12     %% on <1994/5/27> with the docstrip utility (2.2e).
13     %%
14     %% The original source files were:
15     %%
16     %% 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')
17     %% ----------------------------------------
18     %% *** For publications of the American Geophysical Union ***
19     %%
20     %% (Here are the specifications of the source file)
21     %% \def\filename{genbst.mbs}
22     %% \def\filedate{1994 February 7}
23     %% \def\fileversion{1.2}
24     %% For use with BibTeX version 0.99a or later, LaTeX version 2.09
25     %%-------------------------------------------------------------------
26     %% NOTICE:
27     %% This file may be used for non-profit purposes.
28     %% It may not be distributed in exchange for money,
29     %% other than distribution costs.
30     %%
31     %% The author provides it `as is' and does not guarantee it in any way.
32     %%
33     %% Copyright (C) 1993 Patrick W. Daly
34     %% Max-Planck-Institut f\"ur Aeronomie
35     %% Postfach 20
36     %% D-37189 Katlenburg-Lindau
37     %% Germany
38     %%
39     %% E-mail:
40     %% SPAN-- nsp::linmpi::daly (note nsp also known as ecd1)
41     %% Internet-- daly@linmpi.dnet.gwdg.de
42     %%-----------------------------------------------------------
43     %% \CharacterTable
44     %% {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
45     %% 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
46     %% Digits \0\1\2\3\4\5\6\7\8\9
47     %% Exclamation \! Double quote \" Hash (number) \#
48     %% Dollar \$ Percent \% Ampersand \&
49     %% Acute accent \' Left paren \( Right paren \)
50     %% Asterisk \* Plus \+ Comma \,
51     %% Minus \- Point \. Solidus \/
52     %% Colon \: Semicolon \; Less than \<
53     %% Equals \= Greater than \> Question mark \?
54     %% Commercial at \@ Left bracket \[ Backslash \\
55     %% Right bracket \] Circumflex \^ Underscore \_
56     %% Grave accent \` Left brace \{ Vertical bar \|
57     %% Right brace \} Tilde \~}
58     %%---------------------------------------------------------------------
59     % This is an author-year citation style bibliography. As such, it is
60     % non-standard LaTeX, and requires a style option to function properly.
61     % An appropriate style option is: natbib.sty by Patrick W. Daly
62     % The form of the \bibitem entries is
63     % \bibitem[Jones et al.(1990)]{key}...
64     % The essential feature is that the label (the part in brackets) consists
65     % of the author names, as they should appear in the citation, with the year
66     % in parentheses following. There must be no space before the opening
67     % parenthesis!
68     % In natbib.sty, it is possible to define the type of enclosures that is
69     % really wanted (brackets or parentheses), but in either case, there must
70     % be parentheses in the label.
71     % The \cite command functions as follows:
72     % \cite{key} ==>> Jones et al. (1990)
73     % \cite[]{key} ==>> (Jones et al., 1990)
74     % \cite[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
75     % \cite[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
76     % \cite[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
77     % \citeauthor{key} Jones et al.
78     % \citeyear{key} 1990
79     %%---------------------------------------------------------------------
80    
81     ENTRY
82     { address
83     author
84     booktitle
85     chapter
86     edition
87     editor
88     howpublished
89     institution
90     journal
91     key
92     month
93     note
94     number
95     organization
96     pages
97     publisher
98     school
99     series
100     title
101     type
102     volume
103     year
104 cnh 1.2 eprint % urlbst
105     doi % urlbst
106     url % urlbst
107     lastchecked % urlbst
108 jmc 1.1 }
109     {}
110     { label extra.label sort.label }
111    
112     INTEGERS { output.state before.all mid.sentence after.sentence after.block }
113    
114 cnh 1.2 STRINGS { urlintro eprinturl eprintprefix doiprefix doiurl } % urlbst...
115     INTEGERS { hrefform addeprints adddoiresolver }
116     % Following constants may be adjusted by hand, if desired
117     FUNCTION {init.config.constants}
118     {
119     "Available from: " 'urlintro := % prefix before URL
120     "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref
121     "arXiv:" 'eprintprefix := % text prefix printed before eprint ref
122     "http://dx.doi.org/" 'doiurl := % prefix to make URL from DOI
123     "doi:" 'doiprefix := % text prefix printed before DOI ref
124     #1 'addeprints := % 0=no eprints; 1=include eprints
125     #1 'adddoiresolver := % 0=no DOI resolver; 1=include it
126     #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs
127     }
128     INTEGERS {
129     bracket.state
130     outside.brackets
131     open.brackets
132     within.brackets
133     close.brackets
134     }
135     % ...urlbst to here
136 jmc 1.1 FUNCTION {init.state.consts}
137 cnh 1.2 { #0 'outside.brackets := % urlbst
138     #1 'open.brackets :=
139     #2 'within.brackets :=
140     #3 'close.brackets :=
141    
142     #0 'before.all :=
143 jmc 1.1 #1 'mid.sentence :=
144     #2 'after.sentence :=
145     #3 'after.block :=
146     }
147    
148     STRINGS { s t }
149    
150 cnh 1.2 % urlbst
151     FUNCTION {output.nonnull.original}
152 jmc 1.1 { 's :=
153     output.state mid.sentence =
154     { ", " * write$ }
155     { output.state after.block =
156     { add.period$ write$
157     newline$
158     "\newblock " write$
159     }
160     { output.state before.all =
161     'write$
162     { add.period$ " " * write$ }
163     if$
164     }
165     if$
166     mid.sentence 'output.state :=
167     }
168     if$
169     s
170     }
171    
172 cnh 1.2 % urlbst...
173     FUNCTION {output.nonnull}
174     { % Save the thing we've been asked to output
175     's :=
176     % If the bracket-state is close.brackets, then add a close-bracket to
177     % what is currently at the top of the stack, and set bracket.state
178     % to outside.brackets
179     bracket.state close.brackets =
180     { "]" *
181     outside.brackets 'bracket.state :=
182     }
183     'skip$
184     if$
185     bracket.state outside.brackets =
186     { % We're outside all brackets -- this is the normal situation.
187     % Write out what's currently at the top of the stack, using the
188     % original output.nonnull function.
189     s
190     output.nonnull.original
191     }
192     { % Still in brackets. Add open-bracket or (continuation) comma, add the
193     % new text (in s) to the top of the stack, and move to the close-brackets
194     % state, ready for next time (unless inbrackets resets it). If we come
195     % into this branch, then output.state is carefully undisturbed.
196     bracket.state open.brackets =
197     { " [" * }
198     { ", " * } % bracket.state will be within.brackets
199     if$
200     s *
201     close.brackets 'bracket.state :=
202     }
203     if$
204     }
205    
206     % Call this function just before adding something which should be presented in
207     % brackets. bracket.state is handled specially within output.nonnull.
208     FUNCTION {inbrackets}
209     { bracket.state close.brackets =
210     { within.brackets 'bracket.state := } % reset the state: not open nor closed
211     { open.brackets 'bracket.state := }
212     if$
213     }
214    
215     FUNCTION {format.lastchecked}
216     { lastchecked empty$
217     { "" }
218     { inbrackets "cited " lastchecked * }
219     if$
220     }
221     % ...urlbst to here
222    
223 jmc 1.1 FUNCTION {output}
224     { duplicate$ empty$
225     'pop$
226     'output.nonnull
227     if$
228     }
229    
230     FUNCTION {output.check}
231     { 't :=
232     duplicate$ empty$
233     { pop$ "empty " t * " in " * cite$ * warning$ }
234     'output.nonnull
235     if$
236     }
237    
238     FUNCTION {output.bibitem}
239 cnh 1.2 { outside.brackets 'bracket.state := % urlbst
240     newline$
241 jmc 1.1 "\bibitem[" write$
242     label write$
243     ")]{" write$
244     cite$ write$
245     "}" write$
246     newline$
247     ""
248     before.all 'output.state :=
249     }
250    
251     FUNCTION {fin.entry}
252 cnh 1.2 {
253     bracket.state close.brackets = % urlbst
254     { "]" * }
255     'skip$
256     if$
257     add.period$
258 jmc 1.1 write$
259     newline$
260     }
261    
262     FUNCTION {new.block}
263     { output.state before.all =
264     'skip$
265     { after.block 'output.state := }
266     if$
267     }
268    
269     FUNCTION {new.sentence}
270     { output.state after.block =
271     'skip$
272     { output.state before.all =
273     'skip$
274     { after.sentence 'output.state := }
275     if$
276     }
277     if$
278     }
279    
280     FUNCTION {not}
281     { { #0 }
282     { #1 }
283     if$
284     }
285    
286     FUNCTION {and}
287     { 'skip$
288     { pop$ #0 }
289     if$
290     }
291    
292     FUNCTION {or}
293     { { pop$ #1 }
294     'skip$
295     if$
296     }
297    
298     FUNCTION {new.block.checkb}
299     { empty$
300     swap$ empty$
301     and
302     'skip$
303     'new.block
304     if$
305     }
306    
307     FUNCTION {field.or.null}
308     { duplicate$ empty$
309     { pop$ "" }
310     'skip$
311     if$
312     }
313    
314     FUNCTION {emphasize}
315     { duplicate$ empty$
316     { pop$ "" }
317     { "{\it " swap$ * "}" * }
318     if$
319     }
320    
321     INTEGERS { nameptr namesleft numnames }
322    
323     FUNCTION {format.names}
324     { 's :=
325     #1 'nameptr :=
326     s num.names$ 'numnames :=
327     numnames 'namesleft :=
328     { namesleft #0 > }
329     { nameptr #1 >
330     { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := }
331     { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := }
332     if$
333     nameptr #1 >
334     {
335     nameptr #2 =
336     numnames #9 > and
337     { "others" 't :=
338     #1 'namesleft := }
339     'skip$
340     if$
341     namesleft #1 >
342     { ", " * t * }
343     {
344     "," *
345     t "others" =
346     { " et~al." * }
347     { " and " * t * }
348     if$
349     }
350     if$
351     }
352     't
353     if$
354     nameptr #1 + 'nameptr :=
355     namesleft #1 - 'namesleft :=
356     }
357     while$
358     }
359    
360     FUNCTION {format.names.ed}
361     { 's :=
362     #1 'nameptr :=
363     s num.names$ 'numnames :=
364     numnames 'namesleft :=
365     { namesleft #0 > }
366     { s nameptr
367     "{f.~}{vv~}{ll}{, jj}"
368     format.name$ 't :=
369     nameptr #1 >
370     {
371     namesleft #1 >
372     { ", " * t * }
373     {
374     "," *
375     t "others" =
376     { " et~al." * }
377     { " and " * t * }
378     if$
379     }
380     if$
381     }
382     't
383     if$
384     nameptr #1 + 'nameptr :=
385     namesleft #1 - 'namesleft :=
386     }
387     while$
388     }
389    
390     FUNCTION {format.key}
391     { empty$
392     { key field.or.null }
393     { "" }
394     if$
395     }
396    
397     FUNCTION {format.authors}
398     { author empty$
399     { "" }
400     { author format.names }
401     if$
402     }
403    
404     FUNCTION {format.editors}
405     { editor empty$
406     { "" }
407     { editor format.names
408     editor num.names$ #1 >
409     { " (eds.)" * }
410     { " (ed.)" * }
411     if$
412     }
413     if$
414     }
415    
416     FUNCTION {format.in.editors}
417     { editor empty$
418     { "" }
419     { editor format.names.ed
420     }
421     if$
422     }
423    
424     FUNCTION {format.title}
425     { title empty$
426     { "" }
427     { title "t" change.case$
428     }
429     if$
430     }
431    
432     FUNCTION {n.dashify}
433     { 't :=
434     ""
435     { t empty$ not }
436     { t #1 #1 substring$ "-" =
437     { t #1 #2 substring$ "--" = not
438     { "--" *
439     t #2 global.max$ substring$ 't :=
440     }
441     { { t #1 #1 substring$ "-" = }
442     { "-" *
443     t #2 global.max$ substring$ 't :=
444     }
445     while$
446     }
447     if$
448     }
449     { t #1 #1 substring$ *
450     t #2 global.max$ substring$ 't :=
451     }
452     if$
453     }
454     while$
455     }
456    
457     FUNCTION {word.in}
458     { "in " }
459    
460     FUNCTION {format.date}
461     { year duplicate$ empty$
462     { "empty year in " cite$ * "; set to ????" * warning$
463     pop$ "????" }
464     'skip$
465     if$
466     extra.label *
467     }
468    
469     FUNCTION {format.btitle}
470     { title emphasize
471     }
472    
473     FUNCTION {tie.or.space.connect}
474     { duplicate$ text.length$ #3 <
475     { "~" }
476     { " " }
477     if$
478     swap$ * *
479     }
480    
481     FUNCTION {either.or.check}
482     { empty$
483     'pop$
484     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
485     if$
486     }
487    
488     FUNCTION {format.bvolume}
489     { volume empty$
490     { "" }
491     { "vol." volume tie.or.space.connect
492     series empty$
493     'skip$
494     { " of " * series emphasize * }
495     if$
496     "volume and number" number either.or.check
497     }
498     if$
499     }
500    
501     FUNCTION {format.number.series}
502     { volume empty$
503     { number empty$
504     { series field.or.null }
505     { output.state mid.sentence =
506     { "no." }
507     { "No." }
508     if$
509     number tie.or.space.connect
510     series empty$
511     { "there's a number but no series in " cite$ * warning$ }
512     { " in " * series * }
513     if$
514     }
515     if$
516     }
517     { "" }
518     if$
519     }
520    
521     FUNCTION {format.edition}
522     { edition empty$
523     { "" }
524     { output.state mid.sentence =
525     { edition "l" change.case$ " edn." * }
526     { edition "t" change.case$ " edn." * }
527     if$
528     }
529     if$
530     }
531    
532     INTEGERS { multiresult }
533    
534     FUNCTION {multi.page.check}
535     { 't :=
536     #0 'multiresult :=
537     { multiresult not
538     t empty$ not
539     and
540     }
541     { t #1 #1 substring$
542     duplicate$ "-" =
543     swap$ duplicate$ "," =
544     swap$ "+" =
545     or or
546     { #1 'multiresult := }
547     { t #2 global.max$ substring$ 't := }
548     if$
549     }
550     while$
551     multiresult
552     }
553    
554     FUNCTION {format.pages}
555     { pages empty$
556     { "" }
557     { pages multi.page.check
558     { "pp." pages n.dashify tie.or.space.connect }
559     { "p." pages tie.or.space.connect }
560     if$
561     }
562     if$
563     }
564    
565     FUNCTION {format.vol.num.pages}
566     { volume field.or.null
567     emphasize
568     number empty$
569     'skip$
570     { "(" number * ")" * *
571     volume empty$
572     { "there's a number but no volume in " cite$ * warning$ }
573     'skip$
574     if$
575     }
576     if$
577     pages empty$
578     'skip$
579     { duplicate$ empty$
580     { pop$ format.pages }
581     { ", " * pages n.dashify * }
582     if$
583     }
584     if$
585     }
586    
587     FUNCTION {format.chapter.pages}
588     { chapter empty$
589     'format.pages
590     { type empty$
591     { "chap." }
592     { type "l" change.case$ }
593     if$
594     chapter tie.or.space.connect
595     pages empty$
596     'skip$
597     { ", " * format.pages * }
598     if$
599     }
600     if$
601     }
602    
603     FUNCTION {format.in.ed.booktitle}
604     { booktitle empty$
605     { "" }
606     { editor empty$
607     { word.in booktitle emphasize * }
608     { word.in booktitle emphasize * ", edited by " *
609     format.in.editors * }
610     if$
611     }
612     if$
613     }
614    
615     FUNCTION {format.thesis.type}
616     { type empty$
617     'skip$
618     { pop$
619     type "t" change.case$
620     }
621     if$
622     }
623    
624     FUNCTION {format.tr.number}
625     { type empty$
626     { "Tech. Rep." }
627     'type
628     if$
629     number empty$
630     { "t" change.case$ }
631     { number tie.or.space.connect }
632     if$
633     }
634    
635     FUNCTION {format.article.crossref}
636     {
637     word.in
638     "\cite{" * crossref * "}" *
639     }
640    
641     FUNCTION {format.book.crossref}
642     { volume empty$
643     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
644     word.in
645     }
646     { "vol." volume tie.or.space.connect
647     " of " *
648     }
649     if$
650     "\cite{" * crossref * "}" *
651     }
652    
653     FUNCTION {format.incoll.inproc.crossref}
654     {
655     word.in
656     "\cite{" * crossref * "}" *
657     }
658    
659 cnh 1.2 % urlbst...
660     % Functions for making hypertext links.
661     % In all cases, the stack has (link-text href-url)
662     %
663     % make 'null' specials
664     FUNCTION {make.href.null}
665     {
666     pop$
667     }
668     % make hypertex specials
669     FUNCTION {make.href.hypertex}
670     {
671     "\special {html:<a href=" quote$ *
672     swap$ * quote$ * "> }" * swap$ *
673     "\special {html:</a>}" *
674     }
675     % make hyperref specials
676     FUNCTION {make.href.hyperref}
677     {
678 cnh 1.3 " \myhref{" swap$ * "}{" * swap$ * "}" *
679 cnh 1.2 }
680     FUNCTION {make.href}
681     { hrefform #2 =
682     'make.href.hyperref % hrefform = 2
683     { hrefform #1 =
684     'make.href.hypertex % hrefform = 1
685     'make.href.null % hrefform = 0 (or anything else)
686     if$
687     }
688     if$
689     }
690    
691     FUNCTION {format.url}
692     { url empty$
693     { "" }
694     { hrefform #1 =
695     { % special case -- add HyperTeX specials
696     urlintro "\url{" url * "}" * url make.href.hypertex * }
697     { urlintro "\url{" * url * "}" * }
698     if$
699     }
700     if$
701     }
702    
703     FUNCTION {format.eprint}
704     { eprint empty$
705     { "" }
706     { eprintprefix eprint * eprinturl eprint * make.href }
707     if$
708     }
709    
710     FUNCTION {format.doi}
711     { doi empty$
712     { "" }
713     { doiprefix doi * doiurl doi * make.href }
714     if$
715     }
716    
717     % Output a URL. We can't use the more normal idiom (something like
718     % `format.url output'), because the `inbrackets' within
719     % format.lastchecked applies to everything between calls to `output',
720     % so that `format.url format.lastchecked * output' ends up with both
721     % the URL and the lastchecked in brackets.
722     FUNCTION {output.url}
723     { url empty$
724     'skip$
725     { new.block
726     format.url output
727     format.lastchecked output
728     }
729     if$
730     }
731    
732     FUNCTION {output.web.refs}
733     {
734     new.block
735     output.url
736     addeprints eprint empty$ not and
737     { format.eprint output.nonnull }
738     'skip$
739     if$
740     adddoiresolver doi empty$ not and
741     { format.doi output.nonnull }
742     'skip$
743     if$
744     % addeprints
745     % { eprint empty$
746     % 'skip$
747     % { format.eprint output.nonnull }
748     % if$
749     % }
750     % 'skip$
751     % if$
752     }
753    
754     % Webpage entry type.
755     % Title and url fields required;
756     % author, note, year, month, and lastchecked fields optional
757     % See references
758     % ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm
759     % http://www.classroom.net/classroom/CitingNetResources.html
760     % http://neal.ctstateu.edu/history/cite.html
761     % http://www.cas.usf.edu/english/walker/mla.html
762     % for citation formats for web pages.
763     FUNCTION {webpage}
764     { output.bibitem
765     author empty$
766     { editor empty$
767     'skip$ % author and editor both optional
768     { format.editors output.nonnull }
769     if$
770     }
771     { editor empty$
772     { format.authors output.nonnull }
773     { "can't use both author and editor fields in " cite$ * warning$ }
774     if$
775     }
776     if$
777     % author empty$
778     % 'skip$
779     % { format.authors output.nonnull }
780     % if$
781     new.block
782     format.title "title" output.check
783     inbrackets "online" output
784     new.block
785     year empty$
786     'skip$
787     { format.date "year" output.check }
788     if$
789     lastchecked empty$
790     'skip$
791     { format.lastchecked output }
792     if$
793     new.block
794     format.url "url" output.check
795     new.block
796     note output
797     fin.entry
798     }
799     % ...urlbst to here
800    
801    
802 jmc 1.1 FUNCTION {article}
803     { output.bibitem
804     format.authors "author" output.check
805     author format.key output
806     format.title "title" output.check
807     crossref missing$
808     { journal emphasize "journal" output.check
809     format.vol.num.pages output
810     }
811     { format.article.crossref output.nonnull
812     format.pages output
813     }
814     if$
815     note output
816     format.date "year" output.check
817 cnh 1.2 output.web.refs % urlbst
818 jmc 1.1 fin.entry
819     }
820    
821     FUNCTION {book}
822     { output.bibitem
823     author empty$
824     { format.editors "author and editor" output.check
825     editor format.key output
826     }
827     { format.authors output.nonnull
828     crossref missing$
829     { "author and editor" editor either.or.check }
830     'skip$
831     if$
832     }
833     if$
834     format.btitle "title" output.check
835     crossref missing$
836     { format.bvolume output
837     format.number.series output
838     new.sentence
839     publisher "publisher" output.check
840     address output
841     }
842     {
843     format.book.crossref output.nonnull
844     }
845     if$
846     format.edition output
847     note output
848     format.date "year" output.check
849 cnh 1.2 output.web.refs % urlbst
850 jmc 1.1 fin.entry
851     }
852    
853     FUNCTION {booklet}
854     { output.bibitem
855     format.authors output
856     author format.key output
857     format.title "title" output.check
858     howpublished output
859     address output
860     note output
861     format.date "year" output.check
862 cnh 1.2 output.web.refs % urlbst
863 jmc 1.1 fin.entry
864     }
865    
866     FUNCTION {inbook}
867     { output.bibitem
868     author empty$
869     { format.editors "author and editor" output.check
870     editor format.key output
871     }
872     { format.authors output.nonnull
873     crossref missing$
874     { "author and editor" editor either.or.check }
875     'skip$
876     if$
877     }
878     if$
879     format.btitle "title" output.check
880     crossref missing$
881     { format.bvolume output
882     format.chapter.pages "chapter and pages" output.check
883     format.number.series output
884     new.sentence
885     publisher "publisher" output.check
886     address output
887     }
888     { format.chapter.pages "chapter and pages" output.check
889     format.book.crossref output.nonnull
890     }
891     if$
892     format.edition output
893     note output
894     format.date "year" output.check
895 cnh 1.2 output.web.refs % urlbst
896 jmc 1.1 fin.entry
897     }
898    
899     FUNCTION {incollection}
900     { output.bibitem
901     format.authors "author" output.check
902     author format.key output
903     format.title "title" output.check
904     crossref missing$
905     { format.in.ed.booktitle "booktitle" output.check
906     format.bvolume output
907     format.number.series output
908     format.chapter.pages output
909     new.sentence
910     publisher "publisher" output.check
911     address output
912     format.edition output
913     }
914     { format.incoll.inproc.crossref output.nonnull
915     format.chapter.pages output
916     }
917     if$
918     note output
919     format.date "year" output.check
920 cnh 1.2 output.web.refs % urlbst
921 jmc 1.1 fin.entry
922     }
923    
924     FUNCTION {inproceedings}
925     { output.bibitem
926     format.authors "author" output.check
927     author format.key output
928     format.title "title" output.check
929     crossref missing$
930     { format.in.ed.booktitle "booktitle" output.check
931     format.bvolume output
932     format.number.series output
933     format.pages output
934     address output
935     new.sentence
936     organization output
937     publisher output
938     }
939     { format.incoll.inproc.crossref output.nonnull
940     format.pages output
941     }
942     if$
943     note output
944     format.date "year" output.check
945 cnh 1.2 output.web.refs % urlbst
946 jmc 1.1 fin.entry
947     }
948    
949     FUNCTION {conference} { inproceedings }
950    
951     FUNCTION {manual}
952     { output.bibitem
953     format.authors output
954     author format.key output
955     format.btitle "title" output.check
956     organization output
957     address output
958     format.edition output
959     note output
960     format.date "year" output.check
961 cnh 1.2 output.web.refs % urlbst
962 jmc 1.1 fin.entry
963     }
964    
965     FUNCTION {mastersthesis}
966     { output.bibitem
967     format.authors "author" output.check
968     author format.key output
969     format.title "title" output.check
970     "Master's thesis" format.thesis.type output.nonnull
971     school "school" output.check
972     address output
973     note output
974     format.date "year" output.check
975 cnh 1.2 output.web.refs % urlbst
976 jmc 1.1 fin.entry
977     }
978    
979     FUNCTION {misc}
980     { output.bibitem
981     format.authors output
982     author format.key output
983     format.title output
984     howpublished output
985     note output
986     format.date "year" output.check
987 cnh 1.2 output.web.refs % urlbst
988 jmc 1.1 fin.entry
989     }
990    
991     FUNCTION {phdthesis}
992     { output.bibitem
993     format.authors "author" output.check
994     author format.key output
995     format.title "title" output.check
996     "Ph.D. thesis" format.thesis.type output.nonnull
997     school "school" output.check
998     address output
999     note output
1000     format.date "year" output.check
1001 cnh 1.2 output.web.refs % urlbst
1002 jmc 1.1 fin.entry
1003     }
1004    
1005     FUNCTION {proceedings}
1006     { output.bibitem
1007     format.editors output
1008     editor format.key output
1009     format.btitle "title" output.check
1010     format.bvolume output
1011     format.number.series output
1012     address output
1013     new.sentence
1014     organization output
1015     publisher output
1016     note output
1017     format.date "year" output.check
1018 cnh 1.2 output.web.refs % urlbst
1019 jmc 1.1 fin.entry
1020     }
1021    
1022     FUNCTION {techreport}
1023     { output.bibitem
1024     format.authors "author" output.check
1025     author format.key output
1026     format.title "title" output.check
1027     format.tr.number output.nonnull
1028     institution "institution" output.check
1029     address output
1030     note output
1031     format.date "year" output.check
1032 cnh 1.2 output.web.refs % urlbst
1033 jmc 1.1 fin.entry
1034     }
1035    
1036     FUNCTION {unpublished}
1037     { output.bibitem
1038     format.authors "author" output.check
1039     author format.key output
1040     format.title "title" output.check
1041     note "note" output.check
1042     format.date "year" output.check
1043 cnh 1.2 output.web.refs % urlbst
1044 jmc 1.1 fin.entry
1045     }
1046    
1047     FUNCTION {default.type} { misc }
1048    
1049     MACRO {jan} {"January"}
1050    
1051     MACRO {feb} {"February"}
1052    
1053     MACRO {mar} {"March"}
1054    
1055     MACRO {apr} {"April"}
1056    
1057     MACRO {may} {"May"}
1058    
1059     MACRO {jun} {"June"}
1060    
1061     MACRO {jul} {"July"}
1062    
1063     MACRO {aug} {"August"}
1064    
1065     MACRO {sep} {"September"}
1066    
1067     MACRO {oct} {"October"}
1068    
1069     MACRO {nov} {"November"}
1070    
1071     MACRO {dec} {"December"}
1072    
1073     MACRO {acmcs} {"ACM Computing Surveys"}
1074    
1075     MACRO {acta} {"Acta Informatica"}
1076    
1077     MACRO {cacm} {"Communications of the ACM"}
1078    
1079     MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1080    
1081     MACRO {ibmsj} {"IBM Systems Journal"}
1082    
1083     MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1084    
1085     MACRO {ieeetc} {"IEEE Transactions on Computers"}
1086    
1087     MACRO {ieeetcad}
1088     {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1089    
1090     MACRO {ipl} {"Information Processing Letters"}
1091    
1092     MACRO {jacm} {"Journal of the ACM"}
1093    
1094     MACRO {jcss} {"Journal of Computer and System Sciences"}
1095    
1096     MACRO {scp} {"Science of Computer Programming"}
1097    
1098     MACRO {sicomp} {"SIAM Journal on Computing"}
1099    
1100     MACRO {tocs} {"ACM Transactions on Computer Systems"}
1101    
1102     MACRO {tods} {"ACM Transactions on Database Systems"}
1103    
1104     MACRO {tog} {"ACM Transactions on Graphics"}
1105    
1106     MACRO {toms} {"ACM Transactions on Mathematical Software"}
1107    
1108     MACRO {toois} {"ACM Transactions on Office Information Systems"}
1109    
1110     MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1111    
1112     MACRO {tcs} {"Theoretical Computer Science"}
1113    
1114     READ
1115    
1116     FUNCTION {sortify}
1117     { purify$
1118     "l" change.case$
1119     }
1120    
1121     INTEGERS { len }
1122    
1123     FUNCTION {chop.word}
1124     { 's :=
1125     'len :=
1126     s #1 len substring$ =
1127     { s len #1 + global.max$ substring$ }
1128     's
1129     if$
1130     }
1131    
1132     FUNCTION {format.lab.names}
1133     { 's :=
1134     s #1 "{vv~}{ll}" format.name$
1135     s num.names$ duplicate$
1136     #2 >
1137     { pop$ " et~al." * }
1138     { #2 <
1139     'skip$
1140     { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1141     { " et~al." * }
1142     { " and " * s #2 "{vv~}{ll}" format.name$ * }
1143     if$
1144     }
1145     if$
1146     }
1147     if$
1148     }
1149    
1150     FUNCTION {author.key.label}
1151     { author empty$
1152     { key empty$
1153     { cite$ #1 #3 substring$ }
1154     'key
1155     if$
1156     }
1157     { author format.lab.names }
1158     if$
1159     }
1160    
1161     FUNCTION {author.editor.key.label}
1162     { author empty$
1163     { editor empty$
1164     { key empty$
1165     { cite$ #1 #3 substring$ }
1166     'key
1167     if$
1168     }
1169     { editor format.lab.names }
1170     if$
1171     }
1172     { author format.lab.names }
1173     if$
1174     }
1175    
1176     FUNCTION {editor.key.label}
1177     { editor empty$
1178     { key empty$
1179     { cite$ #1 #3 substring$ }
1180     'key
1181     if$
1182     }
1183     { editor format.lab.names }
1184     if$
1185     }
1186    
1187     FUNCTION {calc.label}
1188     { type$ "book" =
1189     type$ "inbook" =
1190     or
1191     'author.editor.key.label
1192     { type$ "proceedings" =
1193     'editor.key.label
1194     'author.key.label
1195     if$
1196     }
1197     if$
1198     emphasize
1199     "("
1200     *
1201     year duplicate$ empty$
1202     { pop$ "????" }
1203     { purify$ #-1 #4 substring$ }
1204     if$
1205     *
1206     'label :=
1207     }
1208    
1209     FUNCTION {sort.format.names}
1210     { 's :=
1211     #1 'nameptr :=
1212     ""
1213     s num.names$ 'numnames :=
1214     numnames 'namesleft :=
1215     { namesleft #0 > }
1216     { nameptr #1 >
1217     { " " * }
1218     'skip$
1219     if$
1220     s nameptr
1221     "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
1222     format.name$ 't :=
1223     nameptr numnames = t "others" = and
1224     { "et al" * }
1225     { numnames #2 > nameptr #2 = and
1226     { "zzzzzz" * #1 'namesleft := }
1227     { t sortify * }
1228     if$
1229     }
1230     if$
1231     nameptr #1 + 'nameptr :=
1232     namesleft #1 - 'namesleft :=
1233     }
1234     while$
1235     }
1236    
1237     FUNCTION {sort.format.title}
1238     { 't :=
1239     "A " #2
1240     "An " #3
1241     "The " #4 t chop.word
1242     chop.word
1243     chop.word
1244     sortify
1245     #1 global.max$ substring$
1246     }
1247    
1248     FUNCTION {author.sort}
1249     { author empty$
1250     { key empty$
1251     { "to sort, need author or key in " cite$ * warning$
1252     ""
1253     }
1254     { key sortify }
1255     if$
1256     }
1257     { author sort.format.names }
1258     if$
1259     }
1260    
1261     FUNCTION {author.editor.sort}
1262     { author empty$
1263     { editor empty$
1264     { key empty$
1265     { "to sort, need author, editor, or key in " cite$ * warning$
1266     ""
1267     }
1268     { key sortify }
1269     if$
1270     }
1271     { editor sort.format.names }
1272     if$
1273     }
1274     { author sort.format.names }
1275     if$
1276     }
1277    
1278     FUNCTION {editor.sort}
1279     { editor empty$
1280     { key empty$
1281     { "to sort, need editor or key in " cite$ * warning$
1282     ""
1283     }
1284     { key sortify }
1285     if$
1286     }
1287     { editor sort.format.names }
1288     if$
1289     }
1290    
1291     FUNCTION {presort}
1292     { calc.label
1293     label sortify
1294     " "
1295     *
1296     type$ "book" =
1297     type$ "inbook" =
1298     or
1299     'author.editor.sort
1300     { type$ "proceedings" =
1301     'editor.sort
1302     'author.sort
1303     if$
1304     }
1305     if$
1306     #1 entry.max$ substring$
1307     'sort.label :=
1308     sort.label
1309     *
1310     " "
1311     *
1312     title field.or.null
1313     sort.format.title
1314     *
1315     #1 entry.max$ substring$
1316     'sort.key$ :=
1317     }
1318    
1319     ITERATE {presort}
1320    
1321     SORT
1322    
1323     STRINGS { last.label next.extra }
1324    
1325     INTEGERS { last.extra.num }
1326    
1327     FUNCTION {initialize.extra.label.stuff}
1328     { #0 int.to.chr$ 'last.label :=
1329     "" 'next.extra :=
1330     #0 'last.extra.num :=
1331     }
1332    
1333     FUNCTION {forward.pass}
1334     { last.label label =
1335     { last.extra.num #1 + 'last.extra.num :=
1336     last.extra.num int.to.chr$ 'extra.label :=
1337     }
1338     { "a" chr.to.int$ 'last.extra.num :=
1339     "" 'extra.label :=
1340     label 'last.label :=
1341     }
1342     if$
1343     }
1344    
1345     FUNCTION {reverse.pass}
1346     { next.extra "b" =
1347     { "a" 'extra.label := }
1348     'skip$
1349     if$
1350     extra.label 'next.extra :=
1351     label extra.label * 'label :=
1352     }
1353    
1354     EXECUTE {initialize.extra.label.stuff}
1355    
1356     ITERATE {forward.pass}
1357    
1358     REVERSE {reverse.pass}
1359    
1360     FUNCTION {bib.sort.order}
1361     { sort.label
1362     " "
1363     *
1364     year field.or.null sortify
1365     *
1366     " "
1367     *
1368     title field.or.null
1369     sort.format.title
1370     *
1371     #1 entry.max$ substring$
1372     'sort.key$ :=
1373     }
1374    
1375     ITERATE {bib.sort.order}
1376    
1377     SORT
1378    
1379     FUNCTION {begin.bib}
1380     { preamble$ empty$
1381     'skip$
1382     { preamble$ write$ newline$ }
1383     if$
1384     "\begin{thebibliography}{}" write$ newline$
1385     }
1386    
1387     EXECUTE {begin.bib}
1388    
1389 cnh 1.2 EXECUTE {init.config.constants}
1390 jmc 1.1 EXECUTE {init.state.consts}
1391    
1392     ITERATE {call.type$}
1393    
1394     FUNCTION {end.bib}
1395     { newline$
1396     "\end{thebibliography}" write$ newline$
1397     }
1398    
1399     EXECUTE {end.bib}
1400     %% End of customized bst file

  ViewVC Help
Powered by ViewVC 1.1.22