/[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.2 - (show annotations) (download)
Wed Jun 28 13:20:33 2006 UTC (17 years, 9 months ago) by cnh
Branch: MAIN
Changes since 1.1: +259 -4 lines
New style file

1 %%% 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 %%
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 eprint % urlbst
105 doi % urlbst
106 url % urlbst
107 lastchecked % urlbst
108 }
109 {}
110 { label extra.label sort.label }
111
112 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
113
114 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 FUNCTION {init.state.consts}
137 { #0 'outside.brackets := % urlbst
138 #1 'open.brackets :=
139 #2 'within.brackets :=
140 #3 'close.brackets :=
141
142 #0 'before.all :=
143 #1 'mid.sentence :=
144 #2 'after.sentence :=
145 #3 'after.block :=
146 }
147
148 STRINGS { s t }
149
150 % urlbst
151 FUNCTION {output.nonnull.original}
152 { '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 % 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 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 { outside.brackets 'bracket.state := % urlbst
240 newline$
241 "\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 {
253 bracket.state close.brackets = % urlbst
254 { "]" * }
255 'skip$
256 if$
257 add.period$
258 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 % 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 " \href{" swap$ * "}{" * swap$ * "}" *
679 }
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 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 output.web.refs % urlbst
818 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 output.web.refs % urlbst
850 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 output.web.refs % urlbst
863 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 output.web.refs % urlbst
896 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 output.web.refs % urlbst
921 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 output.web.refs % urlbst
946 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 output.web.refs % urlbst
962 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 output.web.refs % urlbst
976 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 output.web.refs % urlbst
988 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 output.web.refs % urlbst
1002 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 output.web.refs % urlbst
1019 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 output.web.refs % urlbst
1033 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 output.web.refs % urlbst
1044 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 EXECUTE {init.config.constants}
1390 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