ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/fennellDissertation/ndthesis.bst
Revision: 2957
Committed: Fri Jul 21 22:18:24 2006 UTC (18 years, 1 month ago) by chrisfen
File size: 25463 byte(s)
Log Message:
bunch of changes

File Contents

# User Rev Content
1 chrisfen 2918 %%
2     %% This is file `nddiss2e.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 chrisfen 2957 %FUNCTION {first.page}
699     %{ 't :=
700     % ""
701     % { t empty$ not t #1 #1 substring$ "-" = not and }
702     % { t #1 #1 substring$ *
703     % t #2 global.max$ substring$ 't :=
704     % }
705     % while$
706     %}
707    
708     %FUNCTION {format.journal.pages}
709     %{
710     % pages empty$
711     % 'skip$
712     % { duplicate$ empty$
713     % { pop$ format.pages }
714     % { ", " * pages first.page * }
715     % if$
716     % }
717     % if$
718     %}
719    
720 chrisfen 2918 FUNCTION {format.journal.pages}
721     {
722     pages empty$
723     'skip$
724     { duplicate$ empty$
725     { pop$ format.pages }
726     { ": " * pages n.dashify * }
727     if$
728     }
729     if$
730     }
731    
732     FUNCTION {format.vol.num.pages}
733     { volume field.or.null
734     number empty$
735     'skip$
736     {
737     "(" number * ")" * *
738     volume empty$
739     { "there's a number but no volume in " cite$ * warning$ }
740     'skip$
741     if$
742     }
743     if$
744     format.journal.pages
745     }
746    
747     FUNCTION {format.chapter.pages}
748     { chapter empty$
749     'format.pages
750     { type empty$
751     { bbl.chapter }
752     { type "l" change.case$ }
753     if$
754     chapter tie.or.space.connect
755     pages empty$
756     'skip$
757     { ", " * format.pages * }
758     if$
759     }
760     if$
761     }
762    
763     FUNCTION {format.in.ed.booktitle}
764     { booktitle empty$
765     { "" }
766     { editor empty$
767     { word.in booktitle emphasize * }
768     { word.in format.in.editors * ", " *
769     booktitle emphasize * }
770     if$
771     }
772     if$
773     }
774    
775     FUNCTION {empty.misc.check}
776     { author empty$ title empty$ howpublished empty$
777     month empty$ year empty$ note empty$
778     and and and and and
779     key empty$ not and
780     { "all relevant fields are empty in " cite$ * warning$ }
781     'skip$
782     if$
783     }
784    
785     FUNCTION {format.thesis.type}
786     { type empty$
787     'skip$
788     { pop$
789     type "t" change.case$
790     }
791     if$
792     }
793    
794     FUNCTION {format.tr.number}
795     { type empty$
796     { bbl.techrep }
797     'type
798     if$
799     number empty$
800     { "t" change.case$ }
801     { number tie.or.space.connect }
802     if$
803     }
804    
805     FUNCTION {format.article.crossref}
806     {
807     key empty$
808     { journal empty$
809     { "need key or journal for " cite$ * " to crossref " * crossref *
810     warning$
811     ""
812     }
813     { word.in journal emphasize * }
814     if$
815     }
816     { word.in key * " " *}
817     if$
818     " \cite{" * crossref * "}" *
819     }
820    
821     FUNCTION {format.crossref.editor}
822     { editor #1 "{vv~}{ll}" format.name$
823     editor num.names$ duplicate$
824     #2 >
825     { pop$ " " * "et~al." emphasize * }
826     { #2 <
827     'skip$
828     { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
829     { " " * "et~al." emphasize * }
830     { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ * }
831     if$
832     }
833     if$
834     }
835     if$
836     }
837    
838     FUNCTION {format.book.crossref}
839     { volume empty$
840     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
841     word.in
842     }
843     { bbl.volume capitalize
844     volume tie.or.space.connect
845     bbl.of space.word *
846     }
847     if$
848     editor empty$
849     editor field.or.null author field.or.null =
850     or
851     { key empty$
852     { series empty$
853     { "need editor, key, or series for " cite$ * " to crossref " *
854     crossref * warning$
855     "" *
856     }
857     { series emphasize * }
858     if$
859     }
860     { key * }
861     if$
862     }
863     { format.crossref.editor * }
864     if$
865     " \cite{" * crossref * "}" *
866     }
867    
868     FUNCTION {format.incoll.inproc.crossref}
869     {
870     editor empty$
871     editor field.or.null author field.or.null =
872     or
873     { key empty$
874     { booktitle empty$
875     { "need editor, key, or booktitle for " cite$ * " to crossref " *
876     crossref * warning$
877     ""
878     }
879     { word.in booktitle emphasize * }
880     if$
881     }
882     { word.in key * " " *}
883     if$
884     }
885     { word.in format.crossref.editor * " " *}
886     if$
887     " \cite{" * crossref * "}" *
888     }
889    
890     FUNCTION {format.publisher}
891     { publisher empty$
892     { "empty publisher in " cite$ * warning$ }
893     'skip$
894     if$
895     ""
896     address empty$ publisher empty$ and
897     'skip$
898     {
899     publisher empty$
900     { address empty$
901     'skip$
902     { address * }
903     if$
904     }
905     { publisher *
906     address empty$
907     'skip$
908     { ", " * address * }
909     if$
910     }
911     if$
912     }
913     if$
914     output
915     }
916    
917     FUNCTION {article}
918     { output.bibitem
919     format.authors "author" output.check
920     format.title "title" output.check
921     new.sentence
922     crossref missing$
923     { journal
924     emphasize
925     "journal" output.check
926     format.vol.num.pages output
927     format.date "year" output.check
928     }
929     { format.article.crossref output.nonnull
930     format.pages output
931     }
932     if$
933     note output
934     fin.entry
935     }
936    
937     FUNCTION {book}
938     { output.bibitem
939     author empty$
940     { format.editors "author and editor" output.check
941     }
942     { format.authors output.nonnull
943     crossref missing$
944     { "author and editor" editor either.or.check }
945     'skip$
946     if$
947     }
948     if$
949     format.btitle "title" output.check
950     crossref missing$
951     { format.bvolume output
952     new.sentence
953     format.number.series output
954     format.publisher
955     }
956     {
957     new.sentence
958     format.book.crossref output.nonnull
959     }
960     if$
961     format.edition output
962     format.date "year" output.check
963     note output
964     fin.entry
965     }
966    
967     FUNCTION {booklet}
968     { output.bibitem
969     format.authors output
970     format.title "title" output.check
971     new.sentence
972     howpublished output
973     address output
974     format.date output
975     note output
976     fin.entry
977     }
978    
979     FUNCTION {inbook}
980     { output.bibitem
981     author empty$
982     { format.editors "author and editor" output.check
983     }
984     { format.authors output.nonnull
985     crossref missing$
986     { "author and editor" editor either.or.check }
987     'skip$
988     if$
989     }
990     if$
991     format.btitle "title" output.check
992     crossref missing$
993     {
994     format.bvolume output
995     format.chapter.pages "chapter and pages" output.check
996     new.sentence
997     format.number.series output
998     format.publisher
999     }
1000     {
1001     format.chapter.pages "chapter and pages" output.check
1002     new.sentence
1003     format.book.crossref output.nonnull
1004     }
1005     if$
1006     format.edition output
1007     format.date "year" output.check
1008     note output
1009     fin.entry
1010     }
1011    
1012     FUNCTION {incollection}
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.chapter.pages output
1022     format.publisher
1023     format.edition output
1024     format.date "year" output.check
1025     }
1026     { format.incoll.inproc.crossref output.nonnull
1027     format.chapter.pages output
1028     }
1029     if$
1030     note output
1031     fin.entry
1032     }
1033    
1034     FUNCTION {inproceedings}
1035     { output.bibitem
1036     format.authors "author" output.check
1037     format.title "title" output.check
1038     new.sentence
1039     crossref missing$
1040     { format.in.ed.booktitle "booktitle" output.check
1041     format.bvolume output
1042     format.number.series output
1043     format.pages output
1044     publisher empty$
1045     { organization output
1046     address output
1047     }
1048     { organization output
1049     format.publisher
1050     }
1051     if$
1052     format.date "year" output.check
1053     }
1054     { format.incoll.inproc.crossref output.nonnull
1055     format.pages output
1056     }
1057     if$
1058     note output
1059     fin.entry
1060     }
1061    
1062     FUNCTION {conference} { inproceedings }
1063    
1064     FUNCTION {manual}
1065     { output.bibitem
1066     author empty$
1067     { organization empty$
1068     'skip$
1069     { organization output.nonnull
1070     address output
1071     }
1072     if$
1073     }
1074     { format.authors output.nonnull }
1075     if$
1076     format.btitle "title" output.check
1077     new.sentence
1078     author empty$
1079     { organization empty$
1080     {
1081     address output
1082     }
1083     'skip$
1084     if$
1085     }
1086     {
1087     organization output
1088     address output
1089     }
1090     if$
1091     format.edition output
1092     format.date output
1093     note output
1094     fin.entry
1095     }
1096    
1097     FUNCTION {mastersthesis}
1098     { output.bibitem
1099     format.authors "author" output.check
1100     format.btitle "title" output.check
1101     new.sentence
1102     bbl.mthesis format.thesis.type output.nonnull
1103     school "school" output.check
1104     address output
1105     format.date "year" output.check
1106     note output
1107     fin.entry
1108     }
1109    
1110     FUNCTION {misc}
1111     { output.bibitem
1112     format.authors output
1113     format.title output
1114     new.sentence
1115     howpublished output
1116     format.date output
1117     note output
1118     fin.entry
1119     empty.misc.check
1120     }
1121    
1122     FUNCTION {phdthesis}
1123     { output.bibitem
1124     format.authors "author" output.check
1125     format.btitle "title" output.check
1126     new.sentence
1127     bbl.phdthesis format.thesis.type output.nonnull
1128     school "school" output.check
1129     address output
1130     format.date "year" output.check
1131     note output
1132     fin.entry
1133     }
1134    
1135     FUNCTION {proceedings}
1136     { output.bibitem
1137     editor empty$
1138     { organization output }
1139     { format.editors output.nonnull }
1140     if$
1141     format.btitle "title" output.check
1142     format.bvolume output
1143     format.number.series output
1144     address empty$
1145     { editor empty$
1146     { publisher new.sentence.checka }
1147     { organization publisher new.sentence.checkb
1148     organization output
1149     }
1150     if$
1151     publisher output
1152     format.date "year" output.check
1153     }
1154     { address output.nonnull
1155     format.date "year" output.check
1156     editor empty$
1157     'skip$
1158     { organization output }
1159     if$
1160     publisher output
1161     }
1162     if$
1163     note output
1164     fin.entry
1165     }
1166    
1167     FUNCTION {techreport}
1168     { output.bibitem
1169     format.authors "author" output.check
1170     format.title "title" output.check
1171     new.sentence
1172     format.tr.number output.nonnull
1173     institution "institution" output.check
1174     address output
1175     format.date "year" output.check
1176     note output
1177     fin.entry
1178     }
1179    
1180     FUNCTION {unpublished}
1181     { output.bibitem
1182     format.authors "author" output.check
1183     format.title "title" output.check
1184     new.sentence
1185     note "note" output.check
1186     fin.entry
1187     }
1188    
1189     FUNCTION {default.type} { misc }
1190    
1191 chrisfen 2957 %READ
1192 chrisfen 2918
1193     FUNCTION {sortify}
1194     { purify$
1195     "l" change.case$
1196     }
1197    
1198     INTEGERS { len }
1199    
1200     FUNCTION {chop.word}
1201     { 's :=
1202     'len :=
1203     s #1 len substring$ =
1204     { s len #1 + global.max$ substring$ }
1205     's
1206     if$
1207     }
1208    
1209     FUNCTION {sort.format.names}
1210     { 's :=
1211     #1 'nameptr :=
1212     ""
1213     s num.names$ 'numnames :=
1214     numnames 'namesleft :=
1215     { namesleft #0 > }
1216     { s nameptr
1217     "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
1218     format.name$ 't :=
1219     nameptr #1 >
1220     {
1221     " " *
1222     namesleft #1 = t "others" = and
1223     { "aaaaa" * }
1224     { t sortify * }
1225     if$
1226     }
1227     { t sortify * }
1228     if$
1229     nameptr #1 + 'nameptr :=
1230     namesleft #1 - 'namesleft :=
1231     }
1232     while$
1233     }
1234    
1235     FUNCTION {sort.format.title}
1236     { 't :=
1237     "A " #2
1238     "An " #3
1239     "The " #4 t chop.word
1240     chop.word
1241     chop.word
1242     sortify
1243     #1 global.max$ substring$
1244     }
1245    
1246     FUNCTION {author.sort}
1247     { author empty$
1248     { key empty$
1249     { "to sort, need author or key in " cite$ * warning$
1250     ""
1251     }
1252     { key sortify }
1253     if$
1254     }
1255     { author sort.format.names }
1256     if$
1257     }
1258    
1259     FUNCTION {author.editor.sort}
1260     { author empty$
1261     { editor empty$
1262     { key empty$
1263     { "to sort, need author, editor, or key in " cite$ * warning$
1264     ""
1265     }
1266     { key sortify }
1267     if$
1268     }
1269     { editor sort.format.names }
1270     if$
1271     }
1272     { author sort.format.names }
1273     if$
1274     }
1275    
1276     FUNCTION {author.organization.sort}
1277     { author empty$
1278     { organization empty$
1279     { key empty$
1280     { "to sort, need author, organization, or key in " cite$ * warning$
1281     ""
1282     }
1283     { key sortify }
1284     if$
1285     }
1286     { "The " #4 organization chop.word sortify }
1287     if$
1288     }
1289     { author sort.format.names }
1290     if$
1291     }
1292    
1293     FUNCTION {editor.organization.sort}
1294     { editor empty$
1295     { organization empty$
1296     { key empty$
1297     { "to sort, need editor, organization, or key in " cite$ * warning$
1298     ""
1299     }
1300     { key sortify }
1301     if$
1302     }
1303     { "The " #4 organization chop.word sortify }
1304     if$
1305     }
1306     { editor sort.format.names }
1307     if$
1308     }
1309    
1310     FUNCTION {presort}
1311     { type$ "book" =
1312     type$ "inbook" =
1313     or
1314     'author.editor.sort
1315     { type$ "proceedings" =
1316     'editor.organization.sort
1317     { type$ "manual" =
1318     'author.organization.sort
1319     'author.sort
1320     if$
1321     }
1322     if$
1323     }
1324     if$
1325     " "
1326     *
1327     year field.or.null sortify
1328     *
1329     " "
1330     *
1331     title field.or.null
1332     sort.format.title
1333     *
1334     #1 entry.max$ substring$
1335     'sort.key$ :=
1336     }
1337    
1338 chrisfen 2957 %%ITERATE {presort}
1339 chrisfen 2918
1340 chrisfen 2957 %SORT
1341 chrisfen 2918
1342 chrisfen 2957 READ
1343    
1344 chrisfen 2918 STRINGS { longest.label }
1345    
1346     INTEGERS { number.label longest.label.width }
1347    
1348     FUNCTION {initialize.longest.label}
1349     { "" 'longest.label :=
1350     #1 'number.label :=
1351     #0 'longest.label.width :=
1352     }
1353    
1354     FUNCTION {longest.label.pass}
1355     { number.label int.to.str$ 'label :=
1356     number.label #1 + 'number.label :=
1357     label width$ longest.label.width >
1358     { label 'longest.label :=
1359     label width$ 'longest.label.width :=
1360     }
1361     'skip$
1362     if$
1363     }
1364    
1365     EXECUTE {initialize.longest.label}
1366    
1367     ITERATE {longest.label.pass}
1368    
1369     FUNCTION {begin.bib}
1370     { preamble$ empty$
1371     'skip$
1372     { preamble$ write$ newline$ }
1373     if$
1374     "\begin{thebibliography}{" longest.label * "}" *
1375     write$ newline$
1376     }
1377    
1378     EXECUTE {begin.bib}
1379    
1380     EXECUTE {init.state.consts}
1381    
1382     ITERATE {call.type$}
1383    
1384     FUNCTION {end.bib}
1385     { newline$
1386     "\end{thebibliography}" write$ newline$
1387     }
1388    
1389     EXECUTE {end.bib}
1390     %% End of customized bst file
1391     %%
1392     %% End of file `nddiss2e.bst'.