ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/mattDisertation/thesis.bst
Revision: 954
Committed: Sun Jan 18 04:12:08 2004 UTC (20 years, 5 months ago) by mmeineke
File size: 25056 byte(s)
Log Message:
forgt to add these earlier

File Contents

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