tdoxybib.bst - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
(HTM) git clone git://src.adamsgaard.dk/pism
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
tdoxybib.bst (27678B)
---
1 %%
2 %% This is file `doxybib.bst',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% merlin.mbs (with options: `cite,nm-init,ed-au,nmft,nmft-bf,dt-beg,tit-it,atit-u,jttl-rm,num-xser,jnm-x,bkpg-x,isbn,issn,doi,xedn,url,url-nt,nfss,')
8 %% ----------------------------------------
9 %% *** A style for converting .bib into a doxygen comment. ***
10 %%
11 %% Copyright 1994-2005 Patrick W Daly
12 %% Copyright 2009 Constantine Khroulev
13 % ===============================================================
14 % IMPORTANT NOTICE:
15 % This bibliographic style (bst) file has been generated from one or
16 % more master bibliographic style (mbs) files, listed above.
17 %
18 % NB! This file was hand-edited to use doxygen commands. Re-generating from
19 % merlin.mbs will destroy these modifications.
20 %
21 % This generated file can be redistributed and/or modified under the terms
22 % of the LaTeX Project Public License Distributed from CTAN
23 % archives in directory macros/latex/base/lppl.txt; either
24 % version 1 of the License, or any later version.
25 % ===============================================================
26 % Name and version information of the main mbs file:
27 % \ProvidesFile{merlin.mbs}[2005/10/17 4.14 (PWD, AO, DPC)]
28 % For use with BibTeX version 0.99a or later
29 %-------------------------------------------------------------------
30 % This bibliography style file is intended for texts in ENGLISH
31 % This is a special pseudo-numerical bibliography style, intended to be
32 % used to list all the entries in a bib database
33 % It requires no extra package to interface to the main text.
34 % The form of the \bibitem entries is
35 % \bibitem[key]{key}...
36 %---------------------------------------------------------------------
37
38 ENTRY
39 { address
40 author
41 booktitle
42 chapter
43 doi
44 edition
45 editor
46 eid
47 howpublished
48 institution
49 isbn
50 issn
51 journal
52 key
53 month
54 note
55 number
56 organization
57 pages
58 publisher
59 school
60 series
61 title
62 type
63 url
64 volume
65 year
66 }
67 {}
68 { label }
69 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
70 FUNCTION {init.state.consts}
71 { #0 'before.all :=
72 #1 'mid.sentence :=
73 #2 'after.sentence :=
74 #3 'after.block :=
75 }
76 STRINGS { s t}
77 FUNCTION {output.nonnull}
78 { 's :=
79 output.state mid.sentence =
80 { ", " * write$ }
81 { output.state after.block =
82 { add.period$ write$
83 newline$
84 " " write$
85 }
86 { output.state before.all =
87 'write$
88 { add.period$ " " * write$ }
89 if$
90 }
91 if$
92 mid.sentence 'output.state :=
93 }
94 if$
95 s
96 }
97 FUNCTION {output}
98 { duplicate$ empty$
99 'pop$
100 'output.nonnull
101 if$
102 }
103 FUNCTION {output.check}
104 { 't :=
105 duplicate$ empty$
106 { pop$ "empty " t * " in " * cite$ * warning$ }
107 'output.nonnull
108 if$
109 }
110 FUNCTION {fin.entry}
111 { add.period$
112 write$
113 newline$
114 }
115
116 FUNCTION {new.block}
117 { output.state before.all =
118 'skip$
119 { after.block 'output.state := }
120 if$
121 }
122 FUNCTION {new.sentence}
123 { output.state after.block =
124 'skip$
125 { output.state before.all =
126 'skip$
127 { after.sentence 'output.state := }
128 if$
129 }
130 if$
131 }
132 FUNCTION {add.blank}
133 { " " * before.all 'output.state :=
134 }
135
136 FUNCTION {date.block}
137 {
138 new.block
139 }
140
141 FUNCTION {not}
142 { { #0 }
143 { #1 }
144 if$
145 }
146 FUNCTION {and}
147 { 'skip$
148 { pop$ #0 }
149 if$
150 }
151 FUNCTION {or}
152 { { pop$ #1 }
153 'skip$
154 if$
155 }
156 FUNCTION {new.block.checka}
157 { empty$
158 'skip$
159 'new.block
160 if$
161 }
162 FUNCTION {new.block.checkb}
163 { empty$
164 swap$ empty$
165 and
166 'skip$
167 'new.block
168 if$
169 }
170 FUNCTION {new.sentence.checka}
171 { empty$
172 'skip$
173 'new.sentence
174 if$
175 }
176 FUNCTION {new.sentence.checkb}
177 { empty$
178 swap$ empty$
179 and
180 'skip$
181 'new.sentence
182 if$
183 }
184 FUNCTION {field.or.null}
185 { duplicate$ empty$
186 { pop$ "" }
187 'skip$
188 if$
189 }
190 FUNCTION {emphasize}
191 { duplicate$ empty$
192 { pop$ "" }
193 { "<i> " swap$ * "</i>" * }
194 if$
195 }
196
197 FUNCTION {bolden}
198 { duplicate$ empty$
199 { pop$ "" }
200 { "<b> " swap$ * "</b>" * }
201 if$
202 }
203 FUNCTION {bib.name.font}
204 { bolden }
205 FUNCTION {bib.fname.font}
206 { bib.name.font }
207 FUNCTION {tie.or.space.prefix}
208 { duplicate$ text.length$ #3 <
209 { "~" }
210 { " " }
211 if$
212 swap$
213 }
214
215 FUNCTION {capitalize}
216 { "u" change.case$ "t" change.case$ }
217
218 FUNCTION {space.word}
219 { " " swap$ * " " * }
220 % Here are the language-specific definitions for explicit words.
221 % Each function has a name bbl.xxx where xxx is the English word.
222 % The language selected here is ENGLISH
223 FUNCTION {bbl.and}
224 { "and"}
225
226 FUNCTION {bbl.etal}
227 { "et~al." }
228
229 FUNCTION {bbl.editors}
230 { "editors" }
231
232 FUNCTION {bbl.editor}
233 { "editor" }
234
235 FUNCTION {bbl.edby}
236 { "edited by" }
237
238 FUNCTION {bbl.edition}
239 { "edition" }
240
241 FUNCTION {bbl.volume}
242 { "volume" }
243
244 FUNCTION {bbl.of}
245 { "of" }
246
247 FUNCTION {bbl.number}
248 { "number" }
249
250 FUNCTION {bbl.nr}
251 { "no." }
252
253 FUNCTION {bbl.in}
254 { "in" }
255
256 FUNCTION {bbl.pages}
257 { "pages" }
258
259 FUNCTION {bbl.page}
260 { "page" }
261
262 FUNCTION {bbl.chapter}
263 { "chapter" }
264
265 FUNCTION {bbl.techrep}
266 { "Technical Report" }
267
268 FUNCTION {bbl.mthesis}
269 { "Master's thesis" }
270
271 FUNCTION {bbl.phdthesis}
272 { "Ph.D. thesis" }
273
274 MACRO {jan} {"January"}
275
276 MACRO {feb} {"February"}
277
278 MACRO {mar} {"March"}
279
280 MACRO {apr} {"April"}
281
282 MACRO {may} {"May"}
283
284 MACRO {jun} {"June"}
285
286 MACRO {jul} {"July"}
287
288 MACRO {aug} {"August"}
289
290 MACRO {sep} {"September"}
291
292 MACRO {oct} {"October"}
293
294 MACRO {nov} {"November"}
295
296 MACRO {dec} {"December"}
297
298 MACRO {acmcs} {"ACM Computing Surveys"}
299
300 MACRO {acta} {"Acta Informatica"}
301
302 MACRO {cacm} {"Communications of the ACM"}
303
304 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
305
306 MACRO {ibmsj} {"IBM Systems Journal"}
307
308 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
309
310 MACRO {ieeetc} {"IEEE Transactions on Computers"}
311
312 MACRO {ieeetcad}
313 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
314
315 MACRO {ipl} {"Information Processing Letters"}
316
317 MACRO {jacm} {"Journal of the ACM"}
318
319 MACRO {jcss} {"Journal of Computer and System Sciences"}
320
321 MACRO {scp} {"Science of Computer Programming"}
322
323 MACRO {sicomp} {"SIAM Journal on Computing"}
324
325 MACRO {tocs} {"ACM Transactions on Computer Systems"}
326
327 MACRO {tods} {"ACM Transactions on Database Systems"}
328
329 MACRO {tog} {"ACM Transactions on Graphics"}
330
331 MACRO {toms} {"ACM Transactions on Mathematical Software"}
332
333 MACRO {toois} {"ACM Transactions on Office Information Systems"}
334
335 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
336
337 MACRO {tcs} {"Theoretical Computer Science"}
338 FUNCTION {bibinfo.check}
339 { swap$
340 duplicate$ missing$
341 {
342 pop$ pop$
343 ""
344 }
345 { duplicate$ empty$
346 {
347 swap$ pop$
348 }
349 { swap$
350 pop$
351 }
352 if$
353 }
354 if$
355 }
356 FUNCTION {bibinfo.warn}
357 { swap$
358 duplicate$ missing$
359 {
360 swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
361 ""
362 }
363 { duplicate$ empty$
364 {
365 swap$ "empty " swap$ * " in " * cite$ * warning$
366 }
367 { swap$
368 pop$
369 }
370 if$
371 }
372 if$
373 }
374 STRINGS { bibinfo}
375 INTEGERS { nameptr namesleft numnames }
376
377 FUNCTION {format.names}
378 { 'bibinfo :=
379 duplicate$ empty$ 'skip$ {
380 's :=
381 "" 't :=
382 #1 'nameptr :=
383 s num.names$ 'numnames :=
384 numnames 'namesleft :=
385 { namesleft #0 > }
386 { s nameptr
387 "{f.~}{vv~}{ll}{, jj}"
388 format.name$
389 bibinfo bibinfo.check
390 't :=
391 nameptr #1 >
392 {
393 namesleft #1 >
394 { ", " * t * }
395 {
396 s nameptr "{ll}" format.name$ duplicate$ "others" =
397 { 't := }
398 { pop$ }
399 if$
400 numnames #2 >
401 { "," * }
402 'skip$
403 if$
404 t "others" =
405 {
406 " " * bbl.etal *
407 bib.name.font
408 }
409 {
410 bbl.and
411 space.word * t *
412 }
413 if$
414 }
415 if$
416 }
417 't
418 if$
419 nameptr #1 + 'nameptr :=
420 namesleft #1 - 'namesleft :=
421 }
422 while$
423 t "others" =
424 'skip$
425 { bib.name.font }
426 if$
427 } if$
428 }
429 FUNCTION {format.names.ed}
430 {
431 format.names
432 }
433 FUNCTION {format.authors}
434 { author "author" format.names
435 }
436 FUNCTION {get.bbl.editor}
437 { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
438
439 FUNCTION {format.editors}
440 { editor "editor" format.names duplicate$ empty$ 'skip$
441 {
442 "," *
443 " " *
444 get.bbl.editor
445 *
446 }
447 if$
448 }
449 FUNCTION {format.isbn}
450 { isbn "isbn" bibinfo.check
451 duplicate$ empty$ 'skip$
452 {
453 new.block
454 "ISBN " swap$ *
455 }
456 if$
457 }
458
459 FUNCTION {format.issn}
460 { issn "issn" bibinfo.check
461 duplicate$ empty$ 'skip$
462 {
463 new.block
464 "ISSN " swap$ *
465 }
466 if$
467 }
468
469 FUNCTION {format.doi}
470 { doi "doi" bibinfo.check
471 duplicate$ empty$ 'skip$
472 {
473 new.block
474 "doi: " swap$ * "" *
475 }
476 if$
477 }
478 FUNCTION {format.note}
479 {
480 url empty$
481 'skip$
482 { "\url{" url * "}" * output }
483 if$
484 note empty$
485 { "" }
486 { note #1 #1 substring$
487 duplicate$ "{" =
488 'skip$
489 { output.state mid.sentence =
490 { "l" }
491 { "u" }
492 if$
493 change.case$
494 }
495 if$
496 note #2 global.max$ substring$ * "note" bibinfo.check
497 }
498 if$
499 }
500
501 FUNCTION {format.title}
502 { title
503 "title" bibinfo.check
504 duplicate$ empty$ 'skip$
505 {
506 emphasize
507 }
508 if$
509 }
510 FUNCTION {output.bibitem}
511 { newline$
512 "\li \anchor " write$
513 cite$ write$
514 "\b " write$
515 cite$ write$
516 ": <br> " write$
517 newline$
518 ""
519 before.all 'output.state :=
520 }
521
522 FUNCTION {n.dashify}
523 {
524 't :=
525 ""
526 { t empty$ not }
527 { t #1 #1 substring$ "-" =
528 { t #1 #2 substring$ "--" = not
529 { "--" *
530 t #2 global.max$ substring$ 't :=
531 }
532 { { t #1 #1 substring$ "-" = }
533 { "-" *
534 t #2 global.max$ substring$ 't :=
535 }
536 while$
537 }
538 if$
539 }
540 { t #1 #1 substring$ *
541 t #2 global.max$ substring$ 't :=
542 }
543 if$
544 }
545 while$
546 }
547
548 FUNCTION {word.in}
549 { bbl.in capitalize
550 " " * }
551
552 FUNCTION {format.date}
553 {
554 month "month" bibinfo.check
555 duplicate$ empty$
556 year "year" bibinfo.check duplicate$ empty$
557 { swap$ 'skip$
558 { "there's a month but no year in " cite$ * warning$ }
559 if$
560 *
561 }
562 { swap$ 'skip$
563 {
564 swap$
565 " " * swap$
566 }
567 if$
568 *
569 }
570 if$
571 }
572 FUNCTION {format.btitle}
573 { title "title" bibinfo.check
574 duplicate$ empty$ 'skip$
575 {
576 emphasize
577 }
578 if$
579 }
580 FUNCTION {either.or.check}
581 { empty$
582 'pop$
583 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
584 if$
585 }
586 FUNCTION {format.bvolume}
587 { volume empty$
588 { "" }
589 { bbl.volume volume tie.or.space.prefix
590 "volume" bibinfo.check * *
591 series "series" bibinfo.check
592 duplicate$ empty$ 'pop$
593 { swap$ bbl.of space.word * swap$
594 emphasize * }
595 if$
596 "volume and number" number either.or.check
597 }
598 if$
599 }
600 FUNCTION {format.number.series}
601 { volume empty$
602 { number empty$
603 { series field.or.null }
604 { series empty$
605 { number "number" bibinfo.check }
606 { output.state mid.sentence =
607 { bbl.number }
608 { bbl.number capitalize }
609 if$
610 number tie.or.space.prefix "number" bibinfo.check * *
611 bbl.in space.word *
612 series "series" bibinfo.check *
613 }
614 if$
615 }
616 if$
617 }
618 { "" }
619 if$
620 }
621
622 FUNCTION {format.edition}
623 { edition duplicate$ empty$ 'skip$
624 {
625 output.state mid.sentence =
626 { "l" }
627 { "t" }
628 if$ change.case$
629 "edition" bibinfo.check
630 " " * bbl.edition *
631 }
632 if$
633 }
634 INTEGERS { multiresult }
635 FUNCTION {multi.page.check}
636 { 't :=
637 #0 'multiresult :=
638 { multiresult not
639 t empty$ not
640 and
641 }
642 { t #1 #1 substring$
643 duplicate$ "-" =
644 swap$ duplicate$ "," =
645 swap$ "+" =
646 or or
647 { #1 'multiresult := }
648 { t #2 global.max$ substring$ 't := }
649 if$
650 }
651 while$
652 multiresult
653 }
654 FUNCTION {format.pages}
655 { pages duplicate$ empty$ 'skip$
656 { duplicate$ multi.page.check
657 {
658 n.dashify
659 }
660 {
661 }
662 if$
663 "pages" bibinfo.check
664 }
665 if$
666 }
667 FUNCTION {format.journal.pages}
668 { pages duplicate$ empty$ 'pop$
669 { swap$ duplicate$ empty$
670 { pop$ pop$ format.pages }
671 {
672 ", " *
673 swap$
674 n.dashify
675 "pages" bibinfo.check
676 *
677 }
678 if$
679 }
680 if$
681 }
682 FUNCTION {format.journal.eid}
683 { eid "eid" bibinfo.check
684 duplicate$ empty$ 'pop$
685 { swap$ duplicate$ empty$ 'skip$
686 {
687 ":" *
688 }
689 if$
690 swap$ *
691 }
692 if$
693 }
694 FUNCTION {format.vol.num.pages}
695 { volume field.or.null
696 duplicate$ empty$ 'skip$
697 {
698 "volume" bibinfo.check
699 }
700 if$
701 number "number" bibinfo.check duplicate$ empty$ 'skip$
702 {
703 swap$ duplicate$ empty$
704 { "there's a number but no volume in " cite$ * warning$ }
705 'skip$
706 if$
707 swap$
708 " (" swap$ * ")" *
709 }
710 if$ *
711 eid empty$
712 { format.journal.pages }
713 { format.journal.eid }
714 if$
715 }
716
717 FUNCTION {format.chapter.pages}
718 { chapter empty$
719 'format.pages
720 { type empty$
721 { bbl.chapter }
722 { type "l" change.case$
723 "type" bibinfo.check
724 }
725 if$
726 chapter tie.or.space.prefix
727 "chapter" bibinfo.check
728 * *
729 pages empty$
730 'skip$
731 { ", " * format.pages * }
732 if$
733 }
734 if$
735 }
736
737 FUNCTION {format.booktitle}
738 {
739 booktitle "booktitle" bibinfo.check
740 emphasize
741 }
742 FUNCTION {format.in.ed.booktitle}
743 { format.booktitle duplicate$ empty$ 'skip$
744 {
745 editor "editor" format.names.ed duplicate$ empty$ 'pop$
746 {
747 "," *
748 " " *
749 get.bbl.editor
750 ", " *
751 * swap$
752 * }
753 if$
754 word.in swap$ *
755 }
756 if$
757 }
758 FUNCTION {empty.misc.check}
759 { author empty$ title empty$ howpublished empty$
760 month empty$ year empty$ note empty$
761 and and and and and
762 key empty$ not and
763 { "all relevant fields are empty in " cite$ * warning$ }
764 'skip$
765 if$
766 }
767 FUNCTION {format.thesis.type}
768 { type duplicate$ empty$
769 'pop$
770 { swap$ pop$
771 "t" change.case$ "type" bibinfo.check
772 }
773 if$
774 }
775 FUNCTION {format.tr.number}
776 { number "number" bibinfo.check
777 type duplicate$ empty$
778 { pop$ bbl.techrep }
779 'skip$
780 if$
781 "type" bibinfo.check
782 swap$ duplicate$ empty$
783 { pop$ "t" change.case$ }
784 { tie.or.space.prefix * * }
785 if$
786 }
787 FUNCTION {format.article.crossref}
788 {
789 key duplicate$ empty$
790 { pop$
791 journal duplicate$ empty$
792 { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
793 { "journal" bibinfo.check emphasize word.in swap$ * }
794 if$
795 }
796 { word.in swap$ * " " *}
797 if$
798 " \ref " * crossref * "" *
799 }
800 FUNCTION {format.crossref.editor}
801 { editor #1 "{vv~}{ll}" format.name$
802 "editor" bibinfo.check
803 editor num.names$ duplicate$
804 #2 >
805 { pop$
806 "editor" bibinfo.check
807 " " * bbl.etal
808 *
809 }
810 { #2 <
811 'skip$
812 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
813 {
814 "editor" bibinfo.check
815 " " * bbl.etal
816 *
817 }
818 {
819 bbl.and space.word
820 * editor #2 "{vv~}{ll}" format.name$
821 "editor" bibinfo.check
822 *
823 }
824 if$
825 }
826 if$
827 }
828 if$
829 }
830 FUNCTION {format.book.crossref}
831 { volume duplicate$ empty$
832 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
833 pop$ word.in
834 }
835 { bbl.volume
836 capitalize
837 swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
838 }
839 if$
840 editor empty$
841 editor field.or.null author field.or.null =
842 or
843 { key empty$
844 { series empty$
845 { "need editor, key, or series for " cite$ * " to crossref " *
846 crossref * warning$
847 "" *
848 }
849 { series emphasize * }
850 if$
851 }
852 { key * }
853 if$
854 }
855 { format.crossref.editor * }
856 if$
857 " \ref " * crossref * "" *
858 }
859 FUNCTION {format.incoll.inproc.crossref}
860 {
861 editor empty$
862 editor field.or.null author field.or.null =
863 or
864 { key empty$
865 { format.booktitle duplicate$ empty$
866 { "need editor, key, or booktitle for " cite$ * " to crossref " *
867 crossref * warning$
868 }
869 { word.in swap$ * }
870 if$
871 }
872 { word.in key * " " *}
873 if$
874 }
875 { word.in format.crossref.editor * " " *}
876 if$
877 " \ref " * crossref * "" *
878 }
879 FUNCTION {format.org.or.pub}
880 { 't :=
881 ""
882 address empty$ t empty$ and
883 'skip$
884 {
885 t empty$
886 { address "address" bibinfo.check *
887 }
888 { t *
889 address empty$
890 'skip$
891 { ", " * address "address" bibinfo.check * }
892 if$
893 }
894 if$
895 }
896 if$
897 }
898 FUNCTION {format.publisher.address}
899 { publisher "publisher" bibinfo.warn format.org.or.pub
900 }
901
902 FUNCTION {format.organization.address}
903 { organization "organization" bibinfo.check format.org.or.pub
904 }
905
906 FUNCTION {article}
907 { output.bibitem
908 format.authors "author" output.check
909 format.date "year" output.check
910 date.block
911 format.title "title" output.check
912 new.block
913 crossref missing$
914 {
915 journal
916 "journal" bibinfo.check
917 "journal" output.check
918 add.blank
919 format.vol.num.pages output
920 }
921 { format.article.crossref output.nonnull
922 format.pages output
923 }
924 if$
925 format.issn output
926 format.doi output
927 new.block
928 format.note output
929 fin.entry
930 }
931 FUNCTION {book}
932 { output.bibitem
933 author empty$
934 { format.editors "author and editor" output.check
935 }
936 { format.authors output.nonnull
937 crossref missing$
938 { "author and editor" editor either.or.check }
939 'skip$
940 if$
941 }
942 if$
943 format.date "year" output.check
944 date.block
945 format.btitle "title" output.check
946 crossref missing$
947 { format.bvolume output
948 new.block
949 format.number.series output
950 new.sentence
951 format.publisher.address output
952 }
953 {
954 new.block
955 format.book.crossref output.nonnull
956 }
957 if$
958 format.edition output
959 format.isbn output
960 format.doi output
961 new.block
962 format.note output
963 fin.entry
964 }
965 FUNCTION {booklet}
966 { output.bibitem
967 format.authors output
968 format.date output
969 date.block
970 format.title "title" output.check
971 new.block
972 howpublished "howpublished" bibinfo.check output
973 address "address" bibinfo.check output
974 format.isbn output
975 format.doi output
976 new.block
977 format.note output
978 fin.entry
979 }
980
981 FUNCTION {inbook}
982 { output.bibitem
983 author empty$
984 { format.editors "author and editor" output.check
985 }
986 { format.authors output.nonnull
987 crossref missing$
988 { "author and editor" editor either.or.check }
989 'skip$
990 if$
991 }
992 if$
993 format.date "year" output.check
994 date.block
995 format.btitle "title" output.check
996 crossref missing$
997 {
998 format.bvolume output
999 format.chapter.pages "chapter and pages" output.check
1000 new.block
1001 format.number.series output
1002 new.sentence
1003 format.publisher.address output
1004 }
1005 {
1006 format.chapter.pages "chapter and pages" output.check
1007 new.block
1008 format.book.crossref output.nonnull
1009 }
1010 if$
1011 format.edition output
1012 crossref missing$
1013 { format.isbn output }
1014 'skip$
1015 if$
1016 format.doi output
1017 new.block
1018 format.note output
1019 fin.entry
1020 }
1021
1022 FUNCTION {incollection}
1023 { output.bibitem
1024 format.authors "author" output.check
1025 format.date "year" output.check
1026 date.block
1027 format.title "title" output.check
1028 new.block
1029 crossref missing$
1030 { format.in.ed.booktitle "booktitle" output.check
1031 format.bvolume output
1032 format.number.series output
1033 format.chapter.pages output
1034 new.sentence
1035 format.publisher.address output
1036 format.edition output
1037 format.isbn output
1038 }
1039 { format.incoll.inproc.crossref output.nonnull
1040 format.chapter.pages output
1041 }
1042 if$
1043 format.doi output
1044 new.block
1045 format.note output
1046 fin.entry
1047 }
1048 FUNCTION {inproceedings}
1049 { output.bibitem
1050 format.authors "author" output.check
1051 format.date "year" output.check
1052 date.block
1053 format.title "title" output.check
1054 new.block
1055 crossref missing$
1056 { format.in.ed.booktitle "booktitle" output.check
1057 format.bvolume output
1058 format.number.series output
1059 format.pages output
1060 new.sentence
1061 publisher empty$
1062 { format.organization.address output }
1063 { organization "organization" bibinfo.check output
1064 format.publisher.address output
1065 }
1066 if$
1067 format.isbn output
1068 format.issn output
1069 }
1070 { format.incoll.inproc.crossref output.nonnull
1071 format.pages output
1072 }
1073 if$
1074 format.doi output
1075 new.block
1076 format.note output
1077 fin.entry
1078 }
1079 FUNCTION {conference} { inproceedings }
1080 FUNCTION {manual}
1081 { output.bibitem
1082 author empty$
1083 { organization "organization" bibinfo.check
1084 duplicate$ empty$ 'pop$
1085 { output
1086 address "address" bibinfo.check output
1087 }
1088 if$
1089 }
1090 { format.authors output.nonnull }
1091 if$
1092 format.date output
1093 date.block
1094 format.btitle "title" output.check
1095 author empty$
1096 { organization empty$
1097 {
1098 address new.block.checka
1099 address "address" bibinfo.check output
1100 }
1101 'skip$
1102 if$
1103 }
1104 {
1105 organization address new.block.checkb
1106 organization "organization" bibinfo.check output
1107 address "address" bibinfo.check output
1108 }
1109 if$
1110 format.edition output
1111 format.doi output
1112 new.block
1113 format.note output
1114 fin.entry
1115 }
1116
1117 FUNCTION {mastersthesis}
1118 { output.bibitem
1119 format.authors "author" output.check
1120 format.date "year" output.check
1121 date.block
1122 format.btitle
1123 "title" output.check
1124 new.block
1125 bbl.mthesis format.thesis.type output.nonnull
1126 school "school" bibinfo.warn output
1127 address "address" bibinfo.check output
1128 format.doi output
1129 new.block
1130 format.note output
1131 fin.entry
1132 }
1133
1134 FUNCTION {misc}
1135 { output.bibitem
1136 format.authors output
1137 format.date output
1138 title howpublished new.block.checkb
1139 format.title output
1140 howpublished new.block.checka
1141 howpublished "howpublished" bibinfo.check output
1142 format.doi output
1143 new.block
1144 format.note output
1145 fin.entry
1146 empty.misc.check
1147 }
1148 FUNCTION {phdthesis}
1149 { output.bibitem
1150 format.authors "author" output.check
1151 format.date "year" output.check
1152 date.block
1153 format.btitle
1154 "title" output.check
1155 new.block
1156 bbl.phdthesis format.thesis.type output.nonnull
1157 school "school" bibinfo.warn output
1158 address "address" bibinfo.check output
1159 format.doi output
1160 new.block
1161 format.note output
1162 fin.entry
1163 }
1164
1165 FUNCTION {proceedings}
1166 { output.bibitem
1167 editor empty$
1168 { organization "organization" bibinfo.check output
1169 }
1170 { format.editors output.nonnull }
1171 if$
1172 format.date "year" output.check
1173 date.block
1174 format.btitle "title" output.check
1175 format.bvolume output
1176 format.number.series output
1177 editor empty$
1178 { publisher empty$
1179 'skip$
1180 {
1181 new.sentence
1182 format.publisher.address output
1183 }
1184 if$
1185 }
1186 { publisher empty$
1187 {
1188 new.sentence
1189 format.organization.address output }
1190 {
1191 new.sentence
1192 organization "organization" bibinfo.check output
1193 format.publisher.address output
1194 }
1195 if$
1196 }
1197 if$
1198 format.isbn output
1199 format.issn output
1200 format.doi output
1201 new.block
1202 format.note output
1203 fin.entry
1204 }
1205
1206 FUNCTION {techreport}
1207 { output.bibitem
1208 format.authors "author" output.check
1209 format.date "year" output.check
1210 date.block
1211 format.title
1212 "title" output.check
1213 new.block
1214 format.tr.number output.nonnull
1215 institution "institution" bibinfo.warn output
1216 address "address" bibinfo.check output
1217 format.doi output
1218 new.block
1219 format.note output
1220 fin.entry
1221 }
1222
1223 FUNCTION {unpublished}
1224 { output.bibitem
1225 format.authors "author" output.check
1226 format.date output
1227 date.block
1228 format.title "title" output.check
1229 format.doi output
1230 new.block
1231 format.note "note" output.check
1232 fin.entry
1233 }
1234
1235 FUNCTION {default.type} { misc }
1236 READ
1237 FUNCTION {sortify}
1238 { purify$
1239 "l" change.case$
1240 }
1241 INTEGERS { len }
1242 FUNCTION {chop.word}
1243 { 's :=
1244 'len :=
1245 s #1 len substring$ =
1246 { s len #1 + global.max$ substring$ }
1247 's
1248 if$
1249 }
1250 FUNCTION {sort.format.names}
1251 { 's :=
1252 #1 'nameptr :=
1253 ""
1254 s num.names$ 'numnames :=
1255 numnames 'namesleft :=
1256 { namesleft #0 > }
1257 { s nameptr
1258 "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
1259 format.name$ 't :=
1260 nameptr #1 >
1261 {
1262 " " *
1263 namesleft #1 = t "others" = and
1264 { "zzzzz" * }
1265 { t sortify * }
1266 if$
1267 }
1268 { t sortify * }
1269 if$
1270 nameptr #1 + 'nameptr :=
1271 namesleft #1 - 'namesleft :=
1272 }
1273 while$
1274 }
1275
1276 FUNCTION {sort.format.title}
1277 { 't :=
1278 "A " #2
1279 "An " #3
1280 "The " #4 t chop.word
1281 chop.word
1282 chop.word
1283 sortify
1284 #1 global.max$ substring$
1285 }
1286 FUNCTION {author.sort}
1287 { author empty$
1288 { key empty$
1289 { "to sort, need author or key in " cite$ * warning$
1290 ""
1291 }
1292 { key sortify }
1293 if$
1294 }
1295 { author sort.format.names }
1296 if$
1297 }
1298 FUNCTION {author.editor.sort}
1299 { author empty$
1300 { editor empty$
1301 { key empty$
1302 { "to sort, need author, editor, or key in " cite$ * warning$
1303 ""
1304 }
1305 { key sortify }
1306 if$
1307 }
1308 { editor sort.format.names }
1309 if$
1310 }
1311 { author sort.format.names }
1312 if$
1313 }
1314 FUNCTION {author.organization.sort}
1315 { author empty$
1316 { organization empty$
1317 { key empty$
1318 { "to sort, need author, organization, or key in " cite$ * warning$
1319 ""
1320 }
1321 { key sortify }
1322 if$
1323 }
1324 { "The " #4 organization chop.word sortify }
1325 if$
1326 }
1327 { author sort.format.names }
1328 if$
1329 }
1330 FUNCTION {editor.organization.sort}
1331 { editor empty$
1332 { organization empty$
1333 { key empty$
1334 { "to sort, need editor, organization, or key in " cite$ * warning$
1335 ""
1336 }
1337 { key sortify }
1338 if$
1339 }
1340 { "The " #4 organization chop.word sortify }
1341 if$
1342 }
1343 { editor sort.format.names }
1344 if$
1345 }
1346 FUNCTION {presort}
1347 { type$ "book" =
1348 type$ "inbook" =
1349 or
1350 'author.editor.sort
1351 { type$ "proceedings" =
1352 'editor.organization.sort
1353 { type$ "manual" =
1354 'author.organization.sort
1355 'author.sort
1356 if$
1357 }
1358 if$
1359 }
1360 if$
1361 " "
1362 *
1363 year field.or.null sortify
1364 *
1365 " "
1366 *
1367 title field.or.null
1368 sort.format.title
1369 *
1370 #1 entry.max$ substring$
1371 'sort.key$ :=
1372 }
1373 ITERATE {presort}
1374 SORT
1375 STRINGS { longest.label }
1376 INTEGERS { number.label longest.label.width }
1377 FUNCTION {initialize.longest.label}
1378 { "" 'longest.label :=
1379 #1 'number.label :=
1380 #0 'longest.label.width :=
1381 }
1382 FUNCTION {longest.label.pass}
1383 { cite$ 'label :=
1384 label width$ longest.label.width >
1385 { label 'longest.label :=
1386 label width$ 'longest.label.width :=
1387 }
1388 'skip$
1389 if$
1390 }
1391 EXECUTE {initialize.longest.label}
1392 ITERATE {longest.label.pass}
1393 FUNCTION {begin.bib}
1394 { preamble$ empty$
1395 'skip$
1396 { preamble$ write$ newline$ }
1397 if$
1398 "" write$ newline$
1399 }
1400 EXECUTE {begin.bib}
1401 EXECUTE {init.state.consts}
1402 ITERATE {call.type$}
1403 FUNCTION {end.bib}
1404 { newline$
1405 "" write$ newline$
1406 }
1407 EXECUTE {end.bib}