a72f7ea693101cc48bafbb4db6bb437d828011c4ql% BibTeX standard bibliography style `abbrv'
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % Copyright (C) 1985, all rights reserved.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % Copying of this file is authorized only if either
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % (1) you make absolutely no changes to your copy, including name, or
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % (2) if you do make changes, you name it something other than
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % This restriction helps ensure that all standard styles are identical.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql % The file btxbst.doc has the documentation for this style.
a72f7ea693101cc48bafbb4db6bb437d828011c4ql howpublished
a72f7ea693101cc48bafbb4db6bb437d828011c4ql institution
a72f7ea693101cc48bafbb4db6bb437d828011c4ql organization
9aa73b6813b3fd35e78fcc44fd17535e765e504cQin Michael LiINTEGERS { output.state before.all mid.sentence after.sentence after.block }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlSTRINGS { s t }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { ", " * write$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "\newblock " write$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { add.period$ " " * write$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {output}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ duplicate$ empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql duplicate$ empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { pop$ "empty " t * " in " * cite$ * warning$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "\bibitem{" write$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql cite$ write$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "}" write$
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {not}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {and}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { pop$ #0 }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ { pop$ #1 }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ duplicate$ empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {emphasize}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ duplicate$ empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { pop$ "" }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "{\em " swap$ * "}" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlINTEGERS { nameptr namesleft numnames }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql #1 'nameptr :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql s num.names$ 'numnames :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql numnames 'namesleft :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { namesleft #0 > }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql nameptr #1 >
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { namesleft #1 >
94d05f6c7f329fdf908da99ab50b37d3d33f9fe5Qin Michael Li { ", " * t * }
94d05f6c7f329fdf908da99ab50b37d3d33f9fe5Qin Michael Li { numnames #2 >
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { " et~al." * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { " and " * t * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql nameptr #1 + 'nameptr :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql namesleft #1 - 'namesleft :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql editor num.names$ #1 >
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { ", eds." * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { ", ed." * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ title empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { title "t" change.case$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t empty$ not }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t #1 #1 substring$ "-" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t #1 #2 substring$ "--" = not
a72f7ea693101cc48bafbb4db6bb437d828011c4ql t #2 global.max$ substring$ 't :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { { t #1 #1 substring$ "-" = }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql t #2 global.max$ substring$ 't :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t #1 #1 substring$ *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql t #2 global.max$ substring$ 't :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ year empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { month empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "there's a month but no year in " cite$ * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { month empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { month " " * year * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ title emphasize
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ duplicate$ text.length$ #3 <
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "can't use both " swap$ * " fields in " * cite$ * warning$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ volume empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "vol." volume tie.or.space.connect
a72f7ea693101cc48bafbb4db6bb437d828011c4ql series empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { " of " * series emphasize * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "volume and number" number either.or.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ volume empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { number empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "number" }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "Number" }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql series empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "there's a number but no series in " cite$ * warning$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { " in " * series * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ edition empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { edition "l" change.case$ " edition" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { edition "t" change.case$ " edition" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlINTEGERS { multiresult }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql #0 'multiresult :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { multiresult not
a72f7ea693101cc48bafbb4db6bb437d828011c4ql t empty$ not
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t #1 #1 substring$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql duplicate$ "-" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql swap$ duplicate$ "," =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql swap$ "+" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { #1 'multiresult := }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t #2 global.max$ substring$ 't := }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql multiresult
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ pages empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "page" pages tie.or.space.connect }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql number empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "(" number * ")" * *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql volume empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "there's a number but no volume in " cite$ * warning$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql pages empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { duplicate$ empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { ":" * pages n.dashify * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ chapter empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { type empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "chapter" }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { type "l" change.case$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql pages empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { ", " * format.pages * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ booktitle empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "In " booktitle emphasize * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "In " format.editors * ", " * booktitle emphasize * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ author empty$ title empty$ howpublished empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql month empty$ year empty$ note empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql and and and and and
a72f7ea693101cc48bafbb4db6bb437d828011c4ql key empty$ not and
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "all relevant fields are empty in " cite$ * warning$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ type empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ type empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "Technical Report" }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql number empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { journal empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "need key or journal for " cite$ * " to crossref " * crossref *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "In {\em " journal * "\/}" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "In " key * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql " \cite{" * crossref * "}" *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ editor #1 "{vv~}{ll}" format.name$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql editor num.names$ duplicate$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { pop$ " et~al." * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { " et~al." * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { " and " * editor #2 "{vv~}{ll}" format.name$ * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ volume empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "Vol." volume tie.or.space.connect
a72f7ea693101cc48bafbb4db6bb437d828011c4ql editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { series empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "need editor, key, or series for " cite$ * " to crossref " *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "{\em " * series * "\/}" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql " \cite{" * crossref * "}" *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { booktitle empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "need editor, key, or booktitle for " cite$ * " to crossref " *
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "In {\em " booktitle * "\/}" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "In " key * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql " \cite{" * crossref * "}" *
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {article}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { journal emphasize "journal" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {book}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "author and editor" editor either.or.check }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher "publisher" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {booklet}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql howpublished address new.block.checkb
a72f7ea693101cc48bafbb4db6bb437d828011c4ql howpublished output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {inbook}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "author and editor" editor either.or.check }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher "publisher" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {incollection}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher "publisher" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {inproceedings}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql crossref missing$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization publisher new.sentence.checkb
a72f7ea693101cc48bafbb4db6bb437d828011c4ql organization output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql organization output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {conference} { inproceedings }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {manual}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization output.nonnull
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization address new.block.checkb
a72f7ea693101cc48bafbb4db6bb437d828011c4ql organization output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {mastersthesis}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql school "school" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {misc}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql title howpublished new.block.checkb
a72f7ea693101cc48bafbb4db6bb437d828011c4ql howpublished output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {phdthesis}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql school "school" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {proceedings}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization output }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization publisher new.sentence.checkb
a72f7ea693101cc48bafbb4db6bb437d828011c4ql organization output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization output }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql publisher output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {techreport}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql institution "institution" output.check
a72f7ea693101cc48bafbb4db6bb437d828011c4ql address output
a72f7ea693101cc48bafbb4db6bb437d828011c4ql note output
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {unpublished}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {default.type} { misc }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {jan} {"Jan."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {feb} {"Feb."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {mar} {"Mar."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {apr} {"Apr."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {may} {"May"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {jun} {"June"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {jul} {"July"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {aug} {"Aug."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {sep} {"Sept."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {oct} {"Oct."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {nov} {"Nov."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {dec} {"Dec."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {acmcs} {"ACM Comput. Surv."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {acta} {"Acta Inf."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {cacm} {"Commun. ACM"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {ibmjrd} {"IBM J. Res. Dev."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {ibmsj} {"IBM Syst.~J."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {ieeese} {"IEEE Trans. Softw. Eng."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {ieeetc} {"IEEE Trans. Comput."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {ieeetcad}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {ipl} {"Inf. Process. Lett."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {jacm} {"J.~ACM"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {jcss} {"J.~Comput. Syst. Sci."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {scp} {"Sci. Comput. Programming"}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {sicomp} {"SIAM J. Comput."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {tocs} {"ACM Trans. Comput. Syst."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {tods} {"ACM Trans. Database Syst."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {tog} {"ACM Trans. Gr."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {toms} {"ACM Trans. Math. Softw."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {toois} {"ACM Trans. Office Inf. Syst."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlMACRO {tcs} {"Theoretical Comput. Sci."}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {sortify}
a72f7ea693101cc48bafbb4db6bb437d828011c4qlINTEGERS { len }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql s #1 len substring$ =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { s len #1 + global.max$ substring$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql #1 'nameptr :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql s num.names$ 'numnames :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql numnames 'namesleft :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { namesleft #0 > }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { nameptr #1 >
a72f7ea693101cc48bafbb4db6bb437d828011c4ql s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql nameptr numnames = t "others" = and
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "et al" * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { t sortify * }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql nameptr #1 + 'nameptr :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql namesleft #1 - 'namesleft :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "The " #4 t chop.word
a72f7ea693101cc48bafbb4db6bb437d828011c4ql #1 global.max$ substring$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "to sort, need author or key in " cite$ * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key sortify }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "to sort, need author, editor, or key in " cite$ * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key sortify }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ author empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "to sort, need author, organization, or key in " cite$ * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key sortify }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "The " #4 organization chop.word sortify }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ editor empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { organization empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "to sort, need editor, organization, or key in " cite$ * warning$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { key sortify }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { "The " #4 organization chop.word sortify }
a72f7ea693101cc48bafbb4db6bb437d828011c4qlFUNCTION {presort}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ type$ "book" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql type$ "inbook" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { type$ "proceedings" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { type$ "manual" =
a72f7ea693101cc48bafbb4db6bb437d828011c4ql year field.or.null sortify
a72f7ea693101cc48bafbb4db6bb437d828011c4ql #1 entry.max$ substring$
a72f7ea693101cc48bafbb4db6bb437d828011c4qlITERATE {presort}
a72f7ea693101cc48bafbb4db6bb437d828011c4ql label width$ longest.label.width >
a72f7ea693101cc48bafbb4db6bb437d828011c4ql label width$ 'longest.label.width :=
a72f7ea693101cc48bafbb4db6bb437d828011c4ql{ preamble$ empty$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql { preamble$ write$ newline$ }
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "\begin{thebibliography}{" longest.label * "}" * write$ newline$
a72f7ea693101cc48bafbb4db6bb437d828011c4ql "\end{thebibliography}" write$ newline$