ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/chuckDissertation/nddiss2e.bst
(Generate patch)

Comparing trunk/chuckDissertation/nddiss2e.bst (file contents):
Revision 3483 by chuckv, Tue Jan 13 14:39:50 2009 UTC vs.
Revision 3496 by chuckv, Wed Apr 8 19:13:41 2009 UTC

# Line 1 | Line 1
1   %%
2 < %% This is file `nddiss2e.bst',
3 < %% generated with the docstrip utility.
2 > %% File: `nddiss2e.bst'
3 > %% A modification of `abbrvnat.bst' for use with nddiss2e class file.
4 > %% Modified by Sameer Vijay
5   %%
6 < %% The original source files were:
6 > %% File: `abbrvnat.bst'
7 > %% A modification of `abbrv.bst' for use with natbib package
8   %%
9 < %% merlin.mbs  (with options: `,nm-init,yr-par,volp-sp,blk-tit,jabr,and-xcom,etal-it')
10 < %% ----------------------------------------
11 < %% *** Bibliography style for dissertations at Notre Dame ***
12 < %%
13 < %-------------------------------------------------------------------
14 < % The original source file contains the following version information:
15 < % \ProvidesFile{merlin.mbs}[1996/12/16 3.82 (PWD)]
9 > %% Copyright 1993-2005 Patrick W Daly
10 > %% Max-Planck-Institut f\"ur Sonnensystemforschung
11 > %% Max-Planck-Str. 2
12 > %% D-37191 Katlenburg-Lindau
13 > %% Germany
14 > %% E-mail: daly@mps.mpg.de
15 > %%
16 > %% This program can be redistributed and/or modified under the terms
17 > %% of the LaTeX Project Public License Distributed from CTAN
18 > %% archives in directory macros/latex/base/lppl.txt; either
19 > %% version 1 of the License, or any later version.
20 > %%
21 > % Version and source file information:
22 > % \ProvidesFile{natbst.mbs}[2005/01/07 1.8 (PWD)]
23   %
24 < % NOTICE:
25 < % This file may be used for non-profit purposes.
26 < % It may not be distributed in exchange for money,
18 < %   other than distribution costs.
24 > % BibTeX `plainnat' family
25 > %   version 0.99b for BibTeX versions 0.99a or later,
26 > %   for LaTeX versions 2.09 and 2e.
27   %
28 < % The author provides it `as is' and does not guarantee it in any way.
28 > % For use with the `natbib.sty' package; emulates the corresponding
29 > %   member of the `plain' family, but with author-year citations.
30   %
31 < % Copyright (C) 1994, 1995, 1996 Patrick W. Daly
32 < %-------------------------------------------------------------------
33 < %   For use with BibTeX version 0.99a or later
34 < %-------------------------------------------------------------------
35 < % This bibliography style file is intended for texts in ENGLISH
36 < % This is a numerical citation style, and as such is standard LaTeX.
37 < % It requires no extra package to interface to the main text.
38 < % The form of the \bibitem entries is
39 < %   \bibitem{key}...
40 < % Usage of \cite is as follows:
41 < %   \cite{key} ==>>          [#]
42 < %   \cite[chap. 2]{key} ==>> [#, chap. 2]
43 < % where # is a number determined by the ordering in the reference list.
44 < % The order in the reference list is alphabetical by authors.
45 < %---------------------------------------------------------------------
46 <
31 > % With version 6.0 of `natbib.sty', it may also be used for numerical
32 > %   citations, while retaining the commands \citeauthor, \citefullauthor,
33 > %   and \citeyear to print the corresponding information.
34 > %
35 > % For version 7.0 of `natbib.sty', the KEY field replaces missing
36 > %   authors/editors, and the date is left blank in \bibitem.
37 > %
38 > % Includes field EID for the sequence/citation number of electronic journals
39 > %  which is used instead of page numbers.
40 > %
41 > % Includes fields ISBN and ISSN.
42 > %
43 > % Includes field URL for Internet addresses.
44 > %
45 > % Includes field DOI for Digital Object Idenfifiers.
46 > %
47 > % Works best with the url.sty package of Donald Arseneau.
48 > %
49 > % Works with identical authors and year are further sorted by
50 > %   citation key, to preserve any natural sequence.
51 > %
52   ENTRY
53    { address
54      author
55      booktitle
56      chapter
57 +    doi
58 +    eid
59      edition
60      editor
61      howpublished
62      institution
63 +    isbn
64 +    issn
65      journal
66      key
67      month
# Line 56 | Line 74 | ENTRY
74      series
75      title
76      type
77 +    url
78      volume
79      year
80    }
81    {}
82 <  { label }
82 >  { label extra.label sort.label short.list }
83  
84   INTEGERS { output.state before.all mid.sentence after.sentence after.block }
85  
# Line 133 | Line 152 | FUNCTION {new.sentence}
152    if$
153   }
154  
136 FUNCTION {add.blank}
137 {  " " * before.all 'output.state :=
138 }
139
140 FUNCTION {date.block}
141 {
142  skip$
143 }
144
155   FUNCTION {not}
156   {   { #0 }
157      { #1 }
# Line 160 | Line 170 | FUNCTION {or}
170    if$
171   }
172  
163 FUNCTION {non.stop}
164 { duplicate$
165   "}" * add.period$
166   #-1 #1 substring$ "." =
167 }
168
173   FUNCTION {new.block.checka}
174   { empty$
175      'skip$
# Line 208 | Line 212 | FUNCTION {emphasize}
212   FUNCTION {emphasize}
213   { duplicate$ empty$
214      { pop$ "" }
215 <    { "{\em " swap$ * "\/}" * }
215 >    { "\emph{" swap$ * "}" * }
216    if$
217   }
218  
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
219   INTEGERS { nameptr namesleft numnames }
220  
221   FUNCTION {format.names}
# Line 390 | Line 224 | FUNCTION {format.names}
224    s num.names$ 'numnames :=
225    numnames 'namesleft :=
226      { namesleft #0 > }
227 <    { s nameptr
394 <      "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
227 >    { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
228        nameptr #1 >
229 <        {
397 <          namesleft #1 >
229 >        { namesleft #1 >
230              { ", " * t * }
231 <            {
231 >            { numnames #2 >
232 >                { "," * }
233 >                'skip$
234 >              if$
235                t "others" =
236 <                { " " * "et~al." emphasize * }
237 <                { bbl.and space.word * t * }
236 >                { " et~al." * }
237 >                { " and " * t * }
238                if$
239              }
240            if$
# Line 412 | Line 247 | FUNCTION {format.names}
247    while$
248   }
249  
250 < FUNCTION {format.names.ed}
251 < { 's :=
250 > FUNCTION {format.key}
251 > { empty$
252 >    { key field.or.null }
253 >    { "" }
254 >  if$
255 > }
256 >
257 > FUNCTION {format.authors}
258 > { author empty$
259 >    { "" }
260 >    { author format.names }
261 >  if$
262 > }
263 >
264 > FUNCTION {format.editors}
265 > { editor empty$
266 >    { "" }
267 >    { editor format.names
268 >      editor num.names$ #1 >
269 >        { ", editors" * }
270 >        { ", editor" * }
271 >      if$
272 >    }
273 >  if$
274 > }
275 >
276 > FUNCTION {format.isbn}
277 > { isbn empty$
278 >    { "" }
279 >    { new.block "ISBN " isbn * }
280 >  if$
281 > }
282 >
283 > FUNCTION {format.issn}
284 > { issn empty$
285 >    { "" }
286 >    { new.block "ISSN " issn * }
287 >  if$
288 > }
289 >
290 > FUNCTION {format.url}
291 > { url empty$
292 >    { "" }
293 >    { new.block "URL \url{" url * "}" * }
294 >  if$
295 > }
296 >
297 > FUNCTION {format.doi}
298 > { doi empty$
299 >    { "" }
300 >    { new.block "\doi{" doi * "}" * }
301 >  if$
302 > }
303 >
304 > FUNCTION {format.title}
305 > { title empty$
306 >    { "" }
307 >    { title "t" change.case$ }
308 >  if$
309 > }
310 >
311 > FUNCTION {format.full.names}
312 > {'s :=
313    #1 'nameptr :=
314    s num.names$ 'numnames :=
315    numnames 'namesleft :=
316      { namesleft #0 > }
317      { s nameptr
318 <      "{f.~}{vv~}{ll}{, jj}"
423 <      format.name$ 't :=
318 >      "{vv~}{ll}" format.name$ 't :=
319        nameptr #1 >
320          {
321            namesleft #1 >
322              { ", " * t * }
323              {
324 +              numnames #2 >
325 +                { "," * }
326 +                'skip$
327 +              if$
328                t "others" =
329 <                { " " * "et~al." emphasize * }
330 <                { bbl.and space.word * t * }
329 >                { " et~al." * }
330 >                { " and " * t * }
331                if$
332              }
333            if$
# Line 441 | Line 340 | FUNCTION {format.names.ed}
340    while$
341   }
342  
343 < FUNCTION {format.authors}
343 > FUNCTION {author.editor.full}
344   { author empty$
345 <    { "" }
346 <    {
347 <      author format.names
345 >    { editor empty$
346 >        { "" }
347 >        { editor format.full.names }
348 >      if$
349      }
350 +    { author format.full.names }
351    if$
352   }
353  
354 < FUNCTION {format.editors}
355 < { editor empty$
354 > FUNCTION {author.full}
355 > { author empty$
356      { "" }
357 <    {
457 <      editor format.names
458 <      editor num.names$ #1 >
459 <        { ", " * bbl.editors * }
460 <        { ", " * bbl.editor * }
461 <      if$
462 <    }
357 >    { author format.full.names }
358    if$
359   }
360  
361 < FUNCTION {format.in.editors}
361 > FUNCTION {editor.full}
362   { editor empty$
363      { "" }
364 <    { editor format.names.ed
470 <      editor num.names$ #1 >
471 <        { ", " * bbl.editors * }
472 <        { ", " * bbl.editor * }
473 <      if$
474 <    }
364 >    { editor format.full.names }
365    if$
366   }
367  
368 < FUNCTION {format.title}
369 < { title empty$
370 <    { "" }
371 <    { title "t" change.case$
368 > FUNCTION {make.full.names}
369 > { type$ "book" =
370 >  type$ "inbook" =
371 >  or
372 >    'author.editor.full
373 >    { type$ "proceedings" =
374 >        'editor.full
375 >        'author.full
376 >      if$
377      }
378    if$
379   }
380  
381   FUNCTION {output.bibitem}
382   { newline$
383 <  "\bibitem{" write$
383 >  "\bibitem[" write$
384 >  label write$
385 >  ")" make.full.names duplicate$ short.list =
386 >     { pop$ }
387 >     { * }
388 >   if$
389 >  "]{" * write$
390    cite$ write$
391    "}" write$
392    newline$
# Line 518 | Line 419 | FUNCTION {n.dashify}
419    while$
420   }
421  
521 FUNCTION {word.in}
522 { bbl.in capitalize
523  " " * }
524
422   FUNCTION {format.date}
423 < { year empty$
424 <    { month empty$
425 <        { "" }
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$
423 > { year duplicate$ empty$
424 >    { "empty year in " cite$ * warning$
425 >       pop$ "" }
426      'skip$
427 <    {
428 <    before.all 'output.state :=
429 <    " (" swap$ * ")" *
427 >  if$
428 >  month empty$
429 >    'skip$
430 >    { month
431 >      " " * swap$ *
432      }
433    if$
434 +  extra.label *
435   }
436  
437   FUNCTION {format.btitle}
# Line 568 | Line 456 | FUNCTION {format.bvolume}
456   FUNCTION {format.bvolume}
457   { volume empty$
458      { "" }
459 <    { bbl.volume volume tie.or.space.connect
459 >    { "volume" volume tie.or.space.connect
460        series empty$
461          'skip$
462 <        { bbl.of space.word * series emphasize * }
462 >        { " of " * series emphasize * }
463        if$
464        "volume and number" number either.or.check
465      }
# Line 583 | Line 471 | FUNCTION {format.number.series}
471      { number empty$
472          { series field.or.null }
473          { output.state mid.sentence =
474 <            { bbl.number }
475 <            { bbl.number capitalize }
474 >            { "number" }
475 >            { "Number" }
476            if$
477            number tie.or.space.connect
478            series empty$
479              { "there's a number but no series in " cite$ * warning$ }
480 <            { bbl.in space.word * series * }
480 >            { " in " * series * }
481            if$
482          }
483        if$
# Line 598 | Line 486 | FUNCTION {format.number.series}
486    if$
487   }
488  
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
489   FUNCTION {format.edition}
490   { edition empty$
491      { "" }
492      { output.state mid.sentence =
493 <        { convert.edition "l" change.case$ " " * bbl.edition * }
494 <        { convert.edition "t" change.case$ " " * bbl.edition * }
493 >        { edition "l" change.case$ " edition" * }
494 >        { edition "t" change.case$ " edition" * }
495        if$
496      }
497    if$
# Line 688 | Line 523 | FUNCTION {format.pages}
523   { pages empty$
524      { "" }
525      { pages multi.page.check
526 <        { bbl.pages pages n.dashify tie.or.space.connect }
527 <        { bbl.page pages tie.or.space.connect }
526 >        { "pages" pages n.dashify tie.or.space.connect }
527 >        { "page" pages tie.or.space.connect }
528        if$
529      }
530    if$
531   }
532  
533 < FUNCTION {format.journal.pages}
534 < {
533 > FUNCTION {format.eid}
534 > { eid empty$
535 >    { "" }
536 >    { "art." eid tie.or.space.connect }
537 >  if$
538 > }
539 >
540 > FUNCTION {format.vol.num.pages}
541 > { volume field.or.null
542 >  number empty$
543 >    'skip$
544 >    { "\penalty0 (" number * ")" * *
545 >      volume empty$
546 >        { "there's a number but no volume in " cite$ * warning$ }
547 >        'skip$
548 >      if$
549 >    }
550 >  if$
551    pages empty$
552      'skip$
553      { duplicate$ empty$
554          { pop$ format.pages }
555 <        { ": " * pages n.dashify * }
555 >        { ":\penalty0 " * pages n.dashify * }
556        if$
557      }
558    if$
559   }
560  
561 < FUNCTION {format.vol.num.pages}
561 > FUNCTION {format.vol.num.eid}
562   { volume field.or.null
563    number empty$
564      'skip$
565 <    {
715 <      "(" number * ")" * *
565 >    { "\penalty0 (" number * ")" * *
566        volume empty$
567          { "there's a number but no volume in " cite$ * warning$ }
568          'skip$
569        if$
570      }
571    if$
572 <  format.journal.pages
572 >  eid empty$
573 >    'skip$
574 >    { duplicate$ empty$
575 >        { pop$ format.eid }
576 >        { ":\penalty0 " * eid * }
577 >      if$
578 >    }
579 >  if$
580   }
581  
582   FUNCTION {format.chapter.pages}
583   { chapter empty$
584      'format.pages
585      { type empty$
586 <        { bbl.chapter }
586 >        { "chapter" }
587          { type "l" change.case$ }
588        if$
589        chapter tie.or.space.connect
# Line 742 | Line 599 | FUNCTION {format.in.ed.booktitle}
599   { booktitle empty$
600      { "" }
601      { editor empty$
602 <        { word.in booktitle emphasize * }
603 <        { word.in format.in.editors * ", " *
747 <          booktitle emphasize * }
602 >        { "In " booktitle emphasize * }
603 >        { "In " format.editors * ", " * booktitle emphasize * }
604        if$
605      }
606    if$
# Line 771 | Line 627 | FUNCTION {format.tr.number}
627  
628   FUNCTION {format.tr.number}
629   { type empty$
630 <    { bbl.techrep }
630 >    { "Technical Report" }
631      'type
632    if$
633    number empty$
# Line 781 | Line 637 | FUNCTION {format.article.crossref}
637   }
638  
639   FUNCTION {format.article.crossref}
640 < {
785 <  key empty$
640 > { key empty$
641      { journal empty$
642          { "need key or journal for " cite$ * " to crossref " * crossref *
643            warning$
644            ""
645          }
646 <        { 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 <        }
646 >        { "In \emph{" journal * "}" * }
647        if$
648      }
649 +    { "In " key * }
650    if$
651 +  " \citep{" * crossref * "}" *
652   }
653  
654   FUNCTION {format.book.crossref}
655   { volume empty$
656      { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
657 <      word.in
657 >      "In "
658      }
659 <    { bbl.volume capitalize
660 <      volume tie.or.space.connect
823 <      bbl.of space.word *
659 >    { "Volume" volume tie.or.space.connect
660 >      " of " *
661      }
662    if$
663    editor empty$
# Line 832 | Line 669 | FUNCTION {format.book.crossref}
669                crossref * warning$
670                "" *
671              }
672 <            { series emphasize * }
672 >            { "\emph{" * series * "}" * }
673            if$
674          }
675          { key * }
676        if$
677      }
678 <    { format.crossref.editor * }
678 >    'skip$
679    if$
680 <  " \cite{" * crossref * "}" *
680 >  ", \citet{" * crossref * "}" *
681   }
682  
683   FUNCTION {format.incoll.inproc.crossref}
684 < {
848 <  editor empty$
684 > { editor empty$
685    editor field.or.null author field.or.null =
686    or
687      { key empty$
# Line 854 | Line 690 | FUNCTION {format.incoll.inproc.crossref}
690                crossref * warning$
691                ""
692              }
693 <            { word.in booktitle emphasize * }
693 >            { "In \emph{" booktitle * "}" * }
694            if$
695          }
696 <        { word.in key * " " *}
696 >        { "In " key * }
697        if$
698      }
699 <    { word.in format.crossref.editor * " " *}
699 >    { "In " }
700    if$
701 <  " \cite{" * crossref * "}" *
701 >  " \citet{" * crossref * "}" *
702   }
703  
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
704   FUNCTION {article}
705   { output.bibitem
706    format.authors "author" output.check
707 <  format.title "title" output.check
708 <  new.sentence
707 >  author format.key output
708 >  new.block
709 > %%%  format.title "title" output.check
710 >  new.block
711    crossref missing$
712 <    { journal
713 <      emphasize
714 <      "journal" output.check
715 <      format.vol.num.pages output
712 >    { journal emphasize "journal" output.check
713 >      eid empty$
714 >        { format.vol.num.pages output }
715 >        { format.vol.num.eid output }
716 >      if$
717        format.date "year" output.check
718      }
719      { format.article.crossref output.nonnull
720 <      format.pages output
720 >      eid empty$
721 >        { format.pages output }
722 >        { format.eid output }
723 >      if$
724      }
725    if$
726 +  format.issn output
727 +  format.doi output
728 +  format.url output
729 +  new.block
730    note output
731    fin.entry
732   }
# Line 916 | Line 735 | FUNCTION {book}
735   { output.bibitem
736    author empty$
737      { format.editors "author and editor" output.check
738 +      editor format.key output
739      }
740      { format.authors output.nonnull
741        crossref missing$
# Line 924 | Line 744 | FUNCTION {book}
744        if$
745      }
746    if$
747 +  new.block
748    format.btitle "title" output.check
749    crossref missing$
750      { format.bvolume output
751 <  new.sentence
751 >      new.block
752        format.number.series output
753 <      format.publisher
753 >      new.sentence
754 >      publisher "publisher" output.check
755 >      address output
756      }
757 <    {
935 <  new.sentence
757 >    { new.block
758        format.book.crossref output.nonnull
759      }
760    if$
761    format.edition output
762    format.date "year" output.check
763 +  format.isbn output
764 +  format.doi output
765 +  format.url output
766 +  new.block
767    note output
768    fin.entry
769   }
# Line 945 | Line 771 | FUNCTION {booklet}
771   FUNCTION {booklet}
772   { output.bibitem
773    format.authors output
774 +  author format.key output
775 +  new.block
776    format.title "title" output.check
777 <  new.sentence
777 >  howpublished address new.block.checkb
778    howpublished output
779    address output
780    format.date output
781 +  format.isbn output
782 +  format.doi output
783 +  format.url output
784 +  new.block
785    note output
786    fin.entry
787   }
# Line 958 | Line 790 | FUNCTION {inbook}
790   { output.bibitem
791    author empty$
792      { format.editors "author and editor" output.check
793 +      editor format.key output
794      }
795      { format.authors output.nonnull
796        crossref missing$
# Line 966 | Line 799 | FUNCTION {inbook}
799        if$
800      }
801    if$
802 +  new.block
803    format.btitle "title" output.check
804    crossref missing$
805 <    {
972 <      format.bvolume output
805 >    { format.bvolume output
806        format.chapter.pages "chapter and pages" output.check
807 <  new.sentence
807 >      new.block
808        format.number.series output
809 <      format.publisher
809 >      new.sentence
810 >      publisher "publisher" output.check
811 >      address output
812      }
813 <    {
814 <      format.chapter.pages "chapter and pages" output.check
980 <  new.sentence
813 >    { format.chapter.pages "chapter and pages" output.check
814 >      new.block
815        format.book.crossref output.nonnull
816      }
817    if$
818    format.edition output
819    format.date "year" output.check
820 +  format.isbn output
821 +  format.doi output
822 +  format.url output
823 +  new.block
824    note output
825    fin.entry
826   }
# Line 990 | Line 828 | FUNCTION {incollection}
828   FUNCTION {incollection}
829   { output.bibitem
830    format.authors "author" output.check
831 +  author format.key output
832 +  new.block
833    format.title "title" output.check
834 <  new.sentence
834 >  new.block
835    crossref missing$
836      { format.in.ed.booktitle "booktitle" output.check
837        format.bvolume output
838        format.number.series output
839        format.chapter.pages output
840 <      format.publisher
840 >      new.sentence
841 >      publisher "publisher" output.check
842 >      address output
843        format.edition output
844        format.date "year" output.check
845      }
# Line 1005 | Line 847 | FUNCTION {incollection}
847        format.chapter.pages output
848      }
849    if$
850 +  format.isbn output
851 +  format.doi output
852 +  format.url output
853 +  new.block
854    note output
855    fin.entry
856   }
# Line 1012 | Line 858 | FUNCTION {inproceedings}
858   FUNCTION {inproceedings}
859   { output.bibitem
860    format.authors "author" output.check
861 +  author format.key output
862 +  new.block
863    format.title "title" output.check
864 <  new.sentence
864 >  new.block
865    crossref missing$
866      { format.in.ed.booktitle "booktitle" output.check
867        format.bvolume output
868        format.number.series output
869        format.pages output
870 <      publisher empty$
871 <        { organization output
872 <          address output
870 >      address empty$
871 >        { organization publisher new.sentence.checkb
872 >          organization output
873 >          publisher output
874 >          format.date "year" output.check
875          }
876 <        { organization output
877 <          format.publisher
876 >        { address output.nonnull
877 >          format.date "year" output.check
878 >          new.sentence
879 >          organization output
880 >          publisher output
881          }
882        if$
1030      format.date "year" output.check
883      }
884      { format.incoll.inproc.crossref output.nonnull
885        format.pages output
886      }
887    if$
888 +  format.isbn output
889 +  format.doi output
890 +  format.url output
891 +  new.block
892    note output
893    fin.entry
894   }
# Line 1041 | Line 897 | FUNCTION {manual}
897  
898   FUNCTION {manual}
899   { output.bibitem
900 <  author empty$
901 <    { organization empty$
902 <        'skip$
1047 <        { organization output.nonnull
1048 <          address output
1049 <        }
1050 <      if$
1051 <    }
1052 <    { format.authors output.nonnull }
1053 <  if$
900 >  format.authors output
901 >  author format.key output
902 >  new.block
903    format.btitle "title" output.check
904 <  new.sentence
905 <  author empty$
906 <    { organization empty$
1058 <    {
1059 <          address output
1060 <        }
1061 <        'skip$
1062 <      if$
1063 <    }
1064 <    {
1065 <      organization output
1066 <      address output
1067 <    }
1068 <  if$
904 >  organization address new.block.checkb
905 >  organization output
906 >  address output
907    format.edition output
908    format.date output
909 +  format.url output
910 +  new.block
911    note output
912    fin.entry
913   }
# Line 1075 | Line 915 | FUNCTION {mastersthesis}
915   FUNCTION {mastersthesis}
916   { output.bibitem
917    format.authors "author" output.check
918 <  format.btitle "title" output.check
919 <  new.sentence
920 <  bbl.mthesis format.thesis.type output.nonnull
918 >  author format.key output
919 >  new.block
920 >  format.title "title" output.check
921 >  new.block
922 >  "Master's thesis" format.thesis.type output.nonnull
923    school "school" output.check
924    address output
925    format.date "year" output.check
926 +  format.url output
927 +  new.block
928    note output
929    fin.entry
930   }
# Line 1088 | Line 932 | FUNCTION {misc}
932   FUNCTION {misc}
933   { output.bibitem
934    format.authors output
935 +  author format.key output
936 +  title howpublished new.block.checkb
937    format.title output
938 <  new.sentence
938 >  howpublished new.block.checka
939    howpublished output
940    format.date output
941 +  format.issn output
942 +  format.url output
943 +  new.block
944    note output
945    fin.entry
946    empty.misc.check
# Line 1100 | Line 949 | FUNCTION {phdthesis}
949   FUNCTION {phdthesis}
950   { output.bibitem
951    format.authors "author" output.check
952 +  author format.key output
953 +  new.block
954    format.btitle "title" output.check
955 <  new.sentence
956 <  bbl.phdthesis format.thesis.type output.nonnull
955 >  new.block
956 >  "PhD thesis" format.thesis.type output.nonnull
957    school "school" output.check
958    address output
959    format.date "year" output.check
960 +  format.url output
961 +  new.block
962    note output
963    fin.entry
964   }
965  
966   FUNCTION {proceedings}
967   { output.bibitem
968 <  editor empty$
969 <    { organization output }
970 <    { format.editors output.nonnull }
1118 <  if$
968 >  format.editors output
969 >  editor format.key output
970 >  new.block
971    format.btitle "title" output.check
972    format.bvolume output
973    format.number.series output
974 <  address empty$
975 <    { editor empty$
976 <        { publisher new.sentence.checka }
977 <        { organization publisher new.sentence.checkb
978 <          organization output
979 <        }
980 <      if$
981 <      publisher output
982 <      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$
974 >  address output
975 >  format.date "year" output.check
976 >  new.sentence
977 >  organization output
978 >  publisher output
979 >  format.isbn output
980 >  format.doi output
981 >  format.url output
982 >  new.block
983    note output
984    fin.entry
985   }
# Line 1145 | Line 987 | FUNCTION {techreport}
987   FUNCTION {techreport}
988   { output.bibitem
989    format.authors "author" output.check
990 +  author format.key output
991 +  new.block
992    format.title "title" output.check
993 <  new.sentence
993 >  new.block
994    format.tr.number output.nonnull
995    institution "institution" output.check
996    address output
997    format.date "year" output.check
998 +  format.url output
999 +  new.block
1000    note output
1001    fin.entry
1002   }
# Line 1158 | Line 1004 | FUNCTION {unpublished}
1004   FUNCTION {unpublished}
1005   { output.bibitem
1006    format.authors "author" output.check
1007 +  author format.key output
1008 +  new.block
1009    format.title "title" output.check
1010 <  new.sentence
1010 >  format.url output
1011 >  new.block
1012    note "note" output.check
1013 +  format.date output
1014    fin.entry
1015   }
1016  
1017   FUNCTION {default.type} { misc }
1018 +
1019 +
1020 + MACRO {jan} {"Jan."}
1021 +
1022 + MACRO {feb} {"Feb."}
1023 +
1024 + MACRO {mar} {"Mar."}
1025  
1026 + MACRO {apr} {"Apr."}
1027 +
1028 + MACRO {may} {"May"}
1029 +
1030 + MACRO {jun} {"June"}
1031 +
1032 + MACRO {jul} {"July"}
1033 +
1034 + MACRO {aug} {"Aug."}
1035 +
1036 + MACRO {sep} {"Sept."}
1037 +
1038 + MACRO {oct} {"Oct."}
1039 +
1040 + MACRO {nov} {"Nov."}
1041 +
1042 + MACRO {dec} {"Dec."}
1043 +
1044 +
1045 +
1046 + MACRO {acmcs} {"ACM Comput. Surv."}
1047 +
1048 + MACRO {acta} {"Acta Inf."}
1049 +
1050 + MACRO {cacm} {"Commun. ACM"}
1051 +
1052 + MACRO {ibmjrd} {"IBM J. Res. Dev."}
1053 +
1054 + MACRO {ibmsj} {"IBM Syst.~J."}
1055 +
1056 + MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
1057 +
1058 + MACRO {ieeetc} {"IEEE Trans. Comput."}
1059 +
1060 + MACRO {ieeetcad}
1061 + {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
1062 +
1063 + MACRO {ipl} {"Inf. Process. Lett."}
1064 +
1065 + MACRO {jacm} {"J.~ACM"}
1066 +
1067 + MACRO {jcss} {"J.~Comput. Syst. Sci."}
1068 +
1069 + MACRO {scp} {"Sci. Comput. Programming"}
1070 +
1071 + MACRO {sicomp} {"SIAM J. Comput."}
1072 +
1073 + MACRO {tocs} {"ACM Trans. Comput. Syst."}
1074 +
1075 + MACRO {tods} {"ACM Trans. Database Syst."}
1076 +
1077 + MACRO {tog} {"ACM Trans. Gr."}
1078 +
1079 + MACRO {toms} {"ACM Trans. Math. Softw."}
1080 +
1081 + MACRO {toois} {"ACM Trans. Office Inf. Syst."}
1082 +
1083 + MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
1084 +
1085 + MACRO {tcs} {"Theoretical Comput. Sci."}
1086 +
1087 +
1088   READ
1089  
1090   FUNCTION {sortify}
# Line 1181 | Line 1100 | FUNCTION {chop.word}
1100    s #1 len substring$ =
1101      { s len #1 + global.max$ substring$ }
1102      's
1103 +  if$
1104 + }
1105 +
1106 + FUNCTION {format.lab.names}
1107 + { 's :=
1108 +  s #1 "{vv~}{ll}" format.name$
1109 +  s num.names$ duplicate$
1110 +  #2 >
1111 +    { pop$ " et~al." * }
1112 +    { #2 <
1113 +        'skip$
1114 +        { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1115 +            { " et~al." * }
1116 +            { " and " * s #2 "{vv~}{ll}" format.name$ * }
1117 +          if$
1118 +        }
1119 +      if$
1120 +    }
1121 +  if$
1122 + }
1123 +
1124 + FUNCTION {author.key.label}
1125 + { author empty$
1126 +    { key empty$
1127 +        { cite$ #1 #3 substring$ }
1128 +        'key
1129 +      if$
1130 +    }
1131 +    { author format.lab.names }
1132 +  if$
1133 + }
1134 +
1135 + FUNCTION {author.editor.key.label}
1136 + { author empty$
1137 +    { editor empty$
1138 +        { key empty$
1139 +            { cite$ #1 #3 substring$ }
1140 +            'key
1141 +          if$
1142 +        }
1143 +        { editor format.lab.names }
1144 +      if$
1145 +    }
1146 +    { author format.lab.names }
1147 +  if$
1148 + }
1149 +
1150 + FUNCTION {author.key.organization.label}
1151 + { author empty$
1152 +    { key empty$
1153 +        { organization empty$
1154 +            { cite$ #1 #3 substring$ }
1155 +            { "The " #4 organization chop.word #3 text.prefix$ }
1156 +          if$
1157 +        }
1158 +        'key
1159 +      if$
1160 +    }
1161 +    { author format.lab.names }
1162 +  if$
1163 + }
1164 +
1165 + FUNCTION {editor.key.organization.label}
1166 + { editor empty$
1167 +    { key empty$
1168 +        { organization empty$
1169 +            { cite$ #1 #3 substring$ }
1170 +            { "The " #4 organization chop.word #3 text.prefix$ }
1171 +          if$
1172 +        }
1173 +        'key
1174 +      if$
1175 +    }
1176 +    { editor format.lab.names }
1177 +  if$
1178 + }
1179 +
1180 + FUNCTION {calc.short.authors}
1181 + { type$ "book" =
1182 +  type$ "inbook" =
1183 +  or
1184 +    'author.editor.key.label
1185 +    { type$ "proceedings" =
1186 +        'editor.key.organization.label
1187 +        { type$ "manual" =
1188 +            'author.key.organization.label
1189 +            'author.key.label
1190 +          if$
1191 +        }
1192 +      if$
1193 +    }
1194    if$
1195 +  'short.list :=
1196   }
1197  
1198 + FUNCTION {calc.label}
1199 + { calc.short.authors
1200 +  short.list
1201 +  "("
1202 +  *
1203 +  year duplicate$ empty$
1204 +  short.list key field.or.null = or
1205 +     { pop$ "" }
1206 +     'skip$
1207 +  if$
1208 +  *
1209 +  'label :=
1210 + }
1211 +
1212   FUNCTION {sort.format.names}
1213   { 's :=
1214    #1 'nameptr :=
# Line 1191 | Line 1216 | FUNCTION {sort.format.names}
1216    s num.names$ 'numnames :=
1217    numnames 'namesleft :=
1218      { namesleft #0 > }
1219 <    { s nameptr
1220 <      "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}"
1196 <      format.name$ 't :=
1219 >    {
1220 >      s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
1221        nameptr #1 >
1222          {
1223            "   "  *
1224            namesleft #1 = t "others" = and
1225 <            { "aaaaa" * }
1226 <            { t sortify * }
1225 >            { "zzzzz" * }
1226 >            { numnames #2 > nameptr #2 = and
1227 >                { "zz" * year field.or.null * "   " * }
1228 >                'skip$
1229 >              if$
1230 >              t sortify *
1231 >            }
1232            if$
1233          }
1234          { t sortify * }
# Line 1285 | Line 1314 | FUNCTION {editor.organization.sort}
1314    if$
1315   }
1316  
1317 +
1318   FUNCTION {presort}
1319 < { type$ "book" =
1319 > { calc.label
1320 >  label sortify
1321 >  "    "
1322 >  *
1323 >  type$ "book" =
1324    type$ "inbook" =
1325    or
1326      'author.editor.sort
# Line 1302 | Line 1336 | FUNCTION {presort}
1336    if$
1337    "    "
1338    *
1339 <  year field.or.null sortify
1339 >  cite$
1340    *
1307  "    "
1308  *
1309  title field.or.null
1310  sort.format.title
1311  *
1341    #1 entry.max$ substring$
1342 +  'sort.label :=
1343 +  sort.label *
1344 +  #1 entry.max$ substring$
1345    'sort.key$ :=
1346   }
1347  
# Line 1317 | Line 1349 | SORT
1349  
1350   SORT
1351  
1352 < STRINGS { longest.label }
1352 > STRINGS { longest.label last.label next.extra }
1353  
1354 < INTEGERS { number.label longest.label.width }
1354 > INTEGERS { longest.label.width last.extra.num number.label }
1355  
1356   FUNCTION {initialize.longest.label}
1357   { "" 'longest.label :=
1358 <  #1 'number.label :=
1358 >  #0 int.to.chr$ 'last.label :=
1359 >  "" 'next.extra :=
1360    #0 'longest.label.width :=
1361 +  #0 'last.extra.num :=
1362 +  #0 'number.label :=
1363   }
1364  
1365 < FUNCTION {longest.label.pass}
1366 < { number.label int.to.str$ 'label :=
1367 <  number.label #1 + 'number.label :=
1368 <  label width$ longest.label.width >
1334 <    { label 'longest.label :=
1335 <      label width$ 'longest.label.width :=
1365 > FUNCTION {forward.pass}
1366 > { last.label label =
1367 >    { last.extra.num #1 + 'last.extra.num :=
1368 >      last.extra.num int.to.chr$ 'extra.label :=
1369      }
1370 +    { "a" chr.to.int$ 'last.extra.num :=
1371 +      "" 'extra.label :=
1372 +      label 'last.label :=
1373 +    }
1374 +  if$
1375 +  number.label #1 + 'number.label :=
1376 + }
1377 +
1378 + FUNCTION {reverse.pass}
1379 + { next.extra "b" =
1380 +    { "a" 'extra.label := }
1381      'skip$
1382    if$
1383 +  extra.label 'next.extra :=
1384 +  extra.label
1385 +  duplicate$ empty$
1386 +    'skip$
1387 +    { "{\natexlab{" swap$ * "}}" * }
1388 +  if$
1389 +  'extra.label :=
1390 +  label extra.label * 'label :=
1391   }
1392  
1393   EXECUTE {initialize.longest.label}
1394  
1395 < ITERATE {longest.label.pass}
1395 > ITERATE {forward.pass}
1396  
1397 + REVERSE {reverse.pass}
1398 +
1399 + FUNCTION {bib.sort.order}
1400 + { sort.label  'sort.key$ :=
1401 + }
1402 +
1403 + ITERATE {bib.sort.order}
1404 +
1405 + SORT
1406 +
1407   FUNCTION {begin.bib}
1408 < { preamble$ empty$
1408 > {   preamble$ empty$
1409      'skip$
1410      { preamble$ write$ newline$ }
1411    if$
1412 <  "\begin{thebibliography}{"  longest.label  * "}" *
1412 >  "\begin{thebibliography}{" number.label int.to.str$ * "}" *
1413    write$ newline$
1414 +  "\providecommand{\natexlab}[1]{#1}"
1415 +  write$ newline$
1416 +  "\providecommand{\url}[1]{\texttt{#1}}"
1417 +  write$ newline$
1418 +  "\expandafter\ifx\csname urlstyle\endcsname\relax"
1419 +  write$ newline$
1420 +  "  \providecommand{\doi}[1]{doi: #1}\else"
1421 +  write$ newline$
1422 +  "  \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
1423 +  write$ newline$
1424   }
1425  
1426   EXECUTE {begin.bib}
# Line 1363 | Line 1435 | EXECUTE {end.bib}
1435   }
1436  
1437   EXECUTE {end.bib}
1366 %% End of customized bst file
1367 %%
1368 %% End of file `nddiss2e.bst'.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines