" % \n" " % \n" " % This file is either \"html-btxbst.doc\" or was derived from\n" " % \"html-btxbst.doc\" using cpp. \"html-btxbst.doc\" itself was edited\n" " % from \"btxbst.doc\" and \"named.bst\".\n" " % The following copyright information is from btxbst.doc:\n" " % version 0.99b for BibTeX versions 0.99a or later, LaTeX version 2.09.\n" " % Copyright (C) 1985, all rights reserved.\n" " % Copying of this file is authorized only if either\n" " % (1) you make absolutely no changes to your copy, including name, or\n" " % (2) if you do make changes, you name it something other than\n" " % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.\n" " % This restriction helps ensure that all standard styles are identical.\n" " % The file btxbst.doc has the documentation for this style.\n" " % \"named\" style (sorted keys of the form [name, year])\n" " % Some code for this was taken from \"named.bst\".\n" "\n" "ENTRY\n" " { address\n" " author\n" " booktitle\n" " chapter\n" " edition\n" " editor\n" " howpublished\n" " institution\n" " journal\n" " key\n" " month\n" " note\n" " number\n" " organization\n" " pages\n" " publisher\n" " school\n" " series\n" " title\n" " type\n" " volume\n" " year\n" " dvi\n" " html\n" " keywords\n" " pdf\n" " postscript\n" " url\n" " doi\n" " mailto\n" " }\n" " {}\n" " { label extra.label sort.label }\n" "\n" "INTEGERS { output.state before.all mid.sentence after.sentence after.block }\n" "\n" "FUNCTION {init.state.consts}\n" "{ #0 'before.all :=\n" " #1 'mid.sentence :=\n" " #2 'after.sentence :=\n" " #3 'after.block :=\n" "}\n" "\n" "STRINGS { s t }\n" "\n" "FUNCTION {output.nonnull}\n" "{ 's :=\n" " output.state mid.sentence =\n" " { \", \" * write$ }\n" " { output.state after.block =\n" " { add.period$ write$\n" " newline$\n" " }\n" " { output.state before.all =\n" " 'write$\n" " { add.period$ \" \" * write$ }\n" " if$\n" " }\n" " if$\n" " mid.sentence 'output.state :=\n" " }\n" " if$\n" " s\n" "}\n" "\n" "FUNCTION {output}\n" "{ duplicate$ empty$\n" " 'pop$\n" " 'output.nonnull\n" " if$\n" "}\n" "\n" "FUNCTION {output.check}\n" "{ 't :=\n" " duplicate$ empty$\n" " { pop$ \"empty \" t * \" in \" * cite$ * warning$ }\n" " 'output.nonnull\n" " if$\n" "}\n" "\n" "FUNCTION {output.bibitem}\n" "{ newline$\n" " author empty$\n" " { editor empty$\n" " { organization empty$\n" " 'skip$\n" " { \"\" * write$ newline$ }\n" " if$\n" " } \n" " { \"\" * write$ newline$ }\n" " if$\n" " }\n" " { \"\" * write$ newline$ }\n" " if$\n" " keywords empty$\n" " 'skip$\n" " { \"\" * write$ newline$ }\n" " if$\n" " \"
[\" * label * \"]
\" * write$\n" " \"\"\n" " before.all 'output.state :=\n" "}\n" "\n" "FUNCTION {fin.entry}\n" "{ add.period$\n" " write$\n" " postscript empty$\n" " 'skip$\n" " { newline$ \"\" * write$ }\n" " if$\n" " pdf empty$\n" " 'skip$\n" " { newline$ \"\" * write$ }\n" " if$\n" " dvi empty$\n" " 'skip$\n" " { newline$ \"\" * write$ }\n" " if$\n" " doi empty$\n" " 'skip$\n" " { newline$ \"\" * write$ }\n" " if$\n" " \"
\" write$\n" " newline$\n" " newline$\n" "}\n" "\n" "FUNCTION {new.block}\n" "{ output.state before.all =\n" " 'skip$\n" " { after.block 'output.state := }\n" " if$\n" "}\n" "\n" "FUNCTION {new.sentence}\n" "{ output.state after.block =\n" " 'skip$\n" " { output.state before.all =\n" " 'skip$\n" " { after.sentence 'output.state := }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {not}\n" "{ { #0 }\n" " { #1 }\n" " if$\n" "}\n" "\n" "FUNCTION {and}\n" "{ 'skip$\n" " { pop$ #0 }\n" " if$\n" "}\n" "\n" "FUNCTION {or}\n" "{ { pop$ #1 }\n" " 'skip$\n" " if$\n" "}\n" "\n" "FUNCTION {str.to.int}\n" "{\n" " 's :=\n" " #0\n" " { s empty$ not }\n" " { % Multiply the number on the top of the stack by 10 = 1010 binary\n" " duplicate$ + % x2\n" " duplicate$ % x2 x2\n" " duplicate$ + duplicate$ + % x2 x8\n" " +\n" " s #1 #1 substring$ chr.to.int$ #48 - + % #48 is ascii for '0'\n" " s #2 global.max$ substring$ 's :=\n" " }\n" " while$\n" "}\n" "\n" "FUNCTION {new.block.checka}\n" "{ empty$\n" " 'skip$\n" " 'new.block\n" " if$\n" "}\n" "\n" "FUNCTION {new.block.checkb}\n" "{ empty$\n" " swap$ empty$\n" " and\n" " 'skip$\n" " 'new.block\n" " if$\n" "}\n" "\n" "FUNCTION {new.sentence.checka}\n" "{ empty$\n" " 'skip$\n" " 'new.sentence\n" " if$\n" "}\n" "\n" "FUNCTION {new.sentence.checkb}\n" "{ empty$\n" " swap$ empty$\n" " and\n" " 'skip$\n" " 'new.sentence\n" " if$\n" "}\n" "\n" "FUNCTION {field.or.null}\n" "{ duplicate$ empty$\n" " { pop$ \"\" }\n" " 'skip$\n" " if$\n" "}\n" "\n" "FUNCTION {emphasize}\n" "{ duplicate$ empty$\n" " { pop$ \"\" }\n" " { \"\" swap$ * \"\" * }\n" " if$\n" "}\n" "\n" "FUNCTION {add.link} % title\n" "{\n" " 't :=\n" " t empty$\n" " { \"\" }\n" " { url empty$\n" " { html empty$\n" " { t }\n" " { \"\" * t * \"\" * }\n" " if$ }\n" " { \"\" * t * \"\" * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {add.mailto} % authors\n" "{\n" " 't :=\n" " t empty$\n" " { \"\" }\n" " { mailto empty$\n" " { t }\n" " { \"\" * t * \"\" * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "INTEGERS { nameptr namesleft numnames }\n" "\n" "FUNCTION {format.names}\n" "{ 's :=\n" " #1 'nameptr :=\n" " s num.names$ 'numnames :=\n" " numnames 'namesleft :=\n" " { namesleft #0 > }\n" " { s nameptr \"{ff~}{vv~}{ll}{, jj}\" format.name$ 't :=\n" " \"\\bibxhtmlname{\" t * \"}\" * 't :=\n" " nameptr #1 >\n" " { namesleft #1 >\n" " { \", \" * t * }\n" " { numnames #2 >\n" " { \",\" * }\n" " 'skip$\n" " if$\n" " t \"others\" =\n" " { \" et~al.\" * }\n" " { \" and \" * t * }\n" " if$\n" " }\n" " if$\n" " }\n" " 't\n" " if$\n" " nameptr #1 + 'nameptr :=\n" " namesleft #1 - 'namesleft :=\n" " }\n" " while$\n" "}\n" "\n" "FUNCTION {format.authors}\n" "{ author empty$\n" " { \"\" }\n" " { author format.names }\n" " if$\n" " add.mailto\n" "}\n" "\n" "FUNCTION {format.editors}\n" "{ editor empty$\n" " { \"\" }\n" " { editor format.names\n" " editor num.names$ #1 >\n" " { \", editors\" * }\n" " { \", editor\" * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.title}\n" "{ title empty$\n" " { \"\" }\n" " { title \"t\" change.case$ }\n" " if$\n" " add.link\n" "}\n" "\n" "FUNCTION {n.dashify}\n" "{ 't :=\n" " \"\"\n" " { t empty$ not }\n" " { t #1 #1 substring$ \"-\" =\n" " { t #1 #2 substring$ \"--\" = not\n" " { \"--\" *\n" " t #2 global.max$ substring$ 't :=\n" " }\n" " { { t #1 #1 substring$ \"-\" = }\n" " { \"-\" *\n" " t #2 global.max$ substring$ 't :=\n" " }\n" " while$\n" " }\n" " if$\n" " }\n" " { t #1 #1 substring$ *\n" " t #2 global.max$ substring$ 't :=\n" " }\n" " if$\n" " }\n" " while$\n" "}\n" "\n" "FUNCTION {format.date}\n" "{ year empty$\n" " { month empty$\n" " { \"\" }\n" " { \"there's a month but no year in \" cite$ * warning$\n" " month\n" " }\n" " if$\n" " }\n" " { month empty$\n" " 'year\n" " { month \" \" * year * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.btitle}\n" "{ title emphasize\n" " add.link\n" "}\n" "\n" "FUNCTION {tie.or.space.connect}\n" "{ duplicate$ text.length$ #3 <\n" " { \"~\" }\n" " { \" \" }\n" " if$\n" " swap$ * *\n" "}\n" "\n" "FUNCTION {either.or.check}\n" "{ empty$\n" " 'pop$\n" " { \"can't use both \" swap$ * \" fields in \" * cite$ * warning$ }\n" " if$\n" "}\n" "\n" "FUNCTION {format.bvolume}\n" "{ volume empty$\n" " { \"\" }\n" " { \"volume\" volume tie.or.space.connect\n" " series empty$\n" " 'skip$\n" " { \" of \" * series emphasize * }\n" " if$\n" " \"volume and number\" number either.or.check\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.number.series}\n" "{ volume empty$\n" " { number empty$\n" " { series field.or.null }\n" " { output.state mid.sentence =\n" " { \"number\" }\n" " { \"Number\" }\n" " if$\n" " number tie.or.space.connect\n" " series empty$\n" " { \"there's a number but no series in \" cite$ * warning$ }\n" " { \" in \" * series * }\n" " if$\n" " }\n" " if$\n" " }\n" " { \"\" }\n" " if$\n" "}\n" "\n" "FUNCTION {format.edition}\n" "{ edition empty$\n" " { \"\" }\n" " { output.state mid.sentence =\n" " { edition \"l\" change.case$ \" edition\" * }\n" " { edition \"t\" change.case$ \" edition\" * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "INTEGERS { multiresult }\n" "\n" "FUNCTION {multi.page.check}\n" "{ 't :=\n" " #0 'multiresult :=\n" " { multiresult not\n" " t empty$ not\n" " and\n" " }\n" " { t #1 #1 substring$\n" " duplicate$ \"-\" =\n" " swap$ duplicate$ \",\" =\n" " swap$ \"+\" =\n" " or or\n" " { #1 'multiresult := }\n" " { t #2 global.max$ substring$ 't := }\n" " if$\n" " }\n" " while$\n" " multiresult\n" "}\n" "\n" "FUNCTION {format.pages}\n" "{ pages empty$\n" " { \"\" }\n" " { pages multi.page.check\n" " { \"pages\" pages n.dashify tie.or.space.connect }\n" " { \"page\" pages tie.or.space.connect }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.vol.num.pages}\n" "{ volume field.or.null\n" " number empty$\n" " 'skip$\n" " { \"(\" number * \")\" * *\n" " volume empty$\n" " { \"there's a number but no volume in \" cite$ * warning$ }\n" " 'skip$\n" " if$\n" " }\n" " if$\n" " pages empty$\n" " 'skip$\n" " { duplicate$ empty$\n" " { pop$ format.pages }\n" " { \":\" * pages n.dashify * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.chapter.pages}\n" "{ chapter empty$\n" " 'format.pages\n" " { type empty$\n" " { \"chapter\" }\n" " { type \"l\" change.case$ }\n" " if$\n" " chapter tie.or.space.connect\n" " pages empty$\n" " 'skip$\n" " { \", \" * format.pages * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.in.ed.booktitle}\n" "{ booktitle empty$\n" " { \"\" }\n" " { editor empty$\n" " { \"In \" booktitle emphasize * }\n" " { \"In \" format.editors * \", \" * booktitle emphasize * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {empty.misc.check}\n" "{ author empty$ title empty$ howpublished empty$\n" " month empty$ year empty$ note empty$\n" " and and and and and\n" " key empty$ not and\n" " { \"all relevant fields are empty in \" cite$ * warning$ }\n" " 'skip$\n" " if$\n" "}\n" "\n" "FUNCTION {format.thesis.type}\n" "{ type empty$\n" " 'skip$\n" " { pop$\n" " type \"t\" change.case$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.tr.number}\n" "{ type empty$\n" " { \"Technical Report\" }\n" " 'type\n" " if$\n" " number empty$\n" " { \"t\" change.case$ }\n" " { number tie.or.space.connect }\n" " if$\n" "}\n" "\n" "FUNCTION {format.article.crossref}\n" "{\n" " \"In \" *\n" " key empty$\n" " { journal empty$\n" " { \"need key or journal for \" cite$ * \" to crossref \" * crossref *\n" " warning$\n" " \"\"\n" " }\n" " { \"\" * journal * \"\" * }\n" " if$\n" " }\n" " { key * }\n" " if$\n" " \" \\citelabel{\" * crossref * \"}\" *\n" "}\n" "\n" "FUNCTION {format.crossref.editor}\n" "{ editor #1 \"{vv~}{ll}\" format.name$\n" " editor num.names$ duplicate$\n" " #2 >\n" " { pop$ \" et~al.\" * }\n" " { #2 <\n" " 'skip$\n" " { editor #2 \"{ff }{vv }{ll}{ jj}\" format.name$ \"others\" =\n" " { \" et~al.\" * }\n" " { \" and \" * editor #2 \"{vv~}{ll}\" format.name$ * }\n" " if$\n" " }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {format.book.crossref}\n" "{ volume empty$\n" " { \"empty volume in \" cite$ * \"'s crossref of \" * crossref * warning$\n" " \"In \"\n" " }\n" " { \"Volume\" volume tie.or.space.connect\n" " \" of \" *\n" " }\n" " if$\n" " \"\" *\n" " editor empty$\n" " editor field.or.null author field.or.null =\n" " or\n" " { key empty$\n" " { series empty$\n" " { \"need editor, key, or series for \" cite$ * \" to crossref \" *\n" " crossref * warning$\n" " \"\" *\n" " }\n" " { \"\" * series * \"\" * }\n" " if$\n" " }\n" " { key * }\n" " if$\n" " }\n" " { format.crossref.editor * }\n" " if$\n" " \" \\citelabel{\" * crossref * \"}\" *\n" "}\n" "\n" "FUNCTION {format.incoll.inproc.crossref}\n" "{\n" " \"In \" *\n" " editor empty$\n" " editor field.or.null author field.or.null =\n" " or\n" " { key empty$\n" " { booktitle empty$\n" " { \"need editor, key, or booktitle for \" cite$ * \" to crossref \" *\n" " crossref * warning$\n" " \"\"\n" " }\n" " { \"\" * booktitle * \"\" * }\n" " if$\n" " }\n" " { key * }\n" " if$\n" " }\n" " { format.crossref.editor * }\n" " if$\n" " \" \\citelabel{\" * crossref * \"}\" *\n" "}\n" "\n" "FUNCTION {article}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.title \"title\" output.check\n" " new.block\n" " crossref missing$\n" " { journal emphasize \"journal\" output.check\n" " format.vol.num.pages output\n" " format.date \"year\" output.check\n" " }\n" " { format.article.crossref output.nonnull\n" " format.pages output\n" " }\n" " if$\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {book}\n" "{ output.bibitem\n" " author empty$\n" " { format.editors \"author and editor\" output.check }\n" " { format.authors output.nonnull\n" " crossref missing$\n" " { \"author and editor\" editor either.or.check }\n" " 'skip$\n" " if$\n" " }\n" " if$\n" " new.block\n" " format.btitle \"title\" output.check\n" " crossref missing$\n" " { format.bvolume output\n" " new.block\n" " format.number.series output\n" " new.sentence\n" " publisher \"publisher\" output.check\n" " address output\n" " }\n" " { new.block\n" " format.book.crossref output.nonnull\n" " }\n" " if$\n" " format.edition output\n" " format.date \"year\" output.check\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {booklet}\n" "{ output.bibitem\n" " format.authors output\n" " new.block\n" " format.title \"title\" output.check\n" " howpublished address new.block.checkb\n" " howpublished output\n" " address output\n" " format.date output\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {inbook}\n" "{ output.bibitem\n" " author empty$\n" " { format.editors \"author and editor\" output.check }\n" " { format.authors output.nonnull\n" " crossref missing$\n" " { \"author and editor\" editor either.or.check }\n" " 'skip$\n" " if$\n" " }\n" " if$\n" " new.block\n" " format.btitle \"title\" output.check\n" " crossref missing$\n" " { format.bvolume output\n" " format.chapter.pages \"chapter and pages\" output.check\n" " new.block\n" " format.number.series output\n" " new.sentence\n" " publisher \"publisher\" output.check\n" " address output\n" " }\n" " { format.chapter.pages \"chapter and pages\" output.check\n" " new.block\n" " format.book.crossref output.nonnull\n" " }\n" " if$\n" " format.edition output\n" " format.date \"year\" output.check\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {incollection}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.title \"title\" output.check\n" " new.block\n" " crossref missing$\n" " { format.in.ed.booktitle \"booktitle\" output.check\n" " format.bvolume output\n" " format.number.series output\n" " format.chapter.pages output\n" " new.sentence\n" " publisher \"publisher\" output.check\n" " address output\n" " format.edition output\n" " format.date \"year\" output.check\n" " }\n" " { format.incoll.inproc.crossref output.nonnull\n" " format.chapter.pages output\n" " }\n" " if$\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {inproceedings}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.title \"title\" output.check\n" " new.block\n" " crossref missing$\n" " { format.in.ed.booktitle \"booktitle\" output.check\n" " format.bvolume output\n" " format.number.series output\n" " format.pages output\n" " address empty$\n" " { organization publisher new.sentence.checkb\n" " organization output\n" " publisher output\n" " format.date \"year\" output.check\n" " }\n" " { address output.nonnull\n" " format.date \"year\" output.check\n" " new.sentence\n" " organization output\n" " publisher output\n" " }\n" " if$\n" " }\n" " { format.incoll.inproc.crossref output.nonnull\n" " format.pages output\n" " }\n" " if$\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {conference} { inproceedings }\n" "\n" "FUNCTION {manual}\n" "{ output.bibitem\n" " author empty$\n" " { organization empty$\n" " 'skip$\n" " { organization output.nonnull\n" " address output\n" " }\n" " if$\n" " }\n" " { format.authors output.nonnull }\n" " if$\n" " new.block\n" " format.btitle \"title\" output.check\n" " author empty$\n" " { organization empty$\n" " { address new.block.checka\n" " address output\n" " }\n" " 'skip$\n" " if$\n" " }\n" " { organization address new.block.checkb\n" " organization output\n" " address output\n" " }\n" " if$\n" " format.edition output\n" " format.date output\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {mastersthesis}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.title \"title\" output.check\n" " new.block\n" " \"Master's thesis\" format.thesis.type output.nonnull\n" " school \"school\" output.check\n" " address output\n" " format.date \"year\" output.check\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {misc}\n" "{ output.bibitem\n" " format.authors output\n" " title howpublished new.block.checkb\n" " format.title output\n" " howpublished new.block.checka\n" " howpublished output\n" " format.date output\n" " new.block\n" " note output\n" " fin.entry\n" " empty.misc.check\n" "}\n" "\n" "FUNCTION {phdthesis}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.btitle \"title\" output.check\n" " new.block\n" " \"PhD thesis\" format.thesis.type output.nonnull\n" " school \"school\" output.check\n" " address output\n" " format.date \"year\" output.check\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {proceedings}\n" "{ output.bibitem\n" " editor empty$\n" " { organization output }\n" " { format.editors output.nonnull }\n" " if$\n" " new.block\n" " format.btitle \"title\" output.check\n" " format.bvolume output\n" " format.number.series output\n" " address empty$\n" " { editor empty$\n" " { publisher new.sentence.checka }\n" " { organization publisher new.sentence.checkb\n" " organization output\n" " }\n" " if$\n" " publisher output\n" " format.date \"year\" output.check\n" " }\n" " { address output.nonnull\n" " format.date \"year\" output.check\n" " new.sentence\n" " editor empty$\n" " 'skip$\n" " { organization output }\n" " if$\n" " publisher output\n" " }\n" " if$\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {techreport}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.title \"title\" output.check\n" " new.block\n" " format.tr.number output.nonnull\n" " institution \"institution\" output.check\n" " address output\n" " format.date \"year\" output.check\n" " new.block\n" " note output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {unpublished}\n" "{ output.bibitem\n" " format.authors \"author\" output.check\n" " new.block\n" " format.title \"title\" output.check\n" " new.block\n" " note \"note\" output.check\n" " format.date output\n" " fin.entry\n" "}\n" "\n" "FUNCTION {default.type} { misc }\n" "\n" "MACRO {jan} {\"January\"}\n" "\n" "MACRO {feb} {\"February\"}\n" "\n" "MACRO {mar} {\"March\"}\n" "\n" "MACRO {apr} {\"April\"}\n" "\n" "MACRO {may} {\"May\"}\n" "\n" "MACRO {jun} {\"June\"}\n" "\n" "MACRO {jul} {\"July\"}\n" "\n" "MACRO {aug} {\"August\"}\n" "\n" "MACRO {sep} {\"September\"}\n" "\n" "MACRO {oct} {\"October\"}\n" "\n" "MACRO {nov} {\"November\"}\n" "\n" "MACRO {dec} {\"December\"}\n" "\n" "MACRO {acmcs} {\"ACM Computing Surveys\"}\n" "\n" "MACRO {acta} {\"Acta Informatica\"}\n" "\n" "MACRO {cacm} {\"Communications of the ACM\"}\n" "\n" "MACRO {ibmjrd} {\"IBM Journal of Research and Development\"}\n" "\n" "MACRO {ibmsj} {\"IBM Systems Journal\"}\n" "\n" "MACRO {ieeese} {\"IEEE Transactions on Software Engineering\"}\n" "\n" "MACRO {ieeetc} {\"IEEE Transactions on Computers\"}\n" "\n" "MACRO {ieeetcad}\n" " {\"IEEE Transactions on Computer-Aided Design of Integrated Circuits\"}\n" "\n" "MACRO {ipl} {\"Information Processing Letters\"}\n" "\n" "MACRO {jacm} {\"Journal of the ACM\"}\n" "\n" "MACRO {jcss} {\"Journal of Computer and System Sciences\"}\n" "\n" "MACRO {scp} {\"Science of Computer Programming\"}\n" "\n" "MACRO {sicomp} {\"SIAM Journal on Computing\"}\n" "\n" "MACRO {tocs} {\"ACM Transactions on Computer Systems\"}\n" "\n" "MACRO {tods} {\"ACM Transactions on Database Systems\"}\n" "\n" "MACRO {tog} {\"ACM Transactions on Graphics\"}\n" "\n" "MACRO {toms} {\"ACM Transactions on Mathematical Software\"}\n" "\n" "MACRO {toois} {\"ACM Transactions on Office Information Systems\"}\n" "\n" "MACRO {toplas} {\"ACM Transactions on Programming Languages and Systems\"}\n" "\n" "MACRO {tcs} {\"Theoretical Computer Science\"}\n" "\n" "READ\n" "\n" "FUNCTION {sortify}\n" "{ purify$\n" " \"l\" change.case$\n" "}\n" "\n" "INTEGERS { len }\n" "\n" "FUNCTION {chop.word}\n" "{ 's :=\n" " 'len :=\n" " s #1 len substring$ =\n" " { s len #1 + global.max$ substring$ }\n" " 's\n" " if$\n" "}\n" "\n" "\n" "FUNCTION {format.lab.names}\n" "{ 's :=\n" " s num.names$ 'numnames :=\n" " numnames #1 =\n" " { s #1 \"{vv }{ll}\" format.name$ }\n" " { numnames #2 =\n" " { s #1 \"{vv }{ll }and \" format.name$ s #2 \"{vv }{ll}\" format.name$ * }\n" " { s #1 \"{vv }{ll }\" format.name$ \"et~al.\" * }\n" " if$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {author.key.label}\n" "{ author empty$\n" " { key empty$\n" " { cite$ #1 #3 substring$ }\n" " { key }\n" " if$\n" " }\n" " { author format.lab.names }\n" " if$\n" "}\n" "\n" "FUNCTION {author.editor.key.label}\n" "{ author empty$\n" " { editor empty$\n" " { key empty$\n" " { cite$ #1 #3 substring$ }\n" " { key }\n" " if$\n" " }\n" " { editor format.lab.names }\n" " if$\n" " }\n" " { author format.lab.names }\n" " if$\n" "}\n" "\n" "FUNCTION {author.key.organization.label}\n" "{ author empty$\n" " { key empty$\n" " { organization empty$\n" " { cite$ #1 #3 substring$ }\n" " { \"The \" #4 organization chop.word #3 text.prefix$ }\n" " if$\n" " }\n" " { key }\n" " if$\n" " }\n" " { author format.lab.names }\n" " if$\n" "}\n" "\n" "FUNCTION {editor.key.organization.label}\n" "{ editor empty$\n" " { key empty$\n" " { organization empty$\n" " { cite$ #1 #3 substring$ }\n" " { \"The \" #4 organization chop.word #3 text.prefix$ }\n" " if$\n" " }\n" " { key }\n" " if$\n" " }\n" " { editor format.lab.names }\n" " if$\n" "}\n" "\n" "FUNCTION {month.to.int}\n" "{\n" " \"l\" change.case$ #3 text.prefix$\n" " 's :=\n" " s \"jan\" = { #1 } {\n" " s \"feb\" = { #2 } {\n" " s \"mar\" = { #3 } {\n" " s \"apr\" = { #4 } {\n" " s \"may\" = { #5 } {\n" " s \"jun\" = { #6 } {\n" " s \"jul\" = { #7 } {\n" " s \"aug\" = { #8 } {\n" " s \"sep\" = { #9 } {\n" " s \"oct\" = { #10 } {\n" " s \"nov\" = { #11 } {\n" " s \"dec\" = { #12 } { #13 } % 13 if nothing matches\n" " if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$}if$\n" "}\n" "\n" "INTEGERS { done c } \n" "FUNCTION { get.day }\n" "{ month field.or.null 's :=\n" " \n" " % Strip out month name\n" " #0 'done := \n" " { s \"\" = not done not and }\n" " { s #1 #1 substring$ \" \" = 'done :=\n" " s #2 global.max$ substring$ 's :=\n" " }\n" " while$\n" "\n" " % Build up first number in t\n" " \"0\" 't :=\n" " #0 'done :=\n" " { s \"\" = not done not and }\n" " { s #1 #1 substring$ chr.to.int$ 'c :=\n" " c #47 > c #58 < and\n" " { t c int.to.chr$ * 't := }\n" " { #1 'done := }\n" " if$\n" " s #2 global.max$ substring$ 's :=\n" " }\n" " while$\n" "\n" " t str.to.int\n" "}\n" "\n" "FUNCTION { sortify.fourdigit }\n" "{ 's :=\n" " s empty$\n" " { \"0000\" }\n" " { s\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION { sortify.twodigit }\n" "{ 's :=\n" " s empty$\n" " { \"00\" }\n" " { s\n" " str.to.int #10 + int.to.str$\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {calc.label}\n" "{ type$ \"book\" =\n" " type$ \"inbook\" =\n" " or\n" " 'author.editor.key.label\n" " { type$ \"proceedings\" =\n" " 'editor.key.organization.label\n" " { type$ \"manual\" =\n" " 'author.key.organization.label\n" " 'author.key.label\n" " if$\n" " }\n" " if$\n" " }\n" " if$\n" " duplicate$\n" "\n" " year empty$\n" " 'skip$\n" " { \", \" * }\n" " if$\n" " year field.or.null purify$ * % CHANGED - pfps - 15 Feb 1989\n" " 'label :=\n" "\n" " year field.or.null purify$\n" " #-1 #4 substring$ \n" " sortify.fourdigit \n" " \" \" *\n" " month field.or.null month.to.int int.to.str$ sortify.twodigit *\n" " \" \" * \n" " get.day int.to.str$ sortify.twodigit *\n" " \" \" *\n" " * sortify 'sort.label :=\n" "}\n" "\n" "FUNCTION {sort.format.names}\n" "{ 's :=\n" " #1 'nameptr :=\n" " \"\"\n" " s num.names$ 'numnames :=\n" " numnames 'namesleft :=\n" " { namesleft #0 > }\n" " { nameptr #1 >\n" " { \" \" * }\n" " 'skip$\n" " if$\n" " s nameptr \"{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}\" format.name$ 't :=\n" " nameptr numnames = t \"others\" = and\n" " { \"et al.\" * }\n" " { t sortify * }\n" " if$\n" " nameptr #1 + 'nameptr :=\n" " namesleft #1 - 'namesleft :=\n" " }\n" " while$\n" "}\n" "\n" "FUNCTION {sort.format.title}\n" "{ 't :=\n" " \"A \" #2\n" " \"An \" #3\n" " \"The \" #4 t chop.word\n" " chop.word\n" " chop.word\n" " sortify\n" " #1 global.max$ substring$\n" "}\n" "\n" "FUNCTION {author.sort}\n" "{ author empty$\n" " { key empty$\n" " { \"to sort, need author or key in \" cite$ * warning$\n" " \"\"\n" " }\n" " { key sortify }\n" " if$\n" " }\n" " { author sort.format.names }\n" " if$\n" "}\n" "\n" "FUNCTION {author.editor.sort}\n" "{ author empty$\n" " { editor empty$\n" " { key empty$\n" " { \"to sort, need author, editor, or key in \" cite$ * warning$\n" " \"\"\n" " }\n" " { key sortify }\n" " if$\n" " }\n" " { editor sort.format.names }\n" " if$\n" " }\n" " { author sort.format.names }\n" " if$\n" "}\n" "\n" "FUNCTION {author.organization.sort}\n" "{ author empty$\n" " { organization empty$\n" " { key empty$\n" " { \"to sort, need author, organization, or key in \" cite$ * warning$\n" " \"\"\n" " }\n" " { key sortify }\n" " if$\n" " }\n" " { \"The \" #4 organization chop.word sortify }\n" " if$\n" " }\n" " { author sort.format.names }\n" " if$\n" "}\n" "\n" "FUNCTION {editor.organization.sort}\n" "{ editor empty$\n" " { organization empty$\n" " { key empty$\n" " { \"to sort, need editor, organization, or key in \" cite$ * warning$\n" " \"\"\n" " }\n" " { key sortify }\n" " if$\n" " }\n" " { \"The \" #4 organization chop.word sortify }\n" " if$\n" " }\n" " { editor sort.format.names }\n" " if$\n" "}\n" "\n" "FUNCTION {presort}\n" "{ calc.label\n" " sort.label\n" " \" \"\n" " *\n" " type$ \"book\" =\n" " type$ \"inbook\" =\n" " or\n" " 'author.editor.sort\n" " { type$ \"proceedings\" =\n" " 'editor.organization.sort\n" " { type$ \"manual\" =\n" " 'author.organization.sort\n" " 'author.sort\n" " if$\n" " }\n" " if$\n" " }\n" " if$\n" " *\n" " \" \"\n" " *\n" " year field.or.null sortify\n" " *\n" " \" \"\n" " *\n" " title field.or.null\n" " sort.format.title\n" " *\n" " #1 entry.max$ substring$\n" " 'sort.key$ :=\n" "}\n" "\n" "ITERATE {presort}\n" "\n" "SORT\n" "\n" "STRINGS { longest.label last.sort.label next.extra }\n" "\n" "INTEGERS { longest.label.width last.extra.num }\n" "\n" "FUNCTION {initialize.longest.label}\n" "{ \"\" 'longest.label :=\n" " #0 int.to.chr$ 'last.sort.label :=\n" " \"\" 'next.extra :=\n" " #0 'longest.label.width :=\n" " #0 'last.extra.num :=\n" "}\n" "\n" "FUNCTION {forward.pass}\n" "{ last.sort.label sort.label =\n" " { last.extra.num #1 + 'last.extra.num :=\n" " last.extra.num int.to.chr$ 'extra.label :=\n" " }\n" " { \"a\" chr.to.int$ 'last.extra.num :=\n" " \"\" 'extra.label :=\n" " sort.label 'last.sort.label :=\n" " }\n" " if$\n" "}\n" "\n" "FUNCTION {reverse.pass}\n" "{ next.extra \"b\" =\n" " { \"a\" 'extra.label := }\n" " 'skip$\n" " if$\n" " label extra.label * 'label :=\n" " label width$ longest.label.width >\n" " { label 'longest.label :=\n" " label width$ 'longest.label.width :=\n" " }\n" " 'skip$\n" " if$\n" " extra.label 'next.extra :=\n" "}\n" "\n" "EXECUTE {initialize.longest.label}\n" "\n" "ITERATE {forward.pass}\n" "\n" "REVERSE {reverse.pass}\n" "\n" "FUNCTION {begin.bib}\n" "{\n" " \"# label-style: default\" write$ newline$\n" "}\n" "\n" "EXECUTE {begin.bib}\n" "\n" "EXECUTE {init.state.consts}\n" "\n" "ITERATE {call.type$}\n" "\n" "FUNCTION {end.bib}\n" "{ newline$\n" "}\n" "\n" "EXECUTE {end.bib}\n"