ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/chrisDissertation/nddiss2e.bst
Revision: 2987
Committed: Wed Aug 30 22:36:06 2006 UTC (17 years, 10 months ago) by chrisfen
File size: 25060 byte(s)
Log Message:
Imported sources

File Contents

# Content
1 %%
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 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 `nddiss2e.bst'.