iccsa-16-factory-extended

Master node fault tolerance in distributed big data processing clusters
git clone https://git.igankevich.com/iccsa-16-factory-extended.git
Log | Files | Refs

plain.bst (20350B)


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