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