Merge branch 'master' of git.ucc.asn.au:/matches/honours
[matches/honours.git] / thesis / styles / hplain.bst
1 % hplain: adds eprint field ([email protected])
2 % an extension of:
3 % BibTeX standard bibliography style `plain'
4         % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
5         % Copyright (C) 1985, all rights reserved.
6         % Copying of this file is authorized only if either
7         % (1) you make absolutely no changes to your copy, including name, or
8         % (2) if you do make changes, you name it something other than
9         % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
10         % This restriction helps ensure that all standard styles are identical.
11         % The file btxbst.doc has the documentation for this style.
12
13 ENTRY
14   { address
15     author
16     booktitle
17     chapter
18     edition
19     editor
20     eprint
21     howpublished
22     institution
23     journal
24     key
25     month
26     note
27     number
28     organization
29     pages
30     publisher
31     school
32     series
33     title
34     type
35     volume
36     year
37   }
38   {}
39   { label }
40
41 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
42
43 FUNCTION {init.state.consts}
44 { #0 'before.all :=
45   #1 'mid.sentence :=
46   #2 'after.sentence :=
47   #3 'after.block :=
48 }
49
50 STRINGS { s t }
51
52 FUNCTION {output.nonnull}
53 { 's :=
54   output.state mid.sentence =
55     { ", " * write$ }
56     { output.state after.block =
57         { add.period$ write$
58           newline$
59           "\newblock " write$
60         }
61         { output.state before.all =
62             'write$
63             { add.period$ " " * write$ }
64           if$
65         }
66       if$
67       mid.sentence 'output.state :=
68     }
69   if$
70   s
71 }
72
73 FUNCTION {output}
74 { duplicate$ empty$
75     'pop$
76     'output.nonnull
77   if$
78 }
79
80 FUNCTION {output.check}
81 { 't :=
82   duplicate$ empty$
83     { pop$ "empty " t * " in " * cite$ * warning$ }
84     'output.nonnull
85   if$
86 }
87
88 FUNCTION {output.bibitem}
89 { newline$
90   "\bibitem{" write$
91   cite$ write$
92   "}" write$
93   newline$
94   ""
95   before.all 'output.state :=
96 }
97
98 FUNCTION {fin.entry}
99 { add.period$
100   write$
101   newline$
102 }
103
104 FUNCTION {new.block}
105 { output.state before.all =
106     'skip$
107     { after.block 'output.state := }
108   if$
109 }
110
111 FUNCTION {new.sentence}
112 { output.state after.block =
113     'skip$
114     { output.state before.all =
115         'skip$
116         { after.sentence 'output.state := }
117       if$
118     }
119   if$
120 }
121
122 FUNCTION {not}
123 {   { #0 }
124     { #1 }
125   if$
126 }
127
128 FUNCTION {and}
129 {   'skip$
130     { pop$ #0 }
131   if$
132 }
133
134 FUNCTION {or}
135 {   { pop$ #1 }
136     'skip$
137   if$
138 }
139
140 FUNCTION {new.block.checka}
141 { empty$
142     'skip$
143     'new.block
144   if$
145 }
146
147 FUNCTION {new.block.checkb}
148 { empty$
149   swap$ empty$
150   and
151     'skip$
152     'new.block
153   if$
154 }
155
156 FUNCTION {new.sentence.checka}
157 { empty$
158     'skip$
159     'new.sentence
160   if$
161 }
162
163 FUNCTION {new.sentence.checkb}
164 { empty$
165   swap$ empty$
166   and
167     'skip$
168     'new.sentence
169   if$
170 }
171
172 FUNCTION {field.or.null}
173 { duplicate$ empty$
174     { pop$ "" }
175     'skip$
176   if$
177 }
178
179 FUNCTION {emphasize}
180 { duplicate$ empty$
181     { pop$ "" }
182     { "{\em " swap$ * "}" * }
183   if$
184 }
185
186 INTEGERS { nameptr namesleft numnames }
187
188 FUNCTION {format.names}
189 { 's :=
190   #1 'nameptr :=
191   s num.names$ 'numnames :=
192   numnames 'namesleft :=
193     { namesleft #0 > }
194     { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
195       nameptr #1 >
196         { namesleft #1 >
197             { ", " * t * }
198             { numnames #2 >
199                 { "," * }
200                 'skip$
201               if$
202               t "others" =
203                 { " et~al." * }
204                 { " and " * t * }
205               if$
206             }
207           if$
208         }
209         't
210       if$
211       nameptr #1 + 'nameptr :=
212       namesleft #1 - 'namesleft :=
213     }
214   while$
215 }
216
217 FUNCTION {format.authors}
218 { author empty$
219     { "" }
220     { author format.names }
221   if$
222 }
223
224 FUNCTION {format.editors}
225 { editor empty$
226     { "" }
227     { editor format.names
228       editor num.names$ #1 >
229         { ", editors" * }
230         { ", editor" * }
231       if$
232     }
233   if$
234 }
235
236 FUNCTION {format.title}
237 { title empty$
238     { "" }
239     { title "t" change.case$ }
240   if$
241 }
242
243 FUNCTION {format.eprint}
244 { eprint empty$
245     { "" }
246     { eprint }
247   if$
248 }
249
250
251 FUNCTION {n.dashify}
252 { 't :=
253   ""
254     { t empty$ not }
255     { t #1 #1 substring$ "-" =
256         { t #1 #2 substring$ "--" = not
257             { "--" *
258               t #2 global.max$ substring$ 't :=
259             }
260             {   { t #1 #1 substring$ "-" = }
261                 { "-" *
262                   t #2 global.max$ substring$ 't :=
263                 }
264               while$
265             }
266           if$
267         }
268         { t #1 #1 substring$ *
269           t #2 global.max$ substring$ 't :=
270         }
271       if$
272     }
273   while$
274 }
275
276 FUNCTION {format.date}
277 { year empty$
278     { month empty$
279         { "" }
280         { "there's a month but no year in " cite$ * warning$
281           month
282         }
283       if$
284     }
285     { month empty$
286         'year
287         { month " " * year * }
288       if$
289     }
290   if$
291 }
292
293 FUNCTION {format.btitle}
294 { title emphasize
295 }
296
297 FUNCTION {tie.or.space.connect}
298 { duplicate$ text.length$ #3 <
299     { "~" }
300     { " " }
301   if$
302   swap$ * *
303 }
304
305 FUNCTION {either.or.check}
306 { empty$
307     'pop$
308     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
309   if$
310 }
311
312 FUNCTION {format.bvolume}
313 { volume empty$
314     { "" }
315     { "volume" volume tie.or.space.connect
316       series empty$
317         'skip$
318         { " of " * series emphasize * }
319       if$
320       "volume and number" number either.or.check
321     }
322   if$
323 }
324
325 FUNCTION {format.number.series}
326 { volume empty$
327     { number empty$
328         { series field.or.null }
329         { output.state mid.sentence =
330             { "number" }
331             { "Number" }
332           if$
333           number tie.or.space.connect
334           series empty$
335             { "there's a number but no series in " cite$ * warning$ }
336             { " in " * series * }
337           if$
338         }
339       if$
340     }
341     { "" }
342   if$
343 }
344
345 FUNCTION {format.edition}
346 { edition empty$
347     { "" }
348     { output.state mid.sentence =
349         { edition "l" change.case$ " edition" * }
350         { edition "t" change.case$ " edition" * }
351       if$
352     }
353   if$
354 }
355
356 INTEGERS { multiresult }
357
358 FUNCTION {multi.page.check}
359 { 't :=
360   #0 'multiresult :=
361     { multiresult not
362       t empty$ not
363       and
364     }
365     { t #1 #1 substring$
366       duplicate$ "-" =
367       swap$ duplicate$ "," =
368       swap$ "+" =
369       or or
370         { #1 'multiresult := }
371         { t #2 global.max$ substring$ 't := }
372       if$
373     }
374   while$
375   multiresult
376 }
377
378 FUNCTION {format.pages}
379 { pages empty$
380     { "" }
381     { pages multi.page.check
382         { "pages" pages n.dashify tie.or.space.connect }
383         { "page" pages tie.or.space.connect }
384       if$
385     }
386   if$
387 }
388
389 FUNCTION {format.vol.num.pages}
390 { volume field.or.null
391   number empty$
392     'skip$
393     { "(" number * ")" * *
394       volume empty$
395         { "there's a number but no volume in " cite$ * warning$ }
396         'skip$
397       if$
398     }
399   if$
400   pages empty$
401     'skip$
402     { duplicate$ empty$
403         { pop$ format.pages }
404         { ":" * pages n.dashify * }
405       if$
406     }
407   if$
408 }
409
410 FUNCTION {format.chapter.pages}
411 { chapter empty$
412     'format.pages
413     { type empty$
414         { "chapter" }
415         { type "l" change.case$ }
416       if$
417       chapter tie.or.space.connect
418       pages empty$
419         'skip$
420         { ", " * format.pages * }
421       if$
422     }
423   if$
424 }
425
426 FUNCTION {format.in.ed.booktitle}
427 { booktitle empty$
428     { "" }
429     { editor empty$
430         { "In " booktitle emphasize * }
431         { "In " format.editors * ", " * booktitle emphasize * }
432       if$
433     }
434   if$
435 }
436
437 FUNCTION {empty.misc.check}
438 { author empty$ title empty$ howpublished empty$
439   month empty$ year empty$ note empty$
440   and and and and and
441   key empty$ not and
442     { "all relevant fields are empty in " cite$ * warning$ }
443     'skip$
444   if$
445 }
446
447 FUNCTION {format.thesis.type}
448 { type empty$
449     'skip$
450     { pop$
451       type "t" change.case$
452     }
453   if$
454 }
455
456 FUNCTION {format.tr.number}
457 { type empty$
458     { "Technical Report" }
459     'type
460   if$
461   number empty$
462     { "t" change.case$ }
463     { number tie.or.space.connect }
464   if$
465 }
466
467 FUNCTION {format.article.crossref}
468 { key empty$
469     { journal empty$
470         { "need key or journal for " cite$ * " to crossref " * crossref *
471           warning$
472           ""
473         }
474         { "In {\em " journal * "\/}" * }
475       if$
476     }
477     { "In " key * }
478   if$
479   " \cite{" * crossref * "}" *
480 }
481
482 FUNCTION {format.crossref.editor}
483 { editor #1 "{vv~}{ll}" format.name$
484   editor num.names$ duplicate$
485   #2 >
486     { pop$ " et~al." * }
487     { #2 <
488         'skip$
489         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
490             { " et~al." * }
491             { " and " * editor #2 "{vv~}{ll}" format.name$ * }
492           if$
493         }
494       if$
495     }
496   if$
497 }
498
499 FUNCTION {format.book.crossref}
500 { volume empty$
501     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
502       "In "
503     }
504     { "Volume" volume tie.or.space.connect
505       " of " *
506     }
507   if$
508   editor empty$
509   editor field.or.null author field.or.null =
510   or
511     { key empty$
512         { series empty$
513             { "need editor, key, or series for " cite$ * " to crossref " *
514               crossref * warning$
515               "" *
516             }
517             { "{\em " * series * "\/}" * }
518           if$
519         }
520         { key * }
521       if$
522     }
523     { format.crossref.editor * }
524   if$
525   " \cite{" * crossref * "}" *
526 }
527
528 FUNCTION {format.incoll.inproc.crossref}
529 { editor empty$
530   editor field.or.null author field.or.null =
531   or
532     { key empty$
533         { booktitle empty$
534             { "need editor, key, or booktitle for " cite$ * " to crossref " *
535               crossref * warning$
536               ""
537             }
538             { "In {\em " booktitle * "\/}" * }
539           if$
540         }
541         { "In " key * }
542       if$
543     }
544     { "In " format.crossref.editor * }
545   if$
546   " \cite{" * crossref * "}" *
547 }
548
549 FUNCTION {article}
550 { output.bibitem
551   format.authors "author" output.check
552   new.block
553   format.title "title" output.check
554   new.block
555   crossref missing$
556     { journal emphasize "journal" output.check
557       format.vol.num.pages output
558       format.date "year" output.check
559     }
560     { format.article.crossref output.nonnull
561       format.pages output
562     }
563   if$
564   format.eprint output
565   new.block
566   note output
567   fin.entry
568 }
569
570 FUNCTION {book}
571 { output.bibitem
572   author empty$
573     { format.editors "author and editor" output.check }
574     { format.authors output.nonnull
575       crossref missing$
576         { "author and editor" editor either.or.check }
577         'skip$
578       if$
579     }
580   if$
581   new.block
582   format.btitle "title" output.check
583   crossref missing$
584     { format.bvolume output
585       new.block
586       format.number.series output
587       new.sentence
588       publisher "publisher" output.check
589       address output
590     }
591     { new.block
592       format.book.crossref output.nonnull
593     }
594   if$
595   format.edition output
596   format.date "year" output.check
597   format.eprint output
598   new.block
599   note output
600   fin.entry
601 }
602
603 FUNCTION {booklet}
604 { output.bibitem
605   format.authors output
606   new.block
607   format.title "title" output.check
608   howpublished address new.block.checkb
609   howpublished output
610   address output
611   format.date output
612   format.eprint output
613   new.block
614   note output
615   fin.entry
616 }
617
618 FUNCTION {inbook}
619 { output.bibitem
620   author empty$
621     { format.editors "author and editor" output.check }
622     { format.authors output.nonnull
623       crossref missing$
624         { "author and editor" editor either.or.check }
625         'skip$
626       if$
627     }
628   if$
629   new.block
630   format.btitle "title" output.check
631   crossref missing$
632     { format.bvolume output
633       format.chapter.pages "chapter and pages" output.check
634       new.block
635       format.number.series output
636       new.sentence
637       publisher "publisher" output.check
638       address output
639     }
640     { format.chapter.pages "chapter and pages" output.check
641       new.block
642       format.book.crossref output.nonnull
643     }
644   if$
645   format.edition output
646   format.date "year" output.check
647   format.eprint output
648   new.block
649   note output
650   fin.entry
651 }
652
653 FUNCTION {incollection}
654 { output.bibitem
655   format.authors "author" output.check
656   new.block
657   format.title "title" output.check
658   new.block
659   crossref missing$
660     { format.in.ed.booktitle "booktitle" output.check
661       format.bvolume output
662       format.number.series output
663       format.chapter.pages output
664       new.sentence
665       publisher "publisher" output.check
666       address output
667       format.edition output
668       format.date "year" output.check
669     }
670     { format.incoll.inproc.crossref output.nonnull
671       format.chapter.pages output
672     }
673   if$
674   format.eprint output
675   new.block
676   note output
677   fin.entry
678 }
679
680 FUNCTION {inproceedings}
681 { output.bibitem
682   format.authors "author" output.check
683   new.block
684   format.title "title" output.check
685   new.block
686   crossref missing$
687     { format.in.ed.booktitle "booktitle" output.check
688       format.bvolume output
689       format.number.series output
690       format.pages output
691       address empty$
692         { organization publisher new.sentence.checkb
693           organization output
694           publisher output
695           format.date "year" output.check
696         }
697         { address output.nonnull
698           format.date "year" output.check
699           new.sentence
700           organization output
701           publisher output
702         }
703       if$
704     }
705     { format.incoll.inproc.crossref output.nonnull
706       format.pages output
707     }
708   if$
709   format.eprint output
710   new.block
711   note output
712   fin.entry
713 }
714
715 FUNCTION {conference} { inproceedings }
716
717 FUNCTION {manual}
718 { output.bibitem
719   author empty$
720     { organization empty$
721         'skip$
722         { organization output.nonnull
723           address output
724         }
725       if$
726     }
727     { format.authors output.nonnull }
728   if$
729   new.block
730   format.btitle "title" output.check
731   author empty$
732     { organization empty$
733         { address new.block.checka
734           address output
735         }
736         'skip$
737       if$
738     }
739     { organization address new.block.checkb
740       organization output
741       address output
742     }
743   if$
744   format.edition output
745   format.date output
746   format.eprint output
747   new.block
748   note output
749   fin.entry
750 }
751
752 FUNCTION {mastersthesis}
753 { output.bibitem
754   format.authors "author" output.check
755   new.block
756   format.title "title" output.check
757   new.block
758   "Master's thesis" format.thesis.type output.nonnull
759   school "school" output.check
760   address output
761   format.date "year" output.check
762   format.eprint output
763   new.block
764   note output
765   fin.entry
766 }
767
768 FUNCTION {misc}
769 { output.bibitem
770   format.authors output
771   title howpublished new.block.checkb
772   format.title output
773   howpublished new.block.checka
774   howpublished output
775   format.date output
776   format.eprint output
777   new.block
778   note output
779   fin.entry
780   empty.misc.check
781 }
782
783 FUNCTION {phdthesis}
784 { output.bibitem
785   format.authors "author" output.check
786   new.block
787   format.btitle "title" output.check
788   new.block
789   "PhD thesis" format.thesis.type output.nonnull
790   school "school" output.check
791   address output
792   format.date "year" output.check
793   format.eprint output
794   new.block
795   note output
796   fin.entry
797 }
798
799 FUNCTION {proceedings}
800 { output.bibitem
801   editor empty$
802     { organization output }
803     { format.editors output.nonnull }
804   if$
805   new.block
806   format.btitle "title" output.check
807   format.bvolume output
808   format.number.series output
809   address empty$
810     { editor empty$
811         { publisher new.sentence.checka }
812         { organization publisher new.sentence.checkb
813           organization output
814         }
815       if$
816       publisher output
817       format.date "year" output.check
818     }
819     { address output.nonnull
820       format.date "year" output.check
821       new.sentence
822       editor empty$
823         'skip$
824         { organization output }
825       if$
826       publisher output
827     }
828   if$
829   format.eprint output
830   new.block
831   note output
832   fin.entry
833 }
834
835 FUNCTION {techreport}
836 { output.bibitem
837   format.authors "author" output.check
838   new.block
839   format.title "title" output.check
840   new.block
841   format.tr.number output.nonnull
842   institution "institution" output.check
843   address output
844   format.date "year" output.check
845   format.eprint output
846   new.block
847   note output
848   fin.entry
849 }
850
851 FUNCTION {unpublished}
852 { output.bibitem
853   format.authors "author" output.check
854   new.block
855   format.title "title" output.check
856   new.block
857   note "note" output.check
858   format.date output
859   format.eprint output
860   fin.entry
861 }
862
863 FUNCTION {default.type} { misc }
864
865 MACRO {jan} {"January"}
866
867 MACRO {feb} {"February"}
868
869 MACRO {mar} {"March"}
870
871 MACRO {apr} {"April"}
872
873 MACRO {may} {"May"}
874
875 MACRO {jun} {"June"}
876
877 MACRO {jul} {"July"}
878
879 MACRO {aug} {"August"}
880
881 MACRO {sep} {"September"}
882
883 MACRO {oct} {"October"}
884
885 MACRO {nov} {"November"}
886
887 MACRO {dec} {"December"}
888
889 MACRO {acmcs} {"ACM Computing Surveys"}
890
891 MACRO {acta} {"Acta Informatica"}
892
893 MACRO {cacm} {"Communications of the ACM"}
894
895 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
896
897 MACRO {ibmsj} {"IBM Systems Journal"}
898
899 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
900
901 MACRO {ieeetc} {"IEEE Transactions on Computers"}
902
903 MACRO {ieeetcad}
904  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
905
906 MACRO {ipl} {"Information Processing Letters"}
907
908 MACRO {jacm} {"Journal of the ACM"}
909
910 MACRO {jcss} {"Journal of Computer and System Sciences"}
911
912 MACRO {scp} {"Science of Computer Programming"}
913
914 MACRO {sicomp} {"SIAM Journal on Computing"}
915
916 MACRO {tocs} {"ACM Transactions on Computer Systems"}
917
918 MACRO {tods} {"ACM Transactions on Database Systems"}
919
920 MACRO {tog} {"ACM Transactions on Graphics"}
921
922 MACRO {toms} {"ACM Transactions on Mathematical Software"}
923
924 MACRO {toois} {"ACM Transactions on Office Information Systems"}
925
926 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
927
928 MACRO {tcs} {"Theoretical Computer Science"}
929
930 READ
931
932 FUNCTION {sortify}
933 { purify$
934   "l" change.case$
935 }
936
937 INTEGERS { len }
938
939 FUNCTION {chop.word}
940 { 's :=
941   'len :=
942   s #1 len substring$ =
943     { s len #1 + global.max$ substring$ }
944     's
945   if$
946 }
947
948 FUNCTION {sort.format.names}
949 { 's :=
950   #1 'nameptr :=
951   ""
952   s num.names$ 'numnames :=
953   numnames 'namesleft :=
954     { namesleft #0 > }
955     { nameptr #1 >
956         { "   " * }
957         'skip$
958       if$
959       s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
960       nameptr numnames = t "others" = and
961         { "et al" * }
962         { t sortify * }
963       if$
964       nameptr #1 + 'nameptr :=
965       namesleft #1 - 'namesleft :=
966     }
967   while$
968 }
969
970 FUNCTION {sort.format.title}
971 { 't :=
972   "A " #2
973     "An " #3
974       "The " #4 t chop.word
975     chop.word
976   chop.word
977   sortify
978   #1 global.max$ substring$
979 }
980
981 FUNCTION {author.sort}
982 { author empty$
983     { key empty$
984         { "to sort, need author or key in " cite$ * warning$
985           ""
986         }
987         { key sortify }
988       if$
989     }
990     { author sort.format.names }
991   if$
992 }
993
994 FUNCTION {author.editor.sort}
995 { author empty$
996     { editor empty$
997         { key empty$
998             { "to sort, need author, editor, or key in " cite$ * warning$
999               ""
1000             }
1001             { key sortify }
1002           if$
1003         }
1004         { editor sort.format.names }
1005       if$
1006     }
1007     { author sort.format.names }
1008   if$
1009 }
1010
1011 FUNCTION {author.organization.sort}
1012 { author empty$
1013     { organization empty$
1014         { key empty$
1015             { "to sort, need author, organization, or key in " cite$ * warning$
1016               ""
1017             }
1018             { key sortify }
1019           if$
1020         }
1021         { "The " #4 organization chop.word sortify }
1022       if$
1023     }
1024     { author sort.format.names }
1025   if$
1026 }
1027
1028 FUNCTION {editor.organization.sort}
1029 { editor empty$
1030     { organization empty$
1031         { key empty$
1032             { "to sort, need editor, organization, or key in " cite$ * warning$
1033               ""
1034             }
1035             { key sortify }
1036           if$
1037         }
1038         { "The " #4 organization chop.word sortify }
1039       if$
1040     }
1041     { editor sort.format.names }
1042   if$
1043 }
1044
1045 FUNCTION {presort}
1046 { type$ "book" =
1047   type$ "inbook" =
1048   or
1049     'author.editor.sort
1050     { type$ "proceedings" =
1051         'editor.organization.sort
1052         { type$ "manual" =
1053             'author.organization.sort
1054             'author.sort
1055           if$
1056         }
1057       if$
1058     }
1059   if$
1060   "    "
1061   *
1062   year field.or.null sortify
1063   *
1064   "    "
1065   *
1066   title field.or.null
1067   sort.format.title
1068   *
1069   #1 entry.max$ substring$
1070   'sort.key$ :=
1071 }
1072
1073 ITERATE {presort}
1074
1075 SORT
1076
1077 STRINGS { longest.label }
1078
1079 INTEGERS { number.label longest.label.width }
1080
1081 FUNCTION {initialize.longest.label}
1082 { "" 'longest.label :=
1083   #1 'number.label :=
1084   #0 'longest.label.width :=
1085 }
1086
1087 FUNCTION {longest.label.pass}
1088 { number.label int.to.str$ 'label :=
1089   number.label #1 + 'number.label :=
1090   label width$ longest.label.width >
1091     { label 'longest.label :=
1092       label width$ 'longest.label.width :=
1093     }
1094     'skip$
1095   if$
1096 }
1097
1098 EXECUTE {initialize.longest.label}
1099
1100 ITERATE {longest.label.pass}
1101
1102 FUNCTION {begin.bib}
1103 { preamble$ empty$
1104     'skip$
1105     { preamble$ write$ newline$ }
1106   if$
1107   "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
1108 }
1109
1110 EXECUTE {begin.bib}
1111
1112 EXECUTE {init.state.consts}
1113
1114 ITERATE {call.type$}
1115
1116 FUNCTION {end.bib}
1117 { newline$
1118   "\end{thebibliography}" write$ newline$
1119 }
1120
1121 EXECUTE {end.bib}

UCC git Repository :: git.ucc.asn.au