summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mnras/mnras.bst
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/mnras/mnras.bst')
-rw-r--r--macros/latex/contrib/mnras/mnras.bst1830
1 files changed, 1830 insertions, 0 deletions
diff --git a/macros/latex/contrib/mnras/mnras.bst b/macros/latex/contrib/mnras/mnras.bst
new file mode 100644
index 0000000000..37ed25a32b
--- /dev/null
+++ b/macros/latex/contrib/mnras/mnras.bst
@@ -0,0 +1,1830 @@
+%%+
+%% Name:
+%% mnras.bst
+
+%% Purpose:
+%% BibTeX Bibliography style file for MNRAS
+
+%% Invocation:
+%% latex <latexfile>
+%% bibtex <latexfile>
+%% latex <latexfile>
+%% latex <latexfile>
+
+%% Description:
+%% Provides a bibliography style that will allow bibtex to be
+%% used when writing papers for MNRAS. This allows references
+%% to be inserted automatically.
+
+%% Notes:
+%% This file should be used in conjunction with the Monthly Notices
+%% LaTeX2e class file (mnras.cls).
+%%
+%% Hyperlinks:
+%% To make the eprint and doi bibtex fields hyperlinks, you need
+%% to have \usepackage{hyperref} in your latex preamble.
+
+%% Authors:
+%% John P. Sleath (MRAO)
+%% Tim Jenness (MRAO/JAC)
+%% Norman Gray (Glasgow University) <norman@astro.gla.ac.uk>
+%% Oren Patashnik
+%% Susan King
+%% Sake J. Hogeveen
+%% Philip Hall
+%% Simeon Bird
+
+%% Bugs:
+%% The formatting has been compared to the MN style, and is
+%% believed to be compatible with it. However this comparison has
+%% (for obvious reasons) been done most carefully for articles, so
+%% there may be deviations from it for other entry types.
+
+%% History:
+%% 1988 (Oren Patashnik and Susan King)
+%% Apalike.bst derived from the "alpha.bst" style.
+%% 1990 (Sake J. Hogeveen)
+%% Astron.bst derived from apalike.bst
+%% Summer 1995 (JPS/TJ):
+%% Extensively modified from astron.bst
+%% 19 Jul 1995 (JPS/TJ):
+%% First release (version 1.1b)
+%% 02 May 2001 (NG):
+%% Limit the author lists to eight people.
+%% 19 Jun 2001 (TJ):
+%% Fix inproceedings
+%% 30 Oct 2001 (NG):
+%% Adjust author-limiting to conform to MN style (version 1.2)
+%% 22 Sep 2012 (Philip Hall):
+%% Remove comma before et al when many authors.
+%% 01 July 2013 (Simeon Bird):
+%% Ported Antony Lewis' hyperlinked arxiv entry additions across.
+%% Originally modified for hyperlinked arxiv eprints by Antony Lewis April 2006
+%% August 2013 (NG):
+%% Fixed a/b/c... year suffixes -- these now appear in the
+%% correct order.
+%% February 2014 (TJ):
+%% Add MACROs for MN journal abbreviations
+%% May 2014 (NG):
+%% Shorten some functions, so that bibtex's 'single function
+%% space' parameter doesn't have to be above 100.
+%% Sep 2014 (Jared M. Gabor):
+%% Enabled ArXiv e-print identifier to be printed for articles that
+%% are pre-prints only (and have "ArXiv e-print" in the journal field).
+%% Still some problems with the use of commas. Only 1 comma will appear
+%% between the year and "arXiv..." for such preprints, but for e.g.
+%% conference precedings there may be no comma at all.
+%% 09 March 2015 (TJ):
+%% At the request of Keith Smith this file has been renamed to be mnras.bst
+%% to match the new naming convention for the MNRAS class file.
+%%
+%% License:
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `maintained'.
+%%
+%% The Current Maintainers of this work are T. Jenness
+%% and Norman Gray <norman@astro.gla.ac.uk>
+%%
+%% This work consists of the file mnras.bst
+
+%% This file is maintained on Github: https://github.com/timj/mn2e-bst/
+%%-
+
+ENTRY
+ { address
+ doi
+ eprint
+ archiveprefix % used by ADS
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+% month not used in apalike
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ adsurl % for MN style
+ url
+ }
+ {}
+ { label extra.label sort.label presort.key }
+
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+% If threeauthorvar is set to #1 in initialise.mn2e, then the bibitem for a
+% three-author reference is generated using a \mniiiauthor command.
+% This command should be defined in the .cls file as follows:
+%
+% \def\mniiiauthor#1#2#3{%
+% \@ifundefined{mniiiauth@#1}
+% {\global\expandafter\let\csname mniiiauth@#1\endcsname\null #2}
+% {#3}}
+%
+% The effect of this is that the first time that \mniiiauthor{X}{a}{b}
+% is evaluated, it expands to 'a', and it thereafter expands to 'b'.
+% This implements the MN style guide stipulation that "For three
+% authors, give all three names at first mention, e.g. (Brown, Jones &
+% Smith 1994), but use first author et al. (in roman, not italic)
+% thereafter, e.g. (Brown et al. 1994)."
+%
+% The above definition consumes a command for each such author. It's
+% surely possible to avoid this (with some constructions involving
+% {\\#1}; see Appendix D cleverness), but that would verge on the
+% arcane, and not be really worth it.
+INTEGERS { maxauthors threeauthorvar }
+
+FUNCTION {initialise.mn2e}
+{
+ #8 'maxauthors :=
+ #0 'threeauthorvar :=
+}
+
+STRINGS { s t fmt sep }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { ". " * write$
+ newline$
+% "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { ", " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% output.nonnull.extra is like output.nonnull, except that the thing
+% we output is 'extra' to a block, so if we're in the after.block
+% state, we append it rather than starting a new block.
+FUNCTION {output.nonnull.extra}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { ", " * write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { ", " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output.nonnull.nocomma}
+{'s :=
+ output.state mid.sentence =
+ { write$ }
+ { output.state after.block =
+ { ". " * write$
+ newline$
+% "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { ", " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.extra}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull.extra
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check.nocomma}
+{ 't :=
+ duplicate$ empty$
+ 'pop$ % or warn with { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.nocomma
+ if$
+}
+
+FUNCTION {output.check.extra}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.extra
+ if$
+}
+
+FUNCTION {output.year.check}
+{ year empty$
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ "]{" write$
+ cite$ write$
+ "}" write$
+ % debugging: define eg \def\logsortkey#1{{[\tiny #1]}} to see this
+ %"\logsortkey{" presort.key * "/" * sort.key$ * "}" * write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ 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.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {boldface}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{ " swap$ * "}" * }
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{ " swap$ * "}" * }
+ if$
+}
+
+% Make hyperref links.
+% The LaTeX hyperref package supports a macro \href{URL}{text}
+%
+% On call, the stack contains
+% href-url
+% link-text
+FUNCTION {make.href.hyperref}
+{
+ "\href {" swap$ * "} {" * swap$ * "}" *
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+% Helper functions for print.all.names: print the last or 'others' name.
+%
+% On call, the stack contains
+% a formatted name,
+% and the built-up string of names so far.
+FUNCTION {print.all.names.plain.trailer}
+{ duplicate$ "others" =
+ { pop$ " et~al.," * }
+ { " " swap$ * * }
+ if$
+}
+
+% as above
+FUNCTION {print.all.names.label.trailer}
+{ duplicate$ "others" =
+ { pop$ " et~al." * }
+ { " \& " swap$ * * }
+ if$
+}
+
+% Print out the complete author list
+% (because we have maxauthors or fewer).
+%
+% On call, the stack contains
+% a format string (for format.name$),
+% a name-separator string (such as ", "),
+% an author or editor field,
+% and one of the 'trailer' functions above.
+FUNCTION {print.all.names}
+{ 'fmt :=
+ 'sep :=
+ 's :=
+ s num.names$ 'namesleft :=
+ namesleft #2 < % we're not going to need the trailer function, so discard it
+ 'pop$
+ 'skip$
+ if$
+ #1 'nameptr :=
+ { namesleft #0 > }
+ { s nameptr fmt format.name$ 't := % last name first
+ nameptr #1 >
+ { namesleft #1 >
+ { sep * t * }
+ { % namesleft == 1: this is the last name.
+ % Invoke the trailer function.
+ s num.names$ #2 > % _why_ do we add this extra space for long lists?
+ { " " * }
+ 'skip$
+ if$
+ % This next line is a bit clever.
+ %
+ % We start with a stack
+ % string containing the list of names so far
+ % trailer function
+ %
+ % Rearrange the stack so that we have
+ % 'skip
+ % trailer function
+ % #1
+ % t
+ % names so far
+ % then call if$. This is a rather indirect way of
+ % invoking the trailer function on the stack
+ % t
+ % names so far
+ %
+ % Ta dahhhh!
+ swap$ t swap$ #1 swap$ 'skip$ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% Name formatting. According to the MN instructions for authors, `In
+% the references list [...] List all authors if eight or fewer,
+% otherwise et al.'. This means (according to a ruling from the MN
+% editors) that if there are eight or more authors, they should be
+% listed as "first one plus et al."
+%
+% On call, the stack contains
+% an author or editor field.
+FUNCTION {format.names}
+{ duplicate$ num.names$ maxauthors >
+ { % Too many authors -- format as First author et al.
+ #1 "{vv }{ll}{ jj}{ f., }" format.name$ % last name first
+ " et~al.," *
+ }
+ { 'print.all.names.plain.trailer swap$ " " "{vv }{ll}{ jj}{ f., }" print.all.names }
+ if$
+}
+
+% Format an author/editor field, for inclusion in a label
+% (ie, "Surname, Surname \& Surname")
+%
+% On call, the stack contains an author/editor field.
+FUNCTION {format.names.label}
+{ duplicate$ num.names$ maxauthors >
+ { % Too many authors -- format as First author et al.
+ #1 "{vv }{ll}{ jj}" format.name$ % last name first
+ " et~al.," *
+ }
+ { 'print.all.names.label.trailer swap$ ", " "{vv }{ll}" print.all.names }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names }
+ if$
+}
+
+FUNCTION {format.key} % this function is just for apalike
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { " eds," * }
+ { " ed." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.editors.extra}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { " eds" * }
+ { " ed." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.eprint}
+{ eprint empty$
+ { "" }
+ { " (\mn@eprint {"
+ archiveprefix empty$
+ { "" }
+ { archiveprefix }
+ if$
+ * "} {" * eprint * "})" * }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { ", \mn@doi{" * doi * "}" }
+ 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 {first.page.number}
+{ 't :=
+ ""
+ { t "" =
+ { #0 }
+ { t #1 #1 substring$ "-" = not }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+}
+
+FUNCTION {format.btitle}
+{ title
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #5 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "" series tie.or.space.connect
+ volume empty$
+ 'skip$
+ { " Vol. " * volume * }
+ 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 =
+ { "No." }
+ { "No." }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ " edn" * }
+ { edition "t" change.case$ " edn" * }
+ if$
+ }
+ 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 tie.or.space.connect }
+ { "p." pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.page}
+{ pages empty$
+ { "" }
+ { "p.~" pages first.page.number * }
+ if$
+}
+
+% If a paper is available as a preprint only, ADS will call the
+% journal "ArXiv e-print". In this case MN suggests the journal
+% should be called "preprint".
+FUNCTION {format.journal.doi}
+{ doi empty$
+ { journal "ArXiv e-prints" =
+ { "preprint" }
+ { journal }
+ if$
+ }
+ { journal "ArXiv e-prints" =
+ { "preprint" }
+ { "\mn@doi [" journal * "] {" * doi * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "(" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.page}
+{ volume field.or.null
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages first.page.number * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.page}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ { "(" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages first.page.number * }
+ if$
+ }
+ if$
+}
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "Chapt." }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "in " booktitle * }
+ { format.bvolume empty$
+ { "in " format.editors.extra * ", " * booktitle * }
+ { "in " format.editors.extra * ", " * format.bvolume * ", " * booktitle * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.collect}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "in " }
+ { "in " format.editors.extra * ", " * }
+ if$
+ series empty$
+ { skip$ }
+ { series * }
+ if$
+ volume empty$
+ { number empty$
+ { }
+ { output.state mid.sentence =
+ { "No." }
+ { "No." }
+ if$
+ number tie.or.space.connect *
+ }
+ if$
+ }
+ {
+ output.state mid.sentence =
+ { ", " * }
+ { skip$ }
+ if$
+ "Vol." volume tie.or.space.connect *
+ }
+ if$
+ output.state mid.sentence =
+ { ", " * }
+ { skip$ }
+ if$
+ booktitle *
+ }
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+% the \url{} macro is supplied by hyperref
+FUNCTION {format.url}
+{
+ url empty$
+ { "" }
+ { "\url {" url * "}" * }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{
+ type empty$
+ { "Technical Report" }
+ { type }
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ "in" % this is for apalike
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "in "
+ }
+ { "Vol." volume tie.or.space.connect
+ " of " *
+ }
+ if$
+ "\cite{" * crossref * "}" * % this is for apalike
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "in" % this is for apalike
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ % MN style does not display eprints or DOIs on published articles,
+ % but does link the journal name to any available DOI.
+ crossref missing$
+ { format.journal.doi "journal" output.check.extra
+ % ...and links volume and page information to any available adsurl
+ adsurl empty$
+ { format.vol.page }
+ { format.vol.page adsurl make.href.hyperref }
+ if$
+ output.extra
+ }
+ { format.article.crossref output.nonnull
+ format.page output
+ }
+ if$
+
+ % If the "journal" field is the arXiv, then print out the arXiv identifier
+ journal "ArXiv e-prints" =
+ { format.eprint "eprint" output.check.nocomma }
+ { }
+ if$
+
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % special for apalike
+ format.btitle "title" output.check
+ format.edition output
+ new.block
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ {format.book.crossref output.nonnull}
+ if$
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output % special for
+ output.year.check % apalike
+ format.btitle "title" output.check
+ howpublished output
+ address output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % special for apalike
+ format.btitle "title" output.check
+ format.edition output
+ new.block
+ crossref missing$
+ {
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.pages output
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ crossref missing$
+ {
+ format.in.ed.collect "booktitle" output.check
+ format.edition output
+ booktitle empty$ edition empty$ =
+ { } { new.block } if$
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ format.chapter.pages output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ crossref missing$
+ {
+
+ format.in.ed.booktitle "booktitle" output.check
+ ". " *
+% format.bvolume output
+ before.all 'output.state :=
+ new.block
+% format.title "title" output.check
+ format.number.series output
+ new.block
+% organization output
+ publisher output
+ address output
+ format.pages output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output % special for
+ output.year.check % apalike
+ format.btitle "title" output.check
+ new.block
+ organization address new.block.checkb
+ organization output
+ address output
+ format.edition output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output % special for apalike
+ output.year.check
+ format.btitle output
+ howpublished output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output % special for
+ mid.sentence 'output.state :=
+ output.year.check % apalike
+ format.btitle "title" output.check
+ " " *
+ before.all 'output.state :=
+% new.block
+ format.bvolume output
+ format.number.series output
+ new.block
+% organization output % a nonempty organization
+ publisher output
+ address output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ format.tr.number output.nonnull
+ format.btitle "title" output.check
+ format.url output
+ new.block
+ institution "institution" output.check
+ address output
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output % special for
+ output.year.check % apalike
+ format.btitle "title" output.check
+ note "note" output.check
+ % the following are presumably redundant for 'unpublished'
+ format.eprint "eprint" output.check.nocomma
+ format.doi "doi" output.check.nocomma
+ format.url output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+%% Journal macros for bib files. Should be kept synchronized with
+%% the entries in the class file.
+
+%% Astronomy and Astrophysics
+MACRO {aap} {"A\&A"}
+
+%% Astronomy and Astrophysics
+MACRO {astap} {"A\&A"}
+
+%% Astronomy and Astrophysics Review (the)
+MACRO {aapr} {"A\&ARv"}
+
+%% Astronomy and Astrophysics Supplement Series
+MACRO {aaps} {"A\&AS"}
+
+%% Acta Astronomica
+MACRO {actaa} {"Acta Astron."}
+
+%% Astrofizika
+MACRO {afz} {"Afz"}
+
+%% Astronomical Journal (the)
+MACRO {aj} {"AJ"}
+
+%% Applied Optics
+MACRO {ao} {"Appl. Opt."}
+
+%% Applied Optics
+MACRO {applopt} {"Appl. Opt."}
+
+%% Astrophysics Letters
+MACRO {aplett} {"Astrophys.~Lett."}
+
+%% Astrophysical Journal
+MACRO {apj} {"ApJ"}
+
+%% Astrophysical Journal, Letters
+MACRO {apjl} {"ApJ"}
+
+%% Astrophysical Journal, Letters
+MACRO {apjlett} {"ApJ"}
+
+%% Astrophysical Journal, Supplement
+MACRO {apjs} {"ApJS"}
+
+%% Astrophysical Journal, Supplement
+MACRO {apjsupp} {"ApJS"}
+
+%% Astrophysics and Space Science
+MACRO {apss} {"Ap\&SS"}
+
+%% Annual Review of Astronomy and Astrophysics
+MACRO {araa} {"ARA\&A"}
+
+%% Astronomicheskii Zhurnal
+MACRO {azh} {"Azh"}
+
+%% Bulletin of the American Astronomical Society
+MACRO {baas} {"BAAS"}
+
+%% Bulletin of the Astronomical Institutes of Czechoslovakia
+MACRO {bac} {"Bull. Astron. Inst. Czechoslovakia"}
+
+%% Bulletin Astronomical Institute of the Netherlands
+MACRO {bain} {"Bull. Astron. Inst. Netherlands"}
+
+%% Chinese Astronomy and Astrophysics
+MACRO {caa} {"Chinese Astron. Astrophys."}
+
+%% Chinese Journal of Astronomy and Astrophysics
+MACRO {cjaa} {"Chinese J.~Astron. Astrophys."}
+
+%% Fundamentals of Cosmic Physics
+MACRO {fcp} {"Fundamentals Cosmic Phys."}
+
+%% Geochimica Cosmochimica Acta
+MACRO {gca} {"Geochimica Cosmochimica Acta"}
+
+%% Geophysics Research Letters
+MACRO {grl} {"Geophys. Res. Lett."}
+
+%% IAU Cirulars
+MACRO {iaucirc} {"IAU~Circ."}
+
+%% Icarus
+MACRO {icarus} {"Icarus"}
+
+%% Journal of Astrophysics and Astronomy
+MACRO {japa} {"J.~Astrophys. Astron."}
+
+%% Journal of Cosmology and Astroparticle Physics
+MACRO {jcap} {"J.~Cosmology Astropart. Phys."}
+
+%% Journal of Chemical Physics
+MACRO {jcp} {"J.~Chem.~Phys."}
+
+%% Journal of Geophysics Research
+MACRO {jgr} {"J.~Geophys.~Res."}
+
+%% Journal of Quantitiative Spectroscopy and Radiative Transfer
+MACRO {jqsrt} {"J.~Quant. Spectrosc. Radiative Transfer"}
+
+%% Journal of the RAS of Canada
+MACRO {jrasc} {"J.~R.~Astron. Soc. Canada"}
+
+%% Memoirs of the RAS
+MACRO {memras} {"Mem.~RAS"}
+
+%% Memoire della Societa Astronomica Italiana
+MACRO {memsai} {"Mem. Soc. Astron. Italiana"}
+
+%% Monthly Notes of the Astronomical Society of Southern Africa
+MACRO {mnassa} {"MNASSA"}
+
+%% Monthly Notices of the Royal Astronomical Society
+MACRO {mnras} {"MNRAS"}
+
+%% New Astronomy
+MACRO {na} {"New~Astron."}
+
+%% New Astronomy Review
+MACRO {nar} {"New~Astron.~Rev."}
+
+%% Nature
+MACRO {nat} {"Nature"}
+
+%% Nuclear Physics A
+MACRO {nphysa} {"Nuclear Phys.~A"}
+
+%% Physical Review A: General Physics
+MACRO {pra} {"Phys. Rev.~A"}
+
+%% Physical Review B: Solid State
+MACRO {prb} {"Phys. Rev.~B"}
+
+%% Physical Review C
+MACRO {prc} {"Phys. Rev.~C"}
+
+%% Physical Review D
+MACRO {prd} {"Phys. Rev.~D"}
+
+%% Physical Review E
+MACRO {pre} {"Phys. Rev.~E"}
+
+%% Physical Review Letters
+MACRO {prl} {"Phys. Rev.~Lett."}
+
+%% Publications of the Astronomical Society of Australia
+MACRO {pasa} {"PASA"}
+
+%% Publications of the Astronomical Society of the Pacific
+MACRO {pasp} {"PASP"}
+
+%% Publications of the Astronomical Society of Japan
+MACRO {pasj} {"PASJ"}
+
+%% Physics Reports
+MACRO {physrep} {"Phys.~Rep."}
+
+%% Physica Scripta
+MACRO {physscr} {"Phys.~Scr."}
+
+%% Planetary Space Science
+MACRO {planss} {"Planet. Space~Sci."}
+
+%% Proceedings of the Society of Photo-Optical Instrumentation Engineers
+MACRO {procspie} {"Proc.~SPIE"}
+
+%% Revista Mexicana de Astronomia y Astrofisica
+MACRO {rmxaa} {"Rev. Mex. Astron. Astrofis."}
+
+%% Quarterly Journal of the RAS
+MACRO {qjras} {"QJRAS"}
+
+%% Science
+MACRO {sci} {"Science"}
+
+%% Sky and Telescope
+MACRO {skytel} {"Sky \& Telesc."}
+
+%% Solar Physics
+MACRO {solphys} {"Sol.~Phys."}
+
+%% Soviet Astronomy (aka Astronomy Reports)
+MACRO {sovast} {"Soviet~Ast."}
+
+%% Space Science Reviews
+MACRO {ssr} {"Space Sci. Rev."}
+
+%% Zeitschrift fuer Astrophysik
+MACRO {zap} {"Z.~Astrophys."}
+
+%% Astronomical Society of the Pacific Conference Series
+MACRO {aspconf} {"ASP Conf. Ser."}
+
+%% Astronomische Nachrichten
+MACRO {astnach} {"Astron. Nachr."}
+
+%% Astronomy & Computing
+MACRO {astcomp} {"Astron. Comput."}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+% There are three apalike cases: one person (Jones),
+% two (Jones and de~Bruijn), and more (Jones et~al.).
+% This function is much like format.crossref.editors.
+%
+% The goal here is to be compatible with the MN style prescription that:
+% If there are several references with the same first author,
+% arrange in the following order:
+% firstly single-author papers (by date);
+% then two-author papers (alphabetically by co-author, then by date);
+% then multi-author papers (by date).
+% We deem 'Jones and others' to be a multi-author paper, in this sense,
+% so that it sorts, by date, with the three-or-more author papers.
+% An alternative is to deem 'Jones and others' to sort just after the single-author papers
+% (this case isn't really covered by the above rules, but this position looks sensible);
+% we can get that by putting extra spaces before the 'et~al.', as noted below.
+% Note: we can't put arbitrary characters here, to force the order,
+% because the result of this function appears as the citation label in the typeset result.
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * } % <-----+-- alternate sortings
+ %{ " et~al." * } % <--+
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+% Format names in full
+%
+FUNCTION {format.lab.names.full}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ 'skip$
+ { " \& " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key % apalike uses the whole key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key % apalike uses the whole key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.names.label }
+ if$
+ }
+ { author format.names.label }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key % apalike uses the whole key, no organization
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+% Calculate the 'label' for the entry, which is used for sorting.
+% Note that this does not include the a/b/c... for disambiguating
+% years (that's added later, in forward.pass).
+FUNCTION {calc.label}
+{ % Define t: this is the 'full' set of names
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label.full
+ { type$ "proceedings" =
+ { editor format.names.label }
+ { author format.names.label }
+ if$
+ }
+ if$
+ 't :=
+ % Define s: this is the 'shortened' set of names, with 'et al.',
+ % which are to appear in citations
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label % apalike ignores organization
+ 'author.key.label % for labeling and sorting
+ if$
+ }
+ if$
+ 's :=
+ % the '\protect... is for apalike
+ "\protect\citeauthoryear{" t * "}{" *
+ threeauthorvar
+ numnames #3 =
+ and
+ { "\protect\mniiiauthor{" cite$ * "}{" *
+ t * "}{" * s * "}" * }
+ { s }
+ if$
+ *
+ "}{" *
+ year field.or.null purify$ #-1 #4 substring$ % use all four digits
+ *
+ % the matching closing "}" comes in at the reverse.pass
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$ % apalike uses initials
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't := % <= here
+ "Mc" t #2 text.prefix$ =
+ { "mac" t #3 t text.length$ substring$ * 't := }
+ 'skip$
+ if$
+ nameptr numnames = t "others" = and
+ { " et~al." * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+% Format numbers (eg volume, number, pages) into a fixed-width string,
+% for sorting.
+FUNCTION {number.for.presort}
+{ field.or.null
+ duplicate$ text.length$ 'len :=
+ ""
+ { #5 len > }
+ { "0" *
+ len #1 + 'len := }
+ while$
+ swap$ *
+}
+
+% apalike uses two sorting passes; the first one sets the
+% labels so that the `a's, `b's, etc. can be computed;
+% the second pass puts the references in "correct" order.
+% The presort function is for the first pass. It computes
+% presort.key, sort.label, and sort.key$
+FUNCTION {presort}
+{ calc.label
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label % apalike ignores organization
+ 'author.key.label % for labeling and sorting
+ if$
+ }
+ if$
+ purify$ % remove {braces} round names, to avoid confusing sorting
+ " "
+ *
+ year number.for.presort *
+ #1 entry.max$ substring$
+ 'presort.key :=
+ presort.key
+ " "
+ *
+ % Style apalike prefers 'title field.or.null sort.format.title *' here.
+ % We don't, because we will predominantly be sorting articles in
+ % this style, and we don't include their titles in the final bibliography.
+ volume number.for.presort *
+ number number.for.presort *
+ pages empty$
+ { "0" }
+ { pages first.page.number }
+ if$
+ number.for.presort *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+ sort.key$ 'sort.label :=
+}
+
+EXECUTE {initialise.mn2e}
+
+ITERATE {presort}
+
+SORT % by label, sort.label, title---for final label calculation
+
+% Manage the construction of the 'extra' labels for references. These
+% are the a/b/c/... year suffixes which distinguish different
+% publications by the same author.
+%
+% These apalike labels are only for the text; the 'label' does not
+% appear in the bibiliography, so that the 'longest.label' variable is
+% unnecessary in this style.
+STRINGS { last.key next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.key :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+% By the time that this function is iterated over, the entries have
+% had presort.key assigned, and have been presorted. However these labels
+% do not (by design) respect the presence of multiple entries in the
+% same year, so that there are duplicates. Detect successive
+% duplicates, and add an extra a/b/c... suffix.
+%
+% At the end of this forward.pass, each entry with a duplicate presort.key
+% will have an extra.label, starting with 'b' for the first duplicate,
+% 'c' for the second, and so on. That is, only the first
+% soon-to-be-discovered-to-be-duplicate label will not have an
+% extra.label.
+FUNCTION {forward.pass}
+{ last.key presort.key =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { % first time we've seen this key
+ "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ presort.key 'last.key :=
+ }
+ if$
+}
+
+% Work back through the labels. If, on this pass we discover that the
+% next entry in the sequence (which is the last entry processed in
+% this reverse pass) had an extra.label of 'b', then this tells us
+% that _this_ entry should have an extra.label of 'a', which we were
+% unable to detect in the forward.pass above.
+%
+% We also close the brace pair {...} opened in calc.label
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * "}" * 'label :=
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+% Now that the label is right we sort for real. We sort on sort.label
+% then year then title. Since sort.label starts with presort.key,
+% this sorting is compatible with the letter suffixes added to years.
+%
+% This is for the second sorting pass.
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT % by sort.label, year, title---giving final bibliography order
+
+FUNCTION {begin.bib}
+{
+ preamble$ empty$ % no \etalchar in apalike
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{}" write$ newline$ % no labels in apalike
+ "\makeatletter" write$ newline$
+ % The following is the contents of mnras-insert.sty, minus comments and whitespace.
+ % DO NOT EDIT THIS TEXT,
+ % but instead make mnras-insert.txt, and paste the results in here.
+"\relax" write$ newline$
+"\def\mn@urlcharsother{\let\do\@makeother \do\$\do\&\do\#\do\^\do\_\do\%\do\~}" write$ newline$
+"\def\mn@doi{\begingroup\mn@urlcharsother \@ifnextchar [ {\mn@doi@} {\mn@doi@[]}}" write$ newline$
+"\def\mn@doi@[#1]#2{\def\@tempa{#1}\ifx\@tempa\@empty \href {http://dx.doi.org/#2} {doi:#2}\else \href {http://dx.doi.org/#2} {#1}\fi \endgroup}" write$ newline$
+"\def\mn@eprint#1#2{\mn@eprint@#1:#2::\@nil}" write$ newline$
+"\def\mn@eprint@arXiv#1{\href {http://arxiv.org/abs/#1} {{\tt arXiv:#1}}}" write$ newline$
+"\def\mn@eprint@dblp#1{\href {http://dblp.uni-trier.de/rec/bibtex/#1.xml} {dblp:#1}}" write$ newline$
+"\def\mn@eprint@#1:#2:#3:#4\@nil{\def\@tempa {#1}\def\@tempb {#2}\def\@tempc {#3}\ifx \@tempc \@empty \let \@tempc \@tempb \let \@tempb \@tempa \fi \ifx \@tempb \@empty \def\@tempb {arXiv}\fi \@ifundefined {mn@eprint@\@tempb}{\@tempb:\@tempc}{\expandafter \expandafter \csname mn@eprint@\@tempb\endcsname \expandafter{\@tempc}}}" write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\makeatother" write$ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}