summaryrefslogtreecommitdiff
path: root/biblio/bibtex/contrib/oxford
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /biblio/bibtex/contrib/oxford
Initial commit
Diffstat (limited to 'biblio/bibtex/contrib/oxford')
-rw-r--r--biblio/bibtex/contrib/oxford/README112
-rw-r--r--biblio/bibtex/contrib/oxford/lang/english.mbs330
-rw-r--r--biblio/bibtex/contrib/oxford/lang/esperant.mbs292
-rw-r--r--biblio/bibtex/contrib/oxford/lang/finnish.mbs281
-rw-r--r--biblio/bibtex/contrib/oxford/lang/french.mbs292
-rw-r--r--biblio/bibtex/contrib/oxford/lang/german.mbs317
-rw-r--r--biblio/bibtex/contrib/oxford/lang/italian.mbs297
-rw-r--r--biblio/bibtex/contrib/oxford/lang/norsk.mbs299
-rw-r--r--biblio/bibtex/contrib/oxford/lang/spanish.mbs301
-rw-r--r--biblio/bibtex/contrib/oxford/lang/svenska.mbs297
-rw-r--r--biblio/bibtex/contrib/oxford/oxford.sty303
-rw-r--r--biblio/bibtex/contrib/oxford/oxford_en.bst1889
-rw-r--r--biblio/bibtex/contrib/oxford/oxford_in.bst1889
-rw-r--r--biblio/bibtex/contrib/oxford/oxford_se.bst1890
14 files changed, 8789 insertions, 0 deletions
diff --git a/biblio/bibtex/contrib/oxford/README b/biblio/bibtex/contrib/oxford/README
new file mode 100644
index 0000000000..9a6133cd9d
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/README
@@ -0,0 +1,112 @@
+ OXFORD STYLE PACKAGE
+
+This is the oxford bst style package, version 0.4. It is a bibtex style geared
+at citations for the humanities.
+
+ STYLE
+The oxford style implements the oxford style interpreted through the eye of
+a swede working in the fields of the history of ideas.
+
+The style is based on Harvard.sty and a heavily hacked bst-file generated with
+custom-bib. It currently only supports
+
+\cite[]{}
+
+and
+
+\cite{}
+
+and only in abrevation mode.
+
+The form of the bibitem entries is
+\harvarditem[Jones, STITLE]{Jones, TITLE .... (PUBLISH:ADRESS, YEAR)}{1990}{key}
+ Brian Jones, TITLE ... (PUBLISH:ADRESS, YEAR).
+
+The style gives the full reference att the first citation and then an
+abrevated one.
+
+The file suports an additional entry in the bib-file, stitle (short title). It
+is used in the abrevated citation.
+
+The abrevated citation follows these rules:
+
+If (lastname == UNIQ) {
+ lastname
+} elsif (stitle == EXIST) {
+ lastname, stitle
+} else {
+ lastname, title
+}
+
+oxford.sty also inserts an "ibid." if the current citation is the same
+as the last one.
+
+
+ USAGE
+
+\usepackage[default, none]{oxford}
+.
+.
+.
+\bibliographystyle{oxford_xx}
+
+where xx stands for chosen language
+
+
+ INSTALL
+
+In the distibution there are only two languages directly supported:
+swedish
+english
+
+You install the oxford package either by putting the files in places you alreday
+know are supported by latex, eg.:
+
+cp oxford.sty /usr/lib/texfm/texfm/tex/latex/base
+cp oxford_se.bst /usr/lib/texfm/texfm/bibtex/bst/base
+cp oxford_en.bst /usr/lib/texfm/texfm/bibtex/bst/base
+
+Or you shose another location and then has to set som environmental variables,
+eg.:
+
+The place you put oxford.sty have to be exported with TEXINPUTS:
+export TEXINPUTS=/usr/lib/texmf/texmf/tex/latex/local:
+
+The place where you put the bst-files have to be exported with BSTINPUTS:
+
+BSTINPUTS=/usr/lib/texmf/texmf/bibtex/bst/oxford:
+
+(Donīt forget the trailing colon (:)
+
+ LANGUAGE
+
+The oxford_in.bst has support for any kind of languages. But you have to create
+a language version of oxford_in.bst yourself. In the directory "lang" there are
+translations for english, finnish, german, norsk, svenska,
+esperant, french, italian and spanish.
+
+All you have to do is open "oxford_in.bst" and substitute all bbl.CODE and MACRO
+entries with the right translations (which can be found in the mbs-files) and
+name the file oxford_LANG.bst
+
+
+ BUGS
+None known of.
+
+ COPYRIGHT
+The copyrigt is Peter Antman, 1997, where marked in the files. These parts are
+distributed under GNU/GPL. All other copyright is hold by the respective authors
+mentioned in the files.
+
+ THANKS
+Thanks to Oren Patashnik for helping me solve the pop$ bug in version 0.3
+
+Send comments and bugreports to:
+peter antman@abc.se
+
+oxford can be found at:
+
+ftp.mc.hik.se/pub/users/mia95anp/tex/
+http://www.abc.se/~m9339/prog/oxford-0.4.tar.gz
+
+
diff --git a/biblio/bibtex/contrib/oxford/lang/english.mbs b/biblio/bibtex/contrib/oxford/lang/english.mbs
new file mode 100644
index 0000000000..e5bde87206
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/english.mbs
@@ -0,0 +1,330 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: ENGLISH
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{english.mbs}[1995/05/04 1.1 (PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+% Max-Planck-Institut f\"ur Aeronomie
+% Postfach 20
+% D-37189 Katlenburg-Lindau
+% Germany
+%
+% E-mail: daly@linmpi.mpae.gwdg.de
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{english.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{1.0}{1995 Mar 15}{Initial version}
+% \changes{1.1}{1995 May 4}{Do no abbreviate `edited by'}
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{English Bibliographies}
+%
+% \title{{\bfseries English Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Patrick W. Daly}
+%
+% \GetFileInfo{english.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries English\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for ENGLISH}
+\wr{\spsp\spsp\sep english\pc: English language}
+
+\mes{^^JABBREVIATE WORD `PAGES':}
+\optdef{*}{}{`Page(s)'}{(no abbreviation)}
+\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
+\getans
+
+\mes{^^JABBREVIATE WORD `EDITORS':}
+\optdef{*}{}{`Editor(s)'}{(no abbreviation)}
+\optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as first, second, third, etc}
+\optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "editors" }
+%<ed>{ "eds." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "editor" }
+%<ed>{ "ed." }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "edition" }
+%<abr>{ "edn." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "volume" }
+%<abr>{ "vol." }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "number" }
+%<abr>{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "pages" }
+%<pp>{ "pp." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "page" }
+%<pp>{ "p." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "chapter" }
+%<abr>{ "chap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Technical Report" }
+%<abr>{ "Tech. Rep." }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "First" }
+%<ord>{ "1st" }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Second" }
+%<ord>{ "2nd" }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Third" }
+%<ord>{ "3rd" }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Fourth" }
+%<ord>{ "4th" }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Fifth" }
+%<ord>{ "5th" }
+
+FUNCTION {bbl.st}
+{ "st" }
+
+FUNCTION {bbl.nd}
+{ "nd" }
+
+FUNCTION {bbl.rd}
+{ "rd" }
+
+FUNCTION {bbl.th}
+{ "th" }
+
+% \end{macrocode}
+% This function adds English endings for ordinals 1, 2, 3. However, if
+% the second last digit is 1, then the ending is `th' for all last digits.
+% So far, all other languages included do not have this problem, and it is
+% sufficient to add the \textsl{th} equivalent. This might change with further
+% languages.
+%
+% \begin{macrocode}
+FUNCTION {eng.ord}
+{ duplicate$ "1" swap$ *
+ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$
+ duplicate$ "1" =
+ { pop$ bbl.st * }
+ { duplicate$ "2" =
+ { pop$ bbl.nd * }
+ { "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+%<*!abr>
+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"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"Jun."}
+
+MACRO {jul} {"Jul."}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sep."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/esperant.mbs b/biblio/bibtex/contrib/oxford/lang/esperant.mbs
new file mode 100644
index 0000000000..7405e94011
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/esperant.mbs
@@ -0,0 +1,292 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: ESPERANTO
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{esperant.mbs}[1995/05/04 1.1 (PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+% Max-Planck-Institut f\"ur Aeronomie
+% Postfach 20
+% D-37189 Katlenburg-Lindau
+% Germany
+%
+% E-mail: daly@linmpi.mpae.gwdg.de
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{esperant.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{1.0}{1995 Mar 15}{Initial version}
+% \changes{1.1}{1995 May 4}{Do no abbreviate `edited by'}
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{Esperanto Bibliographies}
+%
+% \title{{\bfseries Esperanto Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Patrick W. Daly}
+%
+% \GetFileInfo{esperant.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries Esperanto\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for ESPERANTO}
+\wr{\spsp\spsp\sep esperanto\pc: Esperanto language}
+
+\mes{^^JABBREVIATE WORD `PAGES':}
+\optdef{*}{}{`Page(s)'}{(no abbreviation)}
+\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
+\getans
+
+\mes{^^JABBREVIATE WORD `EDITORS':}
+\optdef{*}{}{`Editor(s)'}{(no abbreviation)}
+\optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as first, second, third, etc}
+\optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is ESPERANTO
+FUNCTION {bbl.and}
+{ "kaj"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "redaktoroj" }
+%<ed>{ "red-oj" }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "redaktoro" }
+%<ed>{ "red." }
+
+FUNCTION {bbl.edby}
+{ "redaktita de" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "eldono" }
+%<abr>{ "eld." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "volumo" }
+%<abr>{ "vol." }
+
+FUNCTION {bbl.of}
+{ "el" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "numero" }
+%<abr>{ "n-ro" }
+
+FUNCTION {bbl.nr}
+{ "n-ro" }
+
+FUNCTION {bbl.in}
+{ "en" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "pa\^goj" }
+%<pp>{ "pp." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "pa\^go" }
+%<pp>{ "p\^g" }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "\^capitro" }
+%<abr>{ "\^cap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Teknica Raporto" }
+%<abr>{ "Tek. Rap." }
+
+FUNCTION {bbl.mthesis}
+{ "Magistra tezo" }
+
+FUNCTION {bbl.phdthesis}
+{ "Doktora tezo" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "Unua" }
+%<ord>{ "1-a" }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Dua" }
+%<ord>{ "2-a" }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Tria" }
+%<ord>{ "3-a" }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Kvara" }
+%<ord>{ "4-a" }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Kvina" }
+%<ord>{ "5-a" }
+
+FUNCTION {bbl.th}
+{ "-a" }
+
+%<*!abr>
+MACRO {jan} {"januaro"}
+
+MACRO {feb} {"februaro"}
+
+MACRO {mar} {"marto"}
+
+MACRO {apr} {"aprilo"}
+
+MACRO {may} {"majo"}
+
+MACRO {jun} {"junio"}
+
+MACRO {jul} {"julio"}
+
+MACRO {aug} {"a\u{u}gusto"}
+
+MACRO {sep} {"septembro"}
+
+MACRO {oct} {"oktobro"}
+
+MACRO {nov} {"novembro"}
+
+MACRO {dec} {"decembro"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"jan."}
+
+MACRO {feb} {"feb."}
+
+MACRO {mar} {"mar."}
+
+MACRO {apr} {"apr."}
+
+MACRO {may} {"maj."}
+
+MACRO {jun} {"jun."}
+
+MACRO {jul} {"jul."}
+
+MACRO {aug} {"a\u{u}g."}
+
+MACRO {sep} {"sep."}
+
+MACRO {oct} {"okt."}
+
+MACRO {nov} {"nov."}
+
+MACRO {dec} {"dec."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/finnish.mbs b/biblio/bibtex/contrib/oxford/lang/finnish.mbs
new file mode 100644
index 0000000000..f7126310ab
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/finnish.mbs
@@ -0,0 +1,281 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: FINNISH
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{finnish.mbs}[1995/10/25 1.2 (PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+% Max-Planck-Institut f\"ur Aeronomie
+% Postfach 20
+% D-37189 Katlenburg-Lindau
+% Germany
+%
+% E-mail: daly@linmpi.mpae.gwdg.de
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{finnish.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{1.0}{1995 Mar 15}{Initial version}
+% \changes{1.1}{1995 May 4}{Do no abbreviate `edited by'}
+% \changes{1.1a}{1995 May 11}{Correct \texttt{bbl.phdthesis}}
+% \changes{1.2}{1995 Oct 25}{Remove \texttt{umlaut} option and \cs{qq},
+% replace with Raichle's trick}
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{Finnish Bibliographies}
+%
+% \title{{\bfseries Finnish Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Patrick W. Daly}
+%
+% \GetFileInfo{finnish.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries Finnish\end{quote}
+%
+% The translations for Finnish were supplied by
+% \begin{quote}\ttfamily "Niilo.Siljamo@Helsinki.FI"\end{quote}
+
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% Bernd Raichle points out that |\^^b| can be used in place of |\"|
+% within \btx{} code. One can thus replace |Nelj\^^b{a}s| with |Nelj\^^b{a}s|
+% and do away with the \texttt{umlaut} option.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for FINNISH}
+\wr{\spsp\spsp\sep finnish\pc: Finnish language}
+
+\mes{^^JABBREVIATE WORD `SIVUT':} % `Pages'
+\optdef{*}{}{`Sivu(t)'}{(no abbreviation)}
+\optdef{a}{pp}{`Sivu' abbreviated}{as s. or ss.}
+\getans
+
+\mes{^^JABBREVIATE WORD `TOIMITTAJAT':} % `Editors'
+\optdef{*}{}{`Toimittaja(t)'}{(no abbreviation)}
+\optdef{a}{ed}{`Toimittaja' abbreviated}{as toim.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of other words}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as emsimm\string\"ainen, toinen, etc}
+\optdef{n}{ord}{Numerical editions}{as 1., 2., etc}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is FINNISH
+FUNCTION {bbl.and}
+{ "ja"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "toimittajat" }
+%<ed>{ "toim." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "toimittaja" }
+%<ed>{ "toim." }
+
+FUNCTION {bbl.edby}
+{ "toimittanut" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "painos" }
+%<abr>{ "painos" }
+
+FUNCTION {bbl.volume}
+{ "osa" }
+
+FUNCTION {bbl.of}
+{ "sarjasta" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "numero" }
+%<abr>{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "teoksessa" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "sivut" }
+%<pp>{ "ss." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "sivu" }
+%<pp>{ "s." }
+
+FUNCTION {bbl.chapter}
+{ "luku" }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Tekninen Raportti" }
+%<abr>{ "Tekn. Rap." }
+
+FUNCTION {bbl.mthesis}
+{ "pro gradu" }
+
+FUNCTION {bbl.phdthesis}
+{ "v\^^b{a}it\^^b{o}skirja" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "Ensimm\^^b{a}inen" }
+%<ord>{ "1." }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Toinen" }
+%<ord>{ "2." }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Kolmas" }
+%<ord>{ "3." }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Nelj\^^b{a}s" }
+%<ord>{ "4." }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Viides" }
+%<ord>{ "5." }
+
+FUNCTION {bbl.st}
+{ "." }
+
+FUNCTION {bbl.nd}
+{ "." }
+
+FUNCTION {bbl.rd}
+{ "." }
+
+FUNCTION {bbl.th}
+{ "." }
+
+MACRO {jan} {"tammikuu"}
+
+MACRO {feb} {"helmikuu"}
+
+MACRO {mar} {"maaliskuu"}
+
+MACRO {apr} {"huhtikuu"}
+
+MACRO {may} {"toukokuu"}
+
+MACRO {jun} {"kes\^^b{a}kuu"}
+
+MACRO {jul} {"hein\^^b{a}kuu"}
+
+MACRO {aug} {"elokuu"}
+
+MACRO {sep} {"syyskuu"}
+
+MACRO {oct} {"lokakuu"}
+
+MACRO {nov} {"marraskuu"}
+
+MACRO {dec} {"joulukuu"}
+
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/french.mbs b/biblio/bibtex/contrib/oxford/lang/french.mbs
new file mode 100644
index 0000000000..616d69238e
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/french.mbs
@@ -0,0 +1,292 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: FRENCH
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{french.mbs}[1995/05/04 1.1 (PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+% Max-Planck-Institut f\"ur Aeronomie
+% Postfach 20
+% D-37189 Katlenburg-Lindau
+% Germany
+%
+% E-mail: daly@linmpi.mpae.gwdg.de
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{french.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{1.0}{1995 Mar 15}{Initial version}
+% \changes{1.1}{1995 May 4}{Do no abbreviate `edited by'}
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{French Bibliographies}
+%
+% \title{{\bfseries French Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Patrick W. Daly}
+%
+% \GetFileInfo{french.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries French\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for FRENCH}
+\wr{\spsp\spsp\sep french\pc: French language}
+
+\mes{^^JABBREVIATE WORD `PAGES':}
+\optdef{*}{}{`Page(s)'}{(no abbreviation)}
+\optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
+\getans
+
+\mes{^^JABBREVIATE WORD `REDAKTEUR':}
+\optdef{*}{}{`R\string\'edakteur(s)'}{(no abbreviation)}
+\optdef{a}{ed}{`R\string\'edakteur' abbreviated}{as R\string\'ed.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of Tome, \string\'edition, chapitre}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as primi\string\`ere, deuxi\string\`eme,...}
+\optdef{n}{ord}{Numerical editions}{as 1re, 2e, 3e, etc}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is FRENCH
+FUNCTION {bbl.and}
+{ "et"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "r\'edacteurs" }
+%<ed>{ "r\'eds." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "r\'edacteur" }
+%<ed>{ "r\'ed." }
+
+FUNCTION {bbl.edby}
+{ "edit\'e par" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "\'edition" }
+%<abr>{ "\'edn." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "tome" }
+%<abr>{ "tm." }
+
+FUNCTION {bbl.of}
+{ "de" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "num\'ero" }
+%<abr>{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "dans" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "pages" }
+%<pp>{ "pp." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "page" }
+%<pp>{ "p." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "chapitre" }
+%<abr>{ "chap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Rapport technique" }
+%<abr>{ "Rap. tech." }
+
+FUNCTION {bbl.mthesis}
+{ "Th\`ese de ma\^itre" }
+
+FUNCTION {bbl.phdthesis}
+{ "Th\`ese de doctorat" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "Premi\`ere" }
+%<ord>{ "1$^{\mbox{\scriptsize re}}$" }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Deuxi\`eme" }
+%<ord>{ "2$^{\mbox{\scriptsize e}}$" }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Troisi\`eme" }
+%<ord>{ "3$^{\mbox{\scriptsize e}}$" }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Quatri\`eme" }
+%<ord>{ "4$^{\mbox{\scriptsize e}}$" }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Cinqui\`eme" }
+%<ord>{ "5$^{\mbox{\scriptsize e}}$" }
+
+FUNCTION {bbl.th}
+{ "$^{\mbox{\scriptsize e}}$" }
+
+%<*!abr>
+MACRO {jan} {"janvier"}
+
+MACRO {feb} {"f\'evrier"}
+
+MACRO {mar} {"mars"}
+
+MACRO {apr} {"avril"}
+
+MACRO {may} {"mai"}
+
+MACRO {jun} {"juin"}
+
+MACRO {jul} {"juillet"}
+
+MACRO {aug} {"ao\^ut"}
+
+MACRO {sep} {"septembre"}
+
+MACRO {oct} {"octobre"}
+
+MACRO {nov} {"novembre"}
+
+MACRO {dec} {"d\'ecembre"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"jan."}
+
+MACRO {feb} {"f\'ev."}
+
+MACRO {mar} {"mars"}
+
+MACRO {apr} {"avr."}
+
+MACRO {may} {"mai"}
+
+MACRO {jun} {"juin"}
+
+MACRO {jul} {"juil."}
+
+MACRO {aug} {"ao\^ut"}
+
+MACRO {sep} {"sept."}
+
+MACRO {oct} {"oct."}
+
+MACRO {nov} {"nov."}
+
+MACRO {dec} {"d\'ec."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/german.mbs b/biblio/bibtex/contrib/oxford/lang/german.mbs
new file mode 100644
index 0000000000..0e7ef4c328
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/german.mbs
@@ -0,0 +1,317 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: GERMAN
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+%\fi
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{german.mbs}[1995/11/02 1.5 (PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+% Max-Planck-Institut f\"ur Aeronomie
+% Postfach 20
+% D-37189 Katlenburg-Lindau
+% Germany
+%
+% E-mail: daly@linmpi.mpae.gwdg.de
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{german.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{1.0}{1995 Mar 15}{Initial version}
+% \changes{1.1}{1995 May 4}{Do no abbreviate `edited by'}
+% \changes{1.2}{1995 Jun 7}{Revisions suggested by Sven Hartrumpf}
+% \changes{1.3}{1995 Aug 2}{Revisions suggested by Gerd Neugebauer,
+% dissertation option, `Techn. Ber.'}
+% \changes{1.3}{1995 Aug 2}{Techn. Ber. in braces to preserve case}
+% \changes{1.3a}{1995 Aug 3}{Herausgeber abbreviated as Hg, sing and plural}
+% \changes{1.4}{1995 Oct 25}{Remove \texttt{umlaut} option and \cs{qq},
+% replace with Raichle's trick}
+% \changes{1.5}{1995 Nov 2}{Some bugs removed}
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{German Bibliographies}
+%
+% \title{{\bfseries German Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Patrick W. Daly}
+%
+% \GetFileInfo{german.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries German\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% Some improvements to the translations have been contributed by
+% Sven Hartrumpf of the Universit\"at Koblenz-Landau.
+%
+% Bernd Raichle points out that |\^^b| can be used in place of |\"|
+% within \btx{} code. One can thus replace |M\qq{a}rz| with |M\^^b arz|
+% and do away with the \texttt{umlaut} option.
+%
+% Some bugs have been removed on the advice of Gerd Neugebauer, Universit\"at
+% Koblenz.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for GERMAN}
+\wr{\spsp\spsp\sep german\pc: German language}
+
+
+\mes{^^JABBREVIATE WORD `SEITEN':}
+\optdef{*}{}{`Seite(n)'}{(no abbreviation)}
+\optdef{a}{pp}{`Seite' abbreviated}{as S.}
+\getans
+
+\mes{^^JABBREVIATE WORD `HERAUSGEBER':}
+\optdef{*}{}{`Herausgeber'}{(no abbreviation)}
+\optdef{a}{ed}{`Herausgeber' abbreviated}{as Hg.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of Band, Auflage, Kapitel}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as erste, zweite, dritte, etc}
+\optdef{n}{ord}{Numerical editions}{as 1., 2., 3., etc}
+\getans
+
+\mes{^^JALTERNATIVE FOR PHD THESIS:}
+\optdef{*}{ger-phd}{PhD as `Doktorarbeit}{}
+\optdef{d}{}{PhD as `Dissertation'}{}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is GERMAN
+FUNCTION {bbl.and}
+{ "und"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "Herausgeber" }
+%<ed>{ "Hg." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "Herausgeber" }
+%<ed>{ "Hg." }
+
+FUNCTION {bbl.edby}
+{ "herausgegeben von" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "Auf\/lage" }
+%<abr>{ "Aufl." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "Band" }
+%<abr>{ "Bd." }
+
+FUNCTION {bbl.of}
+{ "von" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "Nummer" }
+%<abr>{ "Nr." }
+
+FUNCTION {bbl.nr}
+{ "Nr." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "Seiten" }
+%<pp>{ "S." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "Seite" }
+%<pp>{ "S." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "Kapitel" }
+%<abr>{ "Kap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "{Technischer Bericht}" }
+%<abr>{ "{Techn.\ Ber.}" }
+
+FUNCTION {bbl.mthesis}
+{ "Diplomarbeit" }
+
+FUNCTION {bbl.phdthesis}
+%<ger-phd>{ "Doktorarbeit" }
+%<!ger-phd>{ "Dissertation" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "Erste" }
+%<ord>{ "1." }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Zweite" }
+%<ord>{ "2." }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Dritte" }
+%<ord>{ "3." }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Vierte" }
+%<ord>{ "4." }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "F\^^b{u}nfte" }
+%<ord>{ "5." }
+
+FUNCTION {bbl.th}
+{ "." }
+
+%<*!abr>
+MACRO {jan} {"Januar"}
+
+MACRO {feb} {"Februar"}
+
+MACRO {mar} {"M\^^b{a}rz"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"Mai"}
+
+MACRO {jun} {"Juni"}
+
+MACRO {jul} {"Juli"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"Oktober"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"Dezember"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Febr."}
+
+MACRO {mar} {"M\^^b{a}rz"}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"Mai"}
+
+MACRO {jun} {"Juni"}
+
+MACRO {jul} {"Juli"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Okt."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dez."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/italian.mbs b/biblio/bibtex/contrib/oxford/lang/italian.mbs
new file mode 100644
index 0000000000..1081cfa8b2
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/italian.mbs
@@ -0,0 +1,297 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: ITALIAN
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{italian.mbs}[1995/07/20 1.0 (GP)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+% Original (and REAL) author:
+%% Copyright (C) 1994, 1995 Patrick W. Daly
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Postfach 20
+%% D-37189 Katlenburg-Lindau
+%% Germany
+%% E-mail: daly@linmpi.mpae.gwdg.de
+%
+% This file hacked by
+% Giovanni Pensa (pensa@dsi.unimi.it)
+% iTeXnici, (Unofficial) Italian TeX User Group
+% http://www.dsi.unimi.it/Users/Students/pensa/tex/uitug.html
+% todo: abbrevs, ordinal (m/f?), edizione/curatori, pag./p.
+%-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{italian.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{0.1}{1995 Sep 20}{Initial version}
+%
+% \pagestyle{myheadings}
+% \markboth{Giovanni Pensa}{Italian Bibliographies}
+%
+% \title{{\bfseries Italian Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Patrick W. Daly \and Giovanni Pensa}
+%
+% \GetFileInfo{italian.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries Italian\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for ITALIAN}
+\wr{\spsp\spsp\sep italian\pc: Italian language}
+
+\mes{^^JABBREVIATE WORD `PAGINE':}
+\optdef{*}{}{`Pagina/e'}{(no abbreviation)}
+\optdef{a}{pp}{`Pagina' abbreviated}{as pag.}
+\getans
+
+\mes{^^JABBREVIATE WORD `CURATORI':}
+\optdef{*}{}{`Curatore/i'}{(no abbreviation)}
+\optdef{a}{ed}{`Curatore' abbreviated}{as cur.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of volume, edizione, capitolo, etc}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as prima, seconda, terza, etc}
+\optdef{n}{ord}{Numerical editions}{as 1a, 2a, 3a, etc}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is ITALIAN
+FUNCTION {bbl.and}
+{ "e" }
+
+FUNCTION {bbl.editors}
+%<!ed>{ "curatori" }
+%<ed>{ "cur." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "curatore" }
+%<ed>{ "cur." }
+
+FUNCTION {bbl.edby}
+{ "curato da" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "edizione" }
+%<abr>{ "ed." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "volume" }
+%<abr>{ "vol." }
+
+FUNCTION {bbl.of}
+{ "di" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "numero" }
+%<abr>{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "pagine" }
+%<pp>{ "pp." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "pagina" }
+%<pp>{ "p." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "capitolo" }
+%<abr>{ "cap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Rapporto Tecnico" }
+%<abr>{ "Rap. Tecn." }
+
+FUNCTION {bbl.mthesis}
+{ "Tesi di laurea" }
+
+FUNCTION {bbl.phdthesis}
+{ "Tesi di dottorato" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "Prima" }
+%<ord>{ "1a" }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Seconda" }
+%<ord>{ "2a" }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Terza" }
+%<ord>{ "3a" }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Quarta" }
+%<ord>{ "4a" }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Quinta" }
+%<ord>{ "5a" }
+
+FUNCTION {bbl.th}
+{ "a" }
+
+%<*!abr>
+MACRO {jan} {"gennaio"}
+
+MACRO {feb} {"febbraio"}
+
+MACRO {mar} {"marzo"}
+
+MACRO {apr} {"aprile"}
+
+MACRO {may} {"maggio"}
+
+MACRO {jun} {"giugno"}
+
+MACRO {jul} {"luglio"}
+
+MACRO {aug} {"agosto"}
+
+MACRO {sep} {"settembre"}
+
+MACRO {oct} {"ottobre"}
+
+MACRO {nov} {"novembre"}
+
+MACRO {dec} {"dicembre"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"gen."}
+
+MACRO {feb} {"feb."}
+
+MACRO {mar} {"mar."}
+
+MACRO {apr} {"apr."}
+
+MACRO {may} {"mag"}
+
+MACRO {jun} {"giu."}
+
+MACRO {jul} {"lug."}
+
+MACRO {aug} {"ago."}
+
+MACRO {sep} {"set."}
+
+MACRO {oct} {"ott."}
+
+MACRO {nov} {"nov."}
+
+MACRO {dec} {"dic."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/norsk.mbs b/biblio/bibtex/contrib/oxford/lang/norsk.mbs
new file mode 100644
index 0000000000..d50cae9366
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/norsk.mbs
@@ -0,0 +1,299 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: NORWEGIAN
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{norsk.mbs}[1995/08/07 1.0 (RL/PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+% This file is modelled on english.mbs version 1.1 1995/05/04 by
+% Patrick W. Daly
+%
+ % Copyright (C) 1995, Rolf Lindgren, OPERATOR
+% Universitetes Senter for Informasjonsteknologi
+% Pb 1059 Blindern
+% 0316 OSLO
+%
+% E-mail: rolf.lindgren@usit.uio.no
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{norsk.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \markboth{Rolf Lindgren}{Norwegian bibliographies}
+%
+% \title{{\bfseries Norwegian Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Rolf Lindgren}
+%
+% \GetFileInfo{norsk.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries Norsk\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for NORSK}
+\wr{\spsp\spsp\sep norsk\pc: Norwegian language}
+
+\mes{^^JABBREVIATE WORD `PAGES':}
+\optdef{*}{}{`Sider(r)'}{(no abbreviation)}
+\optdef{a}{pp}{`Side' abbreviated}{as s. or ss.}
+\getans
+
+\mes{^^JABBREVIATE WORD `EDITORS':}
+\optdef{*}{}{`Redakt{\string\o}r(er)'}{(no abbreviation)}
+\optdef{a}{ed}{`Redakt{\string\o}r' abbreviated}{as red.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of bind, utgave, kapitel, osv.}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as f{string\o}rste, annen, tredje, osv}
+\optdef{n}{ord}{Numerical editions}{as 1., 2., 3., osv}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is NORSK
+
+FUNCTION {bbl.and}
+{ "og"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "redakt{\o}rer" }
+%<ed>{ "red." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "redakt{\o}r" }
+%<ed>{ "red." }
+
+FUNCTION {bbl.edby}
+{ "redigert av" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "utgave" }
+%<abr>{ "utg." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "bind" }
+%<abr>{ "bd." }
+
+FUNCTION {bbl.of}
+{ "av" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "nummer" }
+%<abr>{ "nr." }
+
+FUNCTION {bbl.nr}
+{ "nr." }
+
+FUNCTION {bbl.in}
+{ "i" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "sider" }
+%<pp>{ "ss." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "side" }
+%<pp>{ "s." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "kapitel" }
+%<abr>{ "kap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Teknisk rapport" }
+%<abr>{ "Tekn. rap." }
+
+FUNCTION {bbl.mthesis}
+{ "Hovedoppgave" }
+
+FUNCTION {bbl.phdthesis}
+{ "Doktorgradsavhandling" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "F{\o}rste" }
+%<ord>{ "1." }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Annen" }
+%<ord>{ "2." }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Tredje" }
+%<ord>{ "3." }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Fjerde" }
+%<ord>{ "4." }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Femte" }
+%<ord>{ "5." }
+
+FUNCTION {bbl.th}
+{ "." }
+
+% \end{macrocode}
+% This function adds English endings for ordinals 1, 2, 3. However, if
+% the second last digit is 1, then the ending is `th' for all last digits.
+% So far, all other languages included do not have this problem, and it is
+% sufficient to add the \textsl{th} equivalent. This might change with further
+% languages.
+%
+% \begin{macrocode}
+%<*!abr>
+MACRO {jan} {"Januar"}
+
+MACRO {feb} {"Februar"}
+
+MACRO {mar} {"Mars"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"Mai"}
+
+MACRO {jun} {"Juni"}
+
+MACRO {jul} {"Juli"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"Oktober"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"Desember"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"Mai"}
+
+MACRO {jun} {"Jun."}
+
+MACRO {jul} {"Jul."}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sep."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Des."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/spanish.mbs b/biblio/bibtex/contrib/oxford/lang/spanish.mbs
new file mode 100644
index 0000000000..4d7b9dd132
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/spanish.mbs
@@ -0,0 +1,301 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: SPANISH
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+%\fi
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{spanish.mbs}[1995/06/01 1.0 (PWD/TB)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+% Max-Planck-Institut f\"ur Aeronomie
+% Postfach 20
+% D-37189 Katlenburg-Lindau
+% Germany
+%
+% E-mail: daly@linmpi.mpae.gwdg.de
+%
+ % Copyright (C) 1995 Tom\'as Bautista
+% Divisi\'on de CAD del Centro de Microelectr\'onica Aplicada
+% Campus Universitario de Tafira, pab.\ A
+% E-35017 Las Palmas de Gran Canaria
+% Canary Islands
+%
+% E-mail: bautista@cma.ulpgc.es
+
+
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{spanish.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \changes{1.0}{1995 June 01}{Initial version}
+%
+% \pagestyle{myheadings}
+% \markboth{T. Bautista}{Spanish Bibliographies}
+%
+% \title{{\bfseries Spanish Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Tom\'as Bautista}
+%
+% \GetFileInfo{spanish.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries Spanish\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for SPANISH}
+\wr{\spsp\spsp\sep spanish\pc: Spanish language}
+
+
+\mes{^^JABBREVIATE WORD `PAGINAS':}
+\optdef{*}{}{`P'agina(s)'}{(no abbreviation)}
+\optdef{a}{pp}{`P'agina' abbreviated}{as p'ag.}
+\getans
+
+\mes{^^JABBREVIATE WORD `EDITOR':}
+\optdef{*}{}{`Editor(es)'}{(no abbreviation)}
+\optdef{a}{ed}{`Editor' abbreviated}{as Ed.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of Tomo, \string Edici'on, \string Cap'itulo}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as primera, segunda, tercera, etc}
+\optdef{n}{ord}{Numerical editions}{as 1a, 2a, 3a, etc}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is SPANISH
+FUNCTION {bbl.and}
+{ "y"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "editores" }
+%<ed>{ "eds." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "editor" }
+%<ed>{ "ed." }
+
+FUNCTION {bbl.edby}
+{ "editado por" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "edici\'on" }
+%<abr>{ "ed\raise1ex\hbox{\underbar{\scriptsize \'on}}." }
+
+FUNCTION {bbl.volume}
+{ "tomo" }
+
+FUNCTION {bbl.of}
+{ "de" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "n\'umero" }
+%<abr>{ "n\raise1ex\hbox{\underbar{\scriptsize o}}" }
+
+FUNCTION {bbl.nr}
+{ "n\raise1ex\hbox{\underbar{\scriptsize o}}" }
+
+FUNCTION {bbl.in}
+{ "en" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "p\'aginas" }
+%<pp>{ "p\'ags." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "p\'agina" }
+%<pp>{ "p\'ag." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "cap\'{\i}tulo" }
+%<abr>{ "cap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Informe T\'ecnico" }
+%<abr>{ "Inf.\ T\'ec." }
+
+FUNCTION {bbl.mthesis}
+{ "Proyecto Fin de Carrera" }
+
+FUNCTION {bbl.phdthesis}
+{ "Tesis Doctoral" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "primera" }
+%<ord>{ "1\raise1ex\hbox{\underbar{\scriptsize a}}" }
+
+FUNCTION {bbl.second}
+%<!ord>{ "segunda" }
+%<ord>{ "2\raise1ex\hbox{\underbar{\scriptsize a}}" }
+
+FUNCTION {bbl.third}
+%<!ord>{ "tercera" }
+%<ord>{ "3\raise1ex\hbox{\underbar{\scriptsize a}}" }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "cuarta" }
+%<ord>{ "4\raise1ex\hbox{\underbar{\scriptsize a}}" }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "quinta" }
+%<ord>{ "5\raise1ex\hbox{\underbar{\scriptsize a}}" }
+
+FUNCTION {bbl.th}
+{ "\raise1ex\hbox{\underbar{\scriptsize a}}" }
+
+%<*!abr>
+MACRO {jan} {"enero"}
+
+MACRO {feb} {"febrero"}
+
+MACRO {mar} {"marzo"}
+
+MACRO {apr} {"abril"}
+
+MACRO {may} {"mayo"}
+
+MACRO {jun} {"junio"}
+
+MACRO {jul} {"julio"}
+
+MACRO {aug} {"agosto"}
+
+MACRO {sep} {"septiembre"}
+
+MACRO {oct} {"octubre"}
+
+MACRO {nov} {"noviembre"}
+
+MACRO {dec} {"diciembre"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"ene."}
+
+MACRO {feb} {"feb."}
+
+MACRO {mar} {"mar."}
+
+MACRO {apr} {"abr."}
+
+MACRO {may} {"mayo"}
+
+MACRO {jun} {"jun."}
+
+MACRO {jul} {"jul."}
+
+MACRO {aug} {"ago."}
+
+MACRO {sep} {"sep."}
+
+MACRO {oct} {"oct."}
+
+MACRO {nov} {"nov."}
+
+MACRO {dec} {"dic."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/lang/svenska.mbs b/biblio/bibtex/contrib/oxford/lang/svenska.mbs
new file mode 100644
index 0000000000..05684c199c
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/lang/svenska.mbs
@@ -0,0 +1,297 @@
+%\iffalse THIS IS A META COMMENT
+%====================================================================
+% A Language Definition File: SWEDISH
+% to be included with other master bibliography style files
+%--------------------------------------------------------------------
+% (See version and date in the \ProvidesFile command below)
+%--------------------------------------------------------------------
+% This file is self-documenting: simply LaTeX it!
+%====================================================================
+%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+%\fi
+ % \ProvidesFile{svenska.mbs}[1995/08/07 1.0 (RL/PWD)]
+%\iffalse
+%-------------------------------------------------------------------
+% NOTICE:
+% This file may be used for non-profit purposes.
+% It may not be distributed in exchange for money,
+% other than distribution costs.
+%
+% The author provides it `as is' and does not guarantee it in any way.
+%
+% This file is modelled on english.mbs version 1.1 1995/05/04 by
+% Patrick W. Daly
+%
+ % Copyright (C) 1997, Peter Antman
+% Forskningsassistent Centrum för välfärdsforskning
+%
+% E-mail: peter.antman@abc.se
+ %-------------------------------------------------------------------
+%<*a&!a>
+% The following ensures that the driver part is not seen by makebst
+% The driver part must not contain any \end other than \end{document} !
+\ifx\endoptions\undefined\let\tempx=\relax\else
+ \long\def\tempx#1\end#2{}\fi\tempx
+%</a&!a>
+%<*driver>
+ \NeedsTeXFormat{LaTeX2e}%
+ \documentclass[a4paper,10pt,twoside]{article}%
+ \usepackage{doc}%
+ \raggedbottom
+ \CodelineNumbered
+ \RecordChanges
+ % Comment out next line to print coding
+ \OnlyDescription
+ \setlength{\oddsidemargin}{0.5\paperwidth}
+ \addtolength{\oddsidemargin}{-0.5\textwidth}
+ \addtolength{\oddsidemargin}{-1in}
+ \setlength{\evensidemargin}{\oddsidemargin}
+
+\begin{document}
+ \DocInput{svenska.mbs}
+\end{document}
+%</driver>
+% END OF META COMMENT \fi
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \setcounter{StandardModuleDepth}{1}
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+%
+% \markboth{Peter Antman}{Swedish bibliographies}
+%
+% \title{{\bfseries Swedish Language Definition File}\\
+% for master bibliographic style files}
+%
+% \author{Peter Antman}
+%
+% \GetFileInfo{svenska.mbs}
+% \date{This paper describes file \texttt{\filename},\\
+% version \fileversion{} from \filedate}
+%
+% \maketitle
+%
+% \MakeShortVerb{\|}
+%
+% \parskip=1ex \parindent=0pt
+%
+% \newcommand{\btx}{{\sc Bib}\TeX}
+% \newcommand{\dtx}{\textsf{docstrip}}
+%
+% \section{Introduction}
+% This file is to be used as a language definition file with master
+% bibliographic files. The language it defines is
+% \begin{quote}\bfseries Svenska\end{quote}
+%
+% This is not a self-sufficient \texttt{.mbs} file, but rather may
+% be used together with one that contains language support via
+% external definition files.
+%
+% See the documentation for \texttt{makebst} for formatting details.
+%
+% \section{The Menu Information}
+%
+% All the menu information is nested between \dtx{} guard options
+% |%<*options>| \dots\ |%</options>|, and the last command is
+% |\endoptions|. The rest of the file is nested between |%<*!options&!driver>|
+% \dots\ |%</!options&!driver>| in order to exclude it if \dtx{} is used to
+% extract only the menu information or the documentation driver.
+%
+% \begin{macrocode}
+%<*options>
+\mes{^^JOptions for SVENSKA}
+\wr{\spsp\spsp\sep svenska\pc: SWEDISH language}
+
+\mes{^^JABBREVIATE WORD `PAGES':}
+\optdef{*}{}{`Sidor(r)'}{(no abbreviation)}
+\optdef{a}{pp}{`Sida' abbreviated}{as s. or ss.}
+\getans
+
+\mes{^^JABBREVIATE WORD `EDITORS':}
+\optdef{*}{}{`Redaktör(er)'}{(no abbreviation)}
+\optdef{a}{ed}{`Redaktör' abbreviated}{as red.}
+\getans
+
+\mes{^^JOTHER ABBREVIATIONS:}
+\optdef{*}{}{No abbreviations}{of volym, utgåva, kapitel, osv.}
+\optdef{a}{abr}{Abbreviations}{of such words}
+\getans
+
+\mes{^^JEDITION NUMBERS:}
+\optdef{*}{}{Write out editions}{as första, andra, tredje, osv}
+\optdef{n}{ord}{Numerical editions}{as 1., 2., 3., osv}
+\getans
+
+\endoptions
+%</options>
+% \end{macrocode}
+%
+% \StopEventually{\PrintChanges}
+%
+% \section{The Coding}
+% \begin{macrocode}
+%<*!options&!driver>
+
+ % The language selected here is SVENSKA
+
+FUNCTION {bbl.and}
+{ "och"}
+
+FUNCTION {bbl.editors}
+%<!ed>{ "redaktörer" }
+%<ed>{ "red." }
+
+FUNCTION {bbl.editor}
+%<!ed>{ "redaktör" }
+%<ed>{ "red." }
+
+FUNCTION {bbl.edby}
+{ "redigerad av" }
+
+FUNCTION {bbl.edition}
+%<!abr>{ "utgåva" }
+%<abr>{ "utg." }
+
+FUNCTION {bbl.volume}
+%<!abr>{ "volym" }
+%<abr>{ "vol." }
+
+FUNCTION {bbl.of}
+{ "av" }
+
+FUNCTION {bbl.number}
+%<!abr>{ "nummer" }
+%<abr>{ "nr." }
+
+FUNCTION {bbl.nr}
+{ "nr." }
+
+FUNCTION {bbl.in}
+{ "i" }
+
+FUNCTION {bbl.pages}
+%<!pp>{ "sidor" }
+%<pp>{ "ss." }
+
+FUNCTION {bbl.page}
+%<!pp>{ "sida" }
+%<pp>{ "s." }
+
+FUNCTION {bbl.chapter}
+%<!abr>{ "kapitel" }
+%<abr>{ "kap." }
+
+FUNCTION {bbl.techrep}
+%<!abr>{ "Teknisk rapport" }
+%<abr>{ "Tekn. rap." }
+
+FUNCTION {bbl.mthesis}
+{ "Licenciatavgandling" }
+
+FUNCTION {bbl.phdthesis}
+{ "Doktorgradsavhandling" }
+
+FUNCTION {bbl.first}
+%<!ord>{ "Första" }
+%<ord>{ "1." }
+
+FUNCTION {bbl.second}
+%<!ord>{ "Andra" }
+%<ord>{ "2." }
+
+FUNCTION {bbl.third}
+%<!ord>{ "Tredje" }
+%<ord>{ "3." }
+
+FUNCTION {bbl.fourth}
+%<!ord>{ "Fjärde" }
+%<ord>{ "4." }
+
+FUNCTION {bbl.fifth}
+%<!ord>{ "Femte" }
+%<ord>{ "5." }
+
+FUNCTION {bbl.th}
+{ "." }
+
+% \end{macrocode}
+% This function adds English endings for ordinals 1, 2, 3. However, if
+% the second last digit is 1, then the ending is `th' for all last digits.
+% So far, all other languages included do not have this problem, and it is
+% sufficient to add the \textsl{th} equivalent. This might change with further
+% languages.
+%
+% \begin{macrocode}
+%<*!abr>
+MACRO {jan} {"Januari"}
+
+MACRO {feb} {"Februari"}
+
+MACRO {mar} {"Mars"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"Maj"}
+
+MACRO {jun} {"Juni"}
+
+MACRO {jul} {"Juli"}
+
+MACRO {aug} {"Augusti"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"Oktober"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+%</!abr>
+%<*abr>
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"Maj"}
+
+MACRO {jun} {"Jun."}
+
+MACRO {jul} {"Jul."}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sep."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+%</abr>
+%</!options&!driver>
+ % End of language definition file
+
+% \end{macrocode}
+% \Finale
diff --git a/biblio/bibtex/contrib/oxford/oxford.sty b/biblio/bibtex/contrib/oxford/oxford.sty
new file mode 100644
index 0000000000..2df98cd845
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/oxford.sty
@@ -0,0 +1,303 @@
+%% oxford.sty - oxford bibliography style Version 0.1
+%% Author: Peter Antman peter.antman@abc.se
+%% Changes Copyright: Peter Antman, 1997
+%%
+%% Based on:
+%% harvard.sty - harvard bibliography style Version 2.0.5
+%% Author: Peter Williams peterw@archsci.arch.su.edu.au
+%% Copyright: Peter Williams 1994
+%%
+%% This is the oxford style support. It has to be run together
+%% whith style oxford_xx.bbs, where xx stands for the language code
+%% (se acompanying README). A new entry in the bib-file is supported
+%% in the stylefile, namely stitle. This is a short title to be
+%% used in the abbr citations, when a title is nedded.
+%%
+%% Currrently is only the \cite command supported, and only in
+%% abbrevation mode. You should not use parathesis mode.
+%% the best is to use this command in the tex-file:
+%% \usepackage[default, none]{oxford}
+%% and as bibcommand:
+%% \bibliographystyle{oxford_xx}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{oxford}
+\RequirePackage{ifthen}
+\IfFileExists{html.sty}{\RequirePackage{html}
+\newcommand{\harvardurl}[1]{\htmladdnormallink*{\textbf{URL:} \textit{##1}}{##1}}
+}{
+\newcommand{\harvardurl}[1]{\textbf{URL:} \textit{##1}}
+}
+\DeclareOption{full}{\citationmode{full}}
+\DeclareOption{abbr}{\citationmode{abbr}}
+\DeclareOption{default}{\citationmode{default}}
+\DeclareOption{agsmcite}{\citationstyle{agsm}}
+\DeclareOption{dcucite}{\citationstyle{dcu}}
+\DeclareOption{round}{\harvardparenthesis{round}\harvardyearparenthesis{round}}
+\DeclareOption{curly}{\harvardparenthesis{curly}\harvardyearparenthesis{curly}}
+\DeclareOption{angle}{\harvardparenthesis{angle}\harvardyearparenthesis{angle}}
+\DeclareOption{square}{\harvardparenthesis{square}\harvardyearparenthesis{square}}
+\DeclareOption{none}{\harvardparenthesis{none}\harvardyearparenthesis{none}}
+\DeclareOption*{
+ \global\edef\HAR@tmp{\CurrentOption}
+%% Berwin A. Turlach <berwin@alphasun.anu.edu.au>
+ \AtEndDocument{\bibliographystyle{\HAR@tmp}}
+}
+
+%% Kristoffer H. Rose <kris@diku.dk> 1995/03/01:
+%% do not expand macros in citations: put definitions on .aux file instead.
+{\catcode`\:=12 \catcode`\-=12 \catcode`\>=12 \catcode`\<=12 %
+ \gdef\codeof#1{\expandafter\codeof@\meaning#1<-:}%
+ \gdef\codeof@#1:->#2<-:{#2}}
+
+\def\harvardpreambletext{\catcode`\#=12 \harvardpreambletext@}
+\def\harvardpreambletext@#1{\def\next{#1}\catcode`\#=6 %
+ \immediate\write\@auxout{\string\harvardpreambledefs{%
+ \string\AtBeginDocument{\codeof\next}}}}
+
+\def\harvardpreambledefs#1{#1\gdef\harvardpreambledefs##1{}}
+
+\newcommand{\harvarditem}[4][\null]{\item[]%
+\if@filesw{ \def\protect##1{\string ##1\space}%
+\ifthenelse{\equal{#1}{\null}}
+ {\def\next{{#4}{#2}{#2}{#3}}}
+ {\def\next{{#4}{#2}{#1}{#3}}}
+\immediate\write\@auxout{\string\harvardcite\codeof\next}%
+}\fi%
+\protect\hspace*{-\labelwidth}\protect\hspace*{-\labelsep}\ignorespaces%
+}
+
+\newcommand{\harvardcite}[4]{
+ \global\@namedef{HAR@fn@#1}{#2}
+ \global\@namedef{HAR@an@#1}{#3}
+ \global\@namedef{HAR@yr@#1}{#4}
+ \global\@namedef{HAR@df@#1}{\csname HAR@fn@#1\endcsname}
+}
+
+\newcommand{\citationmode}[1]{
+ \renewcommand{\HAR@citemode}{\csname HAR@cite@#1\endcsname}
+}
+
+\newcommand{\HAR@cite@full}{HAR@fn@}
+\newcommand{\HAR@cite@abbr}{HAR@an@}
+\newcommand{\HAR@cite@default}{HAR@df@}
+\newcommand{\HAR@citemode}{\HAR@cite@default}
+
+\newcommand{\HAR@citetoaux}[1]{%
+ \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi%
+}
+
+\newcommand{\HAR@checkdef}[2]{\@ifundefined{HAR@df@#1}%
+ {\textbf{?}\@warning{Citation '#1' on page \thepage \space undefined}}%
+ {#2}%
+}
+
+% By Peter Antman, 1997, command changed, year excluded and
+% the blank sep betweb author and year removed
+\newcommand{\HAR@dolist}[2]{\def\@citea{\null}\@for\@citeb:=#1\do%
+{\@citea\def\@citea{\HAR@hisep\penalty\@m\ }\HAR@checkdef{\@citeb}%
+%{#2{@citeb} %
+{#2{\@citeb}\HAR@hysep\penalty\@m%
+%\HAR@year{\@citeb}\HAR@setd{\@citeb}}}%
+\HAR@setd{\@citeb}}}%
+}
+
+% added by Peter Antman to support ibid.
+\global\@namedef{HAR@lastname}{}
+
+\def\@enamedef#1{\expandafter\def\csname #1\expandafter\endcsname\expandafter}
+\newcommand{\HAR@name}[1]{\csname \HAR@citemode#1\endcsname}
+\newcommand{\HAR@fname}[1]{\csname HAR@fn@#1\endcsname}
+\newcommand{\HAR@aname}[1]{\csname HAR@an@#1\endcsname}
+\newcommand{\HAR@year}[1]{\csname HAR@yr@#1\endcsname}
+\newcommand{\HAR@setd}[1]{%
+\global\@enamedef{HAR@df@#1}{\csname HAR@an@#1\endcsname}%
+% added by Peter Antman
+\global\@enamedef{HAR@lastname}{#1}%
+}
+
+%% Berwin A. Turlach <berwin@alphasun.anu.edu.au>
+\global\@namedef{HAR@df@*}{\csname HAR@fn@*\endcsname}
+\renewcommand{\nocite}[1]{\HAR@citetoaux{#1}%
+\@for\@citeb:=#1\do%
+{\HAR@checkdef{\@citeb}{}}}%
+
+\renewcommand{\cite}{\@ifstar{\@ifstar{\HAR@acite}{\HAR@fcite}}{\HAR@dcite}}
+
+% dcite is changed to generate citations conforming to the oxford style
+% this is currently the only working oxford cite-style.
+\newcommand{\HAR@dcite}[2][\null]{\HAR@citetoaux{#2}%
+\ifthenelse{\equal{#2}{\HAR@lastname}}%
+{\HAR@ibid\HAR@hisep\penalty\@m\, #1}%
+{\harvardleft\HAR@dolist{#2}{\HAR@name}\ifthenelse{\equal{#1}{\null}}%
+ {}{, #1}\harvardright}%
+}
+
+\newcommand{\HAR@acite}[2][\null]{\HAR@citetoaux{#2}%
+{\harvardleft\HAR@dolist{#2}{\HAR@aname}\ifthenelse{\equal{#1}{\null}}%
+ {}{, #1}\harvardright}%
+}
+
+\newcommand{\HAR@fcite}[2][\null]{\HAR@citetoaux{#2}%
+{\harvardleft\HAR@dolist{#2}{\HAR@fname}\ifthenelse{\equal{#1}{\null}}%
+ {}{, #1}\harvardright}%
+}
+
+\newcommand{\citeaffixed}{\@ifstar{\@ifstar{\HAR@aciteaff}{\HAR@fciteaff}}%
+{\HAR@dciteaff}%
+}
+
+\newcommand{\HAR@fciteaff}[3][\null]{\HAR@citetoaux{#2}%
+{\harvardleft#3\ \HAR@dolist{#2}{\HAR@fname}\ifthenelse{\equal{#1}{\null}}%
+ {}{, #1}\harvardright}%
+}
+
+\newcommand{\HAR@aciteaff}[3][\null]{\HAR@citetoaux{#2}%
+{\harvardleft#3\ \HAR@dolist{#2}{\HAR@aname}\ifthenelse{\equal{#1}{\null}}%
+ {}{, #1}\harvardright}%
+}
+
+\newcommand{\HAR@dciteaff}[3][\null]{\HAR@citetoaux{#2}%
+{\harvardleft#3\ \HAR@dolist{#2}{\HAR@name}\ifthenelse{\equal{#1}{\null}}%
+ {}{, #1}\harvardright}%
+}
+
+\newcommand{\citeasnoun}{\@ifstar{\@ifstar{\HAR@aciteasn}{\HAR@fciteasn}}%
+{\HAR@dciteasn}%
+}
+
+\newcommand{\HAR@fciteasn}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@fname{#2}\ \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{, #1}\harvardyearright}\HAR@setd{#2}}%
+}
+
+\newcommand{\HAR@aciteasn}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@aname{#2}\ \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{, #1}\harvardyearright}\HAR@setd{#2}}%
+}
+
+\newcommand{\HAR@dciteasn}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@name{#2}\ \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{, #1}\harvardyearright}\HAR@setd{#2}}%
+}
+
+\newcommand{\possessivecite}{\@ifstar{\@ifstar{\HAR@acitepos}{\HAR@fcitepos}}%
+{\HAR@dcitepos}%
+}
+
+\newcommand{\HAR@fcitepos}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@fname{#2}'s \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{, #1}\harvardyearright}\HAR@setd{#2}}%
+}
+
+\newcommand{\HAR@acitepos}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@aname{#2}'s \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{, #1}\harvardyearright}\HAR@setd{#2}}%
+}
+
+\newcommand{\HAR@dcitepos}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@name{#2}'s \harvardyearleft\HAR@year{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{, #1}\harvardyearright}\HAR@setd{#2}}%
+}
+
+\newcommand{\citename}{\@ifstar{\@ifstar{\HAR@acitenam}\HAR@fcitenam}%
+{\HAR@dcitenam}%
+}
+
+\newcommand{\HAR@fcitenam}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@fname{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{\ \harvardleft#1\harvardright}}}%
+}
+
+\newcommand{\HAR@acitenam}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@aname{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{\ \harvardleft#1\harvardright}}}%
+}
+
+\newcommand{\HAR@dcitenam}[2][\null]{\HAR@citetoaux{#2}\HAR@checkdef{#2}{%
+{\HAR@name{#2}\ifthenelse{\equal{#1}{\null}}
+ {}{\ \harvardleft#1\harvardright}}}%
+}
+
+\newcommand{\citeyear}{\@ifstar{\HAR@citeyrnb}{\HAR@citeyr}}
+
+\newcommand{\HAR@citeyrnb}[2][\null]{\HAR@citetoaux{#2}%
+{\def\@citea{\null}\@for\@citeb:=#2\do%
+{\@citea\def\@citea{\HAR@hisep\penalty\@m\ }\HAR@checkdef{\@citeb}%
+{\HAR@year{\@citeb}}}\ifthenelse{\equal{#1}{\null}}%
+{}{, #1}}%
+}
+
+\newcommand{\HAR@citeyr}[2][\null]{\HAR@citetoaux{#2}%
+{\harvardleft\def\@citea{\null}\@for\@citeb:=#2\do%
+{\@citea\def\@citea{\HAR@hisep\penalty\@m\ }\HAR@checkdef{\@citeb}%
+{\HAR@year{\@citeb}}}\ifthenelse{\equal{#1}{\null}}%
+{}{, #1}\harvardright}%
+}
+
+% ibid added by Peter Antman
+\newcommand{\HAR@ibid}{ibid.}
+\newcommand{\HAR@hysep@apsr}{\null}
+\newcommand{\HAR@hisep@apsr}{;}
+\newcommand{\HAR@hysep@agsm}{\null}
+\newcommand{\HAR@hisep@agsm}{,}
+\newcommand{\HAR@hysep@dcu}{,}
+\newcommand{\HAR@hisep@dcu}{;}
+\newcommand{\HAR@and@agsm}{\&}
+\newcommand{\HAR@and@dcu}{and}
+\newcommand{\HAR@and@apsr}{and}
+\newcommand{\HAR@hysep}{\HAR@hysep@agsm}
+\newcommand{\HAR@hisep}{\HAR@hisep@agsm}
+\newcommand{\harvardand}{\HAR@and@agsm}
+\newcommand{\citationstyle}[1]{%
+ \renewcommand{\HAR@hysep}{\csname HAR@hysep@#1\endcsname}
+ \renewcommand{\HAR@hisep}{\csname HAR@hisep@#1\endcsname}
+ \renewcommand{\harvardand}{\csname HAR@and@#1\endcsname}
+}
+
+\newcommand{\HAR@bl@round}{(}
+\newcommand{\HAR@br@round}{)}
+\newcommand{\HAR@bl@square}{[}
+\newcommand{\HAR@br@square}{]}
+\newcommand{\HAR@bl@curly}{\{}
+\newcommand{\HAR@br@curly}{\}}
+\newcommand{\HAR@bl@angle}{$<$}
+\newcommand{\HAR@br@angle}{$>$}
+\newcommand{\HAR@bl@none}{}
+\newcommand{\HAR@br@none}{}
+\newcommand{\harvardleft}{\HAR@bl@round}
+\newcommand{\harvardright}{\HAR@br@round}
+\newcommand{\harvardparenthesis}[1]{
+ \renewcommand{\harvardleft}{\csname HAR@bl@#1\endcsname}
+ \renewcommand{\harvardright}{\csname HAR@br@#1\endcsname}
+ \harvardyearparenthesis{#1}
+}
+
+\newcommand{\harvardyearleft}{\HAR@bl@round}
+\newcommand{\harvardyearright}{\HAR@br@round}
+\newcommand{\harvardyearparenthesis}[1]{
+ \renewcommand{\harvardyearleft}{\csname HAR@bl@#1\endcsname}
+ \renewcommand{\harvardyearright}{\csname HAR@br@#1\endcsname}
+}
+
+\newcommand{\HAR@checkcitations}[4]{
+ \def\HAR@tempa{#2}\expandafter
+ \ifx \csname HAR@fn@#1\endcsname \HAR@tempa
+ \def\HAR@tempa{#3}\expandafter
+ \ifx \csname HAR@an@#1\endcsname \HAR@tempa
+ \def\HAR@tempa{#4}\expandafter
+ \ifx \csname HAR@yr@#1\endcsname \HAR@tempa
+ \else
+ \@tempswatrue
+ \fi
+ \else
+ \@tempswatrue
+ \fi
+ \else
+ \@tempswatrue
+ \fi
+}
+
+\AtEndDocument{\renewcommand{\harvardcite}{\HAR@checkcitations}}
+
+\ExecuteOptions{agsm,agsmcite,default,round}
+\ProcessOptions*
diff --git a/biblio/bibtex/contrib/oxford/oxford_en.bst b/biblio/bibtex/contrib/oxford/oxford_en.bst
new file mode 100644
index 0000000000..b586d121e8
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/oxford_en.bst
@@ -0,0 +1,1889 @@
+%%
+%% This is file `oxford_se.bst', version 0.4
+%% It was first generated with the docstrip utility in custom-bib
+%% and then heavily hacked by Peter Antman.
+%%
+%% This file must still bee considered beta.
+%%
+%% This version is for swedish citation, to get other languages to work
+%% rename it and insert the right bbl.xxx funcions and MACROS from
+%% the right mbd-file, availible with custom-bib. There are two new such
+%% commands, bbl.lq (leftquote) and bbl.rq (rightquote). Here you give
+%% your languages way of quoting titles.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `head,exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% svenska.mbs (with options: `exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% merlin.mbs (with options: `tail,exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% ----------------------------------------
+%% *** ***
+%%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{merlin.mbs}[1996/12/16 3.82 (PWD)]
+ %
+ % NOTICE:
+ % This file may be used for non-profit purposes.
+ % It may not be distributed in exchange for money,
+ % other than distribution costs.
+ %
+ % The author provides it `as is' and does not guarantee it in any way.
+ %
+ % Copyright (C) 1994, 1995, 1996 Patrick W. Daly
+ % Copyright (C) 1997 Peter Antman, peter.antman@abc.se
+ %-------------------------------------------------------------------
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ %
+ % This is an Oxford style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is oxford.sty by Peter Antman
+ %
+ % The form of the bibitem entries is
+ % \harvarditem[Jones, New thesis]{Howard Jones, FULL ENTRY}{1990}{key}
+ % Jones, Howard, FULL ENTRY
+ %
+ % The style gives the full reference att the first citation and then a
+ % abrevated one.
+ %
+ % The file suports an additional entry in the bib-file, stitle. It is
+ % for all but the first citation, when only lastname, and if there are
+ % more lastnames that are the same, title (and if there is a stitle that
+ % instead).
+ %
+ % oxford.sty also inserts an ibid. if the current citation is the same
+ % as the last one.
+ %---------------------------------------------------------------------
+ %
+ % Hacked by Peter Antman to provide Oxford citation style.
+ % FIX: Year cite not correct everywhere ???
+ % changes version 0.2:
+ % moved note in article
+ % editor and key right in short.ref
+ % changes version 0.3:
+ % fixed editors in cite, now orde Firstname Lastname
+ % removed ( and ) around ed.
+ % removed comma before nr. if volume empty
+ % removed comma before year in article, misc and unpub
+ % changes version 0.4
+ % fixed ", " error produced in ouput.bibitem (thanks to
+ % Oren Patashnik for telling me how to do it)
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ stitle
+ title
+ type
+ URL
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+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 :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% BY Peter Antman, special function to get rid of comma before
+% year in article, misc and unpub, se also output.check.special
+FUNCTION {output.nonnull.special}
+{ 's :=
+ output.state mid.sentence =
+ { " " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check.special}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.special
+ if$
+}
+
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ 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 {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ skip$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {non.stop}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{english.mbs}[1995/05/04 1.1 (PWD)]
+ % Copyright (C) 1994, 1995 Patrick W. Dal
+ %-------------------------------------------------------------------
+
+ % The language selected here is ENGLISH
+
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.editors}
+{ "eds." }
+
+FUNCTION {bbl.editor}
+{ "ed." }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "edn." }
+
+FUNCTION {bbl.volume}
+{ "vol." }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "pp." }
+
+FUNCTION {bbl.page}
+{ "p." }
+
+FUNCTION {bbl.chapter}
+{ "chap." }
+
+FUNCTION {bbl.techrep}
+{ "Tech Rep." }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis"}
+
+FUNCTION {bbl.first}
+{ "1st" }
+
+FUNCTION {bbl.second}
+{ "2nd" }
+
+FUNCTION {bbl.third}
+{ "3rd" }
+
+FUNCTION {bbl.fourth}
+{ "4th" }
+
+FUNCTION {bbl.fifth}
+{ "5th" }
+
+FUNCTION {bbl.th}
+{ "th" }
+
+% BY Peter Antman, new functions bbl.lq bbl.rq
+FUNCTION {bbl.lq}
+{ "'" }
+
+FUNCTION {bbl.rq}
+{ "'" }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"Jun."}
+
+MACRO {jul} {"Jul."}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sep."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+ % End of language definition file
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+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 {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+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 {tcs} {"Theoretical Computer Science"}
+
+FUNCTION {write.url}
+{ URL empty$
+ { skip$ }
+ { "\newline\harvardurl{" URL * "}" * write$ newline$ }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.names.ed}
+{ format.names }
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ {
+ author format.names
+ }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.editors}
+{ editor empty$
+ { "" }
+ { editor format.names.ed
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title
+ bbl.lq swap$ * % BY Peter Antman, uses bbl.lq
+ non.stop
+ { bbl.rq * ", " * } % BY Peter Antman, uses bbl.rq
+ { bbl.rq * " " * } % PROBLEM: comma after title in book
+ if$
+ }
+ if$
+}
+
+FUNCTION {end.quote.title}
+{ title empty$
+ 'skip$
+ { before.all 'output.state := }
+ 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 * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, function to format long cite
+FUNCTION {format.firstname}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff }{jj }{vv }{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% BY Peter Antman, function to format lastname
+FUNCTION {format.lastname}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll}{}{}{}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% By Peter Antman, to format eds as Firstname Lastname
+FUNCTION {format.r.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.firstname
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, editors in Firstname Lastname
+FUNCTION {format.in.r.editors}
+{ editor empty$
+ { "" }
+ { editor format.firstname
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.au}
+{ author empty$
+ { "" }
+ {
+ author format.firstname
+ }
+ if$
+}
+FUNCTION {format.auth}
+{ author empty$
+ { editor empty$
+ {author format.key}
+ {editor format.lastname}
+ if$
+ }
+ {
+ author format.lastname
+ }
+ if$
+}
+
+% BY Peter Antman, the repeated
+% should contain name if no other name of the same
+% if more names of the same, then stitle
+% if no stitle, then title
+FUNCTION {short.ref}
+{
+% format.auth
+% ", " *
+% extra.label write$
+ extra.label "" =
+ {
+% format.auth
+ short.list % PANIC this is a bad bypas of not having solved ed.
+ "" * extra.label
+ }
+ { stitle empty$
+ {
+ format.auth
+ ", " * title
+ }
+ {
+ format.auth
+ ", " * stitle
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\harvarditem[" write$
+% short.ref duplicate$ label =
+ "" short.ref * "]" * write$
+ pop$ ""
+ "{" write$
+% pop$ % ERROR, does the right thing but produces error
+ before.all 'output.state :=
+}
+
+FUNCTION {end.bibitem}
+{ "}{" * write$
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ extra.label * "}{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+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 {word.in}
+{ bbl.in
+ " " * }
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????" }
+ 'skip$
+ if$
+% extra.label * % BY Peter Antman, removed, not needed in Oxford
+ " (" swap$ * ")" *
+}
+
+FUNCTION {format.btitle}
+{ 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$
+ { "" }
+ { bbl.volume volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { bbl.of space.word * 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 =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { bbl.in space.word * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ edition extract.num "l" change.case$ 's :=
+ s "first" = s "1" = or
+ { bbl.first 't := }
+ { s "second" = s "2" = or
+ { bbl.second 't := }
+ { s "third" = s "3" = or
+ { bbl.third 't := }
+ { s "fourth" = s "4" = or
+ { bbl.fourth 't := }
+ { s "fifth" = s "5" = or
+ { bbl.fifth 't := }
+ { s #1 #1 substring$ is.num
+ { s bbl.th * 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { convert.edition "l" change.case$ " " * bbl.edition * }
+ { convert.edition "t" change.case$ " " * bbl.edition * }
+ 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
+ { bbl.pages pages n.dashify tie.or.space.connect }
+ { bbl.page pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.journal.pages}
+{
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, removed comma before bbl.nr if volume empty
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ volume empty$
+ 'skip$
+ { bbl.volume "~" * swap$ * }
+ if$
+ number empty$
+ 'skip$
+ {
+% " " bbl.nr * number tie.or.space.connect *
+ volume empty$
+ { " " bbl.nr * number tie.or.space.connect * }
+ { ", " bbl.nr * number tie.or.space.connect * }
+ if$
+ }
+ if$
+ format.journal.pages
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+% By Peter Antman, editors in Firstname Lastname order
+FUNCTION {format.in.r.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in format.in.r.editors * ", " *
+ booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in format.in.editors * ", " *
+ booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { bbl.techrep }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ word.in
+ }
+ { bbl.volume volume tie.or.space.connect
+ bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.publisher}
+{ publisher empty$
+ % "empty publisher in " cite$ * warning$ %dont like this warning
+ 'skip$
+ 'skip$
+ if$
+ ""
+ add.blank "(" *
+ address empty$
+ 'skip$
+ { address * }
+ if$
+ publisher empty$
+ 'skip$
+ { address empty$
+ 'skip$
+ { ": " * }
+ if$
+ publisher *
+ }
+ if$
+ year duplicate$ empty$
+ { "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????" }
+ 'skip$
+ if$
+ publisher empty$ address empty$ and
+ { * }
+ { ", " swap$ * * }
+ if$
+ ")" *
+ output
+}
+
+% BY Peter Antman, all types includes full ref
+FUNCTION {article}
+{ output.bibitem
+% pop$ % to get rid of ,
+ format.au "author" output.check % output instead of output check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { journal
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.date "year" output.check.special
+ note output
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { journal
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.date "year" output.check.special
+ note output
+ fin.entry
+ write.url
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.r.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.au output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+ end.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$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+% note output
+ fin.entry
+ write.url
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ howpublished output
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ howpublished output
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.r.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.au output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ end.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$
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+% note output %note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.r.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.edition output
+ format.chapter.pages output
+ note output
+ format.publisher
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.edition output
+ format.chapter.pages output
+ note output
+ format.publisher
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+% note output %note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.r.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ note output
+ publisher empty$
+ { organization output
+% address output
+% format.date "year" output.check
+ format.publisher
+ }
+ { organization output
+ format.publisher
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ note output
+ publisher empty$
+ { organization output
+% address output
+% format.date "year" output.check
+ format.publisher
+ }
+ { organization output
+ format.publisher
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+% note output % note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.btitle "title" output.check
+ organization output
+% address output
+ format.edition output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.btitle "title" output.check
+ organization output
+% address output
+ format.edition output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.title output
+ end.quote.title
+ howpublished output
+ note output
+ format.date "year" output.check.special
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.title output
+ end.quote.title
+ howpublished output
+ note output
+ format.date "year" output.check.special
+ fin.entry
+ write.url
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.r.editors output
+ editor format.key output
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+% address output
+ organization output
+% publisher output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.editors output
+ editor format.key output
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+% address output
+ organization output
+% publisher output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ format.tr.number output.nonnull
+ institution "institution" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ format.tr.number output.nonnull
+ institution "institution" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ note "note" output.check
+ format.date "year" output.check.special
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ note "note" output.check
+ format.date "year" output.check.special
+ fin.entry
+ write.url
+}
+
+FUNCTION {default.type} { misc }
+
+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$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " " * "et~al." emphasize * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ ", "
+ *
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {calc.short.label}
+{ calc.short.authors short.list
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "aaaaa" * }
+ { t sortify * }
+ if$
+ }
+ { 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$
+}
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num number.label }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {not.uniq.forw}
+{ last.label short.list =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ short.list 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+% label write$
+}
+
+FUNCTION {not.uniq.rew}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "" swap$ * "" * }
+ if$
+ 'extra.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+% label write$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "" swap$ * "" * }
+ if$
+ 'extra.label :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+%ITERATE {forward.pass}
+
+ITERATE {not.uniq.forw}
+
+REVERSE {not.uniq.rew}
+
+%REVERSE {reverse.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$ :=
+ calc.short.label
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+% "\newcommand{\enquote}[1]{``#1''}"
+% write$ newline$
+% "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
+% write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `svenska.bst'.
diff --git a/biblio/bibtex/contrib/oxford/oxford_in.bst b/biblio/bibtex/contrib/oxford/oxford_in.bst
new file mode 100644
index 0000000000..b586d121e8
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/oxford_in.bst
@@ -0,0 +1,1889 @@
+%%
+%% This is file `oxford_se.bst', version 0.4
+%% It was first generated with the docstrip utility in custom-bib
+%% and then heavily hacked by Peter Antman.
+%%
+%% This file must still bee considered beta.
+%%
+%% This version is for swedish citation, to get other languages to work
+%% rename it and insert the right bbl.xxx funcions and MACROS from
+%% the right mbd-file, availible with custom-bib. There are two new such
+%% commands, bbl.lq (leftquote) and bbl.rq (rightquote). Here you give
+%% your languages way of quoting titles.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `head,exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% svenska.mbs (with options: `exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% merlin.mbs (with options: `tail,exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% ----------------------------------------
+%% *** ***
+%%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{merlin.mbs}[1996/12/16 3.82 (PWD)]
+ %
+ % NOTICE:
+ % This file may be used for non-profit purposes.
+ % It may not be distributed in exchange for money,
+ % other than distribution costs.
+ %
+ % The author provides it `as is' and does not guarantee it in any way.
+ %
+ % Copyright (C) 1994, 1995, 1996 Patrick W. Daly
+ % Copyright (C) 1997 Peter Antman, peter.antman@abc.se
+ %-------------------------------------------------------------------
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ %
+ % This is an Oxford style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is oxford.sty by Peter Antman
+ %
+ % The form of the bibitem entries is
+ % \harvarditem[Jones, New thesis]{Howard Jones, FULL ENTRY}{1990}{key}
+ % Jones, Howard, FULL ENTRY
+ %
+ % The style gives the full reference att the first citation and then a
+ % abrevated one.
+ %
+ % The file suports an additional entry in the bib-file, stitle. It is
+ % for all but the first citation, when only lastname, and if there are
+ % more lastnames that are the same, title (and if there is a stitle that
+ % instead).
+ %
+ % oxford.sty also inserts an ibid. if the current citation is the same
+ % as the last one.
+ %---------------------------------------------------------------------
+ %
+ % Hacked by Peter Antman to provide Oxford citation style.
+ % FIX: Year cite not correct everywhere ???
+ % changes version 0.2:
+ % moved note in article
+ % editor and key right in short.ref
+ % changes version 0.3:
+ % fixed editors in cite, now orde Firstname Lastname
+ % removed ( and ) around ed.
+ % removed comma before nr. if volume empty
+ % removed comma before year in article, misc and unpub
+ % changes version 0.4
+ % fixed ", " error produced in ouput.bibitem (thanks to
+ % Oren Patashnik for telling me how to do it)
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ stitle
+ title
+ type
+ URL
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+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 :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% BY Peter Antman, special function to get rid of comma before
+% year in article, misc and unpub, se also output.check.special
+FUNCTION {output.nonnull.special}
+{ 's :=
+ output.state mid.sentence =
+ { " " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check.special}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.special
+ if$
+}
+
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ 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 {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ skip$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {non.stop}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{english.mbs}[1995/05/04 1.1 (PWD)]
+ % Copyright (C) 1994, 1995 Patrick W. Dal
+ %-------------------------------------------------------------------
+
+ % The language selected here is ENGLISH
+
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.editors}
+{ "eds." }
+
+FUNCTION {bbl.editor}
+{ "ed." }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "edn." }
+
+FUNCTION {bbl.volume}
+{ "vol." }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "no." }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "pp." }
+
+FUNCTION {bbl.page}
+{ "p." }
+
+FUNCTION {bbl.chapter}
+{ "chap." }
+
+FUNCTION {bbl.techrep}
+{ "Tech Rep." }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis"}
+
+FUNCTION {bbl.first}
+{ "1st" }
+
+FUNCTION {bbl.second}
+{ "2nd" }
+
+FUNCTION {bbl.third}
+{ "3rd" }
+
+FUNCTION {bbl.fourth}
+{ "4th" }
+
+FUNCTION {bbl.fifth}
+{ "5th" }
+
+FUNCTION {bbl.th}
+{ "th" }
+
+% BY Peter Antman, new functions bbl.lq bbl.rq
+FUNCTION {bbl.lq}
+{ "'" }
+
+FUNCTION {bbl.rq}
+{ "'" }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"Jun."}
+
+MACRO {jul} {"Jul."}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sep."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+ % End of language definition file
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+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 {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+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 {tcs} {"Theoretical Computer Science"}
+
+FUNCTION {write.url}
+{ URL empty$
+ { skip$ }
+ { "\newline\harvardurl{" URL * "}" * write$ newline$ }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.names.ed}
+{ format.names }
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ {
+ author format.names
+ }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.editors}
+{ editor empty$
+ { "" }
+ { editor format.names.ed
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title
+ bbl.lq swap$ * % BY Peter Antman, uses bbl.lq
+ non.stop
+ { bbl.rq * ", " * } % BY Peter Antman, uses bbl.rq
+ { bbl.rq * " " * } % PROBLEM: comma after title in book
+ if$
+ }
+ if$
+}
+
+FUNCTION {end.quote.title}
+{ title empty$
+ 'skip$
+ { before.all 'output.state := }
+ 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 * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, function to format long cite
+FUNCTION {format.firstname}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff }{jj }{vv }{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% BY Peter Antman, function to format lastname
+FUNCTION {format.lastname}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll}{}{}{}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% By Peter Antman, to format eds as Firstname Lastname
+FUNCTION {format.r.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.firstname
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, editors in Firstname Lastname
+FUNCTION {format.in.r.editors}
+{ editor empty$
+ { "" }
+ { editor format.firstname
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.au}
+{ author empty$
+ { "" }
+ {
+ author format.firstname
+ }
+ if$
+}
+FUNCTION {format.auth}
+{ author empty$
+ { editor empty$
+ {author format.key}
+ {editor format.lastname}
+ if$
+ }
+ {
+ author format.lastname
+ }
+ if$
+}
+
+% BY Peter Antman, the repeated
+% should contain name if no other name of the same
+% if more names of the same, then stitle
+% if no stitle, then title
+FUNCTION {short.ref}
+{
+% format.auth
+% ", " *
+% extra.label write$
+ extra.label "" =
+ {
+% format.auth
+ short.list % PANIC this is a bad bypas of not having solved ed.
+ "" * extra.label
+ }
+ { stitle empty$
+ {
+ format.auth
+ ", " * title
+ }
+ {
+ format.auth
+ ", " * stitle
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\harvarditem[" write$
+% short.ref duplicate$ label =
+ "" short.ref * "]" * write$
+ pop$ ""
+ "{" write$
+% pop$ % ERROR, does the right thing but produces error
+ before.all 'output.state :=
+}
+
+FUNCTION {end.bibitem}
+{ "}{" * write$
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ extra.label * "}{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+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 {word.in}
+{ bbl.in
+ " " * }
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????" }
+ 'skip$
+ if$
+% extra.label * % BY Peter Antman, removed, not needed in Oxford
+ " (" swap$ * ")" *
+}
+
+FUNCTION {format.btitle}
+{ 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$
+ { "" }
+ { bbl.volume volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { bbl.of space.word * 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 =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { bbl.in space.word * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ edition extract.num "l" change.case$ 's :=
+ s "first" = s "1" = or
+ { bbl.first 't := }
+ { s "second" = s "2" = or
+ { bbl.second 't := }
+ { s "third" = s "3" = or
+ { bbl.third 't := }
+ { s "fourth" = s "4" = or
+ { bbl.fourth 't := }
+ { s "fifth" = s "5" = or
+ { bbl.fifth 't := }
+ { s #1 #1 substring$ is.num
+ { s bbl.th * 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { convert.edition "l" change.case$ " " * bbl.edition * }
+ { convert.edition "t" change.case$ " " * bbl.edition * }
+ 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
+ { bbl.pages pages n.dashify tie.or.space.connect }
+ { bbl.page pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.journal.pages}
+{
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, removed comma before bbl.nr if volume empty
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ volume empty$
+ 'skip$
+ { bbl.volume "~" * swap$ * }
+ if$
+ number empty$
+ 'skip$
+ {
+% " " bbl.nr * number tie.or.space.connect *
+ volume empty$
+ { " " bbl.nr * number tie.or.space.connect * }
+ { ", " bbl.nr * number tie.or.space.connect * }
+ if$
+ }
+ if$
+ format.journal.pages
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+% By Peter Antman, editors in Firstname Lastname order
+FUNCTION {format.in.r.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in format.in.r.editors * ", " *
+ booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in format.in.editors * ", " *
+ booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { bbl.techrep }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ word.in
+ }
+ { bbl.volume volume tie.or.space.connect
+ bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.publisher}
+{ publisher empty$
+ % "empty publisher in " cite$ * warning$ %dont like this warning
+ 'skip$
+ 'skip$
+ if$
+ ""
+ add.blank "(" *
+ address empty$
+ 'skip$
+ { address * }
+ if$
+ publisher empty$
+ 'skip$
+ { address empty$
+ 'skip$
+ { ": " * }
+ if$
+ publisher *
+ }
+ if$
+ year duplicate$ empty$
+ { "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????" }
+ 'skip$
+ if$
+ publisher empty$ address empty$ and
+ { * }
+ { ", " swap$ * * }
+ if$
+ ")" *
+ output
+}
+
+% BY Peter Antman, all types includes full ref
+FUNCTION {article}
+{ output.bibitem
+% pop$ % to get rid of ,
+ format.au "author" output.check % output instead of output check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { journal
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.date "year" output.check.special
+ note output
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { journal
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.date "year" output.check.special
+ note output
+ fin.entry
+ write.url
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.r.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.au output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+ end.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$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+% note output
+ fin.entry
+ write.url
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ howpublished output
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ howpublished output
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.r.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.au output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ end.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$
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+% note output %note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.r.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.edition output
+ format.chapter.pages output
+ note output
+ format.publisher
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.edition output
+ format.chapter.pages output
+ note output
+ format.publisher
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+% note output %note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.r.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ note output
+ publisher empty$
+ { organization output
+% address output
+% format.date "year" output.check
+ format.publisher
+ }
+ { organization output
+ format.publisher
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ note output
+ publisher empty$
+ { organization output
+% address output
+% format.date "year" output.check
+ format.publisher
+ }
+ { organization output
+ format.publisher
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+% note output % note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.btitle "title" output.check
+ organization output
+% address output
+ format.edition output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.btitle "title" output.check
+ organization output
+% address output
+ format.edition output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.title output
+ end.quote.title
+ howpublished output
+ note output
+ format.date "year" output.check.special
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.title output
+ end.quote.title
+ howpublished output
+ note output
+ format.date "year" output.check.special
+ fin.entry
+ write.url
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.r.editors output
+ editor format.key output
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+% address output
+ organization output
+% publisher output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.editors output
+ editor format.key output
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+% address output
+ organization output
+% publisher output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ format.tr.number output.nonnull
+ institution "institution" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ format.tr.number output.nonnull
+ institution "institution" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ note "note" output.check
+ format.date "year" output.check.special
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ note "note" output.check
+ format.date "year" output.check.special
+ fin.entry
+ write.url
+}
+
+FUNCTION {default.type} { misc }
+
+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$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " " * "et~al." emphasize * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ ", "
+ *
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {calc.short.label}
+{ calc.short.authors short.list
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "aaaaa" * }
+ { t sortify * }
+ if$
+ }
+ { 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$
+}
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num number.label }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {not.uniq.forw}
+{ last.label short.list =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ short.list 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+% label write$
+}
+
+FUNCTION {not.uniq.rew}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "" swap$ * "" * }
+ if$
+ 'extra.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+% label write$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "" swap$ * "" * }
+ if$
+ 'extra.label :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+%ITERATE {forward.pass}
+
+ITERATE {not.uniq.forw}
+
+REVERSE {not.uniq.rew}
+
+%REVERSE {reverse.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$ :=
+ calc.short.label
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+% "\newcommand{\enquote}[1]{``#1''}"
+% write$ newline$
+% "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
+% write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `svenska.bst'.
diff --git a/biblio/bibtex/contrib/oxford/oxford_se.bst b/biblio/bibtex/contrib/oxford/oxford_se.bst
new file mode 100644
index 0000000000..fcb3d408bc
--- /dev/null
+++ b/biblio/bibtex/contrib/oxford/oxford_se.bst
@@ -0,0 +1,1890 @@
+%%
+%% This is file `oxford_se.bst', version 0.4
+%% It was first generated with the docstrip utility in custom-bib
+%% and then heavily hacked by Peter Antman.
+%%
+%% This file must still bee considered beta.
+%%
+%% This version is for swedish citation, to get other languages to work
+%% rename it and insert the right bbl.xxx funcions and MACROS from
+%% the right mbd-file, availible with custom-bib. There are two new such
+%% commands, bbl.lq (leftquote) and bbl.rq (rightquote). Here you give
+%% your languages way of quoting titles.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `head,exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% svenska.mbs (with options: `exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% merlin.mbs (with options: `tail,exlang,ay,har,harnm,vonx,nm-revf,ed-rev,dt-end,yr-col,note-yr,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,add-pub,pub-date,pre-edn,edpar,blk-com,svenska,pp,ed,abr,amper,and-xcom,etal-it,{}')
+%% ----------------------------------------
+%% *** ***
+%%
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{merlin.mbs}[1996/12/16 3.82 (PWD)]
+ %
+ % NOTICE:
+ % This file may be used for non-profit purposes.
+ % It may not be distributed in exchange for money,
+ % other than distribution costs.
+ %
+ % The author provides it `as is' and does not guarantee it in any way.
+ %
+ % Copyright (C) 1994, 1995, 1996 Patrick W. Daly
+ % Copyright (C) 1997 Peter Antman, peter.antman@abc.se
+ %-------------------------------------------------------------------
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ %
+ % This is an Oxford style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is oxford.sty by Peter Antman
+ %
+ % The form of the bibitem entries is
+ % \harvarditem[Jones, New thesis]{Howard Jones, FULL ENTRY}{1990}{key}
+ % Jones, Howard, FULL ENTRY
+ %
+ % The style gives the full reference att the first citation and then a
+ % abrevated one.
+ %
+ % The file suports an additional entry in the bib-file, stitle. It is
+ % for all but the first citation, when only lastname, and if there are
+ % more lastnames that are the same, title (and if there is a stitle that
+ % instead).
+ %
+ % oxford.sty also inserts an ibid. if the current citation is the same
+ % as the last one.
+ %---------------------------------------------------------------------
+ %
+ % Hacked by Peter Antman to provide Oxford citation style.
+ % FIX: Year cite not correct everywhere ???
+ % changes version 0.2:
+ % moved note in article
+ % editor and key right in short.ref
+ % changes version 0.3:
+ % fixed editors in cite, now orde Firstname Lastname
+ % removed ( and ) around ed.
+ % removed comma before nr. if volume empty
+ % removed comma before year in article, misc and unpub
+ % changes version 0.4
+ % fixed ", " error produced in ouput.bibitem (thanks to
+ % Oren Patashnik for telling me how to do it)
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ stitle
+ title
+ type
+ URL
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label short.list }
+
+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 :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% BY Peter Antman, special function to get rid of comma before
+% year in article, misc and unpub, se also output.check.special
+FUNCTION {output.nonnull.special}
+{ 's :=
+ output.state mid.sentence =
+ { " " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check.special}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.special
+ if$
+}
+
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ 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 {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ skip$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {non.stop}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{svenska.mbs}[1995/08/07 1.0 (RL/PWD)]
+ % Copyright (C) 1997, Peter Antman
+ %-------------------------------------------------------------------
+
+ % The language selected here is SVENSKA
+
+FUNCTION {bbl.and}
+{ "och"}
+
+FUNCTION {bbl.editors}
+{ "red." }
+
+FUNCTION {bbl.editor}
+{ "red." }
+
+FUNCTION {bbl.edby}
+{ "redigerad av" }
+
+FUNCTION {bbl.edition}
+{ "uppl." }
+
+FUNCTION {bbl.volume}
+{ "vol." }
+
+FUNCTION {bbl.of}
+{ "av" }
+
+FUNCTION {bbl.number}
+{ "nr." }
+
+FUNCTION {bbl.nr}
+{ "nr." }
+
+FUNCTION {bbl.in}
+{ "i" }
+
+FUNCTION {bbl.pages}
+{ "ss." }
+
+FUNCTION {bbl.page}
+{ "s." }
+
+FUNCTION {bbl.chapter}
+{ "kap." }
+
+FUNCTION {bbl.techrep}
+{ "Tekn. rap." }
+
+FUNCTION {bbl.mthesis}
+{ "Licenciatavgandling" }
+
+FUNCTION {bbl.phdthesis}
+{ "Doktorgradsavhandling" }
+
+FUNCTION {bbl.first}
+{ "F^^f6rsta" }
+
+FUNCTION {bbl.second}
+{ "Andra" }
+
+FUNCTION {bbl.third}
+{ "Tredje" }
+
+FUNCTION {bbl.fourth}
+{ "Fj^^e4rde" }
+
+FUNCTION {bbl.fifth}
+{ "Femte" }
+
+FUNCTION {bbl.th}
+{ "." }
+
+% BY Peter Antman, new functions bbl.lq bbl.rq
+FUNCTION {bbl.lq}
+{ "''" }
+
+FUNCTION {bbl.rq}
+{ "''" }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"Maj"}
+
+MACRO {jun} {"Jun."}
+
+MACRO {jul} {"Jul."}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sep."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+ % End of language definition file
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+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 {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+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 {tcs} {"Theoretical Computer Science"}
+
+FUNCTION {write.url}
+{ URL empty$
+ { skip$ }
+ { "\newline\harvardurl{" URL * "}" * write$ newline$ }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}{, jj}{, ff}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.names.ed}
+{ format.names }
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ {
+ author format.names
+ }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.editors}
+{ editor empty$
+ { "" }
+ { editor format.names.ed
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title
+ bbl.lq swap$ * % BY Peter Antman, uses bbl.lq
+ non.stop
+ { bbl.rq * ", " * } % BY Peter Antman, uses bbl.rq
+ { bbl.rq * " " * } % PROBLEM: comma after title in book
+ if$
+ }
+ if$
+}
+
+FUNCTION {end.quote.title}
+{ title empty$
+ 'skip$
+ { before.all 'output.state := }
+ 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 * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, function to format long cite
+FUNCTION {format.firstname}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff }{jj }{vv }{ll}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% BY Peter Antman, function to format lastname
+FUNCTION {format.lastname}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll}{}{}{}" format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% By Peter Antman, to format eds as Firstname Lastname
+FUNCTION {format.r.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.firstname
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, editors in Firstname Lastname
+FUNCTION {format.in.r.editors}
+{ editor empty$
+ { "" }
+ { editor format.firstname
+ editor num.names$ #1 >
+ { " " * bbl.editors * "" * }
+ { " " * bbl.editor * "" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.au}
+{ author empty$
+ { "" }
+ {
+ author format.firstname
+ }
+ if$
+}
+FUNCTION {format.auth}
+{ author empty$
+ { editor empty$
+ {author format.key}
+ {editor format.lastname}
+ if$
+ }
+ {
+ author format.lastname
+ }
+ if$
+}
+
+% BY Peter Antman, the repeated
+% should contain name if no other name of the same
+% if more names of the same, then stitle
+% if no stitle, then title
+FUNCTION {short.ref}
+{
+% format.auth
+% ", " *
+% extra.label write$
+ extra.label "" =
+ {
+% format.auth
+ short.list % PANIC this is a bad bypas of not having solved ed.
+ "" * extra.label
+ }
+ { stitle empty$
+ {
+ format.auth
+ ", " * title
+ }
+ {
+ format.auth
+ ", " * stitle
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\harvarditem[" write$
+% short.ref duplicate$ label =
+ "" short.ref * "]" * write$
+ pop$ ""
+ "{" write$
+% pop$ % ERROR, does the right thing but produces error
+ before.all 'output.state :=
+}
+
+FUNCTION {end.bibitem}
+{ "}{" * write$
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ extra.label * "}{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+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 {word.in}
+{ bbl.in
+ " " * }
+
+FUNCTION {format.date}
+{ year duplicate$ empty$
+ { "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????" }
+ 'skip$
+ if$
+% extra.label * % BY Peter Antman, removed, not needed in Oxford
+ " (" swap$ * ")" *
+}
+
+FUNCTION {format.btitle}
+{ 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$
+ { "" }
+ { bbl.volume volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { bbl.of space.word * 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 =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { bbl.in space.word * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ edition extract.num "l" change.case$ 's :=
+ s "first" = s "1" = or
+ { bbl.first 't := }
+ { s "second" = s "2" = or
+ { bbl.second 't := }
+ { s "third" = s "3" = or
+ { bbl.third 't := }
+ { s "fourth" = s "4" = or
+ { bbl.fourth 't := }
+ { s "fifth" = s "5" = or
+ { bbl.fifth 't := }
+ { s #1 #1 substring$ is.num
+ { s bbl.th * 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { convert.edition "l" change.case$ " " * bbl.edition * }
+ { convert.edition "t" change.case$ " " * bbl.edition * }
+ 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
+ { bbl.pages pages n.dashify tie.or.space.connect }
+ { bbl.page pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.journal.pages}
+{
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * }
+ if$
+ }
+ if$
+}
+
+% BY Peter Antman, removed comma before bbl.nr if volume empty
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ volume empty$
+ 'skip$
+ { bbl.volume "~" * swap$ * }
+ if$
+ number empty$
+ 'skip$
+ {
+% " " bbl.nr * number tie.or.space.connect *
+ volume empty$
+ { " " bbl.nr * number tie.or.space.connect * }
+ { ", " bbl.nr * number tie.or.space.connect * }
+ if$
+ }
+ if$
+ format.journal.pages
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+% By Peter Antman, editors in Firstname Lastname order
+FUNCTION {format.in.r.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in format.in.r.editors * ", " *
+ booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in format.in.editors * ", " *
+ booktitle emphasize * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { bbl.techrep }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ word.in
+ }
+ { bbl.volume volume tie.or.space.connect
+ bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.publisher}
+{ publisher empty$
+ % "empty publisher in " cite$ * warning$ %dont like this warning
+ 'skip$
+ 'skip$
+ if$
+ ""
+ add.blank "(" *
+ address empty$
+ 'skip$
+ { address * }
+ if$
+ publisher empty$
+ 'skip$
+ { address empty$
+ 'skip$
+ { ": " * }
+ if$
+ publisher *
+ }
+ if$
+ year duplicate$ empty$
+ { "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????" }
+ 'skip$
+ if$
+ publisher empty$ address empty$ and
+ { * }
+ { ", " swap$ * * }
+ if$
+ ")" *
+ output
+}
+
+% BY Peter Antman, all types includes full ref
+FUNCTION {article}
+{ output.bibitem
+% pop$ % to get rid of ,
+ format.au "author" output.check % output instead of output check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { journal
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.date "year" output.check.special
+ note output
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { journal
+ emphasize
+ "journal" output.check
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.date "year" output.check.special
+ note output
+ fin.entry
+ write.url
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.r.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.au output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+ end.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$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+% note output
+ fin.entry
+ write.url
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ howpublished output
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ howpublished output
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.r.editors "author and editor" output.check
+ editor format.key output
+ }
+ { format.au output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ end.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$
+ format.btitle "title" output.check
+ crossref missing$
+ {
+ format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ format.edition output
+ note output
+ format.publisher
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+% note output %note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.r.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.edition output
+ format.chapter.pages output
+ note output
+ format.publisher
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.edition output
+ format.chapter.pages output
+ note output
+ format.publisher
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+% note output %note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.r.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ note output
+ publisher empty$
+ { organization output
+% address output
+% format.date "year" output.check
+ format.publisher
+ }
+ { organization output
+ format.publisher
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ note output
+ publisher empty$
+ { organization output
+% address output
+% format.date "year" output.check
+ format.publisher
+ }
+ { organization output
+ format.publisher
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+% note output % note moved
+ fin.entry
+ write.url
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.btitle "title" output.check
+ organization output
+% address output
+ format.edition output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.btitle "title" output.check
+ organization output
+% address output
+ format.edition output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.au output
+ author format.key output
+ format.title output
+ end.quote.title
+ howpublished output
+ note output
+ format.date "year" output.check.special
+ end.bibitem
+ format.authors output
+ author format.key output
+ format.title output
+ end.quote.title
+ howpublished output
+ note output
+ format.date "year" output.check.special
+ fin.entry
+ write.url
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.r.editors output
+ editor format.key output
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+% address output
+ organization output
+% publisher output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.editors output
+ editor format.key output
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+% address output
+ organization output
+% publisher output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ format.tr.number output.nonnull
+ institution "institution" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ format.tr.number output.nonnull
+ institution "institution" output.check
+% address output
+ note output
+% format.date "year" output.check
+ format.publisher
+ fin.entry
+ write.url
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.au "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ note "note" output.check
+ format.date "year" output.check.special
+ end.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.title "title" output.check
+ end.quote.title
+ note "note" output.check
+ format.date "year" output.check.special
+ fin.entry
+ write.url
+}
+
+FUNCTION {default.type} { misc }
+
+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$
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$ " " * "et~al." emphasize * }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " " * "et~al." emphasize * }
+ { " \harvardand\ " * s #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ ", "
+ *
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {calc.short.label}
+{ calc.short.authors short.list
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "aaaaa" * }
+ { t sortify * }
+ if$
+ }
+ { 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$
+}
+
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num number.label }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {not.uniq.forw}
+{ last.label short.list =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ short.list 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+% label write$
+}
+
+FUNCTION {not.uniq.rew}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "" swap$ * "" * }
+ if$
+ 'extra.label :=
+}
+
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+% label write$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "" swap$ * "" * }
+ if$
+ 'extra.label :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+%ITERATE {forward.pass}
+
+ITERATE {not.uniq.forw}
+
+REVERSE {not.uniq.rew}
+
+%REVERSE {reverse.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$ :=
+ calc.short.label
+}
+
+ITERATE {bib.sort.order}
+
+SORT
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+% "\newcommand{\enquote}[1]{``#1''}"
+% write$ newline$
+% "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi"
+% write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `svenska.bst'.