Merge commit 'origin/openconn' into stack
[filehash.git] / inst / doc / asa.bst
blob4e12e00f8b021fd7dcd5966dbe100c6fa9e355f2
1 %%
2 %% This is file `asa.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% merlin.mbs  (with options: `,ay,nat,nm-rev,ed-rev,nmdash,dt-beg,yr-par,note-yr,tit-qq,atit-u,thtit-a,vnum-x,volp-com,pp-last,add-pub,pre-pub,edpar,edby,edbyx,blk-com,pp,ed,abr,ednx,ord,em-it,nfss')
8 %% ----------------------------------------
9 %% *** BibTeX Style for ASA Journals ***
10 %% (Brett Presnell, 24 August 1998)
11 %% 
12  %-------------------------------------------------------------------
13  % The original source file contains the following version information:
14  % \ProvidesFile{merlin.mbs}[1998/02/25 3.85a (PWD)]
15  %
16  % NOTICE:
17  % This file may be used for non-profit purposes.
18  % It may not be distributed in exchange for money,
19  %   other than distribution costs.
20  %
21  % The author provides it `as is' and does not guarantee it in any way.
22  %
23  % Copyright (C) 1994-98 Patrick W. Daly
24  %-------------------------------------------------------------------
25  %   For use with BibTeX version 0.99a or later
26  %-------------------------------------------------------------------
27  % This bibliography style file is intended for texts in ENGLISH
28  % This is an author-year citation style bibliography. As such, it is
29  % non-standard LaTeX, and requires a special package file to function properly.
30  % Such a package is    natbib.sty   by Patrick W. Daly
31  % The form of the \bibitem entries is
32  %   \bibitem[Jones et al.(1990)]{key}...
33  %   \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
34  % The essential feature is that the label (the part in brackets) consists
35  % of the author names, as they should appear in the citation, with the year
36  % in parentheses following. There must be no space before the opening
37  % parenthesis!
38  % With natbib v5.3, a full list of authors may also follow the year.
39  % In natbib.sty, it is possible to define the type of enclosures that is
40  % really wanted (brackets or parentheses), but in either case, there must
41  % be parentheses in the label.
42  % The \cite command functions as follows:
43  %   \citet{key} ==>>                Jones et al. (1990)
44  %   \citet*{key} ==>>               Jones, Baker, and Smith (1990)
45  %   \citep{key} ==>>                (Jones et al., 1990)
46  %   \citep*{key} ==>>               (Jones, Baker, and Smith, 1990)
47  %   \citep[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
48  %   \citep[e.g.][]{key} ==>>        (e.g. Jones et al., 1990)
49  %   \citep[e.g.][p. 32]{key} ==>>   (e.g. Jones et al., p. 32)
50  %   \citeauthor{key} ==>>           Jones et al.
51  %   \citeauthor*{key} ==>>          Jones, Baker, and Smith
52  %   \citeyear{key} ==>>             1990
53  %---------------------------------------------------------------------
55 ENTRY
56   { address
57     author
58     booktitle
59     chapter
60     edition
61     editor
62     howpublished
63     institution
64     journal
65     key
66     month
67     note
68     number
69     organization
70     pages
71     publisher
72     school
73     series
74     title
75     type
76     volume
77     year
78   }
79   {}
80   { label extra.label sort.label short.list }
82 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
84 FUNCTION {init.state.consts}
85 { #0 'before.all :=
86   #1 'mid.sentence :=
87   #2 'after.sentence :=
88   #3 'after.block :=
91 STRINGS { s t }
93 FUNCTION {output.nonnull}
94 { 's :=
95   output.state mid.sentence =
96     { ", " * write$ }
97     { output.state after.block =
98         { add.period$ write$
99           newline$
100           "\newblock " write$
101         }
102         { output.state before.all =
103             'write$
104             { add.period$ " " * write$ }
105           if$
106         }
107       if$
108       mid.sentence 'output.state :=
109     }
110   if$
111   s
114 FUNCTION {output}
115 { duplicate$ empty$
116     'pop$
117     'output.nonnull
118   if$
121 FUNCTION {output.check}
122 { 't :=
123   duplicate$ empty$
124     { pop$ "empty " t * " in " * cite$ * warning$ }
125     'output.nonnull
126   if$
129 FUNCTION {fin.entry}
130 { add.period$
131   write$
132   newline$
135 FUNCTION {new.block}
136 { output.state before.all =
137     'skip$
138     { after.block 'output.state := }
139   if$
142 FUNCTION {new.sentence}
143 { output.state after.block =
144     'skip$
145     { output.state before.all =
146         'skip$
147         { after.sentence 'output.state := }
148       if$
149     }
150   if$
153 FUNCTION {add.blank}
154 {  " " * before.all 'output.state :=
157 FUNCTION {date.block}
159   skip$
162 FUNCTION {not}
163 {   { #0 }
164     { #1 }
165   if$
168 FUNCTION {and}
169 {   'skip$
170     { pop$ #0 }
171   if$
174 FUNCTION {or}
175 {   { pop$ #1 }
176     'skip$
177   if$
180 FUNCTION {non.stop}
181 { duplicate$
182    "}" * add.period$
183    #-1 #1 substring$ "." =
186 FUNCTION {new.block.checkb}
187 { empty$
188   swap$ empty$
189   and
190     'skip$
191     'new.block
192   if$
195 FUNCTION {field.or.null}
196 { duplicate$ empty$
197     { pop$ "" }
198     'skip$
199   if$
202 FUNCTION {emphasize}
203 { duplicate$ empty$
204     { pop$ "" }
205     { "\textit{" swap$ * "}" * }
206   if$
209 FUNCTION {capitalize}
210 { "u" change.case$ "t" change.case$ }
212 FUNCTION {space.word}
213 { " " swap$ * " " * }
215  % Here are the language-specific definitions for explicit words.
216  % Each function has a name bbl.xxx where xxx is the English word.
217  % The language selected here is ENGLISH
218 FUNCTION {bbl.and}
219 { "and"}
221 FUNCTION {bbl.editors}
222 { "eds." }
224 FUNCTION {bbl.editor}
225 { "ed." }
227 FUNCTION {bbl.edby}
228 { "edited by" }
230 FUNCTION {bbl.edition}
231 { "ed." }
233 FUNCTION {bbl.volume}
234 { "vol." }
236 FUNCTION {bbl.of}
237 { "of" }
239 FUNCTION {bbl.number}
240 { "no." }
242 FUNCTION {bbl.nr}
243 { "no." }
245 FUNCTION {bbl.in}
246 { "in" }
248 FUNCTION {bbl.pages}
249 { "pp." }
251 FUNCTION {bbl.page}
252 { "p." }
254 FUNCTION {bbl.chapter}
255 { "chap." }
257 FUNCTION {bbl.techrep}
258 { "Tech. Rep." }
260 FUNCTION {bbl.mthesis}
261 { "Master's thesis" }
263 FUNCTION {bbl.phdthesis}
264 { "Ph.D. thesis" }
266 FUNCTION {bbl.first}
267 { "1st" }
269 FUNCTION {bbl.second}
270 { "2nd" }
272 FUNCTION {bbl.third}
273 { "3rd" }
275 FUNCTION {bbl.fourth}
276 { "4th" }
278 FUNCTION {bbl.fifth}
279 { "5th" }
281 FUNCTION {bbl.st}
282 { "st" }
284 FUNCTION {bbl.nd}
285 { "nd" }
287 FUNCTION {bbl.rd}
288 { "rd" }
290 FUNCTION {bbl.th}
291 { "th" }
293 MACRO {jan} {"Jan."}
295 MACRO {feb} {"Feb."}
297 MACRO {mar} {"Mar."}
299 MACRO {apr} {"Apr."}
301 MACRO {may} {"May"}
303 MACRO {jun} {"Jun."}
305 MACRO {jul} {"Jul."}
307 MACRO {aug} {"Aug."}
309 MACRO {sep} {"Sep."}
311 MACRO {oct} {"Oct."}
313 MACRO {nov} {"Nov."}
315 MACRO {dec} {"Dec."}
317 FUNCTION {eng.ord}
318 { duplicate$ "1" swap$ *
319   #-2 #1 substring$ "1" =
320      { bbl.th * }
321      { duplicate$ #-1 #1 substring$
322        duplicate$ "1" =
323          { pop$ bbl.st * }
324          { duplicate$ "2" =
325              { pop$ bbl.nd * }
326              { "3" =
327                  { bbl.rd * }
328                  { bbl.th * }
329                if$
330              }
331            if$
332           }
333        if$
334      }
335    if$
338 MACRO {acmcs} {"ACM Computing Surveys"}
340 MACRO {acta} {"Acta Informatica"}
342 MACRO {cacm} {"Communications of the ACM"}
344 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
346 MACRO {ibmsj} {"IBM Systems Journal"}
348 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
350 MACRO {ieeetc} {"IEEE Transactions on Computers"}
352 MACRO {ieeetcad}
353  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
355 MACRO {ipl} {"Information Processing Letters"}
357 MACRO {jacm} {"Journal of the ACM"}
359 MACRO {jcss} {"Journal of Computer and System Sciences"}
361 MACRO {scp} {"Science of Computer Programming"}
363 MACRO {sicomp} {"SIAM Journal on Computing"}
365 MACRO {tocs} {"ACM Transactions on Computer Systems"}
367 MACRO {tods} {"ACM Transactions on Database Systems"}
369 MACRO {tog} {"ACM Transactions on Graphics"}
371 MACRO {toms} {"ACM Transactions on Mathematical Software"}
373 MACRO {toois} {"ACM Transactions on Office Information Systems"}
375 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
377 MACRO {tcs} {"Theoretical Computer Science"}
379 INTEGERS { nameptr namesleft numnames }
381 FUNCTION {format.names}
382 { 's :=
383   #1 'nameptr :=
384   s num.names$ 'numnames :=
385   numnames 'namesleft :=
386     { namesleft #0 > }
387     { s nameptr
388       "{vv~}{ll}{, jj}{, f.}" format.name$
389     't :=
390       nameptr #1 >
391         {
392           namesleft #1 >
393             { ", " * t * }
394             {
395               numnames #2 >
396                 { "," * }
397                 'skip$
398               if$
399               s nameptr "{ll}" format.name$ duplicate$ "others" =
400                 { 't := }
401                 { pop$ }
402               if$
403               t "others" =
404                 {
405                   " et~al." *
406                 }
407                 { bbl.and space.word * t * }
408               if$
409             }
410           if$
411         }
412         't
413       if$
414       nameptr #1 + 'nameptr :=
415       namesleft #1 - 'namesleft :=
416     }
417   while$
419 FUNCTION {format.names.ed}
420 { format.names }
421 FUNCTION {format.key}
422 { empty$
423     { key field.or.null }
424     { "" }
425   if$
428 FUNCTION {format.authors}
429 { author empty$
430     { "" }
431     { author format.names }
432   if$
435 FUNCTION {format.editors}
436 { editor empty$
437     { "" }
438     { editor format.names
439       editor num.names$ #1 >
440         { " (" * bbl.editors * ")" * }
441         { " (" * bbl.editor * ")" * }
442       if$
443     }
444   if$
447 FUNCTION {format.in.editors}
448 { editor empty$
449     { "" }
450     { editor format.names.ed
451     }
452   if$
455 FUNCTION {format.note}
456 { note empty$
457     { "" }
458     { note #1 #1 substring$
459       duplicate$ "{" =
460         'skip$
461         { output.state mid.sentence =
462           { "l" }
463           { "u" }
464         if$
465         change.case$
466         }
467       if$
468       note #2 global.max$ substring$ *
469     }
470   if$
473 FUNCTION {format.title}
474 { title empty$
475     { "" }
476     { title
477       "\enquote{" swap$ *
478       non.stop
479         { ",} " * }
480         { "} " * }
481       if$
482     }
483   if$
486 FUNCTION {end.quote.title}
487 { title empty$
488     'skip$
489     { before.all 'output.state := }
490   if$
493 FUNCTION {format.full.names}
494 {'s :=
495   #1 'nameptr :=
496   s num.names$ 'numnames :=
497   numnames 'namesleft :=
498     { namesleft #0 > }
499     { s nameptr
500       "{vv~}{ll}" format.name$
501       't :=
502       nameptr #1 >
503         {
504           namesleft #1 >
505             { ", " * t * }
506             {
507               numnames #2 >
508                 { "," * }
509                 'skip$
510               if$
511               s nameptr "{ll}" format.name$ duplicate$ "others" =
512                 { 't := }
513                 { pop$ }
514               if$
515               t "others" =
516                 {
517                   " et~al." *
518                 }
519                 { bbl.and space.word * t * }
520               if$
521             }
522           if$
523         }
524         't
525       if$
526       nameptr #1 + 'nameptr :=
527       namesleft #1 - 'namesleft :=
528     }
529   while$
532 FUNCTION {author.editor.key.full}
533 { author empty$
534     { editor empty$
535         { key empty$
536             { cite$ #1 #3 substring$ }
537             'key
538           if$
539         }
540         { editor format.full.names }
541       if$
542     }
543     { author format.full.names }
544   if$
547 FUNCTION {author.key.full}
548 { author empty$
549     { key empty$
550          { cite$ #1 #3 substring$ }
551           'key
552       if$
553     }
554     { author format.full.names }
555   if$
558 FUNCTION {editor.key.full}
559 { editor empty$
560     { key empty$
561          { cite$ #1 #3 substring$ }
562           'key
563       if$
564     }
565     { editor format.full.names }
566   if$
569 FUNCTION {make.full.names}
570 { type$ "book" =
571   type$ "inbook" =
572   or
573     'author.editor.key.full
574     { type$ "proceedings" =
575         'editor.key.full
576         'author.key.full
577       if$
578     }
579   if$
582 FUNCTION {output.bibitem}
583 { newline$
584   "\bibitem[{" write$
585   label write$
586   ")" make.full.names duplicate$ short.list =
587      { pop$ }
588      { * }
589    if$
590   "}]{" * write$
591   cite$ write$
592   "}" write$
593   newline$
594   ""
595   before.all 'output.state :=
598 FUNCTION {n.dashify}
600   't :=
601   ""
602     { t empty$ not }
603     { t #1 #1 substring$ "-" =
604         { t #1 #2 substring$ "--" = not
605             { "--" *
606               t #2 global.max$ substring$ 't :=
607             }
608             {   { t #1 #1 substring$ "-" = }
609                 { "-" *
610                   t #2 global.max$ substring$ 't :=
611                 }
612               while$
613             }
614           if$
615         }
616         { t #1 #1 substring$ *
617           t #2 global.max$ substring$ 't :=
618         }
619       if$
620     }
621   while$
624 FUNCTION {word.in}
625 { bbl.in
626   " " * }
628 FUNCTION {format.date}
629 { year duplicate$ empty$
630     { "empty year in " cite$ * "; set to ????" * warning$
631        pop$ "????" }
632     'skip$
633   if$
634   extra.label *
635   before.all 'output.state :=
636   " (" swap$ * ")" *
639 FUNCTION {format.btitle}
640 { title emphasize
643 FUNCTION {tie.or.space.connect}
644 { duplicate$ text.length$ #3 <
645     { "~" }
646     { " " }
647   if$
648   swap$ * *
651 FUNCTION {either.or.check}
652 { empty$
653     'pop$
654     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
655   if$
658 FUNCTION {format.bvolume}
659 { volume empty$
660     { "" }
661     { bbl.volume volume tie.or.space.connect
662       series empty$
663         'skip$
664         { bbl.of space.word * series emphasize * }
665       if$
666       "volume and number" number either.or.check
667     }
668   if$
671 FUNCTION {format.number.series}
672 { volume empty$
673     { number empty$
674         { series field.or.null }
675         { output.state mid.sentence =
676             { bbl.number }
677             { bbl.number capitalize }
678           if$
679           number tie.or.space.connect
680           series empty$
681             { "there's a number but no series in " cite$ * warning$ }
682             { bbl.in space.word * series * }
683           if$
684         }
685       if$
686     }
687     { "" }
688   if$
691 FUNCTION {is.num}
692 { chr.to.int$
693   duplicate$ "0" chr.to.int$ < not
694   swap$ "9" chr.to.int$ > not and
697 FUNCTION {extract.num}
698 { duplicate$ 't :=
699   "" 's :=
700   { t empty$ not }
701   { t #1 #1 substring$
702     t #2 global.max$ substring$ 't :=
703     duplicate$ is.num
704       { s swap$ * 's := }
705       { pop$ "" 't := }
706     if$
707   }
708   while$
709   s empty$
710     'skip$
711     { pop$ s }
712   if$
715 FUNCTION {convert.edition}
716 { edition extract.num "l" change.case$ 's :=
717   s "first" = s "1" = or
718     { bbl.first 't := }
719     { s "second" = s "2" = or
720         { bbl.second 't := }
721         { s "third" = s "3" = or
722             { bbl.third 't := }
723             { s "fourth" = s "4" = or
724                 { bbl.fourth 't := }
725                 { s "fifth" = s "5" = or
726                     { bbl.fifth 't := }
727                     { s #1 #1 substring$ is.num
728                         { s eng.ord 't := }
729                         { edition 't := }
730                       if$
731                     }
732                   if$
733                 }
734               if$
735             }
736           if$
737         }
738       if$
739     }
740   if$
741   t
744 FUNCTION {format.edition}
745 { edition empty$
746     { "" }
747     { output.state mid.sentence =
748         { convert.edition "l" change.case$ " " * bbl.edition * }
749         { convert.edition "t" change.case$ " " * bbl.edition * }
750       if$
751     }
752   if$
755 INTEGERS { multiresult }
757 FUNCTION {multi.page.check}
758 { 't :=
759   #0 'multiresult :=
760     { multiresult not
761       t empty$ not
762       and
763     }
764     { t #1 #1 substring$
765       duplicate$ "-" =
766       swap$ duplicate$ "," =
767       swap$ "+" =
768       or or
769         { #1 'multiresult := }
770         { t #2 global.max$ substring$ 't := }
771       if$
772     }
773   while$
774   multiresult
777 FUNCTION {format.pages}
778 { pages empty$
779     { "" }
780     { pages multi.page.check
781         { bbl.pages pages n.dashify tie.or.space.connect }
782         { bbl.page pages tie.or.space.connect }
783       if$
784     }
785   if$
788 FUNCTION {format.journal.pages}
789 { pages empty$
790     'skip$
791     { duplicate$ empty$
792         { pop$ format.pages }
793         {
794           ", " *
795           pages n.dashify *
796         }
797       if$
798     }
799   if$
802 FUNCTION {format.vol.num.pages}
803 { volume field.or.null
806 FUNCTION {format.chapter.pages}
807 { chapter empty$
808     { "" }
809     { type empty$
810         { bbl.chapter }
811         { type "l" change.case$ }
812       if$
813       chapter tie.or.space.connect
814     }
815   if$
818 FUNCTION {format.in.ed.booktitle}
819 { booktitle empty$
820     { "" }
821     { editor empty$
822         { word.in booktitle emphasize * }
823         { word.in booktitle emphasize *
824           ", " *
825           editor num.names$ #1 >
826             { bbl.editors }
827             { bbl.editor }
828           if$
829           * " " *
830           format.in.editors *
831         }
832       if$
833     }
834   if$
837 FUNCTION {format.thesis.type}
838 { type empty$
839     'skip$
840     { pop$
841       type "t" change.case$
842     }
843   if$
846 FUNCTION {format.tr.number}
847 { type empty$
848     { bbl.techrep }
849     'type
850   if$
851   number empty$
852     { "t" change.case$ }
853     { number tie.or.space.connect }
854   if$
857 FUNCTION {format.article.crossref}
859   word.in
860   " \cite{" * crossref * "}" *
863 FUNCTION {format.book.crossref}
864 { volume empty$
865     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
866       word.in
867     }
868     { bbl.volume volume tie.or.space.connect
869       bbl.of space.word *
870     }
871   if$
872   " \cite{" * crossref * "}" *
875 FUNCTION {format.incoll.inproc.crossref}
877   word.in
878   " \cite{" * crossref * "}" *
881 FUNCTION {format.publisher}
882 { publisher empty$
883     { "empty publisher in " cite$ * warning$ }
884     'skip$
885   if$
886   ""
887   address empty$ publisher empty$ and
888     'skip$
889     {
890       address empty$
891         'skip$
892         { address * }
893       if$
894       publisher empty$
895         'skip$
896         { address empty$
897             'skip$
898             { ": " * }
899           if$
900           publisher *
901         }
902       if$
903     }
904   if$
905   output
908 STRINGS {oldname}
910 FUNCTION {name.or.dash}
911 { 's :=
912    oldname empty$
913      { s 'oldname := s }
914      { s oldname =
915          { "---" }
916          { s 'oldname := s }
917        if$
918      }
919    if$
922 FUNCTION {article}
923 { output.bibitem
924   format.authors "author" output.check
925   author format.key output
926   name.or.dash
927   format.date "year" output.check
928   date.block
929   format.title "title" output.check
930   end.quote.title
931   crossref missing$
932     { journal
933       emphasize
934       "journal" output.check
935       format.vol.num.pages output
936     }
937     { format.article.crossref output.nonnull
938       format.pages output
939     }
940   if$
941   format.journal.pages
942   format.note output
943   fin.entry
946 FUNCTION {book}
947 { output.bibitem
948   author empty$
949     { format.editors "author and editor" output.check
950       editor format.key output
951       name.or.dash
952     }
953     { format.authors output.nonnull
954       name.or.dash
955       crossref missing$
956         { "author and editor" editor either.or.check }
957         'skip$
958       if$
959     }
960   if$
961   format.date "year" output.check
962   date.block
963   format.btitle "title" output.check
964   crossref missing$
965     { format.bvolume output
966       format.number.series output
967       format.publisher
968     }
969     {
970       format.book.crossref output.nonnull
971     }
972   if$
973   format.edition output
974   format.note output
975   fin.entry
978 FUNCTION {booklet}
979 { output.bibitem
980   format.authors output
981   author format.key output
982   name.or.dash
983   format.date "year" output.check
984   date.block
985   format.title "title" output.check
986   end.quote.title
987   howpublished output
988   address output
989   format.note output
990   fin.entry
993 FUNCTION {inbook}
994 { output.bibitem
995   author empty$
996     { format.editors "author and editor" output.check
997       editor format.key output
998       name.or.dash
999     }
1000     { format.authors output.nonnull
1001       name.or.dash
1002       crossref missing$
1003         { "author and editor" editor either.or.check }
1004         'skip$
1005       if$
1006     }
1007   if$
1008   format.date "year" output.check
1009   date.block
1010   format.btitle "title" output.check
1011   crossref missing$
1012     {
1013       format.publisher
1014       format.bvolume output
1015       format.chapter.pages "chapter and pages" output.check
1016       format.number.series output
1017     }
1018     {
1019       format.chapter.pages "chapter and pages" output.check
1020       format.book.crossref output.nonnull
1021     }
1022   if$
1023   format.edition output
1024   format.pages "pages" output.check
1025   format.note output
1026   fin.entry
1029 FUNCTION {incollection}
1030 { output.bibitem
1031   format.authors "author" output.check
1032   author format.key output
1033   name.or.dash
1034   format.date "year" output.check
1035   date.block
1036   format.title "title" output.check
1037   end.quote.title
1038   crossref missing$
1039     { format.in.ed.booktitle "booktitle" output.check
1040       format.publisher
1041       format.bvolume output
1042       format.number.series output
1043       format.chapter.pages output
1044       format.edition output
1045     }
1046     { format.incoll.inproc.crossref output.nonnull
1047       format.chapter.pages output
1048     }
1049   if$
1050   format.pages "pages" output.check
1051   format.note output
1052   fin.entry
1055 FUNCTION {inproceedings}
1056 { output.bibitem
1057   format.authors "author" output.check
1058   author format.key output
1059   name.or.dash
1060   format.date "year" output.check
1061   date.block
1062   format.title "title" output.check
1063   end.quote.title
1064   crossref missing$
1065     { format.in.ed.booktitle "booktitle" output.check
1066       publisher empty$
1067         { organization output
1068           address output
1069         }
1070         { organization output
1071           format.publisher
1072         }
1073       if$
1074       format.bvolume output
1075       format.number.series output
1076       format.pages output
1077     }
1078     { format.incoll.inproc.crossref output.nonnull
1079       format.pages output
1080     }
1081   if$
1082   format.note output
1083   fin.entry
1086 FUNCTION {conference} { inproceedings }
1088 FUNCTION {manual}
1089 { output.bibitem
1090   format.authors output
1091   author format.key output
1092   name.or.dash
1093   format.date "year" output.check
1094   date.block
1095   format.btitle "title" output.check
1096   organization output
1097   address output
1098   format.edition output
1099   format.note output
1100   fin.entry
1103 FUNCTION {mastersthesis}
1104 { output.bibitem
1105   format.authors "author" output.check
1106   author format.key output
1107   name.or.dash
1108   format.date "year" output.check
1109   date.block
1110   format.title "title" output.check
1111   end.quote.title
1112   bbl.mthesis format.thesis.type output.nonnull
1113   school "school" output.check
1114   address output
1115   format.note output
1116   fin.entry
1119 FUNCTION {misc}
1120 { output.bibitem
1121   format.authors output
1122   author format.key output
1123   name.or.dash
1124   format.date "year" output.check
1125   date.block
1126   format.title output
1127   end.quote.title
1128   howpublished output
1129   format.note output
1130   fin.entry
1133 FUNCTION {phdthesis}
1134 { output.bibitem
1135   format.authors "author" output.check
1136   author format.key output
1137   name.or.dash
1138   format.date "year" output.check
1139   date.block
1140   format.title "title" output.check
1141   end.quote.title
1142   bbl.phdthesis format.thesis.type output.nonnull
1143   school "school" output.check
1144   address output
1145   format.note output
1146   fin.entry
1149 FUNCTION {proceedings}
1150 { output.bibitem
1151   format.editors output
1152   editor format.key output
1153   name.or.dash
1154   format.date "year" output.check
1155   date.block
1156   format.btitle "title" output.check
1157   format.bvolume output
1158   format.number.series output
1159   address output
1160   organization output
1161   publisher output
1162   format.note output
1163   fin.entry
1166 FUNCTION {techreport}
1167 { output.bibitem
1168   format.authors "author" output.check
1169   author format.key output
1170   name.or.dash
1171   format.date "year" output.check
1172   date.block
1173   format.title "title" output.check
1174   end.quote.title
1175   format.tr.number output.nonnull
1176   institution "institution" output.check
1177   address output
1178   format.note output
1179   fin.entry
1182 FUNCTION {unpublished}
1183 { output.bibitem
1184   format.authors "author" output.check
1185   author format.key output
1186   name.or.dash
1187   format.date "year" output.check
1188   date.block
1189   format.title "title" output.check
1190   end.quote.title
1191   format.note "note" output.check
1192   fin.entry
1195 FUNCTION {default.type} { misc }
1197 READ
1199 FUNCTION {sortify}
1200 { purify$
1201   "l" change.case$
1204 INTEGERS { len }
1206 FUNCTION {chop.word}
1207 { 's :=
1208   'len :=
1209   s #1 len substring$ =
1210     { s len #1 + global.max$ substring$ }
1211     's
1212   if$
1215 FUNCTION {format.lab.names}
1216 { 's :=
1217   s #1 "{vv~}{ll}" format.name$
1218   s num.names$ duplicate$
1219   #2 >
1220     { pop$
1221       " et~al." *
1222     }
1223     { #2 <
1224         'skip$
1225         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1226             {
1227               " et~al." *
1228             }
1229             { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
1230               * }
1231           if$
1232         }
1233       if$
1234     }
1235   if$
1238 FUNCTION {author.key.label}
1239 { author empty$
1240     { key empty$
1241         { cite$ #1 #3 substring$ }
1242         'key
1243       if$
1244     }
1245     { author format.lab.names }
1246   if$
1249 FUNCTION {author.editor.key.label}
1250 { author empty$
1251     { editor empty$
1252         { key empty$
1253             { cite$ #1 #3 substring$ }
1254             'key
1255           if$
1256         }
1257         { editor format.lab.names }
1258       if$
1259     }
1260     { author format.lab.names }
1261   if$
1264 FUNCTION {editor.key.label}
1265 { editor empty$
1266     { key empty$
1267         { cite$ #1 #3 substring$ }
1268         'key
1269       if$
1270     }
1271     { editor format.lab.names }
1272   if$
1275 FUNCTION {calc.short.authors}
1276 { type$ "book" =
1277   type$ "inbook" =
1278   or
1279     'author.editor.key.label
1280     { type$ "proceedings" =
1281         'editor.key.label
1282         'author.key.label
1283       if$
1284     }
1285   if$
1286   'short.list :=
1289 FUNCTION {calc.label}
1290 { calc.short.authors
1291   short.list
1292   "("
1293   *
1294   year duplicate$ empty$
1295      { pop$ "????" }
1296      'skip$
1297   if$
1298   *
1299   'label :=
1302 FUNCTION {sort.format.names}
1303 { 's :=
1304   #1 'nameptr :=
1305   ""
1306   s num.names$ 'numnames :=
1307   numnames 'namesleft :=
1308     { namesleft #0 > }
1309     { s nameptr
1310       "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
1311       format.name$ 't :=
1312       nameptr #1 >
1313         {
1314           "   "  *
1315           namesleft #1 = t "others" = and
1316             { "zzzzz" * }
1317             { t sortify * }
1318           if$
1319         }
1320         { t sortify * }
1321       if$
1322       nameptr #1 + 'nameptr :=
1323       namesleft #1 - 'namesleft :=
1324     }
1325   while$
1328 FUNCTION {sort.format.title}
1329 { 't :=
1330   "A " #2
1331     "An " #3
1332       "The " #4 t chop.word
1333     chop.word
1334   chop.word
1335   sortify
1336   #1 global.max$ substring$
1339 FUNCTION {author.sort}
1340 { author empty$
1341     { key empty$
1342         { "to sort, need author or key in " cite$ * warning$
1343           ""
1344         }
1345         { key sortify }
1346       if$
1347     }
1348     { author sort.format.names }
1349   if$
1352 FUNCTION {author.editor.sort}
1353 { author empty$
1354     { editor empty$
1355         { key empty$
1356             { "to sort, need author, editor, or key in " cite$ * warning$
1357               ""
1358             }
1359             { key sortify }
1360           if$
1361         }
1362         { editor sort.format.names }
1363       if$
1364     }
1365     { author sort.format.names }
1366   if$
1369 FUNCTION {editor.sort}
1370 { editor empty$
1371     { key empty$
1372         { "to sort, need editor or key in " cite$ * warning$
1373           ""
1374         }
1375         { key sortify }
1376       if$
1377     }
1378     { editor sort.format.names }
1379   if$
1382 FUNCTION {presort}
1383 { calc.label
1384   label sortify
1385   "    "
1386   *
1387   type$ "book" =
1388   type$ "inbook" =
1389   or
1390     'author.editor.sort
1391     { type$ "proceedings" =
1392         'editor.sort
1393         'author.sort
1394       if$
1395     }
1396   if$
1397   #1 entry.max$ substring$
1398   'sort.label :=
1399   sort.label
1400   *
1401   "    "
1402   *
1403   title field.or.null
1404   sort.format.title
1405   *
1406   #1 entry.max$ substring$
1407   'sort.key$ :=
1410 ITERATE {presort}
1412 SORT
1414 STRINGS { last.label next.extra }
1416 INTEGERS { last.extra.num number.label }
1418 FUNCTION {initialize.extra.label.stuff}
1419 { #0 int.to.chr$ 'last.label :=
1420   "" 'next.extra :=
1421   #0 'last.extra.num :=
1422   #0 'number.label :=
1425 FUNCTION {forward.pass}
1426 { last.label label =
1427     { last.extra.num #1 + 'last.extra.num :=
1428       last.extra.num int.to.chr$ 'extra.label :=
1429     }
1430     { "a" chr.to.int$ 'last.extra.num :=
1431       "" 'extra.label :=
1432       label 'last.label :=
1433     }
1434   if$
1435   number.label #1 + 'number.label :=
1438 FUNCTION {reverse.pass}
1439 { next.extra "b" =
1440     { "a" 'extra.label := }
1441     'skip$
1442   if$
1443   extra.label 'next.extra :=
1444   extra.label
1445   duplicate$ empty$
1446     'skip$
1447     { "{\natexlab{" swap$ * "}}" * }
1448   if$
1449   'extra.label :=
1450   label extra.label * 'label :=
1453 EXECUTE {initialize.extra.label.stuff}
1455 ITERATE {forward.pass}
1457 REVERSE {reverse.pass}
1459 FUNCTION {bib.sort.order}
1460 { sort.label
1461   "    "
1462   *
1463   year field.or.null sortify
1464   *
1465   "    "
1466   *
1467   title field.or.null
1468   sort.format.title
1469   *
1470   #1 entry.max$ substring$
1471   'sort.key$ :=
1474 ITERATE {bib.sort.order}
1476 SORT
1478 FUNCTION {begin.bib}
1479 { preamble$ empty$
1480     'skip$
1481     { preamble$ write$ newline$ }
1482   if$
1483   "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1484   write$ newline$
1485   "\newcommand{\enquote}[1]{``#1''}"
1486   write$ newline$
1487   "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
1488   write$ newline$
1491 EXECUTE {begin.bib}
1493 EXECUTE {init.state.consts}
1495 ITERATE {call.type$}
1497 FUNCTION {end.bib}
1498 { newline$
1499   "\end{thebibliography}" write$ newline$
1502 EXECUTE {end.bib}
1503 %% End of customized bst file
1505 %% End of file `asa.bst'.