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