bsc-thesis/lucas_unsrt.bst
2019-10-21 10:55:13 +02:00

1390 lines
27 KiB
Plaintext

% ------------------------------------------------------------------------
%
% Defines style/format of references built using bibtex
%
% Modified version of utcaps.bst from the University of Texas
%
% 2011/01/04: Add URL processing from APS revtex bib style
% 2005/06/30: Added arXiv: for arXiv references. Added doi as another form of eprint archive (only for articles so far).
% See http://www.crossref.org/ and http://www.doi.org/hb.html for information on doi's (Digital Object Identifiers). G. Alverson.
% 2005/05/12: re-adapted for the UT style (http://golem.ph.utexas.edu/~distler/TeXstuff/utcaps.bst) from the unsrt style. G. Alverson.
% 2003/04/28: Original version for use at CERN/CMS. L. Taylor.
%
% ------------------------------------------------------------------------
% UT Physics bibliographic style, ver. 1.8a. Based on:
%
%X IEEE Transactions bibliography style (29-Jan-88 version)
%X numeric labels, order-of-reference, IEEE abbreviations,
%X quotes around article titles, commas separate all fields
%X except after book titles and before "notes". Otherwise,
%X much like the "plain" family, from which this is adapted.
%X
%X History
%X 9/30/85 (HWT) Original version, by Howard Trickey.
%X 1/29/88 (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
%X THIS `ieeetr' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
%
% Modifications: 1 added hypertex support and "archive" and "eprint" fields.
% 2 parentheses around dates, and no "pp." for article entries
% 3 "publisher, address" instead of "address: publisher"
% 4 added "report" field for article entries.
% 5 particle physics-oriented abbreviations, rather than ieee.
% 6 added "collaboration" field, as per
% Jonathan Flynn' suggestion. SPIRES now supports this field.
% 7 Improved output of Proceedings entries
%
% Modified by Jacques Distler, 11/99
% History: ver 1.0 9/96
% ver 1.1 10/96 - added "collaboration" field
% ver 1.2 7/97 - added a "\providecommand{\href}[2]{#2}"
% to handle case where \href is not defined
% ver 1.3 12/97 - fixed lousy-looking proceedings output.
% ver 1.4 1/98 - fixed format.number, address in
% proceedings entries
% ver 1.5 3/99 - added (nonprinting) CITATION field for
% SLAC internal use
% ver 1.6 4/99 - Fix to ensure %%CITATION output not broken
% across lines. Added new.sentence to ensure
% previous output properly terminated.
% (Moral: test before you release.)
% ver 1.7 10/99 - "et.~al." should be "et al." Morons!
% ver 1.8 11/99 - Changed the Web URL to the more portable
% arXiv.org. The "archive" field functions as
% a true base-URL. This is NOT A
% BACKWARDS-COMPATIBLE change!
% ver 1.8a 12/99 - MACROs for arXiv and cogprints
% BaseURL's defined.
%
% HyperTeX Wizardry:
%
% The following are equivalent:
% archive = arXiv
% eprint = "hep-th/9605023"
% and
% eprint = "hep-th/9605023"
% both produce
% \href{http://arXiv.org/abs/hep-th/9605023}{{\tt hep-th/9605023}}
% in the bibliographic output at the appropriate point. More generally,
% if the archive field is present, we produce a URL of the form
% "archive/eprint" as the first argument of the \href. If absent, the base
% URL defaults to "http://arXiv.org/abs"
% If you are using a hypertex macropackage, like hyperref.sty, this command
% will create a link to the eprint at Los Alamos (or wherever).
%
% The bibtex output produced by SPIRES, while far from perfect, is pretty
% suitable for use with this style. Indeed, this style was designed with
% SPIRES in mind.
ENTRY
{ address
author
booktitle
chapter
edition
editor
howpublished
institution
journal
key
month
note
number
organization
pages
publisher
school
series
title
type
volume
year
archive
eprint
doi
url
report
collaboration
SLACcitation
}
{}
{ label extra.label sort.label short.list }
INTEGERS { output.state before.all mid.sentence after.quote after.sentence
after.quoted.block after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.quote :=
#3 'after.sentence :=
#4 'after.quoted.block :=
#5 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.quote =
{ " " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
{ output.state before.all =
'write$
{ output.state after.quoted.block =
{ write$
newline$
"\newblock " write$
}
{ add.period$ " " * write$ }
if$
}
if$
}
if$
}
if$
mid.sentence 'output.state :=
}
if$
s
}
FUNCTION {output}
{ duplicate$ empty$
'pop$
'output.nonnull
if$
}
FUNCTION {output.nopunct}
{
write$
}
FUNCTION {output.check}
{ 't :=
duplicate$ empty$
{ pop$ "empty " t * " in " * cite$ * warning$ }
'output.nonnull
if$
}
FUNCTION {blank.sep}
{ after.quote 'output.state :=
}
FUNCTION {fin.entry}
{ output.state after.quoted.block =
'skip$
'add.period$
if$
write$
newline$
}
FUNCTION {new.block}
{ output.state before.all =
'skip$
{ output.state after.quote =
{ after.quoted.block 'output.state := }
{ after.block 'output.state := }
if$
}
if$
}
FUNCTION {new.sentence}
{ output.state after.block =
'skip$
{ output.state before.all =
'skip$
{ after.sentence 'output.state := }
if$
}
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {new.block.checka}
{ empty$
'skip$
'new.block
if$
}
FUNCTION {new.block.checkb}
{ empty$
swap$ empty$
and
'skip$
'new.block
if$
}
FUNCTION {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "\textit{ " swap$ * "}" * }
if$
}
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{
nameptr #3 >
{
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
{
s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{
nameptr #3 =
{ ", " * t * "{ et~al.}" *}
{ ", " * t * }
if$
}
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " {et~al.}" * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
if$
}
while$
}
FUNCTION {format.key}
{ empty$
{ key field.or.null }
{ "" }
if$
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.eprint}
{ eprint empty$
{ ""}
{ archive empty$
{"\href{http://www.arXiv.org/abs/" eprint * "}" *
"{\texttt{ arXiv:" * eprint * "}}" *}
{"\href{" archive * "/" * eprint * "}" *
"{\texttt{ " * eprint * "}}" *}
if$
}
if$
}
FUNCTION {format.doi}
{ doi empty$
{ ""}
{"\href{http://dx.doi.org/" doi * "}{\doi{" * doi * "}}" *}
if$
}
FUNCTION {format.report}
{ report empty$
{ ""}
{ report}
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ "``" title * "''," * }
if$
}
FUNCTION {format.full.names}
{'s :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}" format.name$ 't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {author.editor.full}
{ author empty$
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
{ author format.full.names }
if$
}
FUNCTION {author.full}
{ author empty$
{ "" }
{ author format.full.names }
if$
}
FUNCTION {editor.full}
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
FUNCTION {make.full.names}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.full
{ type$ "proceedings" =
'editor.full
'author.full
if$
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem{" write$
cite$ write$
"}" write$
newline$
""
before.all 'output.state :=
}
FUNCTION {format.title.p}
{ title empty$
{ "" }
{ "``" title * "''." * }
if$
}
FUNCTION {n.dashify}
{ 't :=
""
{ t empty$ not }
{ t #1 #1 substring$ "-" =
{ t #1 #2 substring$ "--" = not
{ "--" *
t #2 global.max$ substring$ 't :=
}
{ { t #1 #1 substring$ "-" = }
{ "-" *
t #2 global.max$ substring$ 't :=
}
while$
}
if$
}
{ t #1 #1 substring$ *
t #2 global.max$ substring$ 't :=
}
if$
}
while$
}
FUNCTION {format.date}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
'year
{ month ", " * year * }
if$
}
if$
}
FUNCTION {format.date.paren}
{ year empty$
{ month empty$
{ "" }
{ "there's a month but no year in " cite$ * warning$
month
}
if$
}
{ month empty$
{"(" year * ")" *}
{"(" month * ", " * year * ")" *}
if$
}
if$
}
FUNCTION {format.collaboration}
{ collaboration empty$
{ "" }
{ "{ " collaboration * "} " * "Collaboration" * }
if$
}
FUNCTION {format.SLACcitation}
{ SLACcitation empty$
{""}
{ newline$ SLACcitation output "" newline$ }
if$
}
FUNCTION {format.btitle}
{ "``" title * "''" * } %---------------- Modified (LT) was: { title emphasize }
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
FUNCTION {either.or.check}
{ empty$
'pop$
{ "can't use both " swap$ * " fields in " * cite$ * warning$ }
if$
}
FUNCTION {format.bvolume}
{ volume empty$
{ "" }
{ "volume" volume tie.or.space.connect %---------------- Modified (GA) was: "vol.~" volume *
series empty$
'skip$
{ " of " * series emphasize * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ output.state mid.sentence =
{ "number" } %---------------- Modified (GA) was: "no.~", etc
{ "Number" }
if$
number tie.or.space.connect %---------------- Modified (GA) was: number *
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ edition "l" change.case$ " edition" * }%---------------- Modified (GA) was: "~ed." *
if$
}
INTEGERS { multiresult }
FUNCTION {multi.page.check}
{ 't :=
#0 'multiresult :=
{ multiresult not
t empty$ not
and
}
{ t #1 #1 substring$
duplicate$ "-" =
swap$ duplicate$ "," =
swap$ "+" =
or or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
while$
multiresult
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "pp.~" pages n.dashify * }
{ "p.~" pages * }
if$
}
if$
}
FUNCTION {format.pages.nopp}
{ pages empty$
{ "" }
{ pages multi.page.check
{ pages n.dashify }
{ pages }
if$
}
if$
}
FUNCTION {format.volume}
{ volume empty$
{ "" }
{ "\textbf{ " volume * "}" * }
if$
}
FUNCTION {format.number}
{ number empty$
{ "" }
{ "no.~" number * "," *}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "ch.~" chapter * }
{ type "l" change.case$ chapter tie.or.space.connect }
if$
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ "in " booktitle emphasize *
editor empty$
'skip$
{ ", " * format.editors * }
if$
}
if$
}
FUNCTION {format.thesis.type}
{ type empty$
'skip$
{ pop$
output.state after.block =
{ type "t" change.case$ }
{ type "l" change.case$ }
if$
}
if$
}
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
month empty$ year empty$ note empty$
and and and and and
{ "all relevant fields are empty in " cite$ * warning$ }
'skip$
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Technical Report" } %---------------- Modified (GA) was: Tech. Rep.
'type
if$
number empty$
{ "l" change.case$ }
{ number tie.or.space.connect }
if$
}
FUNCTION {format.paddress}
{ address empty$
{ "" }
{ "(" address * ")" * }
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "in \textit{ " journal * "\/}" * }
if$
}
{ "in " key * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
editor num.names$ duplicate$
#2 >
{ pop$ " {et.~al.}" * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ " {et.~al.}" * }
{ " and " * editor #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
"In "
}
{ "Volume" volume tie.or.space.connect %---------------- Modified (GA) was: "Vol.~" volume *
" of " *
}
if$
editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ series empty$
{ "need editor, key, or series for " cite$ * " to crossref " *
crossref * warning$
"" *
}
{ "\textit{ " * series * "\/}" * }
if$
}
{ key * }
if$
}
{ format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.incoll.inproc.crossref}
{ editor empty$
editor field.or.null author field.or.null =
or
{ key empty$
{ booktitle empty$
{ "need editor, key, or booktitle for " cite$ * " to crossref " *
crossref * warning$
""
}
{ "in \textit{" booktitle * "\/}" * }
if$
}
{ "in " key * }
if$
}
{ "in " format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {format.url}
{
url duplicate$ empty$
{ pop$ "" }
{
"\url "
"{" * swap$ * "}" *
}
if$
}
FUNCTION {href.command}
{
"\href "
}
FUNCTION {noop.command}
{
"\hrefCMSnoop "
}
FUNCTION {link.tag.open}
{
doi duplicate$ empty$
{
pop$
url duplicate$ empty$
{
pop$ "" noop.command
}{
href.command
}
if$
}
{
pop$ "" noop.command
}
if$
"{" * swap$ * "} {" *
}
FUNCTION {link.tag.shut}
{
"}"
}
FUNCTION {link.open}
{
link.tag.open output.nopunct
}
FUNCTION {link.shut}
{
link.tag.shut *
}
FUNCTION {add.doi}
{
link.tag.open swap$ * link.tag.shut *
}
FUNCTION {article}
{ output.bibitem
format.collaboration output
collaboration empty$
{
format.authors "author" output.check
}
{}
if$
link.open
format.title "title" output.check
link.shut
blank.sep
crossref missing$
{ journal missing$
{}
{ journal emphasize "journal" output.check
blank.sep
format.volume output
blank.sep
format.date.paren "year" output.check
month empty$
{ format.number output }
'skip$
if$
blank.sep
format.pages.nopp output
}
if$
report missing$
{ format.doi output format.eprint output }
{ blank.sep format.report output format.doi output format.eprint output }
if$
}
{ format.article.crossref output.nonnull
format.pages output
format.doi output
format.eprint output
}
if$
new.sentence
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {book}
{ output.bibitem
format.collaboration output
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
new.block
format.number.series output
new.sentence
publisher "publisher" output.check
address output
}
{ new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.collaboration output
format.authors output
title empty$
{ "empty title in " cite$ * warning$
howpublished new.sentence.checka
}
{ howpublished empty$ not
address empty$ month empty$ year empty$ and and
or
{ format.title.p output.nonnull }
{ format.title output.nonnull }
if$
blank.sep
}
if$
howpublished output
address output
format.date output
new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
format.collaboration output
author empty$
{ format.editors "author and editor" output.check }
{ format.authors output.nonnull
crossref missing$
{ "author and editor" editor either.or.check }
'skip$
if$
}
if$
link.open
format.btitle "title" output.check
link.shut
crossref missing$
{ format.bvolume output
format.chapter.pages "chapter and pages" output.check
new.block
format.number.series output
new.block
publisher "publisher" output.check
address output
}
{ format.chapter.pages "chapter and pages" output.check
new.block
format.book.crossref output.nonnull
}
if$
format.edition output
format.date "year" output.check
new.block
format.eprint output
new.block
note output
new.sentence
format.doi output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
link.open
format.title "title" output.check
link.shut
blank.sep
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.chapter.pages output
new.block
publisher "publisher" output.check
address output
format.edition output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.chapter.pages output
}
if$
new.block
format.eprint output
new.block
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.collaboration output
format.authors "author" output.check
link.open
format.title "title" output.check
link.shut
blank.sep
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
format.pages output
organization output
new.block
publisher output
address output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull
format.pages output
}
if$
new.block
format.eprint output
new.block
note output
new.sentence
format.doi output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
format.collaboration output
author empty$
{ organization empty$
'skip$
{ organization output.nonnull
address output
}
if$
}
{ format.authors output.nonnull }
if$
format.btitle "title" output.check
author empty$
{ organization empty$
{ address new.block.checka
address output
}
'skip$
if$
}
{ organization address new.block.checkb
organization output
address output
}
if$
format.edition output
format.date output
new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
link.open
format.title "title" output.check
link.shut
blank.sep
"Master's thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.collaboration output
format.authors output
link.open
title empty$
{ howpublished new.sentence.checka }
{ howpublished empty$ not
month empty$ year empty$ and
or
{ format.title.p output.nonnull }
{ format.title output.nonnull }
if$
blank.sep
}
if$
link.shut
howpublished output
format.date output
new.block
note output
new.sentence
format.doi output
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
link.open
format.btitle "title" output.check
link.shut
new.block
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
new.block
format.eprint output
new.block
note output
new.sentence
format.doi output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization output }
{ format.editors output.nonnull }
if$
link.open
format.btitle "title" output.check
format.bvolume output
format.number.series output
link.shut
editor empty$
'skip$
{ organization output }
if$
new.block
publisher output
address output
format.date.paren "year" output.check
new.block
format.eprint output
note output
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
collaboration empty$
{
format.authors "author" output.check
}
{
format.collaboration output
}
if$
link.open
format.title "title" output.check
link.shut
blank.sep
format.tr.number output.nonnull
institution "institution" output.check
address output
format.date.paren "year" output.check
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.collaboration output
collaboration empty$
{
format.authors "author" output.check
}
{}
if$
link.open
format.title "title" output.check
link.shut
blank.sep
format.date.paren "year" output.check
new.sentence
format.eprint output
new.sentence
note "note" output.check
new.sentence
format.SLACcitation output
fin.entry
}
FUNCTION {default.type} { misc }
%---------------- Modified (GA) was: short month names, only HEP journals, not Computing
MACRO {jan} {"January"}
MACRO {feb} {"February"}
MACRO {mar} {"March"}
MACRO {apr} {"April"}
MACRO {may} {"May"}
MACRO {jun} {"June"}
MACRO {jul} {"July"}
MACRO {aug} {"August"}
MACRO {sep} {"September"}
MACRO {oct} {"October"}
MACRO {nov} {"November"}
MACRO {dec} {"December"}
MACRO {acmcs} {"ACM Computing Surveys"}
MACRO {acta} {"Acta Informatica"}
MACRO {cacm} {"Communications of the ACM"}
MACRO {cmp} {"Comm. Math. Phys."}
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
MACRO {ibmsj} {"IBM Systems Journal"}
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
MACRO {ieeetc} {"IEEE Transactions on Computers"}
MACRO {ieeetcad}
{"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
MACRO {ijmp} {"Int. J. Mod. Phys."}
MACRO {ipl} {"Information Processing Letters"}
MACRO {jacm} {"Journal of the ACM"}
MACRO {jcss} {"Journal of Computer and System Sciences"}
MACRO {jinst} {"Journal of Instrumentation"}
MACRO {mpl} {"Mod. Phys. Lett."}
MACRO {nim} {"Nucl. Instrum. and Methods"}
MACRO {nup} {"Nucl. Phys."}
MACRO {pl} {"Phys. Lett."}
MACRO {pr} {"Phys. Rev."}
MACRO {prl} {"Phys. Rev. Lett."}
MACRO {rmp} {"Rev. Mod. Phys."}
MACRO {scp} {"Science of Computer Programming"}
MACRO {sicomp} {"SIAM Journal on Computing"}
MACRO {tcs} {"Theoretical Computer Science"}
MACRO {tocs} {"ACM Transactions on Computer Systems"}
MACRO {tods} {"ACM Transactions on Database Systems"}
MACRO {tog} {"ACM Transactions on Graphics"}
MACRO {toms} {"ACM Transactions on Mathematical Software"}
MACRO {toois} {"ACM Transactions on Office Information Systems"}
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
MACRO {arXiv} {"http://arXiv.org/abs"}
MACRO {cogprints} {"http://cogprints.soton.ac.uk/abs"}
READ
STRINGS { longest.label }
INTEGERS { number.label longest.label.width }
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#1 'number.label :=
#0 'longest.label.width :=
}
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
number.label #1 + 'number.label :=
label width$ longest.label.width >
{ label 'longest.label :=
label width$ 'longest.label.width :=
}
'skip$
if$
}
EXECUTE {initialize.longest.label}
ITERATE {longest.label.pass}
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\providecommand{\href}[2]{#2}"
"\begingroup\raggedright\begin{thebibliography}{" * longest.label *
"}%" * write$ newline$
"\makeatletter" write$ newline$
"\providecommand{" noop.command "}[0]{\@secondoftwo}%" * * write$ newline$
"\makeatother" write$ newline$
"\providecommand{\doi}{\texttt{doi:}\begingroup \urlstyle{tt}\Url}" write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}\endgroup" write$ newline$
}
EXECUTE {end.bib}