--- /dev/null
+\r
+% ---------------------------------------------------------------\r
+%\r
+% $Id: latex8.bst,v 1.1 1995/09/15 15:13:49 ienne Exp $\r
+%\r
+% by Paolo.Ienne@di.epfl.ch\r
+%\r
+\r
+% ---------------------------------------------------------------\r
+%\r
+% no guarantee is given that the format corresponds perfectly to \r
+% IEEE 8.5" x 11" Proceedings, but most features should be ok.\r
+%\r
+% ---------------------------------------------------------------\r
+%\r
+% `latex8' from BibTeX standard bibliography style `abbrv'\r
+% version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.\r
+% Copyright (C) 1985, all rights reserved.\r
+% Copying of this file is authorized only if either\r
+% (1) you make absolutely no changes to your copy, including name, or\r
+% (2) if you do make changes, you name it something other than\r
+% btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.\r
+% This restriction helps ensure that all standard styles are identical.\r
+% The file btxbst.doc has the documentation for this style.\r
+\r
+ENTRY\r
+ { address\r
+ author\r
+ booktitle\r
+ chapter\r
+ edition\r
+ editor\r
+ howpublished\r
+ institution\r
+ journal\r
+ key\r
+ month\r
+ note\r
+ number\r
+ organization\r
+ pages\r
+ publisher\r
+ school\r
+ series\r
+ title\r
+ type\r
+ volume\r
+ year\r
+ }\r
+ {}\r
+ { label }\r
+\r
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }\r
+\r
+FUNCTION {init.state.consts}\r
+{ #0 'before.all :=\r
+ #1 'mid.sentence :=\r
+ #2 'after.sentence :=\r
+ #3 'after.block :=\r
+}\r
+\r
+STRINGS { s t }\r
+\r
+FUNCTION {output.nonnull}\r
+{ 's :=\r
+ output.state mid.sentence =\r
+ { ", " * write$ }\r
+ { output.state after.block =\r
+ { add.period$ write$\r
+ newline$\r
+ "\newblock " write$\r
+ }\r
+ { output.state before.all =\r
+ 'write$\r
+ { add.period$ " " * write$ }\r
+ if$\r
+ }\r
+ if$\r
+ mid.sentence 'output.state :=\r
+ }\r
+ if$\r
+ s\r
+}\r
+\r
+FUNCTION {output}\r
+{ duplicate$ empty$\r
+ 'pop$\r
+ 'output.nonnull\r
+ if$\r
+}\r
+\r
+FUNCTION {output.check}\r
+{ 't :=\r
+ duplicate$ empty$\r
+ { pop$ "empty " t * " in " * cite$ * warning$ }\r
+ 'output.nonnull\r
+ if$\r
+}\r
+\r
+FUNCTION {output.bibitem}\r
+{ newline$\r
+ "\bibitem{" write$\r
+ cite$ write$\r
+ "}" write$\r
+ newline$\r
+ ""\r
+ before.all 'output.state :=\r
+}\r
+\r
+FUNCTION {fin.entry}\r
+{ add.period$\r
+ write$\r
+ newline$\r
+}\r
+\r
+FUNCTION {new.block}\r
+{ output.state before.all =\r
+ 'skip$\r
+ { after.block 'output.state := }\r
+ if$\r
+}\r
+\r
+FUNCTION {new.sentence}\r
+{ output.state after.block =\r
+ 'skip$\r
+ { output.state before.all =\r
+ 'skip$\r
+ { after.sentence 'output.state := }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {not}\r
+{ { #0 }\r
+ { #1 }\r
+ if$\r
+}\r
+\r
+FUNCTION {and}\r
+{ 'skip$\r
+ { pop$ #0 }\r
+ if$\r
+}\r
+\r
+FUNCTION {or}\r
+{ { pop$ #1 }\r
+ 'skip$\r
+ if$\r
+}\r
+\r
+FUNCTION {new.block.checka}\r
+{ empty$\r
+ 'skip$\r
+ 'new.block\r
+ if$\r
+}\r
+\r
+FUNCTION {new.block.checkb}\r
+{ empty$\r
+ swap$ empty$\r
+ and\r
+ 'skip$\r
+ 'new.block\r
+ if$\r
+}\r
+\r
+FUNCTION {new.sentence.checka}\r
+{ empty$\r
+ 'skip$\r
+ 'new.sentence\r
+ if$\r
+}\r
+\r
+FUNCTION {new.sentence.checkb}\r
+{ empty$\r
+ swap$ empty$\r
+ and\r
+ 'skip$\r
+ 'new.sentence\r
+ if$\r
+}\r
+\r
+FUNCTION {field.or.null}\r
+{ duplicate$ empty$\r
+ { pop$ "" }\r
+ 'skip$\r
+ if$\r
+}\r
+\r
+FUNCTION {emphasize}\r
+{ duplicate$ empty$\r
+ { pop$ "" }\r
+ { "{\em " swap$ * "}" * }\r
+ if$\r
+}\r
+\r
+INTEGERS { nameptr namesleft numnames }\r
+\r
+FUNCTION {format.names}\r
+{ 's :=\r
+ #1 'nameptr :=\r
+ s num.names$ 'numnames :=\r
+ numnames 'namesleft :=\r
+ { namesleft #0 > }\r
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=\r
+ nameptr #1 >\r
+ { namesleft #1 >\r
+ { ", " * t * }\r
+ { numnames #2 >\r
+ { "," * }\r
+ 'skip$\r
+ if$\r
+ t "others" =\r
+ { " et~al." * }\r
+ { " and " * t * }\r
+ if$\r
+ }\r
+ if$\r
+ }\r
+ 't\r
+ if$\r
+ nameptr #1 + 'nameptr :=\r
+\r
+ namesleft #1 - 'namesleft :=\r
+ }\r
+ while$\r
+}\r
+\r
+FUNCTION {format.authors}\r
+{ author empty$\r
+ { "" }\r
+ { author format.names }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.editors}\r
+{ editor empty$\r
+ { "" }\r
+ { editor format.names\r
+ editor num.names$ #1 >\r
+ { ", editors" * }\r
+ { ", editor" * }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.title}\r
+{ title empty$\r
+ { "" }\r
+ { title "t" change.case$ }\r
+ if$\r
+}\r
+\r
+FUNCTION {n.dashify}\r
+{ 't :=\r
+ ""\r
+ { t empty$ not }\r
+ { t #1 #1 substring$ "-" =\r
+ { t #1 #2 substring$ "--" = not\r
+ { "--" *\r
+ t #2 global.max$ substring$ 't :=\r
+ }\r
+ { { t #1 #1 substring$ "-" = }\r
+ { "-" *\r
+ t #2 global.max$ substring$ 't :=\r
+ }\r
+ while$\r
+ }\r
+ if$\r
+ }\r
+ { t #1 #1 substring$ *\r
+ t #2 global.max$ substring$ 't :=\r
+ }\r
+ if$\r
+ }\r
+ while$\r
+}\r
+\r
+FUNCTION {format.date}\r
+{ year empty$\r
+ { month empty$\r
+ { "" }\r
+ { "there's a month but no year in " cite$ * warning$\r
+ month\r
+ }\r
+ if$\r
+ }\r
+ { month empty$\r
+ 'year\r
+ { month " " * year * }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.btitle}\r
+{ title emphasize\r
+}\r
+\r
+FUNCTION {tie.or.space.connect}\r
+{ duplicate$ text.length$ #3 <\r
+ { "~" }\r
+ { " " }\r
+ if$\r
+ swap$ * *\r
+}\r
+\r
+FUNCTION {either.or.check}\r
+{ empty$\r
+ 'pop$\r
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.bvolume}\r
+{ volume empty$\r
+ { "" }\r
+ { "volume" volume tie.or.space.connect\r
+ series empty$\r
+ 'skip$\r
+ { " of " * series emphasize * }\r
+ if$\r
+ "volume and number" number either.or.check\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.number.series}\r
+{ volume empty$\r
+ { number empty$\r
+ { series field.or.null }\r
+ { output.state mid.sentence =\r
+ { "number" }\r
+ { "Number" }\r
+ if$\r
+ number tie.or.space.connect\r
+ series empty$\r
+ { "there's a number but no series in " cite$ * warning$ }\r
+ { " in " * series * }\r
+ if$\r
+ }\r
+ if$\r
+ }\r
+ { "" }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.edition}\r
+{ edition empty$\r
+ { "" }\r
+ { output.state mid.sentence =\r
+ { edition "l" change.case$ " edition" * }\r
+ { edition "t" change.case$ " edition" * }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+INTEGERS { multiresult }\r
+\r
+FUNCTION {multi.page.check}\r
+{ 't :=\r
+ #0 'multiresult :=\r
+ { multiresult not\r
+ t empty$ not\r
+ and\r
+ }\r
+ { t #1 #1 substring$\r
+ duplicate$ "-" =\r
+ swap$ duplicate$ "," =\r
+ swap$ "+" =\r
+ or or\r
+ { #1 'multiresult := }\r
+ { t #2 global.max$ substring$ 't := }\r
+ if$\r
+ }\r
+ while$\r
+ multiresult\r
+}\r
+\r
+FUNCTION {format.pages}\r
+{ pages empty$\r
+ { "" }\r
+ { pages multi.page.check\r
+ { "pages" pages n.dashify tie.or.space.connect }\r
+ { "page" pages tie.or.space.connect }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.vol.num.pages}\r
+{ volume field.or.null\r
+ number empty$\r
+ 'skip$\r
+ { "(" number * ")" * *\r
+ volume empty$\r
+ { "there's a number but no volume in " cite$ * warning$ }\r
+ 'skip$\r
+ if$\r
+ }\r
+ if$\r
+ pages empty$\r
+ 'skip$\r
+ { duplicate$ empty$\r
+ { pop$ format.pages }\r
+ { ":" * pages n.dashify * }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.chapter.pages}\r
+{ chapter empty$\r
+ 'format.pages\r
+ { type empty$\r
+ { "chapter" }\r
+ { type "l" change.case$ }\r
+ if$\r
+ chapter tie.or.space.connect\r
+ pages empty$\r
+ 'skip$\r
+ { ", " * format.pages * }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.in.ed.booktitle}\r
+{ booktitle empty$\r
+ { "" }\r
+ { editor empty$\r
+ { "In " booktitle emphasize * }\r
+ { "In " format.editors * ", " * booktitle emphasize * }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {empty.misc.check}\r
+\r
+{ author empty$ title empty$ howpublished empty$\r
+ month empty$ year empty$ note empty$\r
+ and and and and and\r
+ key empty$ not and\r
+ { "all relevant fields are empty in " cite$ * warning$ }\r
+ 'skip$\r
+ if$\r
+}\r
+\r
+FUNCTION {format.thesis.type}\r
+{ type empty$\r
+ 'skip$\r
+ { pop$\r
+ type "t" change.case$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.tr.number}\r
+{ type empty$\r
+ { "Technical Report" }\r
+ 'type\r
+ if$\r
+ number empty$\r
+ { "t" change.case$ }\r
+ { number tie.or.space.connect }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.article.crossref}\r
+{ key empty$\r
+ { journal empty$\r
+ { "need key or journal for " cite$ * " to crossref " * crossref *\r
+ warning$\r
+ ""\r
+ }\r
+ { "In {\em " journal * "\/}" * }\r
+ if$\r
+ }\r
+ { "In " key * }\r
+ if$\r
+ " \cite{" * crossref * "}" *\r
+}\r
+\r
+FUNCTION {format.crossref.editor}\r
+{ editor #1 "{vv~}{ll}" format.name$\r
+ editor num.names$ duplicate$\r
+ #2 >\r
+ { pop$ " et~al." * }\r
+ { #2 <\r
+ 'skip$\r
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =\r
+ { " et~al." * }\r
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }\r
+ if$\r
+ }\r
+ if$\r
+ }\r
+ if$\r
+}\r
+\r
+FUNCTION {format.book.crossref}\r
+{ volume empty$\r
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$\r
+ "In "\r
+ }\r
+ { "Volume" volume tie.or.space.connect\r
+ " of " *\r
+ }\r
+ if$\r
+ editor empty$\r
+ editor field.or.null author field.or.null =\r
+ or\r
+ { key empty$\r
+ { series empty$\r
+ { "need editor, key, or series for " cite$ * " to crossref " *\r
+ crossref * warning$\r
+ "" *\r
+ }\r
+ { "{\em " * series * "\/}" * }\r
+ if$\r
+ }\r
+ { key * }\r
+ if$\r
+ }\r
+ { format.crossref.editor * }\r
+ if$\r
+ " \cite{" * crossref * "}" *\r
+}\r
+\r
+FUNCTION {format.incoll.inproc.crossref}\r
+{ editor empty$\r
+ editor field.or.null author field.or.null =\r
+ or\r
+ { key empty$\r
+ { booktitle empty$\r
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *\r
+ crossref * warning$\r
+ ""\r
+ }\r
+ { "In {\em " booktitle * "\/}" * }\r
+ if$\r
+ }\r
+ { "In " key * }\r
+ if$\r
+ }\r
+ { "In " format.crossref.editor * }\r
+ if$\r
+ " \cite{" * crossref * "}" *\r
+}\r
+\r
+FUNCTION {article}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.title "title" output.check\r
+ new.block\r
+ crossref missing$\r
+ { journal emphasize "journal" output.check\r
+ format.vol.num.pages output\r
+ format.date "year" output.check\r
+ }\r
+ { format.article.crossref output.nonnull\r
+ format.pages output\r
+ }\r
+ if$\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {book}\r
+{ output.bibitem\r
+ author empty$\r
+ { format.editors "author and editor" output.check }\r
+ { format.authors output.nonnull\r
+ crossref missing$\r
+ { "author and editor" editor either.or.check }\r
+ 'skip$\r
+ if$\r
+ }\r
+ if$\r
+ new.block\r
+ format.btitle "title" output.check\r
+ crossref missing$\r
+ { format.bvolume output\r
+ new.block\r
+ format.number.series output\r
+ new.sentence\r
+ publisher "publisher" output.check\r
+ address output\r
+ }\r
+ { new.block\r
+ format.book.crossref output.nonnull\r
+ }\r
+ if$\r
+ format.edition output\r
+ format.date "year" output.check\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {booklet}\r
+{ output.bibitem\r
+ format.authors output\r
+ new.block\r
+ format.title "title" output.check\r
+ howpublished address new.block.checkb\r
+ howpublished output\r
+ address output\r
+ format.date output\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {inbook}\r
+{ output.bibitem\r
+ author empty$\r
+ { format.editors "author and editor" output.check }\r
+ { format.authors output.nonnull\r
+\r
+ crossref missing$\r
+ { "author and editor" editor either.or.check }\r
+ 'skip$\r
+ if$\r
+ }\r
+ if$\r
+ new.block\r
+ format.btitle "title" output.check\r
+ crossref missing$\r
+ { format.bvolume output\r
+ format.chapter.pages "chapter and pages" output.check\r
+ new.block\r
+ format.number.series output\r
+ new.sentence\r
+ publisher "publisher" output.check\r
+ address output\r
+ }\r
+ { format.chapter.pages "chapter and pages" output.check\r
+ new.block\r
+ format.book.crossref output.nonnull\r
+ }\r
+ if$\r
+ format.edition output\r
+ format.date "year" output.check\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {incollection}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.title "title" output.check\r
+ new.block\r
+ crossref missing$\r
+ { format.in.ed.booktitle "booktitle" output.check\r
+ format.bvolume output\r
+ format.number.series output\r
+ format.chapter.pages output\r
+ new.sentence\r
+ publisher "publisher" output.check\r
+ address output\r
+ format.edition output\r
+ format.date "year" output.check\r
+ }\r
+ { format.incoll.inproc.crossref output.nonnull\r
+ format.chapter.pages output\r
+ }\r
+ if$\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {inproceedings}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.title "title" output.check\r
+ new.block\r
+ crossref missing$\r
+ { format.in.ed.booktitle "booktitle" output.check\r
+ format.bvolume output\r
+ format.number.series output\r
+ format.pages output\r
+ address empty$\r
+ { organization publisher new.sentence.checkb\r
+ organization output\r
+ publisher output\r
+ format.date "year" output.check\r
+ }\r
+ { address output.nonnull\r
+ format.date "year" output.check\r
+ new.sentence\r
+ organization output\r
+ publisher output\r
+ }\r
+ if$\r
+ }\r
+ { format.incoll.inproc.crossref output.nonnull\r
+ format.pages output\r
+ }\r
+ if$\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {conference} { inproceedings }\r
+\r
+FUNCTION {manual}\r
+{ output.bibitem\r
+ author empty$\r
+ { organization empty$\r
+ 'skip$\r
+ { organization output.nonnull\r
+ address output\r
+ }\r
+ if$\r
+ }\r
+ { format.authors output.nonnull }\r
+ if$\r
+ new.block\r
+ format.btitle "title" output.check\r
+ author empty$\r
+ { organization empty$\r
+ { address new.block.checka\r
+ address output\r
+ }\r
+ 'skip$\r
+ if$\r
+ }\r
+ { organization address new.block.checkb\r
+ organization output\r
+ address output\r
+ }\r
+ if$\r
+ format.edition output\r
+ format.date output\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {mastersthesis}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.title "title" output.check\r
+ new.block\r
+ "Master's thesis" format.thesis.type output.nonnull\r
+ school "school" output.check\r
+ address output\r
+ format.date "year" output.check\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {misc}\r
+{ output.bibitem\r
+ format.authors output\r
+ title howpublished new.block.checkb\r
+ format.title output\r
+ howpublished new.block.checka\r
+ howpublished output\r
+ format.date output\r
+ new.block\r
+ note output\r
+ fin.entry\r
+ empty.misc.check\r
+}\r
+\r
+FUNCTION {phdthesis}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.btitle "title" output.check\r
+ new.block\r
+ "PhD thesis" format.thesis.type output.nonnull\r
+ school "school" output.check\r
+ address output\r
+ format.date "year" output.check\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {proceedings}\r
+{ output.bibitem\r
+ editor empty$\r
+ { organization output }\r
+ { format.editors output.nonnull }\r
+\r
+ if$\r
+ new.block\r
+ format.btitle "title" output.check\r
+ format.bvolume output\r
+ format.number.series output\r
+ address empty$\r
+ { editor empty$\r
+ { publisher new.sentence.checka }\r
+ { organization publisher new.sentence.checkb\r
+ organization output\r
+ }\r
+ if$\r
+ publisher output\r
+ format.date "year" output.check\r
+ }\r
+ { address output.nonnull\r
+ format.date "year" output.check\r
+ new.sentence\r
+ editor empty$\r
+ 'skip$\r
+ { organization output }\r
+ if$\r
+ publisher output\r
+ }\r
+ if$\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {techreport}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.title "title" output.check\r
+ new.block\r
+ format.tr.number output.nonnull\r
+ institution "institution" output.check\r
+ address output\r
+ format.date "year" output.check\r
+ new.block\r
+ note output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {unpublished}\r
+{ output.bibitem\r
+ format.authors "author" output.check\r
+ new.block\r
+ format.title "title" output.check\r
+ new.block\r
+ note "note" output.check\r
+ format.date output\r
+ fin.entry\r
+}\r
+\r
+FUNCTION {default.type} { misc }\r
+\r
+MACRO {jan} {"Jan."}\r
+\r
+MACRO {feb} {"Feb."}\r
+\r
+MACRO {mar} {"Mar."}\r
+\r
+MACRO {apr} {"Apr."}\r
+\r
+MACRO {may} {"May"}\r
+\r
+MACRO {jun} {"June"}\r
+\r
+MACRO {jul} {"July"}\r
+\r
+MACRO {aug} {"Aug."}\r
+\r
+MACRO {sep} {"Sept."}\r
+\r
+MACRO {oct} {"Oct."}\r
+\r
+MACRO {nov} {"Nov."}\r
+\r
+MACRO {dec} {"Dec."}\r
+\r
+MACRO {acmcs} {"ACM Comput. Surv."}\r
+\r
+MACRO {acta} {"Acta Inf."}\r
+\r
+MACRO {cacm} {"Commun. ACM"}\r
+\r
+MACRO {ibmjrd} {"IBM J. Res. Dev."}\r
+\r
+MACRO {ibmsj} {"IBM Syst.~J."}\r
+\r
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}\r
+\r
+MACRO {ieeetc} {"IEEE Trans. Comput."}\r
+\r
+MACRO {ieeetcad}\r
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}\r
+\r
+MACRO {ipl} {"Inf. Process. Lett."}\r
+\r
+MACRO {jacm} {"J.~ACM"}\r
+\r
+MACRO {jcss} {"J.~Comput. Syst. Sci."}\r
+\r
+MACRO {scp} {"Sci. Comput. Programming"}\r
+\r
+MACRO {sicomp} {"SIAM J. Comput."}\r
+\r
+MACRO {tocs} {"ACM Trans. Comput. Syst."}\r
+\r
+MACRO {tods} {"ACM Trans. Database Syst."}\r
+\r
+MACRO {tog} {"ACM Trans. Gr."}\r
+\r
+MACRO {toms} {"ACM Trans. Math. Softw."}\r
+\r
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}\r
+\r
+MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}\r
+\r
+MACRO {tcs} {"Theoretical Comput. Sci."}\r
+\r
+READ\r
+\r
+FUNCTION {sortify}\r
+{ purify$\r
+ "l" change.case$\r
+}\r
+\r
+INTEGERS { len }\r
+\r
+FUNCTION {chop.word}\r
+{ 's :=\r
+ 'len :=\r
+ s #1 len substring$ =\r
+ { s len #1 + global.max$ substring$ }\r
+ 's\r
+ if$\r
+}\r
+\r
+FUNCTION {sort.format.names}\r
+{ 's :=\r
+ #1 'nameptr :=\r
+ ""\r
+ s num.names$ 'numnames :=\r
+ numnames 'namesleft :=\r
+ { namesleft #0 > }\r
+ { nameptr #1 >\r
+ { " " * }\r
+ 'skip$\r
+ if$\r
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=\r
+ nameptr numnames = t "others" = and\r
+ { "et al" * }\r
+ { t sortify * }\r
+ if$\r
+ nameptr #1 + 'nameptr :=\r
+ namesleft #1 - 'namesleft :=\r
+ }\r
+ while$\r
+}\r
+\r
+FUNCTION {sort.format.title}\r
+{ 't :=\r
+ "A " #2\r
+ "An " #3\r
+ "The " #4 t chop.word\r
+ chop.word\r
+ chop.word\r
+ sortify\r
+ #1 global.max$ substring$\r
+}\r
+\r
+FUNCTION {author.sort}\r
+{ author empty$\r
+ { key empty$\r
+ { "to sort, need author or key in " cite$ * warning$\r
+ ""\r
+ }\r
+ { key sortify }\r
+ if$\r
+ }\r
+ { author sort.format.names }\r
+ if$\r
+}\r
+\r
+FUNCTION {author.editor.sort}\r
+{ author empty$\r
+ { editor empty$\r
+ { key empty$\r
+ { "to sort, need author, editor, or key in " cite$ * warning$\r
+ ""\r
+ }\r
+ { key sortify }\r
+ if$\r
+ }\r
+ { editor sort.format.names }\r
+ if$\r
+ }\r
+ { author sort.format.names }\r
+ if$\r
+}\r
+\r
+FUNCTION {author.organization.sort}\r
+{ author empty$\r
+\r
+ { organization empty$\r
+ { key empty$\r
+ { "to sort, need author, organization, or key in " cite$ * warning$\r
+ ""\r
+ }\r
+ { key sortify }\r
+ if$\r
+ }\r
+ { "The " #4 organization chop.word sortify }\r
+ if$\r
+ }\r
+ { author sort.format.names }\r
+ if$\r
+}\r
+\r
+FUNCTION {editor.organization.sort}\r
+{ editor empty$\r
+ { organization empty$\r
+ { key empty$\r
+ { "to sort, need editor, organization, or key in " cite$ * warning$\r
+ ""\r
+ }\r
+ { key sortify }\r
+ if$\r
+ }\r
+ { "The " #4 organization chop.word sortify }\r
+ if$\r
+ }\r
+ { editor sort.format.names }\r
+ if$\r
+}\r
+\r
+FUNCTION {presort}\r
+{ type$ "book" =\r
+ type$ "inbook" =\r
+ or\r
+ 'author.editor.sort\r
+ { type$ "proceedings" =\r
+ 'editor.organization.sort\r
+ { type$ "manual" =\r
+ 'author.organization.sort\r
+ 'author.sort\r
+ if$\r
+ }\r
+ if$\r
+ }\r
+ if$\r
+ " "\r
+ *\r
+ year field.or.null sortify\r
+ *\r
+ " "\r
+ *\r
+ title field.or.null\r
+ sort.format.title\r
+ *\r
+ #1 entry.max$ substring$\r
+ 'sort.key$ :=\r
+}\r
+\r
+ITERATE {presort}\r
+\r
+SORT\r
+\r
+STRINGS { longest.label }\r
+\r
+INTEGERS { number.label longest.label.width }\r
+\r
+FUNCTION {initialize.longest.label}\r
+{ "" 'longest.label :=\r
+ #1 'number.label :=\r
+ #0 'longest.label.width :=\r
+}\r
+\r
+FUNCTION {longest.label.pass}\r
+{ number.label int.to.str$ 'label :=\r
+ number.label #1 + 'number.label :=\r
+ label width$ longest.label.width >\r
+ { label 'longest.label :=\r
+ label width$ 'longest.label.width :=\r
+ }\r
+ 'skip$\r
+ if$\r
+}\r
+\r
+EXECUTE {initialize.longest.label}\r
+\r
+ITERATE {longest.label.pass}\r
+\r
+FUNCTION {begin.bib}\r
+{ preamble$ empty$\r
+ 'skip$\r
+ { preamble$ write$ newline$ }\r
+ if$\r
+ "\begin{thebibliography}{" longest.label * \r
+ "}\setlength{\itemsep}{-1ex}\small" * write$ newline$\r
+}\r
+\r
+EXECUTE {begin.bib}\r
+\r
+EXECUTE {init.state.consts}\r
+\r
+ITERATE {call.type$}\r
+\r
+FUNCTION {end.bib}\r
+{ newline$\r
+ "\end{thebibliography}" write$ newline$\r
+}\r
+\r
+EXECUTE {end.bib}\r
+\r
+% end of file latex8.bst\r
+% ---------------------------------------------------------------\r
+\r
+\r
+\r