summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/biblatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-05-16 20:26:50 +0000
committerKarl Berry <karl@freefriends.org>2016-05-16 20:26:50 +0000
commit99b61eb759c55661a05ac34b0661970d39ec555e (patch)
tree981a8c7f471e8fcab120012186ac8699a551ef88 /Master/texmf-dist/tex/latex/biblatex
parent815e54f6a349937be9afb419f12989c0b9652ab3 (diff)
biblatex 3.4 (16may16)
git-svn-id: svn://tug.org/texlive/trunk@41192 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex')
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx14
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx3
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx32
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex.def (renamed from Master/texmf-dist/tex/latex/biblatex/biblatex_.def)172
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex.sty12125
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex_.sty11607
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def2262
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty10608
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def428
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/blx-dm.def163
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx8
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx16
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx6
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx4
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx212
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx2
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx661
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx45
39 files changed, 13603 insertions, 24853 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx
index e2ef3b61486..06d91ba6c07 100644
--- a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx
@@ -14,7 +14,7 @@
\defbibenvironment{bibliography}
{\list
{\printtext[labelalphawidth]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelalpha}%
\printfield{extraalpha}}}
{\setlength{\labelwidth}{\labelalphawidth}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx
index 6b3984ebade..4f6c6bc5dda 100644
--- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx
@@ -188,15 +188,15 @@
{\usebibmacro{bbx:savehash}%
\printnames{author}%
\iffieldundef{authortype}
- {\setunit{\addspace}}
+ {\setunit{\printdelim{nameyeardelim}}}
{\setunit{\addcomma\space}}}%
\iffieldundef{authortype}
{}
{\usebibmacro{authorstrg}%
- \setunit{\addspace}}}%
+ \setunit{\printdelim{nameyeardelim}}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
- \setunit*{\addspace}}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extrayear}}
\renewbibmacro*{editor}{%
@@ -216,10 +216,10 @@
\usebibmacro{bbx:savehash}}%
\usebibmacro{#1}%
\clearname{editor}%
- \setunit{\addspace}}%
+ \setunit{\printdelim{nameyeardelim}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
- \setunit*{\addspace}}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extrayear}}
\renewbibmacro*{translator}{%
@@ -239,10 +239,10 @@
\usebibmacro{bbx:savehash}}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}%
- \setunit{\addspace}}%
+ \setunit{\printdelim{nameyeardelim}}}%
{\global\undef\bbx@lasthash
\usebibmacro{labeltitle}%
- \setunit*{\addspace}}%
+ \setunit*{\printdelim{nonameyeardelim}}}%
\usebibmacro{date+extrayear}}
\newbibmacro*{bbx:dashcheck}[2]{%
diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx
index 319b26e0553..c9e5145727e 100644
--- a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx
@@ -52,7 +52,6 @@
\detokenize{#2}%
\ifblank{#8}{}{\space\detokenize{#8}}}}
{\DeclareNameFormat{debug}{%
- \nameparts{#1}%
\bbx@mklabel{\currentname}%
\ifdefvoid{\namepartgiven}{}{\expandafter\detokenize\expandafter{\namepartgiven}\space}%
\ifdefvoid{\namepartprefix}{}{\expandafter\detokenize\expandafter{\namepartprefix}\ifpunctmark{'}{}{\space}}%
@@ -103,7 +102,7 @@
\clearpage}
\def\do#1{\DeclareBibliographyAlias{#1}{debug}}
-\abx@dotypes
+\abx@doentrytypes
\do{*}
\DeclareBibliographyDriver{shorthand}{%
diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
index 02299df2a6a..5458f8a5957 100644
--- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
@@ -20,7 +20,7 @@
\defbibenvironment{bibliography}
{\list
{\printtext[labelnumberwidth]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelnumber}}}
{\setlength{\labelwidth}{\labelnumberwidth}%
\setlength{\leftmargin}{\labelwidth}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
index c1d480d4d70..e8a1606383f 100644
--- a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
+++ b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
@@ -27,7 +27,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -65,7 +65,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
@@ -113,7 +113,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -150,7 +150,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{editor+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
@@ -196,7 +196,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -247,7 +247,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -296,7 +296,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -347,7 +347,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -394,7 +394,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -429,7 +429,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author/editor+others/translator+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -466,7 +466,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -504,7 +504,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{editor}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title+issuetitle}%
\newunit
\printlist{language}%
@@ -533,7 +533,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{editor+others}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{maintitle+title}%
\newunit
\printlist{language}%
@@ -581,7 +581,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -622,7 +622,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
@@ -659,7 +659,7 @@
\usebibmacro{bibindex}%
\usebibmacro{begentry}%
\usebibmacro{author}%
- \setunit{\labelnamepunct}\newblock
+ \setunit{\printdelim{nametitledelim}}\newblock
\usebibmacro{title}%
\newunit
\printlist{language}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_.def b/Master/texmf-dist/tex/latex/biblatex/biblatex.def
index 1ac6cc1f723..3016d22fef6 100644
--- a/Master/texmf-dist/tex/latex/biblatex/biblatex_.def
+++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.def
@@ -1,5 +1,5 @@
-% -*- mode: LaTeX -*-
-\ProvidesFile{biblatex_.def}
+\ProvidesFile{biblatex.def}
+[\abx@cptid]
% ------------------------------------------------------------------
% FORMATTING COMMANDS
@@ -10,23 +10,74 @@
% Used in citations, bibliography and bibliography lists
+% legacy - no longer needed could be removed one day when no-one is using it.
+\def\nameparts#1{}
+
% Define namepart keys from datamodel constant list
% \namepart<namepart> - e.g. \namepartfamily
% \namepart<namepart>i - e.g. \namepartfamilyi
-\def\nameparts#1{\setkeys{blx@opt@namepart}{#1}}
\def\do#1{%
\csdef{mkbibname#1}##1{##1}%
\define@key{blx@opt@namepart}{#1}{\csdef{namepart#1}{##1}}%
\define@key{blx@opt@namepart}{#1_i}{\csdef{namepart#1i}{##1}}}
\expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}
-\newcommand*{\mkbibnamefirst}[1]{#1}% legacy alias
-\newcommand*{\mkbibnamelast}[1]{#1}% legacy alias
-\newcommand*{\mkbibnameaffix}[1]{#1}% legacy alias
+% legacy aliases
+% set empty defaults so we can check if they have been redefined
+\let\mkbibnamefirst\@empty
+\let\mkbibnamelast\@empty
+\let\mkbibnameaffix\@empty
+
+\AtEndPreamble{%
+
+ \ifdefempty\mkbibnamelast
+ {\let\@mkbibnamelastsaved\mkbibnamefamily}% not redefined by user
+ {\blx@warning@noline{%
+ Attempt to redefine deprecated \string\mkbibnamelast\space, please
+ use \string\mkbibnamefamily\space instead. Using
+ \string\mkbibnamefamily}%
+ \let\@mkbibnamelastsaved\mkbibnamelast
+ \let\mkbibnamefamily\@mkbibnamelastsaved}%
+ % Now redefine it in case it's used
+ \def\mkbibnamelast{%
+ \blx@warning@noline{%
+ \string\mkbibnamelast\space is deprecated, please use
+ \string\mkbibnamefamily. Using \string\mkbibnamefamily}%
+ \@mkbibnamelastsaved}
+
+ \ifdefempty\mkbibnamefirst
+ {\let\@mkbibnamefirstsaved\mkbibnamegiven}% not redefined by user
+ {\blx@warning@noline{%
+ Attempt to redefine deprecated \string\mkbibnamefirst\space, please
+ use \string\mkbibnamegiven\space instead. Using
+ \string\mkbibnamegiven}%
+ \let\@mkbibnamefirstsaved\mkbibnamefirst
+ \let\mkbibnamegiven\@mkbibnamefirstsaved}%
+ % Now redefine it in case it's used
+ \def\mkbibnamefirst{%
+ \blx@warning@noline{%
+ \string\mkbibnamefirst\space is deprecated, please use
+ \string\mkbibnamegiven. Using \string\mkbibnamegiven}%
+ \@mkbibnamefirstsaved}
+
+ \ifdefempty\mkbibnameaffix
+ {\let\@mkbibnameaffixsaved\mkbibnamesuffix}% not redefined by user
+ {\blx@warning@noline{%
+ Attempt to redefine deprecated \string\mkbibnameaffix\space, please
+ use \string\mkbibnamesuffix\space instead. Using
+ \string\mkbibnamesuffix}%
+ \let\@mkbibnameaffixsaved\mkbibnameaffix
+ \let\mkbibnamesuffix\@mkbibnameaffixsaved}%
+ % Now redefine it in case it's used
+ \def\mkbibnameaffix{%
+ \blx@warning@noline{%
+ \string\mkbibnameaffix\space is deprecated, please use
+ \string\mkbibnamesuffix. Using \string\mkbibnamesuffix}%
+ \@mkbibnameaffixsaved}}
+
\newcommand*{\bibellipsis}{[\textellipsis\unkern]\midsentence}
% Delimiters used in citations, bibliography and bibliography lists
-
\newcommand*{\multinamedelim}{\addcomma\space}
\newcommand*{\finalnamedelim}{%
\ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
@@ -40,17 +91,12 @@
\addspace\bibstring{and}\space}
\newcommand*{\andmoredelim}{\addspace}
-% Used in citations
-
\newcommand*{\multicitedelim}{\addsemicolon\space}
\newcommand*{\compcitedelim}{\addcomma\space}
\newcommand*{\supercitedelim}{\addcomma}
\newcommand*{\prenotedelim}{\addspace}
\newcommand*{\postnotedelim}{\addcomma\space}
\newcommand*{\extpostnotedelim}{\addspace}
-\newcommand*{\nametitledelim}{\addcomma\space}
-\newcommand*{\nameyeardelim}{\addspace}
-\newcommand*{\nonameyeardelim}{\addspace}
\newcommand*{\volcitedelim}{\addcomma\space}
\newcommand*{\textcitedelim}{%
\iffinalcitedelim
@@ -60,6 +106,22 @@
{\iftextcitepunct{\addsemicolon}{\addcomma}}%
\space}
+% context-sensitive delimiters
+% retain compatibility with \labelnamepunct
+\DeclareDelimFormat{namelabeldelim}{\addspace}
+\DeclareDelimFormat{nametitledelim}{\addcomma\space}
+\DeclareDelimFormat[bib]{nametitledelim}{\labelnamepunct}
+\DeclareDelimFormat[biblist]{nametitledelim}{\labelnamepunct}
+\DeclareDelimFormat[textcite]{nametitledelim}{\addspace}
+\DeclareDelimFormat{nameyeardelim}{\addspace}
+\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}
+\DeclareDelimFormat[bib]{nameyeardelim}{\addspace}
+\DeclareDelimFormat[biblist]{nameyeardelim}{\addspace}
+\DeclareDelimFormat{nonameyeardelim}{\addspace}
+\DeclareDelimFormat[textcite]{nonameyeardelim}{\addspace}
+\DeclareDelimFormat[bib]{nonameyeardelim}{\addspace}
+\DeclareDelimFormat[biblist]{nonameyeardelim}{\addspace}
+
% This is a provisional definition for \iffinalcitedelim{<true>}{<false>}, a
% test that should expand <true> if the next non-compact citation delimiter
% is the last one in the citation list printed by \textcite or \textcites.
@@ -677,7 +739,6 @@
\DeclareNameAlias{first-last}{given-family}% legacy alias
\DeclareNameFormat{given-family}{%
- \nameparts{#1}%
\ifgiveninits
{\usebibmacro{name:given-family}
{\namepartfamily}
@@ -693,7 +754,6 @@
\DeclareNameAlias{last-first}{family-given}% legacy alias
\DeclareNameFormat{family-given}{%
- \nameparts{#1}%
\ifgiveninits
{\usebibmacro{name:family-given}
{\namepartfamily}
@@ -707,9 +767,8 @@
{\namepartsuffix}}%
\usebibmacro{name:andothers}}
-\DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy aliAs
+\DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy alias
\DeclareNameFormat{family-given/given-family}{%
- \nameparts{#1}%
\ifnumequal{\value{listcount}}{1}
{\ifgiveninits
{\usebibmacro{name:family-given}
@@ -722,7 +781,10 @@
{\namepartgiven}
{\namepartprefix}
{\namepartsuffix}}%
- \ifempty{\namepartgiven\namepartprefix}
+ \ifboolexpe{%
+ test {\ifdefvoid\namepartgiven}
+ and
+ test {\ifdefvoid\namepartprefix}}
{}
{\usebibmacro{name:revsdelim}}}
{\ifgiveninits
@@ -739,7 +801,6 @@
\usebibmacro{name:andothers}}
\DeclareNameFormat{initsonly}{%
- \nameparts{#1}%
\usebibmacro{name:given-family}
{\namepartfamilyi}
{\namepartgiveni}
@@ -758,7 +819,6 @@
% Used in some citations
\DeclareNameFormat{labelname}{%
- \nameparts{#1}%
\ifcase\value{uniquename}%
\usebibmacro{name:family}
{\namepartfamily}
@@ -822,7 +882,7 @@
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
- \ifempty{#3}
+ \ifdefvoid{#3}
{}
{\ifcapital
{\mkbibnameprefix{\MakeCapital{#3}}\isdot}
@@ -839,14 +899,14 @@
\newbibmacro*{name:given-family}[4]{%
\usebibmacro{name:delim}{#2#3#1}%
\usebibmacro{name:hook}{#2#3#1}%
- \ifempty{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
- \ifempty{#3}{}{%
+ \ifdefvoid{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
+ \ifdefvoid{#3}{}{%
\mkbibnameprefix{#3}\isdot
\ifprefchar
{}
{\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
\mkbibnamefamily{#1}\isdot
- \ifempty{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}}
+ \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}
\newbibmacro*{name:first-last}[4]{% legacy alias
\blx@warning@noline{%
'name:first-last' is deprecated, please use 'name:given-family'}%
@@ -856,21 +916,26 @@
\ifuseprefix
{\usebibmacro{name:delim}{#3#1}%
\usebibmacro{name:hook}{#3#1}%
- \ifempty{#3}{}{%
+ \ifdefvoid{#3}{}{%
\ifcapital
{\mkbibnameprefix{\MakeCapital{#3}}\isdot}
{\mkbibnameprefix{#3}\isdot}%
\ifprefchar{}{\bibnamedelimc}}%
\mkbibnamefamily{#1}\isdot
- \ifempty{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
- \ifempty{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}
+ \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
+ \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}
{\usebibmacro{name:delim}{#1}%
\usebibmacro{name:hook}{#1}%
\mkbibnamefamily{#1}\isdot
- \ifempty{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
- \ifempty{#2#3}{}{\revsdnamepunct}%
- \ifempty{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
- \ifempty{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}
+ \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
+ \ifboolexpe{%
+ test {\ifdefvoid{#2}}
+ and
+ test {\ifdefvoid{#3}}}
+ {}
+ {\revsdnamepunct}%
+ \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
+ \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}
\newbibmacro*{name:last-first}[4]{% legacy alias
\blx@warning@noline{%
'name:last-first' is deprecated, please use 'name:family-given'}%
@@ -969,7 +1034,6 @@
% The fallback used by \indexnames
\DeclareIndexNameFormat{default}{%
- \nameparts{#1}%
\usebibmacro{index:name}
{\index}
{\namepartfamily}
@@ -1019,26 +1083,29 @@
\usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}}
% {<family name>}{<given name>}{<given initials>}{<family name prefix>}
-
\newcommand*{\mkbibindexname}[4]{%
\ifuseprefix
- {\ifblank{#3}{}{#3 }%
+ {\ifdefvoid{#3}{}{#3 }%
\@firstofone #1% remove spurious braces
- \ifblank{#4}{}{ #4}%
- \ifblank{#2}{}{, #2}%
+ \ifdefvoid{#4}{}{ #4}%
+ \ifdefvoid{#2}{}{, #2}%
\actualoperator
- \ifblank{#3}{}{\MakeCapital{#3} }%
+ \ifdefvoid{#3}{}{\MakeCapital{#3} }%
#1%
- \ifblank{#4}{}{ #4}%
- \ifblank{#2}{}{, #2}}
+ \ifdefvoid{#4}{}{ #4}%
+ \ifdefvoid{#2}{}{, #2}}
{\@firstofone #1% remove spurious braces
- \ifblank{#4}{}{ #4}%
- \ifblank{#2#3}{}{,}%
- \ifblank{#2}{}{ #2}%
- \ifblank{#3}{}{ #3}}}
+ \ifdefvoid{#4}{}{ #4}%
+ \ifboolexpe{%
+ test {\ifdefvoid{#2}}
+ and
+ test {\ifdefvoid{#3}}}
+ {}
+ {,}%
+ \ifdefvoid{#2}{}{ #2}%
+ \ifdefvoid{#3}{}{ #3}}}
% {<control sequence>}{<control sequence>}
-
\newcommand*{\mkbibindexsubentry}[2]{%
\ifblank{#1}{}{\subentryoperator#1\actualoperator#2}}
@@ -1057,6 +1124,25 @@
\mkbibindexname{#2}{#3}{#4}{#5}\mkbibindexsubentry{#6}{#7}}}
% ------------------------------------------------------------------
+% datafieldsets
+% ------------------------------------------------------------------
+
+% Some defaults for backwards compat for the biber nosort option
+\DeclareDatafieldSet{setnames}{
+ \member[datatype=name, fieldtype=list]
+}
+
+\DeclareDatafieldSet{settitles}{
+ \member[field=title]
+ \member[field=booktitle]
+ \member[field=eventtitle]
+ \member[field=issuetitle]
+ \member[field=journaltitle]
+ \member[field=maintitle]
+ \member[field=origtitle]
+}
+
+% ------------------------------------------------------------------
% Driver sourcemaps
% ------------------------------------------------------------------
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
index 3271b7b39a5..98fd4dd7ca4 100644
--- a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
+++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
@@ -1,92 +1,12091 @@
-%%
-%% This is file `biblatex.sty'.
-%%
+% Copyright (c) 2006-2011 Philipp Lehman.
+% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright
+%
+% Permission is granted to copy, distribute and/or modify this
+% software under the terms of the LaTeX Project Public License
+% (LPPL), version 1.3c.
+%
+% This software is provided 'as is', without warranty of any kind,
+% either expressed or implied, including, but not limited to, the
+% implied warranties of merchantability and fitness for a
+% particular purpose.
-% Set up the version strings here, so they are the same for both branches
-\def\abx@date{2016/03/03}
-\def\abx@version{3.3}
+% Set up the version strings here
+\def\abx@date{2016/05/14}
+\def\abx@version{3.4}
\def\abx@bbxid{\abx@date\space v\abx@version\space biblatex bibliography style (PK/JW/AB)}
\def\abx@cbxid{\abx@date\space v\abx@version\space biblatex citation style (PK/JW/AB)}
\def\abx@lbxid{\abx@date\space v\abx@version\space biblatex localization (PK/JW/AB)}
\def\abx@cptid{\abx@date\space v\abx@version\space biblatex compatibility (PK/JW/AB)}
-% This is not updated by build script as the controlfile version
+
+% This is not updated by build script as the control file version
% does not necessarily change with the package version.
% This is used when writing the .bcf
-\def\blx@bcfversion{3.0}
+\def\blx@bcfversion{3.1}
+
% This is not updated by build script as the bbl version
% does not necessarily change with the package version.
% This is used when checking the .bbl
-\def\blx@bblversion{2.6}
+\def\blx@bblversion{2.7}
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{biblatex}
[\abx@date\space v\abx@version\space programmable bibliographies (PK/JW/AB)]
-% Set up a switch for choosing the version
-\newif\ifblx@load@version@legacy
+%% Dependencies
+\RequirePackage{iftex}
+\RequirePackage{pdftexcmds}
+\RequirePackage{etoolbox}
+\RequirePackage{keyval}
+\RequirePackage{kvoptions}
+\RequirePackage{logreq}
+\RequirePackage{ifthen}
+\RequirePackage{url}
+\RequirePackage{xstring}
+%\RequirePackage{trace}
-% A switch so we can issue a message about the backend
-\newif\ifblx@load@backend@seen
+\@ifpackagelater{etoolbox}{2010/11/29}
+ {}
+ {\PackageError{biblatex}
+ {Outdated 'etoolbox' package}
+ {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak
+ I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak
+ This is a fatal error. I'm aborting now.}%
+ \endinput}
-% Fake keyval options to detect the backend
-% All basically the same, so passing the backend is done simply
-\DeclareOption{backend=bibtex}{%
- \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}%
- \blx@load@version@legacytrue
- \blx@load@backend@seentrue
-}
-\DeclareOption{backend=bibtex8}{%
- \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}%
- \blx@load@version@legacytrue
- \blx@load@backend@seentrue
+%% Category codes
+
+\def\blx@docatcodes{%
+ \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.%
+ \do\,\do\;\do\:\do\!\do\?\do\/}
+\def\do#1{\catcode\number`#1=\the\catcode`#1\relax}
+\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|}
+\let\do\noexpand
+
+\def\blx@saneccodes{%
+ \catcode`\~=\active
+ \let\do\@makeother
+ \blx@docatcodes
+ \let\do\noexpand}
+
+\blx@saneccodes
+\catcode`\&=3
+\catcode`\|=3
+\catcode`\^=7
+\def\blx@nl{^^J}
+
+%% Compatibility
+
+\AtEndPreamble{%
+ \def\do#1{%
+ \@ifpackageloaded{#1}
+ {\blx@error
+ {Incompatible package '#1'}
+ {The '#1' package and biblatex are incompatible}}
+ {}}%
+ \docsvlist{%
+ amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib,
+ cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus,
+ mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}%
+ \def\blx@langstrings{}%
+ % Set up sortlocale defaults
+ \ifdefstring\blx@sortlocale{auto}
+ {\ifdef\bbl@main@language% babel or polyglossia is loaded
+ {\edef\blx@sortlocale{\bbl@main@language}}
+ {\def\blx@sortlocale{english}}}
+ {}%
+ \@ifpackageloaded{polyglossia}
+ {% This is required for languages which are never explicitly selected
+ % This check because \xpg@loaded is not defined in polyglossia <= v1.42.0
+ \ifundef\xpg@loaded
+ {\let\xpg@loaded\@empty
+ \let\xpg@vloaded\@empty
+ \PackageWarningNoLine{biblatex}{Upgrade package 'polyglossia' to >v1.42.0 recommended}}
+ {}%
+ \def\do#1{\blx@langsetup{#1}}%
+ \expandafter\docsvlist\expandafter{\xpg@loaded}%
+ \expandafter\docsvlist\expandafter{\xpg@vloaded}%
+ \ifboolexpr{
+ not test {\iftoggle{blx@autolangbib}}
+ and
+ not test {\iftoggle{blx@autolangcite}}}
+ {\blx@mknoautolang}
+ {\blx@mkautolangpoly}}
+ {\@ifpackageloaded{babel}
+ {% This is required for languages which are never explicitly selected
+ \def\do#1{\blx@langsetup{#1}}%
+ \expandafter\docsvlist\expandafter{\bbl@loaded}%
+ \ifboolexpr{
+ not test {\iftoggle{blx@autolangbib}}
+ and
+ not test {\iftoggle{blx@autolangcite}}}
+ {\blx@mknoautolang}
+ {\blx@mkautolangbabel}}
+ {\blx@mknoautolang}}%
+ % These already have defaults set to basically do nothing
+ % so if the toggles are true, we need to define again since
+ % mkautolang* redefines \blx@beglang
+ % In turn, \blx@beglang defines \blx@endlang and so \blx@beglangcite and
+ % \blx@endlangcite need redefining inside \blx@beglang after \blx@endlang
+ % has been defined.
+ \iftoggle{blx@autolangbib}
+ {\let\blx@beglangbib\blx@beglang}
+ {}%
+ \iftoggle{blx@autolangcite}
+ {\let\blx@beglangcite\blx@beglang}
+ {}%
+ \csuse{abx@extras@\blx@languagename}%
+ \csuse{abx@strings@\blx@languagename}%
+ \undef\blx@mkautolangbabel
+ \undef\blx@mkautolangpoly
+ \undef\blx@mknoautolang
+ \ifnum\blx@hyperref=\z@
+ \blx@mknohyperref
+ \else
+ \@ifpackageloaded{hyperref}
+ {\blx@mkhyperref}
+ {\ifnum\blx@hyperref=\@ne
+ \blx@warning@noline{%
+ Missing 'hyperref' package.\MessageBreak
+ Setting hyperref=false}%
+ \fi
+ \blx@mknohyperref}%
+ \fi
+ \providecommand*{\nolinkurl}{\url}%
+ \undef\blx@mkhyperref
+ \undef\blx@mknohyperref
+ \ifundef\TE@hook
+ {\let\TE@hook\@empty
+ \toggletrue{blx@tempa}%
+ \def\do#1{%
+ \patchcmd#1%
+ {\let\isundefined\TE@undef}
+ {\let\isundefined\TE@undef\TE@hook}
+ {\togglefalse{blx@tempa}\listbreak}
+ {}}%
+ \docsvlist{%
+ \ifthenelse,% ifthen
+ \org@ifthenelse,% babel
+ \HyOrg@ifthenelse,% hyperref
+ \NROrg@ifthenelse}% nameref
+ \iftoggle{blx@tempa}
+ {\blx@err@patch{'ifthen' package}}
+ {}}
+ {}%
+ \appto\TE@hook{\blx@TE@hook}%
+ \toggletrue{blx@tempa}%
+ \def\do#1{%
+ \patchcmd#1%
+ {\color@begingroup}
+ {\color@begingroup\toggletrue{blx@footnote}}
+ {\togglefalse{blx@tempa}\listbreak}
+ {}}%
+ \docsvlist{%
+ \@footnotetext,% latex
+ \H@@footnotetext,% hyperref
+ \V@@footnotetext,% fancyvrb
+ \scr@saved@footnotetext,% koma-script 3.x
+ \l@dold@footnotetext,% ledmac
+ \l@doldold@footnotetext,% ledmac
+ \@fntORI}% frenchle
+ \iftoggle{blx@tempa}% ams classes
+ {\patchcmd\@footnotetext
+ {\@makefntext}
+ {\toggletrue{blx@footnote}\@makefntext}
+ {\togglefalse{blx@tempa}}
+ {}}
+ {}%
+ \@ifclassloaded{memoir}
+ {\def\do#1{%
+ \patchcmd#1%
+ {\color@begingroup}
+ {\color@begingroup\toggletrue{blx@footnote}}
+ {}
+ {}}%
+ \docsvlist{%
+ \m@mold@footnotetext,%
+ \@plainfootnotetext,%
+ \@twocolfootnotetext,%
+ \@threecolfootnotetext,%
+ \@parafootnotetext}%
+ \def\do#1{%
+ \patchcmd#1%
+ {\color@begingroup\@makefntext}
+ {\color@begingroup\toggletrue{blx@footnote}\@makefntext}
+ {}
+ {}}%
+ \docsvlist{%
+ \@footnotetext,% patch twice
+ \H@@footnotetext,% patch twice
+ \@plainfootnotetext}}
+ {}%
+ \iftoggle{blx@tempa}
+ {\blx@warning@noline{%
+ Patching footnotes failed.\MessageBreak
+ Footnote detection will not work}}
+ {}%
+ \@ifpackageloaded{endnotes}
+ {\patchcmd\theendnotes
+ {\enoteformat}
+ {\toggletrue{blx@footnote}\enoteformat}
+ {}
+ {\blx@err@patch{'endnotes' package}}}
+ {}%
+ \@ifpackageloaded{bigfoot}
+ {\apptocmd\@makefnstartbox
+ {\toggletrue{blx@footnote}}
+ {}
+ {\blx@err@patch{'bigfoot' package}}}
+ {}%
+ \@ifpackageloaded{showkeys}
+ {\ifdef\SK@
+ {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}%
+ \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}%
+ \ifundef\SK@cite % = 'notcite' disabled
+ {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}}
+ {}}
+ {}}
+ {}%
+ \apptocmd\@floatboxreset
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}}
+ {}
+ {\blx@err@patch{floats}}%
+ \ifdef\TX@endtabularx % tabularx/memoir
+ {\pretocmd\TX@endtabularx
+ {\addtocounter{tabx@nest}{1}}% track nested tabularx environments
+ {}
+ {\blx@err@patch{'tabularx'}}%
+ % no need to conditionalise on top-level tabx as the search/replace
+ % will only match once anyway
+ \patchcmd\TX@endtabularx
+ {\edef\TX@ckpt{\cl@@ckpt}}
+ {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}%
+ \abx@savetrackers}
+ {}
+ {\blx@err@patch{'tabularx'}}%
+ \apptocmd\TX@endtabularx
+ {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx
+ \abx@cleartrackers
+ \fi
+ \addtocounter{tabx@nest}{-1}}
+ {}
+ {\blx@err@patch{'tabularx'}}}
+ {}%
+ \@ifpackageloaded{csquotes}
+ {\@ifpackagelater{csquotes}{2009/05/30}
+ {}
+ {\blx@error
+ {Outdated 'csquotes' package}
+ {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak
+ I found: '\csuse{ver@csquotes.sty}'}}%
+ \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}%
+ \@ifpackagelater{csquotes}{2009/08/27}
+ {\appto\@blockquote@prehook{\abx@savetrackers}%
+ \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}}
+ {}%
+ \@ifpackagelater{csquotes}{2010/06/09}
+ {}
+ {\newcommand*{\@quotereset}{}\newcount\@quotereset}}
+ {\@ifpackageloaded{babel}
+ {\blx@warning@noline{%
+ 'babel/polyglossia' detected but 'csquotes' missing.\MessageBreak
+ Loading 'csquotes' recommended}}
+ {}%
+ \newcommand*{\@quotelevel}{}%
+ \newcount\@quotelevel
+ \newcommand*{\@quotereset}{}%
+ \newcount\@quotereset
+ \newcommand*{\@setquotesfcodes}{}%
+ \let\@setquotesfcodes\relax
+ \newrobustcmd*{\initoquote}{\@quotelevel\@ne}%
+ \newrobustcmd*{\initiquote}{\@quotelevel\tw@}%
+ \newrobustcmd*{\textooquote}{``}%
+ \newrobustcmd*{\textcoquote}{''}%
+ \newrobustcmd*{\textoiquote}{`\relax}% block ligs
+ \newrobustcmd*{\textciquote}{'\relax}% block ligs
+ \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}%
+ \def\blx@enquote{%
+ \ifnum\@quotelevel>\z@
+ \expandafter\blx@enquote@ii
+ \else
+ \expandafter\blx@enquote@i
+ \fi}%
+ \long\def\blx@enquote@i#1{%
+ \begingroup\initoquote
+ \textooquote#1\textcoquote
+ \endgroup}%
+ \long\def\blx@enquote@ii#1{%
+ \begingroup\initiquote
+ \textoiquote#1\textciquote
+ \endgroup}%
+ \appto\blx@setsfcodes{%
+ \sfcode`\`=\z@
+ \sfcode`\'=\z@}}%
+ \let\do\noexpand}
+
+\begingroup
+\@makeother\#
+% \relax: gobble newline -> titletoc.sty
+\AtEndPreamble{%
+ \addtocontents{toc}{%
+ \boolfalse{citerequest}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}\relax}%
+ \addtocontents{lof}{%
+ \boolfalse{citerequest}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}\relax}%
+ \addtocontents{lot}{%
+ \boolfalse{citerequest}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}\relax}%
+ \patchcmd\addtocontents
+ {\string\@writefile}
+ {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}%
+ \string\@writefile}
+ {}
+ {\blx@err@patch{\string\addtocontents}}}
+\endgroup
+
+% trick hyperref into believing we're natbib
+\let\NAT@parse\@empty
+% trick showkeys into believing we're havard
+\let\HAR@checkdef\@empty
+
+%% Allocation
+
+\providecommand{\@gobblefive}[5]{}
+
+% Counter to track nested tabularx environemnts so we don't
+% try to patch the commands more than once below as this undefs some
+% macros and an error is thrown
+\newcounter{tabx@nest}
+\setcounter{tabx@nest}{0}
+
+\newcounter{listtotal}
+\def\thelisttotal{\the\c@listtotal}
+\newcounter{listcount}
+\def\thelistcount{\the\c@listcount}
+\newcounter{liststart}
+\def\theliststart{\the\c@liststart}
+\newcounter{liststop}
+\def\theliststop{\the\c@liststop}
+\newcounter{citecount}
+\def\thecitecount{\the\c@citecount}
+\newcounter{citetotal}
+\def\thecitetotal{\the\c@citetotal}
+\newcounter{multicitecount}
+\def\themulticitecount{\the\c@multicitecount}
+\newcounter{multicitetotal}
+\def\themulticitetotal{\the\c@multicitetotal}
+\newcounter{instcount}
+\def\theinstcount{\the\c@instcount}
+\newcounter{maxnames}
+\def\themaxnames{\the\c@maxnames}
+\newcounter{minnames}
+\def\theminnames{\the\c@minnames}
+\newcounter{maxitems}
+\def\themaxitems{\the\c@maxitems}
+\newcounter{minitems}
+\def\theminitems{\the\c@minitems}
+\newcounter{citecounter}
+\def\thecitecount{\the\c@citecounter}
+\newcounter{savedcitecounter}
+\def\thecitecount{\the\c@savedcitecounter}
+\newcounter{uniquelist}
+\def\theuniquelist{\the\c@uniquelist}
+\newcounter{uniquename}
+\def\theuniquename{\the\c@uniquename}
+\newcounter{refsection}
+\def\therefsection{\the\c@refsection}
+\newcounter{refsegment}
+\def\therefsegment{\the\c@refsegment}
+\newcounter{maxextratitle}
+\def\themaxextratitle{\the\c@maxextratitle}
+\newcounter{maxextratitleyear}
+\def\themaxextratitleyear{\the\c@maxextratitleyear}
+\newcounter{maxextrayear}
+\def\themaxextrayear{\the\c@maxextrayear}
+\newcounter{maxextraalpha}
+\def\themaxextraalpha{\the\c@maxextraalpha}
+\newcounter{abbrvpenalty}
+\def\theabbrvpenalty{\the\c@abbrvpenalty}
+\newcounter{highnamepenalty}
+\def\thehighnamepenalty{\the\c@highnamepenalty}
+\newcounter{lownamepenalty}
+\def\thelownamepenalty{\the\c@lownamepenalty}
+\newcounter{maxparens}
+\def\themaxparens{\the\c@maxparens}
+\newcounter{parenlevel}
+\def\theparenlevel{\the\c@parenlevel}
+
+\newcount\blx@tempcnta
+\newcount\blx@tempcntb
+\newcount\blx@tempcntc
+\newcount\blx@maxsection
+\expandafter\newcount\csname blx@maxsegment@0\endcsname
+\newcount\blx@notetype
+\newcount\blx@parenlevel@text
+\newcount\blx@parenlevel@foot
+\expandafter\newcount\csname blx@sectionciteorder@0\endcsname
+
+\def\blx@uniquename{0}
+\def\blx@uniquelist{0}
+\def\blx@maxbibnames{0}
+\def\blx@minbibnames{0}
+\def\blx@maxcitenames{0}
+\def\blx@mincitenames{0}
+\def\blx@maxbibnames@type{\blx@maxbibnames}
+\def\blx@minbibnames@type{\blx@minbibnames}
+\def\blx@maxcitenames@type{\blx@maxcitenames}
+\def\blx@mincitenames@type{\blx@mincitenames}
+\def\blx@maxalphanames{0}
+\def\blx@minalphanames{0}
+\def\blx@maxitems{0}
+\def\blx@minitems{0}
+\def\blx@maxitems@type{\blx@maxitems}
+\def\blx@minitems@type{\blx@minitems}
+
+\newlength{\labelnumberwidth}
+\newlength{\labelalphawidth}
+\newlength{\biblabelsep}
+\ifdef\bibitemsep % memoir
+ {}
+ {\newlength{\bibitemsep}}
+\newlength{\bibnamesep}
+\newlength{\bibinitsep}
+\newlength{\bibparsep}
+\newlength{\bibhang}
+
+\newbool{refcontextdefaults}
+\booltrue{refcontextdefaults}%
+\newbool{sourcemap}
+\newbool{citetracker}
+\newbool{pagetracker}
+\newbool{backtracker}
+\newbool{citerequest}
+\booltrue{citerequest}
+\newbool{sortcites}
+
+\newtoggle{blx@bbldone}
+\newtoggle{blx@tempa}
+\newtoggle{blx@tempb}
+\newtoggle{blx@runltx}
+\newtoggle{blx@runbiber}
+\newtoggle{blx@block}
+\newtoggle{blx@unit}
+\newtoggle{blx@skipentry}
+\newtoggle{blx@insert}
+\newtoggle{blx@lastins}
+\newtoggle{blx@keepunit}
+\newtoggle{blx@bibtex}
+\newtoggle{blx@debug}
+\newtoggle{blx@sortcase}
+\newtoggle{blx@sortupper}
+\newtoggle{blx@autolangbib}
+\newtoggle{blx@autolangcite}
+\newtoggle{blx@clearlang}
+\newtoggle{blx@defernumbers}
+\newtoggle{blx@omitnumbers}
+\newtoggle{blx@footnote}
+\newtoggle{blx@labelalpha}
+\newtoggle{blx@labelnumber}
+\newtoggle{blx@labeltitle}
+\newtoggle{blx@labeltitleyear}
+\newtoggle{blx@labeldate}
+\newtoggle{blx@natbib}
+\newtoggle{blx@mcite}
+\newtoggle{blx@loadfiles}
+\newtoggle{blx@singletitle}
+\newtoggle{blx@crossrefsource}
+\newtoggle{blx@xrefsource}
+\newtoggle{blx@uniqueprimaryauthor}
+\newtoggle{blx@uniquetitle}
+\newtoggle{blx@terseinits}
+\newtoggle{blx@giveninits}
+\newtoggle{blx@sortgiveninits}
+\newtoggle{blx@useprefix}
+\newtoggle{blx@addset}
+\newtoggle{blx@setonly}
+\newtoggle{blx@dataonly}
+\newtoggle{blx@skipbib}
+\newtoggle{blx@skipbiblist}
+\newtoggle{blx@skiplab}
+\newtoggle{blx@citation}
+\newtoggle{blx@bibliography}
+\newtoggle{blx@citeindex}
+\newtoggle{blx@bibindex}
+\newtoggle{blx@localnumber}
+\newtoggle{blx@refcontext}
+
+% Nice command from etextools which causes too many problems if you load
+% the whole package
+% Don't use it on arbitrary user input as it dies on non-expandable arguments
+\newcommand*{\blx@xifempty}[1]{\blx@xifstrcmp{#1}{}}
+% {string1}{string2}{true}{false}
+\newcommand*{\blx@xifstrcmp}[2]{\csname @%
+ \ifnum\pdf@strcmp{#1}{#2}=0 first\else second\fi
+ oftwo\endcsname}
+
+% Special fields which need resolution using the information provided by biber
+\listadd\abx@rfields{labeltitle}
+\def\abx@dorfields{%
+ \dolistcsloop{abx@rfields}%
}
-\DeclareOption{backend=bibtexu}{%
- \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}%
- \blx@load@version@legacytrue
- \blx@load@backend@seentrue
+% Just in case we ever have non-name lists to instantiate
+%\listadd\abx@rlists{}
+% \def\abx@dorlists{%
+% \dolistcsloop{abx@rlists}%
+% }
+\listadd\abx@rnames{labelname}
+\def\abx@dornames{%
+ \dolistcsloop{abx@rnames}%
}
-\DeclareOption{backend=biber}{%
- \blx@load@version@legacyfalse
- \blx@load@backend@seentrue
+
+% Used to track default refcontexts for citations
+\cslet{blx@defaultrefcontexts@0}\@empty
+\listadd\blx@allrefsections{0}
+
+% Used to track sorting name key specifications
+\global\let\blx@sortingnamekeyspecs\@empty
+
+% Used to track transliterations
+\global\let\blx@translits\@empty
+
+% Initialise some lists which track changing citations/sortschemes
+% etc. between runs
+\global\let\blx@cites\@empty
+\global\let\blx@refcontexts\@empty
+\global\let\blx@lastrefcontexts\@empty
+\global\let\blx@sortschemes\@empty
+\global\let\blx@lastsortschemes\@empty
+\global\let\blx@biblists\@empty
+\global\let\blx@lastbiblists\@empty
+\global\let\blx@lastcites\@empty
+\global\let\blx@localnumaux\@empty
+
+\newread\blx@bcfin
+\newwrite\blx@bcfout
+
+\def\blx@onlypreamble#1{%
+ \gappto\blx@dopreamblecmds{\do#1}}
+
+\def\blx@dopreamblecmds{%
+ \do\blx@dopreamblecmds
+ \do\blx@onlypreamble}
+
+% Deprecations
+\newrobustcmd*{\DeprecateField}[2]{%
+ \csdef{abx@field@#1}{%
+ \ifcsundef{abx@field@legacy@warning@#1}{\blx@warning@noline{Field '#1' deprecated. #2}}{}%
+ \global\csdef{abx@field@legacy@warning@#1}{}}}%
+\newrobustcmd*{\DeprecateList}[2]{%
+ \csdef{abx@list@#1}{%
+ \ifcsundef{abx@list@legacy@warning@#1}{\blx@warning@noline{List '#1' deprecated. #2}}{}%
+ \global\csdef{abx@list@legacy@warning@#1}{}}}%
+\newrobustcmd*{\DeprecateName}[2]{%
+ \csdef{abx@name@#1}{%
+ \ifcsundef{abx@name@legacy@warning@#1}{\blx@warning@noline{Name '#1' deprecated. #2}}{}%
+ \global\csdef{abx@name@legacy@warning@#1}{}}}%
+
+\DeprecateField{prefixnumber}{Please use 'labelprefix' instead} % Biblatex v3.4
+
+%% Initialization
+\def\blx@blxinit{%
+ \let\blx@blxinit\relax
+ \blx@initunit}
+
+\def\blx@secinit{%
+ \csgdef{blx@sections@\the\c@refsection}{true}% just to say we have a section for tests later
+ \ifcsundef{blx@bsee@\the\c@refsection}
+ {\global\cslet{blx@bsee@\the\c@refsection}\@empty}
+ {}%
+ \ifcsundef{blx@fsee@\the\c@refsection}
+ {\global\cslet{blx@fsee@\the\c@refsection}\@empty}
+ {}%
+ \blx@ibidreset@force
+ \blx@idemreset@force
+ \blx@opcitreset@force
+ \blx@loccitreset@force
+ % List to track all aliases in a section. We need to output all aliases
+ % to the .bcf every time so that they are visible to biber
+ % Reset only if undefined
+ \ifcsundef{blx@keyaliases@\the\c@refsection}
+ {\global\cslet{blx@keyaliases@\the\c@refsection}\@empty}
+ {}%
+ \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment}
+ {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty}
+ {}}
+
+%% Auxiliary commands
+
+\protected\def\blx@safe@actives{%
+ \let\blx@if@safe@actives\if@safe@actives
+ \let\if@safe@actives\iftrue}
+
+\protected\def\blx@rest@actives{%
+ \let\if@safe@actives\blx@if@safe@actives}
+
+\protected\def\blx@regimc#1{%
+ \xappto\blx@blxinit{%
+ \let\noexpand#1\expandafter\noexpand\csname
+ blx@imc@\expandafter\@gobble\string#1\endcsname}}
+
+\protected\def\blx@regimcs#1{\blx@regimcs@i#1&}
+\def\blx@regimcs@i#1{%
+ \ifx#1&\else
+ \blx@regimc#1%
+ \expandafter\blx@regimcs@i
+ \fi}
+
+% {<field>} => \do{<item1>}\do{<item2>}...
+\def\blx@imc@docsvfield#1{%
+ \blx@imc@iffieldundef{#1}
+ {}
+ {\expandafter\expandafter\expandafter\docsvlist
+ \expandafter\expandafter\expandafter{%
+ \csname abx@field@#1\endcsname}}}
+
+% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}...
+\def\blx@imc@forcsvfield#1#2{%
+ \blx@imc@iffieldundef{#2}
+ {}
+ {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i
+ \expandafter\expandafter\expandafter{%
+ \csname abx@field@#2\endcsname}{#1}}}
+
+\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}}
+
+\blx@regimcs{\docsvfield \forcsvfield}
+
+% {<list>|<listmacro>}
+\protected\long\def\blx@listloop#1{%
+ \expandafter\blx@listloop@i#1|&}
+\long\def\blx@listloop@i#1|{%
+ \ifblank{#1}
+ {\blx@break}
+ {\blx@do{#1}\blx@listloop@i}}
+
+\long\def\blx@break#1&{%
+ \blx@done
+ \undef\blx@do
+ \undef\blx@done}
+
+% {<listmacro>}{<listcsname>} => matches in <listmacro>
+\protected\def\blx@filter#1#2{%
+ \def\do##1{%
+ \ifinlistcs{##1}{#2}
+ {\listadd#1{##1}}
+ {}}%
+ \blx@runfilter#1}
+
+% {<listmacro>}{<listcsname>} => matches in <listmacro>
+% Slightly odd use of filtering to do citation sorting.
+% Same as blx@filter but it keeps \tempcnta in step with the
+% resulting number of things in the filtered list. This is
+% because \tempcnta is used to set citetotal - this use
+% of filtering for cite sorting has the side-effect of stripping
+% duplicates like \cite{foo,foo} but we need then to keep citetotal
+% in sync.
+\protected\def\blx@filtercitesort#1#2{%
+ \blx@tempcnta\z@
+ \def\do##1{%
+ \ifinlistcs{##1}{#2}
+ {\listadd#1{##1}%
+ \advance\blx@tempcnta\@ne}
+ {}}%
+ \blx@runfilter#1}
+
+% {<listmacro>}{<listcsname>} => neg. matches in <listmacro>
+\protected\def\blx@notfilter#1#2{%
+ \def\do##1{%
+ \ifinlistcs{##1}{#2}
+ {}
+ {\listadd#1{##1}}}%
+ \blx@runfilter#1}
+
+\def\blx@runfilter#1{%
+ \begingroup\edef#1{\endgroup
+ \unexpanded{\let#1\@empty\dolistloop}{#1}}%
+ #1\let\do\noexpand}
+
+% {<code>}{<string>} => <code>{<string>}
+\protected\def\blx@xsanitizeafter#1#2{%
+ \begingroup
+ \abx@hook@xsanitize
+ \def\blx@tempa{\endgroup#1}%
+ \edef\blx@tempb{#2}%
+ \expandafter\blx@tempa
+ \expandafter{\detokenize\expandafter{\blx@tempb}}}
+
+\def\abx@hook@xsanitize{%
+ \blx@safe@actives
+ \let\protect\string}
+
+% {<code>}{<string>} => <code>{<string>}
+\begingroup
+\catcode`\<=\active
+\catcode`\>=\active
+\catcode`\&=\active
+\catcode`\"=\active
+\catcode`\'=\active
+\protected\gdef\blx@xmlsanitizeafter#1#2{%
+ \begingroup
+ \abx@hook@xsanitize
+ \def\blx@tempa{\endgroup#1}%
+ \edef\blx@tempb{#2}%
+ \let\do\@makeother
+ \dospecials
+ \catcode`\<=\active
+ \catcode`\>=\active
+ \catcode`\&=\active
+ \catcode`\"=\active
+ \catcode`\'=\active
+ \edef<{\string&lt\string;}%
+ \edef>{\string&gt\string;}%
+ \edef&{\string&amp\string;}%
+ \edef"{\string&quot\string;}%
+ \edef'{\string&apos\string;}%
+ \endlinechar\m@ne
+ \everyeof{\noexpand}%
+ \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}%
+ \expandafter\blx@tempa
+ \expandafter{\detokenize\expandafter{\blx@tempb}}}
+\endgroup
+
+% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>}
+\protected\long\def\blx@inputonce#1#2#3#4#5#6{%
+ \ifcsundef{blx@file@#1}
+ {\blx@info@noline{Trying to load #2..}%
+ \IfFileExists{#1}
+ {\blx@info@noline{... file '#1' found}%
+ \listxadd\blx@list@req@stat{#1}%
+ #3\@@input\@filef@und#4#5}
+ {\blx@info@noline{... file '#1' not found}#6}%
+ \global\csdef{blx@file@#1}{}%
+ \@addtofilelist{#1}}
+ {#5}}
+
+% {<write>}{<precode>}{<string>}
+\protected\def\blx@auxwrite#1#2#3{%
+ \if@filesw
+ \begingroup
+ \blx@safe@actives
+ \let\protect\string
+ #2%
+ \immediate\write#1{#3}%
+ \endgroup
+ \fi}
+
+% {<file>}{<signature>}{<true>}{<false>}
+\def\blx@ifsigned#1#2{%
+ \begingroup
+ \let\blx@tempa\@firstoftwo
+ \edef\blx@tempb{\csuse{blx@sig@#2}}%
+ \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}%
+ \openin\blx@bcfin #1.#2\relax
+ \ifeof\blx@bcfin
+ \else
+ \endlinechar\m@ne
+ \readline\blx@bcfin to \blx@tempc
+ \ifeof\blx@bcfin
+ \else
+ \ifx\blx@tempb\blx@tempc
+ \readline\blx@bcfin to \blx@tempc
+ \edef\blx@tempb{\csuse{blx@ver@#2}}%
+ \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}%
+ \ifx\blx@tempb\blx@tempc
+ \else
+ \blx@warning@noline{%
+ File '#1.#2' is wrong format version - expected \blx@bblversion}
+ \fi
+ \else
+ \blx@error
+ {File '#1.#2' not created by biblatex}
+ {This file was apparently not created by biblatex.
+ Rename it or\MessageBreak move it to a location were
+ TeX will not find it. If this error\MessageBreak
+ persists, consider redefining \string\blxauxsuffix.%
+ See the biblatex\MessageBreak manual for details}%
+ \let\blx@tempa\@secondoftwo
+ \fi
+ \fi
+ \fi
+ \closein\blx@bcfin
+ \expandafter\endgroup\blx@tempa}
+
+\edef\blx@sig@bbl{\@percentchar\space $ biblatex auxiliary file $}
+\edef\blx@ver@bbl{\@percentchar\space $ biblatex bbl format version \blx@bblversion\space $}
+\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}}
+\edef\blx@ver@bcf{%
+ \detokenize{<bcf:controlfile version="}\blx@bcfversion
+ \detokenize{" bltxversion="}\abx@version
+ \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}}
+
+% {<true>}{<false>}
+\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{%
+ test {\ifdefstring\inputencodingname{utf8}}
+ or
+ test {\ifdefstring\inputencodingname{utf8x}}
+ or
+ test {\ifdefstring\inputencodingname{lutf8}}
+ or
+ ( test {\ifundef\inputencodingname}
+ and
+ ( not test {\ifundef\XeTeXrevision}
+ or
+ not test {\ifundef\luatexversion}
+ )
+ )
+}}
+
+%% User feedback
+
+\protected\def\blx@error#1#2{%
+ \begingroup
+ \blx@safe@actives
+ \PackageError{biblatex}{#1}{#2.}%
+ \endgroup}
+
+\protected\def\blx@warning@noline#1{%
+ \begingroup
+ \blx@safe@actives
+ \PackageWarningNoLine{biblatex}{#1}%
+ \endgroup}
+\let\blx@warning\blx@warning@noline
+\AtEndOfPackage{
+ \protected\def\blx@warning#1{%
+ \begingroup
+ \blx@safe@actives
+ \PackageWarning{biblatex}{#1}%
+ \endgroup}}
+
+\protected\def\blx@warning@entry#1{%
+ \ifdef\abx@field@entrykey
+ {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}}
+ {\blx@warning{#1}}}
+
+\protected\def\blx@info@noline#1{%
+ \begingroup
+ \blx@safe@actives
+ \PackageInfo{biblatex}{#1\@gobble}%
+ \endgroup}
+\let\blx@info\blx@info@noline
+\AtEndOfPackage{
+ \protected\def\blx@info#1{%
+ \begingroup
+ \blx@safe@actives
+ \PackageInfo{biblatex}{#1}%
+ \endgroup}}
+
+\let\blx@noline\@gobble
+\AtEndOfPackage{\let\blx@noline\@empty}
+\def\blx@imc@BibliographyWarning{\blx@warning@entry}
+\blx@regimc\BibliographyWarning
+
+\protected\def\abx@missing#1{%
+ \mbox{\reset@font\bfseries#1}}
+
+\def\blx@err@patch#1{%
+ \blx@error
+ {Patching #1 failed}
+ {This is an internal issue typically caused by a
+ conflict\MessageBreak between biblatex and some
+ other package. Modifying\MessageBreak the package
+ loading order may fix the problem}}
+
+\def\blx@err@nolang#1{%
+ \blx@error
+ {Language '#1' not found}
+ {The localization module for '#1' could not be found}}
+
+\def\blx@err@invarg#1#2{%
+ \blx@error
+ {Argument '#1' invalid}
+ {\ifblank{#2}
+ {The argument you have supplied is invalid.\MessageBreak
+ See the biblatex manual for details}
+ {#2}}}
+
+\def\blx@err@invopt#1#2{%
+ \blx@error
+ {Option '#1' invalid}
+ {\ifblank{#2}
+ {The option you have supplied is invalid.\MessageBreak
+ See the biblatex manual for valid option keys and
+ possible values}
+ {#2}}}
+
+\def\blx@err@confopt#1#2{%
+ \blx@error
+ {Conflicting options\ifblank{#1}{}{ (#1)}}
+ {\ifblank{#2}
+ {The option you have supplied conflicts with another one.\MessageBreak
+ See the biblatex manual for valid option keys and possible values}
+ {#2}}}
+
+\def\blx@err@optdef#1{%
+ \blx@error
+ {Conflicting options}
+ {The option '#1' is already defined}}
+
+\def\blx@err@nodocdiv#1{%
+ \blx@error
+ {\@backslashchar#1 not provided by class}
+ {The document class does not seems to support #1s}}
+
+\def\blx@err@nosec#1{%
+ \blx@error
+ {Section '#1' not found}
+ {The reference section '#1' could not be found}}
+
+\def\blx@err@nosort#1{%
+ \blx@error
+ {Sorting scheme '#1' not found}
+ {The sorting scheme '#1' does not seem to have been defined anywhere}}
+
+\def\blx@err@secfirst{%
+ \blx@error
+ {'section' not first filter}
+ {When passing multiple filter options,
+ the 'section' filter must be given first}}
+
+\protected\def\blx@err@nestcite{%
+ \blx@error
+ {Nested citation command}
+ {Citation commands may not be nested}}
+
+\def\blx@err@nestenv#1{%
+ \blx@error
+ {Nested '#1' environment}
+ {This environment may not be nested}}
+
+\protected\def\blx@err@citecmd#1{%
+ \begingroup
+ \escapechar\m@ne
+ \blx@error
+ {Command '\@backslashchar\string#1' undefined}
+ {The citation command '\@backslashchar\string#1'
+ has not been defined\MessageBreak by the
+ selected citation style}%
+ \endgroup}
+
+\def\blx@err@endnote#1{%
+ \blx@error
+ {Missing or incomplete endnote support}
+ {There does not seem to be endnote support available\MessageBreak
+ or the available support is incomplete.\MessageBreak
+ If you continue, I will fall back to '\string#1'}%
+ #1}
+
+\def\blx@err@matchparen#1{%
+ \blx@error
+ {Unbalanced parentheses or brackets}
+ {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak
+ This error is triggered if \string\bibopenparen\space and
+ \string\bibcloseparen\MessageBreak or
+ \string\bibopenbracket\space and \string\bibclosebracket\space
+ are unbalanced\MessageBreak or mismatched}}
+
+\def\blx@err@nestparen#1{%
+ \blx@error
+ {Too deeply nested parentheses or brackets}
+ {#1 nested too deeply%
+ \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak
+ This error may also be triggered if \string\mkbibparens\MessageBreak
+ or \string\mkbibbrackets\space are nested too deeply}}
+
+\def\blx@err@filter{%
+ \blx@error
+ {Invalid filter expression}
+ {The filter expression you have supplied is invalid.\MessageBreak
+ See the biblatex manual for details}}
+
+\def\blx@warn@nohyph#1{%
+ \blx@warning{No hyphenation patterns for '#1'}}
+
+\protected\def\blx@warn@citecmd#1#2{%
+ \blx@warning{%
+ '\string#1' not defined by citation style.\MessageBreak
+ Falling back to '\string#2'}%
+ #2}
+
+\protected\def\blx@warn@nostring#1{%
+ \blx@warning@entry{Bibliography string '#1' undefined}%
+ \abx@missing{#1}}
+
+\def\blx@warn@conflopt#1{%
+ \blx@warning{Conflicting options.\MessageBreak#1}}
+
+\def\blx@warn@badoptdt#1{%
+ \blx@warning{Invalid option datatype '#1'.\MessageBreak Defaulting to 'boolean'}}
+
+\def\blx@warn@depropt#1{%
+ \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}}
+
+\def\blx@warn@bibempty{%
+ \@latex@warning{Empty bibliography}}
+
+\def\blx@warn@biblistempty#1{%
+ \@latex@warning{Empty biblist '#1'}}
+
+\def\blx@inf@refsec{%
+ \blx@info{Reference section=\the\c@refsection}}%
+
+\def\blx@warn@delimdeclare#1#2{%
+ \blx@warning{Delimiter '#1' in context '#2' already defined, overwriting}}
+
+\def\blx@warn@delimuse#1#2{%
+ \blx@warning{Delimiter '#1' in context '#2' undefined}}
+
+\def\blx@inf@refseg{%
+ \ifnum\c@refsection=\z@
+ \blx@info{Reference segment=\the\c@refsegment}%
+ \else
+ \blx@info{%
+ Reference section/segment=%
+ \the\c@refsection/\the\c@refsegment}%
+ \fi}
+
+\def\blx@inf@creset{%
+ \blx@info{Resetting trackers}}%
+
+\def\blx@msg@cundef#1{%
+ Citation '#1' undefined}
+\def\blx@msg@cundefon#1{%
+ Citation '#1' on page \the\c@page\space undefined}
+
+% Dummy as backend is biber by default. Some style may still use this to
+% check though.
+\newrobustcmd*{\RequireBiber}[1][2]{}
+
+% \blx@list@active active aux files (basename)
+% [internal list]
+% \blx@list@inactive inactive aux files (basename)
+% [internal list]
+% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections)
+% aux file (basename) -> bib files (full)
+% [internal list]
+
+\let\blx@list@active\@empty
+\let\blx@list@inactive\@empty
+\listeadd\blx@list@inactive{\jobname}
+
+\protected\def\blx@regbibfiles#1#2{%
+ \forlistloop{\blx@regbibfile{#1}}{#2}}
+
+\def\blx@regbibfile#1#2{%
+ \ifcsundef{blx@res@loca@#2}
+ {\blx@regbibfile@i{#1}{#2}}
+ {\ifcsstring{blx@res@loca@#2}{local}
+ {\blx@regbibfile@i{#1}{#2}}
+ {}}}
+
+\def\blx@regbibfile@i#1#2{%
+ \ifinlistcs{#2}{blx@list@bibfiles@#1}
+ {}
+ {\listcsxadd{blx@list@bibfiles@#1}{#2}}}
+
+\def\blx@check@logreq{%
+ \begingroup
+ \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{%
+ \provides[type=dynamic]{
+ \file{\jobname.bcf}
+ }
+ \requires[type=dynamic]{
+ \file{\jobname.bbl}
+ }
+ \ifdef\blx@list@req@edit
+ {\requires[type=editable]{
+ \forlistloop\file\blx@list@req@edit
+ }}
+ {}
+ \ifdef\blx@list@req@stat
+ {\requires[type=static]{
+ \forlistloop\file\blx@list@req@stat
+ }}
+ {}
+ }%
+ \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbiber}{1}{0}}}]{%
+ \generic{biber}
+ \cmdline{
+ \binary{biber}
+ \infile{\jobname}
+ }
+ \input{
+ \file{\jobname.bcf}
+ }
+ \output{
+ \file{\jobname.bbl}
+ }
+ \provides[type=dynamic]{
+ \file{\jobname.bbl}
+ }
+ \requires[type=dynamic]{
+ \file{\jobname.bcf}
+ }
+ \ifcsdef{blx@list@bibfiles@\jobname}
+ {\requires[type=editable]{
+ \def\do{\file}
+ \dolistcsloop{blx@list@bibfiles@\jobname}
+ }}
+ {}
+ }%
+ \endgroup}
+
+\def\blx@logreq@active#1{%
+ \ifblank{#1}
+ {}
+ {\@latex@warning{#1}}%
+ \blx@rerun@latex
+ \blx@rerun@biber}
+
+\def\blx@rerun@latex{%
+ \G@refundefinedtrue
+ \global\toggletrue{blx@runltx}%
+ \global\let\blx@rerun@latex\relax}
+
+\def\blx@rerun@biber{%
+ \global\toggletrue{blx@runbiber}%
+ \global\let\blx@rerun@biber\relax}
+
+\let\blx@checksum@old\@empty
+\let\blx@checksum@new\@empty
+\let\blx@pagesum@old\@empty
+\let\blx@pagesum@new\@empty
+
+\def\blx@checksum#1#2#3{%
+ \begingroup
+ \blx@tempcnta\the\numexpr0#2*0#3\relax
+ \blx@tempcntb\blx@tempcnta
+ \divide\blx@tempcntb10
+ \multiply\blx@tempcntb10
+ \advance\blx@tempcnta-\blx@tempcntb
+ \xdef#1{#1\the\blx@tempcnta}%
+ \endgroup}
+
+\def\blx@addchecksum{\blx@checksum\blx@checksum@old}
+\def\blx@addpagesum{\blx@checksum\blx@pagesum@old}
+\AtEndDocument{%
+ \def\blx@addchecksum{\blx@checksum\blx@checksum@new}%
+ \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}}
+
+\protected\def\blx@check@rerun{%
+ \begingroup
+ \blx@tempcnta\z@
+ \iftoggle{blx@runltx}
+ {\blx@tempcnta\@ne}
+ {\ifx\blx@checksum@old\blx@checksum@new
+ \ifx\blx@pagesum@old\blx@pagesum@new
+ \else
+ \blx@tempcnta\@ne
+ \fi
+ \else
+ \blx@tempcnta\@ne
+ \fi}%
+ \iftoggle{blx@runbiber}
+ {\advance\blx@tempcnta\tw@}
+ {}%
+ \ifcase\blx@tempcnta
+ \or
+ \blx@rerun@latex
+ \blx@warning@noline{%
+ Please rerun LaTeX%
+ \ifx\blx@pagesum@old\blx@pagesum@new\else
+ .\MessageBreak Page breaks have changed%
+ \fi}%
+ \else
+ \blx@rerun@latex
+ \blx@warn@auxlist
+ \fi
+ \endgroup}
+
+\def\blx@warn@auxlist{%
+ \begingroup
+ \edef\blx@tempa{%
+ Please (re)run Biber on the file:\MessageBreak
+ \jobname}%
+ \blx@warning@noline{%
+ \blx@tempa\MessageBreak
+ and rerun LaTeX afterwards}%
+ \endgroup}
+
+\AfterEndDocument{%
+ \blx@check@rerun
+ \blx@check@logreq}
+
+%% Punctuation and capitalization
+
+% 1001 prefix sep for names (e.g. d'Argent ... \printnames only)
+% 1002 abbreviation period (dot)
+% 1003/1250 comma
+% 1004/1500 semicolon
+% 1005/2000 colon
+% 1006/3000 period
+% 1007/3001 exclamation mark
+% 1008/3002 question mark
+% 1009 suppress punctuation
+% 1010 new paragaph
+
+\mathchardef\blx@sf@prefixchar=1001% e.g. apostrophe or equivalent for prefix handling
+\mathchardef\blx@sf@dot=1002
+\mathchardef\blx@sf@comma=1003
+\mathchardef\blx@sf@semicolon=1004
+\mathchardef\blx@sf@colon=1005
+\mathchardef\blx@sf@period=1006
+\mathchardef\blx@sf@exclam=1007
+\mathchardef\blx@sf@question=1008
+\mathchardef\blx@sf@nopunct=1009
+\mathchardef\blx@sf@par=1010
+\mathchardef\blx@sf@threshold@low=1002
+\mathchardef\blx@sf@threshold@high=1009
+
+\csdef{blx@sf@1250}{\the\blx@sf@comma}
+\csdef{blx@sf@1500}{\the\blx@sf@semicolon}
+\csdef{blx@sf@2000}{\the\blx@sf@colon}
+\csdef{blx@sf@3000}{\the\blx@sf@period}
+\csdef{blx@sf@3001}{\the\blx@sf@exclam}
+\csdef{blx@sf@3002}{\the\blx@sf@question}
+
+\csdef{blx@pm@,}{comma}
+\csdef{blx@pm@;}{semicolon}
+\csdef{blx@pm@:}{colon}
+\csdef{blx@pm@.}{period}
+\csdef{blx@pm@!}{exclam}
+\csdef{blx@pm@?}{question}
+
+\def\blx@setsfcodes{%
+ \let\blx@setsfcodes\relax
+ \let\frenchspacing\blx@setfrcodes
+ \let\nonfrenchspacing\blx@setencodes
+ \ifnum\sfcode`\.>2000
+ \blx@setencodes
+ \else
+ \blx@setfrcodes
+ \fi
+ \@setquotesfcodes
+ \sfcode`\(=\z@
+ \sfcode`\)=\z@
+ \sfcode`\[=\z@
+ \sfcode`\]=\z@
+ \sfcode`\<=\z@
+ \sfcode`\>=\z@}
+
+\def\blx@setfrcodes{%
+ \ifnum\sfcode`\A=\@m
+ \else
+ \blx@setazcodes
+ \fi
+ \sfcode`\,=\blx@sf@comma
+ \sfcode`\;=\blx@sf@semicolon
+ \sfcode`\:=\blx@sf@colon
+ \sfcode`\.=\blx@sf@period
+ \sfcode`\!=\blx@sf@exclam
+ \sfcode`\?=\blx@sf@question
}
-\DeclareOption*{%
- \PassOptionsToPackage{\CurrentOption}{biblatex_legacy}%
- \PassOptionsToPackage{\CurrentOption}{biblatex_}%
+
+\def\blx@setencodes{%
+ \sfcode`\,=1250
+ \sfcode`\;=1500
+ \sfcode`\:=2000
+ \sfcode`\.=3000
+ \sfcode`\!=3001
+ \sfcode`\?=3002
}
-% Default to the Biber backend
-\blx@load@version@legacyfalse
-\ProcessOptions\relax
+% Defining characters that count as prefices in names like d'Argent
+% Code from moewe
+\let\blx@prefchars\@empty
+
+\def\blx@defprefchars@loop#1{%
+ \ifx#1\relax
+ \else
+ \listadd{\blx@prefchars}{#1}%
+ \expandafter\blx@defprefchars@loop
+ \fi}
+
+\def\blx@defprefchars#1{%
+ \expandafter\blx@defprefchars@loop\detokenize{#1}\relax}
+
+\newrobustcmd*{\DeclarePrefChars}{%
+ \@ifstar
+ {\blx@defprefchars}
+ {\let\blx@prefchars\@empty
+ \blx@defprefchars}}
+\DeclarePrefChars{'}
+
+\protected\def\blx@imc@ifprefchar{%
+ \ifhmode
+ \begingroup
+ \ifnum\spacefactor=\blx@sf@prefixchar
+ \endgroup
+ \expandafter\expandafter
+ \expandafter\@firstoftwo
+ \else
+ \endgroup
+ \expandafter\expandafter
+ \expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+\blx@regimcs{\ifprefchar}
-\ifblx@load@backend@seen
+\def\blx@namecodes{%
+ \ifnum\sfcode`\A=\@m
+ \else
+ \blx@setazcodes
+ \fi
+ \def\do##1{\sfcode`##1=\blx@sf@prefixchar}%
+ \dolistloop\blx@prefchars
+}
+
+\begingroup
+\let\blx@setazcodes\@empty
+\def\blx@tempa{%
+ \xdef\blx@setazcodes{%
+ \blx@setazcodes
+ \sfcode\the\blx@tempcnta=\@m}
+ \ifnum\blx@tempcnta<\blx@tempcntb
+ \advance\blx@tempcnta\@ne
+ \expandafter\blx@tempa
+ \fi}
+\blx@tempcnta`\A
+\blx@tempcntb`\Z
+\blx@tempa
+\ifnum\inputlineno=\m@ne\else
+ \blx@tempcnta"80
+ \blx@tempcntb"9C
+ \blx@tempa
+ \blx@tempcnta"C0
+ \blx@tempcntb"DF
+ \blx@tempa
+\fi
+\ifx\Umathcode\undefined
\else
- \PackageWarningNoLine{biblatex}
- {%
- No "backend" specified, using Biber backend.\MessageBreak
- To use BibTeX, load biblatex with \MessageBreak
- the "backend=bibtex" option%
+ \openin\blx@bcfin=UnicodeData.txt %
+ \ifeof\blx@bcfin
+ \else
+ \let\blx@setazcodes\@empty
+ \def\Lu{Lu}
+ \def\storedpar{\par}
+ \def\blx@tempa#1;#2;#3;#4\relax{%
+ \def\temp{#3}%
+ \ifx\temp\Lu
+ \xdef\blx@setazcodes{%
+ \blx@setazcodes
+ \sfcode"#1=\@m
+ }
+ \fi
}
+ \loop\unless\ifeof\blx@bcfin
+ \read\blx@bcfin to \blx@tempb
+ \unless\ifx\blx@tempb\storedpar
+ \expandafter\blx@tempa\blx@tempb\relax
+ \fi
+ \repeat
+ \fi
+ \closein\blx@bcfin
\fi
+\endgroup
+
+\def\blx@spacefactor{%
+ \ifhmode
+ \ifcsundef{blx@sf@\the\spacefactor}
+ {\the\spacefactor}
+ {\csname blx@sf@\the\spacefactor\endcsname}%
+ \else
+ \the\blx@sf@par
+ \fi}
+
+\protected\def\blx@leavevmode{%
+ \ifhmode
+ \else
+ \leavevmode\spacefactor\blx@sf@par
+ \fi}
+
+\protected\def\blx@leavevmode@cite{%
+ \ifhmode
+ \ifnum\spacefactor=\blx@sf@par
+ \else
+ \spacefactor\@m
+ \fi
+ \else
+ \leavevmode
+ \fi}
+
+\protected\def\blx@imc@setpunctfont#1{%
+ \blx@ifpuncthook
+ {\gdef\abx@puncthook{%
+ \ifdim\lastkern>\z@\unkern\fi
+ \blx@imc@resetpunctfont#1}}
+ {}}
+\protected\def\blx@imc@resetpunctfont{%
+ \blx@ifpuncthook
+ {\global\let\abx@puncthook\@firstofone}
+ {}}
+
+\protected\def\blx@setpostpunct#1{%
+ \blx@ifuspunct
+ {\global\let\blx@postpunct\blx@dopostpunct
+ \ifdef\blx@thepostpunct
+ {\gappto\blx@thepostpunct{#1}}
+ {\gdef\blx@thepostpunct{#1}}}
+ {}}
+
+\def\blx@dopostpunct{%
+ \blx@thepostpunct
+ \global\let\blx@postpunct\@empty
+ \global\undef\blx@thepostpunct}
+
+\protected\def\blx@postpunct@agroup{%
+ \aftergroup\blx@postpunct
+ \let\blx@postpunct@agroup\@empty}
+
+% {<characters>}
+\newrobustcmd*{\DeclareCapitalPunctuation}[1]{%
+ \cslet{blx@cap@\the\blx@sf@par}\@empty
+ \csundef{blx@cap@\the\blx@sf@comma}%
+ \csundef{blx@cap@\the\blx@sf@semicolon}%
+ \csundef{blx@cap@\the\blx@sf@colon}%
+ \csundef{blx@cap@\the\blx@sf@period}%
+ \csundef{blx@cap@\the\blx@sf@exclam}%
+ \csundef{blx@cap@\the\blx@sf@question}%
+ \ifblank{#1}
+ {}
+ {\expandafter\blx@defcapstring\detokenize{#1}\relax}}
+
+\def\blx@defcapstring#1{%
+ \ifx#1\relax
+ \else
+ \begingroup
+ \blx@setfrcodes
+ \ifcsdef{blx@pm@#1}
+ {\expandafter\endgroup
+ \expandafter\let
+ \csname blx@cap@\the\sfcode`#1\endcsname\@empty}
+ {\blx@warning{Ignoring invalid punctuation mark '#1'}%
+ \endgroup}%
+ \expandafter\blx@defcapstring
+ \fi}
+
+% {<characters>}
+\newrobustcmd*{\DeclareQuotePunctuation}[1]{%
+ \csdef{blx@qp@comma}{\blx@postpunct}%
+ \csdef{blx@qp@semicolon}{\blx@postpunct}%
+ \csdef{blx@qp@colon}{\blx@postpunct}%
+ \csdef{blx@qp@period}{\blx@postpunct}%
+ \csdef{blx@qp@exclam}{\blx@postpunct}%
+ \csdef{blx@qp@question}{\blx@postpunct}%
+ \cslet{blx@pq@comma}\@empty
+ \cslet{blx@pq@semicolon}\@empty
+ \cslet{blx@pq@colon}\@empty
+ \cslet{blx@pq@period}\@empty
+ \cslet{blx@pq@exclam}\@empty
+ \cslet{blx@pq@question}\@empty
+ \let\blx@quotepunct\@empty
+ \ifblank{#1}
+ {\let\blx@ifuspunct\@secondoftwo}
+ {\let\blx@ifuspunct\@firstoftwo
+ \expandafter\blx@defquotepunct\detokenize{#1}&}}
+
+\def\blx@defquotepunct#1{%
+ \ifx&#1\relax
+ \else
+ \ifcsdef{blx@pm@#1}
+ {\appto\blx@quotepunct{#1}%
+ \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty
+ \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}}
+ {\blx@warning{Ignoring invalid punctuation mark '#1'}}%
+ \expandafter\blx@defquotepunct
+ \fi}
+
+% {<mark>}{<characters>}
+\newrobustcmd*{\DeclarePunctuationPairs}[2]{%
+ \ifcsdef{blx@sf@\detokenize{#1}}
+ {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@prefixchar
+ \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct
+ \expandafter\blx@defpunctpairs
+ \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}%
+ \else
+ \blx@err@invarg{\detokenize{#1}{}}%
+ \fi
+ \else
+ \blx@err@invarg{\detokenize{#1}{}}%
+ \fi}
+ {\blx@err@invarg{\detokenize{#1}{}}}}
+
+\def\blx@defpunctpairs#1#2{%
+ \blx@undefpair{#1}{\the\blx@sf@dot}%
+ \blx@undefpair{#1}{\the\blx@sf@comma}%
+ \blx@undefpair{#1}{\the\blx@sf@semicolon}%
+ \blx@undefpair{#1}{\the\blx@sf@colon}%
+ \blx@undefpair{#1}{\the\blx@sf@period}%
+ \blx@undefpair{#1}{\the\blx@sf@exclam}%
+ \blx@undefpair{#1}{\the\blx@sf@question}%
+ \ifblank{#2}
+ {}
+ {\begingroup
+ \def\blx@tempa{#1}%
+ \let\blx@tempb\@empty
+ \blx@setfrcodes
+ \sfcode`\*=\blx@sf@dot
+ \expandafter\blx@defpair\detokenize{#2}&%
+ \expandafter\endgroup\blx@tempb}}
+
+\def\blx@defpair#1{%
+ \ifx&#1%
+ \else
+ \ifnum\the\sfcode`#1>\blx@sf@prefixchar
+ \ifnum\the\sfcode`#1<\blx@sf@nopunct
+ \eappto\blx@tempb{%
+ \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}%
+ \else
+ \blx@err@invarg{#1}{}%
+ \fi
+ \else
+ \blx@err@invarg{#1}{}%
+ \fi
+ \expandafter\blx@defpair
+ \fi}
+
+\def\blx@undefpair#1#2{%
+ \ifcsdef{blx@pp@#1@#2}
+ {\csundef{blx@pp@#1@#2}}
+ {}}
+
+\protected\def\blx@resetpunct{%
+ \DeclareCapitalPunctuation{.!?}%
+ \DeclarePunctuationPairs{dot}{}%
+ \DeclarePunctuationPairs{comma}{*!?}%
+ \DeclarePunctuationPairs{semicolon}{*!?}%
+ \DeclarePunctuationPairs{colon}{*!?}%
+ \DeclarePunctuationPairs{period}{}%
+ \DeclarePunctuationPairs{exclam}{*}%
+ \DeclarePunctuationPairs{question}{*}%
+ \DeclareQuotePunctuation{}%
+ \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}%
+ \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}%
+ \def\abx@semicolon{\abx@puncthook{;}}%
+ \def\abx@colon{\abx@puncthook{:}}%
+ \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}%
+ \def\abx@exclam{\abx@puncthook{!}}%
+ \def\abx@question{\abx@puncthook{?}}%
+ \global\let\abx@puncthook\@firstofone
+ \global\let\blx@postpunct\@empty}
+
+\blx@resetpunct
+
+% {<character>}{<true>}{<false>}
+\protected\def\blx@imc@ifpunctmark#1{%
+ \ifhmode
+ \begingroup
+ \sfcode`\*=\blx@sf@dot
+ \ifnum\sfcode`#1=\spacefactor
+ \endgroup
+ \expandafter\expandafter
+ \expandafter\@firstoftwo
+ \else
+ \endgroup
+ \expandafter\expandafter
+ \expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+% {<true>}{<false>}
+\protected\def\blx@imc@ifterm{%
+ \ifhmode
+ \expandafter\blx@imc@ifcapital
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+% {<true>}{<false>}
+\protected\def\blx@imc@ifcapital{%
+ \ifcsdef{blx@cap@\blx@spacefactor}}
+
+% {<true>}{<false>}
+\protected\def\blx@imc@ifpunct{%
+ \ifnum\blx@spacefactor>\blx@sf@threshold@low
+ \ifnum\blx@spacefactor<\blx@sf@threshold@high
+ \expandafter\expandafter
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter
+ \expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+% {<character>}
+\newrobustcmd*{\autocap}[1]{#1}
+
+\protected\def\blx@imc@autocap{%
+ \blx@imc@ifcapital\MakeUppercase\@firstofone}
+
+\protected\def\blx@imc@nopunct{%
+ \leavevmode\spacefactor\blx@sf@nopunct}
+
+\protected\def\blx@imc@isdot{%
+ \ifnum\blx@spacefactor=\blx@sf@period
+ \spacefactor\blx@sf@dot
+ \fi}
+
+\protected\def\blx@imc@adddot{%
+ \blx@addpunct{dot}%
+ \ifnum\blx@spacefactor=\blx@sf@period
+ \spacefactor\blx@sf@dot
+ \fi}
+
+\protected\def\blx@imc@addperiod{%
+ \blx@addpunct{period}%
+ \ifnum\blx@spacefactor=\blx@sf@dot
+ \spacefactor\blx@sf@period
+ \fi}
+
+\protected\def\blx@imc@addcomma{\blx@addpunct{comma}}
+\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}}
+\protected\def\blx@imc@addcolon{\blx@addpunct{colon}}
+\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}}
+\protected\def\blx@imc@addquestion{\blx@addpunct{question}}
+
+\def\blx@addpunct#1{%
+ \unspace
+ \ifnum\blx@spacefactor<\blx@sf@threshold@low
+ \csuse{blx@qp@#1}\csuse{abx@#1}%
+ \else
+ \ifnum\blx@spacefactor>\blx@sf@threshold@high
+ \csuse{blx@qp@#1}\csuse{abx@#1}%
+ \else
+ \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor}
+ {\csuse{blx@qp@#1}\csuse{abx@#1}}
+ {\csuse{blx@qp@#1}}%
+ \fi
+ \fi
+ \csuse{blx@pq@#1}}
+
+\providerobustcmd*{\unspace}{%
+ \ifbool{hmode}
+ {\ifdimgreater\lastskip\z@
+ {\unskip\unspace}
+ {\ifnumgreater\lastpenalty\z@
+ {\unpenalty\unspace}
+ {}}}
+ {}}
+
+\newrobustcmd*{\bibsentence}{%
+ \leavevmode\spacefactor\blx@sf@par
+ \ignorespaces}
+
+\newrobustcmd*{\midsentence}{%
+ \leavevmode
+ \@ifstar
+ {\ifnum\spacefactor=\blx@sf@dot
+ \else
+ \spacefactor\@m
+ \fi}
+ {\spacefactor\@m}}
+
+\newrobustcmd*{\addslash}{%
+ \unspace/\penalty\hyphenpenalty\hskip\z@skip}
+
+\newrobustcmd*{\addspace}{%
+ \unspace\blx@postpunct
+ \space\blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addnbspace}{%
+ \unspace\blx@postpunct
+ \nobreak\space\blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addthinspace}{%
+ \unspace\blx@postpunct
+ \hskip0.16667em\relax
+ \blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addnbthinspace}{%
+ \unspace\blx@postpunct
+ \nobreak\hskip0.16667em\relax
+ \blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addlowpenspace}{%
+ \unspace\blx@postpunct
+ \penalty\value{lownamepenalty}\space
+ \blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addhighpenspace}{%
+ \unspace\blx@postpunct
+ \penalty\value{highnamepenalty}\space
+ \blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addlpthinspace}{%
+ \unspace\blx@postpunct
+ \penalty\value{lownamepenalty}%
+ \hskip0.16667em\relax\blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addhpthinspace}{%
+ \unspace\blx@postpunct
+ \penalty\value{highnamepenalty}%
+ \hskip0.16667em\relax\blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addabbrvspace}{%
+ \unspace\blx@postpunct
+ \penalty\value{abbrvpenalty}%
+ \space\blx@imc@resetpunctfont}
+
+\newrobustcmd*{\addabthinspace}{%
+ \unspace\blx@postpunct
+ \penalty\value{abbrvpenalty}%
+ \hskip0.16667em\relax
+ \blx@imc@resetpunctfont}
+
+\newrobustcmd*{\adddotspace}{%
+ \unspace\adddot\blx@postpunct
+ \penalty\value{abbrvpenalty}%
+ \space\blx@imc@resetpunctfont}
+
+\providerobustcmd*{\noligature}{%
+ \penalty\@M\discretionary{-}{}{\kern0.03em}%
+ \nobreak\hskip\z@skip}
+
+\providerobustcmd*{\hyphen}{%
+ \nobreak-\nobreak\hskip\z@skip}
+
+\providerobustcmd*{\nbhyphen}{%
+ \nobreak\mbox{-}\nobreak\hskip\z@skip}
+
+\providerobustcmd*{\hyphenate}{%
+ \nobreak\-\nobreak\hskip\z@skip}
+
+\providerobustcmd*{\allowhyphens}{%
+ \nobreak\hskip\z@skip}
+
+\providerobustcmd*{\nohyphenation}{%
+ \lefthyphenmin\@m}
+
+\providerobustcmd*{\textnohyphenation}[1]{%
+ \bgroup\nohyphenation#1\egroup}
+
+\blx@regimcs{%
+ \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark
+ \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma
+ \addsemicolon \addcolon \addexclam \addquestion}
+
+\appto\blx@blxinit{%
+ \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}}
+
+%% Style definition
+
+% {<bibstyle>}
+\newrobustcmd*{\RequireBibliographyStyle}[1]{%
+ \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{}
+ {\blx@error
+ {Style '#1' not found}
+ {The bibliography style '#1' could not be found}}}
+\@onlypreamble\RequireBibliographyStyle
+
+% {<code>}
+\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit}
+\@onlypreamble\InitializeBibliographyStyle
+
+% {<entry type>}{<driverdef>}
+\newrobustcmd*{\DeclareBibliographyDriver}[1]{%
+ \long\csdef{blx@bbx@#1}}
+\@onlypreamble\DeclareBibliographyDriver
+
+% {<entry type>}
+\def\blx@driver#1{%
+ \ifcsdef{blx@bbx@#1}
+ {\csuse{blx@bbx@#1}}
+ {\ifcsdef{blx@bbx@*}
+ {\blx@warning{%
+ No driver for entry type '#1'.\MessageBreak
+ Using fallback driver}%
+ \csuse{blx@bbx@*}}
+ {\blx@error
+ {No driver found}
+ {I can't find a driver for the entry type
+ '\abx@field@entrytype'\MessageBreak
+ and there is no fallback driver either}}}}
+
+% {<type>}{<true>}{<false>}
+\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}}
+
+% {<alias>}{<type>}
+\newrobustcmd*{\DeclareBibliographyAlias}[2]{%
+ \csedef{blx@bbx@#1}{%
+ \expandafter\noexpand\csname blx@bbx@#2\endcsname}}
+\@onlypreamble\DeclareBibliographyAlias
+
+%% Auxiliary commands
+\newrobustcmd*{\citereset}{%
+ \csuse{blx@hook@cbxinit}%
+ \@ifstar
+ {}
+ {\global\cslet{blx@bsee@\the\c@refsection}\@empty
+ \global\cslet{blx@fsee@\the\c@refsection}\@empty
+ \blx@ibidreset@force
+ \blx@idemreset@force
+ \blx@opcitreset@force
+ \blx@loccitreset@force}}
+
+\def\blx@save#1{%
+ \ifcsdef{blx@saved@#1}
+ {}
+ {\blx@safe@actives
+ \csletcs{blx@saved@#1}{#1}%
+ \blx@rest@actives}}
+
+\def\blx@restore#1{%
+ \ifcsdef{blx@saved@#1}
+ {\blx@safe@actives
+ \csletcs{#1}{blx@saved@#1}%
+ \csundef{blx@saved@#1}%
+ \blx@rest@actives}
+ {}}
+
+\newrobustcmd*{\savecommand}[1]{%
+ \ifcsdef{blx@saved@cmd@\detokenize{#1}}
+ {}
+ {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}}
+
+\newrobustcmd*{\restorecommand}[1]{%
+ \ifcsdef{blx@saved@cmd@\detokenize{#1}}
+ {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}%
+ \csundef{blx@saved@cmd@\detokenize{#1}}}
+ {}}
+
+% {<name>}
+\newrobustcmd*{\savebibmacro}[1]{%
+ \blx@save{abx@macro@\detokenize{#1}}}
+
+\newrobustcmd*{\restorebibmacro}[1]{%
+ \blx@restore{abx@macro@\detokenize{#1}}}
+
+% {<name>}[<args>][<optarg>]{<definition>}
+\newrobustcmd*{\newbibmacro}{%
+ \@star@or@long\blx@newbibmacro}
+
+\def\blx@newbibmacro#1{%
+ \ifcsundef{abx@macro@\detokenize{#1}}
+ {\blx@defbibmacro\new@command{#1}}
+ {\blx@warning{%
+ Macro '\detokenize{#1}' already defined.\MessageBreak
+ Using \string\renewbibmacro}
+ \blx@defbibmacro\renew@command{#1}}}
+
+\newrobustcmd*{\renewbibmacro}{%
+ \@star@or@long\blx@renewbibmacro}
+
+\def\blx@renewbibmacro#1{%
+ \ifcsundef{abx@macro@\detokenize{#1}}
+ {\blx@warning{%
+ Macro '\detokenize{#1}' undefined.\MessageBreak
+ Using \string\newbibmacro}
+ \blx@defbibmacro\new@command{#1}}
+ {\blx@defbibmacro\renew@command{#1}}}
+
+\newrobustcmd*{\providebibmacro}{%
+ \@star@or@long{\blx@defbibmacro\provide@command}}
+
+\def\blx@defbibmacro#1#2{%
+ \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname}
+
+% {<name>}
+\newrobustcmd*{\usebibmacro}{%
+ \@ifstar
+ {\blx@usebibmacro@i}
+ {\blx@usebibmacro}}
+
+\def\blx@usebibmacro#1{%
+ \blx@usebibmacro@i{\detokenize{#1}}}
+
+\def\blx@usebibmacro@i#1{%
+ \ifcsundef{abx@macro@#1}
+ {\blx@error
+ {Bibliography macro '#1' undefined}
+ {Use '\string\newbibmacro' to define this macro}}
+ {\csuse{abx@macro@#1}}}
+
+% {<name>}{<true>}{<false>}
+\def\blx@imc@ifbibmacroundef#1{%
+ \ifcsundef{abx@macro@#1}}
+
+% {<field>}
+\def\blx@imc@thefield#1{\csuse{abx@field@#1}}
+
+\def\blx@imc@strfield#1{%
+ \ifcsdef{abx@field@#1}
+ {\detokenize\expandafter\expandafter\expandafter
+ {\csname abx@field@#1\endcsname}}
+ {}}
+
+\def\blx@imc@csfield#1{\usefield{\unexpanded}{#1}}
+
+% {<command>}{<field>}
+\def\blx@imc@usefield#1#2{%
+ \expandafter\expandafter\expandafter#1%
+ \expandafter\expandafter\expandafter{\csname abx@field@#2\endcsname}}
+
+% {<plainlist>}
+\def\blx@imc@thelist#1{\csuse{abx@list@#1}}
+
+\def\blx@imc@strlist#1{%
+ \ifcsdef{abx@list@#1}
+ {\detokenize\expandafter\expandafter\expandafter
+ {\csname abx@list@#1\endcsname}}
+ {}}
+
+% {<namelist>}
+\def\blx@imc@thename#1{\csuse{abx@name@#1}}
+
+\def\blx@imc@strname#1{%
+ \ifcsdef{abx@name@#1}
+ {\detokenize\expandafter\expandafter\expandafter
+ {\csname abx@name@#1\endcsname}}
+ {}}
+
+
+% We have to save cleared fields/lists/names in case a related entry
+% needs them for tests
+\let\abx@dorelfields\@empty
+\let\abx@dorellists\@empty
+\let\abx@dorelnames\@empty
+
+% {<field>}
+% If there is a related field in the entry, save a special copy in case
+% the related entry needs it for tests. See the corresponding tests in
+% \blx@save{field,list,name}
+\protected\def\blx@imc@clearfield#1{%
+ \ifdef\abx@field@related
+ {\csletcs{abx@field@relsaved#1}{abx@field@#1}%
+ \listadd\abx@dorelfields{#1}}
+ {}%
+ \csundef{abx@field@#1}}
+
+% {<plainlist>}
+% If there is a related field in the entry, save a special copy in case
+% the related entry needs it for tests. See the corresponding tests in
+% \blx@save{field,list,name}
+\protected\def\blx@imc@clearlist#1{%
+ \ifcsundef{abx@list@#1}
+ {}
+ {\ifdef\abx@field@related
+ {\csletcs{abx@list@relsaved#1}{abx@list@#1}%
+ \csletcs{etb@tgl@abx@bool@morerelsaved#1}{etb@tgl@abx@bool@more#1}%
+ \csletcs{c@relsaved#1}{c@#1}%
+ \listadd\abx@dorellists{#1}}
+ {}%
+ \togglefalse{abx@bool@more#1}%
+ \csundef{abx@list@#1}%
+ \csname c@#1\endcsname\z@}}
+
+% {<namelist>}
+% If there is a related field in the entry, save a special copy in case
+% the related entry needs it for tests. See the corresponding tests in
+% \blx@save{field,list,name}
+\protected\def\blx@imc@clearname#1{%
+ \ifcsundef{abx@name@#1}
+ {}
+ {\ifdef\abx@field@related
+ {\csletcs{abx@name@relsaved#1}{abx@name@#1}%
+ \csletcs{etb@tgl@abx@bool@morerelsaved#1}{etb@tgl@abx@bool@more#1}%
+ \csletcs{c@relsaved#1}{c@#1}%
+ \listadd\abx@dorelnames{#1}}
+ {}%
+ \togglefalse{abx@bool@more#1}%
+ \csundef{abx@name@#1}%
+ \csname c@#1\endcsname\z@}}
+
+% {<field>}{<macro>}
+\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}}
+
+% {<plainlist>}{<macro>}
+\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}}
+
+% {<namelist>}{<macro>}
+\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}}
+
+% {<field>}{<macro>}
+\protected\def\blx@imc@savefield{%
+ \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}}
+\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}}
+
+% {<plainlist>}{<macro>}
+\protected\def\blx@imc@savelist{%
+ \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}}
+
+% {<namelist>}{<macro>}
+\protected\def\blx@imc@savename{%
+ \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}}
+
+% {<field>}{<csname>}
+\protected\def\blx@imc@savefieldcs{%
+ \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}}
+\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}}
+
+% {<plainlist>}{<csname>}
+\protected\def\blx@imc@savelistcs{%
+ \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}}
+
+% {<namelist>}{<csname>}
+\protected\def\blx@imc@savenamecs{%
+ \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}}
+
+% {<field>}{<true>}{<false>}
+\def\blx@imc@iffieldundef#1{%
+ \ifcsundef{abx@field@#1}}
+
+% {<plainlist>}{<true>}{<false>}
+\def\blx@imc@iflistundef#1{%
+ \ifcsundef{abx@list@#1}}
+
+% {<namelist>}{<true>}{<false>}
+\def\blx@imc@ifnameundef#1{%
+ \ifcsundef{abx@name@#1}}
+
+% {<field1>}{<field2>}{<true>}{<false>}
+\def\blx@imc@iffieldsequal#1#2{%
+ \ifcsequal{abx@field@#1}{abx@field@#2}}
+
+% {<plainlist1>}{<plainlist2>}{<true>}{<false>}
+\def\blx@imc@iflistsequal#1#2{%
+ \ifcsequal{abx@list@#1}{abx@list@#2}}
+
+% {<namelist1>}{<namelist2>}{<true>}{<false>}
+\def\blx@imc@ifnamesequal#1#2{%
+ \ifcsundef{abx@name@#1}
+ {\@secondoftwo}
+ {\ifcsundef{abx@name@#2}
+ {\@secondoftwo}
+ {\blx@ifnamesequal{#1}{#2}}}}
+
+\def\blx@ifnamesequal#1#2{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \expandafter\expandafter
+ \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname
+ \let\blx@tempb\blx@tempa
+ \let\blx@tempa\@empty
+ \expandafter\expandafter
+ \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname
+ \expandafter\endgroup
+ \ifx\blx@tempa\blx@tempb
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+\def\blx@ifnamesequal@i#1#2{%
+ \expandafter\blx@ifnamesequal@ii#2{}&}
+
+\def\blx@ifnamesequal@ii#1{%
+ \ifblank{#1}
+ {\blx@namebreak}
+ {\blx@ifnamesequal@iii#1%
+ \blx@ifnamesequal@ii}}
+
+\def\blx@ifnamesequal@iii#1#2{%
+ \setkeys{blx@opt@name}{#1}%
+ \setkeys{blx@opt@namepart}{#2}%
+ \ifdef\abx@field@hash
+ {\eappto\blx@tempa{{\abx@field@hash}}}
+ {\eappto\blx@tempa{{{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}}}}
+
+% {<field>}{<macro>}{<true>}{<false>}
+\def\blx@imc@iffieldequals#1#2{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\ifundef#2%
+ {\@secondoftwo}
+ {\expandafter\ifx\csname abx@field@#1\endcsname#2%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}}}
+
+% {<plainlist>}{<macro>}{<true>}{<false>}
+\def\blx@imc@iflistequals#1#2{%
+ \blx@imc@iflistundef{#1}
+ {\@secondoftwo}
+ {\ifundef#2%
+ {\@secondoftwo}
+ {\expandafter\ifx\csname abx@list@#1\endcsname#2%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}}}
+
+% {<namelist>}{<macro>}{<true>}{<false>}
+\def\blx@imc@ifnameequals#1#2{% FIXME
+ \blx@imc@ifnameundef{#1}
+ {\@secondoftwo}
+ {\ifundef#2%
+ {\@secondoftwo}
+ {\expandafter\ifx\csname abx@name@#1\endcsname#2%
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}}}
+
+% {<field>}{<csname>}{<true>}{<false>}
+\def\blx@imc@iffieldequalcs#1{%
+ \ifcsequal{abx@field@#1}}
+
+% {<plainlist>}{<csname>}{<true>}{<false>}
+\def\blx@imc@iflistequalcs#1{%
+ \ifcsequal{abx@list@#1}}
+
+% {<namelist>}{<csname>}{<true>}{<false>}
+\def\blx@imc@ifnameequalcs#1{% FIXME
+ \ifcsequal{abx@name@#1}}
+
+% {<field>}{<string>}{<true>}{<false>}
+\protected\long\def\blx@imc@iffieldequalstr#1#2{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\expandafter\expandafter\expandafter\ifstrequal
+ \expandafter\expandafter\expandafter{%
+ \csname abx@field@#1\endcsname}{#2}}}
+
+% {<field>}{<true>}{<false>}
+\protected\def\blx@imc@iffieldxref#1{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\blx@whichxref
+ {\blx@iffieldxref{#1}}
+ {\@secondoftwo}}}
+
+\def\blx@iffieldxref#1#2{%
+ \begingroup
+ \letcs\blx@tempa{abx@field@#2}%
+ \letcs\blx@tempb{abx@field@#1}%
+ \csundef{abx@field@#1}%
+ \blx@getdata{\blx@tempa}%
+ \blx@imc@iffieldequals{#1}\blx@tempb
+ {\aftergroup\@firstoftwo}
+ {\aftergroup\@secondoftwo}%
+ \endgroup}
+
+\def\blx@whichxref#1#2{%
+ \blx@imc@iffieldundef{crossref}
+ {\blx@imc@iffieldundef{xref}
+ {#2}
+ {#1{xref}}}
+ {#1{crossref}}}
+
+% {<plainlist>}{<true>}{<false>}
+\protected\def\blx@imc@iflistxref#1{%
+ \blx@imc@iflistundef{#1}
+ {\@secondoftwo}
+ {\blx@whichxref
+ {\blx@iflistxref{#1}}
+ {\@secondoftwo}}}
+
+\def\blx@iflistxref#1#2{%
+ \begingroup
+ \letcs\blx@tempa{abx@field@#2}%
+ \letcs\blx@tempb{abx@list@#1}%
+ \csundef{abx@list@#1}%
+ \blx@getdata{\blx@tempa}%
+ \blx@imc@iflistequals{#1}\blx@tempb
+ {\aftergroup\@firstoftwo}
+ {\aftergroup\@secondoftwo}%
+ \endgroup}
+
+% {<namelist>}{<true>}{<false>}
+\protected\def\blx@imc@ifnamexref#1{%
+ \blx@imc@ifnameundef{#1}
+ {\@secondoftwo}
+ {\blx@whichxref
+ {\blx@ifnamexref{#1}}
+ {\@secondoftwo}}}
+
+\def\blx@ifnamexref#1#2{%
+ \begingroup
+ \letcs\blx@tempa{abx@field@#2}%
+ \letcs\blx@tempb{abx@name@#1}%
+ \csundef{abx@name@#1}%
+ \blx@getdata{\blx@tempa}%
+ \blx@imc@ifnameequals{#1}\blx@tempb
+ {\aftergroup\@firstoftwo}
+ {\aftergroup\@secondoftwo}%
+ \endgroup}
+
+% {<string>}{<true>}{<false>}
+\protected\def\blx@imc@ifcurrentfield#1{%
+ \begingroup
+ \def\blx@tempa{#1}%
+ \ifx\currentfield\blx@tempa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+
+% {<string>}{<true>}{<false>}
+\protected\def\blx@imc@ifcurrentlist#1{%
+ \begingroup
+ \def\blx@tempa{#1}%
+ \ifx\currentlist\blx@tempa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+
+% {<string>}{<true>}{<false>}
+\protected\def\blx@imc@ifcurrentname#1{%
+ \begingroup
+ \def\blx@tempa{#1}%
+ \ifx\currentname\blx@tempa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+
+% {<string>}{<true>}{<false>}
+\protected\def\blx@imc@ifentrytype#1{%
+ \begingroup
+ \def\blx@tempa{#1}%
+ \ifx\abx@field@entrytype\blx@tempa
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+
+% {<true>}{<false>}
+\def\blx@imc@ifmorenames{%
+ \ifundef\currentname
+ {\@secondoftwo}
+ {\iftoggle{abx@bool@more\currentname}
+ {\@firstoftwo}
+ {\ifnum\c@listtotal>\c@liststop
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}}}
+
+% {<true>}{<false>}
+\def\blx@imc@ifmoreitems{%
+ \ifundef\currentlist
+ {\@secondoftwo}
+ {\iftoggle{abx@bool@more\currentlist}
+ {\@firstoftwo}
+ {\ifnum\c@listtotal>\c@liststop
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}}}
+
+% {<true>}{<false>}
+\def\blx@imc@iffirstcitekey{%
+ \ifboolexpr{ ( test {\ifnumequal\c@multicitetotal\z@}
+ and test {\ifnumequal\c@citecount\@ne} )
+ or ( test {\ifnumgreater\c@multicitetotal\z@}
+ and test {\ifnumequal\c@multicitecount\@ne}
+ and test {\ifnumequal\c@citecount\@ne} ) }}
+
+\def\blx@imc@iflastcitekey{%
+ \ifboolexpr{ test {\ifnumequal\c@citecount\c@citetotal}
+ and test {\ifnumequal\c@multicitecount\c@multicitetotal} }}
+
+% {<category>}{<true>}{<false>}
+\protected\def\blx@imc@ifcategory{%
+ \ifdef\abx@field@entrykey
+ {\blx@imc@ifentrycategory\abx@field@entrykey}
+ {\expandafter\@secondoftwo\@gobble}}
+
+% {<entrykey>}{<category>}{<true>}{<false>}
+\protected\def\blx@imc@ifentrycategory{%
+ \blx@xsanitizeafter\blx@imc@ifentrycategory@i}
+
+\def\blx@imc@ifentrycategory@i#1#2{%
+ \ifcsdef{blx@catg@\detokenize{#2}}
+ {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}}
+ {\@secondoftwo}}
+
+% {<keyword>}{<true>}{<false>}
+\protected\def\blx@imc@ifkeyword{%
+ \ifdef\abx@field@entrykey
+ {\blx@imc@ifentrykeyword\abx@field@entrykey}
+ {\expandafter\@secondoftwo\@gobble}}
+
+% {<entrykey>}{<keyword>}{<true>}{<false>}
+\protected\def\blx@imc@ifentrykeyword{%
+ \blx@xsanitizeafter\blx@imc@ifentrykeyword@i}
+
+\def\blx@imc@ifentrykeyword@i#1#2{%
+ \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}}
+ {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}}
+ {\@secondoftwo}}
+
+% {<true>}{<false>}
+\protected\def\blx@ifciteseen@global{%
+ \ifbool{citetracker}
+ {\ifdef\abx@field@entrykey
+ {\expandafter\blx@ifseen@global
+ \expandafter{\abx@field@entrykey}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+\protected\def\blx@ifciteseen@context{%
+ \ifbool{citetracker}
+ {\ifdef\abx@field@entrykey
+ {\expandafter\blx@ifseen@context
+ \expandafter{\abx@field@entrykey}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+\protected\def\blx@ifciteseen@context{%
+ \ifbool{citetracker}
+ {\ifdef\abx@field@entrykey
+ {\expandafter\blx@ifseen@context
+ \expandafter{\abx@field@entrykey}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+% {<entrykey>}{<true>}{<false>}
+\protected\def\blx@ifentryseen@global{%
+ \blx@xsanitizeafter\blx@ifseen@global}
+
+\protected\def\blx@ifentryseen@context{%
+ \blx@xsanitizeafter\blx@ifseen@context}
+
+\def\blx@ifseen@global#1{%
+ \ifbool{citetracker}
+ {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}
+ {\@secondoftwo}}
+
+\def\blx@ifseen@context#1{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}}
+ {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}}
+ {\@secondoftwo}}
+
+% {<true>}{<false>}
+\def\blx@ifciteibid@global{%
+ \ifbool{citetracker}
+ {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}
+ {\@secondoftwo}}
+
+\def\blx@ifciteibid@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot}
+ {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}}
+ {\@secondoftwo}}
+
+\def\blx@ifciteibid@strict{%
+ \ifbool{citetracker}
+ {\blx@ifcitesingle
+ {\blx@ifciteibid@global}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+\def\blx@ifciteibid@constrict{%
+ \ifbool{citetracker}
+ {\blx@ifcitesingle
+ {\iftoggle{blx@footnote}
+ {\blx@ifmpfncheck
+ {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot}
+ {\@secondoftwo}}
+ {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+% {<true>}{<false>}
+\def\blx@ifciteidem@global{%
+ \ifbool{citetracker}
+ {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}
+ {\@secondoftwo}}
+
+\def\blx@ifciteidem@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot}
+ {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}}
+ {\@secondoftwo}}
+
+\let\blx@ifciteidem@strict\blx@ifciteidem@global
+
+\def\blx@ifciteidem@constrict{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@ifmpfncheck
+ {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot}
+ {\@secondoftwo}}
+ {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}}
+ {\@secondoftwo}}
+
+% {<true>}{<false>}
+\def\blx@ifopcit@global{%
+ \ifbool{citetracker}
+ {\blx@imc@iffieldundef{namehash}
+ {\@secondoftwo}
+ {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}
+ {\@secondoftwo}}
+
+\def\blx@ifopcit@context{%
+ \ifbool{citetracker}
+ {\blx@imc@iffieldundef{namehash}
+ {\@secondoftwo}
+ {\iftoggle{blx@footnote}
+ {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}}
+ {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}}
+ {\@secondoftwo}}
+
+\def\blx@ifopcit@strict{%
+ \ifbool{citetracker}
+ {\blx@ifcitesingle
+ {\blx@ifopcit@global}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+\def\blx@ifopcit@constrict{%
+ \ifbool{citetracker}
+ {\blx@ifcitesingle
+ {\blx@imc@iffieldundef{namehash}
+ {\@secondoftwo}
+ {\iftoggle{blx@footnote}
+ {\blx@ifmpfncheck
+ {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}}
+ {\@secondoftwo}}
+ {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+% {<true>}{<false>}
+\def\blx@ifloccit@global{%
+ \ifbool{citetracker}
+ {\blx@loccit@check{text}}
+ {\@secondoftwo}}
+
+\def\blx@ifloccit@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@loccit@check{foot}}
+ {\blx@loccit@check{text}}}
+ {\@secondoftwo}}
+
+\def\blx@ifloccit@strict{%
+ \ifbool{citetracker}
+ {\blx@ifcitesingle
+ {\blx@loccit@numcheck{text}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+\def\blx@ifloccit@constrict{%
+ \ifbool{citetracker}
+ {\blx@ifcitesingle
+ {\iftoggle{blx@footnote}
+ {\blx@ifmpfncheck
+ {\blx@loccit@numcheck{foot}}
+ {\@secondoftwo}}
+ {\blx@loccit@numcheck{text}}}
+ {\@secondoftwo}}
+ {\@secondoftwo}}
+
+\def\blx@loccit@check#1{%
+ \blx@imc@iffieldundef{postnote}
+ {\@secondoftwo}
+ {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}}
+
+\def\blx@loccit@numcheck#1{%
+ \blx@imc@iffieldundef{postnote}
+ {\@secondoftwo}
+ {\expandafter\blx@imc@ifpages
+ \expandafter{\abx@field@postnote}
+ {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}
+ {\@secondoftwo}}}
+
+% {<true>}{<false>}
+\def\blx@ifmpfncheck{%
+ \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+\def\blx@mpfnsave{%
+ \xdef\blx@lastmpfn{\the\value\@mpfn}}
+
+\def\blx@mpfnreset{%
+ \global\let\blx@lastmpfn\z@}
+
+\blx@mpfnreset
+
+% {<true>}{<false>}
+\def\blx@imc@iffirstonpage{%
+ \ifbool{pagetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@iffirstonpage{fnpage}}
+ {\blx@iffirstonpage{page}}}
+ {\@secondoftwo}}
+
+\def\blx@iffirstonpage#1{%
+ \ifcsundef{blx@#1@\number\c@instcount}
+ {\@secondoftwo}
+ {\expandafter\blx@iffirstonpage@i
+ \expandafter{\number\numexpr\c@instcount-1}{#1}}}
+
+\def\blx@iffirstonpage@i#1#2{%
+ \ifcsundef{blx@#2@#1}
+ {\ifnum#1>\@ne
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\expandafter\blx@iffirstonpage@i
+ \expandafter{\number\numexpr#1-1}{#2}}
+ {\@firstoftwo}}
+ {\ifnum\csuse{blx@#2@\number\c@instcount}=%
+ \csuse{blx@#2@#1} %
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}}
+
+% {<count1>}{<count2>}{<true>}{<false>}
+\def\blx@imc@ifsamepage#1#2{%
+ \ifbool{pagetracker}
+ {\ifcsundef{blx@page@\number\numexpr#1}
+ {\ifcsundef{blx@fnpage@\number\numexpr#1}
+ {\@secondoftwo}
+ {\blx@ifsamepage{#1}{#2}{fnpage}}}
+ {\blx@ifsamepage{#1}{#2}{page}}}
+ {\@secondoftwo}}
+
+\def\blx@ifsamepage#1#2#3{%
+ \ifcsundef{blx@page@\number\numexpr#2}
+ {\ifcsundef{blx@fnpage@\number\numexpr#2}
+ {\@secondoftwo}
+ {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}}
+ {\blx@ifsamepage@i{#1}{#2}{#3}{page}}}
+
+\def\blx@ifsamepage@i#1#2#3#4{%
+ \ifnum\csuse{blx@#3@\number\numexpr#1}=%
+ \csuse{blx@#4@\number\numexpr#2} %
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+% {<string>}{<true>}{<false>}
+\protected\long\def\blx@imc@ifinteger#1{%
+ \begingroup
+ \def\do##1{\uccode`##1=`\%}%
+ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
+ \makeatletter
+ \catcode`\%=9
+ \endlinechar\m@ne
+ \uppercase{\scantokens{\def\blx@tempa{#1}}}%
+ \ifx\blx@tempa\@empty
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+
+% {<field>}{<true>}{<false>}
+\protected\def\blx@imc@iffieldint#1{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\expandafter\expandafter
+ \expandafter\ifinteger
+ \expandafter\expandafter
+ \expandafter{\csname abx@field@#1\endcsname}}}
+
+% {<string>}{<true>}{<false>}
+\protected\def\blx@imc@ifnumeral{%
+ \blx@ifnum\blx@hook@ifnum}
+
+\protected\def\blx@imc@ifnumerals{%
+ \blx@ifnum\blx@hook@ifnums}
+
+\protected\def\blx@imc@ifpages{%
+ \blx@ifnum\blx@hook@ifpages}
+
+\long\def\blx@ifnum#1#2{%
+ \begingroup
+ \let\protect\@unexpandable@protect
+ \uppercase{\edef\blx@tempa{#2}}%
+ \ifx\blx@tempa\@empty
+ \aftergroup\@secondoftwo
+ \else
+ \makeatletter
+ \catcode`\%=9
+ \endlinechar\m@ne
+ \everyeof{\noexpand}#1%
+ \uppercase{\edef\blx@tempa{\scantokens{#2}}}%
+ \ifx\blx@tempa\@empty
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \fi
+ \endgroup}
+
+\def\blx@hook@ifnum{%
+ \def\do##1{\uccode`##1=`\%}%
+ \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
+ \do\i\do\v\do\x\do\l\do\c\do\d\do\m
+ \do\I\do\V\do\X\do\L\do\C\do\D\do\M
+ \blx@donumchars
+ \let\RN\@firstofone
+ \let\Rn\@firstofone}
+
+\def\blx@hook@ifnums{%
+ \blx@hook@ifnum
+ \def\do##1{\uccode`##1=`\%}%
+ \blx@dorangechars
+ \def\do##1{\let##1\@empty}%
+ \blx@dorangecmds}
+
+\def\blx@hook@ifpages{%
+ \blx@hook@ifnum
+ \blx@hook@ifnums
+ \def\do##1{\let##1\@empty}%
+ \blx@dopagecmds}
+
+% {<field>}{<true>}{<false>}
+\protected\def\blx@imc@iffieldnum#1{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\expandafter\expandafter
+ \expandafter\blx@imc@ifnumeral
+ \expandafter\expandafter
+ \expandafter{\csname abx@field@#1\endcsname}}}
+
+\protected\def\blx@imc@iffieldnums#1{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\expandafter\expandafter
+ \expandafter\blx@imc@ifnumerals
+ \expandafter\expandafter
+ \expandafter{\csname abx@field@#1\endcsname}}}
+
+\protected\def\blx@imc@iffieldpages#1{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\expandafter\expandafter
+ \expandafter\blx@imc@ifpages
+ \expandafter\expandafter
+ \expandafter{\csname abx@field@#1\endcsname}}}
+
+% {<chars>}
+\newrobustcmd*{\DeclareNumChars}{%
+ \@ifstar
+ {\blx@defnumchars}
+ {\global\let\blx@donumchars\@empty
+ \blx@defnumchars}}
+
+\def\blx@defnumchars#1{%
+ \ifblank{#1}
+ {}
+ {\expandafter\blx@defdochars
+ \expandafter\blx@donumchars
+ \detokenize{#1}\relax}}
+
+% {<chars>}
+\newrobustcmd*{\DeclareRangeChars}{%
+ \@ifstar
+ {\blx@defrangechars}
+ {\global\let\blx@dorangechars\@empty
+ \blx@defrangechars}}
+
+\def\blx@defrangechars#1{%
+ \ifblank{#1}
+ {}
+ {\expandafter\blx@defdochars
+ \expandafter\blx@dorangechars
+ \detokenize{#1}\relax}}
+
+\def\blx@defdochars#1#2{%
+ \ifx#2\relax
+ \else
+ \xdef#1{%
+ \expandonce#1\noexpand\do
+ \expandafter\noexpand\csname#2\endcsname}%
+ \expandafter\blx@defdochars
+ \expandafter#1%
+ \fi}
+
+% {<cstokens>}
+\newrobustcmd*{\DeclareRangeCommands}{%
+ \@ifstar
+ {\blx@defrangecmds}
+ {\global\let\blx@dorangecmds\@empty
+ \blx@defrangecmds}}
+
+\def\blx@defrangecmds#1{%
+ \ifblank{#1}
+ {}
+ {\blx@defrangecmds@i#1&}}
+
+\def\blx@defrangecmds@i#1{%
+ \ifx&#1%
+ \else
+ \gappto\blx@dorangecmds{\do#1}%
+ \expandafter\blx@defrangecmds@i
+ \fi}
+
+% {<cstokens>}
+\newrobustcmd*{\DeclarePageCommands}{%
+ \@ifstar
+ {\blx@defpagecmds}
+ {\global\let\blx@dopagecmds\@empty
+ \blx@defpagecmds}}
+
+\def\blx@defpagecmds#1{%
+ \ifblank{#1}
+ {}
+ {\blx@defpagecmds@i#1&}}
+
+\def\blx@defpagecmds@i#1{%
+ \ifx&#1%
+ \else
+ \gappto\blx@dopagecmds{\do#1}%
+ \expandafter\blx@defpagecmds@i
+ \fi}
+
+\DeclareNumChars{.}
+\DeclareRangeChars{~,;-+/}
+\DeclareRangeCommands{%
+ \ \,\space\nobreakspace\addspace\addnbspace
+ \addthinspace\addnbthinspace\addlowpenspace
+ \addhighpenspace\addlpthinspace\addhpthinspace
+ \adddotspace\addabbrvspace\&\psq\psqq
+ \bibrangedash\bibdatedash\textendash\textemdash\bibrangessep}
+\DeclarePageCommands{\pno\ppno}
-% Now do the loading: avoid any awkward stuff with the conditional by
-% expanding first
-\ifblx@load@version@legacy
- \expandafter\@firstoftwo
+% *{<code>}
+\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum}
+\newcommand*{\NumcheckSetup}{\NumCheckSetup}
+
+% [<pagination>][<postpro>]{<string>}
+\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{%
+ \begingroup
+ \def\blx@tempa{\blx@mkpageprefix{page}}%
+ \iffieldundef{#1}
+ {}
+ {\iffieldequalstr{#1}{none}
+ {\def\blx@tempa{\blx@mkpageprefix@i}}
+ {\iffieldbibstring{#1}
+ {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}}
+ {\blx@warning@entry{%
+ Unknown pagination type '\strfield{#1}'}}}}%
+ \@ifnextchar[%]
+ {\blx@tempa}
+ {\blx@tempa[\@firstofone]}}
+
+\protected\long\def\blx@mkpageprefix#1[#2]#3{%
+ \ifnumeral{#3}
+ {\bibstring{#1}\ppspace}
+ {\ifnumerals{#3}
+ {\bibstring{#1s}\ppspace}
+ {\def\pno{\bibstring{#1}}%
+ \def\ppno{\bibstring{#1s}}}}%
+ \blx@mkpageprefix@i[#2]{#3}}
+
+\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup}
+
+% [<pagination>][<postpro>]{<string>}
+\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{%
+ \begingroup
+ \def\blx@tempa{\blx@mkpagetotal{page}}%
+ \iffieldundef{#1}
+ {}
+ {\iffieldequalstr{#1}{none}
+ {\def\blx@tempa{\blx@mkpagetotal@i}}
+ {\iffieldbibstring{#1}
+ {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}}
+ {\blx@warning@entry{%
+ Unknown pagination type '\strfield{#1}'}}}}%
+ \@ifnextchar[%]
+ {\blx@tempa}
+ {\blx@tempa[\@firstofone]}}
+
+\protected\long\def\blx@mkpagetotal#1[#2]#3{%
+ \ifnumeral{#3}
+ {\setbox\@tempboxa=\hbox{%
+ \blx@tempcnta0#3\relax
+ \ifnum\blx@tempcnta=\@ne
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi}%
+ {#2{#3}\ppspace\bibstring{#1}}
+ {#2{#3}\ppspace\bibstring{#1s}}}
+ {\def\pno{\bibstring{#1}}%
+ \def\ppno{\bibstring{#1s}}%
+ #2{#3}}%
+ \endgroup}
+
+\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup}
+
+\newcounter{mincomprange}
+\newcounter{maxcomprange}
+\newcounter{mincompwidth}
+\setcounter{mincomprange}{10}
+\setcounter{maxcomprange}{100000}
+\setcounter{mincompwidth}{1}
+\def\abx@rangeproclimit{100000}
+
+% {<rangefield>}
+\newcommand*{\rangelen}[1]{%
+ \ifcsdef{abx@range@#1}
+ {\csuse{abx@range@#1}}
+ {}}
+
+\let\frangelen\rangelen % Legacy name for \rangelen
+
+% <*>[<postpro>]{<string>}
+\newrobustcmd*{\mkcomprange}{%
+ \begingroup
+ \@ifstar
+ {\blx@comprange\blx@comprange@ii}
+ {\blx@comprange\blx@comprange@i}}
+
+\def\blx@comprange#1{%
+ \@ifnextchar[{#1}{#1[\@firstofone]}}
+
+\def\blx@comprange@i[#1]#2{%
+ \let\blx@tempa\@empty
+ \protected\def\blx@range@out@value{\appto\blx@tempa}%
+ \let\blx@range@out@delim\blx@range@out@value
+ \let\blx@range@split\blx@comprange@split
+ \blx@range@chunk{#2}%
+ \edef\blx@tempa{\endgroup
+ \unexpanded{#1}{\expandonce\blx@tempa}}%
+ \blx@tempa}
+
+\def\blx@comprange@ii[#1]#2{%
+ \protected\def\blx@range@out@value{#1}%
+ \let\blx@range@out@delim\@firstofone
+ \let\blx@range@split\blx@comprange@split
+ \blx@range@chunk{#2}%
+ \endgroup}
+
+\def\blx@comprange@split#1{%
+ \def\blx@comprange@abort{\blx@range@out@value{#1}}%
+ \blx@imc@ifpages{#1}
+ {\blx@comprange@range#1\bibrangedash\bibrangedash&}
+ {\blx@comprange@abort}}
+
+\def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{%
+ \ifblank{#3}
+ {\blx@comprange@hyphen#1--&}
+ {\ifblank{#2}
+ {\blx@range@out@value{#1\bibrangedash}}
+ {\ifblank{#1}
+ {\blx@range@out@value{\bibrangedash#2}}
+ {\blx@comprange@check{#1}{#2}}}}}
+
+\def\blx@comprange@hyphen#1-#2-#3&{%
+ \ifblank{#3}
+ {\blx@comprange@abort}
+ {\ifblank{#2}
+ {\ifblank{#1}
+ {\let\blx@tempb\@empty}
+ {\def\blx@tempb{#1}}%
+ \blx@comprange@hyphen@i#3&}
+ {\ifblank{#1}
+ {\blx@range@out@value{\bibrangedash#2}}
+ {\blx@comprange@check{#1}{#2}}}}}
+
+\def\blx@comprange@hyphen@i#1-#2&{%
+ \ifblank{#1#2}
+ {\expandafter\blx@range@out@value
+ \expandafter{\blx@tempb\bibrangedash}}
+ {\notblank{#1}
+ {\ifdefempty\blx@tempb
+ {\blx@range@out@value{\bibrangedash#1}}
+ {\expandafter\blx@comprange@check
+ \expandafter{\blx@tempb}{#1}}}
+ {\blx@comprange@hyphen@i#2&}}}
+
+\def\blx@comprange@check#1#2{%
+ \blx@imc@ifinteger{#1}
+ {\blx@imc@ifinteger{#2}
+ {\blx@comprange@comp{#1}{#2}}
+ {\blx@range@out@value{#1\bibrangedash#2}}}
+ {\blx@range@out@value{#1\bibrangedash#2}}}
+
+\def\blx@comprange@comp#1#2{%
+ \def\blx@tempb{#1}%
+ \def\blx@tempc{#2}%
+ \let\blx@tempd\blx@tempc
+ \ifnum\c@maxcomprange<\abx@rangeproclimit\relax
+ \numdef\blx@tempe\abx@rangeproclimit
+ \else
+ \numdef\blx@tempe\c@maxcomprange
+ \fi
+ \blx@tempcntc=\blx@tempe\relax
+ \ifnum
+ \ifnum\c@mincompwidth<1\space1\fi
+ \ifnum\c@maxcomprange<10\space1\fi
+ \ifnum\c@mincomprange<\blx@tempb\space\else1\fi
+ \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi
+ 0=\z@
+ \expandafter\blx@comprange@comp@div
+ \else
+ \expandafter\blx@comprange@end
+ \fi}
+
+\def\blx@comprange@end{%
+ \numdef\blx@tempb\blx@tempb
+ \ifnum\blx@tempe>\c@maxcomprange\relax
+ \numdef\blx@tempc\blx@tempc
+ \else
+ \numdef\blx@tempc\blx@tempd
+ \fi
+ \edef\blx@tempb{%
+ \blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}%
+ \blx@tempb}
+
+\def\blx@comprange@comp@div{%
+ \unless\ifnum\blx@tempb<\blx@tempcntc
+ \blx@tempcnta\blx@tempb\relax
+ \blx@tempcntb\blx@tempc\relax
+ \divide\blx@tempcnta\blx@tempcntc
+ \divide\blx@tempcntb\blx@tempcntc
+ \ifnum\blx@tempcnta=\blx@tempcntb
+ \edef\blx@tempd{\expandafter\@gobble\blx@tempd}%
+ \numdef\blx@tempe\blx@tempcntc
+ \fi
+ \fi
+ \divide\blx@tempcntc10\relax
+ \ifnum
+ \ifnum\blx@tempcntc<10 1\fi
+ \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi
+ 0=\z@
+ \expandafter\blx@comprange@comp@div
+ \else
+ \expandafter\blx@comprange@end
+ \fi}
+
+\def\blx@range@chunk#1{%
+ \blx@range@chunk@semcol#1;&}
+
+\def\blx@range@chunk@semcol#1;#2&{%
+ \notblank{#1}
+ {\blx@range@chunk@comma#1,&}
+ {}%
+ \notblank{#2}
+ {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}%
+ \blx@range@chunk@semcol#2&}
+ {}}
+
+\def\blx@range@chunk@comma#1,#2&{%
+ \notblank{#1}
+ {\blx@range@chunk@sep#1\bibrangessep&}
+ {}%
+ \notblank{#2}
+ {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}%
+ \blx@range@chunk@comma#2&}
+ {}}
+
+\def\blx@range@chunk@sep#1\bibrangessep#2&{%
+ \notblank{#1}
+ {\expandafter\blx@range@split
+ \expandafter{\@firstofone#1}}
+ {}%
+ \notblank{#2}
+ {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}%
+ \blx@range@chunk@sep#2&}
+ {}}
+
+% <*>[<postpro>]{<string>}
+\newrobustcmd*{\mkfirstpage}{%
+ \begingroup
+ \@ifstar
+ {\blx@firstpage\blx@firstpage@ii}
+ {\blx@firstpage\blx@firstpage@i}}
+
+\def\blx@firstpage#1{%
+ \@ifnextchar[{#1}{#1[\@firstofone]}}
+
+\def\blx@firstpage@i[#1]#2{%
+ \let\blx@tempa\@empty
+ \protected\def\blx@range@out@value{\appto\blx@tempa}%
+ \let\blx@range@out@delim\blx@range@out@value
+ \let\blx@range@split\blx@firstpage@split
+ \blx@range@chunk{#2}%
+ \edef\blx@tempa{\endgroup
+ \unexpanded{#1}{\expandonce\blx@tempa}}%
+ \blx@tempa}
+
+\def\blx@firstpage@ii[#1]#2{%
+ \protected\def\blx@range@out@value{#1}%
+ \let\blx@range@out@delim\@firstofone
+ \let\blx@range@split\blx@firstpage@split
+ \blx@range@chunk{#2}%
+ \endgroup}
+
+\def\blx@firstpage@split#1{%
+ \def\blx@firstpage@abort{\blx@range@out@value{#1}}%
+ \blx@firstpage@range#1\bibrangedash\bibrangedash&}
+
+\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
+ \ifblank{#3}
+ {\blx@firstpage@hyphen#1--&}
+ {\ifblank{#1}
+ {\blx@range@out@value{\bibrangedash#2}}
+ {\blx@range@out@value{#1}}}}
+
+\def\blx@firstpage@hyphen#1-#2-#3&{%
+ \ifblank{#3}
+ {\blx@firstpage@abort}
+ {\ifblank{#1}
+ {\ifblank{#2}
+ {\blx@firstpage@hyphen@i#3&}
+ {\blx@range@out@value{\bibrangedash#2}}}
+ {\blx@range@out@value{#1}}}}
+
+\def\blx@firstpage@hyphen@i#1-#2&{%
+ \ifblank{#1}
+ {\ifblank{#2}
+ {\blx@firstpage@abort}
+ {\blx@firstpage@hyphen@i#2&}}
+ {\blx@range@out@value{\bibrangedash#1}}}
+
+\newcommand*{\ppspace}{\addnbspace}
+\newcommand*{\sqspace}{\addnbspace}
+
+\newrobustcmd*{\RN}[1]{%
+ \begingroup
+ \expandafter\RNfont
+ \expandafter{\romannumeral#1}%
+ \endgroup}
+\newrobustcmd*{\Rn}[1]{%
+ \begingroup
+ \expandafter\Rnfont
+ \expandafter{\romannumeral#1}%
+ \endgroup}
+
+\newcommand*{\RNfont}{\uppercase}
+\newcommand*{\Rnfont}{}
+
+% Delimiter interface
+
+% [<contextname, ...>]{<name, ...>}{<code>}
+\newrobustcmd*{\DeclareDelimFormat}{%
+ \@ifstar
+ {\blx@declaredelimclear}
+ {\blx@declaredelim}}
+
+\newrobustcmd*{\blx@declaredelimclear}[3][]{%
+ \def\do##1{\global\cslet{blx@printdelim@##1@#2}=\undefined}%
+ \dolistcsloop{blx@declaredelimcontexts@#2}%
+ \ifblank{#1}
+ {\blx@declaredelim{#2}{#3}}
+ {\blx@declaredelim[#1]{#2}{#3}}}
+
+\newrobustcmd*{\blx@declaredelim}[3][]{%
+ \ifblank{#1}
+ {\blx@declaredelim@i{}{}{#2}{#3}}
+ {\def\do##1{%
+ \listcsgadd{blx@declaredelimcontexts@#2}{##1}%
+ \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}}
+ \docsvlist{#1}}}%
+
+\def\blx@declaredelim@i#1#2#3#4{%
+ \begingroup
+ \def\do##1{%
+ \ifcsdef{#1##1}
+ {\blx@warn@delimdeclare{##1}{#2}}
+ {}%
+ \csgdef{#1##1}{#4}}%
+ \docsvlist{#3}
+ \endgroup}
+
+\def\blx@delimcontext{none}
+\newcommand*{\printdelim}[2][]{%
+ \ifblank{#1}
+ {\ifcsdef{blx@printdelim@\blx@delimcontext @#2}
+ {\csuse{blx@printdelim@\blx@delimcontext @#2}}
+ {\ifcsdef{#2}% fall back on legacy macros
+ {\csuse{#2}}
+ {\blx@warn@delimuse{#2}{*}}}}
+ {\ifcsdef{blx@printdelim@#1@#2}
+ {\csuse{blx@printdelim@#1@#2}}
+ {\blx@warn@delimuse{#2}{#1}}}}
+
+\newcommand*{\delimcontext}[1]{%
+ \edef\blx@delimcontext{#1}}
+
+% {<init>}{<entrytype>}
+\protected\def\blx@imc@usedriver#1#2{%
+ \begingroup
+ \let\finentry\blx@finentry@usedrv
+ \let\newblock\relax
+ \let\abx@macro@bibindex\@empty
+ \let\abx@macro@pageref\@empty
+ \csuse{blx@hook@bbxinit}#1%
+ \delimcontext{bib}%
+ \blx@beglangbib
+ \blx@driver{#2}%
+ \blx@endlangbib
+ \endgroup}
+
+% Punctuation
+
+\protected\def\blx@initunit{%
+ \global\togglefalse{blx@block}%
+ \global\togglefalse{blx@unit}%
+ \global\togglefalse{blx@insert}%
+ \global\togglefalse{blx@lastins}%
+ \global\togglefalse{blx@keepunit}%
+ \global\let\blx@unitpunct\newunitpunct
+ \blx@imc@resetpunctfont}
+
+\def\blx@begunit{%
+ \toggletrue{blx@tempa}%
+ \iftoggle{blx@insert}
+ {\iftoggle{blx@unit}
+ {\begingroup
+ \let\blx@begunit\@empty
+ \let\blx@endunit\@empty
+ \let\blx@endnounit\@empty
+ \blx@unitpunct\blx@postpunct
+ \endgroup
+ \global\togglefalse{blx@unit}%
+ \togglefalse{blx@tempa}}
+ {\blx@postpunct}%
+ \iftoggle{blx@block}
+ {\begingroup
+ \let\blx@begunit\@empty
+ \let\blx@endunit\@empty
+ \let\blx@endnounit\@empty
+ \newblockpunct
+ \endgroup
+ \global\togglefalse{blx@block}%
+ \togglefalse{blx@tempa}}
+ {}}
+ {}%
+ \blx@postpunct
+ \blx@imc@resetpunctfont
+ \iftoggle{blx@tempa}
+ {}
+ {\global\togglefalse{blx@insert}}%
+ \blx@leavevmode
+ \begingroup}
+
+\def\blx@endunit{%
+ \endgroup
+ \global\toggletrue{blx@insert}%
+ \global\toggletrue{blx@lastins}}
+
+\def\blx@nounit{%
+ \global\togglefalse{blx@lastins}}
+
+\def\blx@endnounit{%
+ \endgroup\blx@nounit}
+
+\protected\def\blx@imc@newblock{%
+ \global\toggletrue{blx@block}}%
+
+\protected\def\blx@imc@newunit{%
+ \iftoggle{blx@keepunit}
+ {}
+ {\global\let\blx@unitpunct\newunitpunct
+ \global\toggletrue{blx@unit}}}
+
+\protected\def\blx@imc@setunit{%
+ \@ifstar\blx@setunit@i\blx@setunit}
+
+\long\def\blx@setunit#1{%
+ \iftoggle{blx@keepunit}
+ {}
+ {\long\gdef\blx@unitpunct{#1}%
+ \global\toggletrue{blx@unit}}}
+
+\def\blx@setunit@i{%
+ \iftoggle{blx@lastins}
+ {\blx@setunit}
+ {\@gobble}}
+
+\protected\def\blx@imc@printunit{%
+ \@ifstar\blx@printunit@i\blx@printunit}
+
+\def\blx@printunit#1{%
+ \long\gdef\blx@unitpunct{#1\global\togglefalse{blx@keepunit}}%
+ \global\toggletrue{blx@keepunit}%
+ \global\toggletrue{blx@unit}}
+
+\def\blx@printunit@i{%
+ \iftoggle{blx@lastins}
+ {\blx@printunit}
+ {\@gobble}}
+
+\protected\def\blx@imc@finentry{%
+ \unspace\finentrypunct
+ \blx@postpunct
+ \blx@initunit}
+
+\protected\def\blx@finentry@usedrv{%
+ \blx@setunit\relax}
+
+\protected\def\blx@finentry@inset{%
+ \blx@setunit\entrysetpunct
+ \global\toggletrue{blx@block}}
+
+\blx@regimcs{%
+ \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist \thename \strname
+ \clearfield \clearlist \clearname \restorefield \restorelist \restorename
+ \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword
+ \ifciteseen \ifentryseen \ifentryinbib \ifciteibid \ifciteidem \ifopcit \ifloccit
+ \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype
+ \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal
+ \ifbibmacroundef \iffieldundef \iffieldxref \iflistequalcs \iflistequals
+ \iflistsequal \iflistundef \iflistxref
+ \ifmorenames \ifmoreitems \iffirstcitekey \iflastcitekey
+ \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref
+ \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist
+ \savelistcs \savename \savenamecs \usedriver
+ \ifinteger \ifnumeral \ifnumerals \ifpages
+ \iffieldint \iffieldnum \iffieldnums \iffieldpages
+ \mkpageprefix \mkpagetotal
+ \newblock \newunit \setunit \printunit \finentry}
+
+\appto\blx@blxinit{%
+ \def\ifnatbibmode{\iftoggle{blx@natbib}}%
+ \def\ifcitation{\iftoggle{blx@citation}}%
+ \def\ifbibliography{\iftoggle{blx@bibliography}}%
+ \def\ifciteindex{\iftoggle{blx@citeindex}}%
+ \def\ifbibindex{\iftoggle{blx@bibindex}}%
+ \def\iffootnote{\iftoggle{blx@footnote}}%
+ \def\ifuseprefix{\iftoggle{blx@useprefix}}%
+ \def\ifterseinits{\iftoggle{blx@terseinits}}%
+ \def\iffirstinits{\iftoggle{blx@giveninits}}% legacy name for \ifgiveninits
+ \def\ifgiveninits{\iftoggle{blx@giveninits}}%
+ \def\ifcrossrefsource{\iftoggle{abx@bool@crossrefsource}}%
+ \def\ifxrefsource{\iftoggle{abx@bool@xrefsource}}%
+ \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}%
+ \def\ifuniquetitle{\iftoggle{abx@bool@uniquetitle}}%
+ \def\ifuniqueprimaryauthor{\iftoggle{abx@bool@uniqueprimaryauthor}}%
+ \def\ifandothers#1{\iftoggle{abx@bool@more#1}}%
+ \protected\def\pno{\bibstring{page}}%
+ \protected\def\ppno{\bibstring{pages}}%
+ \let\nopp\relax
+ \protected\def\psq{\sqspace\bibstring{sequens}}%
+ \protected\def\psqq{\sqspace\bibstring{sequentes}}}
+
+% Make sure that commands which might pop up inside an \edef will be defined
+% as something. If they are taken \AtBeginDocument then we assume that all will
+% be well. If not, then provide a definition which will give an error outside
+% of a citation context.
+\AtBeginDocument{%
+ \protected\def\do#1{%
+ \ifdefined#1%
+ \else
+ \protected\def#1{\ERROR}%
+ \fi
+ }%
+ \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}%
+}
+
+%% Global formatting hooks
+
+% capitalization
+
+% {<text>}
+\newrobustcmd{\MakeCapital}[1]{%
+ \begingroup
+ \blx@mkcp@init
+ \protected@edef\blx@tempa{#1}%
+ \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end}
+
+\def\blx@mkcp@init{%
+ \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}%
+ \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}%
+ \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}%
+ \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}%
+ \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents
+ \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents
+ \def\IeC##1{\blx@mkcp@iec\IeC{##1}}%
+ \def\@tabacckludge##1{%
+ \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}}
+
+\begingroup
+\catcode`\"=\active
+\gappto\blx@mkcp@init{%
+ \ifnum\catcode`\"=\active
+ \def"#1{\blx@mkcp@bbl"\noexpand#1}%
+ \fi}
+\endgroup
+
+\def\blx@mkcp@parse{%
+ \futurelet\@let@token\blx@mkcp@eval}
+
+\long\def\blx@mkcp@eval{%
+ \ifx\@let@token\blx@mkcp@iec
+ \expandafter\blx@mkcp@getiec
+ \fi
+ \ifx\@let@token\blx@mkcp@bbl
+ \expandafter\blx@mkcp@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@sgl
+ \expandafter\blx@mkcp@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@dbl
+ \expandafter\blx@mkcp@getthree
+ \fi
+ \blx@mkcp@case}
+
+\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{%
+ \blx@mkcp@case{#2#3{#4}}}
+
+\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{%
+ \blx@mkcp@case{#2#3#4}}
+
+\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{%
+ \blx@mkcp@case{#2#3#4#5}}
+
+\long\def\blx@mkcp@case#1{%
+ \begingroup
+ \def\i{I}\def\j{J}%
+ \def\do##1##2{\let##1##2\do}%
+ \expandafter\do\@uclclist\relax{\relax\@gobble}%
+ \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}%
+ \blx@tempa}
+
+\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{%
+ \let\blx@mkcp@iec\noexpand
+ \let\blx@mkcp@bbl\noexpand
+ \let\blx@mkcp@sgl\noexpand
+ \let\blx@mkcp@dbl\noexpand
+ \protected@edef\blx@tempa{\endgroup#1}%
+ \blx@tempa}
+
+\def\abx@dosingleaccents{%
+ \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
+ \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
+\def\abx@dodoubleaccents{%
+ \do\t}
+
+% {<text>}
+\newrobustcmd*{\MakeSentenceCase}{%
+ \@ifstar\blx@mksc@i\blx@mksc@ii}
+
+% if we have option language=<lang>, then this overrides
+% langid field, otherwise, we try than, otherwise try main doc lang
+\def\blx@mksc@i{%
+ \ifdef\blx@forcelanguagename
+ {\xifinlist\blx@forcelanguagename\blx@cmksc@lang
+ {\blx@mksc@ii}
+ {\@firstofone}}
+ {\ifdef\abx@field@langid
+ {\xifinlist\abx@field@langid\blx@cmksc@lang
+ {\blx@mksc@ii}
+ {\@firstofone}}
+ {\xifinlist\bbl@main@language\blx@cmksc@lang
+ {\blx@mksc@ii}
+ {\@firstofone}}}}
+
+\long\def\blx@mksc@ii#1{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \let\blx@tempb\@empty
+ \blx@mksc@init
+ \protected@edef\@tempa{#1}%
+ \expandafter\blx@mksc@parse\@tempa\blx@mksc@end}
+
+\def\blx@mksc@init{%
+ \blx@mkcp@init
+ \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}%
+ \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}%
+ \def\do##1{%
+ \ifx##1\relax
+ \else
+ \def##1{\blx@mkcp@nil##1}%
+ \expandafter\do
+ \fi}%
+ \expandafter\do\@uclclist\relax}
+
+\def\blx@mksc@parse{%
+ \futurelet\@let@token\blx@mksc@eval}
+
+\def\blx@mksc@eval{%
+ \ifx\@let@token\blx@mksc@end
+ \expandafter\blx@mksc@end
+ \fi
+ \ifx\@let@token\bgroup
+ \expandafter\blx@mksc@group
+ \fi
+ \ifx\@let@token\@sptoken
+ \expandafter\blx@mksc@space
+ \fi
+ \ifx\@let@token\blx@mkcp@nil
+ \expandafter\blx@mksc@getone
+ \fi
+ \ifx\@let@token\blx@mkcp@iec
+ \expandafter\blx@mksc@getiec
+ \fi
+ \ifx\@let@token\blx@mkcp@bbl
+ \expandafter\blx@mksc@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@sgl
+ \expandafter\blx@mksc@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@dbl
+ \expandafter\blx@mksc@getthree
+ \fi
+ \if\noexpand\@let@token\relax
+ \expandafter\blx@mksc@cs
+ \fi
+ \blx@mksc@other}
+
+\def\blx@mksc@end#1\blx@mksc@end{%
+ \blx@mksc@eject
+ \let\blx@mkcp@nil\noexpand
+ \let\blx@mkcp@iec\noexpand
+ \let\blx@mkcp@bbl\noexpand
+ \let\blx@mkcp@sgl\noexpand
+ \let\blx@mkcp@dbl\noexpand
+ \let\MakeUppercase\relax
+ \let\MakeLowercase\relax
+ \protected@edef\blx@tempa{\endgroup\blx@tempa}%
+ \blx@tempa}
+
+\long\def\blx@mksc@group#1\blx@mksc@other#2{%
+ \futurelet\@let@token\blx@mksc@ingroup#2&{#2}%
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\long\def\blx@mksc@ingroup#1&#2{%
+ \if\noexpand\@let@token\relax
+ \blx@mksc@locase{{#2}}%
+ \else
+ \blx@mksc@nocase{{#2}}%
+ \fi}
+
+\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other}
+\csuse{blx@mksc@space} {%
+ \blx@mksc@anycase{ }%
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\long\def\blx@mksc@cs#1\blx@mksc@other#2{%
+ \ifcat\noexpand~\noexpand#2%
+ \blx@mksc@locase{#2}%
+ \else
+ \blx@mksc@nocase{#2}%
+ \fi
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{%
+ \blx@mksc@other{#2#3{#4}}}
+
+\def\blx@mksc@getone#1\blx@mksc@other#2#3{%
+ \blx@mksc@other{#2#3}}
+
+\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{%
+ \blx@mksc@other{#2#3#4}}
+
+\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{%
+ \blx@mksc@other{#2#3#4#5}}
+
+\long\def\blx@mksc@other#1{%
+ \blx@mksc@locase{#1}%
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\def\blx@mksc@locase{%
+ \appto\blx@tempb}
+
+\def\blx@mksc@nocase{%
+ \blx@mksc@eject
+ \appto\blx@tempa}
+
+\def\blx@mksc@anycase{%
+ \ifx\blx@tempb\@empty
+ \expandafter\appto
+ \expandafter\blx@tempa
+ \else
+ \expandafter\appto
+ \expandafter\blx@tempb
+ \fi}
+
+\def\blx@mksc@eject{%
+ \ifx\blx@tempb\@empty
+ \else
+ \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}%
+ \let\blx@tempb\@empty
+ \fi}
+
+\def\blx@mksc@endhead{%
+ \ifx\blx@tempb\@empty
+ \else
+ \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}%
+ \let\blx@tempb\@empty
+ \fi
+ \let\blx@mksc@endhead\relax}
+
+% {<language,language,...>}
+\newrobustcmd*{\DeclareCaseLangs}{%
+ \@ifstar
+ {\blx@defcaselangs}
+ {\global\let\blx@cmksc@lang\@empty
+ \blx@defcaselangs}}
+
+\def\blx@defcaselangs#1{%
+ \ifblank{#1}
+ {}
+ {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}}
+
+\DeclareCaseLangs{%
+ american,british,canadian,
+ english,USenglish,UKenglish,
+ australian,newzealand}
+
+\newrobustcmd*{\ifcaselang}[1][]{%
+ \ifblank{#1}
+ {\xifinlist\blx@languagename\blx@cmksc@lang}
+ {\xifinlist{#1}\blx@cmksc@lang}}
+
+%% Main formatting commands
+% The work by creating a \let alias:
+% \abx@<class>@<entrytype>@<formatname> -> \blx@defformat@d
+% for later use in \print*
+% Then, \blx@defformat@d is defined by calling
+% \def\blx@defformat@d#1{format body}
+
+% [<entrytype>]{<name>}{<definiton>}
+\newrobustcmd*{\DeclareNameFormat}{%
+ \@ifstar
+ {\blx@defformat\blx@defnameformat{nfd}*}
+ {\blx@defformat\blx@defnameformat{nfd}{}}}
+
+\newrobustcmd*{\DeclareIndexNameFormat}{%
+ \@ifstar
+ {\blx@defformat\blx@defnameformat{nid}*}
+ {\blx@defformat\blx@defnameformat{nid}{}}}
+
+\newrobustcmd*{\DeclareListFormat}{%
+ \@ifstar
+ {\blx@defformat\blx@defplainformat{lfd}*}
+ {\blx@defformat\blx@defplainformat{lfd}{}}}
+\newrobustcmd*{\DeclareIndexListFormat}{%
+ \@ifstar
+ {\blx@defformat\blx@defplainformat{lid}*}
+ {\blx@defformat\blx@defplainformat{lid}{}}}
+
+\newrobustcmd*{\DeclareFieldFormat}{%
+ \@ifstar
+ {\blx@defformat\blx@defplainformat{ffd}*}
+ {\blx@defformat\blx@defplainformat{ffd}{}}}
+\newrobustcmd*{\DeclareIndexFieldFormat}{%
+ \@ifstar
+ {\blx@defformat\blx@defplainformat{fid}*}
+ {\blx@defformat\blx@defplainformat{fid}{}}}
+
+% {<macro>}{<class>}{<*>}
+\def\blx@defformat#1#2#3{%
+ \@ifnextchar[%]
+ {\blx@defformat@i{#1}{#2}{#3}}
+ {\blx@defformat@i{#1}{#2}{#3}[*]}}
+
+% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}
+\def\blx@defformat@i#1#2#3[#4]#5{%
+ \notblank{#3}
+ {\blx@resetformat{#2}{#5}}
+ {}%
+ \def\blx@defformat@a{#2}%
+ \def\blx@defformat@b{#4}%
+ \blx@xsanitizeafter{\def\blx@defformat@c}{#5}%
+ \afterassignment\blx@defformat@ii
+ #1}
+
+\def\blx@defformat@ii{%
+ \expandafter\forcsvlist
+ \expandafter\blx@defformat@iii
+ \expandafter{\blx@defformat@b}}
+
+\def\blx@defformat@iii#1{%
+ \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d}
+
+\def\blx@defplainformat{%
+ \long\def\blx@defformat@d##1}
+
+\def\blx@defnameformat{%
+ \long\def\blx@defformat@d##1}
+
+\def\blx@resetformat#1#2{%
+ \let\blx@saved@do\do
+ \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}%
+ \blx@safe@actives
+ \abx@doentrytypes
+ \blx@rest@actives
+ \let\do\blx@saved@do}
+
+\def\blx@resetformat@i#1#2#3{%
+ \ifcsdef{abx@#1@#3@#2}
+ {\csundef{abx@#1@#3@#2}}
+ {}}
+
+% {<name>}{<name>}
+\def\blx@letformat#1#2{%
+ \blx@safe@actives
+ \afterassignment\blx@rest@actives
+ \csletcs{#1}{#2}}
+
+% [aliastype]{aliasname}[formattype]{formatname}
+\def\blx@defalias#1{%
+ \@ifnextchar[%]
+ {\blx@defalias@i{#1}}
+ {\blx@defalias@i{#1}[*]}}
+\def\blx@defalias@i#1[#2]#3{%
+ \@ifnextchar[%]
+ {\blx@defalias@ii{#1}{#2}{#3}}
+ {\blx@defalias@ii{#1}{#2}{#3}[*]}}
+\def\blx@defalias@ii#1#2#3[#4]#5{%
+ \blx@safe@actives
+ \afterassignment\blx@rest@actives
+ \csedef{abx@#1@#2@#3}{%
+ \expandonce{\csname abx@#1@#4@#5\endcsname}}}
+
+
+
+% {<macro>}{<class>}{<name>}{<field>}
+\def\blx@getformat#1#2#3#4{%
+ \blx@safe@actives
+ \afterassignment\blx@rest@actives
+ \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3}
+ {\ifcsundef{abx@#2@*@#3}
+ {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4}
+ {\ifcsundef{abx@#2@*@#4}
+ {\letcs#1{abx@#2@*@default}}
+ {\letcs#1{abx@#2@*@#4}}}
+ {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}}
+ {\letcs#1{abx@#2@*@#3}}}
+ {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}}
+
+% [<entrytype>]{<name>}
+\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}}
+\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}}
+\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}}
+
+\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}}
+\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}}
+\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}}
+
+% [<entrytype>]{<name>}{<true>}{<false>}
+\newrobustcmd*{\iffieldformatundef}[2][*]{\ifcsundef{abx@ffd@#1@#2}}
+\newrobustcmd*{\iflistformatundef}[2][*]{\ifcsundef{abx@lfd@#1@#2}}
+\newrobustcmd*{\ifnameformatundef}[2][*]{\ifcsundef{abx@nfd@#1@#2}}
+
+% [<entrytype>]{<alias>}[<entrytype>]{<name>}
+\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}}
+\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}}
+
+\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}}
+\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}}
+
+\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}}
+\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}}
+
+% [<format>]{<text>}
+\newrobustcmd{\blx@imc@printtext}[2][]{%
+ \ifblank{#2}
+ {\blx@nounit}
+ {\ifblank{#1}
+ {\let\blx@theformat\@firstofone}
+ {\blx@getformat\blx@theformat{ffd}{#1}{}}%
+ \ifdefvoid\blx@theformat
+ {\blx@nounit}
+ {\blx@begunit
+ \blx@theformat{#2}%
+ \blx@endunit}}}
+
+% [<format>]{<field>}
+\newrobustcmd*{\blx@imc@printfield}[2][]{%
+ \blx@imc@iffieldundef{#2}
+ {\blx@nounit}
+ {\blx@getformat\blx@theformat{ffd}{#1}{#2}%
+ \ifdefvoid\blx@theformat
+ {\blx@nounit}
+ {\blx@begunit
+ \edef\currentfield{#2}%
+ \expandafter\expandafter
+ \expandafter\blx@theformat
+ \expandafter\expandafter
+ \expandafter{\csname abx@field@#2\endcsname}%
+ \blx@endunit}}}
+
+% [<format>]{<field>}
+\newcommand*{\blx@imc@indexfield}[2][]{%
+ \blx@imc@iffieldundef{#2}
+ {}
+ {\blx@getformat\blx@theformat{fid}{#1}{#2}%
+ \ifdefvoid\blx@theformat
+ {}
+ {\begingroup
+ \edef\currentfield{#2}%
+ \letcs\blx@tempa{abx@field@#2}%
+ \expandafter\blx@theformat\expandafter{\blx@tempa}%
+ \endgroup}}}
+
+% [<format>]{<file>}
+\newrobustcmd*{\blx@imc@printfile}[2][]{%
+ \iftoggle{blx@loadfiles}
+ {\IfFileExists{#2}
+ {\listxadd\blx@list@req@edit{#2}%
+ \blx@imc@printtext[#1]{\input{#2}\unspace}}
+ {\blx@nounit}}
+ {\blx@nounit}}
+
+% {<macro>}[<format>][<start>-<stop>]
+% => <macro>{<format>}{<start>}{<stop>}
+\def\blx@listargs#1{%
+ \@ifnextchar[%]
+ {\blx@listargs@i{#1}}
+ {#1{}{}{}}}
+
+\def\blx@listargs@i#1[#2]{%
+ \@ifnextchar[%]
+ {\blx@listargs@ii{#1}{#2}}
+ {#1{#2}{}{}}}
+
+\def\blx@listargs@ii#1#2[#3]{%
+ \blx@listargs@iii{#1}{#2}#3&}
+
+\def\blx@listargs@iii#1#2#3-#4&{%
+ #1{#2}{#3}{#4}}
+
+% [<format>][<start>-<stop>]{<namelist>}
+\protected\def\blx@imc@printnames{%
+ \blx@listargs\blx@printnames}
+
+% {<format>}{<start>}{<stop>}{<namelist>}
+\def\blx@printnames#1#2#3#4{%
+ \blx@imc@ifnameundef{#4}
+ {\blx@nounit}
+ {\blx@getformat\blx@theformat{nfd}{#1}{#4}%
+ \ifdefvoid\blx@theformat
+ {\blx@nounit}
+ {\blx@begunit
+ \blx@namesetup{#2}{#3}{#4}%
+ \expandafter\blx@nameparser\blx@thedata{}&%
+ \blx@endunit}}}
+
+\def\blx@namesetup#1#2#3{%
+ \def\currentname{#3}%
+ \c@listcount\@ne
+ \c@listtotal\csname c@#3\endcsname
+ \blx@namesetup@i{#3}%
+ \ifblank{#1}
+ {\c@liststart\@ne}
+ {\ifnum#1<\@ne
+ \c@liststart\@ne
+ \else
+ \c@liststart#1\relax
+ \fi}%
+ \ifblank{#2}
+ {\c@liststop\c@listtotal
+ \ifnum\c@liststop>\c@maxnames
+ \c@liststop\c@minnames
+ \ifnum\c@uniquelist>\c@liststop
+ \c@liststop\c@uniquelist
+ \fi
+ \fi}
+ {\ifnum#2>\c@listtotal
+ \c@liststop\c@listtotal
+ \else
+ \ifnum#2<\@ne
+ \c@liststop\@ne
+ \else
+ \c@liststop#2\relax
+ \fi
+ \fi}%
+ \blx@namecodes}
+
+\def\blx@namesetup@i#1{%
+ \expandafter\expandafter
+ \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname}
+
+\def\blx@namesetup@ii#1#2{%
+ \c@uniquelist\z@
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@opt@namelist}{#1}}%
+ \def\blx@thedata{#2}}
+
+% Per-namelist options
+\define@key{blx@opt@namelist}{uniquelist}{\c@uniquelist#1\relax}
+\define@key{blx@opt@namelist}{useprefix}{\settoggle{blx@useprefix}{#1}}
+\define@key{blx@opt@namelist}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}}
+
+% Per-name options
+\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax}
+\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}}
+\define@key{blx@opt@name}{useprefix}{\settoggle{blx@useprefix}{#1}}
+\define@key{blx@opt@name}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}}
+
+\newrobustcmd*{\bibinitperiod}{\adddot}
+\newrobustcmd*{\bibinitdelim}{\addnbspace}
+\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}}
+\newrobustcmd*{\bibnamedelima}{\addhighpenspace}
+\newrobustcmd*{\bibnamedelimb}{\addlowpenspace}
+\newrobustcmd*{\bibnamedelimc}{\addhighpenspace}
+\newrobustcmd*{\bibnamedelimd}{\addlowpenspace}
+\newrobustcmd*{\bibnamedelimi}{\addnbspace}
+
+% [<format>][<start>-<stop>]{<namelist>}
+\protected\def\blx@imc@indexnames{%
+ \blx@listargs\blx@indexnames}
+
+% {<format>}{<start>}{<stop>}{<namelist>}
+\def\blx@indexnames#1#2#3#4{%
+ \blx@imc@ifnameundef{#4}
+ {}
+ {\blx@getformat\blx@theformat{nid}{#1}{#4}%
+ \ifdefvoid\blx@theformat
+ {}
+ {\begingroup
+ \blx@namesetup{#2}{#3}{#4}%
+ \blx@indexnamesetup
+ \expandafter\blx@nameparser\blx@thedata{}&%
+ \endgroup}}}
+
+\def\blx@indexnamesetup{%
+ \let\bibinitperiod\bibindexinitperiod
+ \let\bibinitdelim\bibindexinitdelim
+ \let\bibinithyphendelim\bibindexinithyphendelim
+ \let\bibnamedelima\bibindexnamedelima
+ \let\bibnamedelimb\bibindexnamedelimb
+ \let\bibnamedelimc\bibindexnamedelimc
+ \let\bibnamedelimd\bibindexnamedelimd
+ \let\bibnamedelimi\bibindexnamedelimi}
+
+% {<name1>}{<name2>}{...}
+\long\def\blx@nameparser#1{%
+ \ifblank{#1}
+ {\blx@namebreak}
+ {\ifnum\c@listcount<\c@liststart
+ \else
+ \blx@nameparser@i#1%
+ \fi
+ \advance\c@listcount\@ne
+ \ifnum\c@listcount>\c@liststop
+ \expandafter\blx@namebreak
+ \fi
+ \blx@nameparser}}
+
+% {name opts}{nameparts}
+\long\def\blx@nameparser@i#1#2{%
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@opt@name}{#1}}%
+ % reset all the nameparts to empty between names
+ \def\do##1{%
+ \cslet{namepart##1}\@empty
+ \cslet{namepart##1i}\@empty}%
+ \expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}%
+ \setkeys{blx@opt@namepart}{#2}% Extract nameparts information
+ % Still pass the nameparts forward for backwards compat
+ % When \nameparts is finally removed, remove the "{2}" and remove the
+ % arg to \blx@defformat@d in def of \blx@defnameformat
+ \blx@theformat{#2}}
+
+\long\def\blx@namebreak#1&{}
+
+% [<format>][<start>-<stop>]{<plainlist>}
+\protected\def\blx@imc@printlist{%
+ \blx@listargs\blx@printlist}
+
+% {<format>}{<start>}{<stop>}{<plainlist>}
+\def\blx@printlist#1#2#3#4{%
+ \blx@imc@iflistundef{#4}
+ {\blx@nounit}
+ {\blx@getformat\blx@theformat{lfd}{#1}{#4}%
+ \ifdefvoid\blx@theformat
+ {\blx@nounit}
+ {\blx@begunit
+ \blx@listsetup{#2}{#3}{#4}%
+ \expandafter\blx@listparser\blx@thedata{}&%
+ \blx@endunit}}}
+
+\def\blx@listsetup#1#2#3{%
+ \def\currentlist{#3}%
+ \c@listcount\@ne
+ \expandafter\c@listtotal\csname c@#3\endcsname
+ \letcs\blx@thedata{abx@list@#3}%
+ \ifblank{#1}
+ {\c@liststart\@ne}
+ {\ifnum#1<\@ne
+ \c@liststart\@ne
+ \else
+ \c@liststart#1\relax
+ \fi}%
+ \ifblank{#2}
+ {\c@liststop\c@listtotal
+ \ifnum\c@listtotal>\c@maxitems
+ \c@liststop\c@minitems
+ \fi}
+ {\ifnum#2>\c@listtotal
+ \c@liststop\c@listtotal
+ \else
+ \ifnum#2<\@ne
+ \c@liststop\@ne
+ \else
+ \c@liststop#2\relax
+ \fi
+ \fi}}
+
+% [<format>][<start>-<stop>]{<plainlist>}
+\protected\def\blx@imc@indexlist{%
+ \blx@listargs\blx@indexlist}
+
+% {<format>}{<start>}{<stop>}{<plainlist>}
+\def\blx@indexlist#1#2#3#4{%
+ \blx@imc@iflistundef{#4}
+ {}
+ {\blx@getformat\blx@theformat{lid}{#1}{#4}%
+ \ifdefvoid\blx@theformat
+ {}
+ {\begingroup
+ \blx@listsetup{#2}{#3}{#4}%
+ \expandafter\blx@listparser\blx@thedata{}&%
+ \endgroup}}}
+
+% {<item1>}{<item2>}{...}
+\long\def\blx@listparser#1{%
+ \ifblank{#1}
+ {\blx@listbreak}
+ {\ifnum\c@listcount<\c@liststart
+ \else
+ \blx@theformat{#1}%
+ \fi
+ \advance\c@listcount\@ne
+ \ifnum\c@listcount>\c@liststop
+ \expandafter\blx@listbreak
+ \fi
+ \blx@listparser}}
+
+\long\def\blx@listbreak#1&{}
+
+% <*>{<key>}{<code>}
+\protected\def\blx@imc@entrydata{%
+ \@ifstar
+ {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}}
+ {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}}
+
+\long\def\blx@imc@entrydata@i#1#2#3{%
+ \blx@getrefcontext{#2}%
+ \blx@ifdata{#2}
+ {\begingroup
+ #1%
+ \blx@resetdata
+ \blx@getdata{#2}%
+ \blx@entrysetcount
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \addtocounter{instcount}\@ne
+ \blx@execute
+ \blx@beglangbib#3\blx@endlangbib
+ \endgroup}
+ {}}
+
+\protected\def\blx@imc@entryset#1#2{%
+ \blx@imc@iffieldundef{entrykey}
+ {}
+ {\begingroup
+ \long\def\blx@entryset@precode{#1}%
+ \long\def\blx@entryset@postcode{#2}%
+ \let\finentry\blx@finentry@inset
+ \let\do\blx@entryset
+ \blx@imc@docsvfield{entryset}%
+ \endgroup}}
+
+\def\blx@entryset#1{%
+ \blx@ifdata{#1}
+ {\begingroup
+ \blx@imc@clearlist{pageref}%
+ \blx@getdata{#1}%
+ \blx@setoptions@type\abx@field@entrytype
+ \def\abx@field@entrysetcount{1}%
+ \blx@entryset@precode
+ \blx@driver{\blx@imc@thefield{entrytype}}%
+ \blx@entryset@postcode
+ \endgroup}
+ {}%
+ \let\do\blx@entryset@i}
+
+\def\blx@entryset@i#1{%
+ \blx@ifdata{#1}
+ {\begingroup
+ \blx@resetdata
+ \blx@getdata{#1}%
+ \blx@entrysetcount
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \addtocounter{instcount}\@ne
+ \blx@execute
+ \blx@beglangbib
+ \blx@begunit
+ \blx@entryset@precode
+ \blx@driver{\blx@imc@thefield{entrytype}}
+ \blx@entryset@postcode
+ \blx@endunit
+ \blx@endlangbib
+ \endgroup}
+ {\blx@nounit}}
+
+\blx@regimcs{%
+ \printtext \printfield \printlist \printnames \printfile
+ \indexfield \indexlist \indexnames \entrydata \entryset}
+
+%% Localization
+
+% [<wrapper>]{<string>}
+\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{%
+ \blx@bibstring{#1}{\abx@str}{#2}}
+
+\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{%
+ \blx@bibstring{#1}{abx@lstr}{#2}}
+
+\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{%
+ \blx@bibstring{#1}{abx@sstr}{#2}}
+
+\protected\def\blx@bibstring#1#2#3{%
+ \blx@begunit
+ \blx@hyphenreset
+ \let\bibstring\blx@imc@bibxstring
+ \let\biblstring\blx@imc@bibxlstring
+ \let\bibsstring\blx@imc@bibxsstring
+ \lowercase{\edef\blx@tempa{#3}}%
+ \ifcsundef{#2@\blx@tempa}
+ {\blx@warn@nostring\blx@tempa
+ \blx@endnounit}
+ {\blx@imc@ifcapital
+ {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}}
+ {#1{\csuse{#2@\blx@tempa}}}%
+ \blx@endunit}}
+
+% [<wrapper>]{<string>}
+\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{%
+ \blx@bibcpstring{#1}{\abx@str}{#2}}
+
+\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{%
+ \blx@bibcpstring{#1}{abx@lstr}{#2}}
+
+\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{%
+ \blx@bibcpstring{#1}{abx@sstr}{#2}}
+
+\protected\def\blx@bibcpstring#1#2#3{%
+ \blx@begunit
+ \blx@hyphenreset
+ \let\bibstring\blx@imc@bibxstring
+ \let\biblstring\blx@imc@bibxlstring
+ \let\bibsstring\blx@imc@bibxsstring
+ \lowercase{\edef\blx@tempa{#3}}%
+ \ifcsundef{#2@\blx@tempa}
+ {\blx@warn@nostring\blx@tempa
+ \blx@endnounit}
+ {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}%
+ \blx@endunit}}
+
+% [<wrapper>]{<string>}
+\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{%
+ \blx@biblcstring{#1}{\abx@str}{#2}}
+
+\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{%
+ \blx@biblcstring{#1}{abx@lstr}{#2}}
+
+\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{%
+ \blx@biblcstring{#1}{abx@sstr}{#2}}
+
+\protected\def\blx@biblcstring#1#2#3{%
+ \blx@begunit
+ \blx@hyphenreset
+ \let\bibstring\blx@imc@bibxstring
+ \let\biblstring\blx@imc@bibxlstring
+ \let\bibsstring\blx@imc@bibxsstring
+ \lowercase{\edef\blx@tempa{#3}}%
+ \ifcsundef{#2@\blx@tempa}
+ {\blx@warn@nostring\blx@tempa
+ \blx@endnounit}
+ {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}%
+ \blx@endunit}}
+
+% [<wrapper>]{<string>}
+\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{%
+ \blx@bibucstring{#1}{\abx@str}{#2}}
+
+\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{%
+ \blx@bibucstring{#1}{abx@lstr}{#2}}
+
+\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{%
+ \blx@bibucstring{#1}{abx@sstr}{#2}}
+
+\protected\def\blx@bibucstring#1#2#3{%
+ \blx@begunit
+ \blx@hyphenreset
+ \let\bibstring\blx@imc@bibxstring
+ \let\biblstring\blx@imc@bibxlstring
+ \let\bibsstring\blx@imc@bibxsstring
+ \lowercase{\edef\blx@tempa{#3}}%
+ \ifcsundef{#2@\blx@tempa}
+ {\blx@warn@nostring\blx@tempa
+ \blx@endnounit}
+ {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}%
+ \blx@endunit}}
+
+% {<string>}
+\def\blx@imc@bibxstring#1{%
+ \blx@bibxstring{\abx@str}{#1}}
+
+\def\blx@imc@bibxlstring#1{%
+ \blx@bibxstring{abx@lstr}{#1}}
+
+\def\blx@imc@bibxsstring#1{%
+ \blx@bibxstring{abx@sstr}{#1}}
+
+\def\blx@bibxstring#1#2{%
+ \ifcsundef{#1@#2}
+ {\protect\blx@warn@nostring{#2}}
+ {\csuse{#1@#2}}}
+
+% {<string>}{<true>}{<false>}
+\def\blx@imc@ifbibstring#1{%
+ \ifcsundef{\abx@str @\detokenize{#1}}
+ {\@secondoftwo}
+ {\@firstoftwo}}
+
+\def\blx@imc@ifbibxstring#1{%
+ \blx@xsanitizeafter\ifcsundef{\abx@str @#1}
+ {\@secondoftwo}
+ {\@firstoftwo}}
+
+% {<field>}{<true>}{<false>}
+\def\blx@imc@iffieldbibstring#1{%
+ \blx@imc@iffieldundef{#1}
+ {\@secondoftwo}
+ {\ifcsundef{\abx@str @\detokenize\expandafter
+ \expandafter\expandafter{%
+ \csname abx@field@#1\endcsname}}
+ {\@secondoftwo}
+ {\@firstoftwo}}}
+
+\blx@regimcs{%
+ \bibstring \biblstring \bibsstring
+ \bibxstring \bibxlstring \bibxsstring
+ \bibcpstring \bibcplstring \bibcpsstring
+ \biblcstring \biblclstring \biblcsstring
+ \bibucstring \bibuclstring \bibucsstring
+ \ifbibstring \ifbibxstring \iffieldbibstring}
+
+\let\blx@hook@uc\relax
+\let\blx@hook@lc\relax
+
+\AtEndPreamble{%
+ \toggletrue{blx@tempa}%
+ \toggletrue{blx@tempb}%
+ \expandafter\patchcmd\csname MakeUppercase \endcsname
+ {\protected@edef}
+ {\blx@hook@uc\protected@edef}
+ {\togglefalse{blx@tempa}}
+ {}%
+ \expandafter\patchcmd\csname MakeLowercase \endcsname
+ {\protected@edef}
+ {\blx@hook@lc\protected@edef}
+ {\togglefalse{blx@tempb}}
+ {}%
+ \@ifpackageloaded{textcase}
+ {\expandafter\patchcmd\csname MakeUppercase \endcsname
+ {\def\i}
+ {\blx@hook@uc\def\i}
+ {\togglefalse{blx@tempa}}
+ {}%
+ \expandafter\patchcmd\csname MakeLowercase \endcsname
+ {\@uclcnotmath{}}
+ {\@uclcnotmath{\blx@hook@lc}}
+ {\togglefalse{blx@tempb}}
+ {}%
+ \expandafter\patchcmd\csname MakeTextUppercase \endcsname
+ {\def\i}
+ {\blx@hook@uc\def\i}
+ {}
+ {}%
+ \expandafter\patchcmd\csname MakeTextLowercase \endcsname
+ {\@uclcnotmath{}}
+ {\@uclcnotmath{\blx@hook@lc}}
+ {}
+ {}}
+ {}%
+ \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}%
+ \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}%
+}
+
+\appto\blx@blxinit{%
+ \def\blx@hook@uc{%
+ \def\bibstring{\blx@imc@bibucstring}%
+ \def\biblstring{\blx@imc@bibuclstring}%
+ \def\bibsstring{\blx@imc@bibucsstring}%
+ \def\biblcstring{\blx@imc@bibucstring}%
+ \def\biblclstring{\blx@imc@bibuclstring}%
+ \def\biblcsstring{\blx@imc@bibucsstring}%
+ \def\bibcpstring{\blx@imc@bibucstring}%
+ \def\bibcplstring{\blx@imc@bibuclstring}%
+ \def\bibcpsstring{\blx@imc@bibucsstring}}%
+ \def\blx@hook@lc{%
+ \def\bibstring{\blx@imc@biblcstring}%
+ \def\biblstring{\blx@imc@biblclstring}%
+ \def\bibsstring{\blx@imc@biblcsstring}%
+ \def\bibucstring{\blx@imc@biblcstring}%
+ \def\bibuclstring{\blx@imc@biblclstring}%
+ \def\bibucsstring{\blx@imc@biblcsstring}%
+ \def\bibcpstring{\blx@imc@biblcstring}%
+ \def\bibcplstring{\blx@imc@biblclstring}%
+ \def\bibcpsstring{\blx@imc@biblcsstring}}}
+
+\def\abx@dostrings{%
+ \do{bibliography}%
+ \do{references}%
+ \do{shorthands}%
+ \do{editor}%
+ \do{editors}%
+ \do{compiler}%
+ \do{compilers}%
+ \do{redactor}%
+ \do{redactors}%
+ \do{reviser}%
+ \do{revisers}%
+ \do{founder}%
+ \do{founders}%
+ \do{continuator}%
+ \do{continuators}%
+ \do{collaborator}%
+ \do{collaborators}%
+ \do{translator}%
+ \do{translators}%
+ \do{commentator}%
+ \do{commentators}%
+ \do{annotator}%
+ \do{annotators}%
+ \do{commentary}%
+ \do{annotations}%
+ \do{introduction}%
+ \do{foreword}%
+ \do{afterword}%
+ \do{editortr}%
+ \do{editorstr}%
+ \do{editorco}%
+ \do{editorsco}%
+ \do{editoran}%
+ \do{editorsan}%
+ \do{editorin}%
+ \do{editorsin}%
+ \do{editorfo}%
+ \do{editorsfo}%
+ \do{editoraf}%
+ \do{editorsaf}%
+ \do{editortrco}%
+ \do{editorstrco}%
+ \do{editortran}%
+ \do{editorstran}%
+ \do{editortrin}%
+ \do{editorstrin}%
+ \do{editortrfo}%
+ \do{editorstrfo}%
+ \do{editortraf}%
+ \do{editorstraf}%
+ \do{editorcoin}%
+ \do{editorscoin}%
+ \do{editorcofo}%
+ \do{editorscofo}%
+ \do{editorcoaf}%
+ \do{editorscoaf}%
+ \do{editoranin}%
+ \do{editorsanin}%
+ \do{editoranfo}%
+ \do{editorsanfo}%
+ \do{editoranaf}%
+ \do{editorsanaf}%
+ \do{editortrcoin}%
+ \do{editorstrcoin}%
+ \do{editortrcofo}%
+ \do{editorstrcofo}%
+ \do{editortrcoaf}%
+ \do{editorstrcoaf}%
+ \do{editortranin}%
+ \do{editorstranin}%
+ \do{editortranfo}%
+ \do{editorstranfo}%
+ \do{editortranaf}%
+ \do{editorstranaf}%
+ \do{translatorco}%
+ \do{translatorsco}%
+ \do{translatoran}%
+ \do{translatorsan}%
+ \do{translatorin}%
+ \do{translatorsin}%
+ \do{translatorfo}%
+ \do{translatorsfo}%
+ \do{translatoraf}%
+ \do{translatorsaf}%
+ \do{translatorcoin}%
+ \do{translatorscoin}%
+ \do{translatorcofo}%
+ \do{translatorscofo}%
+ \do{translatorcoaf}%
+ \do{translatorscoaf}%
+ \do{translatoranin}%
+ \do{translatorsanin}%
+ \do{translatoranfo}%
+ \do{translatorsanfo}%
+ \do{translatoranaf}%
+ \do{translatorsanaf}%
+ \do{byauthor}%
+ \do{byeditor}%
+ \do{bycompiler}%
+ \do{byredactor}%
+ \do{byreviser}%
+ \do{byreviewer}%
+ \do{byfounder}%
+ \do{bycontinuator}%
+ \do{bycollaborator}%
+ \do{bytranslator}%
+ \do{bycommentator}%
+ \do{byannotator}%
+ \do{withcommentator}%
+ \do{withannotator}%
+ \do{withintroduction}%
+ \do{withforeword}%
+ \do{withafterword}%
+ \do{byeditortr}%
+ \do{byeditorco}%
+ \do{byeditoran}%
+ \do{byeditorin}%
+ \do{byeditorfo}%
+ \do{byeditoraf}%
+ \do{byeditortrco}%
+ \do{byeditortran}%
+ \do{byeditortrin}%
+ \do{byeditortrfo}%
+ \do{byeditortraf}%
+ \do{byeditorcoin}%
+ \do{byeditorcofo}%
+ \do{byeditorcoaf}%
+ \do{byeditoranin}%
+ \do{byeditoranfo}%
+ \do{byeditoranaf}%
+ \do{byeditortrcoin}%
+ \do{byeditortrcofo}%
+ \do{byeditortrcoaf}%
+ \do{byeditortranin}%
+ \do{byeditortranfo}%
+ \do{byeditortranaf}%
+ \do{bytranslatorco}%
+ \do{bytranslatoran}%
+ \do{bytranslatorin}%
+ \do{bytranslatorfo}%
+ \do{bytranslatoraf}%
+ \do{bytranslatorcoin}%
+ \do{bytranslatorcofo}%
+ \do{bytranslatorcoaf}%
+ \do{bytranslatoranin}%
+ \do{bytranslatoranfo}%
+ \do{bytranslatoranaf}%
+ \do{and}%
+ \do{andothers}%
+ \do{andmore}%
+ \do{volume}%
+ \do{volumes}%
+ \do{involumes}%
+ \do{part}%
+ \do{jourvol}%
+ \do{jourser}%
+ \do{newseries}%
+ \do{oldseries}%
+ \do{edition}%
+ \do{reprint}%
+ \do{reprintof}%
+ \do{reprintas}%
+ \do{reprintfrom}%
+ \do{reviewof}%
+ \do{translationof}%
+ \do{translationas}%
+ \do{translationfrom}%
+ \do{origpubas}%
+ \do{origpubin}%
+ \do{astitle}%
+ \do{bypublisher}%
+ \do{page}%
+ \do{pages}%
+ \do{column}%
+ \do{columns}%
+ \do{line}%
+ \do{lines}%
+ \do{nodate}%
+ \do{verse}%
+ \do{verses}%
+ \do{section}%
+ \do{sections}%
+ \do{paragraph}%
+ \do{paragraphs}%
+ \do{in}%
+ \do{inseries}%
+ \do{ofseries}%
+ \do{book}%
+ \do{issue}%
+ \do{number}%
+ \do{chapter}%
+ \do{mathesis}%
+ \do{phdthesis}%
+ \do{candthesis}%
+ \do{resreport}%
+ \do{techreport}%
+ \do{software}%
+ \do{datacd}%
+ \do{audiocd}%
+ \do{version}%
+ \do{url}%
+ \do{urlfrom}%
+ \do{urlseen}%
+ \do{file}%
+ \do{inpreparation}%
+ \do{submitted}%
+ \do{inpress}%
+ \do{prepublished}%
+ \do{forthcoming}%
+ \do{library}%
+ \do{abstract}%
+ \do{annotation}%
+ \do{citedas}%
+ \do{seenote}%
+ \do{quotedin}%
+ \do{opcit}%
+ \do{loccit}%
+ \do{ibidem}%
+ \do{idem}%
+ \do{idemsf}%
+ \do{idemsm}%
+ \do{idemsn}%
+ \do{idempf}%
+ \do{idempm}%
+ \do{idempn}%
+ \do{idempp}%
+ \do{confer}%
+ \do{sequens}%
+ \do{sequentes}%
+ \do{passim}%
+ \do{see}%
+ \do{seealso}%
+ \do{backrefpage}%
+ \do{backrefpages}%
+ \do{thiscite}%
+ \do{january}%
+ \do{february}%
+ \do{march}%
+ \do{april}%
+ \do{may}%
+ \do{june}%
+ \do{july}%
+ \do{august}%
+ \do{september}%
+ \do{october}%
+ \do{november}%
+ \do{december}%
+ \do{langamerican}%
+ \do{langbrazilian}%
+ \do{langcatalan}%
+ \do{langcroatian}%
+ \do{langczech}%
+ \do{langdanish}%
+ \do{langdutch}%
+ \do{langenglish}%
+ \do{langfinnish}%
+ \do{langfrench}%
+ \do{langgerman}%
+ \do{langgreek}%
+ \do{langitalian}%
+ \do{langjapanese}%
+ \do{langlatin}%
+ \do{langnorwegian}%
+ \do{langpolish}%
+ \do{langportuguese}%
+ \do{langrussian}%
+ \do{langslovak}%
+ \do{langslovene}%
+ \do{langspanish}%
+ \do{langswedish}%
+ \do{fromamerican}%
+ \do{frombrazilian}%
+ \do{fromcatalan}%
+ \do{fromcroatian}%
+ \do{fromczech}%
+ \do{fromdanish}%
+ \do{fromdutch}%
+ \do{fromenglish}%
+ \do{fromfinnish}%
+ \do{fromfrench}%
+ \do{fromgerman}%
+ \do{fromgreek}%
+ \do{fromitalian}%
+ \do{fromjapanese}%
+ \do{fromlatin}%
+ \do{fromnorwegian}%
+ \do{frompolish}%
+ \do{fromportuguese}%
+ \do{fromrussian}%
+ \do{fromslovak}%
+ \do{fromslovene}%
+ \do{fromspanish}%
+ \do{fromswedish}%
+ \do{countryde}%
+ \do{countryep}%
+ \do{countryeu}%
+ \do{countryfr}%
+ \do{countryuk}%
+ \do{countryus}%
+ \do{patent}%
+ \do{patentde}%
+ \do{patenteu}%
+ \do{patentfr}%
+ \do{patentuk}%
+ \do{patentus}%
+ \do{patreq}%
+ \do{patreqde}%
+ \do{patreqeu}%
+ \do{patreqfr}%
+ \do{patrequk}%
+ \do{patrequs}%
+}
+
+\newrobustcmd*{\NewBibliographyString}[1]{%
+ \forcsvlist\blx@newstring{#1}}
+
+\def\blx@newstring#1{%
+ \ifcsundef{KV@blx@lbx@#1}
+ {\gappto\abx@dostrings{\do{#1}}%
+ \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}}
+ {}}
+
+% in *.cbx/bbx/tex: <key> = {<string>},
+% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}},
+\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}}
+\abx@dostrings
+
+% in *.cbx/bbx/tex: (implicit)
+% in *.lbx: inherit = {<language>},
+\define@key{blx@lbx}{inherit}{%
+ \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}%
+ \csuse{abx@strings@#1}}
+
+\def\blx@cfg@defstring#1#2{%
+ \csdef{abx@lstr@#1}{#2}%
+ \csdef{abx@sstr@#1}{#2}}
+
+\def\blx@lbx@defstring#1#2{%
+ \blx@lbx@defstring@i{#1}#2}
+\def\blx@lbx@defstring@i#1#2#3{%
+ \csdef{abx@lstr@#1}{#2}%
+ \csdef{abx@sstr@#1}{#3}}
+
+% {<language>}
+\def\blx@lbxcheck#1{%
+ \ifcsdef{blx@lng@#1}
+ {\expandafter\expandafter\expandafter\IfFileExists
+ \expandafter\expandafter\expandafter{%
+ \csname blx@lng@#1\endcsname.lbx}
+ {}
+ {\blx@err@nolang{#1}}}
+ {\IfFileExists{#1.lbx}
+ {}
+ {\blx@err@nolang{#1}}}}
+
+% {<language>}{<definitions>}
+\newrobustcmd*{\DefineBibliographyExtras}[2]{%
+ \blx@lbxcheck{#1}%
+ \csgappto{blx@hook@extras@#1}{%
+ \blx@defbibextras{#1}{#2}}}
+\@onlypreamble\DefineBibliographyExtras
+
+\newrobustcmd*{\UndefineBibliographyExtras}[2]{%
+ \blx@lbxcheck{#1}%
+ \csgappto{blx@hook@noextras@#1}{%
+ \blx@undefbibextras{#1}{#2}}}
+\@onlypreamble\UndefineBibliographyExtras
+
+\def\blx@defbibextras#1{\csgappto{abx@extras@#1}}
+\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}}
+
+% {<language>}{<language>}
+\def\blx@letbibextras#1#2{%
+ \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}%
+ \global\csletcs{abx@extras@#1}{abx@extras@#2}
+ \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}%
+
+% {<language>}{<strings>}
+\newrobustcmd*{\DefineBibliographyStrings}[2]{%
+ \blx@lbxcheck{#1}%
+ \csgappto{blx@hook@strings@#1}{%
+ \begingroup
+ \let\blx@defstring\blx@cfg@defstring
+ \blx@defbibstrings{#1}{#2}%
+ \endgroup}}
+\@onlypreamble\DefineBibliographyStrings
+
+\def\blx@defbibstrings#1#2{%
+ \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}%
+ \abx@dostrings
+ \csuse{abx@strings@#1}%
+ \setkeys{blx@lbx}{#2}%
+ \let\do\blx@defbibstrings@i
+ \csxdef{abx@strings@#1}{\abx@dostrings}%
+ \csgappto{abx@strings@#1}{%
+ \ifcsdef{\abx@str @bibliography}
+ {\letcs\bibname{\abx@str @bibliography}}
+ {\let\bibname\@empty}%
+ \ifcsdef{\abx@str @references}
+ {\letcs\refname{\abx@str @references}}
+ {\let\refname\@empty}%
+ \ifcsdef{\abx@str @shorthands}
+ {\letcs\biblistname{\abx@str @shorthands}}
+ {\let\biblistname\@empty}}}
+
+\def\blx@defbibstrings@i#1{%
+ \ifcsdef{abx@lstr@#1}
+ {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{%
+ \csexpandonce{abx@lstr@#1}}}
+ {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}%
+ \ifcsdef{abx@sstr@#1}
+ {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{%
+ \csexpandonce{abx@sstr@#1}}}
+ {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}}
+
+% {<language>}{<language>}
+\def\blx@letbibstrings#1#2{%
+ \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}%
+ \global\csletcs{abx@strings@#1}{abx@strings@#2}}%
+
+% {<language>}{<exceptions>}
+\newrobustcmd*{\DefineHyphenationExceptions}[2]{%
+ \ifcsundef{l@#1}
+ {\blx@warn@nohyph{#1}}
+ {}%
+ \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}}
+\@onlypreamble\DefineHyphenationExceptions
+
+\def\blx@hyphexcept#1#2{%
+ \ifcsundef{l@#1}
+ {\blx@warn@nohyph{#1}}
+ {\begingroup
+ \language\csname l@#1\endcsname\relax
+ \hyphenation{#2}%
+ \endgroup}}
+
+% {<language>}{<mapping>}
+\newrobustcmd*{\DeclareLanguageMapping}[2]{%
+ \csgdef{blx@lng@#1}{#2}}
+\@onlypreamble\DeclareLanguageMapping
+
+% {<language>}{<success>}{<failure>}
+\def\blx@lbxinput#1{%
+ \ifcsdef{blx@lng@#1}
+ {\expandafter\expandafter\expandafter\blx@lbxinput@i
+ \expandafter\expandafter\expandafter{%
+ \csname blx@lng@#1\endcsname}{#1}}
+ {\blx@lbxinput@ii{#1}{#1}{language '#1'}}}
+
+% {<mapping>}{<language>}
+\def\blx@lbxinput@i#1#2{%
+ \global\csundef{blx@lng@#2}%
+ \IfFileExists{#1.lbx}
+ {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}}
+ {\blx@warning@noline{%
+ File '#1.lbx' not found!\MessageBreak
+ Ignoring mapping '#2' -> '#1'}%
+ \blx@lbxinput{#2}}}
+
+% {<language>}{<lbxfile>}{<message>}
+\def\blx@lbxinput@ii#1#2#3{%
+ \begingroup
+ \setbox\@tempboxa=\hbox\bgroup
+ \aftergroup\endgroup
+ \blx@inputonce{#2.lbx}{#3}
+ {\global\cslet{abx@strings@#1}\@empty
+ \global\cslet{abx@extras@#1}\@empty
+ \global\cslet{abx@noextras@#1}\@empty
+ \blx@maplang{#1}{#1}%
+ \def\InheritBibliographyStrings{%
+ \blx@letbibstrings{#1}}%
+ \def\DeclareBibliographyStrings####1{%
+ \begingroup
+ \let\blx@defstring\blx@lbx@defstring
+ \blx@defbibstrings{#1}{####1}%
+ \endgroup}%
+ \def\InheritBibliographyExtras{\blx@letbibextras{#1}}%
+ \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}%
+ \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}%
+ \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}%
+ \begingroup
+ \blx@saneccodes
+ \makeatletter}
+ {\endgroup
+ \csuse{blx@hook@strings@#1}%
+ \csuse{blx@hook@strings@#2}%
+ \csuse{blx@hook@extras@#1}%
+ \csuse{blx@hook@extras@#2}%
+ \csuse{blx@hook@noextras@#1}%
+ \csuse{blx@hook@noextras@#2}%
+ \csuse{blx@hook@hyph@#1}%
+ \csuse{blx@hook@hyph@#2}}
+ {\aftergroup\@firstoftwo}
+ {\aftergroup\@secondoftwo}%
+ \egroup}
+
+% {<language>}
+\def\blx@langsetup#1{%
+ \blx@lbxinput{#1}
+ {\edef\blx@languagename{#1}}
+ {\blx@warning
+ {Language '#1' not supported.\MessageBreak
+ Using fallback language '\blx@languagename'}%
+ \blx@lbxinput{\blx@languagename}
+ {\blx@maplang{#1}{\blx@languagename}}
+ {\blx@err@nolang{\blx@languagename}}}}
+
+% auxiliary macros
+
+% {<field base name>}
+
+\newrobustcmd*{\mkbibrangeshort}{%
+ \mkbibrangefull{short}}
+
+\newrobustcmd*{\mkbibrangelong}{%
+ \mkbibrangefull{long}}
+
+\newrobustcmd*{\mkbibrangeterse}{%
+ \mkbibrangetrunc{short}}
+
+\newrobustcmd*{\mkbibrangecomp}{%
+ \mkbibrangetrunc{long}}
+
+\newrobustcmd*{\mkbibrangeshortextra}{%
+ \mkbibrangefullextra{short}}
+
+\newrobustcmd*{\mkbibrangelongextra}{%
+ \mkbibrangefullextra{long}}
+
+\newrobustcmd*{\mkbibrangeterseextra}{%
+ \mkbibrangetruncextra{short}}
+
+\newrobustcmd*{\mkbibrangecompextra}{%
+ \mkbibrangetruncextra{long}}
+
+% {<short|long>}{<basename>}
+
+\newrobustcmd*{\mkbibrangefull}[2]{%
+ \iffieldundef{#2year}
+ {}
+ {\printtext[#2date]{%
+ \csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+ \iffieldundef{#2endyear}
+ {}
+ {\iffieldequalstr{#2endyear}{}
+ {\mbox{\bibdatedash}}
+ {\bibdatedash
+ \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
+
+\newrobustcmd*{\mkbibrangetrunc}[2]{%
+ \iffieldundef{#2year}
+ {}
+ {\printtext[#2date]{%
+ \iffieldsequal{#2year}{#2endyear}
+ {\iffieldsequal{#2month}{#2endmonth}
+ {\csuse{mkbibdate#1}{}{}{#2day}}
+ {\csuse{mkbibdate#1}{}{#2month}{#2day}}}
+ {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}%
+ \iffieldundef{#2endyear}
+ {}
+ {\iffieldequalstr{#2endyear}{}
+ {\mbox{\bibdatedash}}
+ {\bibdatedash
+ \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
+
+\newrobustcmd*{\mkbibrangefullextra}[2]{%
+ \iffieldundef{#2year}
+ {}
+ {\printtext[#2date]{%
+ \printtext{%
+ \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}%
+ \iffieldundef{#2endyear}
+ {\printfield{extrayear}}
+ {\iffieldequalstr{#2endyear}{}
+ {\printfield{extrayear}%
+ \printtext{\mbox{\bibdatedash}}}
+ {\printtext{%
+ \bibdatedash
+ \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+ \printfield{extrayear}}}}}}}
+
+\newrobustcmd*{\mkbibrangetruncextra}[2]{%
+ \iffieldundef{#2year}
+ {}
+ {\printtext[#2date]{%
+ \printtext{%
+ \iffieldsequal{#2year}{#2endyear}
+ {\iffieldsequal{#2month}{#2endmonth}
+ {\csuse{mkbibdate#1}{}{}{#2day}}
+ {\csuse{mkbibdate#1}{}{#2month}{#2day}}}
+ {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}%
+ \iffieldundef{#2endyear}
+ {\printfield{extrayear}}
+ {\iffieldequalstr{#2endyear}{}
+ {\printfield{extrayear}%
+ \printtext{\mbox{\bibdatedash}}}
+ {\printtext{%
+ \bibdatedash
+ \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+ \printfield{extrayear}}}}}}}
+
+\newrobustcmd*{\mkbibrangeyear}[1]{%
+ \blx@imc@clearfield{#1month}%
+ \blx@imc@clearfield{#1day}%
+ \blx@imc@clearfield{#1endmonth}%
+ \blx@imc@clearfield{#1endday}%
+ \iffieldsequal{#1year}{#1endyear}
+ {\blx@imc@clearfield{#1endyear}}
+ {}%
+ \mkbibrangefull{short}{#1}}
+
+\newrobustcmd*{\mkbibrangeyearextra}[1]{%
+ \blx@imc@clearfield{#1month}%
+ \blx@imc@clearfield{#1day}%
+ \blx@imc@clearfield{#1endmonth}%
+ \blx@imc@clearfield{#1endday}%
+ \iffieldsequal{#1year}{#1endyear}
+ {\blx@imc@clearfield{#1endyear}}
+ {}%
+ \mkbibrangefullextra{short}{#1}}
+
+\expandafter\newrobustcmd
+\expandafter*\csname mkbibrangeiso8601\endcsname[1]{%
+ \iffieldundef{#1year}
+ {}
+ {\printtext[#1date]{%
+ \blx@isodate{#1year}{#1month}{#1day}%
+ \iffieldundef{#1endyear}
+ {}
+ {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}}
+
+\expandafter\newrobustcmd
+\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{%
+ \iffieldundef{#1year}
+ {}
+ {\printtext[#1date]{%
+ \blx@isodate[extrayear]{#1year}{#1month}{#1day}%
+ \iffieldundef{#1endyear}
+ {}
+ {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}}
+
+\newrobustcmd*{\blx@isodate}[4][]{%
+ \thefield{#2}\ifblank{#1}{}{\printfield{#1}}%
+ \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}%
+ \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}}
+
+\newrobustcmd*{\mkbibdatelong}[3]{}
+\newrobustcmd*{\mkbibdateshort}[3]{}
+\newrobustcmd*{\bibrangedash}{\textendash}
+\newrobustcmd*{\bibrangessep}{,\space}
+\newrobustcmd*{\bibdatedash}{\bibrangedash}
+\newrobustcmd*{\finalandcomma}{}
+\newrobustcmd*{\finalandsemicolon}{}
+\newrobustcmd*{\mkbibordinal}[1]{#1}
+\newrobustcmd*{\mkbibmascord}{\mkbibordinal}
+\newrobustcmd*{\mkbibfemord}{\mkbibordinal}
+\newrobustcmd*{\mkbibneutord}{\mkbibordinal}
+\newrobustcmd*{\mkbibmonth}[1]{%
+ \ifcase0#1\relax
+ \blx@warning@entry{Month out of range or not an integer}%
+ \or\abx@bibmonth{january}%
+ \or\abx@bibmonth{february}%
+ \or\abx@bibmonth{march}%
+ \or\abx@bibmonth{april}%
+ \or\abx@bibmonth{may}%
+ \or\abx@bibmonth{june}%
+ \or\abx@bibmonth{july}%
+ \or\abx@bibmonth{august}%
+ \or\abx@bibmonth{september}%
+ \or\abx@bibmonth{october}%
+ \or\abx@bibmonth{november}%
+ \or\abx@bibmonth{december}%
+ \else
+ \blx@warning@entry{Month out of range}#1%
+ \fi}
+
+\protected\def\blx@imc@printdatelabel{}
+\protected\def\blx@imc@printdateextralabel{}
+
+\let\blx@imc@mkdatezeros\@firstofone
+\protected\def\blx@imc@stripzeros#1{%
+ \begingroup
+ \setbox\@tempboxa=\hbox\bgroup
+ \aftergroup\endgroup
+ \abx@hook@xsanitize
+ \if0#1\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\@tempcnta#1\relax
+ \expandafter\egroup
+ \number\@tempcnta
+ \@tempcnta#1\relax}
+ {\egroup#1}}
+
+\blx@regimcs{\printdatelabel \printdateextralabel \printorigdate \stripzeros \mkdatezeros}
+
+% User macro for retrieving currrent language
+\def\currentlang{\blx@languagename}
+
+% {<language>}{<strings>}
+\def\blx@maplang#1#2{%
+ \csxappto{extras#1}{%
+ \noexpand\blx@resetpunct
+ \expandafter\noexpand\csname abx@extras@#2\endcsname
+ \expandafter\noexpand\csname abx@strings@#2\endcsname}%
+ \csxappto{noextras#1}{%
+ \noexpand\blx@resetpunct
+ \expandafter\noexpand\csname abx@noextras@#2\endcsname}}
+
+%% babel/polyglossia interface
+\def\blx@beglang{\blx@clearlang\begingroup}
+\def\blx@endlang{\endgroup}
+\let\blx@beglangbib\blx@beglang
+\let\blx@endlangbib\blx@endlang
+\let\blx@beglangcite\blx@beglang
+\let\blx@endlangcite\blx@endlang
+\let\blx@hook@endlang\@empty
+\let\blx@hook@initlang\@empty
+\let\blx@imc@mainlang\@empty
+\def\blx@hyphenreset{%
+ \ifcsundef{l@\blx@languagename}
+ {}
+ {\language\csname l@\blx@languagename\endcsname\relax}%
+ \ifcsundef{\blx@languagename hyphenmins}
+ {\blx@sethyphenmins\tw@\thr@@}
+ {\expandafter\expandafter\expandafter\blx@sethyphenmins
+ \csname\blx@languagename hyphenmins\endcsname}}
+\def\blx@sethyphenmins#1#2{%
+ \lefthyphenmin#1\relax
+ \righthyphenmin#2\relax}
+
+\begingroup
+\@makeother\#
+\gdef\blx@mkautolangbabel{%
+ \ifundef\bbl@main@language
+ {\blx@error
+ {No default babel language defined}
+ {You must define a default language for babel}}
+ {}%
+ \pretocmd\select@language{\blx@langsetup{#1}}
+ {\ifdef\blx@thelangenv
+ {\def\blx@beglang{%
+ \blx@clearlang
+ \begingroup
+ % Need to override all entries, regardless of if there is a langid
+ % if language=<language> option is given
+ \ifboolexpr { test {\ifdef\abx@field@langid }
+ or
+ test {\ifdef\blx@forcelanguagename} }
+ % override local langid if we forced it with
+ % language=<language> option
+ {\ifdef\blx@forcelanguagename
+ {\let\abx@field@langid\blx@forcelanguagename}
+ {}%
+ \let\blx@languagename\abx@field@langid% track global language
+ \ifcsundef{l@\abx@field@langid}
+ {\blx@warn@nohyph{\abx@field@langid}}
+ {\blx@hook@initlang
+ \def\blx@endlang{%
+ \blx@hook@endlang
+ \csname end\blx@thelangenv\endcsname
+ \endgroup}%
+ \iftoggle{blx@autolangbib}
+ {\let\blx@endlangbib\blx@endlang}
+ {}%
+ \iftoggle{blx@autolangcite}
+ {\let\blx@endlangcite\blx@endlang}
+ {}%
+ \csname\blx@thelangenv\expandafter\endcsname
+ \expandafter{\abx@field@langid}}}
+ {}}}
+ {}%
+ \def\blx@langstrings{}%
+ \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
+ \blx@langsetup\bbl@main@language}
+ {\blx@err@patch{'babel' package}%
+ \blx@mknoautolang}}
+
+\gdef\blx@mkautolangpoly{%
+ \ifundef\bbl@main@language
+ {\blx@error
+ {No default polyglossia language defined}
+ {You must define a default language for polyglossia}}
+ {}%
+ \catcode`\_=11% polyglossia uses "_" as a letter
+ \pretocmd\select@language{\blx@langsetup{#1}}
+ {\ifdef\blx@thelangenv
+ {\def\blx@beglang{%
+ \blx@clearlang
+ \begingroup
+ % Need to override all entries, regardless of if there is a langid
+ % if language=<language> option is given
+ \ifboolexpr { test {\ifdef\abx@field@langid }
+ or
+ test {\ifdef\blx@forcelanguagename} }
+ % override local langid if we forced it with
+ % language=<language> option
+ {\ifdef\blx@forcelanguagename
+ {\let\abx@field@langid\blx@forcelanguagename}
+ {}%
+ \let\blx@languagename\abx@field@langid% track global language
+ \ifcsundef{l@\abx@field@langid}
+ {\blx@warn@nohyph{\abx@field@langid}}
+ {\blx@hook@initlang
+ \def\blx@endlang{%
+ \blx@hook@endlang
+ % Polyglossia language envs are \<lang>[]
+ \ifcsstring{blx@thelangenv}{langname}
+ {\csname end\abx@field@langid\endcsname}
+ {\csname end\blx@thelangenv\endcsname}%
+ \endgroup}%
+ \iftoggle{blx@autolangbib}
+ {\let\blx@endlangbib\blx@endlang}
+ {}%
+ \iftoggle{blx@autolangcite}
+ {\let\blx@endlangcite\blx@endlang}
+ {}%
+ \ifcsstring{blx@thelangenv}{langname}
+ {\ifdef\abx@field@langidopts
+ {\csname\abx@field@langid\expandafter\endcsname\expandafter[\abx@field@langidopts]}
+ {\csname\abx@field@langid\endcsname}}
+ {\csname\blx@thelangenv\expandafter\endcsname\expandafter{\abx@field@langid}}%
+ % These lines are equal to \blx@maplang
+ \blx@resetpunct
+ \csuse{abx@extras@\abx@field@langid}%
+ \csuse{abx@strings@\abx@field@langid}}}
+ {}}}
+ {}%
+ % polyglossia needs this - it doesn't get the
+ % strings automatically set for some reason
+ \def\blx@langstrings{%
+ \csuse{abx@extras@\languagename}%
+ \csuse{abx@strings@\languagename}}%
+ \def\blx@imc@mainlang{%
+ \select@language{\bbl@main@language}%
+ % These lines are equal to \blx@maplang
+ \blx@resetpunct
+ \csuse{abx@extras@\bbl@main@language}%
+ \csuse{abx@strings@\bbl@main@language}}%
+ \blx@langsetup\bbl@main@language}
+ {\blx@err@patch{'polyglossia' package}%
+ \blx@mknoautolang}%
+ \catcode`\_=8}
+\endgroup
+
+\def\blx@mknoautolang{%
+ \blx@lbxinput{\blx@languagename}
+ {}
+ {\blx@err@nolang{\blx@languagename}}}
+
+\blx@regimcs{\mainlang}
+
+\newrobustcmd*{\DeclareRedundantLanguages}[2]{%
+ \begingroup
+ \ifblank{#2}
+ {\def\do##1{%
+ \global\csundef{blx@rlm@##1}%
+ \global\csundef{blx@rlm@lang##1}}}
+ {\def\do##1{%
+ \csxdef{blx@rlm@##1}{#2}%
+ \csxdef{blx@rlm@lang##1}{#2}}}%
+ \docsvlist{#1}%
+ \endgroup}
+
+\def\blx@clearlang{%
+ \iftoggle{blx@clearlang}
+ {\iflistundef{language}
+ {}
+ {\ifnumgreater{\value{language}}{1}
+ {}
+ {\expandafter\blx@clearlang@i\abx@list@language}}}
+ {}}
+
+\def\blx@clearlang@i#1{%
+ \ifcsdef{blx@rlm@#1}
+ {\expandafter\expandafter\expandafter\forcsvlist
+ \expandafter\expandafter\expandafter\blx@clearlang@ii
+ \expandafter\expandafter\expandafter{%
+ \csname blx@rlm@#1\endcsname}}
+ {}}
+
+\def\blx@clearlang@ii#1{%
+ \ifdefstring\languagename{#1}
+ {\clearlist{language}}
+ {}}
+
+%% Biber equivalents to bibtex data interface
+
+\def\abx@doentrytypes{\dolistcsloop{blx@datamodel@entrytypes}}
+
+% fields which can be used as labels - we auto-create some macros for these
+\def\abx@dolabelfields{\dolistcsloop{blx@datamodel@labelfields}}
+
+\def\abx@donames{\dolistcsloop{blx@datamodel@names}}
+
+\def\abx@dofields{\dolistcsloop{blx@datamodel@fields}}
+
+\def\abx@dolists{%
+ \dolistcsloop{blx@datamodel@lists}%
+ \do{pageref}}
+
+\def\abx@dodates{\dolistcsloop{blx@datamodel@dates}}
+
+% Used to pass regexps to .bcf
+\def\regexp#1{\expandafter\zap@space\detokenize{#1} \@empty}
+
+% Have to do this otherwise the '~'s in the .bcf strings are not expanded
+% This is done for the .bcf later but since we have to do all the
+% data model things much earlier, have to set this here and reset on finishing
+\let\blx@tsave~
+\let~\space
+% Data model and supporting macros must be loaded early
+\blx@inputonce{blx-dm.def}{biblatex default data model}{}{}{}{}
+\let~\blx@tsave
+
+% We need to now load any style data model
+% Order of precedence is:
+% <datamodel option>.dbx
+% <style option>.dbx
+% <citestyle option>.dbx and <bibstyle option>.dbx
+% This has to be done before the real options processing so we need to
+% pick out just these four options to look at. You can't do this with keyval,
+% you have to use kvoptions. So, pick out these four, pass through all
+% others and delete datamodel option as we don't care about it when we come
+% to really set options below
+\SetupKeyvalOptions{
+ family=blx@opt@eldt,
+ prefix=blx@opt@eldt@}
+\DeclareStringOption{datamodel}
+\DeclareStringOption{style}
+\DeclareStringOption{citestyle}
+\DeclareStringOption{bibstyle}
+\DeclareDefaultOption{}
+\ProcessLocalKeyvalOptions{blx@opt@eldt}
+\ifx\blx@opt@eldt@datamodel\@empty
+ \ifx\blx@opt@eldt@style\@empty
+ \ifx\blx@opt@eldt@citestyle\@empty
+ \else
+ \blx@inputonce{\blx@opt@eldt@citestyle.dbx}{biblatex citestyle data model}{}{}{}{}
+ \fi
+ \ifx\blx@opt@eldt@bibstyle\@empty
+ \else
+ \blx@inputonce{\blx@opt@eldt@bibstyle.dbx}{biblatex bibstyle data model}{}{}{}{}
+ \fi
+ \else
+ \blx@inputonce{\blx@opt@eldt@style.dbx}{biblatex style data model}{}{}{}{}
+ \fi
\else
- \expandafter\@secondoftwo
+ \blx@inputonce{\blx@opt@eldt@datamodel.dbx}{biblatex style data model}{}{}{}{}
\fi
- {\RequirePackage{biblatex_legacy}}
- {\RequirePackage{biblatex_}}
-
-%% Copyright (C) 2006-2011 Philipp Lehman
-%% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright
-%%
-%% It may be distributed and/or modified under the conditions of
-%% the LaTeX Project Public License (LPPL), either version 1.3c of
-%% this license or (at your option) any later version. The latest
-%% version of this license is in the file:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% This work is "maintained" (as per LPPL maintenance status) by
-%% Philip Kime, Audrey Boruvka, Joseph Wright.
+\DisableKeyvalOption[action=undef,local]{blx@opt@eldt}{datamodel}
+
+% Override with user-defined data model if there is one
+\blx@inputonce{biblatex-dm.cfg}{biblatex custom data model}{}{}{}{}
+
+% Initialise option datatypes lists
+\global\let\blx@bcf@options@scope@global\@empty
+\global\let\blx@bcf@options@scope@type\@empty
+\global\let\blx@bcf@options@scope@entry\@empty
+\global\let\blx@bcf@options@scope@namelist\@empty
+\global\let\blx@bcf@options@scope@name\@empty
+\global\let\blx@globalopts@datatypes\@empty
+\global\let\blx@typeopts@datatypes\@empty
+\global\let\blx@entryopts@datatypes\@empty
+\global\let\blx@namelistopts@datatypes\@empty
+\global\let\blx@nameopts@datatypes\@empty
+\def\do#1{%
+ \global\cslet{blx@globalopts@#1}\@empty
+ \global\cslet{blx@typeopts@#1}\@empty
+ \global\cslet{blx@entryopts@#1}\@empty
+ \global\cslet{blx@namelistopts@#1}\@empty
+ \global\cslet{blx@nameopts@#1}\@empty}
+\expandafter\expandafter\expandafter\docsvlist\expandafter\expandafter\expandafter{\csname blx@datamodel@constant@optiondatatypes\endcsname}
+
+% Helper for collecting options and datatypes
+% {<datatype>}{<scope>}{<name>}
+\def\blx@collectopts#1#2#3{%
+ \ifinlistcs{#1}{#2@datatypes}
+ {}
+ {\listcsgadd{#2@datatypes}{#1}}%
+ \ifinlistcs{#3}{#2@#1}
+ {}
+ {\listcsgadd{#2@#1}{#3}}}
+
+% per-entry inheritance blocking option for biber
+\blx@collectopts{string}{blx@entryopts}{noinherit}
+
+% useprefix namelist/name scope
+\blx@collectopts{boolean}{blx@namelistopts}{useprefix}% for passing to bcf
+\blx@collectopts{boolean}{blx@nameopts}{useprefix}% for passing to the .bcf
+
+% sortnamekeyscheme namelist/name scope
+\blx@collectopts{string}{blx@namelistopts}{sortnamekeyscheme}% for passing to bcf
+\blx@collectopts{string}{blx@nameopts}{sortnamekeyscheme}% for passing to the .bcf
+
+% Misc globalopts
+\blx@collectopts{xml}{blx@globalopts}{datamodel}% for passing to the .bcf
+\blx@collectopts{string}{blx@globalopts}{controlversion}% for passing to the .bcf
+
+\newcommand*{\labelalphaothers}{+}
+\newcommand*{\sortalphaothers}{\labelalphaothers}
+\blx@collectopts{string}{blx@globalopts}{alphaothers}% for passing to the .bcf
+\blx@collectopts{string}{blx@typeopts}{alphaothers}% for passing to the .bcf
+\blx@collectopts{string}{blx@globalopts}{sortalphaothers}% for passing to the .bcf
+\blx@collectopts{string}{blx@typeopts}{sortalphaothers}% for passing to the .bcf
+
+% The Declare*Option macros are for options which need to be visible
+% to biblatex. For options which only biber needs to see, they can be
+% passed to the .bcf directly using \blx@collectopts
+% [<datatype>]{<key>}[<value>]{<code>}
+\newrobustcmd*{\DeclareBibliographyOption}[2][]{
+ \ifblank{#1}
+ {\def\blx@tempa{boolean}}
+ {\ifcsundef{blx@globalopts@#1}
+ {\blx@warn@badoptdt{#1}%
+ \def\blx@tempa{boolean}}
+ {\def\blx@tempa{#1}}}%
+ \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@globalopts}{#2}%
+ \@ifnextchar[%]
+ {\blx@defbibopt{#2}}
+ {\blx@defbibopt{#2}[]}}
+
+\long\def\blx@defbibopt#1[#2]#3{%
+ \ifcsundef{KV@blx@opt@ldt@#1}
+ {\ifcsundef{KV@blx@opt@pre@#1}
+ {\ifblank{#2}
+ {\define@key{blx@opt@pre}{#1}{#3}}
+ {\define@key{blx@opt@pre}{#1}[#2]{#3}}}
+ {\blx@err@optdef{#1}}}
+ {\blx@err@optdef{#1}}}
+
+% [<datatype>]{<key>}[<value>]{<code>}
+\newrobustcmd*{\DeclareTypeOption}[2][]{%
+ \ifblank{#1}
+ {\def\blx@tempa{boolean}}
+ {\ifcsundef{blx@typeopts@#1}
+ {\blx@warn@badoptdt{#1}%
+ \def\blx@tempa{boolean}}
+ {\def\blx@tempa{#1}}}%
+ \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@typeopts}{#2}%
+ \@ifnextchar[%]
+ {\blx@deftypeopt{#2}}
+ {\blx@deftypeopt{#2}[]}}
+
+\long\def\blx@deftypeopt#1[#2]#3{%
+ \ifcsundef{KV@blx@opt@typ@#1}
+ {\ifblank{#2}
+ {\define@key{blx@opt@typ}{#1}{#3}}
+ {\define@key{blx@opt@typ}{#1}[#2]{#3}}}
+ {\blx@err@optdef{#1}}}
+
+% [<datatype>]{<key>}[<value>]{<code>}
+\newrobustcmd*{\DeclareEntryOption}[2][]{%
+ \ifblank{#1}
+ {\def\blx@tempa{boolean}}
+ {\ifcsundef{blx@entryopts@#1}
+ {\blx@warn@badoptdt{#1}%
+ \def\blx@tempa{boolean}}
+ {\def\blx@tempa{#1}}}%
+ \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@entryopts}{#2}%
+ \@ifnextchar[%]
+ {\blx@defentryopt{#2}}
+ {\blx@defentryopt{#2}[]}}
+
+ \long\def\blx@defentryopt#1[#2]#3{%
+ \ifcsundef{KV@blx@opt@ent@#1}
+ {\ifblank{#2}
+ {\define@key{blx@opt@ent}{#1}{#3}}
+ {\define@key{blx@opt@ent}{#1}[#2]{#3}}}
+ {\blx@err@optdef{#1}}}
+
+% These are internal fields which are not part of the data model but
+% which need to be dealt with along with data model fields in places
+\def\abx@dointernalfields{%
+ \do{childentrykey}%
+ \do{clonesourcekey}%
+ \do{datelabelsource}%
+ \do{entrykey}%
+ \do{entryset}%
+ \do{entrysetcount}%
+ \do{entrytype}%
+ \do{extraalpha}%
+ \do{extratitle}%
+ \do{extratitleyear}%
+ \do{extrayear}%
+ \do{fullhash}%
+ \do{labelalpha}%
+ \do{labelnumber}%
+ \do{labeltitleyear}%
+ \do{labeldate}%
+ \do{localnumber}%
+ \do{namehash}%
+ \do{labelprefix}%
+ \do{sortinit}%
+ \do{sortinithash}}
+
+\def\abx@dobooleans{%
+ \do{crossrefsource}%
+ \do{xrefsource}%
+ \do{singletitle}%
+ \do{uniquetitle}%
+ \do{uniqueprimaryauthor}}
+
+% Date datatype fields
+\def\do#1{%
+ \protected\csdef{blx@imc@print#1}{}%
+ \protected\csdef{blx@imc@print#1extra}{}}
+\abx@dodates
+
+% \blx@regimcs doesn't work in do-lists nicely so use internal macro it calls
+\def\do#1{%
+ \xappto\blx@blxinit{\csletcs{print#1}{blx@imc@print#1}}%
+ \xappto\blx@blxinit{\csletcs{print#1extra}{blx@imc@print#1extra}}}
+\abx@dodates
+
+% Name toggles like \ifauthor etc. need to be dynamically created for all
+% name datatypes in the data model and we have to do this here after the
+% datamodel is available. Need to be careful about expansions here as these
+% go into hooks to be executed later
+
+% Define name toggles
+\def\do#1{\newtoggle{blx@use#1}\toggletrue{blx@use#1}}
+\abx@donames
+
+% Define name toggle checking macros
+\let\blx@nametoggles\@empty
+\def\do#1{\gappto\blx@nametoggles{\expandafter\def\csname ifuse#1\endcsname{\iftoggle{blx@use#1}}}}
+\abx@donames
+\eappto\blx@blxinit{\expandafter\expandonce\noexpand\blx@nametoggles}
+
+% Define ifthen interface name toggle checking macros
+\let\blx@nametogglesit\@empty
+\def\do#1{\gappto\blx@nametogglesit{\expandafter\def\csname ifuse#1\endcsname{\blx@TE{\iftoggle{blx@use#1}}}}}
+\abx@donames
+\expandafter\def\expandafter\blx@nametogglesite\expandafter{\expandonce\blx@nametogglesit}
+\appto\blx@blxinit{\appto\blx@TE@hook{\blx@nametogglesite}}
+
+% Define \ifuse<name> options scope for biber
+\def\do#1{\blx@collectopts{boolean}{blx@globalopts}{use#1}%
+ \blx@collectopts{boolean}{blx@typeopts}{use#1}%
+ \blx@collectopts{boolean}{blx@entryopts}{use#1}}
+\abx@donames
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Since these are bare counters which define \the<string>, save any current values
+% (memoir, titling, koma etc. have a \theauthor macro, for example) and restore at
+% end of package
+\def\do#1{%
+ \csletcs{blx@compat@the#1}{the#1}%
+ \newcounter{#1}%
+ \newcounter{saved#1}%
+ \appto\abx@dobooleans{\do{more#1}}}
+
+\abx@donames
+\abx@dornames
+\abx@dolists
+%\abx@dorlists
+
+\AtEndOfPackage{%
+ \def\do#1{\csletcs{the#1}{blx@compat@the#1}}%
+ \abx@donames
+ \abx@dornames
+ \abx@dolists}
+
+\def\do#1{\newtoggle{abx@bool@#1}}
+\abx@dobooleans
+
+\def\do#1{\expandafter\newlength\expandafter{\csname #1width\endcsname}}
+\abx@dolabelfields
+
+\protected\def\blx@resetdata{%
+ \let\blx@saved@do\do
+ \let\do\blx@imc@clearname
+ \abx@donames
+ \let\do\blx@imc@clearlist
+ \abx@dolists
+ \let\do\blx@imc@clearfield
+ \abx@dofields
+ \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}%
+ \abx@dointernalfields
+ \def\do##1{\togglefalse{abx@bool@##1}}%
+ \abx@dobooleans
+ \let\do\blx@saved@do
+ \c@citecounter\z@
+ \iftoggle{blx@bibliography}
+ {\c@maxnames\blx@maxbibnames\relax
+ \c@minnames\blx@minbibnames\relax}
+ {\c@maxnames\blx@maxcitenames\relax
+ \c@minnames\blx@mincitenames\relax}%
+ \c@maxitems\blx@maxitems\relax
+ \c@minitems\blx@minitems\relax}
+
+\protected\def\blx@saveentry{%
+ \let\blx@saved@do\do
+ \let\do\blx@savename
+ \abx@donames
+ \let\do\blx@saverelname
+ \dolistloop\abx@dorelnames
+ \let\do\blx@savelist
+ \abx@dolists
+ \let\do\blx@saverellist
+ \dolistloop\abx@dorellists
+ \let\do\blx@savefield
+ \abx@dofields
+ \let\do\blx@saverelfield
+ \dolistloop\abx@dorelfields
+ \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}%
+ \abx@dointernalfields
+ \let\do\blx@savebool
+ \abx@dobooleans
+ \c@savedcitecounter\c@citecounter
+ \let\do\blx@saved@do}
+
+\protected\def\blx@savename#1{%
+ \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}%
+ \csletcs{abx@name@saved#1}{abx@name@#1}%
+ \csname c@saved#1\endcsname\csname c@#1\endcsname}
+
+% override with name saved from \clearfield for related processing
+\protected\def\blx@saverelname#1{%
+ \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@morerelsaved#1}%
+ \csletcs{abx@name@saved#1}{abx@name@relsaved#1}%
+ \csname c@saved#1\endcsname\csname c@relsaved#1\endcsname}
+
+\protected\def\blx@savelist#1{%
+ \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}%
+ \csletcs{abx@list@saved#1}{abx@list@#1}%
+ \csname c@saved#1\endcsname\csname c@#1\endcsname}
+
+% override with list saved from \clearfield for related processing
+\protected\def\blx@saverellist#1{%
+ \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@morerelsaved#1}%
+ \csletcs{abx@list@saved#1}{abx@list@relsaved#1}%
+ \csname c@saved#1\endcsname\csname c@relsaved#1\endcsname}
+
+\protected\def\blx@savefield#1{%
+ \csletcs{abx@field@saved#1}{abx@field@#1}}
+
+% override with field saved from \clearfield for related processing
+\protected\def\blx@saverelfield#1{%
+ \csletcs{abx@field@saved@#1}{abx@field@relsaved#1}}
+
+\protected\def\blx@savebool#1{%
+ \csletcs{abx@bool@saved#1}{abx@bool@#1}}
+
+% {<code>}
+\protected\long\def\blx@bbl@preamble#1{%
+ \gappto\abx@preamble{#1}}
+
+% {<message>}
+\protected\def\blx@bbl@warn#1{%
+ \begingroup
+ \def\item{\MessageBreak-\space}%
+ \def\break{\MessageBreak\space\space}%
+ \edef\blx@tempa{%
+ Biber reported the following issues%
+ \ifdef\abx@field@entrykey
+ {\MessageBreak with '\abx@field@entrykey'}
+ {}%
+ :#1}%
+ \blx@warning@noline{\blx@tempa}%
+ \endgroup}
+
+% {<field>}{<code>}
+\newrobustcmd{\DeclareFieldInputHandler}[2]{%
+ \ifblank{#2}
+ {\csundef{blx@fih@#1}}
+ {\long\csdef{blx@fih@#1}##1{#2}}}
+\@onlypreamble\DeclareFieldInputHandler
+
+% {<list>}{<code>}
+\newrobustcmd*{\DeclareListInputHandler}[2]{%
+ \ifblank{#2}
+ {\csundef{blx@lih@#1}}
+ {\csdef{blx@lih@#1}##1{#2}}}
+\@onlypreamble\DeclareListInputHandler
+
+% {<name>}{<code>}
+\newrobustcmd*{\DeclareNameInputHandler}[2]{%
+ \ifblank{#2}
+ {\csundef{blx@nih@#1}}
+ {\csdef{blx@nih@#1}##1{#2}}}
+\@onlypreamble\DeclareNameInputHandler
+
+% {<entrykey>}{<refsection>}{<field>}{<sort context>}{<value>}
+\long\def\blx@bbl@addentryfield#1#2#3#4#5{%
+ \csxappto{blx@data@#2@#4@#1}{%
+ \def\expandafter\noexpand\csname abx@field@#3\endcsname{#5}}}
+
+% {<rangefield>}{<value>}
+\protected\def\blx@bbl@rangedef#1#2{%
+ \csxappto\blx@bbl@data{%
+ \def\expandafter\noexpand\csname abx@range@#1\endcsname{#2}}}
+
+% {<field>}{<value>}
+\long\def\blx@bbl@addfield#1#2{%
+ \csxappto\blx@bbl@data{%
+ \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}}
+
+\protected\long\def\blx@bbl@fielddef#1#2{%
+ \def\NewValue{#2}%
+ \ifcsdef{blx@fih@#1}
+ {\csname blx@fih@#1\endcsname{#2}%
+ \ifdefvoid\NewValue}
+ {\@secondoftwo}
+ {}
+ {\blx@bbl@addfield{#1}{\expandonce\NewValue}}}
+
+\protected\long\def\blx@bbl@fieldedef#1#2{%
+ \edef\NewValue{#2}%
+ \ifcsdef{blx@fih@#1}
+ {\csname blx@fih@#1\expandafter
+ \endcsname\expandafter{\NewValue}%
+ \ifdefvoid\NewValue}
+ {\@secondoftwo}
+ {}
+ {\blx@bbl@addfield{#1}{\NewValue}}}
+
+\protected\long\def\blx@bbl@stringdef#1#2{%
+ \begingroup
+ \edef\blx@tempa{\endgroup
+ \blx@bbl@fielddef{#1}{\detokenize{#2}}}%
+ \blx@tempa}
+
+% Verbatim lists
+% {<list>}{<listcount>}
+\protected\def\blx@bbl@verbldef#1#2{%
+ \begingroup
+ \let\lverb\blx@bbl@verbladd
+ \def\blx@tempa{#1}%
+ \def\blx@tempb{#2}%
+ \let\blx@tempc\@empty
+ \let\NewValue\@empty}
+
+\protected\def\blx@bbl@verblend{%
+ \expandafter\blx@bbl@listdef\expandafter{\expandafter\blx@tempa\expandafter}\expandafter{\expandafter\blx@tempb\expandafter}\expandafter{\blx@tempc}%
+ \endgroup}
+
+\protected\def\blx@bbl@verbladd{%
+ \begingroup
+ \let\do\@makeother
+ \dospecials
+ \catcode\endlinechar=12\relax
+ \blx@bbl@verbladd@i}
+
+% Verbatim fields
+% {<field>}
+\protected\def\blx@bbl@verbdef#1{%
+ \begingroup
+ \let\verb\blx@bbl@verbadd
+ \def\blx@tempa{#1}%
+ \let\NewValue\@empty}
+
+\protected\def\blx@bbl@verbend{%
+ \ifcsdef{blx@fih@\blx@tempa}
+ {\csname blx@fih@\blx@tempa\expandafter
+ \endcsname\expandafter{\NewValue}%
+ \ifdefvoid\NewValue}
+ {\@secondoftwo}
+ {}
+ {\blx@bbl@addfield{\blx@tempa}{\NewValue}}%
+ \endgroup}
+
+\protected\def\blx@bbl@verbadd{%
+ \begingroup
+ \let\do\@makeother
+ \dospecials
+ \catcode\endlinechar=12\relax
+ \blx@bbl@verbadd@i}
+
+% {<scope>}{<field>}{<itemcount>}{<part>}{<value>}
+\protected\def\blx@bbl@annotationdef#1#2#3#4#5{%
+ \ifboolexpr { test {\ifstrequal{#1}{field}} }
+ {\csxappto\blx@bbl@data{%
+ \def\do####1{\listcsadd{abx@annotation@#1@#2}{####1}}%
+ \docsvlist{#5}}}
+ {}%
+ \ifboolexpr { test {\ifstrequal{#1}{item}} }
+ {\csxappto\blx@bbl@data{%
+ \def\do####1{\listcsadd{abx@annotation@#1@#2@#3}{####1}}%
+ \docsvlist{#5}}}
+ {}%
+ \ifboolexpr { test {\ifstrequal{#1}{part}} }
+ {\csxappto\blx@bbl@data{%
+ \def\do####1{\listcsadd{abx@annotation@#1@#2@#3@#4}{####1}}%
+ \docsvlist{#5}}}
+ {}}
+
+% {<annotation>}
+\newcommand*{\iffieldannotation}[1]{%
+ \ifdefvoid\currentfield{}{\let\blx@tempa\currentfield}%
+ \ifdefvoid\currentlist{}{\let\blx@tempa\currentlist}%
+ \ifdefvoid\currentname{}{\let\blx@tempa\currentname}%
+ \ifinlistcs{#1}{abx@annotation@field@\blx@tempa}}
+
+% {<annotation>}
+\newcommand*{\ifitemannotation}[1]{%
+ \ifdefvoid\currentfield{}{\let\blx@tempa\currentfield}%
+ \ifdefvoid\currentlist{}{\let\blx@tempa\currentlist}%
+ \ifdefvoid\currentname{}{\let\blx@tempa\currentname}%
+ \ifinlistcs{#1}{abx@annotation@item@\blx@tempa @\the\value{listcount}}}
+
+% {<part>}{<annotation>}
+\newcommand*{\ifpartannotation}[2]{%
+ \ifdefvoid\currentfield{}{\let\blx@tempa\currentfield}%
+ \ifdefvoid\currentlist{}{\let\blx@tempa\currentlist}%
+ \ifdefvoid\currentname{}{\let\blx@tempa\currentname}%
+ \ifinlistcs{#2}{abx@annotation@part@\blx@tempa @\the\value{listcount}@#1}}
+
+\begingroup
+\catcode`\<=12
+\catcode`\>=12
+\uccode`\<=`\ %
+\uccode`\>=\endlinechar
+\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{%
+ \endgroup
+ \edef\NewValue{\NewValue\detokenize{#1}}}
+\uppercase{\gdef\blx@bbl@verbladd@i<#1>}{%
+ \endgroup
+ \eappto\blx@tempc{{\detokenize{#1}}}}%
+\endgroup
+
+% {<counter>}{<value>}
+\protected\long\def\blx@bbl@cntdef#1#2{%
+ \csxappto\blx@bbl@data{%
+ \csname c@#1\endcsname#2\relax}}
+
+% {<boolean>}
+\protected\def\blx@bbl@booltrue#1{%
+ \csgappto\blx@bbl@data{%
+ \toggletrue{abx@bool@#1}}}
+
+\protected\def\blx@bbl@boolfalse#1{%
+ \csgappto\blx@bbl@data{%
+ \togglefalse{abx@bool@#1}}}
+
+% {<list>}{<itemcount>}{<value>}
+\protected\def\blx@bbl@listdef#1#2#3{%
+ \def\NewCount{#2}%
+ \def\NewValue{#3}%
+ \ifcsdef{blx@lih@#1}
+ {\csname blx@lih@#1\endcsname{#3}%
+ \ifdefvoid\NewValue}
+ {\@secondoftwo}
+ {}
+ {\csxappto\blx@bbl@data{%
+ \csname c@#1\endcsname\NewCount\relax
+ \def\expandafter\noexpand\csname abx@list@#1\endcsname
+ {\expandonce\NewValue}}}}
+
+% {<name>}{<itemcount>}{<nameoptions>}{<value>}
+\protected\def\blx@bbl@namedef#1#2#3#4{%
+ \def\NewCount{#2}%
+ \def\NewOption{#3}%
+ \def\NewValue{#4}%
+ \ifcsdef{blx@nih@#1}
+ {\csname blx@nih@#1\endcsname{#4}%
+ \ifdefvoid\NewValue}
+ {\@secondoftwo}
+ {}
+ {\csxappto\blx@bbl@data{%
+ \csname c@#1\endcsname\NewCount\relax
+ \def\expandafter\noexpand\csname abx@name@#1\endcsname
+ {{\expandonce\NewOption}{\expandonce\NewValue}}}}}
+
+% blx@setp@<rs>@<sp> = map of set parent <sp> in a refsection <rs> to csv
+% of set children
+% blx@seti@<rs>@<sc> = position of set child <sc> in entry set in
+% refsection <rs>
+% blx@setc@<rs>@<sc> = map of set child <sc> in refsection <rs> to set parent
+
+% {<entrykey>,...}
+\protected\def\blx@bbl@set#1{%
+ \blx@bbl@fieldedef{entryset}{\detokenize{#1}}%
+ \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}%
+ \begingroup
+ \blx@tempcnta\z@
+ \expandafter\forcsvlist
+ \expandafter\blx@bbl@set@i
+ \expandafter{\detokenize{#1}}%
+ \endgroup}
+
+\def\blx@bbl@set@i#1{%
+ \advance\blx@tempcnta\@ne
+ \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}}
+
+% {<entrykey>}
+\protected\def\blx@bbl@inset#1{%
+ \toggletrue{blx@setonly}%
+ \blx@bbl@fieldedef{entryset}{\detokenize{#1}}%
+ \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}}
+
+% {<entrykey>}
+\protected\def\blx@bbl@xref#1{}% No-op to avoid an error with BibTeX .bbl
+
+% {<keyword>,...}
+\protected\def\blx@bbl@keyw#1{%
+ \iftoggle{blx@skipbib}
+ {}
+ {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}%
+ \blx@bbl@fielddef{keywords}{#1}}}
+
+\def\blx@addkeyword#1#2{%
+ \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}}
+
+% {<options>}
+\protected\long\def\blx@bbl@options#1{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \forcsvlist\blx@bbl@options@i{#1}%
+ \edef\blx@tempa{%
+ \endgroup
+ \ifx\blx@tempa\@empty
+ \else
+ \def\noexpand\abx@field@options{\expandonce\blx@tempa}%
+ \fi}%
+ \blx@tempa}
+
+\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&}
+
+\long\def\blx@bbl@options@ii#1=#2=#3&{%
+ \ifcsundef{KV@blx@opt@ent@#1}
+ {\blx@warning@noline{%
+ Ignoring undefined option '#1'\MessageBreak
+ at entry '\abx@field@entrykey'}}
+ {\eappto\blx@tempa{%
+ \ifx\blx@tempa\@empty\else,\fi
+ \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}}
+
+\def\blx@ifdata#1{%
+ \ifcsdef{blx@data@\the\c@refsection @\blx@refcontext@context @#1}}
+\let\blx@imc@ifentryinbib\blx@ifdata
+
+\def\blx@getdata#1{%
+ \csuse{blx@data@\the\c@refsection @\blx@refcontext@context @#1}%
+ % Here we resolve label* bib fields to their real fields. Doing this here
+ % dynamically means that we can vary the field chosen depending on the refcontext.
+ % biber used to resolve these and materialise them in the .bbl but this
+ % means a static resolution which is independent of the document context.
+ \def\do##1{%
+ \ifcsdef{abx@field@##1source}
+ {\expandafter\def\csname abx@field@##1\endcsname{\csuse{abx@field@\csuse{abx@field@##1source}}}}%
+ {}}%
+ \dolistloop\abx@rfields%
+ % Just in case we ever have non-name lists to instantiate
+ % \def\do##1{%
+ % \ifcsdef{abx@field@##1source}
+ % {\csname c@##1\expandafter\endcsname\expandafter\the\csname c@\csuse{abx@field@##1source}\endcsname
+ % \csletcs{abx@list@##1}{abx@list@\csuse{abx@field@##1source}}}
+ % {}}%
+ % \dolistloop\abx@rlists%
+ \def\do##1{%
+ \ifcsdef{abx@field@##1source}
+ {\csname c@##1\expandafter\endcsname\expandafter\the\csname c@\csuse{abx@field@##1source}\endcsname
+ \csletcs{abx@name@##1}{abx@name@\csuse{abx@field@##1source}}}
+ {}}%
+ \dolistloop\abx@rnames%
+ \blx@setcitecounter}
+
+\def\blx@getdata@cite#1{%
+ \ifcsdef{blx@setc@\the\c@refsection @#1}
+ {\expandafter\expandafter\expandafter\blx@getdata
+ \expandafter\expandafter\expandafter{%
+ \csname blx@setc@\the\c@refsection @#1\endcsname}%
+ \blx@ifdata{#1}
+ {\def\abx@field@childentrykey{#1}%
+ \begingroup
+ \blx@getdata{#1}%
+ \edef\blx@tempa{\endgroup
+ \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}%
+ \blx@tempa}
+ {}}
+ {\blx@getdata{#1}}%
+ \ifcsdef{blx@seti@\the\c@refsection @#1}
+ {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}}
+ {}}
+
+\def\blx@execute{%
+ \blx@imc@thefield{execute}}
+
+\def\blx@setoptions@entry{%
+ \blx@imc@iffieldundef{options}
+ {}
+ {\begingroup
+ \edef\blx@tempa{\endgroup
+ \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}%
+ \blx@tempa
+ \blx@checkoptions@entry}}
+
+\def\blx@setoptions@type#1{%
+ \ifcsdef{blx@opts@type@#1}
+ {\begingroup
+ \edef\blx@tempa{\endgroup
+ \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}%
+ \blx@tempa}
+ {}}
+
+\def\blx@checkoptions@global{}
+\def\blx@checkoptions@type{}
+\def\blx@checkoptions@entry{}
+
+\def\blx@entrysetcount{%
+ \ifdef\abx@field@entrykey
+ {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey}
+ {\letcs\abx@field@entrysetcount{%
+ blx@seti@\the\c@refsection @\abx@field@entrykey}}
+ {}}
+ {}}
+
+% {<section>}
+\def\blx@bbl@refsection#1{%
+ \begingroup
+ \c@refsection#1\relax}
+
+\def\blx@bbl@endrefsection{%
+ \iftoggle{blx@addset}
+ {\blx@addset
+ \global\togglefalse{blx@addset}}
+ {}%
+ \endgroup}
+
+% {<entrykey>}
+\protected\def\blx@bbl@missing#1{%
+ \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}%
+ \blx@warning@noline{%
+ The following entry could not be found\MessageBreak
+ in the database%
+ \ifnumgreater\c@refsection\z@
+ { (refsection \the\c@refsection)}
+ {}:\MessageBreak
+ \detokenize{#1}\MessageBreak
+ Please verify the spelling and rerun\MessageBreak
+ LaTeX afterwards}}
+
+% We create an alias resolving macro and also a list of aliases
+% which we need to add to the .bcf. We need to resolve the aliases
+% for internal use but we always want the aliases themselves in the .bcf
+% so that biber can correctly use and resolve them too.
+\protected\def\blx@bbl@keyalias#1#2{%
+ \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}%
+ \listcsgadd{blx@keyaliases@\the\c@refsection}{#1}}
+
+% blx@slist@list@<section>@<scheme> - a list of list items in a scheme in a
+% section (for tracking bibliography lists,
+% obeys skipbiblist)
+% blx@slist@entry@<section>@<scheme> - a list of normal entries in a scheme in a
+% section (for tracking bibliographies,
+% obeys skipbib)
+% blx@slist@centry@<section>@<scheme> - a list of normal entries in a scheme in a
+% section (for tracking citations,
+% obeys skipbib). Same as @entry@ but
+% with added set children
+
+% {<entrykey>}{<entrytype>}{<options>}
+\protected\def\blx@bbl@entry#1#2#3{%
+ \begingroup
+ \edef\abx@field@entrykey{\detokenize{#1}}%
+ \blx@setoptions@type{#2}%
+ \blx@bbl@options{#3}%
+ \blx@setoptions@entry
+ \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@slist@name @\abx@field@entrykey}%
+ \csuse\blx@bbl@data
+ \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
+ \blx@bbl@addfield{entrytype}{#2}%
+ \blx@imc@iffieldundef{options}
+ {}
+ {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}
+
+\protected\def\blx@bbl@endentry{%
+ \csuse\blx@bbl@data
+ \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey}
+ {}
+ {\blx@addpageref{\abx@field@entrykey}}%
+ \nottoggle{blx@setonly}
+ {}
+ {\global\toggletrue{blx@addset}%
+ \toggletrue{blx@skipbib}%
+ \toggletrue{blx@skipbiblist}%
+ \toggletrue{blx@skiplab}}%
+ \nottoggle{blx@skipbib}
+ {\expandafter\ifstrequal\expandafter{\blx@slist@type}{entry}
+ {\listcsxadd{blx@slist@entry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}%
+ \listcsxadd{blx@slist@centry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}%
+ \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}%
+ \ifdef\abx@field@entrysubtype
+ {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}}
+ {}}
+ {}}%
+ {}%
+ \nottoggle{blx@skipbiblist}
+ {\expandafter\ifstrequal\expandafter{\blx@slist@type}{list}
+ {\blx@bbl@labelfields
+ \listcsxadd{blx@slist@\blx@slist@type @\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}}
+ {}}%
+ {}%
+ \nottoggle{blx@skiplab}
+ {\iftoggle{blx@labelnumber}
+ {\blx@bbl@labelnumber}
+ {}%
+ \iftoggle{blx@labelalpha}
+ {\blx@bbl@labelalpha}
+ {}%
+ \iftoggle{blx@labeltitle}
+ {\blx@bbl@labeltitle}
+ {}%
+ \iftoggle{blx@labeltitleyear}
+ {\blx@bbl@labeltitleyear}
+ {}%
+ \iftoggle{blx@labeldate}
+ {\blx@bbl@labeldate}
+ {}}
+ {}%
+ \blx@bbl@titles
+ \blx@bbl@hooks
+ \endgroup}
+
+% This, at the end of the .bbl, puts any set parent children into the
+% current context sort list of citations (a separate list *@centry@* to the
+% bibliography *@entry@* which doesn't want the children adding if they weren't
+% cited) as this is needed for the subentry citing
+% when sortcites is enabled as for sortcites, the current context sorting list
+% is used and the parent set of a subentry is not necessarily
+% available in the current context sortlist.
+\def\blx@addset{%
+ \begingroup
+ \letcs\blx@tempa{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}%
+ \global\cslet{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}\@empty
+ \forlistloop\blx@addset@i\blx@tempa
+ \endgroup}
+
+\def\blx@addset@i#1{%
+ \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}%
+ \ifcsdef{blx@setp@\the\c@refsection @#1}
+ {\expandafter\expandafter\expandafter\forcsvlist
+ \expandafter\expandafter\expandafter\blx@addset@ii
+ \expandafter\expandafter\expandafter{%
+ \csname blx@setp@\the\c@refsection @#1\endcsname}}
+ {}}
+
+\def\blx@addset@ii#1{%
+ \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}}
+
+\def\blx@bbl@labelfields{%
+ \def\do##1{%
+ \ifcsundef{abx@field@##1}
+ {}
+ {\blx@setlabwidth{\csname ##1width\endcsname}{%
+ \csuse{abx@ffd@*@##1width}{\csname abx@field@##1\endcsname}}}}%
+ \abx@dolabelfields}
+
+\def\blx@bbl@labelnumber{%
+ % Used at endentry, when reading .bbl
+ % only do this for the global sorting list otherwise we increment
+ % the labelnumbers for each sortlist
+ \ifdefempty\abx@field@localnumber
+ {}% only if omitnumbers=true
+ {\ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth}
+ {\letcs{\@lnw@labelnumberwidth}{abx@ffd@*@labelnumberwidth}}
+ {\letcs{\@lnw@labelnumberwidth}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth}}%
+ \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelprefix}
+ {\letcs{\@lnw@labelprefix}{abx@ffd@*@labelprefix}}
+ {\letcs{\@lnw@labelprefix}{abx@ffd@\blx@imc@thefield{entrytype}@labelprefix}}%
+ \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber}
+ {\letcs{\@lnw@labelnumber}{abx@ffd@*@labelnumber}}
+ {\letcs{\@lnw@labelnumber}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber}}%
+ \ifundef\abx@field@shorthand
+ {\iftoggle{blx@defernumbers}
+ % only if defernumbers=true, we have to define localnumber to
+ % something to stop labelnumberwidth def complaining on first
+ % post-backend run since there will be nothing in the .aux yet
+ % for defernums localnumbers. On the second post-backend run,
+ % it will have a value correct for generating labelnumberwidth
+ % We also have to define a dummy value for labelnumber here for
+ % first post-backend runs otherwise references to labelnumber
+ % in cite styles like numeric-comp will die.
+ {\ifundef\abx@field@localnumber
+ {\numdef\abx@field@localnumber{0}%
+ \blx@bbl@fielddef{labelnumber}{0}}%
+ {}}
+ {\csnumgdef{blx@labelnumber@\the\c@refsection}{%
+ \csuse{blx@labelnumber@\the\c@refsection}+1}%
+ \edef\abx@field@localnumber{%
+ \csuse{blx@labelnumber@\the\c@refsection}}%
+ \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}}%
+ \iftoggle{blx@skipbib}
+ {}
+ {\blx@setlabwidth{\labelnumberwidth}{%
+ \csuse{@lnw@labelnumberwidth}{%
+ \ifdef\abx@field@labelprefix
+ {\csuse{@lnw@labelprefix}{\abx@field@labelprefix}}
+ {}%
+ \csuse{@lnw@labelnumber}{\abx@field@localnumber}}}}}
+ {\csgappto\blx@bbl@data{\let\abx@field@labelnumber\abx@field@shorthand}%
+ \iftoggle{blx@skipbib}
+ {}
+ {\blx@setlabwidth{\labelnumberwidth}{%
+ \csuse{@lnw@labelnumberwidth}{\abx@field@shorthand}}}}}}
+
+\def\blx@bbl@labelalpha{%
+ \ifundef\abx@field@labelalpha
+ {}
+ {\ifundef\abx@field@extraalpha
+ {}
+ {\ifnum\abx@field@extraalpha>\c@maxextraalpha
+ \global\c@maxextraalpha\abx@field@extraalpha\relax
+ \fi}%
+ \iftoggle{blx@skipbib}
+ {}
+ {\blx@setlabwidth{\labelalphawidth}{%
+ \csuse{abx@ffd@*@labelalphawidth}{%
+ \ifdef\abx@field@labelprefix
+ {\csuse{abx@ffd@*@labelprefix}{\abx@field@labelprefix}}
+ {}%
+ \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}%
+ \ifundef\abx@field@extraalpha
+ {}
+ {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}}
+
+\def\blx@bbl@labeltitle{%
+ \ifundef\abx@field@extratitle
+ {}
+ {\ifnum\abx@field@extratitle>\c@maxextratitle
+ \global\c@maxextratitle\abx@field@extratitle\relax
+ \fi}}
+
+\def\blx@bbl@labeltitleyear{%
+ \ifundef\abx@field@extratitleyear
+ {}
+ {\ifnum\abx@field@extratitleyear>\c@maxextratitleyear
+ \global\c@maxextratitleyear\abx@field@extratitleyear\relax
+ \fi}}
+
+\def\blx@bbl@labeldate{%
+ \ifundef\abx@field@extrayear
+ {}
+ {\ifnum\abx@field@extrayear>\c@maxextrayear
+ \global\c@maxextrayear\abx@field@extrayear\relax
+ \fi}}
+
+\def\blx@bbl@titles{%
+ \ifundef\abx@field@indextitle
+ {\csgappto\blx@bbl@data{%
+ \let\abx@field@indextitle\abx@field@title}}
+ {}%
+ \ifundef\abx@field@indexsorttitle
+ {\csgappto\blx@bbl@data{%
+ \let\abx@field@indexsorttitle\abx@field@indextitle}}
+ {}}
+
+\def\blx@bbl@hooks{%
+ \ifcsundef{blx@hook@bblitem@*}
+ {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype}
+ {}
+ {\csuse\blx@bbl@data
+ \csuse{blx@hook@bblitem@\abx@field@entrytype}}}
+ {\csuse\blx@bbl@data
+ \csuse{blx@hook@bblitem@*}%
+ \csuse{blx@hook@bblitem@\abx@field@entrytype}}}
+
+\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}}
+\@onlypreamble\AtDataInput
+
+\def\blx@setlabwidth#1#2{%
+ \begingroup
+ \settowidth{\@tempdima}{\bibfont#2}%
+ \ifnum\@tempdima>#1%
+ \global#1\@tempdima
+ \fi
+ \endgroup}
+
+\def\blx@bblstart{%
+ \let\preamble\blx@bbl@preamble
+ \let\warn\blx@bbl@thewarn
+ \let\refsection\blx@bbl@refsection
+ \let\endrefsection\blx@bbl@endrefsection
+ \let\entry\blx@bbl@entry
+ \let\endentry\blx@bbl@endentry
+ \let\missing\blx@bbl@missing
+ \let\keyalias\blx@bbl@keyalias
+ \let\sortlist\blx@bbl@slist
+ \let\endsortlist\blx@bbl@endslist
+ \let\set\blx@bbl@set
+ \let\inset\blx@bbl@inset
+ \let\xref\blx@bbl@xref % A No-op for Biber
+ \let\keyw\blx@bbl@keyw
+ \let\name\blx@bbl@namedef
+ \let\list\blx@bbl@listdef
+ \let\field\blx@bbl@fielddef
+ \let\range\blx@bbl@rangedef
+ \let\strng\blx@bbl@stringdef
+ \let\cnt\blx@bbl@cntdef
+ \let\true\blx@bbl@booltrue
+ \let\false\blx@bbl@boolfalse
+ \let\verb\blx@bbl@verbdef
+ \let\endverb\blx@bbl@verbend
+ \let\lverb\blx@bbl@verbldef
+ \let\endlverb\blx@bbl@verblend
+ \let\annotation\blx@bbl@annotationdef}
+
+\def\blx@bblend{}
+
+% {<entrykey>}
+% Get the saved information on which citations were mentioned last run
+\protected\def\abx@aux@cite#1{%
+ \listxadd\blx@lastcites{\detokenize{#1}}}
+
+% {<sortschemename>}
+% Get the saved information on which sorting schemes were mentioned last run
+\protected\def\abx@aux@sortscheme#1{%
+ \listgadd\blx@lastsortschemes{#1}}
+
+% {<refcontext>}
+% Get the saved information on which refcontexts were mentioned last run
+\protected\def\abx@aux@refcontext#1{%
+ \listgadd\blx@lastrefcontexts{#1}}
+
+% {<sortschemename>}
+% Get the saved information on which shorthand sorting schemes were mentioned last run
+\protected\def\abx@aux@biblist#1{%
+ \listgadd\blx@lastbiblists{#1}}
+
+% Here we mustn't change the checksum if we used localnumbers from the
+% .aux file as this means that deferred numbering is
+% complete. Otherwise we get in an endless rerun loop because the
+% checksum due to number changes is always different.
+\AtEndDocument{%
+ \def\abx@aux@number#1#2#3#4#5{%
+ \ifblank{#5}
+ {}
+ {\nottoggle{blx@localnumber}
+ {\blx@addchecksum{#1}{#5}}
+ {}}}}
+
+\AtEndDocument{%
+ % Here we run some tests to decide if we need to issue re-run
+ % messages in certain circumstances. In general, if we add/remove
+ % any citations or add/remove any sorting schemes, we need to re-run
+ % biber. Also, if we have to re-run biber, we need to defer writing
+ % the defernumbers .aux information because it will not yet be correct.
+
+ % Test to see if we *removed* any citations since last run
+ % (adding citations is dealt with naturally in \blx@citation@entry)
+ % If so, give a rerun biber message. This also sets the
+ % rerun biber toggle so defernums doesn't consume the localnumbers
+ % in the .aux but instead, re-writes them, which is what we need.
+ \begingroup
+ \def\do#1{\ifinlist{#1}{\blx@cites}{}{\blx@logreq@active{}}\relax}%
+ \dolistloop\blx@lastcites
+ % Special case - if we are using sortscheme "none" anywhere, then changes
+ % in citation order matter and we need to re-run biber. So a special test
+ % to see if the cites from last run are identical in order. We have
+ % already tested for more or less cites between runs by now, we are
+ % testing here for exactly the same cites by treating the cite and
+ % lastcite lists as strings and comparing them. This doesn't apply
+ % to biblist sortschemes as nobody wants to sort biblists with
+ % "none", since it makes no sense
+ \ifinlist{none}{\blx@sortschemes}
+ {\ifdefstrequal{\blx@cites}{\blx@lastcites}
+ {}
+ {\blx@logreq@active{}}}
+ {}%
+ % Test if we removed any mention of a reference context since last run
+ % If we did, we need to re-run biber
+ \def\do#1{\ifinlist{#1}{\blx@refcontexts}{}{\blx@logreq@active{}}\relax}%
+ \dolistloop\blx@lastrefcontexts
+ % Test if we added any mention of a reference context since last run
+ % If we did, we need to re-run biber
+ \def\do#1{\ifinlist{#1}{\blx@lastrefcontexts}{}{\blx@logreq@active{}}\relax}%
+ \dolistloop\blx@refcontexts
+ % Test if we removed any mention of a biblist since last run.
+ % If we did, we need to re-run biber
+ \def\do#1{\ifinlist{#1}{\blx@biblists}{}{\blx@logreq@active{}}\relax}%
+ \dolistloop\blx@lastbiblists
+ % Test to see if we added any mention of a biblist since last run.
+ % If we did, we need to re-run biber
+ \def\do#1{\ifinlist{#1}{\blx@lastbiblists}{}{\blx@logreq@active{}}\relax}%
+ \dolistloop\blx@biblists
+ % If we have to run biber or latex again and we are using defernumbers,
+ % don't write the localnumber information to the .aux file yet as we will
+ % potentially have to regenerate sorting order first in biber
+ \iftoggle{blx@defernumbers}
+ {\iftoggle{blx@runbiber}
+ {}
+ {\def\do#1{\blx@auxwrite\@mainaux{}{#1}}
+ \dolistloop\blx@localnumaux}}
+ {}%
+ \endgroup}
+
+% {<instcount>}{<entrykey>}{<refsection>}{<refcontext>}{<labelnumber>}
+\protected\def\blx@aux@number#1#2#3#4#5{%
+ \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}%
+ \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}%
+ \global\toggletrue{blx@localnumber}%
+ \ifblank{#5}
+ {}
+ {\csgdef{blx@labelnumber@#3}{#5}}}
+
+% Called as part of bib output for an entry
+% Only used when defernumbers=true
+\def\blx@addlabelnumber{%
+ \begingroup
+ \nottoggle{blx@skiplab}
+ {\iftoggle{blx@labelnumber}
+ {\ifundef\abx@field@shorthand
+ % Need to know if we set any localnumber from .aux file, not
+ % just current item. Otherwise, we may just write new
+ % localnumbers but not existing ones
+ % Also, don't want to regenerate localnumber for any key in a
+ % refsection which we've already seen because this has the nasty
+ % side-effect of incrementing the localnum counter
+ {\ifboolexpr { not togl {blx@localnumber}
+ and
+ not test {\ifcsdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}} }
+ {\iftoggle{blx@omitnumbers}
+ {\let\abx@field@localnumber\@empty}
+ {\csnumgdef{blx@labelnumber@\the\c@refsection}{%
+ \csuse{blx@labelnumber@\the\c@refsection}+1}%
+ \edef\abx@field@localnumber{%
+ \csuse{blx@labelnumber@\the\c@refsection}}%
+ \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
+ {localnumber}{\blx@refcontext@context}{\abx@field@localnumber}}}
+ {}%
+ % If localnumbers were already in the .aux, add them
+ % again from the .aux. This prevents some cycling
+ % problems where pagebreaks change after localnumber
+ % settles down and then we need another run which then
+ % regenerates localnumber requiring another run but then
+ % the pagebreaks change back again ... etc.
+ \ifcsundef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}
+ {\listxadd\blx@localnumaux{%
+ \string\abx@aux@number%
+ {\the\c@instcount}%
+ {\abx@field@entrykey}%
+ {\the\c@refsection}%
+ {\blx@refcontext@context}%
+ {\abx@field@localnumber}}%
+ % record that we have already generated and output localnum
+ % for this key in this refsection/refcontext
+ \csgdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}{}}
+ {}}
+ {}}%
+ {}}
+ {}%
+ \endgroup}
+
+% {<sortlistname>}
+\def\blx@bbl@slist[#1]#2{%
+ \begingroup
+ \def\blx@slist@type{#1}%
+ \def\blx@slist@name{#2}}
+
+\def\blx@bbl@endslist{%
+ \csnumgdef{blx@labelnumber@\the\c@refsection}{0}%
+ \endgroup}
+
+\def\blx@addpageref#1{%
+ \begingroup
+ \blx@tempcnta\z@
+ \let\blx@tempa\@empty
+ \def\do##1{%
+ \appto\blx@tempa{{##1}}%
+ \advance\blx@tempcnta\@ne}%
+ \dolistcsloop{blx@pref@\the\c@refsection @#1}%
+ \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef
+ {pageref}{\the\blx@tempcnta}{\blx@tempa}}%
+ \blx@tempa}
+
+%% Data input
+
+\def\blx@bblinput{%
+ \begingroup
+ \blx@info@noline{Trying to load bibliographic data..}%
+ \blx@blxinit
+ \blx@bblfile
+ \endgroup}
+
+\def\blx@bblfile{%
+ \blx@secinit
+ \begingroup
+ \blx@bblstart
+ \blx@ifsigned{\jobname}{bbl}
+ {\InputIfFileExists{\jobname.bbl}
+ {\blx@info@noline{... file '\jobname.bbl' found}%
+ \global\toggletrue{blx@bbldone}}
+ {\blx@info@noline{... file '\jobname.bbl' not found}%
+ \typeout{No file \jobname.bbl.}}}
+ {}%
+ \blx@bblend
+ \endgroup
+ % global sorting as this is called at BeginDocument
+ \csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
+
+%% Bibliography
+
+% {<name>}{<start code>}[<end code>]{<item code>}
+\newrobustcmd*{\defbibenvironment}[4]{%
+ \long\csdef{blx@env@#1}{#2}%
+ \long\csdef{blx@endenv@#1}{#3}%
+ \long\csdef{blx@item@#1}{#4}}
+
+\defbibenvironment{bibliography}
+ {\list{}{%
+ \leftmargin\bibhang
+ \itemindent-\leftmargin
+ \itemsep\bibitemsep
+ \parsep\bibparsep}}
+ {\endlist}
+ {\item}
+
+\def\do#1{%
+ \defbibenvironment{#1}
+ {\list{\thefield{#1}}{%
+ \labelwidth\csname #1width\endcsname
+ \labelsep\biblabelsep
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \itemsep\bibitemsep
+ \parsep\bibparsep
+ \def\makelabel####1{####1\hss}}}
+ {\endlist}
+ {\item}}
+\abx@dolabelfields
+
+% {<name>}[<default>]{<code>}
+\newrobustcmd*{\defbibheading}[1]{%
+ \@ifnextchar[%]
+ {\blx@defbibheading{blx@head@#1}}
+ {\blx@defbibheading{blx@head@#1}[\bibname]}}
+
+\def\blx@defbibheading#1[#2]{%
+ \csundef{#1}%
+ \expandafter\newcommand\csname#1\endcsname[1][#2]}
+
+% {<name>}{<text>}
+\newrobustcmd*{\defbibnote}[1]{%
+ \long\csdef{blx@note@#1}}
+
+% {<name>}{<code>}
+\newrobustcmd*{\defbibfilter}[2]{%
+ \begingroup
+ \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}%
+ \let\not\blx@flt@not \let\NOT\not
+ \let\and\blx@flt@and \let\AND\and
+ \let\or\blx@flt@or \let\OR\or
+ \letcs\({blx@flt@(} \letcs\){blx@flt@)}%
+ \def\section##1{\blx@flt@error}%
+ \def\segment##1{segment=##1}%
+ \def\type##1{type=##1}%
+ \def\subtype##1{subtype=##1}%
+ \def\keyword##1{keyword={##1}}%
+ \def\category##1{category={##1}}%
+ \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}%
+ \ifdef\blx@flt@errortrue
+ {\blx@err@filter}
+ {\let\the\relax
+ \let\blx@flt@item\relax
+ \edef\blx@tempa{\blx@tempa}%
+ \ifdef\blx@flt@errortrue
+ {\blx@err@filter}
+ {\csxdef{blx@filter@#1}{\blx@tempa}}}%
+ \endgroup}
+
+\def\blx@defbibfilter#1{%
+ \blx@defbibfilter@i#1 &}
+\def\blx@defbibfilter@i#1 #2&{%
+ \blx@defbibfilter@ii#1==&%
+ \ifblank{#2}{}{\blx@defbibfilter@i#2 &}}
+\def\blx@defbibfilter@ii#1=#2=#3&{%
+ \ifblank{#2}
+ {\ifblank{#1}
+ {}
+ {\ifcsdef{blx@flt@#1}
+ {\csname blx@flt@#1\endcsname}
+ {\blx@flt@error}}}
+ {\ifcsdef{blx@flt@#1}
+ {\csname blx@flt@#1\endcsname{\detokenize{#2}}}
+ {\blx@flt@error}}}
+
+\def\blx@flt@and{ and }
+\def\blx@flt@or{ or }
+\def\blx@flt@not{ not }
+\csdef{blx@flt@(}{ ( }
+\csdef{blx@flt@)}{ ) }
+\def\blx@flt@segment#1{%
+ test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}}
+\def\blx@flt@type#1{%
+ test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}}
+\def\blx@flt@subtype#1{%
+ test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}}
+\def\blx@flt@keyword#1{%
+ test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}}
+\def\blx@flt@category#1{%
+ test {\xifinlistcs\blx@flt@item{blx@catg@#1}}}
+
+% {<name>}{<code>}
+\newrobustcmd*{\defbibcheck}[2]{%
+ \csdef{blx@bibcheck@#1}{%
+ \togglefalse{blx@skipentry}%
+ \def\skipentry{\toggletrue{blx@skipentry}}%
+ #2\undef\skipentry}}
+
+% options
+% We need a 2-pass structure for options in \printbibliography and
+% \printbiblist because the section has to be set before any
+% other options and this partly determines which list to use for later filtering
+\define@key{blx@bib1}{segment}{}
+\define@key{blx@bib1}{type}{}
+\define@key{blx@bib1}{nottype}{}
+\define@key{blx@bib1}{subtype}{}
+\define@key{blx@bib1}{notsubtype}{}
+\define@key{blx@bib1}{keyword}{}
+\define@key{blx@bib1}{notkeyword}{}
+\define@key{blx@bib1}{category}{}
+\define@key{blx@bib1}{notcategory}{}
+\define@key{blx@bib1}{filter}{}
+\define@key{blx@bib1}{check}{}
+\define@key{blx@bib1}{heading}{}
+\define@key{blx@bib1}{env}{}
+\define@key{blx@bib1}{title}{}
+\define@key{blx@bib1}{prenote}{}
+\define@key{blx@bib1}{postnote}{}
+\define@key{blx@bib1}{resetnumbers}[]{}
+\define@key{blx@bib1}{omitnumbers}[]{}
+\define@key{blx@bib1}{prefixnumbers}{}% legacy name for labelprefix
+
+\define@key{blx@bib2}{section}{}
+\define@key{blx@bib2}{sorting}{}
+
+\define@key{blx@biblist1}{segment}{}
+\define@key{blx@biblist1}{type}{}
+\define@key{blx@biblist1}{nottype}{}
+\define@key{blx@biblist1}{subtype}{}
+\define@key{blx@biblist1}{notsubtype}{}
+\define@key{blx@biblist1}{keyword}{}
+\define@key{blx@biblist1}{notkeyword}{}
+\define@key{blx@biblist1}{category}{}
+\define@key{blx@biblist1}{notcategory}{}
+\define@key{blx@biblist1}{filter}{}
+\define@key{blx@biblist1}{check}{}
+\define@key{blx@biblist1}{heading}{}
+\define@key{blx@biblist1}{env}{}
+\define@key{blx@biblist1}{title}{}
+\define@key{blx@biblist1}{prenote}{}
+\define@key{blx@biblist1}{postnote}{}
+
+\define@key{blx@biblist2}{section}{}
+\define@key{blx@biblist2}{sorting}{}
+
+\define@key{blx@bib1}{sorting}{%
+ \blx@warning@noline{%
+ sorting option to \string\printbibliography\space is no longer supported, use 'sorting' option to \string\newrefcontext}}
+
+\define@key{blx@bib1}{section}{%
+ \ifcsundef{blx@sections@#1}
+ {\blx@err@nosec{#1}}
+ {\c@refsection#1\relax
+ \def\blx@tempe{#1}}}
+
+\define@key{blx@biblist1}{section}{%
+ \ifcsundef{blx@sections@#1}
+ {\blx@err@nosec{#1}}
+ {\c@refsection#1\relax
+ \def\blx@tempe{#1}}}
+
+\define@key{blx@biblist1}{sorting}{%
+ \blx@warning@noline{%
+ sorting option to \string\printbiblist\space is no longer supported, use 'sorting' option to \string\newrefcontext}}
+
+\define@key{blx@bbg}{section}{%
+ \ifcsundef{blx@sections@#1}
+ {\blx@err@nosec{#1}}
+ {\c@refsection#1\relax}}
+
+\define@key{blx@bbc}{section}{%
+ \ifcsundef{blx@sections@#1}
+ {\blx@err@nosec{#1}}
+ {\c@refsection#1\relax}}
+
+\define@key{blx@bib2}{segment}{\blx@key@segment{#1}}
+\define@key{blx@biblist2}{segment}{\blx@key@segment{#1}}
+
+\def\blx@key@segment#1{%
+ \ifcsundef{blx@segm@\the\c@refsection @#1}
+ {\blx@warning{Segment '#1' not found in section '\the\c@refsection'}}
+ {\c@refsegment#1\relax
+ \blx@printbibchecks
+ \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}}
+
+\define@key{blx@bib2}{type}{\blx@key@type{#1}}
+\define@key{blx@biblist2}{type}{\blx@key@type{#1}}
+
+\def\blx@key@type#1{%
+ \ifcsundef{blx@type@\the\c@refsection @#1}
+ {\blx@warning{Type '#1' not found}%
+ \let\blx@tempa\@empty}
+ {\blx@printbibchecks
+ \iftoggle{blx@tempb}
+ {\togglefalse{blx@tempb}%
+ \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}}
+ {\let\blx@tempa\@empty
+ \blx@error
+ {'type' used multiple times}
+ {When passing multiple filter options, each entry\MessageBreak
+ must satisfy all conditions (AND conjunction),\MessageBreak
+ hence some options may not be used twice.\MessageBreak
+ Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
+
+\define@key{blx@bib2}{nottype}{\blx@key@nottype{#1}}
+\define@key{blx@biblist2}{nottype}{\blx@key@nottype{#1}}
+
+\def\blx@key@nottype#1{%
+ \ifcsundef{blx@type@\the\c@refsection @#1}
+ {}
+ {\blx@printbibchecks
+ \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}}
+
+\define@key{blx@bib2}{subtype}{\blx@key@subtype{#1}}
+\define@key{blx@biblist2}{subtype}{\blx@key@subtype{#1}}
+
+\def\blx@key@subtype#1{%
+ \ifcsundef{blx@subt@\the\c@refsection @#1}
+ {\blx@warning{Subtype '#1' not found}%
+ \let\blx@tempa\@empty}
+ {\blx@printbibchecks
+ \iftoggle{blx@tempb}
+ {\togglefalse{blx@tempb}%
+ \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}}
+ {\let\blx@tempa\@empty
+ \blx@error
+ {'subtype' used multiple times}
+ {When passing multiple filter options, each entry\MessageBreak
+ must satisfy all conditions (AND conjunction),\MessageBreak
+ hence some options may not be used twice.\MessageBreak
+ Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
+
+\define@key{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}}
+\define@key{blx@biblist2}{notsubtype}{\blx@key@notsubtype{#1}}
+
+\def\blx@key@notsubtype#1{%
+ \ifcsundef{blx@subt@\the\c@refsection @#1}
+ {}
+ {\blx@printbibchecks
+ \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}}
+
+\define@key{blx@bib2}{keyword}{\blx@key@keyword{#1}}
+\define@key{blx@biblist2}{keyword}{\blx@key@keyword{#1}}
+
+\def\blx@key@keyword#1{%
+ \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
+ {\blx@warning{Keyword '\detokenize{#1}' not found}%
+ \let\blx@tempa\@empty}
+ {\blx@printbibchecks
+ \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
+
+\define@key{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}}
+\define@key{blx@biblist2}{notkeyword}{\blx@key@notkeyword{#1}}
+
+\def\blx@key@notkeyword#1{%
+ \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
+ {}
+ {\blx@printbibchecks
+ \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
+
+\define@key{blx@bib2}{category}{\blx@key@category{#1}}
+\define@key{blx@biblist2}{category}{\blx@key@category{#1}}
+
+\def\blx@key@category#1{%
+ \ifcsundef{blx@catg@\detokenize{#1}}
+ {\blx@warning{Category '\detokenize{#1}' not found}%
+ \let\blx@tempa\@empty}
+ {\blx@printbibchecks
+ \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}}
+
+\define@key{blx@bib2}{notcategory}{\blx@key@notcategory{#1}}
+\define@key{blx@biblist2}{notcategory}{\blx@key@notcategory{#1}}
+
+\def\blx@key@notcategory#1{%
+ \ifcsundef{blx@catg@#1}
+ {}
+ {\blx@printbibchecks
+ \blx@notfilter\blx@tempa{blx@catg@#1}}}
+
+\define@key{blx@bib2}{filter}{\blx@key@filter{#1}}
+\define@key{blx@biblist2}{filter}{\blx@key@filter{#1}}
+
+\def\blx@key@filter#1{%
+ \ifcsdef{blx@filter@#1}
+ {\blx@printbibchecks
+ \blx@bibfilter\blx@tempa{blx@filter@#1}}
+ {\let\blx@tempa\@empty
+ \blx@error
+ {Filter '#1' not found}
+ {The filter '#1' could not be found.\MessageBreak
+ Use \string\defbibfilter\space to define it}}}
+
+\define@key{blx@bib2}{check}{\blx@key@bibcheck{#1}}
+\define@key{blx@biblist2}{check}{\blx@key@bibcheck{#1}}
+
+\def\blx@key@bibcheck#1{%
+ \ifcsdef{blx@bibcheck@#1}
+ {\letcs\blx@bibcheck{blx@bibcheck@#1}}
+ {\let\blx@tempa\@empty
+ \blx@error
+ {Check '#1' not found}
+ {The check '#1' could not be found.\MessageBreak
+ Use \string\defbibcheck\space to define it}}}
+
+\define@key{blx@bhd}{heading}{\blx@key@heading{#1}}
+\define@key{blx@bib2}{heading}{\blx@key@heading{#1}}
+\define@key{blx@biblist2}{heading}{\blx@key@heading{#1}}
+\define@key{blx@bbs}{heading}{\blx@key@heading{#1}}
+\define@key{blx@bbg}{heading}{\blx@key@heading{#1}}
+
+\def\blx@key@heading#1{%
+ \ifcsundef{blx@head@#1}
+ {\blx@error
+ {Heading '#1' not found}
+ {The heading '#1' could not be found.\MessageBreak
+ Use \string\defbibheading\space to define it}}
+ {\def\blx@theheading{#1}}}
+
+\define@key{blx@bib2}{env}{\blx@key@env{#1}}
+\define@key{blx@biblist2}{env}{\blx@key@env{#1}}
+\define@key{blx@bbs}{env}{\blx@key@env{#1}}
+\define@key{blx@bbg}{env}{\blx@key@env{#1}}
+\define@key{blx@bbc}{env}{\blx@key@env{#1}}
+
+\def\blx@key@env#1{%
+ \ifcsundef{blx@env@#1}
+ {\blx@error
+ {Environment '#1' not found}
+ {The environment '#1' could not be found.\MessageBreak
+ Use \string\defbibenvironment\space to define it}}
+ {\def\blx@theenv{#1}}}
+
+\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}}
+\define@key{blx@bib2}{title}{\def\blx@thetitle{#1}}
+\define@key{blx@biblist2}{title}{\def\blx@thetitle{#1}}
+
+\define@key{blx@bib2}{prenote}{\blx@key@prenote{#1}}
+\define@key{blx@biblist2}{prenote}{\blx@key@prenote{#1}}
+\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}}
+\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}}
+\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}}
+\def\blx@key@prenote#1{%
+ \ifcsundef{blx@note@#1}
+ {\blx@error
+ {Note '#1' not found}
+ {The note '#1' could not be found.\MessageBreak
+ Use \string\defbibnote\space to define it}}
+ {\def\blx@theprenote{#1}}}
+
+\define@key{blx@bib2}{postnote}{\blx@key@postnote{#1}}
+\define@key{blx@biblist2}{postnote}{\blx@key@postnote{#1}}
+\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}}
+\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}}
+\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}}
+
+\def\blx@key@postnote#1{%
+ \ifcsundef{blx@note@#1}
+ {\blx@error
+ {Note '#1' not found}
+ {The note '#1' could not be found.\MessageBreak
+ Use \string\defbibnote\space to define it}}
+ {\def\blx@thepostnote{#1}}}
+
+\define@key{blx@bib2}{resetnumbers}[true]{%
+ \iftoggle{blx@defernumbers}
+ {\ifstrequal{#1}{true}
+ {\csnumdef{blx@labelnumber@\the\c@refsection}{0}}
+ {\ifstrequal{#1}{false}
+ {}
+ {\csnumdef{blx@labelnumber@\the\c@refsection}{#1-1}}}}
+ {\blx@warning{%
+ Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak
+ Ignoring 'resetnumbers=true'}}}
+
+\define@key{blx@bib2}{omitnumbers}[true]{%
+ \ifstrequal{#1}{true}
+ {\iftoggle{blx@defernumbers}
+ {\toggletrue{blx@omitnumbers}}
+ {\blx@warning{%
+ Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak
+ Ignoring 'omitnumbers=true'}}}
+ {}}
+
+\define@key{blx@bib2}{prefixnumbers}{%
+ \blx@warning@noline{%
+ prefixnumbers option to \string\printbibliography\space is no longer supported, use 'labelprefix' option to \string\newrefcontext}}
+
+% [<options>]
+\newrobustcmd*{\printbibheading}{%
+ \begingroup
+ \edef\on@line{\on@line}%
+ \@ifnextchar[%]
+ {\blx@printbibheading}
+ {\blx@printbibheading[]}}
+
+\def\blx@printbibheading[#1]{%
+ \def\blx@theheading{bibliography}%
+ \let\blx@thetitle\@empty
+ \blx@safe@actives
+ \setkeys{blx@bhd}{#1}%
+ \blx@rest@actives
+ \blx@langstrings
+ \blx@bibheading\blx@theheading\blx@thetitle
+ \endgroup}
+
+% [<options>]
+\newrobustcmd*{\printbibliography}{%
+ \begingroup
+ \delimcontext{bib}%
+ \edef\on@line{\on@line}%
+ \@ifnextchar[%]
+ {\blx@printbibliography}
+ {\blx@printbibliography[]}}
+
+\def\blx@printbibliography[#1]{%
+ \ifdefempty\blx@refcontext@labelprefix
+ {}
+ {\csnumdef{blx@labelnumber@\the\c@refsection}{0}}%
+ \toggletrue{blx@tempa}%
+ \toggletrue{blx@tempb}%
+ \def\blx@theheading{bibliography}%
+ \def\blx@theenv{bibliography}%
+ \let\blx@theprenote\@empty
+ \let\blx@thepostnote\@empty
+ \let\blx@thetitle\@empty
+ % defaults
+ \let\blx@tempa\@empty% before there is a .bbl, this must not be undef
+ \edef\blx@tempd{%
+ \blx@xml@sorting{%
+ \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting}
+ { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"}
+ {}}{%
+ \csuse{blx@sorting@\blx@refcontext@sorting}}}% default to context
+ \edef\blx@tempe{\the\c@refsection}% default refsection is current
+ \blx@safe@actives
+ \edef\blx@tempd{%
+ \blx@xml@sorting{%
+ \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting}
+ { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"}
+ {}}{%
+ \csuse{blx@sorting@\blx@refcontext@sorting}}}%
+ \setkeys{blx@bib1}{#1}% Set section only, if present ...
+ \blx@rest@actives
+ \ifcsvoid{blx@slist@entry@\blx@tempe @\blx@refcontext@context}
+ {}
+ {\letcs\blx@tempa{blx@slist@entry@\blx@tempe @\blx@refcontext@context}}%
+ \blx@safe@actives
+ % Must reset omitnumbers as it's a global macro and if we don't, any
+ % \printbibliography following one with this set will inherit any
+ % previous "true" value
+ \togglefalse{blx@omitnumbers}%
+ \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options
+ \blx@rest@actives
+ \csxappto{blx@slists}{%
+ \blx@xml@slist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@refcontext@sorting}{\blx@refcontext@sortingnamekey}{\blx@refcontext@labelprefix}{\blx@tempd}{}}%
+ \ifdefvoid\blx@tempa
+ {\blx@warn@bibempty\endgroup}
+ {\blx@bibliography\blx@tempa}}
+
+% [<options>]
+\newrobustcmd*{\bibbysection}{%
+ \begingroup
+ \delimcontext{bib}%
+ \ifnum\blx@maxsection=\z@
+ \blx@warning{No reference sections found}%
+ \fi
+ \edef\on@line{\on@line}%
+ \@ifnextchar[%]
+ {\blx@bibbysection}
+ {\blx@bibbysection[]}}
+
+\def\blx@bibbysection[#1]{%
+ \def\blx@theheading{bibliography}%
+ \def\blx@theenv{bibliography}%
+ \let\blx@theprenote\@empty
+ \let\blx@thepostnote\@empty
+ \let\blx@thetitle\@empty
+ \c@refsection\z@
+ \blx@safe@actives
+ \setkeys{blx@bbs}{#1}%
+ \blx@rest@actives
+ \togglefalse{blx@tempa}%
+ \blx@refsections}
+
+\def\blx@refsections{%
+ \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
+ {}
+ {\toggletrue{blx@tempa}%
+ \begingroup
+ \expandafter\blx@bibliography\csname blx@slist@entry@\the\c@refsection @\blx@refcontext@context\endcsname}%
+ \ifnum\c@refsection<\blx@maxsection
+ \advance\c@refsection\@ne
+ \expandafter\blx@refsections
+ \else
+ \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
+ \endgroup
+ \fi}
+
+% [<options>]
+\newrobustcmd*{\bibbysegment}{%
+ \begingroup
+ \delimcontext{bib}%
+ \edef\on@line{\on@line}%
+ \ifnum\csname blx@maxsegment@\the\c@refsection\endcsname=\z@
+ \blx@warning{No reference segments found}%
+ \fi
+ \@ifnextchar[%]
+ {\blx@bibbysegment}
+ {\blx@bibbysegment[]}}
+
+\def\blx@bibbysegment[#1]{%
+ \def\blx@theheading{bibliography}%
+ \def\blx@theenv{bibliography}%
+ \let\blx@theprenote\@empty
+ \let\blx@thepostnote\@empty
+ \let\blx@thetitle\@empty
+ \c@refsegment\@ne
+ \blx@safe@actives
+ \setkeys{blx@bbg}{#1}%
+ \blx@rest@actives
+ \togglefalse{blx@tempa}%
+ \blx@refsegments}
+
+\def\blx@refsegments{%
+ \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment}
+ {}
+ {\toggletrue{blx@tempa}%
+ \begingroup
+ \let\blx@tempa\@empty
+ \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
+ {}
+ {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}%
+ \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}%
+ \blx@bibliography\blx@tempa}%
+ \ifnum\c@refsegment<\csname blx@maxsegment@\the\c@refsection\endcsname
+ \advance\c@refsegment\@ne
+ \expandafter\blx@refsegments
+ \else
+ \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
+ \endgroup
+ \fi}
+
+% [<options>]
+\newrobustcmd*{\bibbycategory}{%
+ \begingroup
+ \delimcontext{bib}%
+ \edef\on@line{\on@line}%
+ \ifx\blx@categories\@empty
+ \blx@warning{No categories found}%
+ \fi
+ \@ifnextchar[%]
+ {\blx@bibbycategory}
+ {\blx@bibbycategory[]}}
+
+\def\blx@bibbycategory[#1]{%
+ \def\blx@theheading{bibliography}%
+ \def\blx@theenv{bibliography}%
+ \let\blx@theprenote\@empty
+ \let\blx@thepostnote\@empty
+ \let\blx@thetitle\@empty
+ \c@refsection\z@
+ \blx@safe@actives
+ \setkeys{blx@bbc}{#1}%
+ \blx@rest@actives
+ \togglefalse{blx@tempa}%
+ \forlistloop\blx@bibcategory\blx@categories
+ \blx@endbibcategory}
+
+\def\blx@bibcategory#1{%
+ \ifcsvoid{blx@catg@#1}
+ {}
+ {\toggletrue{blx@tempa}%
+ \begingroup
+ \blx@key@heading{#1}%
+ \let\blx@tempa\@empty
+ \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
+ {}
+ {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}%
+ \blx@filter\blx@tempa{blx@catg@#1}%
+ \blx@bibliography\blx@tempa}}%
+
+\def\blx@endbibcategory{%
+ \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
+ \endgroup}
+
+% {<entrykey>,...}
+\def\blx@bibliography{%
+ \blx@langstrings
+ \blx@bibheading\blx@theheading\blx@thetitle
+ \blx@bibnote\blx@theprenote
+ \begingroup
+ \blx@bibinit
+ \let\@noitemerr\@empty
+ \let\blx@noitem\blx@warn@bibempty
+ \ifnum\bibinitsep=\z@
+ \let\blx@initsep\relax
+ \fi
+ \ifnum\bibnamesep=\z@
+ \let\blx@namesep\relax
+ \fi
+ \csuse{blx@env@\blx@theenv}%
+ \csuse{blx@hook@bibinit}%
+ \csuse{blx@hook@bibinit@next}%
+ \let\blx@do\blx@bibitem
+ \let\blx@done\blx@endbibliography
+ \blx@listloop}
+
+\def\blx@endbibliography{%
+ \csuse{blx@endenv@\blx@theenv}%
+ \blx@noitem
+ \endgroup
+ \blx@bibnote\blx@thepostnote
+ \endgroup}
+
+\def\blx@bibheading#1#2{%
+ \begingroup
+ \edef\blx@tempa{\endgroup
+ \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}%
+ \blx@tempa}
+
+\def\blx@bibheading@i#1#2{%
+ \let\newrefsection\relax
+ \let\newrefsegment\relax
+ \ifblank{#2}
+ {\csuse{blx@head@#1}}
+ {\csuse{blx@head@#1}[#2]}%
+ \let\newrefsection\blx@newrefsection
+ \let\newrefsegment\blx@newrefsegment}
+
+\def\blx@bibnote#1{%
+ \ifdefempty#1
+ {}
+ {\begingroup
+ \let\newrefsection\relax
+ \let\newrefsegment\relax
+ \noindent
+ \csuse{blx@note@#1}\par\nobreak
+ \endgroup}}
+
+\def\blx@bibinit{%
+ \iftoggle{blx@citation}
+ {}
+ {\toggletrue{blx@bibliography}}%
+ \blx@blxinit
+ \blx@resetdata
+ \csuse{blx@hook@bbxinit}%
+ \bibsetup\bibfont
+ \blx@setsfcodes
+ \csuse{blx@bibsetup}}
+
+% {<entrykey>}
+% output a bib item, this is why \blx@thelabelnumber is here so that
+% labelnumber is deferred if defernumbers=true
+\def\blx@bibitem#1{%
+ \blx@ifdata{#1}
+ {\begingroup
+ \blx@getdata{#1}%
+ \blx@bibcheck
+ \iftoggle{blx@skipentry}{}{%
+ \blx@setdefaultrefcontext{#1}%
+ \global\let\blx@noitem\@empty
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \blx@thelabelnumber
+ \addtocounter{instcount}\@ne
+ \csuse{blx@item@\blx@theenv}\relax
+ \blx@initsep
+ \blx@namesep
+ \csuse{blx@hook@bibitem}%
+ \blx@execute
+ \blx@initunit
+ \blx@anchor
+ \blx@beglangbib
+ \bibsentence
+ \blx@pagetracker
+ \blx@driver\abx@field@entrytype
+ \blx@postpunct
+ \blx@endlangbib}%
+ \endgroup}
+ {}}
+
+\let\blx@bibcheck\relax
+
+% This sets and saves to the .aux the default refcontext for an entry. The
+% default refcontext for an entry is the refcontext of the last
+% bibliography in the refsection in which it is actually printed . This
+% allows citations to default to selecting data from the correct
+% bibliography list in standard cases where entries are not listed in
+% multiple bibliographies
+\def\blx@setdefaultrefcontext#1{%
+ \ifbool{refcontextdefaults}
+ {\blx@rerun@latex}%
+ {}%
+ \ifinlistcs{#1}{blx@defaultrefcontexts@\the\c@refsection}
+ {}
+ {\listcsgadd{blx@defaultrefcontexts@\the\c@refsection}{#1}}%
+ \csxdef{blx@assignedrefcontextbib@\the\c@refsection @#1}{\blx@refcontext@context}}
+% <refsection><key><refcontext>
+\def\abx@aux@defaultrefcontext#1#2#3{%
+ \global\boolfalse{refcontextdefaults}%
+ \csxdef{blx@assignedrefcontextbib@#1@#2}{#3}}
+\def\abx@aux@refcontextdefaultsdone{%
+ \global\boolfalse{refcontextdefaults}}
+
+\AtEndDocument{%
+ % write the .aux to say we don't need to re-run to consume refcontext defaults
+ \ifbool{refcontextdefaults}
+ {}
+ {\blx@auxwrite\@mainaux{}{\string\abx@aux@refcontextdefaultsdone}}%
+ % always add default refcontext declarations to .aux after biber run
+ \iftoggle{blx@bbldone}
+ {\def\do#1{%
+ \begingroup
+ \def\do##1{%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@defaultrefcontext{#1}{##1}{\csuse{blx@assignedrefcontextbib@#1@##1}}}}%
+ \dolistcsloop{blx@defaultrefcontexts@#1}%
+ \endgroup}
+ \dolistloop\blx@allrefsections}
+ {}}
+
+\def\blx@initsep{%
+ \blx@imc@iffieldundef{sortinithash}
+ {}
+ {\ifnum\c@instcount>\@ne
+ \blx@imc@iffieldequals{sortinithash}\blx@previnithash
+ {}
+ {\addvspace{\bibinitsep}}%
+ \fi
+ \global\let\blx@previnithash\abx@field@sortinithash}}
+
+\def\blx@namesep{%
+ \ifnum\c@instcount>\@ne
+ \blx@imc@iffieldequals{fullhash}\blx@prevhash
+ {}
+ {\addvspace{\bibnamesep}}%
+ \fi
+ \global\let\blx@prevhash\abx@field@fullhash}
+
+\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit}
+\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem}
+\@onlypreamble\AtBeginBibliography
+\@onlypreamble\AtEveryBibitem
+
+\def\blx@imc@UseBibitemHook{\csuse{blx@hook@bibitem}}
+
+\blx@regimcs{\UseBibitemHook}
+
+\newrobustcmd*{\AtNextBibliography}{%
+ \ifundef\blx@hook@bibinit@next
+ {\gdef\blx@hook@bibinit@next{\global\undef\blx@hook@bibinit@next}}
+ {}%
+ \gappto\blx@hook@bibinit@next}
+
+% page tracker
+\def\blx@pagetracker@context{%
+ \blx@leavevmode
+ \ifbool{@filesw}
+ {\ifbool{pagetracker}
+ {\protected@write\@mainaux{}{%
+ \iftoggle{blx@footnote}
+ {\string\abx@aux@fnpage}
+ {\string\abx@aux@page}%
+ {\the\c@instcount}{\noexpand\the\c@page}}}
+ {}}
+ {}}
+
+% {<instcount>}{<page>}
+\protected\def\blx@aux@page#1#2{%
+ \csgdef{blx@page@#1}{#2}%
+ \blx@addpagesum{#1}{#2}}
+\protected\def\blx@aux@spread#1#2{%
+ \ifodd#2\relax
+ \csxdef{blx@page@#1}{\number\numexpr#2-1}%
+ \else
+ \csgdef{blx@page@#1}{#2}%
+ \fi
+ \blx@addpagesum{#1}{#2}}
+
+\protected\def\blx@aux@fnpage#1#2{%
+ \csgdef{blx@fnpage@#1}{#2}%
+ \blx@addpagesum{#1}{#2}}
+\protected\def\blx@aux@fnspread#1#2{%
+ \ifodd#2\relax
+ \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}%
+ \else
+ \csgdef{blx@fnpage@#1}{#2}%
+ \fi
+ \blx@addpagesum{#1}{#2}}
+
+\AtEndDocument{%
+ \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}%
+ \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}}
+
+% hyperref interface
+\appto\blx@mkhyperref{%
+ \let\blx@anchors\@empty
+ \ifundef\hyper@natanchorstart
+ {\protected\def\blx@anchor{%
+ \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
+ {}
+ {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
+ \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}}
+ {\protected\def\blx@anchor{%
+ \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
+ {}
+ {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
+ \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}%
+ \hyper@natanchorend}}}}
+
+\appto\blx@mknohyperref{\let\blx@anchor\relax}
+
+% Legacy alias for \printshorthands
+\def\printshorthands{%
+ \@ifnextchar[%]
+ {\blx@printshorthands}
+ {\blx@printshorthands[]}}
+
+\def\blx@printshorthands[#1]{\printbiblist[#1]{shorthand}}
+
+% Custom bibliography list
+% [<otions>]{biblistname}
+\newrobustcmd*{\printbiblist}[2][]{%
+ \begingroup
+ \delimcontext{biblist}%
+ \edef\on@line{\on@line}%
+ \toggletrue{blx@tempa}%
+ \toggletrue{blx@tempb}%
+ \def\blx@theheading{biblist}% default to biblist heading
+ \def\blx@theenv{#2}% default to list name
+ \def\blx@thebiblist{#2}%
+ \let\blx@theprenote\@empty
+ \let\blx@thepostnote\@empty
+ \let\blx@thetitle\@empty
+ % defaults
+ \let\blx@tempa\@empty% before there is a .bbl, this must not be undef
+ % default sorting scheme and scheme name for list is same name as list
+ % name, then current context if not found
+ \edef\blx@tempc{%
+ \ifcsdef{blx@sorting@#2}
+ {#2}
+ {\blx@refcontext@sorting}}%
+ % locally define this since we want to fetch data from the slist named
+ % after the list we are printing rather than the data in refcontext list
+ \edef\blx@refcontext@context{\blx@tempc/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}%
+ \edef\blx@tempd{%
+ \blx@xml@sorting
+ {\ifcsdef{blx@sortdef@locale@#2}
+ { locale="\csuse{blx@sortdef@locale@#2}"}
+ {}}
+ {\csuse{blx@sorting@\blx@tempc}}}%
+ \let\blx@printbibchecks\relax
+ \edef\blx@tempe{\the\c@refsection}% default refsection is current
+ \blx@safe@actives
+ \blx@printbibchecks
+ % Add the sortscheme to the list of sortschemes for this biblist
+ % so we can compare on next run
+ \xifinlist{\blx@tempc}{\blx@biblists}
+ {}
+ {\listxadd\blx@biblists\blx@tempc
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@biblist{\blx@tempc}}}%
+ \edef\blx@tempd{%
+ \blx@xml@sorting{%
+ \ifcsdef{blx@sortdef@locale@\blx@tempc}
+ { locale="\csuse{blx@sortdef@locale@\blx@tempc}"}
+ {}}{%
+ \csuse{blx@sorting@\blx@tempc}}}%
+ \setkeys{blx@biblist1}{#1}% Set section only, if present ...
+ \blx@rest@actives
+ \ifcsvoid{blx@slist@list@\blx@tempe @\blx@refcontext@context}
+ {}
+ {\letcs\blx@tempa{blx@slist@list@\blx@tempe @\blx@refcontext@context}}%
+ \blx@safe@actives
+ \setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options
+ \ifundef\blx@bibcheck
+ {\ifcsdef{blx@bibcheck@#2}
+ {\letcs\blx@bibcheck{blx@bibcheck@#2}}
+ {}}
+ {}%
+ \blx@rest@actives
+ \csxappto{blx@slists}{%
+ \blx@xml@slist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@tempc}{\blx@refcontext@sortingnamekey}{\blx@refcontext@labelprefix}{\blx@tempd}{\csuse{blx@biblistfilters@#2}}}%
+ \ifdefvoid\blx@tempa
+ {\blx@warn@biblistempty{#2}\endgroup}
+ {\blx@biblist\blx@tempa}}
+
+\def\blx@printbibchecks{%
+ \togglefalse{blx@tempa}%
+ \iftoggle{blx@defernumbers}
+ {\global\let\blx@printbibchecks\relax}
+ {\iftoggle{blx@labelnumber}
+ {\blx@warning@noline{Setting 'defernumbers=true' recommended}}
+ {\global\let\blx@printbibchecks\relax}}}
+
+% {<entrykey>,...}
+\def\blx@biblist{%
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \blx@langstrings
+ \blx@bibheading\blx@theheading\blx@thetitle
+ \blx@bibnote\blx@theprenote
+ \begingroup
+ \blx@bibinit
+ \let\@noitemerr\@empty
+ \def\blx@noitem{\blx@warn@biblistempty{\blx@thebiblist}}%
+ \csuse{blx@env@\blx@theenv}%
+ \csuse{blx@hook@biblistinit@\blx@thebiblist}%
+ \let\blx@do\blx@biblistitem
+ \let\blx@done\blx@endbiblist
+ \blx@listloop}
+
+\def\blx@endbiblist{%
+ \csuse{blx@endenv@\blx@theenv}%
+ \blx@noitem
+ \endgroup
+ \blx@bibnote\blx@thepostnote
+ \endgroup
+ \if@restonecol\twocolumn\fi}
+
+% Legacy aliases
+\def\AtBeginShorthands{\AtBeginBiblist{shorthand}}
+\def\AtEveryLositem{\AtEveryBiblistitem{shorthand}}
+\@onlypreamble\AtBeginShorthands
+\@onlypreamble\AtEveryLositem
+
+% {<biblistname>}
+\newrobustcmd*{\AtBeginBiblist}[1]{\csgappto{blx@hook@biblistinit@#1}}
+\newrobustcmd*{\AtEveryBiblistitem}[1]{\csgappto{blx@hook@biblistitem@#1}}
+\@onlypreamble\AtBeginBiblist
+\@onlypreamble\AtEveryBiblistitem
+
+% {<entrykey>}
+\def\blx@biblistitem#1{%
+ \blx@ifdata{#1}
+ {\begingroup
+ \blx@getdata{#1}%
+ \blx@bibcheck
+ \iftoggle{blx@skipentry}{}{%
+ \blx@setdefaultrefcontext{#1}%
+ \global\let\blx@noitem\@empty
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \addtocounter{instcount}\@ne
+ \csuse{blx@item@\blx@theenv}\relax
+ \csuse{blx@hook@biblistitem@\blx@thebiblist}%
+ \blx@execute
+ \blx@initunit
+ \blx@beglangbib
+ \bibsentence
+ \blx@pagetracker
+ \blx@driver{\blx@thebiblist}%
+ \blx@postpunct
+ \blx@endlangbib}%
+ \endgroup}
+ {}}
+
+% Just a default in case .bbx doesn't define it. standard.bbx defines
+% it to print a complete entry, like the bibliography.
+\DeclareBibliographyDriver{shorthand}{%
+ \iffieldundef{shorttitle}
+ {\printfield{title}}
+ {\printfield{shorttitle}}}
+
+% Reference contexts
+\def\newrefcontext{%
+ \endrefcontext
+ \refcontext}
+
+\def\refcontext[#1]{%
+ \iftoggle{blx@refcontext}
+ {\blx@err@nestenv{refcontext}%
+ \endrefcontext}
+ {\toggletrue{blx@refcontext}%
+ \setkeys{blx@refcontext}{#1}%
+ % Add the sortscheme to the list of sortschemes so we can track
+ % special cases like sorting=none which need cite order change detection
+ \xifinlist\blx@refcontext@sorting\blx@sortschemes
+ {}
+ {\listxadd\blx@sortschemes\blx@refcontext@sorting
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@refcontext@sorting}}}%
+ \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}%
+ % Add the refcontext to the list of refcontexts so we can compare on next run
+ \xifinlist\blx@refcontext@context\blx@refcontexts
+ {}
+ {\listxadd\blx@refcontexts\blx@refcontext@context
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}}}%
+ \ifcsundef{blx@sorting@\blx@refcontext@sorting}
+ {\blx@err@invopt{sorting=\blx@refcontext@sorting}{}}
+ {}%
+ \ifcsundef{blx@sortingnamekey@\blx@refcontext@sortingnamekey}
+ {\blx@err@invopt{sortingnamekeyscheme=\blx@refcontext@sortingnamekey}{}}
+ {}}}
+
+% Reset to global sorting etc. when we leave a ref context (since they can't be nested)
+\protected\def\endrefcontext{%
+ \togglefalse{blx@refcontext}%
+ \global\let\blx@refcontext@labelprefix\@empty
+ \xdef\blx@refcontext@sorting{\blx@sorting}%
+ \gdef\blx@refcontext@sortingnamekey{global}%
+ \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/}}
+
+\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sorting{#1}}
+\define@key{blx@refcontext}{sortingnamekeyscheme}{\gdef\blx@refcontext@sortingnamekey{#1}}
+\define@key{blx@refcontext}{labelprefix}{%
+ \gdef\blx@refcontext@labelprefix{#1}%
+ \iftoggle{blx@defernumbers}
+ {}%
+ {\iftoggle{blx@labelnumber}
+ {\blx@warning{%
+ Option 'labelprefix' requires global\MessageBreak
+ 'defernumbers=true'}}
+ {}}}
+\define@key{blx@refcontext}{prefixnumbers}{% legacy
+ \blx@warning@noline{%
+ prefixnumbers option to \string\newrefcontext\space has been renamed,
+ use 'labelprefix' option instead}%
+ \setkeys{blx@refcontext}{labelprefix=#1}}
+
+% [refcontext keys]{<keyword1>,<keyword2>,...}
+\newcommand*{\assignrefcontextkeyws}{%
+ \@ifstar
+ {\blx@assignrefcontextkeyws[*]}
+ {\blx@assignrefcontextkeyws[]}}
+
+\def\blx@assignrefcontextkeyws[#1][#2]#3{%
+ \edef\blx@tempa{\blx@sorting}%
+ \def\blx@tempb{global}%
+ \let\blx@tempc\@empty%
+ \setkeys{blx@assignrefcontext}{#2}%
+ \def\do##1{%
+ \listxadd\blx@assignedrefcontextkeywlist{##1}%
+ \csxdef{blx@assignedrefcontextkeyws#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}}
+ \docsvlist{#3}}
+
+% [refcontext keys]{<category1>,<category2>,...}
+\newcommand*{\assignrefcontextcats}{%
+ \@ifstar
+ {\blx@assignrefcontextcats[*]}
+ {\blx@assignrefcontextcats[]}}
+
+\def\blx@assignrefcontextcats[#1][#2]#3{%
+ \edef\blx@tempa{\blx@sorting}%
+ \def\blx@tempb{global}%
+ \let\blx@tempc\@empty%
+ \setkeys{blx@assignrefcontext}{#2}%
+ \def\do##1{%
+ \listxadd\blx@assignedrefcontextcatlist{##1}%
+ \csxdef{blx@assignedrefcontextcats#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}}
+ \docsvlist{#3}}
+
+% [refcontext keys]{<entrykey1>,<entrykey2>,...}
+\newcommand*{\assignrefcontextentries}{%
+ \@ifstar
+ {\blx@assignrefcontextentries[*]}
+ {\blx@assignrefcontextentries[]}}
+
+\def\blx@assignrefcontextentries[#1][#2]#3{%
+ \edef\blx@tempa{\blx@sorting}%
+ \def\blx@tempb{global}%
+ \let\blx@tempc\@empty%
+ \setkeys{blx@assignrefcontext}{#2}%
+ \def\do##1{%
+ \csxdef{blx@assignedrefcontextkeys#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}}%
+ \docsvlist{#3}}
+
+\define@key{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}}
+\define@key{blx@assignrefcontext}{sortingnamekeyscheme}{\def\blx@tempb{#1}}
+\define@key{blx@assignrefcontext}{labelprefix}{\def\blx@tempc{#1}}
+
+% Reference sections
+\newrobustcmd*{\newrefsection}{%
+ \ifnum\c@refsection>\z@
+ \endrefsection
+ \fi
+ \refsection}
+\let\blx@newrefsection\newrefsection
+
+\newrobustcmd*{\refsection}{%
+ \begingroup
+ \edef\on@line{\on@line}%
+ \ifnum\c@refsection>\z@
+ \blx@err@nestenv{refsection}%
+ \blx@endrefsection
+ \fi
+ \ifnum\c@refsegment>\z@
+ \blx@err@nestenv{refsection}%
+ \blx@endrefsegment
+ \fi
+ \@ifnextchar[%]
+ {\blx@refsection}
+ {\blx@refsection[]}}
+
+\def\blx@refsection{%
+ \begingroup
+ \blx@hook@fileverb
+ \blx@refsection@i}
+
+\def\blx@refsection@i[#1]{%
+ \endgroup
+ \global\advance\blx@maxsection\@ne
+ \global\c@refsection\blx@maxsection
+ \xifinlist{\the\c@refsection}\blx@allrefsections
+ {}
+ {\listxadd\blx@allrefsections{\the\c@refsection}}%
+ \ifcsdef{blx@defaultrefcontexts@\the\c@refsection}
+ {}
+ {\global\cslet{blx@defaultrefcontexts@\the\c@refsection}\@empty}%
+ \expandafter\newcount\csname blx@maxsegment@\the\c@refsection\endcsname
+ \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
+ \blx@inf@refsec
+ \blx@secinit
+ \if@filesw
+ \blx@auxwrite\@mainaux{}{%
+ \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}%
+ \ifblank{#1}
+ {}
+ {\let\blx@bibfiles\@empty
+ % globals should be first as it might contain macros needed for others
+ \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}%
+ \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}%
+ \blx@refsection@ii
+ \fi
+ \blx@info{Setting label 'refsection:\the\c@refsection'}%
+ \label{refsection:\the\c@refsection}%
+ \endgroup}
+
+\def\blx@refsection@addfile#1{%
+ \ifcsdef{blx@res@labl@#1}
+ {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}}
+ {\blx@refsection@addfile@i{#1}}}
+
+\def\blx@refsection@addfile@i#1{%
+ \ifcsdef{blx@res@loca@#1}
+ {\listeadd\blx@bibfiles{#1}}
+ {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}}
+
+\def\blx@refsection@ii{%
+ \blx@regbibfiles\jobname\blx@bibfiles
+ \begingroup
+ \let\blx@tempa\@empty
+ \blx@bibdata\blx@tempa\blx@bibfiles
+ \blx@auxwrite\blx@bcfout
+ {\let\do\blx@datasource}
+ {\blx@xml@endsection\blx@nl
+ \blx@xml@comment{SECTION \the\c@refsection}%
+ \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}%
+ \blx@xml@section{\the\c@refsection}}%
+ \endgroup}
+
+\protected\def\endrefsection{%
+ \blx@endrefsection
+ \blx@inf@refsec}
+
+\def\blx@endrefsection{%
+ \blx@endrefsegment
+ % make sure we always output aliases to the .bcf otherwise after their
+ % first resolution by biber, they will be invisible to subsequent biber
+ % runs since biblatex will resolve the \keyalias{} macro to the main
+ % entry key, biber won't put \keyalias{}in the .bbl on subsequent runs
+ % and biblatex will report a missing citekey
+ \def\do##1{%
+ % Make sure this counter exists. Sometimes it might not when using, e.g:
+ % refsection=chapter and \includeonly to put in the chapters or when
+ % inserting citations into table of contents
+ \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else
+ \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
+ \fi
+ \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne
+ \blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{##1}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}%
+ \dolistcsloop{blx@keyaliases@\the\c@refsection}%
+ \ifnum\c@refsection>\z@
+ \blx@auxwrite\blx@bcfout{}{%
+ \blx@xml@endsection\blx@nl
+ \blx@xml@comment{SECTION 0 (cont.)}%
+ \blx@xml@section{0}}%
+ \fi
+ \global\c@refsection\z@}
+
+\AtEndDocument{%
+ \endrefcontext
+ \blx@endrefsection
+ \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}}
+
+\protected\def\abx@aux@refsection#1#2{%
+ \ifnum#1>\blx@maxsection
+ \global\blx@maxsection#1\relax
+ \fi
+ \blx@addchecksum{#1}{#2}}
+
+% Reference segments
+\newrobustcmd*{\newrefsegment}{%
+ \ifnum\c@refsegment>\z@
+ \blx@endrefsegment
+ \fi
+ \refsegment}
+\let\blx@newrefsegment\newrefsegment
+
+\newrobustcmd*{\refsegment}{%
+ \ifnum\c@refsegment>\z@
+ \blx@err@nestenv{refsegment}%
+ \blx@endrefsegment
+ \fi
+ \global\advance\csname blx@maxsegment@\the\c@refsection\endcsname\@ne
+ \global\c@refsegment\csname blx@maxsegment@\the\c@refsection\endcsname
+ \blx@inf@refseg
+ \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}%
+ \label{refsegment:\the\c@refsection\the\c@refsegment}%
+ \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment}
+ {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty}
+ {}}
+
+\protected\def\endrefsegment{%
+ \blx@endrefsegment
+ \blx@inf@refseg}
+
+\def\blx@endrefsegment{%
+ \global\c@refsegment\z@}
+
+% Reference section/segment auto-reset
+% we are prepending to the commands so that the resets happen before
+% the part title is typeset otherwise \cites in there could be "ibid"
+% which makes no sense
+\def\blx@refpatch@part#1{%
+ \ifundef\part
+ {\blx@err@nodocdiv{part}}
+ {\toggletrue{blx@tempa}%
+ \def\do##1{%
+ \pretocmd##1{#1}
+ {\togglefalse{blx@tempa}\listbreak}
+ {}}%
+ \docsvlist{%
+ \H@old@part,% hyperref
+ \NR@part,% nameref
+ \@part}% latex/koma-script/memoir
+ \iftoggle{blx@tempa}
+ {\blx@err@patch{\string\@part}}
+ {}%
+ \let\do\noexpand}}
+
+\def\blx@refpatch@chapter#1{%
+ \ifundef\chapter
+ {\blx@err@nodocdiv{chapter}}
+ {\pretocmd\@makechapterhead{#1}
+ {}
+ {\blx@err@patch{\string\@makechapterhead}}}}
+
+\def\blx@refpatch@sect#1{%
+ \ifcsundef{#1}
+ {\blx@err@nodocdiv{#1}\@gobbletwo}
+ {\blx@refpatch@sect@i}}
+
+\edef\blx@refpatch@sect@i#1#2{%
+ \def\noexpand\do##1{%
+ \pretocmd##1%
+ {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}}
+ {\togglefalse{blx@tempa}\noexpand\listbreak}
+ {}}%
+ \noexpand\blx@refpatch@sect@iii}
+
+\def\blx@refpatch@sect@ii#1#2#3{%
+ \ifnumequal{#2}{#3}{#1}{}}
+
+\def\blx@refpatch@sect@iii{%
+ \toggletrue{blx@tempa}%
+ \docsvlist{% order does matter:
+ \H@old@sectm@m,% memoir+hyperref (what a mess...)
+ \M@sect,% memoir
+ \H@old@sect,% hyperref
+ \NR@sect,% nameref
+ \scr@sect,% koma-script 3.x
+ \@sect}% latex
+ \iftoggle{blx@tempa}
+ {\blx@err@patch{\string\@sect}}
+ {}%
+ \let\do\noexpand}
+
+% Bibliography categories
+
+\let\blx@categories\@empty
+
+% {<category>}
+\newrobustcmd*{\DeclareBibliographyCategory}[1]{%
+ \ifcsundef{blx@catg@#1}
+ {\global\cslet{blx@catg@#1}\@empty
+ \listgadd\blx@categories{#1}}
+ {\blx@error
+ {Category '#1' already declared}
+ {The bibliography category '#1'\MessageBreak
+ has already been declared}}}
+\@onlypreamble\DeclareBibliographyCategory
+
+% {<category>}{<entrykey>,...}
+\newrobustcmd*{\addtocategory}[2]{%
+ \ifcsundef{blx@catg@#1}
+ {\blx@error
+ {Category '#1' not declared}
+ {Use \string\DeclareBibliographyCategory\space to declare}}
+ {\AfterPreamble{%
+ \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}}
+
+% {<category>}{<entrykey>,...}
+\def\blx@addtocategory#1#2{%
+ % If we are adding a set member to a category, make sure we also add the
+ % set parent if it is cited. If it is cited, we should be using the set
+ % parent in the category, not the set child member. blx@setc@... will
+ % only exist if the set parent is also cited as it is only defined when a
+ % member contains \inset which only happens when the set parent is cited.
+ \ifcsdef{blx@setc@\the\c@refsection @#2}
+ {\blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}%
+ \abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}
+ {}%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}%
+ \abx@aux@category{#1}{#2}}
+
+% {<category>}{<entrykey>,...}
+\protected\def\abx@aux@category#1#2{%
+ \xifinlistcs{\detokenize{#2}}{blx@catg@#1}
+ {}
+ {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}}
+
+\AtEndDocument{\let\abx@aux@category\@gobbletwo}
+
+% [<options>]{<resource>,...}
+\renewrobustcmd*{\bibliography}[1]{%
+ \begingroup
+ \def\blx@tempa{file}%
+ \def\blx@tempb{bibtex}%
+ \def\blx@tempc{local}%
+ \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}%
+ \endgroup}
+\@onlypreamble\bibliography
+
+\def\blx@addbib@legacy#1{%
+ \begingroup
+ \edef\blx@tempa{\endgroup
+ \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}%
+ \blx@tempa}
+
+\def\blx@stripbib#1{%
+ \expandafter\blx@stripbib@i\detokenize{#1.bib}&}
+\edef\blx@stripbib@i{%
+ \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&}
+\blx@stripbib@i{#1}
+
+% [<options>]{<resource>,...}
+\newrobustcmd*{\addbibresource}{%
+ \blx@addbib\blx@addbib@resource}
+\@onlypreamble\addbibresource
+
+\newrobustcmd*{\addglobalbib}{%
+ \blx@addbib\blx@addbib@global}
+\@onlypreamble\addglobalbib
+
+\newrobustcmd*{\addsectionbib}{%
+ \blx@addbib\blx@addbib@register}
+\@onlypreamble\addsectionbib
+
+\def\blx@addbib#1{%
+ \@ifnextchar[%]
+ {\blx@addbib@i{#1}}
+ {\blx@addbib@i{#1}[]}}
+
+\def\blx@addbib@i#1[#2]{%
+ \begingroup
+ \blx@hook@fileverb
+ \blx@addbib@ii{#1}{#2}}
+
+\def\blx@addbib@ii#1#2#3{%
+ \endgroup
+ \begingroup
+ \def\blx@tempa{file}%
+ \def\blx@tempb{bibtex}%
+ \def\blx@tempc{local}%
+ \undef\blx@tempd
+ \setkeys{blx@addbib}{#2}%
+ \blx@xsanitizeafter{#1}{#3}%
+ \endgroup}
+
+\def\blx@hook@fileverb{%
+ \let\do\@makeother
+ \dospecials
+ \catcode`\\=\z@
+ \catcode`\{=\@ne
+ \catcode`\}=\tw@}
+
+\define@key{blx@addbib}{type}{\def\blx@tempa{#1}}
+\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}}
+\define@key{blx@addbib}{location}{\def\blx@tempc{#1}}
+\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}}
+
+% \blx@res@type@<resource> resource -> type
+% \blx@res@data@<resource> resource -> datatype
+% \blx@res@loca@<resource> resource -> datatype
+% \blx@res@labl@<resource> label -> resource
+
+\def\blx@addbib@register#1{%
+ \csxdef{blx@res@type@#1}{\blx@tempa}%
+ \csxdef{blx@res@data@#1}{\blx@tempb}%
+ \csxdef{blx@res@loca@#1}{\blx@tempc}%
+ \ifdef\blx@tempd
+ {\csxdef{blx@res@labl@\blx@tempd}{#1}}
+ {}}
+
+\def\blx@addbib@resource#1{%
+ \blx@addbib@register{#1}%
+ \listgadd\blx@bibfiles{#1}%
+ \blx@regbibfile\jobname{#1}}
+
+\def\blx@addbib@global#1{%
+ \blx@addbib@resource{#1}%
+ \listgadd\blx@bibfiles@global{#1}}
+
+\let\blx@bibfiles\@empty
+\let\blx@bibfiles@global\@empty
+
+\def\blx@bibdata#1#2{%
+ \forlistloop{\blx@bibdata@i{#1}}#2}
+\def\blx@bibdata@i#1#2{%
+ \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}}
+\def\blx@bibdata@ii#1#2#3{%
+ \eappto#1{%
+ \blx@xml@datasource
+ {\ifcsdef{blx@res@type@#2}
+ {\csuse{blx@res@type@#2}}
+ {file}}
+ {\ifcsdef{blx@res@data@#2}
+ {\csuse{blx@res@data@#2}}
+ {bibtex}}
+ {#3}}}
+
+%% Citations
+
+\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite}
+\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey}
+\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite}
+\@onlypreamble\AtEveryCite
+\@onlypreamble\AtEveryCitekey
+\@onlypreamble\AtEveryMultiCite
+
+\newrobustcmd*{\AtEachCitekey}{%
+ \iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}}
+
+\def\blx@imc@UseEveryCiteHook{\csuse{blx@hook@cite}}
+\def\blx@imc@UseEveryCitekeyHook{\csuse{blx@hook@citekey}}
+\def\blx@imc@UseEveryMultiCiteHook{\csuse{blx@hook@mcite}}
+
+\newrobustcmd*{\AtNextCite}{%
+ \ifundef\blx@hook@cite@next
+ {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}}
+ {}%
+ \gappto\blx@hook@cite@next}
+
+\newrobustcmd*{\AtNextCitekey}{%
+ \ifundef\blx@hook@citekey@next
+ {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}}
+ {}%
+ \gappto\blx@hook@citekey@next}
+
+\newrobustcmd*{\AtNextMultiCite}{%
+ \ifundef\blx@hook@mcite@next
+ {\gdef\blx@hook@mcite@next{\global\undef\blx@hook@mcite@next}}
+ {}%
+ \gappto\blx@hook@mcite@next}
+
+\def\blx@imc@UseNextCiteHook{\csuse{blx@hook@cite@next}}
+\def\blx@imc@UseNextCitekeyHook{\csuse{blx@hook@citekey@next}}
+\def\blx@imc@UseNextMultiCiteHook{\csuse{blx@hook@mcite@next}}
+
+\def\blx@imc@DeferNextCitekeyHook{\undef\blx@hook@citekey@next}
+
+\blx@regimcs{%
+ \UseEveryCiteHook \UseEveryCitekeyHook \UseEveryMultiCiteHook
+ \UseNextCiteHook \UseNextCitekeyHook \UseNextMultiCiteHook
+ \DeferNextCitekeyHook}
+
+% {<style>}
+
+\newrobustcmd*{\RequireCitationStyle}[1]{%
+ \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{}
+ {\blx@error
+ {Style '#1' not found}
+ {The citation style '#1' could not be found}}}
+\@onlypreamble\RequireCitationStyle
+
+% {<code>}
+
+\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit}
+\@onlypreamble\InitializeCitationStyle
+
+% {<code>}
+
+\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite}
+\@onlypreamble\OnManualCitation
+
+\newrobustcmd*{\mancite}{%
+ \csuse{blx@hook@mancite}%
+ \blx@ibidreset
+ \blx@idemreset
+ \blx@opcitreset
+ \blx@loccitreset}
+
+% {<entrykey>}{<message>}
+% Just a wrapper to suppress citation tracking in toc/lof etc.
+\def\blx@citation#1#2{%
+ \ifbool{citerequest}
+ {\blx@citation@entry{#1}{#2}}
+ {}}
+
+\def\blx@citation@entry#1#2{%
+ \blx@bibreq{#1}%
+ \ifinlist{#1}\blx@cites
+ {}
+ {\listgadd{\blx@cites}{#1}%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@cite{#1}}}%
+ \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}
+ {}
+ {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@segm{\the\c@refsection}{\the\c@refsegment}{\detokenize{#1}}}%
+ \blx@ifdata{#1}
+ {}
+ {\ifcsdef{blx@miss@\the\c@refsection}
+ {\ifinlistcs{#1}{blx@miss@\the\c@refsection}
+ {}
+ {\blx@logreq@active{#2{#1}}}}
+ {\blx@logreq@active{#2{#1}}}}}
+
+\protected\def\abx@aux@segm#1#2#3{%
+ \listcsxadd{blx@segm@#1@#2}{\detokenize{#3}}}
+
+\def\blx@citation@set#1#2{%
+ \blx@citation@entry{#1}{#2}%
+ \begingroup
+ \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}%
+ \expandafter\expandafter\expandafter\docsvlist
+ \expandafter\expandafter\expandafter{%
+ \csname blx@setp@\the\c@refsection @#1\endcsname}%
+ \endgroup}
+
+\def\blx@citation@inset#1#2{%
+ \blx@citation@entry{#1}{#2}%
+ \expandafter\expandafter\expandafter\blx@citation@inset@i
+ \expandafter\expandafter\expandafter{%
+ \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef}
+
+\def\blx@citation@inset@i#1{%
+ \ifcsdef{blx@setp@\the\c@refsection @#1}
+ {\blx@citation@set{#1}}
+ {\blx@citation@entry{#1}}}
+
+\def\blx@citation@all{%
+ \ifbool{citerequest}
+ {\blx@bibreq{*}%
+ \global\csletcs
+ {blx@segm@\the\c@refsection @\the\c@refsegment}
+ {blx@slist@entry@\the\c@refsection @\blx@refcontext@context}%
+ \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
+ {\blx@logreq@active{}}
+ {}}
+ {}}
+
+\protected\def\blx@bibreq#1{%
+ \begingroup
+ \blx@xmlsanitizeafter{\def\blx@tempa}{#1}%
+ % citeall is always order "0" - this makes no real difference as biber
+ % ignores all other citekeys in the section if citeall is present
+ \ifstrequal{*}{#1}
+ {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{0}}}
+ {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}%
+ \endgroup}
+
+% {<set>}{<key1,key2,key3>}
+
+\newrobustcmd*{\defbibentryset}[2]{%
+ \@bsphack
+ \begingroup
+ \blx@xsanitizeafter{\def\blx@tempa}{#1}%
+ \let\blx@tempb\@empty
+ \let\blx@tempc\@empty
+ \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}%
+ \ifcsdef{blx@set@\the\c@refsection @\blx@tempa}
+ {\expandafter\ifdefequal
+ \csname blx@set@\the\c@refsection @\blx@tempa\endcsname
+ \blx@tempb
+ {}
+ {\blx@error
+ {Conflicting definitions of '\blx@tempa'}
+ {The entry set '\blx@tempa' been defined before.\MessageBreak
+ old: \blx@tempa\space = %
+ \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak
+ new: \blx@tempa\space = \blx@tempb\MessageBreak
+ I'm ignoring the new definition}}}
+ {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb
+ \edef\blx@tempa{%
+ \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}%
+ \blx@tempa}%
+ \endgroup
+ \@esphack}
+
+\def\blx@defentryset@add#1{%
+ \edef\blx@tempb{\blx@tempb\blx@tempc#1}%
+ \def\blx@tempc{,}}
+
+\protected\def\blx@setreq#1#2{%
+ \begingroup
+ \blx@xmlsanitizeafter{\def\blx@tempa}{#1}%
+ \blx@xmlsanitizeafter{\def\blx@tempb}{#2}%
+ \blx@auxwrite\blx@bcfout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}%
+ \endgroup}
+
+% {<entrykey>,...}
+\protected\def\blx@citeloop#1{%
+ \begingroup
+ % Make sure this counter exists. Sometimes it might not when using, e.g:
+ % refsection=chapter and \includeonly to put in the chapters or when
+ % inserting citations into table of contents
+ \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else
+ \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
+ \fi
+ \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne
+ \blx@tempcnta\z@
+ \blx@tempcntb\z@
+ \let\blx@tempa\@empty
+ \forcsvlist\blx@citeadd{#1}%
+ \blx@thenotecheck
+ \ifnum\blx@tempcnta>\z@
+ \ifnum\blx@tempcntb>\z@
+ \multicitedelim
+ \fi
+ \fi
+ \letcs\blx@tempb{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}%
+ \blx@thecitesort
+ \edef\blx@tempa{\endgroup
+ \c@citecount\z@
+ \c@citetotal\the\blx@tempcnta\relax
+ \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}%
+ \blx@tempa}
+
+\def\blx@notecheck{%
+ \ifnum\blx@tempcnta>\@ne
+ \blx@warning{%
+ Package option 'sortcites' enabled.\MessageBreak
+ Verify postnote placement}%
+ \fi}
+
+\def\blx@citesort{%
+ \ifnum\blx@tempcnta>\@ne
+ \blx@filtercitesort\blx@tempb{blx@tempa}%
+ \else
+ \blx@citenosort
+ \fi}
+
+\def\blx@citenosort{%
+ \let\blx@tempb\blx@tempa}
+
+% {<entrykey>}
+\def\blx@citeadd#1{%
+ \ifcsdef{blx@keyalias@\the\c@refsection @#1}
+ {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}}
+ {\def\blx@realkey{#1}}%
+ \expandafter\blx@getrefcontext\expandafter{\blx@realkey}% needed for \ifdata
+ \expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon
+ \expandafter\blx@ifdata\expandafter{\blx@realkey}
+ {\advance\blx@tempcnta\@ne
+ \listeadd\blx@tempa{\blx@realkey}}
+ {\ifnum\blx@tempcntb>\z@\multicitedelim\fi
+ \expandafter\abx@missing\expandafter{\blx@realkey}%
+ \advance\blx@tempcntb\@ne}}
+
+% set default refcontext for one citation key
+% and then override with data from auto-assign \assignrefcontext* macros, if any
+% <entrykey>
+\def\blx@getrefcontext#1{%
+ % Save refcontext for restoration at end of \citeprint
+ \let\blx@refcontext@context@saved\blx@refcontext@context
+ % Get the default refcontext
+ % If there was one due to appearance in a bib/biblist, use it
+ % otherwise fall back on global refcontext. This can happen for cites
+ % made (a bit strangely but some styles do this) inside a biblist
+ % which never appear in any printed bib/biblist and therefore have no default
+ % refcontext defined
+ % However, only do this if sortcites is not used for in this case, by default we
+ % want to use the current refcontext in which the cites occur
+ \ifbool{sortcites}
+ {}
+ {\ifcsdef{blx@assignedrefcontextbib@\the\c@refsection @#1}
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextbib@\the\c@refsection @#1}}
+ {\edef\blx@refcontext@context{\blx@sorting/global/}}}%
+ % assignment via keyword list
+ \ifdef\blx@assignedrefcontextkeywlist
+ {\def\do##1{%
+ \blx@imc@ifentrykeyword{#1}{##1}
+ {% weak version
+ \ifboolexpr{test {\ifcsdef{blx@assignedrefcontextkeyws*@\the\c@refsection @##1}}
+ and
+ not togl {blx@refcontext}}% inside explicit non-global refcontext
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextkeyws*@\the\c@refsection @##1}}
+ {}%
+ % strong version
+ \ifcsdef{blx@assignedrefcontextkeyws@\the\c@refsection @##1}
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextkeyws@\the\c@refsection @##1}}
+ {}}
+ {}}%
+ \dolistloop\blx@assignedrefcontextkeywlist}
+ {}%
+ % assignment via category
+ \ifdef\blx@assignedrefcontextcatlist
+ {\def\do##1{%
+ \blx@imc@ifentrycategory{#1}{##1}
+ {% weak version
+ \ifboolexpr{test {\ifcsdef{blx@assignedrefcontextcats*@\the\c@refsection @##1}}
+ and
+ not togl {blx@refcontext}}% inside explicit non-global refcontext
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextcats*@\the\c@refsection @##1}}
+ {}%
+ % strong version
+ \ifcsdef{blx@assignedrefcontextcats@\the\c@refsection @##1}
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextcats@\the\c@refsection @##1}}
+ {}}
+ {}}%
+ \dolistloop\blx@assignedrefcontextcatlist}
+ {}%
+ % assignment via entrykeys
+ % weak version
+ \ifboolexpr{test {\ifcsdef{blx@assignedrefcontextkeys*@\the\c@refsection @#1}}
+ and
+ not togl {blx@refcontext}}% inside explicit non-global refcontext
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextkeys*@\the\c@refsection @#1}}
+ {}%
+ % strong version
+ \ifcsdef{blx@assignedrefcontextkeys@\the\c@refsection @#1}
+ {\letcs\blx@refcontext@context{blx@assignedrefcontextkeys@\the\c@refsection @#1}}
+ {}}
+
+% {<entrykey>}
+\protected\def\blx@citeprint#1{%
+ \blx@getrefcontext{#1}%
+ \advance\c@citecount\@ne
+ \addtocounter{instcount}\@ne
+ \ifnum\c@citecount=\@ne
+ \blx@getdata@cite{#1}%
+ \blx@precode
+ \ifnum\c@citetotal>\@ne
+ \blx@resetdata
+ \fi
+ \else
+ \blx@dlimcode
+ \fi
+ \begingroup
+ \ifnum\c@citetotal>\@ne
+ \blx@getdata@cite{#1}%
+ \fi
+ \blx@entrysetcount
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \blx@backref{#1}%
+ \blx@pagetracker
+ \csuse{blx@hook@citekey}%
+ \csuse{blx@hook@citekey@next}%
+ \blx@beglangcite
+ \blx@execute
+ \blx@loopcode
+ \blx@citecounter
+ \blx@citetracker
+ \blx@ibidtracker
+ \blx@idemtracker
+ \blx@opcittracker
+ \blx@loccittracker
+ \ifnum\c@citecount=\c@citetotal
+ \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}%
+ \blx@postcode
+ \fi
+ \blx@endlangcite
+ \endgroup
+ \let\blx@refcontext@context\blx@refcontext@context@saved}
+
+% cite counter
+
+\def\blx@citecounter@global{%
+ \ifbool{@filesw}
+ {\ifbool{citetracker}
+ {\immediate\write\@mainaux{%
+ \string\abx@aux@count
+ {\the\c@refsection}{\abx@field@entrykey}}}
+ {}}
+ {}}
+
+\def\blx@citecounter@context{%
+ \ifbool{@filesw}
+ {\ifbool{citetracker}
+ {\immediate\write\@mainaux{%
+ \iftoggle{blx@footnote}
+ {\string\abx@aux@fncount}
+ {\string\abx@aux@count}%
+ {\the\c@refsection}{\abx@field@entrykey}}}
+ {}}
+ {}}
+
+% {<refsection>}{<entrykey>}
+
+\protected\def\blx@aux@count#1#2{%
+ \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}}
+\protected\def\blx@aux@fncount#1#2{%
+ \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}}
+
+\let\abx@aux@count\@gobbletwo
+\let\abx@aux@fncount\@gobbletwo
+
+\AtEndDocument{%
+ \let\abx@aux@count\@gobbletwo
+ \let\abx@aux@fncount\@gobbletwo}
+
+\protected\def\blx@setcitecounter@global{%
+ \c@citecounter0%
+ \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}%
+ \relax}
+
+\protected\def\blx@setcitecounter@context{%
+ \c@citecounter0%
+ \iftoggle{blx@footnote}
+ {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}}
+ {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}%
+ \relax}
+
+% cite tracker
+
+\def\blx@citetracker@global{%
+ \ifbool{citetracker}
+ {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection}
+ {}
+ {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}
+ {}}
+
+\def\blx@citetracker@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection}
+ {}
+ {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}}
+ {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection}
+ {}
+ {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}}
+ {}}
+
+\protected\appto\abx@savetrackers{%
+ \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}%
+ \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}}
+
+\protected\appto\abx@resttrackers{%
+ \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}%
+ \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}}
+
+\protected\appto\abx@cleartrackers{%
+ \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty
+ \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty}
+
+% ibidem tracker
+
+\def\blx@ibidtracker@global{%
+ \ifbool{citetracker}
+ {\global\let\blx@lastkey@text\abx@field@entrykey}
+ {}}
+
+\def\blx@ibidtracker@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\global\let\blx@lastkey@foot\abx@field@entrykey}
+ {\global\let\blx@lastkey@text\abx@field@entrykey}}
+ {}}
+
+\def\blx@ibidtracker@strict{%
+ \blx@ifcitesingle
+ {\blx@ibidtracker@global}
+ {\blx@ibidreset@global}}%
+
+\def\blx@ibidtracker@constrict{%
+ \blx@ifcitesingle
+ {\blx@mpfnsave
+ \blx@ibidtracker@context}
+ {\blx@ibidreset@context}}%
+
+\def\blx@ibidreset@force{%
+ \global\undef\blx@lastkey@text
+ \global\undef\blx@lastkey@foot
+ \blx@mpfnreset}
+
+\def\blx@ibidreset@global{%
+ \global\undef\blx@lastkey@text}
+
+\def\blx@ibidreset@context{%
+ \iftoggle{blx@footnote}
+ {\blx@mpfnreset
+ \global\undef\blx@lastkey@foot}
+ {\global\undef\blx@lastkey@text}}
+
+\protected\appto\abx@savetrackers{%
+ \global\let\blx@saved@lastkey@text\blx@lastkey@text
+ \global\let\blx@saved@lastkey@foot\blx@lastkey@foot}
+
+\protected\appto\abx@resttrackers{%
+ \global\let\blx@lastkey@text\blx@saved@lastkey@text
+ \global\let\blx@lastkey@foot\blx@saved@lastkey@foot}
+
+\protected\appto\abx@cleartrackers{%
+ \global\undef\blx@saved@lastkey@text
+ \global\undef\blx@saved@lastkey@foot}
+
+% idem tracker
+
+\def\blx@idemtracker@global{%
+ \ifbool{citetracker}
+ {\global\let\blx@lasthash@text\abx@field@fullhash}
+ {}}
+
+\def\blx@idemtracker@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\global\let\blx@lasthash@foot\abx@field@fullhash}
+ {\global\let\blx@lasthash@text\abx@field@fullhash}}
+ {}}
+
+\let\blx@idemtracker@strict\blx@idemtracker@global
+
+\def\blx@idemtracker@constrict{%
+ \blx@mpfnsave
+ \blx@idemtracker@context}
+
+\def\blx@idemreset@force{%
+ \global\undef\blx@lasthash@text
+ \global\undef\blx@lasthash@foot
+ \blx@mpfnreset}
+
+\def\blx@idemreset@global{%
+ \global\undef\blx@lasthash@text}
+
+\def\blx@idemreset@context{%
+ \iftoggle{blx@footnote}
+ {\blx@mpfnreset
+ \global\undef\blx@lasthash@foot}
+ {\global\undef\blx@lasthash@text}}
+
+\protected\appto\abx@savetrackers{%
+ \global\let\blx@saved@lasthash@text\blx@lasthash@text
+ \global\let\blx@saved@lasthash@text\blx@lasthash@text}
+
+\protected\appto\abx@resttrackers{%
+ \global\let\blx@lasthash@text\blx@saved@lasthash@text
+ \global\let\blx@lasthash@text\blx@saved@lasthash@text}
+
+\protected\appto\abx@cleartrackers{%
+ \global\undef\blx@saved@lasthash@text
+ \global\undef\blx@saved@lasthash@foot}
+
+% opcit tracker
+
+\def\blx@opcittracker@global{%
+ \ifbool{citetracker}
+ {\blx@opcit@tracker{text}}
+ {}}
+
+\def\blx@opcittracker@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@opcit@tracker{foot}}
+ {\blx@opcit@tracker{text}}}
+ {}}
+
+\def\blx@opcittracker@strict{%
+ \blx@ifcitesingle
+ {\blx@opcittracker@global}
+ {\blx@opcitreset@global}}%
+
+\def\blx@opcittracker@constrict{%
+ \blx@ifcitesingle
+ {\blx@mpfnsave
+ \blx@opcittracker@context}
+ {\blx@opcitreset@context}}%
+
+\def\blx@opcit@tracker#1{%
+ \blx@imc@iffieldundef{namehash}
+ {}
+ {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey
+ \xifinlistcs\abx@field@namehash{blx@trackhash@#1}
+ {}
+ {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}}
+
+\def\blx@opcit@reset#1{%
+ \begingroup
+ \def\do##1{\global\csundef{blx@lastkey@#1@##1}}%
+ \dolistcsloop{blx@trackhash@#1}%
+ \global\cslet{blx@trackhash@#1}\@empty
+ \endgroup}
+
+\def\blx@opcitreset@force{%
+ \blx@opcit@reset{text}%
+ \blx@opcit@reset{foot}%
+ \blx@mpfnreset}
+
+\def\blx@opcitreset@global{%
+ \blx@opcit@reset{text}}
+
+\def\blx@opcitreset@context{%
+ \iftoggle{blx@footnote}
+ {\blx@opcit@reset{foot}%
+ \blx@mpfnreset}
+ {\blx@opcit@reset{text}}}
+
+\let\blx@trackhash@text\@empty
+\let\blx@trackhash@foot\@empty
+
+\protected\appto\abx@savetrackers{%
+ \begingroup
+ \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}%
+ \dolistloop\blx@trackhash@text
+ \global\let\blx@saved@trackhash@text\blx@trackhash@text
+ \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}%
+ \dolistloop\blx@trackhash@foot
+ \global\let\blx@saved@trackhash@foot\blx@trackhash@foot
+ \endgroup}
+
+\protected\appto\abx@resttrackers{%
+ \begingroup
+ \blx@opcit@reset{text}%
+ \global\let\blx@trackhash@text\blx@saved@trackhash@text
+ \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}%
+ \dolistloop\blx@trackhash@text
+ \blx@opcit@reset{foot}%
+ \global\let\blx@trackhash@foot\blx@saved@trackhash@foot
+ \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}%
+ \dolistloop\blx@trackhash@foot
+ \endgroup}
+
+\protected\appto\abx@cleartrackers{%
+ \begingroup
+ \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}%
+ \dolistloop\blx@saved@trackhash@text
+ \global\undef\blx@saved@trackhash@text
+ \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}%
+ \dolistloop\blx@saved@trackhash@foot
+ \global\undef\blx@saved@trackhash@foot
+ \endgroup}
+
+% loccit tracker
+
+\def\blx@loccittracker@global{%
+ \ifbool{citetracker}
+ {\blx@loccit@tracker{text}}
+ {}}
+
+\def\blx@loccittracker@context{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@loccit@tracker{foot}}
+ {\blx@loccit@tracker{text}}}
+ {}}
+
+\def\blx@loccittracker@strict{%
+ \ifbool{citetracker}
+ {\blx@loccit@stricttracker{text}}
+ {}}
+
+\def\blx@loccittracker@constrict{%
+ \ifbool{citetracker}
+ {\iftoggle{blx@footnote}
+ {\blx@mpfnsave
+ \blx@loccit@stricttracker{foot}}
+ {\blx@loccit@stricttracker{text}}}
+ {}}
+
+\def\blx@loccit@tracker#1{%
+ \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
+ \blx@imc@iffieldundef{postnote}
+ {}
+ {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
+ \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
+ {}
+ {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}}
+
+\def\blx@loccit@stricttracker#1{%
+ \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
+ \blx@imc@iffieldundef{postnote}
+ {}
+ {\blx@ifcitesingle
+ {\expandafter\blx@imc@ifpages
+ \expandafter{\abx@field@postnote}
+ {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
+ \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
+ {}
+ {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}
+ {}}
+ {}}}
+
+\def\blx@loccit@reset#1{%
+ \begingroup
+ \def\do##1{\global\csundef{blx@lastnote@#1@##1}}%
+ \dolistcsloop{blx@trackkeys@#1}%
+ \global\cslet{blx@trackkeys@#1}\@empty
+ \endgroup}
+
+\def\blx@loccitreset@force{%
+ \blx@loccit@reset{text}%
+ \blx@loccit@reset{foot}%
+ \blx@mpfnreset}
+
+\def\blx@loccitreset@global{%
+ \blx@loccit@reset{text}}
+
+\def\blx@loccitreset@context{%
+ \iftoggle{blx@footnote}
+ {\blx@loccit@reset{foot}%
+ \blx@mpfnreset}
+ {\blx@loccit@reset{text}}}
+
+\let\blx@trackkeys@text\@empty
+\let\blx@trackkeys@foot\@empty
+
+\protected\appto\abx@savetrackers{%
+ \begingroup
+ \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}%
+ \dolistloop\blx@trackkeys@text
+ \global\let\blx@saved@trackkeys@text\blx@trackkeys@text
+ \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}%
+ \dolistloop\blx@trackkeys@foot
+ \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot
+ \endgroup}
+
+\protected\appto\abx@resttrackers{%
+ \begingroup
+ \blx@loccit@reset{text}%
+ \global\let\blx@trackkeys@text\blx@saved@trackkeys@text
+ \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}%
+ \dolistloop\blx@trackkeys@text
+ \blx@loccit@reset{foot}%
+ \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot
+ \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}%
+ \dolistloop\blx@trackkeys@foot
+ \endgroup}
+
+\protected\appto\abx@cleartrackers{%
+ \begingroup
+ \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}%
+ \dolistloop\blx@saved@trackkeys@text
+ \global\undef\blx@saved@trackkeys@text
+ \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}%
+ \dolistloop\blx@saved@trackkeys@foot
+ \global\undef\blx@saved@trackkeys@foot
+ \endgroup}
+
+\def\blx@addbackref#1{%
+ \ifcsdef{blx@setp@\the\c@refsection @#1}
+ {\ifcase\blx@backrefsetstyle
+ \blx@addbackref@i{#1}%
+ \or
+ \blx@addbackref@ii{setp}{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \blx@addbackref@ii{setp}{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \blx@addbackref@ii{setp}{#1}%
+ \fi}
+ {\ifcsdef{blx@setc@\the\c@refsection @#1}
+ {\ifcase\blx@backrefsetstyle
+ \blx@addbackref@ii{setc}{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \blx@addbackref@ii{setc}{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \or
+ \blx@addbackref@i{#1}%
+ \blx@addbackref@ii{setc}{#1}%
+ \fi}
+ {\blx@addbackref@i{#1}}}}
+
+\def\blx@addbackref@i#1{%
+ \ifbacktracker
+ \blx@leavevmode
+ \if@filesw
+ \protected@write\@mainaux{}{\string\abx@aux@backref
+ {\the\c@instcount}{#1}{\the\c@refsection}%
+ {\thepage}{\noexpand\the\c@page}}%
+ \fi
+ \fi}
+
+\def\blx@addbackref@ii#1#2{%
+ \expandafter\expandafter\expandafter\forcsvlist
+ \expandafter\expandafter\expandafter\blx@addbackref@i
+ \expandafter\expandafter\expandafter{%
+ \csname blx@#1@\the\c@refsection @#2\endcsname}}
+
+% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>}
+\protected\def\blx@aux@backref#1#2#3#4#5{%
+ \ifcsundef{blx@pref@#3@\detokenize{#2}}
+ {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty
+ \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname}
+ {}%
+ \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}}
+ {}
+ {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}%
+ \blx@addpagesum{#1}{#5}}
+
+\AtEndDocument{%
+ \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}}
+
+% {<true>}{<false>}
+\def\blx@ifcitesingle{%
+ \ifnum\c@citetotal=\@ne
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+
+% hyperref interface
+
+\appto\blx@mkhyperref{%
+ \protected\def\blx@imc@bibhyperref{%
+ \@ifnextchar[%]
+ {\blx@bibhyperref}
+ {\blx@bibhyperref[\abx@field@entrykey]}}%
+ \ifundef\hyper@natanchorstart
+ {\long\def\blx@bibhyperref[#1]#2{%
+ \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest
+ #2%
+ \blx@sfsave}\blx@sfrest}%
+ \protected\long\def\blx@imc@bibhyperlink#1#2{%
+ \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest
+ #2%
+ \blx@sfsave}\blx@sfrest}%
+ \protected\long\def\blx@imc@bibhypertarget#1#2{%
+ \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest
+ #2%
+ \blx@sfsave}\blx@sfrest}}%
+ {\long\def\blx@bibhyperref[#1]#2{%
+ \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest
+ #2%
+ \blx@sfsave\hyper@natlinkend\blx@sfrest}%
+ \protected\long\def\blx@imc@bibhyperlink#1#2{%
+ \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest
+ #2%
+ \blx@sfsave\hyper@natlinkend\blx@sfrest}%
+ \protected\long\def\blx@imc@bibhypertarget#1#2{%
+ \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest
+ #2%
+ \blx@sfsave\hyper@natanchorend\blx@sfrest}}
+ \let\blx@imc@ifhyperref\@firstoftwo
+ \def\blx@sf{\spacefactor}%
+ \def\blx@sfsave{%
+ \blx@leavevmode
+ \numgdef\blx@sf{\spacefactor}}%
+ \def\blx@sfrest{%
+ \ifhmode\spacefactor\blx@sf\relax\fi
+ \gdef\blx@sf{\spacefactor}}}
+
+\appto\blx@mknohyperref{%
+ \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}%
+ \def\blx@nohyperref[#1]#2{#2}%
+ \let\blx@imc@bibhyperlink\@secondoftwo
+ \let\blx@imc@bibhypertarget\@secondoftwo
+ \let\blx@imc@ifhyperref\@secondoftwo}
+
+\blx@regimcs{%
+ \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref}
+
+% {<entrykey>,...}
+\protected\def\nocite#{\blx@nocite}
+
+\def\blx@nocite#1{%
+ \@bsphack
+ \AfterPreamble{%
+ \iftoggle{blx@bibliography}
+ {}
+ {\ifstrequal{*}{#1}
+ {\blx@citation@all}
+ {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}%
+ \@esphack}
+
+\def\blx@nocite@do#1{%
+ % Make sure this counter exists. Sometimes it might not when using, e.g:
+ % refsection=chapter and \includeonly to put in the chapters or when
+ % inserting citations into table of contents
+ \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else
+ \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
+ \fi
+ \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne
+ \blx@citation{#1}\blx@msg@cundef}
+
+% {<macro>}[<arg1>][<arg2>]{<arg3>}
+% => <macro>{<arg1>}{<arg2>}{<arg3>}
+\protected\def\blx@citeargs#1{%
+ \@ifnextchar[%]
+ {\blx@citeargs@i{#1}}
+ {\blx@citeargs@iii{#1{}{}}}}
+\long\def\blx@citeargs@i#1[#2]{%
+ \@ifnextchar[%]
+ {\blx@citeargs@ii{#1{#2}}}
+ {\blx@citeargs@iii{#1{}{#2}}}}
+\long\def\blx@citeargs@ii#1[#2]{%
+ \blx@citeargs@iii{#1{#2}}}
+\long\def\blx@citeargs@iii#1#2{%
+ \blx@xsanitizeafter{#1}{#2}}
+
+% {<macro>}(<arg1>)(<arg2>)
+% => <macro>{<arg1>}{<arg2>}
+\protected\def\blx@multiargs#1{%
+ \@ifnextchar(%)
+ {\blx@multiargs@i{#1}}
+ {#1{}{}}}
+\long\def\blx@multiargs@i#1(#2){%
+ \@ifnextchar(%)
+ {\blx@multiargs@ii{#1{#2}}}
+ {#1{}{#2}}}
+\long\def\blx@multiargs@ii#1(#2){#1{#2}}
+
+% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct>
+% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>}
+\protected\def\blx@citepunct#1{%
+ \blx@citeargs{\blx@citepunct@i{#1}}}
+\long\def\blx@citepunct@i#1#2#3#4{%
+ \blx@thecheckpunct{#1{#2}{#3}{#4}}}
+
+% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct>
+% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>}
+\protected\def\blx@citexpunct#1{%
+ \blx@citeargs{\blx@citexpunct@i{#1}}}
+\long\def\blx@citexpunct@i#1#2#3#4{%
+ \@ifnextchar[%]
+ {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}}
+ {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}}
+\long\def\blx@citexpunct@ii#1#2[#3]#4{%
+ \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}}
+
+% {<code>}<punct> => <code>{<punctcmd>}
+\long\def\blx@checkpunct#1{%
+ \begingroup
+ \def\blx@tempa{\endgroup#1}%
+ \futurelet\blx@tempb\blx@checkpunct@i}
+\def\blx@checkpunct@i{%
+ \expandafter\blx@checkpunct@ii\blx@autopunct&}
+\def\blx@checkpunct@ii#1{%
+ \ifx#1&%
+ \expandafter\blx@checkpunct@iii
+ \fi
+ \ifx#1\blx@tempb
+ \expandafter\blx@checkpunct@iv
+ \fi
+ \blx@checkpunct@ii}
+\def\blx@checkpunct@iii#1\blx@checkpunct@ii{%
+ \global\undef\abx@field@postpunct
+ \blx@tempa{\blx@postpunct}}
+\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2&#3{%
+ \gdef\abx@field@postpunct{#3}%
+ \edef\blx@tempa{%
+ \expandonce\blx@tempa{%
+ \ifcsdef{blx@pm@\detokenize{#3}}
+ {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname
+ \endcsname}
+ {\noexpand#3}}}%
+ \blx@tempa}
+
+\long\def\blx@nocheckpunct#1{#1{}}
+
+\protected\def\blx@citeinit{%
+ \iftoggle{blx@bibliography}
+ {}
+ {\toggletrue{blx@citation}}%
+ \blx@blxinit
+ \blx@langstrings
+ \citesetup
+ \blx@setsfcodes
+ \blx@postpunct@agroup
+ \blx@resetdata
+ \blx@leavevmode
+ \csuse{blx@hook@cite}%
+ \csuse{blx@hook@cite@next}%
+ \let\blx@citeinit\blx@resetdata}
+
+\protected\def\blx@citecmdinit{%
+ \blx@leavevmode@cite
+ \iftoggle{blx@bibliography}
+ {}
+ {\blx@initunit}}
+
+% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>}
+\newrobustcmd*{\DeclareCiteCommand}{%
+ \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}}
+
+\def\blx@defcitecmd#1#2{%
+ \begingroup
+ \escapechar\m@ne
+ \edef\blx@tempa{\endgroup
+ \noexpand\blx@defcitecmd@i{#1}{\string#2}}%
+ \blx@tempa}
+
+\def\blx@defcitecmd@i#1#2{%
+ \blx@checkcitecmd{#2}{#1}%
+ \protected\csdef{#2}{%
+ \blx@citecmdinit
+ \@ifstar
+ {\blx@citepunct{\blxcitecmd{#2*}}}
+ {\blx@citepunct{\blxcitecmd{#2}}}}%
+ \@ifnextchar[%]
+ {\blx@defcitecmd@iii{#2#1}}
+ {\blx@defcitecmd@ii{#2#1}}}
+
+\long\def\blx@defcitecmd@ii#1{%
+ \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}%
+ \blx@defcitecmd@iv{#1}}
+
+\long\def\blx@defcitecmd@iii#1[#2]{%
+ \protected\long\csedef{blx@cite@#1}##1##2##3##4{%
+ \begingroup
+ \blx@citeinit
+ \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}%
+ ##4\endgroup}%
+ \blx@defcitecmd@iv{#1}}
+
+\long\def\blx@defcitecmd@iv#1#2#3#4#5{%
+ \protected\long\csdef{blx@citei@#1}##1##2##3##4{%
+ \ifblank{##1}
+ {}
+ {\def\abx@field@prenote{##1}}%
+ \ifblank{##2}
+ {\let\blx@thenotecheck\relax}
+ {\def\abx@field@postnote{##2}}%
+ \def\blx@precode{\delimcontext{#1}#2}%
+ \def\blx@loopcode{#3}%
+ \def\blx@dlimcode{#4}%
+ \def\blx@postcode{#5##4}%
+ \blx@citeloop{##3}%
+ \endgroup}}
+
+% {<type>}{<name>}{*}
+\def\blx@checkcitecmd#1#2{%
+ \ifblank{#2}
+ {\ifcsdef{blx@cite@#1}
+ {\blx@info{Redefining '\@backslashchar#1'}}
+ {\ifcsundef{#1}
+ {}
+ {\blx@warning@noline{Redefining '\@backslashchar#1'}}}%
+ \ifcsdef{blx@cite@#1*}
+ {}
+ {\csedef{blx@cite@#1*}{%
+ \expandafter\noexpand\csname blx@cite@#1\endcsname}%
+ \csedef{blx@citei@#1*}{%
+ \expandafter\noexpand\csname blx@citei@#1\endcsname}}}
+ {\ifcsdef{blx@cite@#1}
+ {}
+ {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}%
+ \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}}
+
+% {<name>}{prenote}{postnote}{citekey}{punct}
+\newrobustcmd*{\blxcitecmd}[1]{%
+ \ifcsundef{blx@cite@#1}
+ {\blx@err@citecmd{#1}}
+ {\csuse{blx@cite@#1}}}
+
+\newrobustcmd*{\blxciteicmd}[1]{%
+ \begingroup
+ \blx@citeinit
+ \ifcsundef{blx@citei@#1}
+ {\blx@err@citecmd{#1}}
+ {\csuse{blx@citei@#1}}}
+
+% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct}
+\protected\def\blxmciteicmd#1{%
+ \c@multicitecount#1\relax
+ \blxciteicmd}
+
+% {<multicitetotal>}{<multiprenote>}{<multipostnote>}
+\protected\def\blxmcites#1#2#3{%
+ \begingroup
+ \blx@citeinit
+ \c@multicitecount\z@
+ \c@multicitetotal#1\relax
+ \ifnum\c@multicitetotal>\@ne
+ \let\blx@ifcitesingle\@secondoftwo
+ \fi
+ \csuse{blx@hook@mcite}%
+ \csuse{blx@hook@mcite@next}%
+ \ifblank{#2}%
+ {}
+ {\def\abx@field@multiprenote{#2}}%
+ \ifblank{#3}%
+ {}
+ {\def\abx@field@multipostnote{#3}}%
+ \usebibmacro{multiprenote}}
+
+\protected\def\blxendmcites{%
+ \usebibmacro{multipostnote}%
+ \endgroup}
+
+% {<command>}[<wrapper>]{<cite>}{<delimiter>}
+\newrobustcmd{\DeclareMultiCiteCommand}[1]{%
+ \ifundef#1%
+ {}
+ {\blx@info{Redefining '\string#1'}}%
+ \@ifnextchar[%]
+ {\blx@defmcitecmd{#1}}
+ {\blx@defmcitecmd{#1}[\@firstofone]}}
+
+\def\blx@defmcitecmd#1[#2]#3#4{%
+ \begingroup
+ \escapechar\m@ne
+ \edef\blx@tempa{\endgroup
+ \protected\def\noexpand#1{%
+ \blx@citecmdinit
+ \noexpand\@ifstar
+ {\expandafter\noexpand
+ \csname blx@mcite@\string#1\endcsname*%
+ \expandafter\noexpand
+ \csname blx@mcitei@\string#1\endcsname}
+ {\expandafter\noexpand
+ \csname blx@mcite@\string#1\endcsname{}%
+ \expandafter\noexpand
+ \csname blx@mcitei@\string#1\endcsname}}%
+ \protected\csdef{blx@mcite@\string#1}####1####2{%
+ \begingroup
+ \blx@citeinit
+ \noexpand\blx@multicite
+ ####2%
+ {\unexpanded{#2}}%
+ {\string#3####1}%
+ {\unexpanded{#4}}}%
+ \protected\long\csdef{blx@mcitei@\string#1}}%
+ \blx@tempa##1##2##3{##1{##2}##3\endgroup}}
+
+% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} =>
+% <init><command>{<wrapper>}{<cites>}{<punct>}
+\def\blx@multicite#1#2#3#4{%
+ \begingroup
+ \csuse{blx@hook@mcite@before}%
+ \def\blx@tempa{#1}%
+ \def\blx@tempb{#2}%
+ \def\blx@tempc{#3}%
+ \def\blx@tempd{#4}%
+ \c@multicitetotal\z@
+ \blx@multiargs\blx@multicite@i}
+
+\def\blx@multicite@i#1#2{%
+ \ifblank{#1}%
+ {\let\abx@field@multiprenote\@empty}%
+ {\def\abx@field@multiprenote{#1}}%
+ \ifblank{#2}%
+ {\let\abx@field@multipostnote\@empty}%
+ {\def\abx@field@multipostnote{#2}}%
+ \let\blx@tempe\@empty
+ \let\blx@tempf\@empty
+ \togglefalse{blx@tempa}%
+ \blx@multiparse}
+
+\def\blx@multicite@add#1#2#3{%
+ \togglefalse{blx@tempa}%
+ \advance\c@multicitetotal\@ne
+ \eappto\blx@tempe{%
+ \expandonce\blx@tempf
+ \blxmciteicmd{\the\c@multicitetotal}%
+ {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}%
+ \let\blx@tempf\blx@tempd
+ \blx@multiparse}
+
+\def\blx@multicite@end#1{%
+ \edef\blx@tempa{\endgroup
+ \expandonce\blx@tempa
+ {\expandonce\blx@tempb}%
+ {\blxmcites
+ {\the\c@multicitetotal}%
+ {\expandonce\abx@field@multiprenote}%
+ {\expandonce\abx@field@multipostnote}%
+ \expandonce\blx@tempe
+ \blxendmcites}%
+ {#1}%
+ \iftoggle{blx@tempa}{\relax\space}{}}%
+ \blx@tempa}
+
+\def\blx@multiparse{%
+ \futurelet\@let@token\blx@multiparse@i}
+
+\def\blx@multiparse@i{%
+ \ifx\@let@token\relax
+ \blx@multiparse@ii{\blx@multicite@end{}}%
+ \fi
+ \ifx\@let@token[%]
+ \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}%
+ \fi
+ \ifx\@let@token\bgroup
+ \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}%
+ \fi
+ \ifx\@let@token\@sptoken
+ \blx@multiparse@ii\blx@multiparse@iii
+ \fi
+ \iftrue
+ \iftoggle{blx@tempa}
+ {\blx@multiparse@ii{\blx@multicite@end{}}}
+ {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}%
+ \fi
+ &}
+
+\def\blx@multiparse@ii#1#2&{\fi#1}
+\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse}
+
+% {<name>}[l|i|r]{<cite>}{<multicite>}
+\newrobustcmd*{\DeclareAutoCiteCommand}[1]{%
+ \ifcsundef{blx@acite@#1}
+ {}
+ {\blx@info{Redefining autocite command '#1'}}%
+ \@ifnextchar[%]
+ {\blx@defautocmd@i{#1}}
+ {\blx@defautocmd@i{#1}[r]}}
+
+\def\blx@defautocmd@i#1[#2]#3#4{%
+ \begingroup
+ \escapechar\m@ne
+ \edef\blx@tempa{\endgroup
+ \noexpand\blx@defautocmd@ii{#1}{#2}%
+ {\string#3}{\string#4}}%
+ \blx@tempa}
+
+\def\blx@defautocmd@ii#1#2#3#4{%
+ \protected\csedef{blx@acite@#1}{%
+ \blx@citecmdinit
+ \noexpand\@ifstar
+ {\blx@citepunct{\expandafter\noexpand
+ \csname blx@acitei@#1\endcsname*}}
+ {\blx@citepunct{\expandafter\noexpand
+ \csname blx@acitei@#1\endcsname{}}}}%
+ \protected\csedef{blx@acitei@#1}##1##2##3##4##5{%
+ \begingroup
+ \blx@citeinit
+ \if l#2\noexpand\unspace##5\fi
+ \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi
+ \blxcitecmd{#3##1}{##2}{##3}{##4}{}%
+ \if r#2##5\fi
+ \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi
+ \endgroup}%
+ \protected\csedef{blx@macite@#1}{%
+ \blx@citecmdinit
+ \noexpand\@ifstar
+ {\expandafter\noexpand
+ \csname blx@mcite@#4\endcsname*%
+ \expandafter\noexpand
+ \csname blx@macitei@#1\endcsname}
+ {\expandafter\noexpand
+ \csname blx@mcite@#4\endcsname{}%
+ \expandafter\noexpand
+ \csname blx@macitei@#1\endcsname}}%
+ \protected\csedef{blx@macitei@#1}##1##2##3{%
+ \if l#2\noexpand\unspace##3\fi
+ \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi
+ ##1{##2}%
+ \if r#2##3\fi
+ \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi
+ \endgroup}}
+
+% {<characters>}
+\newrobustcmd*{\DeclareAutoPunctuation}[1]{%
+ \ifblank{#1}
+ {\let\blx@thecheckpunct\blx@nocheckpunct}
+ {\let\blx@thecheckpunct\blx@checkpunct
+ \def\blx@autopunct{#1}}}
+
+\AfterEndPreamble{% babel
+ \begingroup
+ \makeatletter
+ \endlinechar\m@ne
+ \scantokens\expandafter{%
+ \expandafter\gdef
+ \expandafter\blx@autopunct
+ \expandafter{\blx@autopunct}}%
+ \endgroup}
+
+% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct>
+\newrobustcmd*{\citename}{\blx@citexpunct{citename}}
+\long\csdef{blx@cite@citename}#1#2#3#4#5#6{%
+ \begingroup
+ \blx@citecmdinit
+ \blx@citeinit
+ \ifblank{#1}
+ {}
+ {\def\abx@field@prenote{#1}}%
+ \ifblank{#2}
+ {\let\blx@thenotecheck\relax}
+ {\def\abx@field@postnote{#2}}%
+ \def\blx@precode{\usebibmacro{prenote}}%
+ \def\blx@loopcode{%
+ \ifnameundef{#5}
+ {\blx@warning@entry{'#5' undefined or not a name list}%
+ \abx@missing{#5}}
+ {\printnames[#4]{#5}}}%
+ \def\blx@dlimcode{\multicitedelim}%
+ \ifblank{#2}
+ {\def\blx@postcode{#6}}
+ {\def\blx@postcode{\usebibmacro{postnote}#6}}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \blx@citeloop{#3}%
+ \endgroup}
+
+% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct>
+\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}}
+\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{%
+ \begingroup
+ \blx@citecmdinit
+ \blx@citeinit
+ \ifblank{#1}
+ {}
+ {\def\abx@field@prenote{#1}}%
+ \ifblank{#2}
+ {\let\blx@thenotecheck\relax}
+ {\def\abx@field@postnote{#2}}%
+ \def\blx@precode{\usebibmacro{prenote}}%
+ \def\blx@loopcode{%
+ \iflistundef{#5}
+ {\blx@warning@entry{'#5' undefined or not a literal list}%
+ \abx@missing{#5}}
+ {\printlist[#4]{#5}}}%
+ \def\blx@dlimcode{\multicitedelim}%
+ \ifblank{#2}
+ {\def\blx@postcode{#6}}
+ {\def\blx@postcode{\usebibmacro{postnote}#6}}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \blx@citeloop{#3}%
+ \endgroup}
+
+% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct>
+
+\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}}
+\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{%
+ \begingroup
+ \blx@citecmdinit
+ \blx@citeinit
+ \ifblank{#1}
+ {}
+ {\def\abx@field@prenote{#1}}%
+ \ifblank{#2}
+ {\let\blx@thenotecheck\relax}
+ {\def\abx@field@postnote{#2}}%
+ \def\blx@precode{\usebibmacro{prenote}}%
+ \def\blx@loopcode{%
+ \iffieldundef{#5}
+ {\blx@warning@entry{'#5' undefined or not a field}%
+ \abx@missing{#5}}
+ {\printfield[#4]{#5}}}%
+ \def\blx@dlimcode{\multicitedelim}%
+ \ifblank{#2}
+ {\def\blx@postcode{#6}}
+ {\def\blx@postcode{\usebibmacro{postnote}#6}}%
+ \boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \blx@citeloop{#3}%
+ \endgroup}
+
+\renewrobustcmd*{\cite}{\blx@err@citecmd\cite}
+\let\blx@cite@cite\relax
+\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite}
+\let\blx@cite@parencite\relax
+\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite}
+\let\blx@cite@footcite\relax
+\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite}
+\let\blx@cite@footcitetext\relax
+\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite}
+\let\blx@cite@smartcite\relax
+\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite}
+\let\blx@cite@textcite\relax
+\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite}
+\let\blx@cite@supercite\relax
+
+%% ifthen interface
+
+\def\blx@TE#1#2{%
+ \TE@throw
+ \unexpanded{%
+ \iftrue\@nameuse{fi}%
+ #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2}
+
+\def\blx@xTE#1#2{%
+ \TE@throw
+ \unexpanded{\iftrue\@nameuse{fi}}%
+ #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2}
+
+\let\blx@TE@hook\@empty
+
+\appto\blx@blxinit{%
+ \appto\blx@TE@hook{%
+ \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}%
+ \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}%
+ \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}%
+ \def\iffirstcitekey{\blx@TE\blx@imc@iffirstcitekey}%
+ \def\iflastcitekey{\blx@TE\blx@imc@iflastcitekey}%
+ \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}%
+ \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}%
+ \def\ifentryinbib{\blx@TE\blx@imc@ifentryinbib}%
+ \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}%
+ \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}%
+ \def\ifopcit{\blx@TE\blx@imc@ifopcit}%
+ \def\ifloccit{\blx@TE\blx@imc@ifloccit}%
+ \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}%
+ \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}%
+ \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}%
+ \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}%
+ \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}%
+ \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}%
+ \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}%
+ \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}%
+ \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}%
+ \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}%
+ \def\ifbibmacroundef#1{\blx@TE{\blx@imc@ifbibmacroundef{#1}}}%
+ \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}%
+ \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}%
+ \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}%
+ \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}%
+ \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}%
+ \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}%
+ \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}%
+ \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}%
+ \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}%
+ \def\ifcapital{\blx@TE\blx@imc@ifcapital}%
+ \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}%
+ \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}%
+ \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}%
+ \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}%
+ \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}%
+ \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}%
+ \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}%
+ \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}%
+ \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}%
+ \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}%
+ \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}%
+ \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}%
+ \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}%
+ \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}%
+ \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}%
+ \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}%
+ \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}%
+ \def\ifterseinits{\blx@TE{\iftoggle{blx@terseinits}}}%
+ \def\iffirstinits{\blx@TE{\iftoggle{blx@giveninits}}}% legacy name for \ifgiveninits
+ \def\ifgiveninits{\blx@TE{\iftoggle{blx@giveninits}}}%
+ \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}%
+ \def\ifuniquetitle{\blx@TE{\iftoggle{abx@bool@uniquetitle}}}%
+ \def\ifuniqueprimaryauthor{\blx@TE{\iftoggle{abx@bool@uniqueprimaryauthor}}}%
+ \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}}
+
+% {<listmacro>}{<filtercsname>} => matches in <listmacro>
+
+\protected\def\blx@bibfilter#1#2{%
+ \begingroup
+ \edef\blx@do##1{%
+ \def\noexpand\blx@flt@item{##1}%
+ \ifboolexpr{\csexpandonce{#2}}%
+ {\listadd\noexpand\blx@tempa{##1}}%
+ {}}%
+ \let\blx@done\relax
+ \edef\blx@tempa{%
+ \let\noexpand\blx@tempa\noexpand\@empty
+ \blx@listloop{#1}}%
+ \blx@tempa
+ \edef\blx@tempa{\endgroup
+ \def\noexpand#1{\blx@tempa}}%
+ \blx@tempa}
+
+%% Auxiliary macros
+
+\newrobustcmd*{\mkbibquote}{\enquote}
+\protected\def\blx@imc@mkbibquote{%
+ \blx@ifuspunct\blx@usquote\enquote}
+
+\def\blx@usquote{%
+ \ifnum\@quotelevel>\z@
+ \expandafter\blx@usiquote
+ \else
+ \expandafter\blx@usoquote
+ \fi}
+
+\long\def\blx@usoquote#1{%
+ \begingroup
+ \initoquote
+ \textooquote#1%
+ \futurelet\@let@token\blx@usoquote@i}
+
+\def\blx@usoquote@i{%
+ \blx@usqcheck
+ {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi
+ \textcoquote\endgroup}
+ {\blx@setpostpunct\textcoquote\endgroup}}
+
+\long\def\blx@usiquote#1{%
+ \begingroup
+ \initiquote
+ \textoiquote#1%
+ \futurelet\@let@token\blx@usiquote@i}
+
+\def\blx@usiquote@i{%
+ \blx@usqcheck
+ {\textciquote\endgroup}
+ {\blx@setpostpunct\textciquote\endgroup}}
+
+\long\def\blx@usqcheck#1#2{%
+ \def\blx@tempa{#1}%
+ \def\blx@tempb{#2}%
+ \ifx\@let@token\space
+ \blx@usqcheck@i\blx@tempa
+ \fi
+ \ifx\@let@token\@sptoken
+ \blx@usqcheck@i\blx@tempa
+ \fi
+ \if\noexpand\@let@token\relax
+ \expandafter\blx@usqcheck@iv
+ \fi
+ \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&}
+
+\long\def\blx@usqcheck@i#1#2&{\fi#1}
+
+\long\def\blx@usqcheck@ii#1{%
+ \if\noexpand#1\relax
+ \blx@usqcheck@i\blx@tempa
+ \fi
+ \if\noexpand#1\noexpand\@let@token
+ \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}%
+ \fi
+ \blx@usqcheck@ii
+}
+
+\long\def\blx@usqcheck@iii#1#2{#2#1}
+
+\long\def\blx@usqcheck@iv#1&#2{%
+ \begingroup
+ \escapechar=-1 %
+ \edef\blx@tempa{\expandafter\@gobble\string#2}%
+ \expandafter\endgroup
+ \ifx\blx@tempa\@empty
+ \else
+ \blx@usqcheck@i\blx@tempb
+ \fi
+ #1&#2%
+}
+
+\newrobustcmd*{\mkbibemph}{\emph}
+\protected\long\def\blx@imc@mkbibemph#1{%
+ \emph{#1}\blx@imc@setpunctfont\emph}
+
+\newrobustcmd*{\mkbibbold}{\textbf}
+\protected\long\def\blx@imc@mkbibbold#1{%
+ \textbf{#1}\blx@imc@setpunctfont\textbf}
+
+\newrobustcmd*{\mkbibitalic}{\textit}
+\protected\long\def\blx@imc@mkbibitalic#1{%
+ \textit{#1}\blx@imc@setpunctfont\textit}
+
+\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold \mkbibitalic}
+
+\newcommand*{\bibleftparen}{\blx@postpunct(}
+\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence}
+\newcommand*{\bibleftbracket}{\blx@postpunct[}
+\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence}
+
+\def\blx@parenlevel{%
+ \iftoggle{blx@footnote}
+ {\blx@parenlevel@foot}
+ {\blx@parenlevel@text}}
+
+\newrobustcmd*{\blx@bibopenparen}{%
+ \blx@opencheck\bibopenparen
+ \blx@postpunct
+ \ifnum\blx@parenlevel=\z@
+ \global\blx@parenlevel\@ne
+ \global\c@parenlevel\@ne
+ \expandafter\bibleftparen
+ \else
+ \expandafter\blx@openparen
+ \fi}
+
+\newrobustcmd*{\blx@bibopenbracket}{%
+ \blx@opencheck\bibopenbracket
+ \blx@postpunct
+ \ifnum\blx@parenlevel=\z@
+ \global\blx@parenlevel1002
+ \global\c@parenlevel\@ne
+ \expandafter\bibleftbracket
+ \else
+ \expandafter\blx@openparen
+ \fi}
+
+\newrobustcmd*{\blx@bibcloseparen}{%
+ \blx@closecheck\bibcloseparen
+ \blx@postpunct\blx@closeparen}
+
+\newrobustcmd*{\blx@bibclosebracket}{%
+ \blx@closecheck\bibclosebracket
+ \blx@postpunct\blx@closeparen}
+
+\def\blx@openparen{%
+ \ifodd\blx@parenlevel
+ \global\advance\blx@parenlevel\@ne
+ \global\advance\c@parenlevel\@ne
+ \expandafter\bibleftbracket
+ \else
+ \global\advance\blx@parenlevel\@ne
+ \global\advance\c@parenlevel\@ne
+ \expandafter\bibleftparen
+ \fi}
+
+\def\blx@closeparen{%
+ \ifodd\blx@parenlevel
+ \blx@closeparen@i
+ \expandafter\bibrightparen
+ \else
+ \blx@closeparen@i
+ \expandafter\bibrightbracket
+ \fi}
+
+\def\blx@closeparen@i{%
+ \ifnum\blx@parenlevel=1002
+ \global\blx@parenlevel\z@
+ \global\c@parenlevel\z@
+ \else
+ \global\advance\blx@parenlevel\m@ne
+ \global\advance\c@parenlevel\m@ne
+ \fi}
+
+\def\blx@opencheck#1{%
+ \ifnum\numexpr\blx@parenlevel+\@ne
+ \ifnum\blx@parenlevel>\@m -1001\fi
+ >\c@maxparens
+ \blx@err@nestparen{\string#1}%
+ \blx@errormark
+ \fi}
+
+\def\blx@closecheck#1{%
+ \ifnum\numexpr\blx@parenlevel
+ \ifnum\blx@parenlevel>\@m -1001\fi
+ >\c@maxparens
+ \blx@err@nestparen{\string#1}%
+ \blx@errormark
+ \fi
+ \ifnum\blx@parenlevel<\@ne
+ \blx@err@matchparen{Unmatched \string#1}%
+ \blx@errormark
+ \fi}
+
+\protected\def\blx@errormark{%
+ \rule[0.25ex]{1.25ex}{1.25ex}}
+
+\AtEndDocument{%
+ \unless\ifnum\blx@parenlevel@text=\z@
+ \blx@err@matchparen{%
+ Unbalanced parentheses or brackets in the document body}%
+ \fi
+ \unless\ifnum\blx@parenlevel@foot=\z@
+ \blx@err@matchparen{%
+ Unbalanced parentheses or brackets in a foot or endnote}%
+ \fi}
+
+\newrobustcmd{\mkbibparens}[1]{%
+ \begingroup
+ \blx@blxinit
+ \blx@setsfcodes
+ \bibopenparen#1\bibcloseparen
+ \endgroup}
+
+\newrobustcmd{\mkbibbrackets}[1]{%
+ \begingroup
+ \blx@blxinit
+ \blx@setsfcodes
+ \bibopenbracket#1\bibclosebracket
+ \endgroup}
+
+\newrobustcmd*{\parentext}{\mkbibparens}
+\newrobustcmd*{\brackettext}{\mkbibbrackets}
+
+\newrobustcmd{\mkbibsuperscript}[1]{%
+ \unspace\allowhyphens\textsuperscript{%
+ \begingroup
+ \protected\long\def\mkbibsuperscript##1{%
+ \blx@warning{Nested superscript}%
+ \mkbibbrackets{##1}}%
+ #1\endgroup}}
+
+\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}}
+\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}}
+\newrobustcmd{\blx@mkbibfootnote}[2]{%
+ \iftoggle{blx@footnote}
+ {\blx@warning{Nested notes}%
+ \addspace\mkbibparens{#2}}
+ {\unspace
+ \ifnum\blx@notetype=\tw@
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
+ {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
+
+\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}}
+\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}}
+\newrobustcmd{\blx@mkbibendnote}[2]{%
+ \iftoggle{blx@footnote}
+ {\blx@warning{Nested notes}%
+ \addspace\mkbibparens{#2}}
+ {\unspace
+ \ifnum\blx@notetype=\@ne
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}
+ {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}}
+
+\newrobustcmd{\blxmkbibnote}[2]{%
+ \begingroup
+ \blx@blxinit
+ \blx@setsfcodes
+ \blx@postpunct@agroup
+ \toggletrue{blx@footnote}%
+ \csuse{bib#1notewrapper}{#2}%
+ \endgroup}
+
+\newcommand{\bibfootnotewrapper}[1]{%
+ \bibsentence#1\addperiod}
+
+\newcommand{\bibendnotewrapper}[1]{%
+ \bibsentence#1\addperiod}
+
+\AtEndPreamble{%
+ \def\blx@theendnote{\blx@err@endnote\footnote}%
+ \def\blx@theendnotetext{\blx@err@endnote\footnotetext}%
+ \ifdef\endnote
+ {\def\blx@theendnote{\endnote}%
+ \ifdef\endnotetext
+ {\def\blx@theendnotetext{\endnotetext}}
+ {}}
+ {\ifdef\pagenote
+ {\def\blx@theendnote{\pagenote}%
+ \ifdef\pagenotetext
+ {\def\blx@theendnotetext{\pagenotetext}}
+ {}}
+ {}}}
+
+\newrobustcmd*{\mknumalph}[1]{%
+ \begingroup
+ \blx@tempcnta=#1\relax
+ \ifnum\blx@tempcnta>702 %
+ \else
+ \ifnum\blx@tempcnta>26 %
+ \advance\blx@tempcnta\m@ne
+ \divide\blx@tempcnta26\relax
+ \blx@numalph\blx@tempcnta
+ \multiply\blx@tempcnta26\relax
+ \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax
+ \fi
+ \fi
+ \blx@numalph\blx@tempcnta
+ \endgroup}
+\def\blx@numalph#1{%
+ \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or
+ a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or
+ n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else
+ \blx@warning@entry{Value out of range}\number#1\fi}
+
+% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}}
+
+\newrobustcmd*{\volcitecmd}{%
+ \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
+ \begingroup\let\blx@citeargs\blx@volciteargs}
+
+\protected\def\blx@volciteargs#1{%
+ \endgroup
+ \@ifnextchar[%]
+ {\blx@volciteargs@i{#1}}
+ {\blx@volciteargs@i{#1}[]}}
+
+\long\def\blx@volciteargs@i#1[#2]#3{%
+ \@ifnextchar[%]
+ {\blx@volciteargs@ii{#1}{#2}{#3}}
+ {\blx@citeargs@iii{#1{#2}{{#3}{}}}}}
+
+\long\def\blx@volciteargs@ii#1#2#3[#4]{%
+ \blx@citeargs@iii{#1{#2}{{#3}{#4}}}}
+
+\newrobustcmd*{\multivolcitecmd}{%
+ \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
+ \def\blx@hook@mcite@before{%
+ \global\undef\blx@hook@mcite@before
+ \let\blx@citeargs\blx@volmciteargs}}
+
+\protected\def\blx@volmciteargs#1{%
+ \@ifnextchar[%]
+ {\blx@volciteargs@i{#1}}
+ {\blx@volciteargs@i{#1}[]}}
+
+%% Control file
+
+\begingroup
+\let~\space
+\@makeother\<
+\@makeother\>
+\@makeother\.
+\@makeother\:
+\@makeother\?
+\@makeother\"
+\@makeother\-
+\@makeother\=
+\@makeother\/
+\xdef\blx@xml@file{%
+ \blx@sig@bcf\blx@nl
+ \blx@ver@bcf\blx@nl}
+\xdef\blx@xml@endfile{%
+ </bcf:controlfile>}
+\xdef\blx@xml@comment#1{%
+ ~~<!-- #1 -->\blx@nl}
+\xdef\blx@xml@options#1#2#3{%
+ ~~<bcf:options%
+ \noexpand\ifblank{#1}{}{ component="#1"}%
+ \noexpand\ifblank{#2}{}{ type="#2"}%
+ >\blx@nl
+ #3%
+ ~~</bcf:options>\blx@nl}
+\xdef\blx@xml@option#1#2{%
+ ~~~~<bcf:option type="#1">\blx@nl
+ #2%
+ ~~~~</bcf:option>\blx@nl}
+\xdef\blx@xml@ordered#1#2#3{%
+ ~~~~~~<bcf:value order="#1"#2%
+ >#3</bcf:value>\blx@nl}
+
+\xdef\blx@xml@datafieldset#1#2{%
+ ~~<bcf:datafieldset name="#1">\blx@nl
+ #2%
+ ~~</bcf:datafieldset>\blx@nl}
+
+\xdef\blx@xml@datafieldsets@member#1{%
+ ~~~~<bcf:member#1/>\blx@nl}
+
+\xdef\blx@xml@transliteration#1#2{%
+ ~~<bcf:transliteration entrytype="#1">\blx@nl
+ #2%
+ ~~</bcf:transliteration>\blx@nl}
+\xdef\blx@xml@translit#1#2#3{%
+ ~~~~<bcf:translit target="#1" from="#2" to="#3"/>\blx@nl}
+
+\xdef\blx@xml@sourcemap#1{%
+ ~~<bcf:sourcemap>\blx@nl
+ #1%
+ ~~</bcf:sourcemap>\blx@nl}
+\xdef\blx@xml@sourcemap@maps#1#2{%
+ ~~~~<bcf:maps#1>\blx@nl
+ #2%
+ ~~~~</bcf:maps>\blx@nl}
+\xdef\blx@xml@sourcemap@map#1#2{%
+ ~~~~~~<bcf:map#1>\blx@nl
+ #2%
+ ~~~~~~</bcf:map>\blx@nl}
+\xdef\blx@xml@sourcemap@perdatasource#1{%
+ ~~~~~~~~<bcf:per\string_datasource>#1</bcf:per\string_datasource>\blx@nl}
+\xdef\blx@xml@sourcemap@pertype#1{%
+ ~~~~~~~~<bcf:per\string_type>#1</bcf:per\string_type>\blx@nl}
+\xdef\blx@xml@sourcemap@pernottype#1{%
+ ~~~~~~~~<bcf:per\string_nottype>#1</bcf:per\string_nottype>\blx@nl}
+\xdef\blx@xml@sourcemap@step#1{%
+ ~~~~~~~~<bcf:map\string_step#1/>\blx@nl}
+
+\xdef\blx@xml@labelalphatemplate#1#2{%
+ ~~<bcf:labelalphatemplate type="#1">\blx@nl
+ #2%
+ ~~</bcf:labelalphatemplate>\blx@nl}
+\xdef\blx@xml@labelalpha@element#1#2{%
+ ~~~~<bcf:labelelement order="#1">\blx@nl
+ #2%
+ ~~~~</bcf:labelelement>\blx@nl}
+\xdef\blx@xml@labelalpha@part#1#2{%
+ ~~~~~~<bcf:labelpart#1>#2</bcf:labelpart>\blx@nl}
+
+\xdef\blx@xml@inheritance#1{%
+ ~~<bcf:inheritance>\blx@nl
+ #1%
+ ~~</bcf:inheritance>\blx@nl}
+\xdef\blx@xml@inherit@defaults#1#2{%
+ ~~~~<bcf:defaults#1>\blx@nl
+ #2%
+ ~~~~</bcf:defaults>\blx@nl}
+\xdef\blx@xml@inherit@data#1{%
+ ~~~~<bcf:inherit>\blx@nl
+ #1%
+ ~~~~</bcf:inherit>\blx@nl}
+\xdef\blx@xml@inherit@type#1#2#3{%
+ ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl}
+\xdef\blx@xml@inherit@field#1#2#3{%
+ ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl}
+\xdef\blx@xml@inherit@block#1{%
+ ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl}
+
+\xdef\blx@xml@nosorts#1{%
+ ~~<bcf:nosorts>\blx@nl
+ #1%
+ ~~</bcf:nosorts>\blx@nl}
+\xdef\blx@xml@nosort#1#2{%
+ ~~~~<bcf:nosort field="#1" value="#2"/>\blx@nl}
+
+\xdef\blx@xml@noinits#1{%
+ ~~<bcf:noinits>\blx@nl
+ #1%
+ ~~</bcf:noinits>\blx@nl}
+\xdef\blx@xml@noinit#1{%
+ ~~~~<bcf:noinit value="#1"/>\blx@nl}
+
+\xdef\blx@xml@nolabels#1{%
+ ~~<bcf:nolabels>\blx@nl
+ #1%
+ ~~</bcf:nolabels>\blx@nl}
+\xdef\blx@xml@nolabel#1{%
+ ~~~~<bcf:nolabel value="#1"/>\blx@nl}
+
+\xdef\blx@xml@nolabelwidthcounts#1{%
+ ~~<bcf:nolabelwidthcounts>\blx@nl
+ #1%
+ ~~</bcf:nolabelwidthcounts>\blx@nl}
+\xdef\blx@xml@nolabelwidthcount#1{%
+ ~~~~<bcf:nolabelwidthcount value="#1"/>\blx@nl}
+
+\xdef\blx@xml@sortingnamekey#1#2{%
+ ~~<bcf:sortingnamekey keyscheme="#1">\blx@nl%
+ #2%
+ ~~</bcf:sortingnamekey>\blx@nl}
+
+\xdef\blx@xml@sortingnamekeykeypart#1#2{%
+ ~~~~<bcf:keypart#1>\blx@nl
+ #2%
+ ~~~~</bcf:keypart>\blx@nl}
+
+\xdef\blx@xml@sortingnamekeynamepart#1#2#3{%
+ ~~~~~~<bcf:part type="namepart"#1#2>#3</bcf:part>\blx@nl}
+
+\xdef\blx@xml@sortingnamekeyliteral#1#2{%
+ ~~~~~~<bcf:part type="literal"#1>#2</bcf:part>\blx@nl}
+
+\xdef\blx@xml@sorting#1#2{%
+ ~~<bcf:sorting#1>\blx@nl%
+ #2%
+ ~~</bcf:sorting>\blx@nl}
+\xdef\blx@xml@presort#1#2{%
+ ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>%
+ #2</bcf:presort>\blx@nl}
+
+\xdef\blx@xml@sortexclude#1#2{%
+ ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl
+ #2%
+ ~~~~</bcf:sortexclusion>\blx@nl}
+\xdef\blx@xml@exclude#1{%
+ ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl}
+\xdef\blx@xml@sort#1#2{%
+ ~~~~<bcf:sort #1>\blx@nl
+ #2%
+ ~~~~</bcf:sort>\blx@nl}
+\xdef\blx@xml@sortitem#1#2{%
+ ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl}
+\xdef\blx@xml@section#1{%
+ ~~<bcf:section number="#1">}
+\xdef\blx@xml@endsection{%
+ ~~</bcf:section>}
+
+\xdef\blx@xml@slist#1#2#3#4#5#6#7#8{%
+ ~~<bcf:sortlist section="#3" name="#1" type="#2" sortscheme="#4"
+ sortnamekeyscheme="#5" labelprefix="#6">\blx@nl
+ #8%
+ #7%
+ ~~</bcf:sortlist>\blx@nl}
+\xdef\blx@xml@slistfilterorbegin{%
+ ~~~~<bcf:filteror>\blx@nl}
+\xdef\blx@xml@slistfilterorend{%
+ ~~~~</bcf:filteror>\blx@nl}
+\xdef\blx@xml@slistfilter#1#2{%
+ ~~~~<bcf:filter type="#1">#2</bcf:filter>\blx@nl}
+
+\xdef\blx@xml@bibdata#1#2{%
+ ~~<bcf:bibdata section="#1">\blx@nl
+ #2%
+ ~~</bcf:bibdata>\blx@nl}
+\xdef\blx@xml@datasource#1#2#3{%
+ ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl}
+\xdef\blx@xml@citekey#1#2{%
+ ~~~~<bcf:citekey order="#2">#1</bcf:citekey>}
+\xdef\blx@xml@citeset#1#2{%
+ ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>}
+\xdef\blx@xml@svalue#1#2{%
+ \blx@xml@option{singlevalued}{%
+ ~~~~~~<bcf:key>#1</bcf:key>\blx@nl
+ ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}}
+\xdef\blx@xml@mvalue#1#2{%
+ \blx@xml@option{multivalued}{%
+ ~~~~~~<bcf:key>#1</bcf:key>\blx@nl
+ #2}}
+\xdef\blx@xml@toggle#1{%
+ \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}}
+\xdef\blx@xml@options@scope#1#2{%
+ ~~<bcf:optionscope type="#1">\blx@nl
+ #2%
+ ~~</bcf:optionscope>\blx@nl}
+\xdef\blx@xml@option@scope#1#2{%
+ ~~~~<bcf:option datatype="#1">#2</bcf:option>\blx@nl}
+\endgroup
+
+\def\blx@bcf@options@global{%
+ \blx@xml@comment{GLOBAL}%
+ \blx@xml@options{biblatex}{global}{%
+ \blx@xml@svalue{alphaothers}{\labelalphaothers}%
+ \blx@xml@toggle{labelalpha}%
+ \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}%
+ \blx@xml@toggle{labeltitle}%
+ \blx@xml@mvalue{labeltitlespec}{\blx@bcf@labeltitlespec}%
+ \blx@xml@toggle{labeltitleyear}%
+ \blx@xml@toggle{labeldate}%
+ \blx@xml@mvalue{labeldatespec}{\blx@bcf@labeldatespec}%
+ \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}%
+ \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}%
+ \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}%
+ \blx@xml@svalue{maxitems}{\blx@maxitems}%
+ \blx@xml@svalue{minalphanames}{\blx@minalphanames}%
+ \blx@xml@svalue{minbibnames}{\blx@minbibnames}%
+ \blx@xml@svalue{mincitenames}{\blx@mincitenames}%
+ \blx@xml@svalue{minitems}{\blx@minitems}%
+ \blx@xml@toggle{singletitle}%
+ \blx@xml@svalue{sortalphaothers}{\sortalphaothers}%
+ \blx@xml@svalue{sortlocale}{\blx@sortlocale}%
+ \blx@xml@svalue{sortscheme}{\blx@sorting}%
+ \blx@xml@svalue{uniquelist}{\blx@uniquelist}%
+ \blx@xml@svalue{uniquename}{\blx@uniquename}%
+ \blx@xml@toggle{uniqueprimaryauthor}%
+ \blx@xml@toggle{uniquetitle}%
+ \blx@xml@toggle{useprefix}%
+ \blx@xml@nametoggles
+ }%
+}
+
+\def\blx@bcf@options@type#1{%
+ \blx@xml@comment{#1}%
+ \blx@xml@options{biblatex}{#1}{%
+ \blx@xml@toggle{labelalpha}%
+ \blx@xml@mvalue{labelnamespec}{%
+ \ifcsdef{blx@bcf@labelnamespec@#1}
+ {\csuse{blx@bcf@labelnamespec@#1}}
+ {\blx@bcf@labelnamespec}}%
+ \blx@xml@toggle{labeltitle}%
+ \blx@xml@mvalue{labeltitlespec}{%
+ \ifcsdef{blx@bcf@labeltitlespec@#1}
+ {\csuse{blx@bcf@labeltitlespec@#1}}
+ {\blx@bcf@labeltitlespec}}%
+ \blx@xml@toggle{labeltitleyear}%
+ \blx@xml@toggle{labeldate}%
+ \blx@xml@mvalue{labeldatespec}{%
+ \ifcsdef{blx@bcf@labeldatespec@#1}
+ {\csuse{blx@bcf@labeldatespec@#1}}
+ {\blx@bcf@labeldatespec}}%
+ \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}%
+ \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}%
+ \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}%
+ \blx@xml@svalue{maxitems}{\blx@maxitems@type}%
+ \blx@xml@svalue{minalphanames}{\blx@minalphanames}%
+ \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}%
+ \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}%
+ \blx@xml@svalue{minitems}{\blx@minitems@type}%
+ \blx@xml@toggle{singletitle}%
+ \blx@xml@toggle{skipbib}%
+ \blx@xml@toggle{skiplab}%
+ \blx@xml@toggle{skipbiblist}%
+ \blx@xml@svalue{uniquelist}{\blx@uniquelist}%
+ \blx@xml@svalue{uniquename}{\blx@uniquename}%
+ \blx@xml@toggle{uniqueprimaryauthor}%
+ \blx@xml@toggle{uniquetitle}%
+ \blx@xml@toggle{useprefix}%
+ \blx@xml@nametoggles
+ }%
+}
+
+\def\blx@ctrlwrite{%
+ \begingroup
+ \blx@safe@actives
+ \let\protect\string
+ % options
+ \edef\labelalphaothers{\labelalphaothers}%
+ \edef\sortalphaothers{\sortalphaothers}%
+ \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}%
+ \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}%
+ % Expand the global use* name toggles
+ \let\blx@xml@nametoggles\@empty
+ \def\do##1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use##1}}}%
+ \abx@donames
+ \edef\blx@tempa{%
+ \blx@xml@file
+ \blx@xml@comment{BIBER OPTIONS}%
+ \blx@xml@options{biber}{global}{%
+ \blx@xml@svalue{output_encoding}{\blx@texencoding}%
+ \blx@xml@svalue{input_encoding}{\blx@bibencoding}%
+ \blx@xml@toggle{debug}%
+ \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}%
+ \blx@xml@svalue{minxrefs}{\blx@minxrefs}%
+ \blx@xml@toggle{sortcase}%
+ \blx@xml@toggle{sortgiveninits}%
+ \blx@xml@toggle{sortupper}%
+ }%
+ \blx@xml@comment{BIBLATEX OPTIONS}%
+ \blx@bcf@options@global
+ }%
+ \ifdef\blx@opts@type
+ {\def\do##1{%
+ \begingroup
+ \blx@setoptions@type{##1}%
+ % Expand the type use* name toggles
+ \let\blx@xml@nametoggles\@empty
+ \def\do####1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use####1}}}%
+ \abx@donames
+ \begingroup
+ \let\protect\relax
+ \blx@checkoptions@type
+ \endgroup
+ \xappto\blx@tempa{\blx@bcf@options@type{##1}}%
+ \endgroup}%
+ \dolistloop\blx@opts@type}
+ {}%
+ % options scope
+ % GLOBAL
+ \def\do##1{%
+ \begingroup
+ \def\do####1{\xappto\blx@bcf@options@scope@global{\blx@xml@option@scope{##1}{####1}}}%
+ \dolistcsloop{blx@globalopts@##1}%
+ \endgroup}%
+ \dolistloop\blx@globalopts@datatypes
+ % ENTRYTYPE
+ \def\do##1{%
+ \begingroup
+ \def\do####1{\xappto\blx@bcf@options@scope@type{\blx@xml@option@scope{##1}{####1}}}%
+ \dolistcsloop{blx@typeopts@##1}%
+ \endgroup}%
+ \dolistloop\blx@typeopts@datatypes
+ % ENTRY
+ \def\do##1{%
+ \begingroup
+ \def\do####1{\xappto\blx@bcf@options@scope@entry{\blx@xml@option@scope{##1}{####1}}}%
+ \dolistcsloop{blx@entryopts@##1}%
+ \endgroup}%
+ \dolistloop\blx@entryopts@datatypes
+ % NAMELIST
+ \def\do##1{%
+ \begingroup
+ \def\do####1{\xappto\blx@bcf@options@scope@namelist{\blx@xml@option@scope{##1}{####1}}}%
+ \dolistcsloop{blx@namelistopts@##1}%
+ \endgroup}%
+ \dolistloop\blx@entryopts@datatypes
+ % NAME
+ \def\do##1{%
+ \begingroup
+ \def\do####1{\xappto\blx@bcf@options@scope@name{\blx@xml@option@scope{##1}{####1}}}%
+ \dolistcsloop{blx@nameopts@##1}%
+ \endgroup}%
+ \dolistloop\blx@entryopts@datatypes
+
+ \eappto\blx@tempa{%
+ \blx@xml@comment{BIBLATEX OPTION SCOPE}%
+ \blx@xml@options@scope{GLOBAL}{\blx@bcf@options@scope@global}%
+ \blx@xml@options@scope{ENTRYTYPE}{\blx@bcf@options@scope@type}%
+ \blx@xml@options@scope{ENTRY}{\blx@bcf@options@scope@entry}%
+ \blx@xml@options@scope{NAMELIST}{\blx@bcf@options@scope@namelist}%
+ \blx@xml@options@scope{NAME}{\blx@bcf@options@scope@name}}
+ % datafieldsets
+ \def\do##1{%
+ \xappto\blx@bcf@datafieldsets{\blx@xml@datafieldset{##1}{\csuse{blx@datafieldsetmembers@##1}}}}
+ \dolistloop\blx@datafieldsets
+
+ \eappto\blx@tempa{%
+ \blx@xml@comment{DATAFIELDSETS}%
+ \blx@bcf@datafieldsets}%
+ % sourcemap
+ \ifbool{sourcemap}
+ {\eappto\blx@tempa{%
+ \blx@xml@comment{SOURCEMAP}%
+ \blx@xml@sourcemap{%
+ \ifcsdef{blx@sourcemap@user}
+ {\csuse{blx@sourcemap@user}}
+ {}%
+ \ifcsdef{blx@sourcemap@style}
+ {\csuse{blx@sourcemap@style}}
+ {}%
+ \ifcsdef{blx@sourcemap@defaults@bibtex}
+ {\csuse{blx@sourcemap@defaults@bibtex}}
+ {}%
+ \ifcsdef{blx@sourcemap@defaults@biblatexml}
+ {\csuse{blx@sourcemap@defaults@biblatexml}}
+ {}%
+ \ifcsdef{blx@sourcemap@defaults@endnotexml}
+ {\csuse{blx@sourcemap@defaults@endnotexml}}
+ {}%
+ \ifcsdef{blx@sourcemap@defaults@ris}
+ {\csuse{blx@sourcemap@defaults@ris}}
+ {}%
+ \ifcsdef{blx@sourcemap@defaults@zoterordfxml}
+ {\csuse{blx@sourcemap@defaults@zoterordfxml}}
+ {}}}}
+ {}%
+ % labelalpha template
+ \eappto\blx@tempa{%
+ \blx@xml@comment{LABELALPHA TEMPLATE}}%
+ \def\do##1{%
+ \eappto\blx@tempa{%
+ \blx@xml@labelalphatemplate{##1}{%
+ \csuse{blx@labelalphatemplate@##1}}%
+ }%
+ }%
+ \dolistloop\blx@latem@type
+ % data inheritance
+ \eappto\blx@tempa{%
+ \blx@xml@comment{INHERITANCE}%
+ \blx@xml@inheritance{%
+ \csuse{blx@inherit@default}%
+ \csuse{blx@inherit@data}%
+ }%
+ }%
+ % noinit
+ \ifcsdef{blx@noinit}
+ {\eappto\blx@tempa{%
+ \blx@xml@comment{NOINIT}%
+ \blx@xml@noinits{%
+ \csuse{blx@noinit}%
+ }%
+ }}
+ {}%
+ % nolabel
+ \ifcsdef{blx@nolabel}
+ {\eappto\blx@tempa{%
+ \blx@xml@comment{NOLABEL}%
+ \blx@xml@nolabels{%
+ \csuse{blx@nolabel}%
+ }%
+ }}
+ {}%
+ % nolabel
+ \ifcsdef{blx@nolabelwidthcount}
+ {\eappto\blx@tempa{%
+ \blx@xml@comment{NOLABELWIDTHCOUNT}%
+ \blx@xml@nolabelwidthcounts{%
+ \csuse{blx@nolabelwidthcount}%
+ }%
+ }}
+ {}%
+ % nosort
+ \ifcsdef{blx@nosort}
+ {\eappto\blx@tempa{%
+ \blx@xml@comment{NOSORT}%
+ \blx@xml@nosorts{%
+ \csuse{blx@nosort}%
+ }%
+ }}
+ {}%
+ % transliteration
+ \ifdefempty\blx@translits
+ {}
+ {\eappto\blx@tempa{\blx@xml@comment{TRANSLITERATION}}%
+ \def\do##1{%
+ \eappto\blx@tempa{\blx@xml@transliteration{##1}{\csuse{blx@translit@##1}}}}%
+ \dolistloop\blx@translits}%
+ % sortingnamekey
+ \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY}}%
+ \def\do##1{%
+ \eappto\blx@tempa{%
+ \blx@xml@sortingnamekey{##1}{%
+ \csuse{blx@sortingnamekey@##1}}}}%
+ \dolistloop\blx@sortingnamekeyspecs
+ % sorting
+ \def\do##1{%
+ \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}%
+ \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}%
+ \abx@doentrytypes
+ \eappto\blx@tempa{%
+ \blx@xml@comment{SORTING}%
+ \blx@xml@sorting{}{%
+ \blx@bcf@presort
+ \blx@bcf@exclude
+ \csuse{blx@sorting@\blx@sorting}%
+ }%
+ }%
+ % datamodel
+ \eappto\blx@tempa{%
+ \blx@xml@comment{DATA MODEL}%
+ \blx@xml@datamodel{%
+ \blx@xml@datamodel@constants{%
+ \blx@bcf@datamodel@constants
+ }%
+ \blx@xml@datamodel@entrytypes{%
+ \blx@bcf@datamodel@entrytypes
+ }%
+ \blx@xml@datamodel@fields{%
+ \blx@bcf@datamodel@fields
+ }%
+ \blx@bcf@datamodel@entryfields
+ \blx@bcf@datamodel@constraints
+ }%
+ }%
+ % files
+ \let\blx@tempb\@empty
+ \blx@bibdata\blx@tempb\blx@bibfiles
+ \eappto\blx@tempa{%
+ \blx@xml@comment{CITATION DATA}%
+ \blx@xml@comment{SECTION 0}%
+ \blx@xml@bibdata{0}{\blx@tempb}%
+ \blx@xml@section{0}%
+ }%
+ \immediate\openout\blx@bcfout\jobname.bcf\relax
+ \blx@auxwrite\blx@bcfout{}{\blx@tempa}%
+ \global\undef\blx@tempa
+ \endgroup
+ \AfterEndDocument{%
+ \blx@auxwrite\blx@bcfout{}{%
+ \blx@xml@endsection\blx@nl
+ \csuse{blx@slists}%
+ \blx@xml@endfile}%
+ \immediate\closeout\blx@bcfout}}
+
+%% Customisation
+
+% nolabel
+\newrobustcmd*{\DeclareNolabel}[1]{%
+ \begingroup
+ \let\nolabel\blx@nolabel@setup
+ \let\blx@tempa\@empty
+ #1%
+ \global\let\blx@nolabel\blx@tempa
+ \endgroup}
+\@onlypreamble\DeclareNolabel
+
+\newcommand*{\blx@nolabel@setup}[1]{%
+ \eappto\blx@tempa{%
+ \blx@xml@nolabel{#1}}}
+
+% nolabelwidthcount
+\newrobustcmd*{\DeclareNolabelwidthcount}[1]{%
+ \begingroup
+ \let\nolabel\blx@nolabelwidthcount@setup
+ \let\blx@tempa\@empty
+ #1%
+ \global\let\blx@nolabelwidthcount\blx@tempa
+ \endgroup}
+\@onlypreamble\DeclareNolabelwidthcount
+
+\newcommand*{\blx@nolabelwidthcount@setup}[1]{%
+ \eappto\blx@tempa{%
+ \blx@xml@nolabelwidthcount{#1}}}
+
+% nosort
+\newrobustcmd*{\DeclareNosort}[1]{%
+ \begingroup
+ \let\nosort\blx@nosort@setup
+ \let\blx@tempa\@empty
+ #1%
+ \global\let\blx@nosort\blx@tempa
+ \endgroup}
+\@onlypreamble\DeclareNosort
+
+\newcommand*{\blx@nosort@setup}[2]{%
+ \eappto\blx@tempa{%
+ \blx@xml@nosort{#1}{#2}}}
+
+% noinit
+\newrobustcmd*{\DeclareNoinit}[1]{%
+ \begingroup
+ \let\noinit\blx@noinit@setup
+ \let\blx@tempa\@empty
+ #1%
+ \global\let\blx@noinit\blx@tempa
+ \endgroup}
+\@onlypreamble\DeclareNoinit
+
+\newcommand*{\blx@noinit@setup}[1]{%
+ \eappto\blx@tempa{%
+ \blx@xml@noinit{#1}}}
+
+% datafieldsets
+\newrobustcmd*{\DeclareDatafieldSet}[2]{%
+ \begingroup
+ \let\member\blx@datafieldset@member
+ \let\blx@tempa\@empty
+ \def\blx@setname{#1}
+ \cslet{blx@datafieldset@#1}\@empty
+ #2%
+ \csxdef{blx@datafieldsetmembers@#1}{\blx@tempa}%
+ \listgadd\blx@datafieldsets{#1}%
+ \global\csletcs{datafieldset#1}{blx@datafieldset@#1}% expose user-facing macro
+ \endgroup}
+\@onlypreamble\DeclareDatafieldSet
+
+\newcommand*{\blx@datafieldset@member}[1][2]{%
+ \let\blx@dm@fieldtype\@empty
+ \let\blx@dm@datatype\@empty
+ \let\blx@member@field\@empty
+ \let\blx@tempb\@empty
+ \setkeys{blx@datafieldsets@member}{#1}%
+ \eappto\blx@tempa{%
+ \blx@xml@datafieldsets@member{\blx@tempb}}%
+ \ifdefempty\blx@member@field
+ {}
+ {\listcsxadd{blx@datafieldset@\blx@setname}{\blx@member@field}}%
+ % Set some internal macros in case biblatex needs to use the set
+ \ifboolexpr{%
+ not test {\ifdefempty{\blx@dm@fieldtype}}
+ and
+ not test {\ifdefempty{\blx@dm@datatype}}}
+ {\def\do##1{%
+ \listcsxadd{blx@datafieldset@\blx@setname}{##1}}
+ \dolistcsloop{blx@datamodelfields@types@\blx@dm@fieldtype @\blx@dm@datatype}}
+ {\ifdefempty{\blx@dm@fieldtype}
+ {}
+ {\def\do##1{%
+ \listcsxadd{blx@datafieldset@\blx@setname}{##1}}
+ \dolistcsloop{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype}}%
+ \ifdefempty{\blx@dm@datatype}
+ {}
+ {\def\do##1{%
+ \listcsxadd{blx@datafieldset@\blx@setname}{##1}}
+ \dolistcsloop{blx@datamodelfields@datatypes@\blx@dm@datatype}}}}
+
+\define@key{blx@datafieldsets@member}{datatype}{% characters
+ \appto\blx@tempb{ datatype="#1"}%
+ \def\blx@dm@datatype{#1}}
+\define@key{blx@datafieldsets@member}{fieldtype}{% characters
+ \appto\blx@tempb{ fieldtype="#1"}%
+ \def\blx@dm@fieldtype{#1}}
+\define@key{blx@datafieldsets@member}{field}{% characters
+ \appto\blx@tempb{ field="#1"}%
+ \def\blx@member@field{#1}}
+
+% sourcemap
+\newrobustcmd*{\DeclareSourcemap}[1]{%
+ \booltrue{sourcemap}%
+ \begingroup
+ \let\maps\blx@usersourcemap@maps
+ \let\blx@tempa\@empty
+ #1%
+ \csxdef{blx@sourcemap@user}{\blx@tempa}%
+ \endgroup}
+\@onlypreamble\DeclareSourcemap
+
+\newrobustcmd*{\DeclareStyleSourcemap}[1]{%
+ \booltrue{sourcemap}%
+ \begingroup
+ \let\maps\blx@stylesourcemap@maps
+ \let\blx@tempa\@empty
+ #1%
+ \csxdef{blx@sourcemap@style}{\blx@tempa}%
+ \endgroup}
+
+\@onlypreamble\DeclareStyleSourcemap
+
+\newrobustcmd*{\DeclareDriverSourcemap}[2][]{%
+ \booltrue{sourcemap}%
+ \begingroup
+ \let\blx@tempa\@empty
+ \let\blx@tempb\@empty
+ \let\blx@tempc\@empty
+ \let\blx@tempd\@empty
+ \let\map\blx@sourcemap@map
+ #2%
+ \ifblank{#1}
+ {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=driver}}
+ {\setkeys{blx@sourcemap@maps}{#1, level=driver}}%
+ \eappto\blx@tempa{%
+ \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}%
+ \csxdef{blx@sourcemap@defaults@\blx@tempd}{\blx@tempa}%
+ \endgroup}
+\@onlypreamble\DeclareDriverSourcemap
+
+\newcommand*{\blx@usersourcemap@maps}[2][]{%
+ \let\blx@tempb\@empty
+ \let\blx@tempc\@empty
+ \let\map\blx@sourcemap@map
+ \ifblank{#1}
+ {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=user}}
+ {\setkeys{blx@sourcemap@maps}{#1, level=user}}%
+ #2%
+ \eappto\blx@tempa{%
+ \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}}
+
+\newcommand*{\blx@stylesourcemap@maps}[2][]{%
+ \let\blx@tempb\@empty
+ \let\blx@tempc\@empty
+ \let\map\blx@sourcemap@map
+ \ifblank{#1}
+ {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=style}}
+ {\setkeys{blx@sourcemap@maps}{#1, level=style}}%
+ #2%
+ \eappto\blx@tempa{%
+ \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}}
+
+\define@key{blx@sourcemap@maps}{datatype}{% characters
+ \eappto\blx@tempb{ datatype="#1"}%
+ \eappto\blx@tempd{#1}}
+\define@key{blx@sourcemap@maps}{overwrite}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempb{ map\string_overwrite="1"}}
+ {}}
+\define@key{blx@sourcemap@maps}{level}{% user|style|driver
+ \appto\blx@tempb{ level="#1"}}
+
+\newcommand*{\blx@sourcemap@map}[2][]{%
+ \let\blx@tempm\@empty
+ \let\blx@tempe\@empty
+ \let\perdatasource\blx@sourcemap@perdatasource
+ \let\pertype\blx@sourcemap@pertype
+ \let\pernottype\blx@sourcemap@pernottype
+ \let\step\blx@sourcemap@step
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@sourcemap@map}{#1}}%
+ #2%
+ \eappto\blx@tempc{%
+ \blx@xml@sourcemap@map{\blx@tempm}{\blx@tempe}}}
+
+\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempm{ map\string_overwrite="1"}}
+ {}}
+\define@key{blx@sourcemap@map}{foreach}{% characters
+ \eappto\blx@tempm{ map\string_foreach="#1"}}
+
+\newcommand*{\blx@sourcemap@perdatasource}[1]{%
+ \eappto\blx@tempe{%
+ \blx@xml@sourcemap@perdatasource{#1}}}
+
+\newcommand*{\blx@sourcemap@pertype}[1]{%
+ \eappto\blx@tempe{%
+ \blx@xml@sourcemap@pertype{#1}}}
+
+\newcommand*{\blx@sourcemap@pernottype}[1]{%
+ \eappto\blx@tempe{%
+ \blx@xml@sourcemap@pernottype{#1}}}
+
+\newcommand*{\blx@sourcemap@step}[1][2]{%
+ \let\blx@tempf\@empty
+ \setkeys{blx@sourcemap@step}{#1}%
+ \eappto\blx@tempe{%
+ \blx@xml@sourcemap@step{\blx@tempf}}}
+
+\define@key{blx@sourcemap@step}{typesource}{% characters
+ \eappto\blx@tempf{ map\string_type\string_source="#1"}}
+\define@key{blx@sourcemap@step}{typetarget}{% characters
+ \eappto\blx@tempf{ map\string_type\string_target="#1"}}
+\define@key{blx@sourcemap@step}{final}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_final="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{fieldsource}{% characters
+ \eappto\blx@tempf{ map\string_field\string_source="#1"}}
+\define@key{blx@sourcemap@step}{fieldtarget}{% characters
+ \eappto\blx@tempf{ map\string_field\string_target="#1"}}
+\define@key{blx@sourcemap@step}{fieldset}{% characters
+ \eappto\blx@tempf{ map\string_field\string_set="#1"}}
+% We are sanitising the XML here as it's the value of an attribute which
+% might contain quotes or ampersands (URLs, for example)
+\define@key{blx@sourcemap@step}{fieldvalue}{% characters
+ \blx@xmlsanitizeafter{\def\blx@temps}{#1}%
+ \eappto\blx@tempf{ map\string_field\string_value="\blx@temps"}}
+\define@key{blx@sourcemap@step}{append}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_append="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{null}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_null="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{entrynull}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_entry\string_null="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{entrynew}{% characters
+ \appto\blx@tempf{ map\string_entry\string_new="#1"}}
+\define@key{blx@sourcemap@step}{entrynewtype}{% characters
+ \appto\blx@tempf{ map\string_entry\string_newtype="#1"}}
+\define@key{blx@sourcemap@step}{entrytarget}{% characters
+ \appto\blx@tempf{ map\string_entrytarget="#1"}}
+\define@key{blx@sourcemap@step}{entryclone}{% characters
+ \appto\blx@tempf{ map\string_entry\string_clone="#1"}}
+\define@key{blx@sourcemap@step}{origfield}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_origfield="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{origfieldval}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_origfieldval="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{origentrytype}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_origentrytype="1"}}
+ {}}
+\define@key{blx@sourcemap@step}{match}{% characters
+ \appto\blx@tempf{ map\string_match="#1"}}
+\define@key{blx@sourcemap@step}{notmatch}{% characters
+ \appto\blx@tempf{ map\string_notmatch="#1"}}
+\define@key{blx@sourcemap@step}{replace}{% characters
+ \eappto\blx@tempf{ map\string_replace="#1"}}
+
+%%%
+
+\newrobustcmd*{\DeclareLabelalphaTemplate}[2][]{%
+ \ifblank{#1}
+ {\blx@latem{#2}{global}}
+ {\forcsvlist{\blx@latem{#2}}{#1}}}
+\@onlypreamble\DeclareLabelalphaTemplate
+\blx@collectopts{xml}{blx@globalopts}{labelalphatemplate}% for passing to the .bcf
+\blx@collectopts{xml}{blx@typeopts}{labelalphatemplate}% for passing to the .bcf
+
+\def\blx@latem#1#2{%
+ \begingroup
+ \let\labelelement\blx@latem@element
+ \let\field\blx@latem@field
+ \let\literal\blx@latem@literal
+ \blx@tempcnta\z@
+ \let\blx@tempa\@empty
+ #1%
+ \ifdef\blx@latem@type
+ {\ifinlist{#2}{\blx@latem@type}
+ {\global\cslet{blx@labelalphatemplate@#2}\blx@tempa}
+ {\listgadd\blx@latem@type{#2}%
+ \global\cslet{blx@labelalphatemplate@#2}\blx@tempa}}%
+ {\listgadd\blx@latem@type{#2}%
+ \global\cslet{blx@labelalphatemplate@#2}\blx@tempa}%
+ \endgroup}
+
+\newcommand*{\blx@latem@element}[1]{%
+ \advance\blx@tempcnta\@ne
+ \let\blx@tempb\@empty
+ #1%
+ \eappto\blx@tempa{%
+ \blx@xml@labelalpha@element{\the\blx@tempcnta}{\blx@tempb}}}
+
+\newcommand*{\blx@latem@literal}[1]{%
+ \blx@xmlsanitizeafter{\def\blx@temps}{#1}%
+ \eappto\blx@tempb{%
+ \blx@xml@labelalpha@part{}{\expandafter\regexp\expandafter{\blx@temps}}}}
+
+\newcommand*{\blx@latem@field}[2][]{%
+ \let\blx@tempc\@empty
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@latem@field}{#1}}%
+ \eappto\blx@tempb{%
+ \blx@xml@labelalpha@part{\blx@tempc}{#2}}}
+
+\define@key{blx@latem@field}{uppercase}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ uppercase="1"}}
+ {}}
+\define@key{blx@latem@field}{lowercase}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ lowercase="1"}}
+ {}}
+\define@key{blx@latem@field}{final}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ final="1"}}
+ {}}
+\define@key{blx@latem@field}{strwidth}{% integer
+ \eappto\blx@tempc{ substring\string_width="#1"}}
+\define@key{blx@latem@field}{pstrwidth}{% integer
+ \eappto\blx@tempc{ substring\string_pwidth="#1"}}
+\define@key{blx@latem@field}{varwidth}[true]{% "v"
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ substring\string_width="v"}}
+ {}}
+\define@key{blx@latem@field}{varwidthnorm}[true]{% "vf"
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ substring\string_width="vf"}}
+ {}}
+\define@key{blx@latem@field}{varwidthlist}[true]{% "l"
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ substring\string_width="l"}}
+ {}}
+\define@key{blx@latem@field}{strfixedcount}{%
+ \eappto\blx@tempc{ substring\string_fixed\string_threshold="#1"}}
+\define@key{blx@latem@field}{strwidthmax}{%
+ \eappto\blx@tempc{ substring\string_width\string_max="#1"}}
+\define@key{blx@latem@field}{strside}{% left|right
+ \ifstrequal{#1}{right}
+ {\eappto\blx@tempc{ substring\string_side="right"}}
+ {\eappto\blx@tempc{ substring\string_side="left"}}}
+\define@key{blx@latem@field}{compound}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ substring\string_compound="1"}}
+ {}}
+\define@key{blx@latem@field}{pcompound}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ substring\string_pcompound="1"}}
+ {}}
+\define@key{blx@latem@field}{namessep}{%
+ \eappto\blx@tempc{ namessep="#1"}}
+\define@key{blx@latem@field}{ifnames}{%
+ \eappto\blx@tempc{ ifnames="#1"}}
+\define@key{blx@latem@field}{names}{%
+ \eappto\blx@tempc{ names="#1"}}
+\define@key{blx@latem@field}{noalphaothers}[true]{%
+ \eappto\blx@tempc{ noalphaothers="1"}}
+\define@key{blx@latem@field}{padchar}{%
+ \blx@xmlsanitizeafter{\def\blx@temps}{#1}%
+ \eappto\blx@tempc{ pad\string_char="\expandafter\regexp\expandafter{\blx@temps}"}}
+\define@key{blx@latem@field}{padside}{% left|right
+ \ifstrequal{#1}{left}
+ {\eappto\blx@tempc{ pad\string_side="left"}}
+ {\eappto\blx@tempc{ pad\string_side="right"}}}
+
+% [<exceptions>]{<options>}
+
+\newrobustcmd*{\DefaultInheritance}[2][]{%
+ \begingroup
+ \ifblank{#2}
+ {}
+ {\setkeys{blx@inherit@default}{#2}}%
+ \edef\blx@tempa{\space
+ inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space
+ override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}%
+ \let\blx@tempb\@empty
+ \let\except\blx@inherit@except
+ #1%
+ \xdef\blx@inherit@default{%
+ \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}%
+ \endgroup}
+\@onlypreamble\DefaultInheritance
+
+\newtoggle{blx@inherit@all}
+\newtoggle{blx@inherit@override}
+
+\define@key{blx@inherit@default}{all}[true]{% true|false
+ \settoggle{blx@inherit@all}{#1}}
+\define@key{blx@inherit@default}{override}[true]{% true|false
+ \settoggle{blx@inherit@override}{#1}}
+
+% {<source>}{<target>}{<options>}
+
+\newcommand*{\blx@inherit@except}[3]{%
+ \let\blx@tempc\@empty
+ \ifblank{#3}
+ {}
+ {\setkeys{blx@inherit@except}{#3}}%
+ \eappto\blx@tempb{%
+ \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}}
+
+\define@key{blx@inherit@except}{all}[true]{% true|false
+ \eappto\blx@tempc{ inherit\string_all="#1"}}
+\define@key{blx@inherit@except}{override}[true]{% true|false
+ \eappto\blx@tempc{ override\string_target="#1"}}
+
+% {<type,type,...>}{<type,type,...>}{<spec>}
+\newrobustcmd*{\DeclareDataInheritance}[3]{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \forcsvlist{\blx@inherit@i{#2}}{#1}%
+ \let\blx@tempb\@empty
+ \let\inherit\blx@inherit@field
+ \let\noinherit\blx@inherit@block
+ #3%
+ \xappto\blx@inherit@data{%
+ \blx@xml@inherit@data{%
+ \blx@tempa
+ \blx@tempb}}%
+ \endgroup}
+\@onlypreamble\DeclareDataInheritance
+
+\def\blx@inherit@i#1#2{%
+ \forcsvlist{\blx@inherit@ii{#2}}{#1}}
+
+\def\blx@inherit@ii#1#2{%
+ \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}}
+
+\blx@collectopts{xml}{blx@globalopts}{inheritance}% for passing to the .bcf
+
+% [<options>]{<source>}{<target>}
+\newcommand*{\blx@inherit@field}[3][]{%
+ \let\blx@tempc\@empty
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@inherit@field}{#1}}%
+ \eappto\blx@tempb{%
+ \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}}
+
+\newcommand*{\blx@inherit@block}[1]{%
+ \eappto\blx@tempb{\blx@xml@inherit@block{#1}}}
+
+\define@key{blx@inherit@field}{override}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\edef\blx@tempc{ override\string_target="true"}}
+ {\edef\blx@tempc{ override\string_target="false"}}}
+
+\newrobustcmd*{\ResetDataInheritance}{%
+ \global\csundef{blx@inherit@data}}
+\@onlypreamble\ResetDataInheritance
+
+% {<name>}{<spec>}
+\newrobustcmd*{\DeclareBiblistFilter}[2]{%
+ \begingroup
+ \let\filteror\blx@biblistfilteror
+ \let\filter\blx@biblistfilter
+ \let\blx@tempa\@empty
+ #2%
+ \global\cslet{blx@biblistfilters@#1}\blx@tempa
+ \endgroup}
+\@onlypreamble\DeclareBiblistFilter
+
+\newcommand*{\blx@biblistfilteror}[1]{%
+ \eappto\blx@tempa{\blx@xml@slistfilterorbegin}%
+ #1%
+ \eappto\blx@tempa{\blx@xml@slistfilterorend}}
+
+\newcommand*{\blx@biblistfilter}[1][2]{%
+ \let\blx@tempc\@empty
+ \let\blx@tempd\@empty
+ \setkeys{blx@biblistfilter@filter}{#1}%
+ \eappto\blx@tempa{%
+ \blx@xml@slistfilter{\blx@tempc}{\blx@tempd}}}
+
+\define@key{blx@biblistfilter@filter}{type}{%
+ \def\blx@tempc{#1}}
+\define@key{blx@biblistfilter@filter}{filter}{%
+ \def\blx@tempd{#1}}
+
+% Predefine filters for label fields
+\def\do#1{\DeclareBiblistFilter{#1}{\filter[type=field,filter=#1]}}
+\abx@dolabelfields
+
+% [<entrytype>]
+\newrobustcmd*{\DeclareSortTranslit}[2][]{%
+ \begingroup
+ \ifblank{#1}
+ {\def\blx@tempa{*}}
+ {\def\blx@tempa{#1}}%
+ \let\translit\blx@translit@setup
+ \let\blx@tempb\@empty
+ #2%
+ \global\cslet{blx@translit@\blx@tempa}\blx@tempb
+ \xifinlist\blx@tempa\blx@translits
+ {}
+ {\listxadd\blx@translits\blx@tempa}%
+ \endgroup}
+\@onlypreamble\DeclareSortTranslit
+\blx@collectopts{xml}{blx@globalopts}{translit}% for passing to the .bcf
+\blx@collectopts{xml}{blx@typeopts}{translit}% for passing to the .bcf
+
+\newcommand*{\blx@translit@setup}[3][*]{%
+ \eappto\blx@tempb{%
+ \blx@xml@translit{#1}{#2}{#3}}}
+
+% [<specname>]{<spec>}
+\newrobustcmd*{\DeclareSortingNamekeyScheme}[2][]{%
+ \begingroup
+ \ifblank{#1}
+ {\def\blx@snkname{global}}% default
+ {\def\blx@snkname{#1}}%
+ \let\namepart\blx@sortnk@namepart
+ \let\keypart\blx@sortnk@keypart
+ \let\literal\blx@sortnk@literal
+ \let\blx@tempa\@empty
+ \blx@tempcnta\z@
+ #2%
+ \global\cslet{blx@sortingnamekey@\blx@snkname}\blx@tempa
+ \xifinlist\blx@snkname\blx@sortingnamekeyspecs
+ {}
+ {\listxadd\blx@sortingnamekeyspecs\blx@snkname}%
+ \endgroup}
+\@onlypreamble\DeclareSortingNamekeyScheme
+\blx@collectopts{xml}{blx@globalopts}{sortingnamekey}% for passing to the .bcf
+\DeclareEntryOption[string]{sortnamekeyscheme}{%
+ \def\blx@refcontext@sortingnamekey{#1}}
+
+% User-mode macro for checking sorting name key scheme
+\def\ifsortnamekeyscheme#1{%
+ \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekey}{#1}}
+
+\newcommand*{\blx@sortnk@keypart}[1]{%
+ \advance\blx@tempcnta\@ne
+ \blx@tempcntb\z@
+ \edef\blx@tempd{ order="\the\blx@tempcnta"}%
+ \let\blx@tempb\@empty
+ #1%
+ \eappto\blx@tempa{%
+ \blx@xml@sortingnamekeykeypart{\blx@tempd}{\blx@tempb}}}
+
+\newcommand*{\blx@sortnk@literal}[1]{%
+ \advance\blx@tempcntb\@ne
+ \edef\blx@tempe{ order="\the\blx@tempcntb"}%
+ \let\blx@tempc\@empty
+ \eappto\blx@tempb{%
+ \blx@xml@sortingnamekeyliteral{\blx@tempe}{#1}}}
+
+\newcommand*{\blx@sortnk@namepart}[2][]{%
+ \advance\blx@tempcntb\@ne
+ \edef\blx@tempe{ order="\the\blx@tempcntb"}%
+ \let\blx@tempc\@empty
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@sortnk@namepart}{#1}}%
+ \eappto\blx@tempb{%
+ \blx@xml@sortingnamekeynamepart{\blx@tempe}{\blx@tempc}{#2}}}
+
+\define@key{blx@sortnk@namepart}{use}[true]{% use* option for namepart true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ use="1"}}
+ {\appto\blx@tempc{ use="0"}}}
+
+% {<name>}{<spec>}
+\newrobustcmd*{\DeclareSortingScheme}[3][]{%
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@sortdef@sorting}{#1}%
+ \csxdef{blx@sortdef@locale@#2}{\blx@templ}}%
+ \begingroup
+ \let\sort\blx@sortdef@sort
+ \let\name\blx@sortdef@field% legacy pre-biblatex 2.0 compat
+ \let\list\blx@sortdef@field% legacy pre-biblatex 2.0 compat
+ \let\field\blx@sortdef@field
+ \let\literal\blx@sortdef@literal
+ \def\citeorder{\blx@sortdef@field{citeorder}}%
+ \blx@tempcnta\z@
+ \let\blx@tempa\@empty
+ #3%
+ \global\cslet{blx@sorting@#2}\blx@tempa
+ \endgroup}
+\@onlypreamble\DeclareSortingScheme
+\blx@collectopts{xml}{blx@globalopts}{sortscheme}% for passing to the .bcf
+
+\define@key{blx@sortdef@sorting}{locale}{% locale name
+ \def\blx@templ{#1}}
+
+\newcommand*{\blx@sortdef@sort}[2][]{%
+ \advance\blx@tempcnta\@ne
+ \blx@tempcntb\z@
+ \let\blx@tempb\@empty
+ \edef\blx@tempc{order="\the\blx@tempcnta"}%
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@sortdef@sort}{#1}}%
+ \let\do\@firstofone
+ #2%
+ \eappto\blx@tempa{%
+ \blx@xml@sort{\blx@tempc}{\blx@tempb}}}
+
+\define@key{blx@sortdef@sort}{locale}{% locale name
+ \eappto\blx@tempc{ locale="#1"}}
+\define@key{blx@sortdef@sort}{direction}{% ascending|descending
+ \ifstrequal{#1}{ascending}
+ {\eappto\blx@tempc{ sort\string_direction="ascending"}}
+ {\eappto\blx@tempc{ sort\string_direction="descending"}}}
+\define@key{blx@sortdef@sort}{final}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ final="1"}}
+ {}}
+\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ sortcase="1"}}
+ {\appto\blx@tempc{ sortcase="0"}}}
+\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempc{ sortupper="1"}}
+ {\appto\blx@tempc{ sortupper="0"}}}
+
+\newcommand*{\blx@sortdef@field}[2][]{%
+ \advance\blx@tempcntb\@ne
+ \edef\blx@tempd{order="\the\blx@tempcntb"}%
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@sortdef@field}{#1}}%
+ \eappto\blx@tempb{%
+ \blx@xml@sortitem{\blx@tempd}{#2}}}
+
+\define@key{blx@sortdef@field}{padside}{% left|right
+ \ifstrequal{#1}{right}
+ {\eappto\blx@tempd{ pad\string_side="right"}}
+ {\eappto\blx@tempd{ pad\string_side="left"}}}
+\define@key{blx@sortdef@field}{padwidth}{% integer
+ \eappto\blx@tempd{ pad\string_width="#1"}}
+\define@key{blx@sortdef@field}{padchar}{% character
+ \blx@xmlsanitizeafter{\def\blx@tempe}{#1}%
+ \eappto\blx@tempd{ pad\string_char="\blx@tempe"}}
+\define@key{blx@sortdef@field}{strside}{% left|right
+ \ifstrequal{#1}{right}
+ {\eappto\blx@tempd{ substring\string_side="right"}}
+ {\eappto\blx@tempd{ substring\string_side="left"}}}
+\define@key{blx@sortdef@field}{strwidth}{% integer
+ \eappto\blx@tempd{ substring\string_width="#1"}}
+
+\def\blx@sortdef@literal#1{%
+ \advance\blx@tempcntb\@ne
+ \blx@xmlsanitizeafter{\def\blx@tempe}{#1}%
+ \eappto\blx@tempb{%
+ \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}}
+
+% [<type,type,...>]{<string>}
+
+\newrobustcmd*{\DeclarePresort}[2][]{%
+ \begingroup
+ \blx@xmlsanitizeafter{\def\blx@tempa}{#2}%
+ \ifblank{#1}
+ {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}}
+ {\notblank{#2}
+ {\forcsvlist{\blx@defpresort\blx@tempa}{#1}}
+ {\forcsvlist\blx@undefpresort{#1}}}%
+ \endgroup}
+\@onlypreamble\DeclarePresort
+\blx@collectopts{string}{blx@globalopts}{presort}% for passing to the .bcf
+\blx@collectopts{string}{blx@typeopts}{presort}% for passing to the .bcf
+\blx@collectopts{string}{blx@entryopts}{presort}% for passing to the .bcf
+
+\def\blx@defpresort#1#2{%
+ \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}}
+\def\blx@undefpresort#1{%
+ \global\csundef{blx@bcf@presort@#1}}
+
+\newrobustcmd*{\DeclareSortExclusion}[2]{%
+ \forcsvlist{\blx@sortexlude{#2}}{#1}}
+\blx@collectopts{xml}{blx@typeopts}{sortexclusion}% for passing to the .bcf
+
+\def\blx@sortexlude#1#2{%
+ \begingroup
+ \ifblank{#1}
+ {\global\csundef{blx@bcf@exclude@#2}}
+ {\let\blx@tempa\@empty
+ \forcsvlist\blx@sortexlude@i{#1}%
+ \csxdef{blx@bcf@exclude@#2}{%
+ \blx@xml@sortexclude{#2}{\blx@tempa}}}
+ \endgroup}
+
+\def\blx@sortexlude@i#1{%
+ \appto\blx@tempa{\blx@xml@exclude{#1}}}
+
+% [<type,type,...>]{<field,field,...>}
+
+\newrobustcmd*{\DeclareLabelname}[2][]{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \def\blx@tempb{labelnamespec}%
+ \let\field\blx@ordered@field
+ \ifblank{#1}
+ {\global\cslet{blx@bcf@labelnamespec}\@empty}
+ {\def\blx@tempa{#1}%
+ \def\do##1{\global\cslet{blx@bcf@labelnamespec@##1}\@empty}%
+ \expandafter\docsvlist\expandafter{#1}}%
+ #2%
+ \endgroup}
+\@onlypreamble\DeclareLabelname
+\blx@collectopts{xml}{blx@globalopts}{labelnamespec}% for passing to the .bcf
+\blx@collectopts{xml}{blx@typeopts}{labelnamespec}% for passing to the .bcf
+
+\newrobustcmd*{\DeclareLabeltitle}[2][]{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \def\blx@tempb{labeltitlespec}%
+ \let\field\blx@ordered@field
+ \ifblank{#1}
+ {\global\cslet{blx@bcf@labeltitlespec}\@empty}
+ {\def\blx@tempa{#1}%
+ \def\do##1{\global\cslet{blx@bcf@labeltitlespec@##1}\@empty}%
+ \expandafter\docsvlist\expandafter{#1}}%
+ #2%
+ \endgroup}
+\@onlypreamble\DeclareLabeltitle
+\blx@collectopts{xml}{blx@globalopts}{labeltitlespec}% for passing to the .bcf
+\blx@collectopts{xml}{blx@typeopts}{labeltitlespec}% for passing to the .bcf
+
+\newrobustcmd*{\DeclareLabelyear}[2][]{%
+ \blx@warning@noline{%
+ 'DeclareLabelyear' is deprecated, please use 'DeclareLabeldate'}}
+
+\newrobustcmd*{\DeclareLabeldate}[2][]{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \def\blx@tempb{labeldatespec}%
+ \let\field\blx@orderedld@field
+ \let\literal\blx@orderedld@literal
+ \ifblank{#1}
+ {\global\cslet{blx@bcf@labeldatespec}\@empty}
+ {\def\blx@tempa{#1}%
+ \def\do##1{\global\cslet{blx@bcf@labeldatespec@##1}\@empty}%
+ \expandafter\docsvlist\expandafter{#1}}%
+ #2%
+ \endgroup}
+\@onlypreamble\DeclareLabeldate
+\blx@collectopts{xml}{blx@globalopts}{labeldatespec}% for passing to the .bcf
+\blx@collectopts{xml}{blx@typeopts}{labeldatespec}% for passing to the .bcf
+
+\newcommand*{\blx@ordered@field}[2][]{%
+ \let\blx@tempc\@empty
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@ordered@field}{#1}}%
+ \advance\blx@tempcnta\@ne
+ \ifdefempty{\blx@tempa}
+ {\csxappto{blx@bcf@\blx@tempb}{%
+ \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}
+ {\def\do##1{%
+ \blx@addtypeopt{##1}%
+ \csxappto{blx@bcf@\blx@tempb @##1}{%
+ \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}%
+ \expandafter\docsvlist\expandafter{\blx@tempa}}}
+
+\newcommand*{\blx@orderedld@field}[2][]{%
+ \let\blx@tempc\@empty
+ \ifblank{#1}
+ {}
+ {\setkeys{blx@ordered@field}{#1}}%
+ \advance\blx@tempcnta\@ne
+ \ifdefempty{\blx@tempa}
+ {\csxappto{blx@bcf@\blx@tempb}{%
+ \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="field"\blx@tempc}{#2}}}
+ {\def\do##1{%
+ \blx@addtypeopt{##1}%
+ \csxappto{blx@bcf@\blx@tempb @##1}{%
+ \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="field"\blx@tempc}{#2}}}%
+ \expandafter\docsvlist\expandafter{\blx@tempa}}}
+
+\newcommand*{\blx@orderedld@literal}[1]{%
+ \advance\blx@tempcnta\@ne
+ \ifdefempty{\blx@tempa}
+ {\csxappto{blx@bcf@\blx@tempb}{%
+ \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}
+ {\def\do##1{%
+ \blx@addtypeopt{##1}%
+ \csxappto{blx@bcf@\blx@tempb @##1}{%
+ \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}%
+ \expandafter\docsvlist\expandafter{\blx@tempa}}}
+
+%% Package options
+
+% [<entrytype,entrytype,...>]{<options>}
+
+\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{%
+ \ifblank{#1}
+ {\setkeys{blx@opt@pre}{#2}}
+ {\forcsvlist{\blx@typeoptions{#2}}{#1}}}
+\@onlypreamble\ExecuteBibliographyOptions
+
+\def\blx@typeoptions#1#2{%
+ \blx@addtypeopt{#2}%
+ \csappto{blx@opts@type@#2}{#1,}}
+
+\def\blx@addtypeopt#1{%
+ \notblank{#1}
+ {\ifdef\blx@opts@type
+ {\ifinlist{#1}{\blx@opts@type}
+ {}
+ {\listgadd\blx@opts@type{#1}}}
+ {\listgadd\blx@opts@type{#1}}}
+ {}}
+
+% load-time only
+
+% Have to have a dummy for this as it's set much earlier but is passed
+% through to here where we just ignore it
+\define@key{blx@opt@ldt}{datamodel}{}
+
+\define@key{blx@opt@ldt}{backend}{%
+ \ifstrequal{#1}{biber}
+ {}
+ {\ifboolexpr{
+ test {\ifstrequal{#1}{bibtex}}
+ or
+ test {\ifstrequal{#1}{bibtex8}}}
+ {\settoggle{blx@bibtex}{true}%
+ \newtoggle{blx@bibtex8}%
+ \ifstrequal{#1}{bibtex8}
+ {\settoggle{blx@bibtex8}{true}}
+ {}}%
+ {\blx@err@invopt{backend=#1}{}}}}
+
+\define@key{blx@opt@ldt}{style}{%
+ \def\blx@cbxfile{#1}%
+ \def\blx@bbxfile{#1}}
+
+\define@key{blx@opt@ldt}{bibstyle}{%
+ \def\blx@bbxfile{#1}}
+
+\define@key{blx@opt@ldt}{citestyle}{%
+ \def\blx@cbxfile{#1}}
+
+\define@key{blx@opt@ldt}{natbib}[true]{%
+ \settoggle{blx@natbib}{#1}}
+
+\define@key{blx@opt@ldt}{mcite}[true]{%
+ \settoggle{blx@mcite}{#1}}
+
+% load-time and preamble
+
+\DeclareBibliographyOption[boolean]{debug}[true]{%
+ \settoggle{blx@debug}{#1}}
+
+\DeclareBibliographyOption[boolean]{loadfiles}[true]{%
+ \settoggle{blx@loadfiles}{#1}}
+
+\DeclareBibliographyOption[integer]{mincrossrefs}{%
+ \ifnum#1<\z@
+ \def\blx@mincrossrefs{1}%
+ \else
+ \def\blx@mincrossrefs{#1}%
+ \fi}
+
+\DeclareBibliographyOption[integer]{minxrefs}{%
+ \ifnum#1<\z@
+ \def\blx@minxrefs{1}%
+ \else
+ \def\blx@minxrefs{#1}%
+ \fi}
+\def\blx@minxrefs{2}
+
+\DeclareBibliographyOption[string]{texencoding}{%
+ \ifstrequal{#1}{auto}
+ {\undef\blx@texencoding}
+ {\def\blx@texencoding{#1}}}
+
+\DeclareBibliographyOption[string]{bibencoding}{%
+ \ifcsdef{blx@bibenc@#1}
+ {\letcs\blx@bibencoding{blx@bibenc@#1}}
+ {\def\blx@bibencoding{#1}}}
+
+\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}}
+\abx@mapbibenc{inputenc}{auto}
+\abx@mapbibenc{x-ascii}{ascii}
+
+\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}}
+\abx@mapinpenc{utf8x}{utf8}
+\abx@mapinpenc{lutf8}{utf8}
+\abx@mapinpenc{x-ascii}{ascii}
+
+\DeclareBibliographyOption[boolean]{safeinputenc}[true]{%
+ \settoggle{blx@safeinputenc}{#1}}
+\newtoggle{blx@safeinputenc}
+
+\DeclareBibliographyOption[string]{sorting}{%
+ \def\blx@sorting{#1}%
+ \def\blx@refcontext@sorting{#1}}
+
+\AtEndPreamble{%
+ \ifcsdef{blx@sorting@\blx@sorting}
+ {}
+ {\blx@err@invopt{sorting=\blx@sorting}{}%
+ \def\blx@sorting{nty}%
+ \def\blx@refcontext@sorting{nty}}%
+ \listxadd\blx@sortschemes\blx@sorting
+ \def\blx@refcontext@sortingnamekey{global}%
+ \let\blx@refcontext@labelprefix\@empty
+ \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}%
+ \listxadd\blx@refcontexts\blx@refcontext@context}
+
+\DeclareBibliographyOption[boolean]{sortcase}[true]{%
+ \settoggle{blx@sortcase}{#1}}
+
+\DeclareBibliographyOption[boolean]{sortupper}[true]{%
+ \settoggle{blx@sortupper}{#1}}
+
+\DeclareBibliographyOption[string]{sortlos}{%
+ \blx@warning@noline{%
+ sortlos option is deprecated, use 'sorting' option to \string\printbiblist}}
+
+\DeclareBibliographyOption[integer]{maxnames}{%
+ \numdef\blx@maxcitenames{#1}%
+ \numdef\blx@maxbibnames{#1}}
+\DeclareBibliographyOption[integer]{minnames}{%
+ \numdef\blx@mincitenames{#1}%
+ \numdef\blx@minbibnames{#1}}
+\DeclareTypeOption[integer]{maxnames}{%
+ \numdef\blx@maxcitenames@type{#1}%
+ \numdef\blx@maxbibnames@type{#1}%
+ \c@maxnames#1\relax}
+\DeclareTypeOption[integer]{minnames}{%
+ \numdef\blx@mincitenames@type{#1}%
+ \numdef\blx@minbibnames@type{#1}%
+ \c@minnames#1\relax}
+\DeclareEntryOption[integer]{maxnames}{%
+ \c@maxnames#1\relax}
+\DeclareEntryOption[integer]{minnames}{%
+ \c@minnames#1\relax}
+
+\DeclareBibliographyOption[integer]{maxbibnames}{%
+ \numdef\blx@maxbibnames{#1}}
+\DeclareBibliographyOption[integer]{minbibnames}{%
+ \numdef\blx@minbibnames{#1}}
+\DeclareTypeOption[integer]{maxbibnames}{%
+ \numdef\blx@maxbibnames@type{#1}%
+ \iftoggle{blx@bibliography}
+ {\c@maxnames#1\relax}
+ {}}
+\DeclareTypeOption[integer]{minbibnames}{%
+ \numdef\blx@minbibnames@type{#1}%
+ \iftoggle{blx@bibliography}
+ {\c@minnames#1\relax}
+ {}}
+\DeclareEntryOption[integer]{maxbibnames}{%
+ \iftoggle{blx@bibliography}
+ {\c@maxnames#1\relax}
+ {}}
+\DeclareEntryOption[integer]{minbibnames}{%
+ \iftoggle{blx@bibliography}
+ {\c@minnames#1\relax}
+ {}}
+
+\DeclareBibliographyOption[integer]{maxcitenames}{%
+ \numdef\blx@maxcitenames{#1}}
+\DeclareBibliographyOption[integer]{mincitenames}{%
+ \numdef\blx@mincitenames{#1}}
+\DeclareTypeOption[integer]{maxcitenames}{%
+ \numdef\blx@maxcitenames@type{#1}%
+ \iftoggle{blx@bibliography}
+ {}
+ {\c@maxnames#1\relax}}
+\DeclareTypeOption[integer]{mincitenames}{%
+ \numdef\blx@mincitenames@type{#1}%
+ \iftoggle{blx@bibliography}
+ {}
+ {\c@minnames#1\relax}}
+\DeclareEntryOption[integer]{maxcitenames}{%
+ \iftoggle{blx@bibliography}
+ {}
+ {\c@maxnames#1\relax}}
+\DeclareEntryOption[integer]{mincitenames}{%
+ \iftoggle{blx@bibliography}
+ {}
+ {\c@minnames#1\relax}}
+
+\appto\blx@checkoptions@global{%
+ \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames
+ \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames}
+\appto\blx@checkoptions@type{%
+ \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type
+ \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type}
+\appto\blx@checkoptions@entry{%
+ \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames}
+
+\DeclareBibliographyOption[integer]{maxitems}{%
+ \numdef\blx@maxitems{#1}}
+\DeclareBibliographyOption[integer]{minitems}{%
+ \numdef\blx@minitems{#1}}
+\DeclareTypeOption[integer]{maxitems}{%
+ \numdef\blx@maxitems@type{#1}%
+ \c@maxitems#1\relax}
+\DeclareTypeOption[integer]{minitems}{%
+ \numdef\blx@minitems@type{#1}%
+ \c@minitems#1\relax}
+\DeclareEntryOption[integer]{maxitems}{%
+ \c@maxitems#1\relax}
+\DeclareEntryOption[integer]{minitems}{%
+ \c@minitems#1\relax}
+
+\appto\blx@checkoptions@global{%
+ \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems}
+\appto\blx@checkoptions@type{%
+ \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type}
+\appto\blx@checkoptions@entry{%
+ \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems}
+
+\DeclareBibliographyOption[integer]{maxalphanames}{%
+ \numdef\blx@maxalphanames{#1}}
+\DeclareBibliographyOption[integer]{minalphanames}{%
+ \numdef\blx@minalphanames{#1}}
+\DeclareTypeOption[integer]{maxalphanames}{%
+ \numdef\blx@maxalphanames{#1}}
+\DeclareTypeOption[integer]{minalphanames}{%
+ \numdef\blx@minalphanames{#1}}
+\DeclareEntryOption[integer]{maxalphanames}{%
+ \numdef\blx@maxalphanames{#1}}
+\DeclareEntryOption[integer]{minalphanames}{%
+ \numdef\blx@minalphanames{#1}}
+
+\appto\blx@checkoptions@global{%
+ \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames}
+\appto\blx@checkoptions@type{%
+ \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames}
+
+\def\blx@maxmin@num#1#2#3#4{%
+ \ifnumless#3\@ne
+ {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}%
+ \let#3\@ne}
+ {}%
+ \ifnumless#4\@ne
+ {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}%
+ \let#4\@ne}
+ {}%
+ \ifnumless#3#4
+ {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}%
+ \let#3#4}
+ {}}
+
+\def\blx@maxmin@cnt#1#2#3#4{%
+ \ifnumless#3\@ne
+ {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}%
+ #3\@ne}
+ {}%
+ \ifnumless#4\@ne
+ {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}%
+ #4\@ne}
+ {}%
+ \ifnumless#3#4
+ {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}%
+ #3=#4}
+ {}}
+
+\DeclareBibliographyOption[boolean]{terseinits}[true]{%
+ \ifstrequal{#1}{true}
+ {\toggletrue{blx@terseinits}
+ \renewrobustcmd*{\bibinitperiod}{}
+ \renewrobustcmd*{\bibinitdelim}{}
+ \renewrobustcmd*{\bibinithyphendelim}{}}
+ {\togglefalse{blx@terseinits}
+ \renewrobustcmd*{\bibinitperiod}{\adddot}
+ \renewrobustcmd*{\bibinitdelim}{\addnbspace}
+ \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}}
+
+% Legacy for giveninits
+\DeclareBibliographyOption[boolean]{firstinits}[true]{%
+ \blx@warning@noline{%
+ 'firstinits' option is deprecated, use 'giveninits' instead}%
+ \settoggle{blx@giveninits}{#1}}
+
+% Legacy for sortgiveninits
+\DeclareBibliographyOption[boolean]{sortfirstinits}[true]{%
+ \blx@warning@noline{%
+ 'sortfirstinits' option is deprecated, use 'sortgiveninits' instead}%
+ \settoggle{blx@sortgiveninits}{#1}}
+
+\DeclareBibliographyOption[boolean]{giveninits}[true]{%
+ \settoggle{blx@giveninits}{#1}}
+
+\DeclareBibliographyOption[boolean]{sortgiveninits}[true]{%
+ \settoggle{blx@sortgiveninits}{#1}}
+
+\DeclareBibliographyOption[boolean]{abbreviate}[true]{%
+ \ifstrequal{#1}{true}
+ {\def\abx@str{abx@sstr}}
+ {\def\abx@str{abx@lstr}}}
+
+\DeclareBibliographyOption[boolean]{dateabbrev}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\abx@bibmonth\blx@imc@bibsstring}
+ {\let\abx@bibmonth\blx@imc@biblstring}}
+
+\DeclareBibliographyOption[string]{sortlocale}{%
+ \edef\blx@sortlocale{\detokenize{#1}}}
+
+\DeclareBibliographyOption[string]{language}{%
+ \togglefalse{blx@autolangbib}%
+ \togglefalse{blx@autolangcite}%
+ \ifboolexpr{
+ test {\ifstrequal{#1}{auto}}
+ or
+ test {\ifstrequal{#1}{autobib}}
+ or
+ test {\ifstrequal{#1}{autocite}}
+ }
+ {\def\blx@languagename{english}%
+ \ifstrequal{#1}{auto}
+ {\toggletrue{blx@autolangbib}%
+ \toggletrue{blx@autolangcite}}
+ {}%
+ \ifstrequal{#1}{autobib}
+ {\toggletrue{blx@autolangbib}}
+ {}%
+ \ifstrequal{#1}{autocite}
+ {\toggletrue{blx@autolangcite}}
+ {}}
+ % If language is explicit, we do want to auto-switch but only to the
+ % selected language
+ {\IfFileExists{#1.lbx}
+ {\toggletrue{blx@autolangbib}%
+ \toggletrue{blx@autolangcite}%
+ \edef\blx@languagename{#1}%
+ \edef\blx@forcelanguagename{#1}}
+ {\blx@error
+ {Language '#1' not supported}
+ {Failed to find a matching '#1.lbx' file}}}}
+
+\DeclareBibliographyOption[boolean]{clearlang}[true]{%
+ \settoggle{blx@clearlang}{#1}}
+
+\DeclareBibliographyOption[string]{babel}{%
+ \blx@warning@noline{%
+ 'babel' option is deprecated, use 'autolang' instead}%
+ \blx@autolang@i{#1}}
+
+\DeclareBibliographyOption[string]{autolang}{%
+ \blx@autolang@i{#1}}
+
+\def\blx@autolang@i#1{%
+ \ifcsdef{blx@opt@autolang@#1}
+ {\csuse{blx@opt@autolang@#1}}
+ {\blx@err@invopt{autolang=#1}{}}}
+
+\def\blx@opt@autolang@none{%
+ \undef\blx@thelangenv
+ \let\blx@hook@initlang\@empty
+ \let\blx@hook@endlang\@empty}
+\def\blx@opt@autolang@hyphen{%
+ \def\blx@thelangenv{hyphenrules}%
+ \let\blx@hook@initlang\@empty
+ \let\blx@hook@endlang\@empty}
+\csdef{blx@opt@autolang@other*}{%
+ \def\blx@thelangenv{otherlanguage*}%
+ \def\blx@hook@initlang{\@quotereset\@ne}%
+ \def\blx@hook@endlang{\blx@postpunct}}
+\def\blx@opt@autolang@other{%
+ \def\blx@thelangenv{otherlanguage}%
+ \def\blx@hook@initlang{\@quotereset\@ne}%
+ \def\blx@hook@endlang{\blx@postpunct}}
+\def\blx@opt@autolang@langname{%
+ \@ifpackageloaded{polyglossia}
+ {\def\blx@thelangenv{langname}}
+ {\def\blx@thelangenv{otherlanguage}}%
+ \def\blx@hook@initlang{\@quotereset\@ne}%
+ \def\blx@hook@endlang{\blx@postpunct}}
+
+\DeclareBibliographyOption[boolean]{indexing}[true]{%
+ \blx@opt@index{#1}}
+\DeclareTypeOption[boolean]{indexing}[true]{%
+ \blx@opt@index{#1}}
+\DeclareEntryOption[boolean]{indexing}[true]{%
+ \blx@opt@index{#1}}
+\def\blx@opt@index#1{%
+ \ifcsdef{blx@opt@index@#1}
+ {\csuse{blx@opt@index@#1}}
+ {\blx@err@invopt{indexing=#1}{}}}
+\def\blx@opt@index@true{%
+ \toggletrue{blx@citeindex}%
+ \toggletrue{blx@bibindex}}
+\def\blx@opt@index@false{%
+ \togglefalse{blx@citeindex}%
+ \togglefalse{blx@bibindex}}
+\def\blx@opt@index@cite{%
+ \toggletrue{blx@citeindex}%
+ \togglefalse{blx@bibindex}}
+\def\blx@opt@index@bib{%
+ \togglefalse{blx@citeindex}%
+ \toggletrue{blx@bibindex}}
+
+\DeclareBibliographyOption[boolean]{sortcites}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\blx@thecitesort\blx@citesort
+ \let\blx@thenotecheck\blx@notecheck
+ \booltrue{sortcites}}
+ {\let\blx@thecitesort\blx@citenosort
+ \let\blx@thenotecheck\relax}}
+
+\DeclareBibliographyOption[boolean]{hyperref}[true]{%
+ \ifcsdef{blx@opt@hyperref@#1}
+ {\letcs\blx@hyperref{blx@opt@hyperref@#1}}
+ {\blx@err@invopt{hyperref=#1}{}}}
+\def\blx@opt@hyperref@false{0}
+\def\blx@opt@hyperref@true{1}
+\def\blx@opt@hyperref@auto{2}
+
+\DeclareBibliographyOption[boolean]{backref}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\blx@backref\blx@addbackref
+ \let\abx@aux@backref\blx@aux@backref
+ \booltrue{backtracker}}
+ {\let\blx@backref\@gobble
+ \let\abx@aux@backref\@gobblefive
+ \boolfalse{backtracker}}}
+
+\DeclareBibliographyOption[string]{backrefsetstyle}{%
+ \ifcsdef{blx@opt@backrefsetstyle@#1}
+ {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}}
+ {\blx@err@invopt{backrefsetstyle=#1}{}}}
+\def\blx@opt@backrefsetstyle@setonly{0}
+\def\blx@opt@backrefsetstyle@memonly{1}
+\def\blx@opt@backrefsetstyle@setormem{2}
+\def\blx@opt@backrefsetstyle@setandmem{3}
+\def\blx@opt@backrefsetstyle@memandset{4}
+\def\blx@opt@backrefsetstyle@setplusmem{5}
+
+\appto\blx@mkhyperref{%
+ \ifHy@plainpages
+ \blx@warning@noline{%
+ hyperref package option 'plainpages' enabled.\MessageBreak
+ This may cause problems with hyperlinked back\MessageBreak
+ references. 'plainpages=false' is recommended}%
+ \fi
+ \ifHy@pageanchor\else
+ \blx@warning@noline{%
+ hyperref package option 'pageanchor' disabled.\MessageBreak
+ This will cause problems with hyperlinked back\MessageBreak
+ references. 'pageanchor=true' is required}%
+ \fi}
+
+\DeclareBibliographyOption[string]{block}{%
+ \ifcsdef{blx@opt@block@#1}
+ {\csuse{blx@opt@block@#1}}
+ {\blx@err@invopt{block=#1}{}}}
+\def\blx@opt@block@none{%
+ \let\blx@bibsetup\@empty
+ \let\newblockpunct\@empty}
+\def\blx@opt@block@par{%
+ \let\blx@bibsetup\@empty
+ \def\newblockpunct{\par}}
+\def\blx@opt@block@nbpar{%
+ \def\blx@bibsetup{\interlinepenalty\@M}%
+ \def\newblockpunct{\par\nobreak}}
+\def\blx@opt@block@space{%
+ \let\blx@bibsetup\@empty
+ \def\newblockpunct{%
+ \unspace\space
+ \hskip 0.11em
+ \@plus 0.33em
+ \@minus 0.07em}}
+\def\blx@opt@block@ragged{%
+ \let\blx@bibsetup\raggedright
+ \def\newblockpunct{%
+ \unspace\penalty-9\relax\space}}
+
+\DeclareBibliographyOption[boolean]{pagetracker}[true]{%
+ \ifcsdef{blx@opt@pagetracker@#1}
+ {\csuse{blx@opt@pagetracker@#1}}
+ {\blx@err@invopt{pagetracker=#1}{}}}
+\def\blx@opt@pagetracker@true{%
+ \if@twoside
+ \blx@opt@pagetracker@spread
+ \else
+ \blx@opt@pagetracker@page
+ \fi}
+\def\blx@opt@pagetracker@false{%
+ \let\blx@pagetracker\relax
+ \let\abx@aux@page\@gobbletwo
+ \let\abx@aux@fnpage\@gobbletwo
+ \boolfalse{pagetracker}}
+\def\blx@opt@pagetracker@page{%
+ \let\blx@pagetracker\blx@pagetracker@context
+ \let\abx@aux@page\blx@aux@page
+ \let\abx@aux@fnpage\blx@aux@fnpage
+ \booltrue{pagetracker}}
+\def\blx@opt@pagetracker@spread{%
+ \if@twoside
+ \let\blx@pagetracker\blx@pagetracker@context
+ \let\abx@aux@page\blx@aux@spread
+ \let\abx@aux@fnpage\blx@aux@fnspread
+ \booltrue{pagetracker}%
+ \else
+ \blx@warning@noline{%
+ LaTeX not in twoside mode\MessageBreak
+ Falling back to 'pagetracker=page'}%
+ \blx@opt@pagetracker@page
+ \fi}
+
+\DeclareBibliographyOption[boolean]{citecounter}[true]{%
+ \ifcsdef{blx@opt@citecounter@#1}
+ {\csuse{blx@opt@citecounter@#1}}
+ {\blx@err@invopt{citecounter=#1}{}}}
+\def\blx@opt@citecounter@true{%
+ \let\blx@setcitecounter\blx@setcitecounter@global
+ \let\blx@citecounter\blx@citecounter@global
+ \let\abx@aux@count\blx@aux@count
+ \let\abx@aux@fncount\blx@aux@fncount
+ \booltrue{citetracker}}
+\def\blx@opt@citecounter@context{%
+ \let\blx@setcitecounter\blx@setcitecounter@context
+ \let\blx@citecounter\blx@citecounter@context
+ \let\abx@aux@count\blx@aux@count
+ \let\abx@aux@fncount\blx@aux@fncount
+ \booltrue{citetracker}}
+\def\blx@opt@citecounter@false{%
+ \let\blx@setcitecounter\relax
+ \let\blx@citecounter\relax
+ \let\abx@aux@count\@gobbletwo
+ \let\abx@aux@fncount\@gobbletwo}
+
+\DeclareBibliographyOption[boolean]{citetracker}[true]{%
+ \ifcsdef{blx@opt@citetracker@#1}
+ {\csuse{blx@opt@citetracker@#1}}
+ {\blx@err@invopt{citetracker=#1}{}}}
+\def\blx@opt@citetracker@true{%
+ \let\blx@imc@ifciteseen\blx@ifciteseen@global
+ \let\blx@imc@ifentryseen\blx@ifentryseen@global
+ \let\blx@citetracker\blx@citetracker@global
+ \booltrue{citetracker}}
+\def\blx@opt@citetracker@false{%
+ \let\blx@imc@ifciteseen\@secondoftwo
+ \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}%
+ \let\blx@citetracker\relax}
+\def\blx@opt@citetracker@context{%
+ \let\blx@imc@ifciteseen\blx@ifciteseen@context
+ \let\blx@imc@ifentryseen\blx@ifentryseen@context
+ \let\blx@citetracker\blx@citetracker@context
+ \booltrue{citetracker}}
+\def\blx@opt@citetracker@strict{%
+ \let\blx@imc@ifciteseen\blx@ifciteseen@global
+ \let\blx@imc@ifentryseen\blx@ifentryseen@global
+ \def\blx@citetracker{%
+ \blx@ifcitesingle{\blx@citetracker@global}{}}%
+ \booltrue{citetracker}}
+\def\blx@opt@citetracker@constrict{%
+ \let\blx@imc@ifciteseen\blx@ifciteseen@context
+ \let\blx@imc@ifentryseen\blx@ifentryseen@context
+ \def\blx@citetracker{%
+ \blx@ifcitesingle{\blx@citetracker@context}{}}%
+ \booltrue{citetracker}}
+
+\DeclareBibliographyOption[boolean]{ibidtracker}[true]{%
+ \ifcsdef{blx@opt@ibidtracker@#1}
+ {\csuse{blx@opt@ibidtracker@#1}}
+ {\blx@err@invopt{ibidtracker=#1}{}}}
+\def\blx@opt@ibidtracker@true{%
+ \let\blx@imc@ifciteibid\blx@ifciteibid@global
+ \let\blx@ibidtracker\blx@ibidtracker@global
+ \let\blx@ibidreset\blx@ibidreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@ibidtracker@false{%
+ \let\blx@imc@ifciteibid\@secondoftwo
+ \let\blx@ibidtracker\relax
+ \let\blx@ibidreset\relax}
+\def\blx@opt@ibidtracker@context{%
+ \let\blx@imc@ifciteibid\blx@ifciteibid@context
+ \let\blx@ibidtracker\blx@ibidtracker@context
+ \let\blx@ibidreset\blx@ibidreset@context
+ \booltrue{citetracker}}
+\def\blx@opt@ibidtracker@strict{%
+ \let\blx@imc@ifciteibid\blx@ifciteibid@strict
+ \let\blx@ibidtracker\blx@ibidtracker@strict
+ \let\blx@ibidreset\blx@ibidreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@ibidtracker@constrict{%
+ \let\blx@imc@ifciteibid\blx@ifciteibid@constrict
+ \let\blx@ibidtracker\blx@ibidtracker@constrict
+ \let\blx@ibidreset\blx@ibidreset@context
+ \booltrue{citetracker}}
+
+\DeclareBibliographyOption[boolean]{idemtracker}[true]{%
+ \ifcsdef{blx@opt@idemtracker@#1}
+ {\csuse{blx@opt@idemtracker@#1}}
+ {\blx@err@invopt{idemtracker=#1}{}}}
+\def\blx@opt@idemtracker@true{%
+ \let\blx@imc@ifciteidem\blx@ifciteidem@global
+ \let\blx@idemtracker\blx@idemtracker@global
+ \let\blx@idemreset\blx@idemreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@idemtracker@false{%
+ \let\blx@imc@ifciteidem\@secondoftwo
+ \let\blx@idemtracker\relax
+ \let\blx@idemreset\relax}
+\def\blx@opt@idemtracker@context{%
+ \let\blx@imc@ifciteidem\blx@ifciteidem@context
+ \let\blx@idemtracker\blx@idemtracker@context
+ \let\blx@idemreset\blx@idemreset@context
+ \booltrue{citetracker}}
+\def\blx@opt@idemtracker@strict{%
+ \let\blx@imc@ifciteidem\blx@ifciteidem@strict
+ \let\blx@idemtracker\blx@idemtracker@strict
+ \let\blx@idemreset\blx@idemreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@idemtracker@constrict{%
+ \let\blx@imc@ifciteidem\blx@ifciteidem@constrict
+ \let\blx@idemtracker\blx@idemtracker@constrict
+ \let\blx@idemreset\blx@idemreset@context
+ \booltrue{citetracker}}
+
+\DeclareBibliographyOption[boolean]{opcittracker}[true]{%
+ \ifcsdef{blx@opt@opcittracker@#1}
+ {\csuse{blx@opt@opcittracker@#1}}
+ {\blx@err@invopt{opcittracker=#1}{}}}
+\def\blx@opt@opcittracker@true{%
+ \let\blx@imc@ifopcit\blx@ifopcit@global
+ \let\blx@opcittracker\blx@opcittracker@global
+ \let\blx@opcitreset\blx@opcitreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@opcittracker@false{%
+ \let\blx@imc@ifopcit\@secondoftwo
+ \let\blx@opcittracker\relax
+ \let\blx@opcitreset\relax}
+\def\blx@opt@opcittracker@context{%
+ \let\blx@imc@ifopcit\blx@ifopcit@context
+ \let\blx@opcittracker\blx@opcittracker@context
+ \let\blx@opcitreset\blx@opcitreset@context
+ \booltrue{citetracker}}
+\def\blx@opt@opcittracker@strict{%
+ \let\blx@imc@ifopcit\blx@ifopcit@strict
+ \let\blx@opcittracker\blx@opcittracker@strict
+ \let\blx@opcitreset\blx@opcitreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@opcittracker@constrict{%
+ \let\blx@imc@ifopcit\blx@ifopcit@constrict
+ \let\blx@opcittracker\blx@opcittracker@constrict
+ \let\blx@opcitreset\blx@opcitreset@context
+ \booltrue{citetracker}}
+
+\DeclareBibliographyOption[boolean]{loccittracker}[true]{%
+ \ifcsdef{blx@opt@loccittracker@#1}
+ {\csuse{blx@opt@loccittracker@#1}}
+ {\blx@err@invopt{loccittracker=#1}{}}}
+\def\blx@opt@loccittracker@true{%
+ \let\blx@imc@ifloccit\blx@ifloccit@global
+ \let\blx@loccittracker\blx@loccittracker@global
+ \let\blx@loccitreset\blx@loccitreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@loccittracker@false{%
+ \let\blx@imc@ifloccit\@secondoftwo
+ \let\blx@loccittracker\relax
+ \let\blx@loccitreset\relax}
+\def\blx@opt@loccittracker@context{%
+ \let\blx@imc@ifloccit\blx@ifloccit@context
+ \let\blx@loccittracker\blx@loccittracker@context
+ \let\blx@loccitreset\blx@loccitreset@context
+ \booltrue{citetracker}}
+\def\blx@opt@loccittracker@strict{%
+ \let\blx@imc@ifloccit\blx@ifloccit@strict
+ \let\blx@loccittracker\blx@loccittracker@strict
+ \let\blx@loccitreset\blx@loccitreset@global
+ \booltrue{citetracker}}
+\def\blx@opt@loccittracker@constrict{%
+ \let\blx@imc@ifloccit\blx@ifloccit@constrict
+ \let\blx@loccittracker\blx@loccittracker@constrict
+ \let\blx@loccitreset\blx@loccitreset@context
+ \booltrue{citetracker}}
+
+\DeclareBibliographyOption[boolean]{parentracker}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\bibopenparen\blx@bibopenparen
+ \let\bibcloseparen\blx@bibcloseparen
+ \let\bibopenbracket\blx@bibopenbracket
+ \let\bibclosebracket\blx@bibclosebracket}
+ {\protected\def\bibopenparen{\bibleftparen}%
+ \protected\def\bibcloseparen{\bibrightparen}%
+ \protected\def\bibopenbracket{\bibleftbracket}%
+ \protected\def\bibclosebracket{\bibrightbracket}}}
+
+\DeclareBibliographyOption[integer]{maxparens}{%
+ \ifnumless{#1}{1}
+ {\blx@err@invopt{maxparens=#1}{}}
+ {\setcounter{maxparens}{#1}}}
+
+\DeclareBibliographyOption[string]{datelabel}{%
+ \ifcsdef{mkbibrange#1}
+ {\protected\def\blx@imc@printdatelabel{%
+ \blx@imc@iffieldundef{year}
+ {\csuse{mkbibrange#1}{label}}
+ {\csuse{mkbibrange#1}{}}}%
+ \protected\def\blx@imc@printdateextralabel{%
+ \blx@imc@iffieldundef{year}
+ {\csuse{mkbibrange#1extra}{label}}
+ {\csuse{mkbibrange#1extra}{}}}}
+ {\blx@err@invopt{datelabel=#1}{}}}
+
+
+\def\do#1{%
+ \DeclareBibliographyOption[string]{#1}{%
+ \StrCut{#1}{date}\blx@datetype\blx@tempnull
+ \ifcsdef{mkbibrange##1}
+ {\protected\csedef{blx@imc@print#1}{\noexpand\csuse{mkbibrange##1}{\blx@datetype}}}
+ {\blx@err@invopt{#1=##1}{}}%
+ \ifcsdef{mkbibrange##1extra}
+ {\protected\csedef{blx@imc@print#1extra}{\noexpand\csuse{mkbibrange##1extra}{\blx@datetype}}}
+ {}}}
+\abx@dodates
+
+% Default for new date fields is "comp" but this is overridden below by
+% biblatex defaults
+\def\do#1{\setkeys{blx@opt@pre}{#1=comp}}
+\abx@dodates
+
+\DeclareBibliographyOption[string]{alldates}{%
+ \ExecuteBibliographyOptions{datelabel=#1}%
+ \def\do##1{\ExecuteBibliographyOptions{##1=#1}}%
+ \abx@dodates}
+
+\DeclareBibliographyOption[boolean]{datezeros}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\blx@imc@mkdatezeros\@firstofone}
+ {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}}
+
+\DeclareBibliographyOption[string]{autocite}{%
+ \ifcsundef{blx@acite@#1}
+ {\blx@error
+ {Autocite command '#1' undefined}
+ {The autocite command '#1' has not been defined by
+ the\MessageBreak selected citation style}}
+ {\letcs\autocite{blx@acite@#1}%
+ \letcs\autocites{blx@macite@#1}}}
+
+\DeclareBibliographyOption[string]{notetype}{%
+ \ifcsdef{blx@opt@notetype@#1}
+ {\blx@notetype\csuse{blx@opt@notetype@#1}}
+ {\blx@err@invopt{notetype=#1}{}}}
+\cslet{blx@opt@notetype@foot+end}\z@
+\let\blx@opt@notetype@footonly\@ne
+\let\blx@opt@notetype@endonly\tw@
+
+\DeclareBibliographyOption[boolean]{autopunct}[true]{%
+ \ifstrequal{#1}{true}
+ {\DeclareAutoPunctuation{.,;:!?}}
+ {\DeclareAutoPunctuation{}}}
+
+\DeclareBibliographyOption[boolean]{punctfont}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\blx@ifpuncthook\@firstoftwo}
+ {\let\blx@ifpuncthook\@secondoftwo}}
+
+\DeclareBibliographyOption[boolean]{labelnumber}[true]{%
+ \settoggle{blx@labelnumber}{#1}%
+ \iftoggle{blx@labelnumber}
+ {}
+ {\setkeys{blx@opt@pre}{defernumbers=false}}}
+\DeclareTypeOption[boolean]{labelnumber}[true]{%
+ \settoggle{blx@labelnumber}{#1}}
+
+\DeclareBibliographyOption[boolean]{labelalpha}[true]{%
+ \settoggle{blx@labelalpha}{#1}}
+\DeclareTypeOption[boolean]{labelalpha}[true]{%
+ \settoggle{blx@labelalpha}{#1}}
+
+\DeclareBibliographyOption[boolean]{labeltitle}[true]{%
+ \settoggle{blx@labeltitle}{#1}}
+\DeclareTypeOption[boolean]{labeltitle}[true]{%
+ \settoggle{blx@labeltitle}{#1}}
+
+\DeclareBibliographyOption[boolean]{labeltitleyear}[true]{%
+ \settoggle{blx@labeltitleyear}{#1}}
+\DeclareTypeOption[boolean]{labeltitleyear}[true]{%
+ \settoggle{blx@labeltitleyear}{#1}}
+
+\DeclareBibliographyOption[boolean]{labeldate}[true]{%
+ \settoggle{blx@labeldate}{#1}}
+\DeclareTypeOption[boolean]{labeldate}[true]{%
+ \settoggle{blx@labeldate}{#1}}
+
+\DeclareBibliographyOption[boolean]{labelyear}[true]{%
+ \blx@warning@noline{%
+ 'labelyear' option is deprecated, use 'labeldate' instead}%
+ \settoggle{blx@labeldate}{#1}}
+\DeclareTypeOption[boolean]{labelyear}[true]{%
+ \blx@warning@noline{%
+ 'labelyear' option is deprecated, use 'labeldate' instead}%
+ \settoggle{blx@labeldate}{#1}}
+
+\DeclareBibliographyOption[boolean]{uniquelist}[true]{%
+ \ifcsdef{blx@opt@uniquelist@#1}
+ {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
+ {\blx@err@invopt{uniquelist=#1}{}}}
+\DeclareTypeOption[boolean]{uniquelist}[true]{%
+ \ifcsdef{blx@opt@uniquelist@#1}
+ {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
+ {\blx@err@invopt{uniquelist=#1}{}}}
+\DeclareEntryOption[boolean]{uniquelist}[true]{%
+ \ifcsdef{blx@opt@uniquelist@#1}
+ {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
+ {\blx@err@invopt{uniquelist=#1}{}}}
+\def\blx@opt@uniquelist@false{0}
+\def\blx@opt@uniquelist@true{1}
+\def\blx@opt@uniquelist@minyear{2}
+
+\DeclareBibliographyOption[boolean]{uniquename}[true]{%
+ \ifcsdef{blx@opt@uniquename@#1}
+ {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
+ {\blx@err@invopt{uniquename=#1}{}}}
+\DeclareTypeOption[boolean]{uniquename}[true]{%
+ \ifcsdef{blx@opt@uniquename@#1}
+ {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
+ {\blx@err@invopt{uniquename=#1}{}}}
+\DeclareEntryOption[boolean]{uniquename}[true]{%
+ \ifcsdef{blx@opt@uniquename@#1}
+ {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
+ {\blx@err@invopt{uniquename=#1}{}}}
+\def\blx@opt@uniquename@false{0}
+\def\blx@opt@uniquename@init{1}
+\def\blx@opt@uniquename@true{2}
+\def\blx@opt@uniquename@full{2}
+\def\blx@opt@uniquename@allinit{3}
+\def\blx@opt@uniquename@allfull{4}
+\def\blx@opt@uniquename@mininit{5}
+\def\blx@opt@uniquename@minfull{6}
+
+\DeclareBibliographyOption[boolean]{singletitle}[true]{%
+ \settoggle{blx@singletitle}{#1}}
+\DeclareTypeOption[boolean]{singletitle}[true]{%
+ \settoggle{blx@singletitle}{#1}}
+
+\DeclareBibliographyOption[boolean]{uniquetitle}[true]{%
+ \settoggle{blx@uniquetitle}{#1}}
+\DeclareTypeOption[boolean]{uniquetitle}[true]{%
+ \settoggle{blx@uniquetitle}{#1}}
+
+\DeclareBibliographyOption[boolean]{uniqueprimaryauthor}[true]{%
+ \settoggle{blx@uniqueprimaryauthor}{#1}}
+
+\DeclareBibliographyOption[boolean]{defernumbers}[true]{%
+ \settoggle{blx@defernumbers}{#1}%
+ \iftoggle{blx@defernumbers}
+ {\setkeys{blx@opt@pre}{labelnumber}%
+ \let\blx@thelabelnumber\blx@addlabelnumber
+ \let\abx@aux@number\blx@aux@number}
+ {\let\blx@thelabelnumber\relax
+ \let\abx@aux@number\@gobblefive}}
+
+\DeclareBibliographyOption[string]{refsection}{%
+ \ifcsdef{blx@opt@refsection@#1}
+ {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}}
+ {\blx@err@invopt{refsection=#1}{}}}
+\def\blx@opt@refsection@none{0}
+\def\blx@opt@refsection@part{1}
+\def\blx@opt@refsection@chapter{2}
+\def\blx@opt@refsection@section{3}
+\def\blx@opt@refsection@subsection{4}
+
+\AtEndPreamble{%
+ \ifcase\blx@refsecreset@level
+ \or % 1
+ \blx@refpatch@part\newrefsection
+ \or % 2
+ \blx@refpatch@chapter\newrefsection
+ \or % 3
+ \blx@refpatch@sect{section}{\newrefsection}{1}%
+ \or % 4
+ \blx@refpatch@sect{subsection}{\newrefsection}{2}%
+ \fi}
+
+\DeclareBibliographyOption[string]{refsegment}{%
+ \ifcsdef{blx@opt@refsegment@#1}
+ {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}}
+ {\blx@err@invopt{refsegment=#1}{}}}
+\def\blx@opt@refsegment@none{0}
+\def\blx@opt@refsegment@part{1}
+\def\blx@opt@refsegment@chapter{2}
+\def\blx@opt@refsegment@section{3}
+\def\blx@opt@refsegment@subsection{4}
+
+\AtEndPreamble{%
+ \ifnumgreater\blx@refsegreset@level\z@
+ {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level
+ {}
+ {\blx@err@confopt
+ {refsegment/refsection}
+ {The 'refsegment' option must point to a
+ lower-level\MessageBreak document division
+ than 'refsection'}%
+ \def\blx@refsegreset@level{0}}}
+ {}%
+ \ifcase\blx@refsegreset@level
+ \or % 1
+ \blx@refpatch@part\newrefsegment
+ \or % 2
+ \blx@refpatch@chapter\newrefsegment
+ \or % 3
+ \blx@refpatch@sect{section}{\newrefsegment}{1}%
+ \or % 4
+ \blx@refpatch@sect{subsection}{\newrefsegment}{2}%
+ \fi}
+
+\DeclareBibliographyOption[string]{citereset}{%
+ \ifcsdef{blx@opt@citereset@#1}
+ {\letcs\blx@citereset@level{blx@opt@citereset@#1}}
+ {\blx@err@invopt{citereset=#1}{}}}
+\def\blx@opt@citereset@none{0}
+\def\blx@opt@citereset@part{1}
+\def\blx@opt@citereset@chapter{2}
+\def\blx@opt@citereset@section{3}
+\def\blx@opt@citereset@subsection{4}
+
+\AtEndPreamble{%
+ \ifcase\blx@citereset@level
+ \or % 1
+ \blx@refpatch@part{\citereset\blx@inf@creset}%
+ \or % 2
+ \blx@refpatch@chapter{\citereset\blx@inf@creset}%
+ \or % 3
+ \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}%
+ \or % 4
+ \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}%
+ \fi}
+
+\DeclareBibliographyOption[boolean]{bibwarn}[true]{%
+ \ifstrequal{#1}{true}
+ {\let\blx@bbl@thewarn\blx@bbl@warn}
+ {\let\blx@bbl@thewarn\@gobble}}
+
+% Name field options
+\def\do#1{%
+ \DeclareBibliographyOption[boolean]{use#1}[true]{%
+ \settoggle{blx@use#1}{##1}}
+ \DeclareTypeOption[boolean]{use#1}[true]{%
+ \settoggle{blx@use#1}{##1}}
+ \DeclareEntryOption[boolean]{use#1}[true]{%
+ \settoggle{blx@use#1}{##1}}}
+\abx@donames
+
+% Entry options
+\DeclareBibliographyOption[boolean]{useprefix}[true]{%
+ \settoggle{blx@useprefix}{#1}}
+\DeclareTypeOption[boolean]{useprefix}[true]{%
+ \settoggle{blx@useprefix}{#1}}
+\DeclareEntryOption[boolean]{useprefix}[true]{%
+ \settoggle{blx@useprefix}{#1}}
+
+\DeclareTypeOption[boolean]{skipbib}[true]{%
+ \settoggle{blx@skipbib}{#1}}
+\DeclareEntryOption[boolean]{skipbib}[true]{%
+ \settoggle{blx@skipbib}{#1}}
+
+\DeclareTypeOption[boolean]{skiplos}{%
+ \blx@warning@noline{%
+ skiplos option is deprecated, use 'skipbiblist' instead}%
+ \settoggle{blx@skipbiblist}{#1}}
+\DeclareEntryOption[boolean]{skiplos}{%
+ \blx@warning@noline{%
+ skiplos option is deprecated, use 'skipbiblist' instead}%
+ \settoggle{blx@skipbiblist}{#1}}
+
+\DeclareTypeOption[boolean]{skipbiblist}[true]{%
+ \settoggle{blx@skipbiblist}{#1}}
+\DeclareEntryOption[boolean]{skipbiblist}[true]{%
+ \settoggle{blx@skipbiblist}{#1}}
+
+\DeclareTypeOption[boolean]{skiplab}[true]{%
+ \settoggle{blx@skiplab}{#1}}
+\DeclareEntryOption[boolean]{skiplab}[true]{%
+ \settoggle{blx@skiplab}{#1}}
+
+\DeclareTypeOption[boolean]{dataonly}[true]{%
+ \settoggle{blx@skipbib}{#1}%
+ \settoggle{blx@skipbiblist}{#1}%
+ \settoggle{blx@skiplab}{#1}}
+\DeclareEntryOption[boolean]{dataonly}[true]{%
+ \settoggle{blx@skipbib}{#1}%
+ \settoggle{blx@skipbiblist}{#1}%
+ \settoggle{blx@skiplab}{#1}}
+
+% Option processor/scheduler
+\DeclareOption*{%
+ \begingroup
+ \def\blx@tempa#1=#2&{#1}%
+ \edef\blx@tempa{%
+ \expandafter\blx@tempa\CurrentOption=&}%
+ \ifcsundef{KV@blx@opt@ldt@\blx@tempa}
+ {\endgroup
+ \eappto\blx@theoptions{\CurrentOption,}}
+ {\edef\blx@tempa{\endgroup
+ \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}%
+ \blx@tempa}}
+
+\def\blx@processoptions{%
+ \ifundef\blx@theoptions
+ {}
+ {\begingroup
+ \edef\blx@tempa{\endgroup
+ \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}%
+ \blx@tempa}}
+
+%% Initial setup
+
+% Set defaults
+
+\setkeys{blx@opt@ldt}{style=numeric}
+\setkeys{blx@opt@pre}{%
+ sorting=nty,sortlocale=auto,sortcase,sortupper,sortcites=false,
+ maxnames=3,minnames=1,maxalphanames=3,minalphanames=1,
+ maxitems=3,minitems=1,mincrossrefs=2,minxrefs=2,useauthor=true,useeditor=true,
+ usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true,
+ backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false,
+ idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false,
+ citecounter=false,block=none,language=autobib,clearlang=true,autolang=none,
+ date=comp,datelabel=year,origdate=comp,eventdate=comp,urldate=short,
+ autopunct=true,punctfont=false,defernumbers=false,
+ refsection=none,refsegment=none,citereset=none,hyperref=auto,
+ parentracker,maxparens=3,bibencoding=auto,bibwarn}
+
+% Load compatibility code
+
+\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{}
+
+% Restore catcodes
+
+\blx@catcodes
+\undef\blx@catcodes
+
+% Process load-time options
+
+\ProcessOptions*
+
+% Switch to BibTeX support if requests
+
+\iftoggle{blx@bibtex}
+ {\blx@inputonce{blx-bibtex.def}{BibTeX backend compatibility}{}{}{}{}}
+ {}
+
+% Load citation and bibliography styles, configuration file
+
+\blx@inputonce{biblatex.def}{generic definitions}{}{}{}{}
+\iftoggle{blx@natbib}
+ {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}}
+ {}
+\iftoggle{blx@mcite}
+ {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}}
+ {}
+\RequireBibliographyStyle{\blx@bbxfile}
+\RequireCitationStyle{\blx@cbxfile}
+\blx@secinit
+\citereset
+\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{}
+
+% Process preamble options
+
+\blx@processoptions
+
+% Deferred setup at end of preamble
+
+\AtEndPreamble{%
+ \blx@checkoptions@global
+ \c@maxnames\blx@maxcitenames\relax
+ \c@minnames\blx@mincitenames\relax
+ \c@maxitems\blx@maxitems\relax
+ \c@minitems\blx@minitems\relax
+ \iftoggle{blx@giveninits}
+ {\ifnumequal\blx@uniquename\blx@opt@uniquename@full
+ {\blx@warn@conflopt{%
+ 'giveninits' conflicts with 'uniquename=full'.\MessageBreak
+ Setting 'uniquename=init'}%
+ \setkeys{blx@opt@pre}{uniquename=init}}
+ {}%
+ \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull
+ {\blx@warn@conflopt{%
+ 'giveninits' conflicts with 'uniquename=allfull'.\MessageBreak
+ Setting 'uniquename=allinit}%
+ \setkeys{blx@opt@pre}{uniquename=allinit}}
+ {}%
+ \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull
+ {\blx@warn@conflopt{%
+ 'giveninits' conflicts with 'uniquename=minfull'.\MessageBreak
+ Setting 'uniquename=mininit}%
+ \setkeys{blx@opt@pre}{uniquename=mininit}}
+ {}}
+ {}%
+ \nottoggle{blx@labeldate}
+ {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear
+ {\blx@warn@conflopt{%
+ 'uniquelist=minyear' requires 'labeldate'.\MessageBreak
+ Setting 'uniquelist=true'}%
+ \setkeys{blx@opt@pre}{uniquelist}}
+ {}}
+ {}}
+
+\def\blx@checkencoding{%
+ \ifdef\blx@texencoding
+ {\blx@info@noline{%
+ Input encoding '\blx@texencoding' specified}}
+ {\ifundef\inputencodingname
+ {\ifundef\XeTeXrevision
+ {\ifundef\luatexversion
+ {\def\blx@texencoding{ascii}%
+ \blx@info@noline{%
+ No input encoding detected.\MessageBreak
+ Assuming '\blx@texencoding'}}
+ {\def\blx@texencoding{utf8}%
+ \blx@info@noline{%
+ LuaTeX detected.\MessageBreak
+ Assuming input encoding '\blx@texencoding'}}}
+ {\def\blx@texencoding{utf8}%
+ \blx@info@noline{%
+ XeTeX detected.\MessageBreak
+ Assuming input encoding '\blx@texencoding'}}}
+ {\ifcsdef{blx@inpenc@\inputencodingname}
+ {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}}
+ {\let\blx@texencoding\inputencodingname}%
+ \blx@info@noline{%
+ Input encoding '\blx@texencoding' detected}}}%
+ \ifdef\blx@bibencoding
+ {\ifdefstring\blx@bibencoding{ascii}
+ {\blx@info@noline{%
+ Data encoding '\blx@bibencoding' specified.\MessageBreak
+ No need to reencode data}}
+ {\ifdefstring\blx@bibencoding{auto}
+ {\let\blx@bibencoding\blx@texencoding
+ \blx@info@noline{%
+ Automatic encoding selection.\MessageBreak
+ Assuming data encoding '\blx@bibencoding'}}
+ {\ifdefstrequal\blx@bibencoding\blx@texencoding
+ {\blx@info@noline{%
+ Data encoding '\blx@bibencoding' specified.\MessageBreak
+ No need to reencode data}}
+ {\blx@info@noline{%
+ Data encoding '\blx@bibencoding' specified.\MessageBreak
+ Backend will reencode on the fly}}}}}
+ {\def\blx@bibencoding{ascii}%
+ \blx@info@noline{%
+ Data encoding not specified.\MessageBreak
+ Assuming '\blx@bibencoding'}}%
+ \ifboolexpr{%
+ togl {blx@safeinputenc}
+ and ( test {\@ifpackageloaded{inputenc}}
+ or
+ test {\@ifpackageloaded{inputenx}} )
+ }
+ {\def\blx@texencoding{ascii}%
+ \blx@info@noline{%
+ Input encoding '\blx@texencoding' forced by\MessageBreak
+ 'safeinputenc' option}}
+ {}%
+}
+
+% Deferred last minute setup
+\AtBeginDocument{%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@sorting}}%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}}
+ \blx@checkencoding
+ \if@filesw
+ \blx@ctrlwrite
+ \blx@bblinput
+ \blx@maxsection\z@
+ \fi
+ \csuse{abx@preamble}%
+ \blx@inf@refsec
+ \blx@inf@refseg}
+
+\AtEndOfPackage{%
+ % Data model macros are forbidden after package load is finished
+ \def\blx@warn@dm#1{\blx@warning@noline{Data model macro '#1' cannot be used in preamble}}
+ \def\ResetDatamodelEntrytypes{\blx@warn@dm{ResetDatamodelEntrytypes}}
+ \def\ResetDatamodelFields{\blx@warn@dm{ResetDatamodelFields}}
+ \def\ResetDatamodelEntryfields{\blx@warn@dm{ResetDatamodelEntryfields}}
+ \def\ResetDatamodelConstraints{\blx@warn@dm{ResetDatamodelConstraints}}
+ \renewcommand*{\DeclareDatamodelEntrytypes}[2][]{\blx@warn@dm{DeclareDatamodelEntrytypes}}
+ \renewcommand*{\DeclareDatamodelFields}[2][]{\blx@warn@dm{DeclareDatamodelFields}}
+ \renewcommand*{\DeclareDatamodelEntryfields}[2][]{\blx@warn@dm{DeclareDatamodelEntryfields}}
+ \renewcommand*{\DeclareDatamodelConstraints}[2][]{\blx@warn@dm{DeclareDatamodelConstraints}}
+ \renewcommand*{\DeclareDatamodelConstant}[3][]{\blx@warn@dm{DeclareDatamodelConstant}}
+ \AtBeginDocument{%
+ \let\do\undef
+ \blx@dopreamblecmds
+ \let\do\noexpand}}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex_.sty
deleted file mode 100644
index 0bc186ad0f0..00000000000
--- a/Master/texmf-dist/tex/latex/biblatex/biblatex_.sty
+++ /dev/null
@@ -1,11607 +0,0 @@
-% Copyright (c) 2006-2011 Philipp Lehman.
-% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright
-%
-% Permission is granted to copy, distribute and/or modify this
-% software under the terms of the LaTeX Project Public License
-% (LPPL), version 1.3.
-%
-% This software is provided 'as is', without warranty of any kind,
-% either expressed or implied, including, but not limited to, the
-% implied warranties of merchantability and fitness for a
-% particular purpose.
-
-\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{biblatex_}
-[\abx@date\space v\abx@version\space programmable bibliographies (biber) (PK/JW/AB)]
-
-%% Dependencies
-\RequirePackage{etoolbox}
-\RequirePackage{keyval}
-\RequirePackage{kvoptions}
-\RequirePackage{logreq}
-\RequirePackage{ifthen}
-\RequirePackage{url}
-%\RequirePackage{trace}
-
-\@ifpackagelater{etoolbox}{2010/11/29}
- {}
- {\PackageError{biblatex}
- {Outdated 'etoolbox' package}
- {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak
- I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak
- This is a fatal error. I'm aborting now.}%
- \endinput}
-
-% Tests for emptiness, regardless whether the arg is macro or literal
-% Expand everything and test as string
-\def\ifempty#1{%
- \edef\z{#1}%
- \expandafter\ifblank\expandafter{\z}}
-
-%% Category codes
-
-\def\blx@docatcodes{%
- \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.%
- \do\,\do\;\do\:\do\!\do\?\do\/}
-\def\do#1{\catcode\number`#1=\the\catcode`#1\relax}
-\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|}
-\let\do\noexpand
-
-\def\blx@saneccodes{%
- \catcode`\~=\active
- \let\do\@makeother
- \blx@docatcodes
- \let\do\noexpand}
-
-\blx@saneccodes
-\catcode`\&=3
-\catcode`\|=3
-\catcode`\^=7
-\def\blx@nl{^^J}
-
-%% Compatibility
-
-\AtEndPreamble{%
- \def\do#1{%
- \@ifpackageloaded{#1}
- {\blx@error
- {Incompatible package '#1'}
- {The '#1' package and biblatex are incompatible}}
- {}}%
- \docsvlist{%
- amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib,
- cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus,
- mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}%
- \def\blx@langstrings{}%
- % Set up sortlocale defaults
- \ifdefstring\blx@sortlocale{auto}
- {\ifdef\bbl@main@language% babel or polyglossia is loaded
- {\edef\blx@sortlocale{\bbl@main@language}}
- {\def\blx@sortlocale{english}}}
- {}%
- \@ifpackageloaded{polyglossia}
- {% This is required for languages which are never explicitly selected
- % This check because \xpg@loaded is not defined in polyglossia <= v1.42.0
- \ifundef\xpg@loaded
- {\let\xpg@loaded\@empty
- \let\xpg@vloaded\@empty
- \PackageWarningNoLine{biblatex}{Upgrade package 'polyglossia' to >v1.42.0 recommended}}
- {}%
- \def\do#1{\blx@langsetup{#1}}%
- \expandafter\docsvlist\expandafter{\xpg@loaded}%
- \expandafter\docsvlist\expandafter{\xpg@vloaded}%
- \ifboolexpr{
- not test {\iftoggle{blx@autolangbib}}
- and
- not test {\iftoggle{blx@autolangcite}}}
- {\blx@mknoautolang}
- {\blx@mkautolangpoly}}
- {\@ifpackageloaded{babel}
- {% This is required for languages which are never explicitly selected
- \def\do#1{\blx@langsetup{#1}}%
- \expandafter\docsvlist\expandafter{\bbl@loaded}%
- \ifboolexpr{
- not test {\iftoggle{blx@autolangbib}}
- and
- not test {\iftoggle{blx@autolangcite}}}
- {\blx@mknoautolang}
- {\blx@mkautolangbabel}}
- {\blx@mknoautolang}}%
- % These already have defaults set to basically do nothing
- % so if the toggles are true, we need to define again since
- % mkautolang* redefines \blx@beglang
- % In turn, \blx@beglang defines \blx@endlang and so \blx@beglangcite and
- % \blx@endlangcite need redefining inside \blx@beglang after \blx@endlang
- % has been defined.
- \iftoggle{blx@autolangbib}
- {\let\blx@beglangbib\blx@beglang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@beglangcite\blx@beglang}
- {}%
- \csuse{abx@extras@\blx@languagename}%
- \csuse{abx@strings@\blx@languagename}%
- \undef\blx@mkautolangbabel
- \undef\blx@mkautolangpoly
- \undef\blx@mknoautolang
- \ifnum\blx@hyperref=\z@
- \blx@mknohyperref
- \else
- \@ifpackageloaded{hyperref}
- {\blx@mkhyperref}
- {\ifnum\blx@hyperref=\@ne
- \blx@warning@noline{%
- Missing 'hyperref' package.\MessageBreak
- Setting hyperref=false}%
- \fi
- \blx@mknohyperref}%
- \fi
- \providecommand*{\nolinkurl}{\url}%
- \undef\blx@mkhyperref
- \undef\blx@mknohyperref
- \ifundef\TE@hook
- {\let\TE@hook\@empty
- \toggletrue{blx@tempa}%
- \def\do#1{%
- \patchcmd#1%
- {\let\isundefined\TE@undef}
- {\let\isundefined\TE@undef\TE@hook}
- {\togglefalse{blx@tempa}\listbreak}
- {}}%
- \docsvlist{%
- \ifthenelse,% ifthen
- \org@ifthenelse,% babel
- \HyOrg@ifthenelse,% hyperref
- \NROrg@ifthenelse}% nameref
- \iftoggle{blx@tempa}
- {\blx@err@patch{'ifthen' package}}
- {}}
- {}%
- \appto\TE@hook{\blx@TE@hook}%
- \toggletrue{blx@tempa}%
- \def\do#1{%
- \patchcmd#1%
- {\color@begingroup}
- {\color@begingroup\toggletrue{blx@footnote}}
- {\togglefalse{blx@tempa}\listbreak}
- {}}%
- \docsvlist{%
- \@footnotetext,% latex
- \H@@footnotetext,% hyperref
- \V@@footnotetext,% fancyvrb
- \scr@saved@footnotetext,% koma-script 3.x
- \l@dold@footnotetext,% ledmac
- \l@doldold@footnotetext,% ledmac
- \@fntORI}% frenchle
- \iftoggle{blx@tempa}% ams classes
- {\patchcmd\@footnotetext
- {\@makefntext}
- {\toggletrue{blx@footnote}\@makefntext}
- {\togglefalse{blx@tempa}}
- {}}
- {}%
- \@ifclassloaded{memoir}
- {\def\do#1{%
- \patchcmd#1%
- {\color@begingroup}
- {\color@begingroup\toggletrue{blx@footnote}}
- {}
- {}}%
- \docsvlist{%
- \m@mold@footnotetext,%
- \@plainfootnotetext,%
- \@twocolfootnotetext,%
- \@threecolfootnotetext,%
- \@parafootnotetext}%
- \def\do#1{%
- \patchcmd#1%
- {\color@begingroup\@makefntext}
- {\color@begingroup\toggletrue{blx@footnote}\@makefntext}
- {}
- {}}%
- \docsvlist{%
- \@footnotetext,% patch twice
- \H@@footnotetext,% patch twice
- \@plainfootnotetext}}
- {}%
- \iftoggle{blx@tempa}
- {\blx@warning@noline{%
- Patching footnotes failed.\MessageBreak
- Footnote detection will not work}}
- {}%
- \@ifpackageloaded{endnotes}
- {\patchcmd\theendnotes
- {\enoteformat}
- {\toggletrue{blx@footnote}\enoteformat}
- {}
- {\blx@err@patch{'endnotes' package}}}
- {}%
- \@ifpackageloaded{bigfoot}
- {\apptocmd\@makefnstartbox
- {\toggletrue{blx@footnote}}
- {}
- {\blx@err@patch{'bigfoot' package}}}
- {}%
- \@ifpackageloaded{showkeys}
- {\ifdef\SK@
- {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}%
- \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}%
- \ifundef\SK@cite % = 'notcite' disabled
- {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}}
- {}}
- {}}
- {}%
- \apptocmd\@floatboxreset
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}}
- {}
- {\blx@err@patch{floats}}%
- \ifdef\TX@endtabularx % tabularx/memoir
- {\pretocmd\TX@endtabularx
- {\addtocounter{tabx@nest}{1}}% track nested tabularx environments
- {}
- {\blx@err@patch{'tabularx'}}%
- % no need to conditionalise on top-level tabx as the search/replace
- % will only match once anyway
- \patchcmd\TX@endtabularx
- {\edef\TX@ckpt{\cl@@ckpt}}
- {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}%
- \abx@savetrackers}
- {}
- {\blx@err@patch{'tabularx'}}%
- \apptocmd\TX@endtabularx
- {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx
- \abx@cleartrackers
- \fi
- \addtocounter{tabx@nest}{-1}}
- {}
- {\blx@err@patch{'tabularx'}}}
- {}%
- \@ifpackageloaded{csquotes}
- {\@ifpackagelater{csquotes}{2009/05/30}
- {}
- {\blx@error
- {Outdated 'csquotes' package}
- {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak
- I found: '\csuse{ver@csquotes.sty}'}}%
- \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}%
- \@ifpackagelater{csquotes}{2009/08/27}
- {\appto\@blockquote@prehook{\abx@savetrackers}%
- \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}}
- {}%
- \@ifpackagelater{csquotes}{2010/06/09}
- {}
- {\newcommand*{\@quotereset}{}\newcount\@quotereset}}
- {\@ifpackageloaded{babel}
- {\blx@warning@noline{%
- 'babel/polyglossia' detected but 'csquotes' missing.\MessageBreak
- Loading 'csquotes' recommended}}
- {}%
- \newcommand*{\@quotelevel}{}%
- \newcount\@quotelevel
- \newcommand*{\@quotereset}{}%
- \newcount\@quotereset
- \newcommand*{\@setquotesfcodes}{}%
- \let\@setquotesfcodes\relax
- \newrobustcmd*{\initoquote}{\@quotelevel\@ne}%
- \newrobustcmd*{\initiquote}{\@quotelevel\tw@}%
- \newrobustcmd*{\textooquote}{``}%
- \newrobustcmd*{\textcoquote}{''}%
- \newrobustcmd*{\textoiquote}{`\relax}% block ligs
- \newrobustcmd*{\textciquote}{'\relax}% block ligs
- \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}%
- \def\blx@enquote{%
- \ifnum\@quotelevel>\z@
- \expandafter\blx@enquote@ii
- \else
- \expandafter\blx@enquote@i
- \fi}%
- \long\def\blx@enquote@i#1{%
- \begingroup\initoquote
- \textooquote#1\textcoquote
- \endgroup}%
- \long\def\blx@enquote@ii#1{%
- \begingroup\initiquote
- \textoiquote#1\textciquote
- \endgroup}%
- \appto\blx@setsfcodes{%
- \sfcode`\`=\z@
- \sfcode`\'=\z@}}%
- \let\do\noexpand}
-
-\begingroup
-\@makeother\#
-% \relax: gobble newline -> titletoc.sty
-\AtEndPreamble{%
- \addtocontents{toc}{%
- \boolfalse{citerequest}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
- \addtocontents{lof}{%
- \boolfalse{citerequest}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
- \addtocontents{lot}{%
- \boolfalse{citerequest}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
- \patchcmd\addtocontents
- {\string\@writefile}
- {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}%
- \string\@writefile}
- {}
- {\blx@err@patch{\string\addtocontents}}}
-\endgroup
-
-% trick hyperref into believing we're natbib
-\let\NAT@parse\@empty
-% trick showkeys into believing we're havard
-\let\HAR@checkdef\@empty
-
-%% Allocation
-
-\providecommand{\@gobblefive}[5]{}
-
-% Counter to track nested tabularx environemnts so we don't
-% try to patch the commands more than once below as this undefs some
-% macros and an error is thrown
-\newcounter{tabx@nest}
-\setcounter{tabx@nest}{0}
-
-\newcounter{listtotal}
-\def\thelisttotal{\the\c@listtotal}
-\newcounter{listcount}
-\def\thelistcount{\the\c@listcount}
-\newcounter{liststart}
-\def\theliststart{\the\c@liststart}
-\newcounter{liststop}
-\def\theliststop{\the\c@liststop}
-\newcounter{citecount}
-\def\thecitecount{\the\c@citecount}
-\newcounter{citetotal}
-\def\thecitetotal{\the\c@citetotal}
-\newcounter{multicitecount}
-\def\themulticitecount{\the\c@multicitecount}
-\newcounter{multicitetotal}
-\def\themulticitetotal{\the\c@multicitetotal}
-\newcounter{instcount}
-\def\theinstcount{\the\c@instcount}
-\newcounter{maxnames}
-\def\themaxnames{\the\c@maxnames}
-\newcounter{minnames}
-\def\theminnames{\the\c@minnames}
-\newcounter{maxitems}
-\def\themaxitems{\the\c@maxitems}
-\newcounter{minitems}
-\def\theminitems{\the\c@minitems}
-\newcounter{citecounter}
-\def\thecitecount{\the\c@citecounter}
-\newcounter{savedcitecounter}
-\def\thecitecount{\the\c@savedcitecounter}
-\newcounter{uniquelist}
-\def\theuniquelist{\the\c@uniquelist}
-\newcounter{uniquename}
-\def\theuniquename{\the\c@uniquename}
-\newcounter{refsection}
-\def\therefsection{\the\c@refsection}
-\newcounter{refsegment}
-\def\therefsegment{\the\c@refsegment}
-\newcounter{maxextratitle}
-\def\themaxextratitle{\the\c@maxextratitle}
-\newcounter{maxextratitleyear}
-\def\themaxextratitleyear{\the\c@maxextratitleyear}
-\newcounter{maxextrayear}
-\def\themaxextrayear{\the\c@maxextrayear}
-\newcounter{maxextraalpha}
-\def\themaxextraalpha{\the\c@maxextraalpha}
-\newcounter{abbrvpenalty}
-\def\theabbrvpenalty{\the\c@abbrvpenalty}
-\newcounter{highnamepenalty}
-\def\thehighnamepenalty{\the\c@highnamepenalty}
-\newcounter{lownamepenalty}
-\def\thelownamepenalty{\the\c@lownamepenalty}
-\newcounter{maxparens}
-\def\themaxparens{\the\c@maxparens}
-\newcounter{parenlevel}
-\def\theparenlevel{\the\c@parenlevel}
-
-\newcount\blx@tempcnta
-\newcount\blx@tempcntb
-\newcount\blx@tempcntc
-\newcount\blx@maxsection
-\expandafter\newcount\csname blx@maxsegment@0\endcsname
-\newcount\blx@notetype
-\newcount\blx@parenlevel@text
-\newcount\blx@parenlevel@foot
-\expandafter\newcount\csname blx@sectionciteorder@0\endcsname
-
-\def\blx@uniquename{0}
-\def\blx@uniquelist{0}
-\def\blx@maxbibnames{0}
-\def\blx@minbibnames{0}
-\def\blx@maxcitenames{0}
-\def\blx@mincitenames{0}
-\def\blx@maxbibnames@type{\blx@maxbibnames}
-\def\blx@minbibnames@type{\blx@minbibnames}
-\def\blx@maxcitenames@type{\blx@maxcitenames}
-\def\blx@mincitenames@type{\blx@mincitenames}
-\def\blx@maxalphanames{0}
-\def\blx@minalphanames{0}
-\def\blx@maxitems{0}
-\def\blx@minitems{0}
-\def\blx@maxitems@type{\blx@maxitems}
-\def\blx@minitems@type{\blx@minitems}
-
-\newlength{\labelnumberwidth}
-\newlength{\labelalphawidth}
-\newlength{\biblabelsep}
-\ifdef\bibitemsep % memoir
- {}
- {\newlength{\bibitemsep}}
-\newlength{\bibnamesep}
-\newlength{\bibinitsep}
-\newlength{\bibparsep}
-\newlength{\bibhang}
-
-\newbool{sourcemap}
-\newbool{citetracker}
-\newbool{pagetracker}
-\newbool{backtracker}
-\newbool{citerequest}
-\booltrue{citerequest}
-
-\newtoggle{blx@tempa}
-\newtoggle{blx@tempb}
-\newtoggle{blx@runltx}
-\newtoggle{blx@runbiber}
-\newtoggle{blx@block}
-\newtoggle{blx@unit}
-\newtoggle{blx@skipentry}
-\newtoggle{blx@insert}
-\newtoggle{blx@lastins}
-\newtoggle{blx@keepunit}
-\newtoggle{blx@debug}
-\newtoggle{blx@sortcase}
-\newtoggle{blx@sortupper}
-\newtoggle{blx@autolangbib}
-\newtoggle{blx@autolangcite}
-\newtoggle{blx@clearlang}
-\newtoggle{blx@defernumbers}
-\newtoggle{blx@omitnumbers}
-\newtoggle{blx@footnote}
-\newtoggle{blx@labelalpha}
-\newtoggle{blx@labelnumber}
-\newtoggle{blx@labeltitle}
-\newtoggle{blx@labeltitleyear}
-\newtoggle{blx@labeldate}
-\newtoggle{blx@natbib}
-\newtoggle{blx@mcite}
-\newtoggle{blx@loadfiles}
-\newtoggle{blx@singletitle}
-\newtoggle{blx@terseinits}
-\newtoggle{blx@giveninits}
-\newtoggle{blx@sortgiveninits}
-\newtoggle{blx@useprefix}
-\newtoggle{blx@addset}
-\newtoggle{blx@setonly}
-\newtoggle{blx@dataonly}
-\newtoggle{blx@skipbib}
-\newtoggle{blx@skipbiblist}
-\newtoggle{blx@skiplab}
-\newtoggle{blx@citation}
-\newtoggle{blx@bibliography}
-\newtoggle{blx@citeindex}
-\newtoggle{blx@bibindex}
-\newtoggle{blx@localnumber}
-\newtoggle{blx@refcontext}
-
-% Special fields which need resolution using the information provided by biber
-\listadd\abx@rfields{labeltitle}
-\def\abx@dorfields{%
- \dolistcsloop{abx@rfields}%
-}
-% Just in case we ever have non-name lists to instantiate
-%\listadd\abx@rlists{}
-% \def\abx@dorlists{%
-% \dolistcsloop{abx@rlists}%
-% }
-\listadd\abx@rnames{labelname}
-\def\abx@dornames{%
- \dolistcsloop{abx@rnames}%
-}
-
-% Used to track sorting name key specifications
-\global\let\blx@biber@sortingnamekeyspecs\@empty
-
-% Initialise some lists which track changing citations/sortschemes
-% etc. between runs
-\global\let\blx@cites\@empty
-\global\let\blx@sortnamekeyschemes\@empty
-\global\let\blx@lastsortnamekeyschemes\@empty
-\global\let\blx@sortschemes\@empty
-\global\let\blx@lastsortschemes\@empty
-\global\let\blx@biblists\@empty
-\global\let\blx@lastbiblists\@empty
-\global\let\blx@lastcites\@empty
-\global\let\blx@localnumaux\@empty
-
-\newread\blx@bcfin
-\newwrite\blx@bcfout
-
-\def\blx@onlypreamble#1{%
- \gappto\blx@dopreamblecmds{\do#1}}
-
-\def\blx@dopreamblecmds{%
- \do\blx@dopreamblecmds
- \do\blx@onlypreamble}
-
-%% Initialization
-\def\blx@blxinit{%
- \let\blx@blxinit\relax
- \blx@initunit}
-
-\def\blx@secinit{%
- \csgdef{blx@sections@\the\c@refsection}{true}% just to say we have a section for tests later
- \ifcsundef{blx@bsee@\the\c@refsection}
- {\global\cslet{blx@bsee@\the\c@refsection}\@empty}
- {}%
- \ifcsundef{blx@fsee@\the\c@refsection}
- {\global\cslet{blx@fsee@\the\c@refsection}\@empty}
- {}%
- \blx@ibidreset@force
- \blx@idemreset@force
- \blx@opcitreset@force
- \blx@loccitreset@force
- % List to track all aliases in a section. We need to output all aliases
- % to the .bcf every time so that they are visible to biber
- % Reset only if undefined
- \ifcsundef{blx@keyaliases@\the\c@refsection}
- {\global\cslet{blx@keyaliases@\the\c@refsection}\@empty}
- {}%
- \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment}
- {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty}
- {}}
-
-%% Auxiliary commands
-
-\protected\def\blx@safe@actives{%
- \let\blx@if@safe@actives\if@safe@actives
- \let\if@safe@actives\iftrue}
-
-\protected\def\blx@rest@actives{%
- \let\if@safe@actives\blx@if@safe@actives}
-
-\protected\def\blx@regimc#1{%
- \xappto\blx@blxinit{%
- \let\noexpand#1\expandafter\noexpand\csname
- blx@imc@\expandafter\@gobble\string#1\endcsname}}
-
-\protected\def\blx@regimcs#1{\blx@regimcs@i#1&}
-\def\blx@regimcs@i#1{%
- \ifx#1&\else
- \blx@regimc#1%
- \expandafter\blx@regimcs@i
- \fi}
-
-% {<field>} => \do{<item1>}\do{<item2>}...
-\def\blx@imc@docsvfield#1{%
- \blx@imc@iffieldundef{#1}
- {}
- {\expandafter\expandafter\expandafter\docsvlist
- \expandafter\expandafter\expandafter{%
- \csname abx@field@#1\endcsname}}}
-
-% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}...
-\def\blx@imc@forcsvfield#1#2{%
- \blx@imc@iffieldundef{#2}
- {}
- {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i
- \expandafter\expandafter\expandafter{%
- \csname abx@field@#2\endcsname}{#1}}}
-
-\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}}
-
-\blx@regimcs{\docsvfield \forcsvfield}
-
-% {<list>|<listmacro>}
-\protected\long\def\blx@listloop#1{%
- \expandafter\blx@listloop@i#1|&}
-\long\def\blx@listloop@i#1|{%
- \ifblank{#1}
- {\blx@break}
- {\blx@do{#1}\blx@listloop@i}}
-
-\long\def\blx@break#1&{%
- \blx@done
- \undef\blx@do
- \undef\blx@done}
-
-% {<listmacro>}{<listcsname>} => matches in <listmacro>
-\protected\def\blx@filter#1#2{%
- \def\do##1{%
- \ifinlistcs{##1}{#2}
- {\listadd#1{##1}}
- {}}%
- \blx@runfilter#1}
-
-% {<listmacro>}{<listcsname>} => matches in <listmacro>
-% Slightly odd use of filtering to do citation sorting.
-% Same as blx@filter but it keeps \tempcnta in step with the
-% resulting number of things in the filtered list. This is
-% because \tempcnta is used to set citetotal - this use
-% of filtering for cite sorting has the side-effect of stripping
-% duplicates like \cite{foo,foo} but we need then to keep citetotal
-% in sync.
-\protected\def\blx@filtercitesort#1#2{%
- \blx@tempcnta\z@
- \def\do##1{%
- \ifinlistcs{##1}{#2}
- {\listadd#1{##1}%
- \advance\blx@tempcnta\@ne}
- {}}%
- \blx@runfilter#1}
-
-% {<listmacro>}{<listcsname>} => neg. matches in <listmacro>
-\protected\def\blx@notfilter#1#2{%
- \def\do##1{%
- \ifinlistcs{##1}{#2}
- {}
- {\listadd#1{##1}}}%
- \blx@runfilter#1}
-
-\def\blx@runfilter#1{%
- \begingroup\edef#1{\endgroup
- \unexpanded{\let#1\@empty\dolistloop}{#1}}%
- #1\let\do\noexpand}
-
-% {<code>}{<string>} => <code>{<string>}
-\protected\def\blx@xsanitizeafter#1#2{%
- \begingroup
- \abx@hook@xsanitize
- \def\blx@tempa{\endgroup#1}%
- \edef\blx@tempb{#2}%
- \expandafter\blx@tempa
- \expandafter{\detokenize\expandafter{\blx@tempb}}}
-
-\def\abx@hook@xsanitize{%
- \blx@safe@actives
- \let\protect\string}
-
-% {<code>}{<string>} => <code>{<string>}
-\begingroup
-\catcode`\<=\active
-\catcode`\>=\active
-\catcode`\&=\active
-\catcode`\"=\active
-\catcode`\'=\active
-\protected\gdef\blx@xmlsanitizeafter#1#2{%
- \begingroup
- \abx@hook@xsanitize
- \def\blx@tempa{\endgroup#1}%
- \edef\blx@tempb{#2}%
- \let\do\@makeother
- \dospecials
- \catcode`\<=\active
- \catcode`\>=\active
- \catcode`\&=\active
- \catcode`\"=\active
- \catcode`\'=\active
- \edef<{\string&lt\string;}%
- \edef>{\string&gt\string;}%
- \edef&{\string&amp\string;}%
- \edef"{\string&quot\string;}%
- \edef'{\string&apos\string;}%
- \endlinechar\m@ne
- \everyeof{\noexpand}%
- \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}%
- \expandafter\blx@tempa
- \expandafter{\detokenize\expandafter{\blx@tempb}}}
-\endgroup
-
-% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>}
-\protected\long\def\blx@inputonce#1#2#3#4#5#6{%
- \ifcsundef{blx@file@#1}
- {\blx@info@noline{Trying to load #2..}%
- \IfFileExists{#1}
- {\blx@info@noline{... file '#1' found}%
- \listxadd\blx@list@req@stat{#1}%
- #3\@@input\@filef@und#4#5}
- {\blx@info@noline{... file '#1' not found}#6}%
- \global\csdef{blx@file@#1}{}%
- \@addtofilelist{#1}}
- {#5}}
-
-% {<write>}{<precode>}{<string>}
-\protected\def\blx@auxwrite#1#2#3{%
- \if@filesw
- \begingroup
- \blx@safe@actives
- \let\protect\string
- #2%
- \immediate\write#1{#3}%
- \endgroup
- \fi}
-
-% {<file>}{<signature>}{<true>}{<false>}
-\def\blx@ifsigned#1#2{%
- \begingroup
- \let\blx@tempa\@firstoftwo
- \edef\blx@tempb{\csuse{blx@sig@#2}}%
- \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}%
- \openin\blx@bcfin #1.#2\relax
- \ifeof\blx@bcfin
- \else
- \endlinechar\m@ne
- \readline\blx@bcfin to \blx@tempc
- \ifeof\blx@bcfin
- \else
- \ifx\blx@tempb\blx@tempc
- \readline\blx@bcfin to \blx@tempc
- \edef\blx@tempb{\csuse{blx@ver@#2}}%
- \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}%
- \ifx\blx@tempb\blx@tempc
- \else
- \blx@warning@noline{%
- File '#1.#2' is wrong format version - expected \blx@bblversion}
- \fi
- \else
- \blx@error
- {File '#1.#2' not created by biblatex}
- {This file was apparently not created by biblatex.
- Rename it or\MessageBreak move it to a location were
- TeX will not find it. If this error\MessageBreak
- persists, consider redefining \string\blxauxsuffix.%
- See the biblatex\MessageBreak manual for details}%
- \let\blx@tempa\@secondoftwo
- \fi
- \fi
- \fi
- \closein\blx@bcfin
- \expandafter\endgroup\blx@tempa}
-
-\edef\blx@sig@bbl{\@percentchar\space $ biblatex auxiliary file $}
-\edef\blx@ver@bbl{\@percentchar\space $ biblatex bbl format version \blx@bblversion\space $}
-\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}}
-\edef\blx@ver@bcf{%
- \detokenize{<bcf:controlfile version="}\blx@bcfversion
- \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}}
-
-% {<true>}{<false>}
-\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{%
- test {\ifdefstring\inputencodingname{utf8}}
- or
- test {\ifdefstring\inputencodingname{utf8x}}
- or
- test {\ifdefstring\inputencodingname{lutf8}}
- or
- ( test {\ifundef\inputencodingname}
- and
- ( not test {\ifundef\XeTeXrevision}
- or
- not test {\ifundef\luatexversion}
- )
- )
-}}
-
-%% User feedback
-
-\protected\def\blx@error#1#2{%
- \begingroup
- \blx@safe@actives
- \PackageError{biblatex}{#1}{#2.}%
- \endgroup}
-
-\protected\def\blx@warning@noline#1{%
- \begingroup
- \blx@safe@actives
- \PackageWarningNoLine{biblatex}{#1}%
- \endgroup}
-\let\blx@warning\blx@warning@noline
-\AtEndOfPackage{
- \protected\def\blx@warning#1{%
- \begingroup
- \blx@safe@actives
- \PackageWarning{biblatex}{#1}%
- \endgroup}}
-
-\protected\def\blx@warning@entry#1{%
- \ifdef\abx@field@entrykey
- {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}}
- {\blx@warning{#1}}}
-
-\protected\def\blx@info@noline#1{%
- \begingroup
- \blx@safe@actives
- \PackageInfo{biblatex}{#1\@gobble}%
- \endgroup}
-\let\blx@info\blx@info@noline
-\AtEndOfPackage{
- \protected\def\blx@info#1{%
- \begingroup
- \blx@safe@actives
- \PackageInfo{biblatex}{#1}%
- \endgroup}}
-
-\let\blx@noline\@gobble
-\AtEndOfPackage{\let\blx@noline\@empty}
-\def\blx@imc@BibliographyWarning{\blx@warning@entry}
-\blx@regimc\BibliographyWarning
-
-\protected\def\abx@missing#1{%
- \mbox{\reset@font\bfseries#1}}
-
-\def\blx@err@patch#1{%
- \blx@error
- {Patching #1 failed}
- {This is an internal issue typically caused by a
- conflict\MessageBreak between biblatex and some
- other package. Modifying\MessageBreak the package
- loading order may fix the problem}}
-
-\def\blx@err@nolang#1{%
- \blx@error
- {Language '#1' not found}
- {The localization module for '#1' could not be found}}
-
-\def\blx@err@invarg#1#2{%
- \blx@error
- {Argument '#1' invalid}
- {\ifblank{#2}
- {The argument you have supplied is invalid.\MessageBreak
- See the biblatex manual for details}
- {#2}}}
-
-\def\blx@err@invopt#1#2{%
- \blx@error
- {Option '#1' invalid}
- {\ifblank{#2}
- {The option you have supplied is invalid.\MessageBreak
- See the biblatex manual for valid option keys and
- possible values}
- {#2}}}
-
-\def\blx@err@confopt#1#2{%
- \blx@error
- {Conflicting options\ifblank{#1}{}{ (#1)}}
- {\ifblank{#2}
- {The option you have supplied conflicts with another one.\MessageBreak
- See the biblatex manual for valid option keys and possible values}
- {#2}}}
-
-\def\blx@err@optdef#1{%
- \blx@error
- {Conflicting options}
- {The option '#1' is already defined}}
-
-\def\blx@err@nodocdiv#1{%
- \blx@error
- {\@backslashchar#1 not provided by class}
- {The document class does not seems to support #1s}}
-
-\def\blx@err@nosec#1{%
- \blx@error
- {Section '#1' not found}
- {The reference section '#1' could not be found}}
-
-\def\blx@err@nosort#1{%
- \blx@error
- {Sorting scheme '#1' not found}
- {The sorting scheme '#1' does not seem to have been defined anywhere}}
-
-\def\blx@err@secfirst{%
- \blx@error
- {'section' not first filter}
- {When passing multiple filter options,
- the 'section' filter must be given first}}
-
-\protected\def\blx@err@nestcite{%
- \blx@error
- {Nested citation command}
- {Citation commands may not be nested}}
-
-\def\blx@err@nestenv#1{%
- \blx@error
- {Nested '#1' environment}
- {This environment may not be nested}}
-
-\protected\def\blx@err@citecmd#1{%
- \begingroup
- \escapechar\m@ne
- \blx@error
- {Command '\@backslashchar\string#1' undefined}
- {The citation command '\@backslashchar\string#1'
- has not been defined\MessageBreak by the
- selected citation style}%
- \endgroup}
-
-\def\blx@err@endnote#1{%
- \blx@error
- {Missing or incomplete endnote support}
- {There does not seem to be endnote support available\MessageBreak
- or the available support is incomplete.\MessageBreak
- If you continue, I will fall back to '\string#1'}%
- #1}
-
-\def\blx@err@matchparen#1{%
- \blx@error
- {Unbalanced parentheses or brackets}
- {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak
- This error is triggered if \string\bibopenparen\space and
- \string\bibcloseparen\MessageBreak or
- \string\bibopenbracket\space and \string\bibclosebracket\space
- are unbalanced\MessageBreak or mismatched}}
-
-\def\blx@err@nestparen#1{%
- \blx@error
- {Too deeply nested parentheses or brackets}
- {#1 nested too deeply%
- \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak
- This error may also be triggered if \string\mkbibparens\MessageBreak
- or \string\mkbibbrackets\space are nested too deeply}}
-
-\def\blx@err@filter{%
- \blx@error
- {Invalid filter expression}
- {The filter expression you have supplied is invalid.\MessageBreak
- See the biblatex manual for details}}
-
-\def\blx@warn@nohyph#1{%
- \blx@warning{No hyphenation patterns for '#1'}}
-
-\protected\def\blx@warn@citecmd#1#2{%
- \blx@warning{%
- '\string#1' not defined by citation style.\MessageBreak
- Falling back to '\string#2'}%
- #2}
-
-\protected\def\blx@warn@nostring#1{%
- \blx@warning@entry{Bibliography string '#1' undefined}%
- \abx@missing{#1}}
-
-\def\blx@warn@conflopt#1{%
- \blx@warning{Conflicting options.\MessageBreak#1}}
-
-\def\blx@warn@badoptdt#1{%
- \blx@warning{Invalid option datatype '#1'.\MessageBreak Defaulting to 'boolean'}}
-
-\def\blx@warn@depropt#1{%
- \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}}
-
-\def\blx@warn@bibempty{%
- \@latex@warning{Empty bibliography}}
-
-\def\blx@warn@biblistempty#1{%
- \@latex@warning{Empty biblist '#1'}}
-
-\def\blx@inf@refsec{%
- \blx@info{Reference section=\the\c@refsection}}%
-
-\def\blx@inf@refseg{%
- \ifnum\c@refsection=\z@
- \blx@info{Reference segment=\the\c@refsegment}%
- \else
- \blx@info{%
- Reference section/segment=%
- \the\c@refsection/\the\c@refsegment}%
- \fi}
-
-\def\blx@inf@creset{%
- \blx@info{Resetting trackers}}%
-
-\def\blx@msg@cundef#1{%
- Citation '#1' undefined}
-\def\blx@msg@cundefon#1{%
- Citation '#1' on page \the\c@page\space undefined}
-
-% Dummy as backend is biber by default. Some style may still use this to
-% check though.
-\newrobustcmd*{\RequireBiber}[1][2]{}
-
-% \blx@list@active active aux files (basename)
-% [internal list]
-% \blx@list@inactive inactive aux files (basename)
-% [internal list]
-% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections)
-% aux file (basename) -> bib files (full)
-% [internal list]
-
-\let\blx@list@active\@empty
-\let\blx@list@inactive\@empty
-\listeadd\blx@list@inactive{\jobname}
-
-\protected\def\blx@regbibfiles#1#2{%
- \forlistloop{\blx@regbibfile{#1}}{#2}}
-
-\def\blx@regbibfile#1#2{%
- \ifcsundef{blx@res@loca@#2}
- {\blx@regbibfile@i{#1}{#2}}
- {\ifcsstring{blx@res@loca@#2}{local}
- {\blx@regbibfile@i{#1}{#2}}
- {}}}
-
-\def\blx@regbibfile@i#1#2{%
- \ifinlistcs{#2}{blx@list@bibfiles@#1}
- {}
- {\listcsxadd{blx@list@bibfiles@#1}{#2}}}
-
-\def\blx@check@logreq{%
- \begingroup
- \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{%
- \provides[type=dynamic]{
- \file{\jobname.bcf}
- }
- \requires[type=dynamic]{
- \file{\jobname.bbl}
- }
- \ifdef\blx@list@req@edit
- {\requires[type=editable]{
- \forlistloop\file\blx@list@req@edit
- }}
- {}
- \ifdef\blx@list@req@stat
- {\requires[type=static]{
- \forlistloop\file\blx@list@req@stat
- }}
- {}
- }%
- \logrequest[package=biblatex,priority=5,active={{\iftoggle{blx@runbiber}{1}{0}}}]{%
- \generic{biber}
- \cmdline{
- \binary{biber}
- \infile{\jobname}
- }
- \input{
- \file{\jobname.bcf}
- }
- \output{
- \file{\jobname.bbl}
- }
- \provides[type=dynamic]{
- \file{\jobname.bbl}
- }
- \requires[type=dynamic]{
- \file{\jobname.bcf}
- }
- \ifcsdef{blx@list@bibfiles@\jobname}
- {\requires[type=editable]{
- \def\do{\file}
- \dolistcsloop{blx@list@bibfiles@\jobname}
- }}
- {}
- }%
- \endgroup}
-
-\def\blx@logreq@active#1{%
- \ifblank{#1}
- {}
- {\@latex@warning{#1}}%
- \blx@rerun@latex
- \blx@rerun@biber}
-
-\def\blx@rerun@latex{%
- \G@refundefinedtrue
- \global\toggletrue{blx@runltx}%
- \global\let\blx@rerun@latex\relax}
-
-\def\blx@rerun@biber{%
- \global\toggletrue{blx@runbiber}%
- \global\let\blx@rerun@biber\relax}
-
-\let\blx@checksum@old\@empty
-\let\blx@checksum@new\@empty
-\let\blx@pagesum@old\@empty
-\let\blx@pagesum@new\@empty
-
-\def\blx@checksum#1#2#3{%
- \begingroup
- \blx@tempcnta\the\numexpr0#2*0#3\relax
- \blx@tempcntb\blx@tempcnta
- \divide\blx@tempcntb10
- \multiply\blx@tempcntb10
- \advance\blx@tempcnta-\blx@tempcntb
- \xdef#1{#1\the\blx@tempcnta}%
- \endgroup}
-
-\def\blx@addchecksum{\blx@checksum\blx@checksum@old}
-\def\blx@addpagesum{\blx@checksum\blx@pagesum@old}
-\AtEndDocument{%
- \def\blx@addchecksum{\blx@checksum\blx@checksum@new}%
- \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}}
-
-\protected\def\blx@check@rerun{%
- \begingroup
- \blx@tempcnta\z@
- \iftoggle{blx@runltx}
- {\blx@tempcnta\@ne}
- {\ifx\blx@checksum@old\blx@checksum@new
- \ifx\blx@pagesum@old\blx@pagesum@new
- \else
- \blx@tempcnta\@ne
- \fi
- \else
- \blx@tempcnta\@ne
- \fi}%
- \iftoggle{blx@runbiber}
- {\advance\blx@tempcnta\tw@}
- {}%
- \ifcase\blx@tempcnta
- \or
- \blx@rerun@latex
- \blx@warning@noline{%
- Please rerun LaTeX%
- \ifx\blx@pagesum@old\blx@pagesum@new\else
- .\MessageBreak Page breaks have changed%
- \fi}%
- \else
- \blx@rerun@latex
- \blx@warn@auxlist
- \fi
- \endgroup}
-
-\def\blx@warn@auxlist{%
- \begingroup
- \edef\blx@tempa{%
- Please (re)run Biber on the file:\MessageBreak
- \jobname}%
- \blx@warning@noline{%
- \blx@tempa\MessageBreak
- and rerun LaTeX afterwards}%
- \endgroup}
-
-\AfterEndDocument{%
- \blx@check@rerun
- \blx@check@logreq}
-
-%% Punctuation and capitalization
-
-% 1001 prefix sep for names (e.g. d'Argent ... \printnames only)
-% 1002 abbreviation period (dot)
-% 1003/1250 comma
-% 1004/1500 semicolon
-% 1005/2000 colon
-% 1006/3000 period
-% 1007/3001 exclamation mark
-% 1008/3002 question mark
-% 1009 suppress punctuation
-% 1010 new paragaph
-
-\mathchardef\blx@sf@prefixchar=1001% e.g. apostrophe or equivalent for prefix handling
-\mathchardef\blx@sf@dot=1002
-\mathchardef\blx@sf@comma=1003
-\mathchardef\blx@sf@semicolon=1004
-\mathchardef\blx@sf@colon=1005
-\mathchardef\blx@sf@period=1006
-\mathchardef\blx@sf@exclam=1007
-\mathchardef\blx@sf@question=1008
-\mathchardef\blx@sf@nopunct=1009
-\mathchardef\blx@sf@par=1010
-\mathchardef\blx@sf@threshold@low=1002
-\mathchardef\blx@sf@threshold@high=1009
-
-\csdef{blx@sf@1250}{\the\blx@sf@comma}
-\csdef{blx@sf@1500}{\the\blx@sf@semicolon}
-\csdef{blx@sf@2000}{\the\blx@sf@colon}
-\csdef{blx@sf@3000}{\the\blx@sf@period}
-\csdef{blx@sf@3001}{\the\blx@sf@exclam}
-\csdef{blx@sf@3002}{\the\blx@sf@question}
-
-\csdef{blx@pm@,}{comma}
-\csdef{blx@pm@;}{semicolon}
-\csdef{blx@pm@:}{colon}
-\csdef{blx@pm@.}{period}
-\csdef{blx@pm@!}{exclam}
-\csdef{blx@pm@?}{question}
-
-\def\blx@setsfcodes{%
- \let\blx@setsfcodes\relax
- \let\frenchspacing\blx@setfrcodes
- \let\nonfrenchspacing\blx@setencodes
- \ifnum\sfcode`\.>2000
- \blx@setencodes
- \else
- \blx@setfrcodes
- \fi
- \@setquotesfcodes
- \sfcode`\(=\z@
- \sfcode`\)=\z@
- \sfcode`\[=\z@
- \sfcode`\]=\z@
- \sfcode`\<=\z@
- \sfcode`\>=\z@}
-
-\def\blx@setfrcodes{%
- \ifnum\sfcode`\A=\@m
- \else
- \blx@setazcodes
- \fi
- \sfcode`\,=\blx@sf@comma
- \sfcode`\;=\blx@sf@semicolon
- \sfcode`\:=\blx@sf@colon
- \sfcode`\.=\blx@sf@period
- \sfcode`\!=\blx@sf@exclam
- \sfcode`\?=\blx@sf@question
-}
-
-\def\blx@setencodes{%
- \sfcode`\,=1250
- \sfcode`\;=1500
- \sfcode`\:=2000
- \sfcode`\.=3000
- \sfcode`\!=3001
- \sfcode`\?=3002
-}
-
-% Defining characters that count as prefices in names like d'Argent
-% Code from moewe
-\let\blx@prefchars\@empty
-
-\def\blx@defprefchars@loop#1{%
- \ifx#1\relax
- \else
- \listadd{\blx@prefchars}{#1}%
- \expandafter\blx@defprefchars@loop
- \fi}
-
-\def\blx@defprefchars#1{%
- \expandafter\blx@defprefchars@loop\detokenize{#1}\relax}
-
-\newrobustcmd*{\DeclarePrefChars}{%
- \@ifstar
- {\blx@defprefchars}
- {\let\blx@prefchars\@empty
- \blx@defprefchars}}
-\DeclarePrefChars{'}
-
-\protected\def\blx@imc@ifprefchar{%
- \ifhmode
- \begingroup
- \ifnum\spacefactor=\blx@sf@prefixchar
- \endgroup
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \endgroup
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@secondoftwo
- \fi}
-
-\blx@regimcs{\ifprefchar}
-
-\def\blx@namecodes{%
- \ifnum\sfcode`\A=\@m
- \else
- \blx@setazcodes
- \fi
- \def\do##1{\sfcode`##1=\blx@sf@prefixchar}%
- \dolistloop\blx@prefchars
-}
-
-\begingroup
-\let\blx@setazcodes\@empty
-\def\blx@tempa{%
- \xdef\blx@setazcodes{%
- \blx@setazcodes
- \sfcode\the\blx@tempcnta=\@m}
- \ifnum\blx@tempcnta<\blx@tempcntb
- \advance\blx@tempcnta\@ne
- \expandafter\blx@tempa
- \fi}
-\blx@tempcnta`\A
-\blx@tempcntb`\Z
-\blx@tempa
-\ifnum\inputlineno=\m@ne\else
- \blx@tempcnta"80
- \blx@tempcntb"9C
- \blx@tempa
- \blx@tempcnta"C0
- \blx@tempcntb"DF
- \blx@tempa
-\fi
-\endgroup
-
-\def\blx@spacefactor{%
- \ifhmode
- \ifcsundef{blx@sf@\the\spacefactor}
- {\the\spacefactor}
- {\csname blx@sf@\the\spacefactor\endcsname}%
- \else
- \the\blx@sf@par
- \fi}
-
-\protected\def\blx@leavevmode{%
- \ifhmode
- \else
- \leavevmode\spacefactor\blx@sf@par
- \fi}
-
-\protected\def\blx@leavevmode@cite{%
- \ifhmode
- \ifnum\spacefactor=\blx@sf@par
- \else
- \spacefactor\@m
- \fi
- \else
- \leavevmode
- \fi}
-
-\protected\def\blx@imc@setpunctfont#1{%
- \blx@ifpuncthook
- {\gdef\abx@puncthook{%
- \ifdim\lastkern>\z@\unkern\fi
- \blx@imc@resetpunctfont#1}}
- {}}
-\protected\def\blx@imc@resetpunctfont{%
- \blx@ifpuncthook
- {\global\let\abx@puncthook\@firstofone}
- {}}
-
-\protected\def\blx@setpostpunct#1{%
- \blx@ifuspunct
- {\global\let\blx@postpunct\blx@dopostpunct
- \ifdef\blx@thepostpunct
- {\gappto\blx@thepostpunct{#1}}
- {\gdef\blx@thepostpunct{#1}}}
- {}}
-
-\def\blx@dopostpunct{%
- \blx@thepostpunct
- \global\let\blx@postpunct\@empty
- \global\undef\blx@thepostpunct}
-
-\protected\def\blx@postpunct@agroup{%
- \aftergroup\blx@postpunct
- \let\blx@postpunct@agroup\@empty}
-
-% {<characters>}
-
-\newrobustcmd*{\DeclareCapitalPunctuation}[1]{%
- \cslet{blx@cap@\the\blx@sf@par}\@empty
- \csundef{blx@cap@\the\blx@sf@comma}%
- \csundef{blx@cap@\the\blx@sf@semicolon}%
- \csundef{blx@cap@\the\blx@sf@colon}%
- \csundef{blx@cap@\the\blx@sf@period}%
- \csundef{blx@cap@\the\blx@sf@exclam}%
- \csundef{blx@cap@\the\blx@sf@question}%
- \ifblank{#1}
- {}
- {\expandafter\blx@defcapstring\detokenize{#1}\relax}}
-
-\def\blx@defcapstring#1{%
- \ifx#1\relax
- \else
- \begingroup
- \blx@setfrcodes
- \ifcsdef{blx@pm@#1}
- {\expandafter\endgroup
- \expandafter\let
- \csname blx@cap@\the\sfcode`#1\endcsname\@empty}
- {\blx@warning{Ignoring invalid punctuation mark '#1'}%
- \endgroup}%
- \expandafter\blx@defcapstring
- \fi}
-
-% {<characters>}
-
-\newrobustcmd*{\DeclareQuotePunctuation}[1]{%
- \csdef{blx@qp@comma}{\blx@postpunct}%
- \csdef{blx@qp@semicolon}{\blx@postpunct}%
- \csdef{blx@qp@colon}{\blx@postpunct}%
- \csdef{blx@qp@period}{\blx@postpunct}%
- \csdef{blx@qp@exclam}{\blx@postpunct}%
- \csdef{blx@qp@question}{\blx@postpunct}%
- \cslet{blx@pq@comma}\@empty
- \cslet{blx@pq@semicolon}\@empty
- \cslet{blx@pq@colon}\@empty
- \cslet{blx@pq@period}\@empty
- \cslet{blx@pq@exclam}\@empty
- \cslet{blx@pq@question}\@empty
- \let\blx@quotepunct\@empty
- \ifblank{#1}
- {\let\blx@ifuspunct\@secondoftwo}
- {\let\blx@ifuspunct\@firstoftwo
- \expandafter\blx@defquotepunct\detokenize{#1}&}}
-
-\def\blx@defquotepunct#1{%
- \ifx&#1\relax
- \else
- \ifcsdef{blx@pm@#1}
- {\appto\blx@quotepunct{#1}%
- \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty
- \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}}
- {\blx@warning{Ignoring invalid punctuation mark '#1'}}%
- \expandafter\blx@defquotepunct
- \fi}
-
-% {<mark>}{<characters>}
-
-\newrobustcmd*{\DeclarePunctuationPairs}[2]{%
- \ifcsdef{blx@sf@\detokenize{#1}}
- {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@prefixchar
- \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct
- \expandafter\blx@defpunctpairs
- \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}%
- \else
- \blx@err@invarg{\detokenize{#1}{}}%
- \fi
- \else
- \blx@err@invarg{\detokenize{#1}{}}%
- \fi}
- {\blx@err@invarg{\detokenize{#1}{}}}}
-
-\def\blx@defpunctpairs#1#2{%
- \blx@undefpair{#1}{\the\blx@sf@dot}%
- \blx@undefpair{#1}{\the\blx@sf@comma}%
- \blx@undefpair{#1}{\the\blx@sf@semicolon}%
- \blx@undefpair{#1}{\the\blx@sf@colon}%
- \blx@undefpair{#1}{\the\blx@sf@period}%
- \blx@undefpair{#1}{\the\blx@sf@exclam}%
- \blx@undefpair{#1}{\the\blx@sf@question}%
- \ifblank{#2}
- {}
- {\begingroup
- \def\blx@tempa{#1}%
- \let\blx@tempb\@empty
- \blx@setfrcodes
- \sfcode`\*=\blx@sf@dot
- \expandafter\blx@defpair\detokenize{#2}&%
- \expandafter\endgroup\blx@tempb}}
-
-\def\blx@defpair#1{%
- \ifx&#1%
- \else
- \ifnum\the\sfcode`#1>\blx@sf@prefixchar
- \ifnum\the\sfcode`#1<\blx@sf@nopunct
- \eappto\blx@tempb{%
- \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}%
- \else
- \blx@err@invarg{#1}{}%
- \fi
- \else
- \blx@err@invarg{#1}{}%
- \fi
- \expandafter\blx@defpair
- \fi}
-
-\def\blx@undefpair#1#2{%
- \ifcsdef{blx@pp@#1@#2}
- {\csundef{blx@pp@#1@#2}}
- {}}
-
-\protected\def\blx@resetpunct{%
- \DeclareCapitalPunctuation{.!?}%
- \DeclarePunctuationPairs{dot}{}%
- \DeclarePunctuationPairs{comma}{*!?}%
- \DeclarePunctuationPairs{semicolon}{*!?}%
- \DeclarePunctuationPairs{colon}{*!?}%
- \DeclarePunctuationPairs{period}{}%
- \DeclarePunctuationPairs{exclam}{*}%
- \DeclarePunctuationPairs{question}{*}%
- \DeclareQuotePunctuation{}%
- \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}%
- \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}%
- \def\abx@semicolon{\abx@puncthook{;}}%
- \def\abx@colon{\abx@puncthook{:}}%
- \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}%
- \def\abx@exclam{\abx@puncthook{!}}%
- \def\abx@question{\abx@puncthook{?}}%
- \global\let\abx@puncthook\@firstofone
- \global\let\blx@postpunct\@empty}
-
-\blx@resetpunct
-
-% {<character>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifpunctmark#1{%
- \ifhmode
- \begingroup
- \sfcode`\*=\blx@sf@dot
- \ifnum\sfcode`#1=\spacefactor
- \endgroup
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \endgroup
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<true>}{<false>}
-
-\protected\def\blx@imc@ifterm{%
- \ifhmode
- \expandafter\blx@imc@ifcapital
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<true>}{<false>}
-
-\protected\def\blx@imc@ifcapital{%
- \ifcsdef{blx@cap@\blx@spacefactor}}
-
-% {<true>}{<false>}
-
-\protected\def\blx@imc@ifpunct{%
- \ifnum\blx@spacefactor>\blx@sf@threshold@low
- \ifnum\blx@spacefactor<\blx@sf@threshold@high
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<character>}
-
-\newrobustcmd*{\autocap}[1]{#1}
-
-\protected\def\blx@imc@autocap{%
- \blx@imc@ifcapital\MakeUppercase\@firstofone}
-
-\protected\def\blx@imc@nopunct{%
- \leavevmode\spacefactor\blx@sf@nopunct}
-
-\protected\def\blx@imc@isdot{%
- \ifnum\blx@spacefactor=\blx@sf@period
- \spacefactor\blx@sf@dot
- \fi}
-
-\protected\def\blx@imc@adddot{%
- \blx@addpunct{dot}%
- \ifnum\blx@spacefactor=\blx@sf@period
- \spacefactor\blx@sf@dot
- \fi}
-
-\protected\def\blx@imc@addperiod{%
- \blx@addpunct{period}%
- \ifnum\blx@spacefactor=\blx@sf@dot
- \spacefactor\blx@sf@period
- \fi}
-
-\protected\def\blx@imc@addcomma{\blx@addpunct{comma}}
-\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}}
-\protected\def\blx@imc@addcolon{\blx@addpunct{colon}}
-\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}}
-\protected\def\blx@imc@addquestion{\blx@addpunct{question}}
-
-\def\blx@addpunct#1{%
- \unspace
- \ifnum\blx@spacefactor<\blx@sf@threshold@low
- \csuse{blx@qp@#1}\csuse{abx@#1}%
- \else
- \ifnum\blx@spacefactor>\blx@sf@threshold@high
- \csuse{blx@qp@#1}\csuse{abx@#1}%
- \else
- \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor}
- {\csuse{blx@qp@#1}\csuse{abx@#1}}
- {\csuse{blx@qp@#1}}%
- \fi
- \fi
- \csuse{blx@pq@#1}}
-
-\providerobustcmd*{\unspace}{%
- \ifbool{hmode}
- {\ifdimgreater\lastskip\z@
- {\unskip\unspace}
- {\ifnumgreater\lastpenalty\z@
- {\unpenalty\unspace}
- {}}}
- {}}
-
-\newrobustcmd*{\bibsentence}{%
- \leavevmode\spacefactor\blx@sf@par
- \ignorespaces}
-
-\newrobustcmd*{\midsentence}{%
- \leavevmode
- \@ifstar
- {\ifnum\spacefactor=\blx@sf@dot
- \else
- \spacefactor\@m
- \fi}
- {\spacefactor\@m}}
-
-\newrobustcmd*{\addslash}{%
- \unspace/\penalty\hyphenpenalty\hskip\z@skip}
-
-\newrobustcmd*{\addspace}{%
- \unspace\blx@postpunct
- \space\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addnbspace}{%
- \unspace\blx@postpunct
- \nobreak\space\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addthinspace}{%
- \unspace\blx@postpunct
- \hskip0.16667em\relax
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addnbthinspace}{%
- \unspace\blx@postpunct
- \nobreak\hskip0.16667em\relax
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addlowpenspace}{%
- \unspace\blx@postpunct
- \penalty\value{lownamepenalty}\space
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addhighpenspace}{%
- \unspace\blx@postpunct
- \penalty\value{highnamepenalty}\space
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addlpthinspace}{%
- \unspace\blx@postpunct
- \penalty\value{lownamepenalty}%
- \hskip0.16667em\relax\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addhpthinspace}{%
- \unspace\blx@postpunct
- \penalty\value{highnamepenalty}%
- \hskip0.16667em\relax\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addabbrvspace}{%
- \unspace\blx@postpunct
- \penalty\value{abbrvpenalty}%
- \space\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addabthinspace}{%
- \unspace\blx@postpunct
- \penalty\value{abbrvpenalty}%
- \hskip0.16667em\relax
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\adddotspace}{%
- \unspace\adddot\blx@postpunct
- \penalty\value{abbrvpenalty}%
- \space\blx@imc@resetpunctfont}
-
-\providerobustcmd*{\noligature}{%
- \penalty\@M\discretionary{-}{}{\kern0.03em}%
- \nobreak\hskip\z@skip}
-
-\providerobustcmd*{\hyphen}{%
- \nobreak-\nobreak\hskip\z@skip}
-
-\providerobustcmd*{\nbhyphen}{%
- \nobreak\mbox{-}\nobreak\hskip\z@skip}
-
-\providerobustcmd*{\hyphenate}{%
- \nobreak\-\nobreak\hskip\z@skip}
-
-\providerobustcmd*{\allowhyphens}{%
- \nobreak\hskip\z@skip}
-
-\providerobustcmd*{\nohyphenation}{%
- \lefthyphenmin\@m}
-
-\providerobustcmd*{\textnohyphenation}[1]{%
- \bgroup\nohyphenation#1\egroup}
-
-\blx@regimcs{%
- \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark
- \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma
- \addsemicolon \addcolon \addexclam \addquestion}
-
-\appto\blx@blxinit{%
- \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}}
-
-%% Style definition
-
-% {<bibstyle>}
-\newrobustcmd*{\RequireBibliographyStyle}[1]{%
- \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{}
- {\blx@error
- {Style '#1' not found}
- {The bibliography style '#1' could not be found}}}
-\@onlypreamble\RequireBibliographyStyle
-
-% {<code>}
-\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit}
-\@onlypreamble\InitializeBibliographyStyle
-
-% {<entry type>}{<driverdef>}
-\newrobustcmd*{\DeclareBibliographyDriver}[1]{%
- \long\csdef{blx@bbx@#1}}
-\@onlypreamble\DeclareBibliographyDriver
-
-% {<entry type>}
-\def\blx@driver#1{%
- \ifcsdef{blx@bbx@#1}
- {\csuse{blx@bbx@#1}}
- {\ifcsdef{blx@bbx@*}
- {\blx@warning{%
- No driver for entry type '#1'.\MessageBreak
- Using fallback driver}%
- \csuse{blx@bbx@*}}
- {\blx@error
- {No driver found}
- {I can't find a driver for the entry type
- '\abx@field@entrytype'\MessageBreak
- and there is no fallback driver either}}}}
-
-% {<type>}{<true>}{<false>}
-\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}}
-
-% {<alias>}{<type>}
-\newrobustcmd*{\DeclareBibliographyAlias}[2]{%
- \csedef{blx@bbx@#1}{%
- \expandafter\noexpand\csname blx@bbx@#2\endcsname}}
-\@onlypreamble\DeclareBibliographyAlias
-
-%% Auxiliary commands
-\newrobustcmd*{\citereset}{%
- \csuse{blx@hook@cbxinit}%
- \@ifstar
- {}
- {\global\cslet{blx@bsee@\the\c@refsection}\@empty
- \global\cslet{blx@fsee@\the\c@refsection}\@empty
- \blx@ibidreset@force
- \blx@idemreset@force
- \blx@opcitreset@force
- \blx@loccitreset@force}}
-
-\def\blx@save#1{%
- \ifcsdef{blx@saved@#1}
- {}
- {\blx@safe@actives
- \csletcs{blx@saved@#1}{#1}%
- \blx@rest@actives}}
-
-\def\blx@restore#1{%
- \ifcsdef{blx@saved@#1}
- {\blx@safe@actives
- \csletcs{#1}{blx@saved@#1}%
- \csundef{blx@saved@#1}%
- \blx@rest@actives}
- {}}
-
-\newrobustcmd*{\savecommand}[1]{%
- \ifcsdef{blx@saved@cmd@\detokenize{#1}}
- {}
- {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}}
-
-\newrobustcmd*{\restorecommand}[1]{%
- \ifcsdef{blx@saved@cmd@\detokenize{#1}}
- {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}%
- \csundef{blx@saved@cmd@\detokenize{#1}}}
- {}}
-
-% {<name>}
-\newrobustcmd*{\savebibmacro}[1]{%
- \blx@save{abx@macro@\detokenize{#1}}}
-
-\newrobustcmd*{\restorebibmacro}[1]{%
- \blx@restore{abx@macro@\detokenize{#1}}}
-
-% {<name>}[<args>][<optarg>]{<definition>}
-\newrobustcmd*{\newbibmacro}{%
- \@star@or@long\blx@newbibmacro}
-
-\def\blx@newbibmacro#1{%
- \ifcsundef{abx@macro@\detokenize{#1}}
- {\blx@defbibmacro\new@command{#1}}
- {\blx@warning{%
- Macro '\detokenize{#1}' already defined.\MessageBreak
- Using \string\renewbibmacro}
- \blx@defbibmacro\renew@command{#1}}}
-
-\newrobustcmd*{\renewbibmacro}{%
- \@star@or@long\blx@renewbibmacro}
-
-\def\blx@renewbibmacro#1{%
- \ifcsundef{abx@macro@\detokenize{#1}}
- {\blx@warning{%
- Macro '\detokenize{#1}' undefined.\MessageBreak
- Using \string\newbibmacro}
- \blx@defbibmacro\new@command{#1}}
- {\blx@defbibmacro\renew@command{#1}}}
-
-\newrobustcmd*{\providebibmacro}{%
- \@star@or@long{\blx@defbibmacro\provide@command}}
-
-\def\blx@defbibmacro#1#2{%
- \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname}
-
-% {<name>}
-\newrobustcmd*{\usebibmacro}{%
- \@ifstar
- {\blx@usebibmacro@i}
- {\blx@usebibmacro}}
-
-\def\blx@usebibmacro#1{%
- \blx@usebibmacro@i{\detokenize{#1}}}
-
-\def\blx@usebibmacro@i#1{%
- \ifcsundef{abx@macro@#1}
- {\blx@error
- {Bibliography macro '#1' undefined}
- {Use '\string\newbibmacro' to define this macro}}
- {\csuse{abx@macro@#1}}}
-
-% {<name>}{<true>}{<false>}
-\def\blx@imc@ifbibmacroundef#1{%
- \ifcsundef{abx@macro@#1}}
-
-% {<field>}
-\def\blx@imc@thefield#1{\csuse{abx@field@#1}}
-
-\def\blx@imc@strfield#1{%
- \ifcsdef{abx@field@#1}
- {\detokenize\expandafter\expandafter\expandafter
- {\csname abx@field@#1\endcsname}}
- {}}
-
-\def\blx@imc@csfield#1{\usefield{\unexpanded}{#1}}
-
-% {<command>}{<field>}
-\def\blx@imc@usefield#1#2{%
- \expandafter\expandafter\expandafter#1%
- \expandafter\expandafter\expandafter{\csname abx@field@#2\endcsname}}
-
-% {<plainlist>}
-\def\blx@imc@thelist#1{\csuse{abx@list@#1}}
-
-\def\blx@imc@strlist#1{%
- \ifcsdef{abx@list@#1}
- {\detokenize\expandafter\expandafter\expandafter
- {\csname abx@list@#1\endcsname}}
- {}}
-
-% {<namelist>}
-\def\blx@imc@thename#1{\csuse{abx@name@#1}}
-
-\def\blx@imc@strname#1{%
- \ifcsdef{abx@name@#1}
- {\detokenize\expandafter\expandafter\expandafter
- {\csname abx@name@#1\endcsname}}
- {}}
-
-% {<field>}
-\protected\def\blx@imc@clearfield#1{%
- \csundef{abx@field@#1}}
-
-% {<plainlist>}
-\protected\def\blx@imc@clearlist#1{%
- \ifcsundef{abx@list@#1}
- {}
- {\togglefalse{abx@bool@more#1}%
- \csundef{abx@list@#1}%
- \csname c@#1\endcsname\z@}}
-
-% {<namelist>}
-\protected\def\blx@imc@clearname#1{%
- \ifcsundef{abx@name@#1}
- {}
- {\togglefalse{abx@bool@more#1}%
- \csundef{abx@name@#1}%
- \csname c@#1\endcsname\z@}}
-
-% {<field>}{<macro>}
-\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}}
-
-% {<plainlist>}{<macro>}
-\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}}
-
-% {<namelist>}{<macro>}
-\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}}
-
-% {<field>}{<macro>}
-\protected\def\blx@imc@savefield{%
- \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}}
-\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}}
-
-% {<plainlist>}{<macro>}
-\protected\def\blx@imc@savelist{%
- \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}}
-
-% {<namelist>}{<macro>}
-\protected\def\blx@imc@savename{%
- \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}}
-
-% {<field>}{<csname>}
-\protected\def\blx@imc@savefieldcs{%
- \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}}
-\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}}
-
-% {<plainlist>}{<csname>}
-\protected\def\blx@imc@savelistcs{%
- \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}}
-
-% {<namelist>}{<csname>}
-\protected\def\blx@imc@savenamecs{%
- \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}}
-
-% {<field>}{<true>}{<false>}
-\def\blx@imc@iffieldundef#1{%
- \ifcsundef{abx@field@#1}}
-
-% {<plainlist>}{<true>}{<false>}
-\def\blx@imc@iflistundef#1{%
- \ifcsundef{abx@list@#1}}
-
-% {<namelist>}{<true>}{<false>}
-\def\blx@imc@ifnameundef#1{%
- \ifcsundef{abx@name@#1}}
-
-% {<field1>}{<field2>}{<true>}{<false>}
-\def\blx@imc@iffieldsequal#1#2{%
- \ifcsequal{abx@field@#1}{abx@field@#2}}
-
-% {<plainlist1>}{<plainlist2>}{<true>}{<false>}
-\def\blx@imc@iflistsequal#1#2{%
- \ifcsequal{abx@list@#1}{abx@list@#2}}
-
-% {<namelist1>}{<namelist2>}{<true>}{<false>}
-\def\blx@imc@ifnamesequal#1#2{%
- \ifcsundef{abx@name@#1}
- {\@secondoftwo}
- {\ifcsundef{abx@name@#2}
- {\@secondoftwo}
- {\blx@ifnamesequal{#1}{#2}}}}
-
-\def\blx@ifnamesequal#1#2{%
- \begingroup
- \let\blx@tempa\@empty
- \expandafter\expandafter
- \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname
- \let\blx@tempb\blx@tempa
- \let\blx@tempa\@empty
- \expandafter\expandafter
- \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname
- \expandafter\endgroup
- \ifx\blx@tempa\blx@tempb
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-\def\blx@ifnamesequal@i#1#2{%
- \expandafter\blx@ifnamesequal@ii#2{}&}
-
-\def\blx@ifnamesequal@ii#1{%
- \ifblank{#1}
- {\blx@namebreak}
- {\blx@ifnamesequal@iii#1%
- \blx@ifnamesequal@ii}}
-
-\def\blx@ifnamesequal@iii#1#2{%
- \setkeys{blx@opt@name}{#1}%
- \setkeys{blx@opt@namepart}{#2}%
- \ifdef\abx@field@hash
- {\eappto\blx@tempa{{\abx@field@hash}}}
- {\eappto\blx@tempa{{{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}}}}
-
-% {<field>}{<macro>}{<true>}{<false>}
-\def\blx@imc@iffieldequals#1#2{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@field@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<plainlist>}{<macro>}{<true>}{<false>}
-\def\blx@imc@iflistequals#1#2{%
- \blx@imc@iflistundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@list@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<namelist>}{<macro>}{<true>}{<false>}
-\def\blx@imc@ifnameequals#1#2{% FIXME
- \blx@imc@ifnameundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@name@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<field>}{<csname>}{<true>}{<false>}
-\def\blx@imc@iffieldequalcs#1{%
- \ifcsequal{abx@field@#1}}
-
-% {<plainlist>}{<csname>}{<true>}{<false>}
-\def\blx@imc@iflistequalcs#1{%
- \ifcsequal{abx@list@#1}}
-
-% {<namelist>}{<csname>}{<true>}{<false>}
-\def\blx@imc@ifnameequalcs#1{% FIXME
- \ifcsequal{abx@name@#1}}
-
-% {<field>}{<string>}{<true>}{<false>}
-\protected\long\def\blx@imc@iffieldequalstr#1#2{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter\expandafter\ifstrequal
- \expandafter\expandafter\expandafter{%
- \csname abx@field@#1\endcsname}{#2}}}
-
-% {<field>}{<true>}{<false>}
-\protected\def\blx@imc@iffieldxref#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\blx@whichxref
- {\blx@iffieldxref{#1}}
- {\@secondoftwo}}}
-
-\def\blx@iffieldxref#1#2{%
- \begingroup
- \letcs\blx@tempa{abx@field@#2}%
- \letcs\blx@tempb{abx@field@#1}%
- \csundef{abx@field@#1}%
- \blx@getdata{\blx@tempa}%
- \blx@imc@iffieldequals{#1}\blx@tempb
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \endgroup}
-
-\def\blx@whichxref#1#2{%
- \blx@imc@iffieldundef{crossref}
- {\blx@imc@iffieldundef{xref}
- {#2}
- {#1{xref}}}
- {#1{crossref}}}
-
-% {<plainlist>}{<true>}{<false>}
-\protected\def\blx@imc@iflistxref#1{%
- \blx@imc@iflistundef{#1}
- {\@secondoftwo}
- {\blx@whichxref
- {\blx@iflistxref{#1}}
- {\@secondoftwo}}}
-
-\def\blx@iflistxref#1#2{%
- \begingroup
- \letcs\blx@tempa{abx@field@#2}%
- \letcs\blx@tempb{abx@list@#1}%
- \csundef{abx@list@#1}%
- \blx@getdata{\blx@tempa}%
- \blx@imc@iflistequals{#1}\blx@tempb
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \endgroup}
-
-% {<namelist>}{<true>}{<false>}
-\protected\def\blx@imc@ifnamexref#1{%
- \blx@imc@ifnameundef{#1}
- {\@secondoftwo}
- {\blx@whichxref
- {\blx@ifnamexref{#1}}
- {\@secondoftwo}}}
-
-\def\blx@ifnamexref#1#2{%
- \begingroup
- \letcs\blx@tempa{abx@field@#2}%
- \letcs\blx@tempb{abx@name@#1}%
- \csundef{abx@name@#1}%
- \blx@getdata{\blx@tempa}%
- \blx@imc@ifnameequals{#1}\blx@tempb
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-\protected\def\blx@imc@ifcurrentfield#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\currentfield\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-\protected\def\blx@imc@ifcurrentlist#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\currentlist\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-\protected\def\blx@imc@ifcurrentname#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\currentname\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-\protected\def\blx@imc@ifentrytype#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\abx@field@entrytype\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<true>}{<false>}
-\def\blx@imc@ifmorenames{%
- \ifundef\currentname
- {\@secondoftwo}
- {\iftoggle{abx@bool@more\currentname}
- {\@firstoftwo}
- {\ifnum\c@listtotal>\c@liststop
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<true>}{<false>}
-\def\blx@imc@ifmoreitems{%
- \ifundef\currentlist
- {\@secondoftwo}
- {\iftoggle{abx@bool@more\currentlist}
- {\@firstoftwo}
- {\ifnum\c@listtotal>\c@liststop
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<true>}{<false>}
-\def\blx@imc@iffirstcitekey{%
- \ifboolexpr{ ( test {\ifnumequal\c@multicitetotal\z@}
- and test {\ifnumequal\c@citecount\@ne} )
- or ( test {\ifnumgreater\c@multicitetotal\z@}
- and test {\ifnumequal\c@multicitecount\@ne}
- and test {\ifnumequal\c@citecount\@ne} ) }}
-
-\def\blx@imc@iflastcitekey{%
- \ifboolexpr{ test {\ifnumequal\c@citecount\c@citetotal}
- and test {\ifnumequal\c@multicitecount\c@multicitetotal} }}
-
-% {<category>}{<true>}{<false>}
-\protected\def\blx@imc@ifcategory{%
- \ifdef\abx@field@entrykey
- {\blx@imc@ifentrycategory\abx@field@entrykey}
- {\expandafter\@secondoftwo\@gobble}}
-
-% {<entrykey>}{<category>}{<true>}{<false>}
-\protected\def\blx@imc@ifentrycategory{%
- \blx@xsanitizeafter\blx@imc@ifentrycategory@i}
-
-\def\blx@imc@ifentrycategory@i#1#2{%
- \ifcsdef{blx@catg@\detokenize{#2}}
- {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}}
- {\@secondoftwo}}
-
-% {<keyword>}{<true>}{<false>}
-\protected\def\blx@imc@ifkeyword{%
- \ifdef\abx@field@entrykey
- {\blx@imc@ifentrykeyword\abx@field@entrykey}
- {\expandafter\@secondoftwo\@gobble}}
-
-% {<entrykey>}{<keyword>}{<true>}{<false>}
-\protected\def\blx@imc@ifentrykeyword{%
- \blx@xsanitizeafter\blx@imc@ifentrykeyword@i}
-
-\def\blx@imc@ifentrykeyword@i#1#2{%
- \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}}
- {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-\protected\def\blx@ifciteseen@global{%
- \ifbool{citetracker}
- {\ifdef\abx@field@entrykey
- {\expandafter\blx@ifseen@global
- \expandafter{\abx@field@entrykey}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\protected\def\blx@ifciteseen@context{%
- \ifbool{citetracker}
- {\ifdef\abx@field@entrykey
- {\expandafter\blx@ifseen@context
- \expandafter{\abx@field@entrykey}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\protected\def\blx@ifciteseen@context{%
- \ifbool{citetracker}
- {\ifdef\abx@field@entrykey
- {\expandafter\blx@ifseen@context
- \expandafter{\abx@field@entrykey}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-% {<entrykey>}{<true>}{<false>}
-\protected\def\blx@ifentryseen@global{%
- \blx@xsanitizeafter\blx@ifseen@global}
-
-\protected\def\blx@ifentryseen@context{%
- \blx@xsanitizeafter\blx@ifseen@context}
-
-\def\blx@ifseen@global#1{%
- \ifbool{citetracker}
- {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}
- {\@secondoftwo}}
-
-\def\blx@ifseen@context#1{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}}
- {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-\def\blx@ifciteibid@global{%
- \ifbool{citetracker}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}
- {\@secondoftwo}}
-
-\def\blx@ifciteibid@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}}
- {\@secondoftwo}}
-
-\def\blx@ifciteibid@strict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@ifciteibid@global}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@ifciteibid@constrict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot}
- {\@secondoftwo}}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-\def\blx@ifciteidem@global{%
- \ifbool{citetracker}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}
- {\@secondoftwo}}
-
-\def\blx@ifciteidem@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}}
- {\@secondoftwo}}
-
-\let\blx@ifciteidem@strict\blx@ifciteidem@global
-
-\def\blx@ifciteidem@constrict{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot}
- {\@secondoftwo}}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-\def\blx@ifopcit@global{%
- \ifbool{citetracker}
- {\blx@imc@iffieldundef{namehash}
- {\@secondoftwo}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}
- {\@secondoftwo}}
-
-\def\blx@ifopcit@context{%
- \ifbool{citetracker}
- {\blx@imc@iffieldundef{namehash}
- {\@secondoftwo}
- {\iftoggle{blx@footnote}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}}
- {\@secondoftwo}}
-
-\def\blx@ifopcit@strict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@ifopcit@global}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@ifopcit@constrict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@imc@iffieldundef{namehash}
- {\@secondoftwo}
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}}
- {\@secondoftwo}}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-\def\blx@ifloccit@global{%
- \ifbool{citetracker}
- {\blx@loccit@check{text}}
- {\@secondoftwo}}
-
-\def\blx@ifloccit@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@loccit@check{foot}}
- {\blx@loccit@check{text}}}
- {\@secondoftwo}}
-
-\def\blx@ifloccit@strict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@loccit@numcheck{text}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@ifloccit@constrict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@loccit@numcheck{foot}}
- {\@secondoftwo}}
- {\blx@loccit@numcheck{text}}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@loccit@check#1{%
- \blx@imc@iffieldundef{postnote}
- {\@secondoftwo}
- {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}}
-
-\def\blx@loccit@numcheck#1{%
- \blx@imc@iffieldundef{postnote}
- {\@secondoftwo}
- {\expandafter\blx@imc@ifpages
- \expandafter{\abx@field@postnote}
- {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}
- {\@secondoftwo}}}
-
-% {<true>}{<false>}
-\def\blx@ifmpfncheck{%
- \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-\def\blx@mpfnsave{%
- \xdef\blx@lastmpfn{\the\value\@mpfn}}
-
-\def\blx@mpfnreset{%
- \global\let\blx@lastmpfn\z@}
-
-\blx@mpfnreset
-
-% {<true>}{<false>}
-\def\blx@imc@iffirstonpage{%
- \ifbool{pagetracker}
- {\iftoggle{blx@footnote}
- {\blx@iffirstonpage{fnpage}}
- {\blx@iffirstonpage{page}}}
- {\@secondoftwo}}
-
-\def\blx@iffirstonpage#1{%
- \ifcsundef{blx@#1@\number\c@instcount}
- {\@secondoftwo}
- {\expandafter\blx@iffirstonpage@i
- \expandafter{\number\numexpr\c@instcount-1}{#1}}}
-
-\def\blx@iffirstonpage@i#1#2{%
- \ifcsundef{blx@#2@#1}
- {\ifnum#1>\@ne
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\expandafter\blx@iffirstonpage@i
- \expandafter{\number\numexpr#1-1}{#2}}
- {\@firstoftwo}}
- {\ifnum\csuse{blx@#2@\number\c@instcount}=%
- \csuse{blx@#2@#1} %
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi}}
-
-% {<count1>}{<count2>}{<true>}{<false>}
-\def\blx@imc@ifsamepage#1#2{%
- \ifbool{pagetracker}
- {\ifcsundef{blx@page@\number\numexpr#1}
- {\ifcsundef{blx@fnpage@\number\numexpr#1}
- {\@secondoftwo}
- {\blx@ifsamepage{#1}{#2}{fnpage}}}
- {\blx@ifsamepage{#1}{#2}{page}}}
- {\@secondoftwo}}
-
-\def\blx@ifsamepage#1#2#3{%
- \ifcsundef{blx@page@\number\numexpr#2}
- {\ifcsundef{blx@fnpage@\number\numexpr#2}
- {\@secondoftwo}
- {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}}
- {\blx@ifsamepage@i{#1}{#2}{#3}{page}}}
-
-\def\blx@ifsamepage@i#1#2#3#4{%
- \ifnum\csuse{blx@#3@\number\numexpr#1}=%
- \csuse{blx@#4@\number\numexpr#2} %
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<string>}{<true>}{<false>}
-\protected\long\def\blx@imc@ifinteger#1{%
- \begingroup
- \def\do##1{\uccode`##1=`\%}%
- \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
- \makeatletter
- \catcode`\%=9
- \endlinechar\m@ne
- \uppercase{\scantokens{\def\blx@tempa{#1}}}%
- \ifx\blx@tempa\@empty
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<field>}{<true>}{<false>}
-\protected\def\blx@imc@iffieldint#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\ifinteger
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-% {<string>}{<true>}{<false>}
-\protected\def\blx@imc@ifnumeral{%
- \blx@ifnum\blx@hook@ifnum}
-
-\protected\def\blx@imc@ifnumerals{%
- \blx@ifnum\blx@hook@ifnums}
-
-\protected\def\blx@imc@ifpages{%
- \blx@ifnum\blx@hook@ifpages}
-
-\long\def\blx@ifnum#1#2{%
- \begingroup
- \let\protect\@unexpandable@protect
- \uppercase{\edef\blx@tempa{#2}}%
- \ifx\blx@tempa\@empty
- \aftergroup\@secondoftwo
- \else
- \makeatletter
- \catcode`\%=9
- \endlinechar\m@ne
- \everyeof{\noexpand}#1%
- \uppercase{\edef\blx@tempa{\scantokens{#2}}}%
- \ifx\blx@tempa\@empty
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \fi
- \endgroup}
-
-\def\blx@hook@ifnum{%
- \def\do##1{\uccode`##1=`\%}%
- \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
- \do\i\do\v\do\x\do\l\do\c\do\d\do\m
- \do\I\do\V\do\X\do\L\do\C\do\D\do\M
- \blx@donumchars
- \let\RN\@firstofone
- \let\Rn\@firstofone}
-
-\def\blx@hook@ifnums{%
- \blx@hook@ifnum
- \def\do##1{\uccode`##1=`\%}%
- \blx@dorangechars
- \def\do##1{\let##1\@empty}%
- \blx@dorangecmds}
-
-\def\blx@hook@ifpages{%
- \blx@hook@ifnum
- \blx@hook@ifnums
- \def\do##1{\let##1\@empty}%
- \blx@dopagecmds}
-
-% {<field>}{<true>}{<false>}
-\protected\def\blx@imc@iffieldnum#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\blx@imc@ifnumeral
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-\protected\def\blx@imc@iffieldnums#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\blx@imc@ifnumerals
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-\protected\def\blx@imc@iffieldpages#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\blx@imc@ifpages
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-% {<chars>}
-\newrobustcmd*{\DeclareNumChars}{%
- \@ifstar
- {\blx@defnumchars}
- {\global\let\blx@donumchars\@empty
- \blx@defnumchars}}
-
-\def\blx@defnumchars#1{%
- \ifblank{#1}
- {}
- {\expandafter\blx@defdochars
- \expandafter\blx@donumchars
- \detokenize{#1}\relax}}
-
-% {<chars>}
-\newrobustcmd*{\DeclareRangeChars}{%
- \@ifstar
- {\blx@defrangechars}
- {\global\let\blx@dorangechars\@empty
- \blx@defrangechars}}
-
-\def\blx@defrangechars#1{%
- \ifblank{#1}
- {}
- {\expandafter\blx@defdochars
- \expandafter\blx@dorangechars
- \detokenize{#1}\relax}}
-
-\def\blx@defdochars#1#2{%
- \ifx#2\relax
- \else
- \xdef#1{%
- \expandonce#1\noexpand\do
- \expandafter\noexpand\csname#2\endcsname}%
- \expandafter\blx@defdochars
- \expandafter#1%
- \fi}
-
-% {<cstokens>}
-\newrobustcmd*{\DeclareRangeCommands}{%
- \@ifstar
- {\blx@defrangecmds}
- {\global\let\blx@dorangecmds\@empty
- \blx@defrangecmds}}
-
-\def\blx@defrangecmds#1{%
- \ifblank{#1}
- {}
- {\blx@defrangecmds@i#1&}}
-
-\def\blx@defrangecmds@i#1{%
- \ifx&#1%
- \else
- \gappto\blx@dorangecmds{\do#1}%
- \expandafter\blx@defrangecmds@i
- \fi}
-
-% {<cstokens>}
-\newrobustcmd*{\DeclarePageCommands}{%
- \@ifstar
- {\blx@defpagecmds}
- {\global\let\blx@dopagecmds\@empty
- \blx@defpagecmds}}
-
-\def\blx@defpagecmds#1{%
- \ifblank{#1}
- {}
- {\blx@defpagecmds@i#1&}}
-
-\def\blx@defpagecmds@i#1{%
- \ifx&#1%
- \else
- \gappto\blx@dopagecmds{\do#1}%
- \expandafter\blx@defpagecmds@i
- \fi}
-
-\DeclareNumChars{.}
-\DeclareRangeChars{~,;-+/}
-\DeclareRangeCommands{%
- \ \,\space\nobreakspace\addspace\addnbspace
- \addthinspace\addnbthinspace\addlowpenspace
- \addhighpenspace\addlpthinspace\addhpthinspace
- \adddotspace\addabbrvspace\&\psq\psqq
- \bibrangedash\bibdatedash\textendash\textemdash\bibrangessep}
-\DeclarePageCommands{\pno\ppno}
-
-% *{<code>}
-\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum}
-\newcommand*{\NumcheckSetup}{\NumCheckSetup}
-
-% [<pagination>][<postpro>]{<string>}
-\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{%
- \begingroup
- \def\blx@tempa{\blx@mkpageprefix{page}}%
- \iffieldundef{#1}
- {}
- {\iffieldequalstr{#1}{none}
- {\def\blx@tempa{\blx@mkpageprefix@i}}
- {\iffieldbibstring{#1}
- {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}}
- {\blx@warning@entry{%
- Unknown pagination type '\strfield{#1}'}}}}%
- \@ifnextchar[%]
- {\blx@tempa}
- {\blx@tempa[\@firstofone]}}
-
-\protected\long\def\blx@mkpageprefix#1[#2]#3{%
- \ifnumeral{#3}
- {\bibstring{#1}\ppspace}
- {\ifnumerals{#3}
- {\bibstring{#1s}\ppspace}
- {\def\pno{\bibstring{#1}}%
- \def\ppno{\bibstring{#1s}}}}%
- \blx@mkpageprefix@i[#2]{#3}}
-
-\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup}
-
-% [<pagination>][<postpro>]{<string>}
-\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{%
- \begingroup
- \def\blx@tempa{\blx@mkpagetotal{page}}%
- \iffieldundef{#1}
- {}
- {\iffieldequalstr{#1}{none}
- {\def\blx@tempa{\blx@mkpagetotal@i}}
- {\iffieldbibstring{#1}
- {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}}
- {\blx@warning@entry{%
- Unknown pagination type '\strfield{#1}'}}}}%
- \@ifnextchar[%]
- {\blx@tempa}
- {\blx@tempa[\@firstofone]}}
-
-\protected\long\def\blx@mkpagetotal#1[#2]#3{%
- \ifnumeral{#3}
- {\setbox\@tempboxa=\hbox{%
- \blx@tempcnta0#3\relax
- \ifnum\blx@tempcnta=\@ne
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi}%
- {#2{#3}\ppspace\bibstring{#1}}
- {#2{#3}\ppspace\bibstring{#1s}}}
- {\def\pno{\bibstring{#1}}%
- \def\ppno{\bibstring{#1s}}%
- #2{#3}}%
- \endgroup}
-
-\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup}
-
-\newcounter{mincomprange}
-\newcounter{maxcomprange}
-\newcounter{mincompwidth}
-\setcounter{mincomprange}{10}
-\setcounter{maxcomprange}{100000}
-\setcounter{mincompwidth}{1}
-\def\abx@rangeproclimit{100000}
-
-% {<rangefield>}
-\newcommand*{\frangelen}[1]{%
- \ifcsdef{abx@range@#1}
- {\csuse{abx@range@#1}}
- {}}
-
-% {<string>}
-% This mustn't be robust as it's likely to be used mainly tests and so
-% needs to be expandable
-\newcommand*\rangelen[1]{%
- \ifblank{#1}
- {0}%
- {%
- \expandafter\blx@rangelen@range\romannumeral-`\q%
- #1\bibrangedash\bibrangedash&%
- }%
- }
-
-\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@rangelen@hyphen#1--&}
- {\blx@rangelen@check{#1}{#2}}%
-}
-\def\blx@rangelen@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {1}% No range at all: assume one page
- {\blx@rangelen@check{#1}{#2}}%
-}
-\def\blx@rangelen@check#1#2{%
- \expandafter\blx@rangelen@check@aux
- \number\numexpr
- \blx@rangelen@check@int{#2}
- -
- \blx@rangelen@check@int{#1}
- + 1
- \relax
- &\stop
-}
-\def\blx@rangelen@check@aux#1&#2\stop{%
- \ifblank{#2}
- {#1}
- {-1}%
-}
-\def\blx@rangelen@check@int#1{%
- \ifblank{#1}
- {0&}
- {%
- \if\number\numexpr0#1-0#1\relax0
- #1
- \else
- 0&
- \fi
- }%
-}
-
-% <*>[<postpro>]{<string>}
-
-\newrobustcmd*{\mkcomprange}{%
- \begingroup
- \@ifstar
- {\blx@comprange\blx@comprange@ii}
- {\blx@comprange\blx@comprange@i}}
-
-\def\blx@comprange#1{%
- \@ifnextchar[{#1}{#1[\@firstofone]}}
-
-\def\blx@comprange@i[#1]#2{%
- \let\blx@tempa\@empty
- \protected\def\blx@range@out@value{\appto\blx@tempa}%
- \let\blx@range@out@delim\blx@range@out@value
- \let\blx@range@split\blx@comprange@split
- \blx@range@chunk{#2}%
- \edef\blx@tempa{\endgroup
- \unexpanded{#1}{\expandonce\blx@tempa}}%
- \blx@tempa}
-
-\def\blx@comprange@ii[#1]#2{%
- \protected\def\blx@range@out@value{#1}%
- \let\blx@range@out@delim\@firstofone
- \let\blx@range@split\blx@comprange@split
- \blx@range@chunk{#2}%
- \endgroup}
-
-\def\blx@comprange@split#1{%
- \def\blx@comprange@abort{\blx@range@out@value{#1}}%
- \blx@imc@ifpages{#1}
- {\blx@comprange@range#1\bibrangedash\bibrangedash&}
- {\blx@comprange@abort}}
-
-\def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@comprange@hyphen#1--&}
- {\ifblank{#2}
- {\blx@range@out@value{#1\bibrangedash}}
- {\ifblank{#1}
- {\blx@range@out@value{\bibrangedash#2}}
- {\blx@comprange@check{#1}{#2}}}}}
-
-\def\blx@comprange@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {\blx@comprange@abort}
- {\ifblank{#2}
- {\ifblank{#1}
- {\let\blx@tempb\@empty}
- {\def\blx@tempb{#1}}%
- \blx@comprange@hyphen@i#3&}
- {\ifblank{#1}
- {\blx@range@out@value{\bibrangedash#2}}
- {\blx@comprange@check{#1}{#2}}}}}
-
-\def\blx@comprange@hyphen@i#1-#2&{%
- \ifblank{#1#2}
- {\expandafter\blx@range@out@value
- \expandafter{\blx@tempb\bibrangedash}}
- {\notblank{#1}
- {\ifdefempty\blx@tempb
- {\blx@range@out@value{\bibrangedash#1}}
- {\expandafter\blx@comprange@check
- \expandafter{\blx@tempb}{#1}}}
- {\blx@comprange@hyphen@i#2&}}}
-
-\def\blx@comprange@check#1#2{%
- \blx@imc@ifinteger{#1}
- {\blx@imc@ifinteger{#2}
- {\blx@comprange@comp{#1}{#2}}
- {\blx@range@out@value{#1\bibrangedash#2}}}
- {\blx@range@out@value{#1\bibrangedash#2}}}
-
-\def\blx@comprange@comp#1#2{%
- \def\blx@tempb{#1}%
- \def\blx@tempc{#2}%
- \let\blx@tempd\blx@tempc
- \ifnum\c@maxcomprange<\abx@rangeproclimit\relax
- \numdef\blx@tempe\abx@rangeproclimit
- \else
- \numdef\blx@tempe\c@maxcomprange
- \fi
- \blx@tempcntc=\blx@tempe\relax
- \ifnum
- \ifnum\c@mincompwidth<1\space1\fi
- \ifnum\c@maxcomprange<10\space1\fi
- \ifnum\c@mincomprange<\blx@tempb\space\else1\fi
- \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi
- 0=\z@
- \expandafter\blx@comprange@comp@div
- \else
- \expandafter\blx@comprange@end
- \fi}
-
-\def\blx@comprange@end{%
- \numdef\blx@tempb\blx@tempb
- \ifnum\blx@tempe>\c@maxcomprange\relax
- \numdef\blx@tempc\blx@tempc
- \else
- \numdef\blx@tempc\blx@tempd
- \fi
- \edef\blx@tempb{%
- \blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}%
- \blx@tempb}
-
-\def\blx@comprange@comp@div{%
- \unless\ifnum\blx@tempb<\blx@tempcntc
- \blx@tempcnta\blx@tempb\relax
- \blx@tempcntb\blx@tempc\relax
- \divide\blx@tempcnta\blx@tempcntc
- \divide\blx@tempcntb\blx@tempcntc
- \ifnum\blx@tempcnta=\blx@tempcntb
- \edef\blx@tempd{\expandafter\@gobble\blx@tempd}%
- \numdef\blx@tempe\blx@tempcntc
- \fi
- \fi
- \divide\blx@tempcntc10\relax
- \ifnum
- \ifnum\blx@tempcntc<10 1\fi
- \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi
- 0=\z@
- \expandafter\blx@comprange@comp@div
- \else
- \expandafter\blx@comprange@end
- \fi}
-
-\def\blx@range@chunk#1{%
- \blx@range@chunk@semcol#1;&}
-
-\def\blx@range@chunk@semcol#1;#2&{%
- \notblank{#1}
- {\blx@range@chunk@comma#1,&}
- {}%
- \notblank{#2}
- {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}%
- \blx@range@chunk@semcol#2&}
- {}}
-
-\def\blx@range@chunk@comma#1,#2&{%
- \notblank{#1}
- {\blx@range@chunk@sep#1\bibrangessep&}
- {}%
- \notblank{#2}
- {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}%
- \blx@range@chunk@comma#2&}
- {}}
-
-\def\blx@range@chunk@sep#1\bibrangessep#2&{%
- \notblank{#1}
- {\expandafter\blx@range@split
- \expandafter{\@firstofone#1}}
- {}%
- \notblank{#2}
- {\notblank{#1}{\blx@range@out@delim{\bibrangessep}}{}%
- \blx@range@chunk@sep#2&}
- {}}
-
-% <*>[<postpro>]{<string>}
-\newrobustcmd*{\mkfirstpage}{%
- \begingroup
- \@ifstar
- {\blx@firstpage\blx@firstpage@ii}
- {\blx@firstpage\blx@firstpage@i}}
-
-\def\blx@firstpage#1{%
- \@ifnextchar[{#1}{#1[\@firstofone]}}
-
-\def\blx@firstpage@i[#1]#2{%
- \let\blx@tempa\@empty
- \protected\def\blx@range@out@value{\appto\blx@tempa}%
- \let\blx@range@out@delim\blx@range@out@value
- \let\blx@range@split\blx@firstpage@split
- \blx@range@chunk{#2}%
- \edef\blx@tempa{\endgroup
- \unexpanded{#1}{\expandonce\blx@tempa}}%
- \blx@tempa}
-
-\def\blx@firstpage@ii[#1]#2{%
- \protected\def\blx@range@out@value{#1}%
- \let\blx@range@out@delim\@firstofone
- \let\blx@range@split\blx@firstpage@split
- \blx@range@chunk{#2}%
- \endgroup}
-
-\def\blx@firstpage@split#1{%
- \def\blx@firstpage@abort{\blx@range@out@value{#1}}%
- \blx@firstpage@range#1\bibrangedash\bibrangedash&}
-
-\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@firstpage@hyphen#1--&}
- {\ifblank{#1}
- {\blx@range@out@value{\bibrangedash#2}}
- {\blx@range@out@value{#1}}}}
-
-\def\blx@firstpage@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {\blx@firstpage@abort}
- {\ifblank{#1}
- {\ifblank{#2}
- {\blx@firstpage@hyphen@i#3&}
- {\blx@range@out@value{\bibrangedash#2}}}
- {\blx@range@out@value{#1}}}}
-
-\def\blx@firstpage@hyphen@i#1-#2&{%
- \ifblank{#1}
- {\ifblank{#2}
- {\blx@firstpage@abort}
- {\blx@firstpage@hyphen@i#2&}}
- {\blx@range@out@value{\bibrangedash#1}}}
-
-\newcommand*{\ppspace}{\addnbspace}
-\newcommand*{\sqspace}{\addnbspace}
-
-\newrobustcmd*{\RN}[1]{%
- \begingroup
- \expandafter\RNfont
- \expandafter{\romannumeral#1}%
- \endgroup}
-\newrobustcmd*{\Rn}[1]{%
- \begingroup
- \expandafter\Rnfont
- \expandafter{\romannumeral#1}%
- \endgroup}
-
-\newcommand*{\RNfont}{\uppercase}
-\newcommand*{\Rnfont}{}
-
-% {<init>}{<entrytype>}
-
-\protected\def\blx@imc@usedriver#1#2{%
- \begingroup
- \let\finentry\blx@finentry@usedrv
- \let\newblock\relax
- \let\abx@macro@bibindex\@empty
- \let\abx@macro@pageref\@empty
- \csuse{blx@hook@bbxinit}#1%
- \blx@beglangbib
- \blx@driver{#2}%
- \blx@endlangbib
- \endgroup}
-
-% Punctuation
-
-\protected\def\blx@initunit{%
- \global\togglefalse{blx@block}%
- \global\togglefalse{blx@unit}%
- \global\togglefalse{blx@insert}%
- \global\togglefalse{blx@lastins}%
- \global\togglefalse{blx@keepunit}%
- \global\let\blx@unitpunct\newunitpunct
- \blx@imc@resetpunctfont}
-
-\def\blx@begunit{%
- \toggletrue{blx@tempa}%
- \iftoggle{blx@insert}
- {\iftoggle{blx@unit}
- {\begingroup
- \let\blx@begunit\@empty
- \let\blx@endunit\@empty
- \let\blx@endnounit\@empty
- \blx@unitpunct\blx@postpunct
- \endgroup
- \global\togglefalse{blx@unit}%
- \togglefalse{blx@tempa}}
- {\blx@postpunct}%
- \iftoggle{blx@block}
- {\begingroup
- \let\blx@begunit\@empty
- \let\blx@endunit\@empty
- \let\blx@endnounit\@empty
- \newblockpunct
- \endgroup
- \global\togglefalse{blx@block}%
- \togglefalse{blx@tempa}}
- {}}
- {}%
- \blx@postpunct
- \blx@imc@resetpunctfont
- \iftoggle{blx@tempa}
- {}
- {\global\togglefalse{blx@insert}}%
- \blx@leavevmode
- \begingroup}
-
-\def\blx@endunit{%
- \endgroup
- \global\toggletrue{blx@insert}%
- \global\toggletrue{blx@lastins}}
-
-\def\blx@nounit{%
- \global\togglefalse{blx@lastins}}
-
-\def\blx@endnounit{%
- \endgroup\blx@nounit}
-
-\protected\def\blx@imc@newblock{%
- \global\toggletrue{blx@block}}%
-
-\protected\def\blx@imc@newunit{%
- \iftoggle{blx@keepunit}
- {}
- {\global\let\blx@unitpunct\newunitpunct
- \global\toggletrue{blx@unit}}}
-
-\protected\def\blx@imc@setunit{%
- \@ifstar\blx@setunit@i\blx@setunit}
-
-\long\def\blx@setunit#1{%
- \iftoggle{blx@keepunit}
- {}
- {\long\gdef\blx@unitpunct{#1}%
- \global\toggletrue{blx@unit}}}
-
-\def\blx@setunit@i{%
- \iftoggle{blx@lastins}
- {\blx@setunit}
- {\@gobble}}
-
-\protected\def\blx@imc@printunit{%
- \@ifstar\blx@printunit@i\blx@printunit}
-
-\def\blx@printunit#1{%
- \long\gdef\blx@unitpunct{#1\global\togglefalse{blx@keepunit}}%
- \global\toggletrue{blx@keepunit}%
- \global\toggletrue{blx@unit}}
-
-\def\blx@printunit@i{%
- \iftoggle{blx@lastins}
- {\blx@printunit}
- {\@gobble}}
-
-\protected\def\blx@imc@finentry{%
- \unspace\finentrypunct
- \blx@postpunct
- \blx@initunit}
-
-\protected\def\blx@finentry@usedrv{%
- \blx@setunit\relax}
-
-\protected\def\blx@finentry@inset{%
- \blx@setunit\entrysetpunct
- \global\toggletrue{blx@block}}
-
-\blx@regimcs{%
- \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist \thename \strname
- \clearfield \clearlist \clearname \restorefield \restorelist \restorename
- \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword
- \ifciteseen \ifentryseen \ifentryinbib \ifciteibid \ifciteidem \ifopcit \ifloccit
- \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype
- \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal
- \ifbibmacroundef \iffieldundef \iffieldxref \iflistequalcs \iflistequals
- \iflistsequal \iflistundef \iflistxref
- \ifmorenames \ifmoreitems \iffirstcitekey \iflastcitekey
- \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref
- \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist
- \savelistcs \savename \savenamecs \usedriver
- \ifinteger \ifnumeral \ifnumerals \ifpages
- \iffieldint \iffieldnum \iffieldnums \iffieldpages
- \mkpageprefix \mkpagetotal
- \newblock \newunit \setunit \printunit \finentry}
-
-\appto\blx@blxinit{%
- \def\ifnatbibmode{\iftoggle{blx@natbib}}%
- \def\ifcitation{\iftoggle{blx@citation}}%
- \def\ifbibliography{\iftoggle{blx@bibliography}}%
- \def\ifciteindex{\iftoggle{blx@citeindex}}%
- \def\ifbibindex{\iftoggle{blx@bibindex}}%
- \def\iffootnote{\iftoggle{blx@footnote}}%
- \def\ifuseprefix{\iftoggle{blx@useprefix}}%
- \def\ifterseinits{\iftoggle{blx@terseinits}}%
- \def\iffirstinits{\iftoggle{blx@giveninits}}% legacy name for \ifgiveninits
- \def\ifgiveninits{\iftoggle{blx@giveninits}}%
- \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}%
- \def\ifandothers#1{\iftoggle{abx@bool@more#1}}%
- \protected\def\pno{\bibstring{page}}%
- \protected\def\ppno{\bibstring{pages}}%
- \let\nopp\relax
- \protected\def\psq{\sqspace\bibstring{sequens}}%
- \protected\def\psqq{\sqspace\bibstring{sequentes}}}
-
-% Make sure that commands which might pop up inside an \edef will be defined
-% as something. If they are taken \AtBeginDocument then we assume that all will
-% be well. If not, then provide a definition which will give an error outside
-% of a citation context.
-\AtBeginDocument{%
- \protected\def\do#1{%
- \ifdefined#1%
- \else
- \protected\def#1{\ERROR}%
- \fi
- }%
- \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}%
-}
-
-%% Global formatting hooks
-
-% capitalization
-
-% {<text>}
-\newrobustcmd{\MakeCapital}[1]{%
- \begingroup
- \blx@mkcp@init
- \protected@edef\blx@tempa{#1}%
- \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end}
-
-\def\blx@mkcp@init{%
- \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}%
- \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}%
- \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}%
- \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}%
- \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents
- \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents
- \def\IeC##1{\blx@mkcp@iec\IeC{##1}}%
- \def\@tabacckludge##1{%
- \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}}
-
-\begingroup
-\catcode`\"=\active
-\gappto\blx@mkcp@init{%
- \ifnum\catcode`\"=\active
- \def"#1{\blx@mkcp@bbl"\noexpand#1}%
- \fi}
-\endgroup
-
-\def\blx@mkcp@parse{%
- \futurelet\@let@token\blx@mkcp@eval}
-
-\long\def\blx@mkcp@eval{%
- \ifx\@let@token\blx@mkcp@iec
- \expandafter\blx@mkcp@getiec
- \fi
- \ifx\@let@token\blx@mkcp@bbl
- \expandafter\blx@mkcp@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@sgl
- \expandafter\blx@mkcp@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@dbl
- \expandafter\blx@mkcp@getthree
- \fi
- \blx@mkcp@case}
-
-\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{%
- \blx@mkcp@case{#2#3{#4}}}
-
-\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{%
- \blx@mkcp@case{#2#3#4}}
-
-\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{%
- \blx@mkcp@case{#2#3#4#5}}
-
-\long\def\blx@mkcp@case#1{%
- \begingroup
- \def\i{I}\def\j{J}%
- \def\do##1##2{\let##1##2\do}%
- \expandafter\do\@uclclist\relax{\relax\@gobble}%
- \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}%
- \blx@tempa}
-
-\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{%
- \let\blx@mkcp@iec\noexpand
- \let\blx@mkcp@bbl\noexpand
- \let\blx@mkcp@sgl\noexpand
- \let\blx@mkcp@dbl\noexpand
- \protected@edef\blx@tempa{\endgroup#1}%
- \blx@tempa}
-
-\def\abx@dosingleaccents{%
- \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
- \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
-\def\abx@dodoubleaccents{%
- \do\t}
-
-% {<text>}
-\newrobustcmd*{\MakeSentenceCase}{%
- \@ifstar\blx@mksc@i\blx@mksc@ii}
-
-\def\blx@mksc@i{%
- \ifdef\abx@field@langid
- {\xifinlist\abx@field@langid\blx@cmksc@lang
- {\blx@mksc@ii}
- {\@firstofone}}
- {\blx@mksc@ii}}
-
-\long\def\blx@mksc@ii#1{%
- \begingroup
- \let\blx@tempa\@empty
- \let\blx@tempb\@empty
- \blx@mksc@init
- \protected@edef\@tempa{#1}%
- \expandafter\blx@mksc@parse\@tempa\blx@mksc@end}
-
-\def\blx@mksc@init{%
- \blx@mkcp@init
- \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}%
- \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}%
- \def\do##1{%
- \ifx##1\relax
- \else
- \def##1{\blx@mkcp@nil##1}%
- \expandafter\do
- \fi}%
- \expandafter\do\@uclclist\relax}
-
-\def\blx@mksc@parse{%
- \futurelet\@let@token\blx@mksc@eval}
-
-\def\blx@mksc@eval{%
- \ifx\@let@token\blx@mksc@end
- \expandafter\blx@mksc@end
- \fi
- \ifx\@let@token\bgroup
- \expandafter\blx@mksc@group
- \fi
- \ifx\@let@token\@sptoken
- \expandafter\blx@mksc@space
- \fi
- \ifx\@let@token\blx@mkcp@nil
- \expandafter\blx@mksc@getone
- \fi
- \ifx\@let@token\blx@mkcp@iec
- \expandafter\blx@mksc@getiec
- \fi
- \ifx\@let@token\blx@mkcp@bbl
- \expandafter\blx@mksc@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@sgl
- \expandafter\blx@mksc@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@dbl
- \expandafter\blx@mksc@getthree
- \fi
- \if\noexpand\@let@token\relax
- \expandafter\blx@mksc@cs
- \fi
- \blx@mksc@other}
-
-\def\blx@mksc@end#1\blx@mksc@end{%
- \blx@mksc@eject
- \let\blx@mkcp@nil\noexpand
- \let\blx@mkcp@iec\noexpand
- \let\blx@mkcp@bbl\noexpand
- \let\blx@mkcp@sgl\noexpand
- \let\blx@mkcp@dbl\noexpand
- \let\MakeUppercase\relax
- \let\MakeLowercase\relax
- \protected@edef\blx@tempa{\endgroup\blx@tempa}%
- \blx@tempa}
-
-\long\def\blx@mksc@group#1\blx@mksc@other#2{%
- \futurelet\@let@token\blx@mksc@ingroup#2&{#2}%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\long\def\blx@mksc@ingroup#1&#2{%
- \if\noexpand\@let@token\relax
- \blx@mksc@locase{{#2}}%
- \else
- \blx@mksc@nocase{{#2}}%
- \fi}
-
-\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other}
-\csuse{blx@mksc@space} {%
- \blx@mksc@anycase{ }%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\long\def\blx@mksc@cs#1\blx@mksc@other#2{%
- \ifcat\noexpand~\noexpand#2%
- \blx@mksc@locase{#2}%
- \else
- \blx@mksc@nocase{#2}%
- \fi
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{%
- \blx@mksc@other{#2#3{#4}}}
-
-\def\blx@mksc@getone#1\blx@mksc@other#2#3{%
- \blx@mksc@other{#2#3}}
-
-\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{%
- \blx@mksc@other{#2#3#4}}
-
-\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{%
- \blx@mksc@other{#2#3#4#5}}
-
-\long\def\blx@mksc@other#1{%
- \blx@mksc@locase{#1}%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\def\blx@mksc@locase{%
- \appto\blx@tempb}
-
-\def\blx@mksc@nocase{%
- \blx@mksc@eject
- \appto\blx@tempa}
-
-\def\blx@mksc@anycase{%
- \ifx\blx@tempb\@empty
- \expandafter\appto
- \expandafter\blx@tempa
- \else
- \expandafter\appto
- \expandafter\blx@tempb
- \fi}
-
-\def\blx@mksc@eject{%
- \ifx\blx@tempb\@empty
- \else
- \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}%
- \let\blx@tempb\@empty
- \fi}
-
-\def\blx@mksc@endhead{%
- \ifx\blx@tempb\@empty
- \else
- \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}%
- \let\blx@tempb\@empty
- \fi
- \let\blx@mksc@endhead\relax}
-
-% {<language,language,...>}
-\newrobustcmd*{\DeclareCaseLangs}{%
- \@ifstar
- {\blx@defcaselangs}
- {\global\let\blx@cmksc@lang\@empty
- \blx@defcaselangs}}
-
-\def\blx@defcaselangs#1{%
- \ifblank{#1}
- {}
- {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}}
-
-\DeclareCaseLangs{%
- american,british,canadian,
- english,USenglish,UKenglish,
- australian,newzealand}
-
-%% Main formatting commands
-
-% [<entrytype>]{<name>}{<definiton>}
-\newrobustcmd*{\DeclareNameFormat}{%
- \@ifstar
- {\blx@defformat\blx@defnameformat{nfd}*}
- {\blx@defformat\blx@defnameformat{nfd}{}}}
-
-\newrobustcmd*{\DeclareIndexNameFormat}{%
- \@ifstar
- {\blx@defformat\blx@defnameformat{nid}*}
- {\blx@defformat\blx@defnameformat{nid}{}}}
-
-\newrobustcmd*{\DeclareListFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{lfd}*}
- {\blx@defformat\blx@defplainformat{lfd}{}}}
-\newrobustcmd*{\DeclareIndexListFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{lid}*}
- {\blx@defformat\blx@defplainformat{lid}{}}}
-
-\newrobustcmd*{\DeclareFieldFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{ffd}*}
- {\blx@defformat\blx@defplainformat{ffd}{}}}
-\newrobustcmd*{\DeclareIndexFieldFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{fid}*}
- {\blx@defformat\blx@defplainformat{fid}{}}}
-
-% {<macro>}{<class>}{<*>}
-\def\blx@defformat#1#2#3{%
- \@ifnextchar[%]
- {\blx@defformat@i{#1}{#2}{#3}}
- {\blx@defformat@i{#1}{#2}{#3}[*]}}
-
-% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}
-\def\blx@defformat@i#1#2#3[#4]#5{%
- \notblank{#3}
- {\blx@resetformat{#2}{#5}}
- {}%
- \def\blx@defformat@a{#2}%
- \def\blx@defformat@b{#4}%
- \blx@xsanitizeafter{\def\blx@defformat@c}{#5}%
- \afterassignment\blx@defformat@ii
- #1}
-
-\def\blx@defformat@ii{%
- \expandafter\forcsvlist
- \expandafter\blx@defformat@iii
- \expandafter{\blx@defformat@b}}
-
-\def\blx@defformat@iii#1{%
- \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d}
-
-\def\blx@defplainformat{%
- \long\def\blx@defformat@d##1}
-
-\def\blx@defnameformat{%
- \long\def\blx@defformat@d##1}
-
-\def\blx@resetformat#1#2{%
- \let\blx@saved@do\do
- \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}%
- \blx@safe@actives
- \dolistcsloop{blx@biber@datamodel@entrytypes}%
- \blx@rest@actives
- \let\do\blx@saved@do}
-
-\def\blx@resetformat@i#1#2#3{%
- \ifcsdef{abx@#1@#3@#2}
- {\csundef{abx@#1@#3@#2}}
- {}}
-
-% {<name>}{<name>}
-\def\blx@letformat#1#2{%
- \blx@safe@actives
- \afterassignment\blx@rest@actives
- \csletcs{#1}{#2}}
-
-% [aliastype]{aliasname}[formattype]{formatname}
-\def\blx@defalias#1{%
- \@ifnextchar[%]
- {\blx@defalias@i{#1}}
- {\blx@defalias@i{#1}[*]}}
-\def\blx@defalias@i#1[#2]#3{%
- \@ifnextchar[%]
- {\blx@defalias@ii{#1}{#2}{#3}}
- {\blx@defalias@ii{#1}{#2}{#3}[*]}}
-\def\blx@defalias@ii#1#2#3[#4]#5{%
- \blx@safe@actives
- \afterassignment\blx@rest@actives
- \csedef{abx@#1@#2@#3}{%
- \expandonce{\csname abx@#1@#4@#5\endcsname}}}
-
-% {<macro>}{<id>}{<name>}{<field>}
-\def\blx@getformat#1#2#3#4{%
- \blx@safe@actives
- \afterassignment\blx@rest@actives
- \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3}
- {\ifcsundef{abx@#2@*@#3}
- {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4}
- {\ifcsundef{abx@#2@*@#4}
- {\letcs#1{abx@#2@*@default}}
- {\letcs#1{abx@#2@*@#4}}}
- {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}}
- {\letcs#1{abx@#2@*@#3}}}
- {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}}
-
-% [<entrytype>]{<name>}
-\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}}
-\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}}
-\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}}
-
-\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}}
-\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}}
-\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}}
-
-% [<entrytype>]{<name>}{<true>}{<false>}
-\newrobustcmd*{\iffieldformatundef}[2][*]{\ifcsundef{abx@ffd@#1@#2}}
-\newrobustcmd*{\iflistformatundef}[2][*]{\ifcsundef{abx@lfd@#1@#2}}
-\newrobustcmd*{\ifnameformatundef}[2][*]{\ifcsundef{abx@nfd@#1@#2}}
-
-% [<entrytype>]{<alias>}[<entrytype>]{<name>}
-\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}}
-\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}}
-
-\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}}
-\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}}
-
-\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}}
-\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}}
-
-% [<format>]{<text>}
-\newrobustcmd{\blx@imc@printtext}[2][]{%
- \ifblank{#2}
- {\blx@nounit}
- {\ifblank{#1}
- {\let\blx@theformat\@firstofone}
- {\blx@getformat\blx@theformat{ffd}{#1}{}}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \blx@theformat{#2}%
- \blx@endunit}}}
-
-% [<format>]{<field>}
-\newrobustcmd*{\blx@imc@printfield}[2][]{%
- \blx@imc@iffieldundef{#2}
- {\blx@nounit}
- {\blx@getformat\blx@theformat{ffd}{#1}{#2}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \edef\currentfield{#2}%
- \expandafter\expandafter
- \expandafter\blx@theformat
- \expandafter\expandafter
- \expandafter{\csname abx@field@#2\endcsname}%
- \blx@endunit}}}
-
-% [<format>]{<field>}
-\newcommand*{\blx@imc@indexfield}[2][]{%
- \blx@imc@iffieldundef{#2}
- {}
- {\blx@getformat\blx@theformat{fid}{#1}{#2}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \edef\currentfield{#2}%
- \letcs\blx@tempa{abx@field@#2}%
- \expandafter\blx@theformat\expandafter{\blx@tempa}%
- \endgroup}}}
-
-% [<format>]{<file>}
-\newrobustcmd*{\blx@imc@printfile}[2][]{%
- \iftoggle{blx@loadfiles}
- {\IfFileExists{#2}
- {\listxadd\blx@list@req@edit{#2}%
- \blx@imc@printtext[#1]{\input{#2}\unspace}}
- {\blx@nounit}}
- {\blx@nounit}}
-
-% {<macro>}[<format>][<start>-<stop>]
-% => <macro>{<format>}{<start>}{<stop>}
-\def\blx@listargs#1{%
- \@ifnextchar[%]
- {\blx@listargs@i{#1}}
- {#1{}{}{}}}
-
-\def\blx@listargs@i#1[#2]{%
- \@ifnextchar[%]
- {\blx@listargs@ii{#1}{#2}}
- {#1{#2}{}{}}}
-
-\def\blx@listargs@ii#1#2[#3]{%
- \blx@listargs@iii{#1}{#2}#3&}
-
-\def\blx@listargs@iii#1#2#3-#4&{%
- #1{#2}{#3}{#4}}
-
-% [<format>][<start>-<stop>]{<namelist>}
-\protected\def\blx@imc@printnames{%
- \blx@listargs\blx@printnames}
-
-% {<format>}{<start>}{<stop>}{<namelist>}
-\def\blx@printnames#1#2#3#4{%
- \blx@imc@ifnameundef{#4}
- {\blx@nounit}
- {\blx@getformat\blx@theformat{nfd}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \blx@namesetup{#2}{#3}{#4}%
- \expandafter\blx@nameparser\blx@thedata{}&%
- \blx@endunit}}}
-
-\def\blx@namesetup#1#2#3{%
- \def\currentname{#3}%
- \c@listcount\@ne
- \c@listtotal\csname c@#3\endcsname
- \blx@namesetup@i{#3}%
- \ifblank{#1}
- {\c@liststart\@ne}
- {\ifnum#1<\@ne
- \c@liststart\@ne
- \else
- \c@liststart#1\relax
- \fi}%
- \ifblank{#2}
- {\c@liststop\c@listtotal
- \ifnum\c@liststop>\c@maxnames
- \c@liststop\c@minnames
- \ifnum\c@uniquelist>\c@liststop
- \c@liststop\c@uniquelist
- \fi
- \fi}
- {\ifnum#2>\c@listtotal
- \c@liststop\c@listtotal
- \else
- \ifnum#2<\@ne
- \c@liststop\@ne
- \else
- \c@liststop#2\relax
- \fi
- \fi}%
- \blx@namecodes}
-
-\def\blx@namesetup@i#1{%
- \expandafter\expandafter
- \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname}
-
-\def\blx@namesetup@ii#1#2{%
- \c@uniquelist\z@
- \ifblank{#1}
- {}
- {\setkeys{blx@opt@namelist}{#1}}%
- \def\blx@thedata{#2}}
-
-% Per-namelist options
-\define@key{blx@opt@namelist}{uniquelist}{\c@uniquelist#1\relax}
-\define@key{blx@opt@namelist}{useprefix}{\settoggle{blx@useprefix}{#1}}
-\define@key{blx@opt@namelist}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}}
-
-% Per-name options
-\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax}
-\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}}
-\define@key{blx@opt@name}{useprefix}{\settoggle{blx@useprefix}{#1}}
-\define@key{blx@opt@name}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}}
-
-\newrobustcmd*{\bibinitperiod}{\adddot}
-\newrobustcmd*{\bibinitdelim}{\addnbspace}
-\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}}
-\newrobustcmd*{\bibnamedelima}{\addhighpenspace}
-\newrobustcmd*{\bibnamedelimb}{\addlowpenspace}
-\newrobustcmd*{\bibnamedelimc}{\addhighpenspace}
-\newrobustcmd*{\bibnamedelimd}{\addlowpenspace}
-\newrobustcmd*{\bibnamedelimi}{\addnbspace}
-
-% [<format>][<start>-<stop>]{<namelist>}
-\protected\def\blx@imc@indexnames{%
- \blx@listargs\blx@indexnames}
-
-% {<format>}{<start>}{<stop>}{<namelist>}
-\def\blx@indexnames#1#2#3#4{%
- \blx@imc@ifnameundef{#4}
- {}
- {\blx@getformat\blx@theformat{nid}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \blx@namesetup{#2}{#3}{#4}%
- \blx@indexnamesetup
- \expandafter\blx@nameparser\blx@thedata{}&%
- \endgroup}}}
-
-\def\blx@indexnamesetup{%
- \let\bibinitperiod\bibindexinitperiod
- \let\bibinitdelim\bibindexinitdelim
- \let\bibinithyphendelim\bibindexinithyphendelim
- \let\bibnamedelima\bibindexnamedelima
- \let\bibnamedelimb\bibindexnamedelimb
- \let\bibnamedelimc\bibindexnamedelimc
- \let\bibnamedelimd\bibindexnamedelimd
- \let\bibnamedelimi\bibindexnamedelimi}
-
-% {<name1>}{<name2>}{...}
-\long\def\blx@nameparser#1{%
- \ifblank{#1}
- {\blx@namebreak}
- {\ifnum\c@listcount<\c@liststart
- \else
- \blx@nameparser@i#1%
- \fi
- \advance\c@listcount\@ne
- \ifnum\c@listcount>\c@liststop
- \expandafter\blx@namebreak
- \fi
- \blx@nameparser}}
-
-\long\def\blx@nameparser@i#1{%
- \ifblank{#1}
- {}
- {\setkeys{blx@opt@name}{#1}}%
- % reset all the nameparts to empty between names
- \def\do##1{%
- \cslet{namepart##1}\@empty
- \cslet{namepart##1i}\@empty}%
- \expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}%
- \blx@theformat}
-
-\long\def\blx@namebreak#1&{}
-
-% [<format>][<start>-<stop>]{<plainlist>}
-\protected\def\blx@imc@printlist{%
- \blx@listargs\blx@printlist}
-
-% {<format>}{<start>}{<stop>}{<plainlist>}
-\def\blx@printlist#1#2#3#4{%
- \blx@imc@iflistundef{#4}
- {\blx@nounit}
- {\blx@getformat\blx@theformat{lfd}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \blx@listsetup{#2}{#3}{#4}%
- \expandafter\blx@listparser\blx@thedata{}&%
- \blx@endunit}}}
-
-\def\blx@listsetup#1#2#3{%
- \def\currentlist{#3}%
- \c@listcount\@ne
- \expandafter\c@listtotal\csname c@#3\endcsname
- \letcs\blx@thedata{abx@list@#3}%
- \ifblank{#1}
- {\c@liststart\@ne}
- {\ifnum#1<\@ne
- \c@liststart\@ne
- \else
- \c@liststart#1\relax
- \fi}%
- \ifblank{#2}
- {\c@liststop\c@listtotal
- \ifnum\c@listtotal>\c@maxitems
- \c@liststop\c@minitems
- \fi}
- {\ifnum#2>\c@listtotal
- \c@liststop\c@listtotal
- \else
- \ifnum#2<\@ne
- \c@liststop\@ne
- \else
- \c@liststop#2\relax
- \fi
- \fi}}
-
-% [<format>][<start>-<stop>]{<plainlist>}
-\protected\def\blx@imc@indexlist{%
- \blx@listargs\blx@indexlist}
-
-% {<format>}{<start>}{<stop>}{<plainlist>}
-\def\blx@indexlist#1#2#3#4{%
- \blx@imc@iflistundef{#4}
- {}
- {\blx@getformat\blx@theformat{lid}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \blx@listsetup{#2}{#3}{#4}%
- \expandafter\blx@listparser\blx@thedata{}&%
- \endgroup}}}
-
-% {<item1>}{<item2>}{...}
-\long\def\blx@listparser#1{%
- \ifblank{#1}
- {\blx@listbreak}
- {\ifnum\c@listcount<\c@liststart
- \else
- \blx@theformat{#1}%
- \fi
- \advance\c@listcount\@ne
- \ifnum\c@listcount>\c@liststop
- \expandafter\blx@listbreak
- \fi
- \blx@listparser}}
-
-\long\def\blx@listbreak#1&{}
-
-% <*>{<key>}{<code>}
-\protected\def\blx@imc@entrydata{%
- \@ifstar
- {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}}
- {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}}
-
-\long\def\blx@imc@entrydata@i#1#2#3{%
- \blx@ifdata{#2}
- {\begingroup
- #1%
- \blx@resetdata
- \blx@getdata{#2}%
- \blx@entrysetcount
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \addtocounter{instcount}\@ne
- \blx@execute
- \blx@beglangbib#3\blx@endlangbib
- \endgroup}
- {}}
-
-\protected\def\blx@imc@entryset#1#2{%
- \blx@imc@iffieldundef{entrykey}
- {}
- {\begingroup
- \long\def\blx@entryset@precode{#1}%
- \long\def\blx@entryset@postcode{#2}%
- \let\finentry\blx@finentry@inset
- \let\do\blx@entryset
- \blx@imc@docsvfield{entryset}%
- \endgroup}}
-
-\def\blx@entryset#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@imc@clearlist{pageref}%
- \blx@getdata{#1}%
- \blx@setoptions@type\abx@field@entrytype
- \def\abx@field@entrysetcount{1}%
- \blx@entryset@precode
- \blx@driver{\blx@imc@thefield{entrytype}}%
- \blx@entryset@postcode
- \endgroup}
- {}%
- \let\do\blx@entryset@i}
-
-\def\blx@entryset@i#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@resetdata
- \blx@getdata{#1}%
- \blx@entrysetcount
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \addtocounter{instcount}\@ne
- \blx@execute
- \blx@beglangbib
- \blx@begunit
- \blx@entryset@precode
- \blx@driver{\blx@imc@thefield{entrytype}}
- \blx@entryset@postcode
- \blx@endunit
- \blx@endlangbib
- \endgroup}
- {\blx@nounit}}
-
-\blx@regimcs{%
- \printtext \printfield \printlist \printnames \printfile
- \indexfield \indexlist \indexnames \entrydata \entryset}
-
-%% Localization
-
-% [<wrapper>]{<string>}
-\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{%
- \blx@bibstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{%
- \blx@bibstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{%
- \blx@bibstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@bibstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {\blx@imc@ifcapital
- {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}}
- {#1{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% [<wrapper>]{<string>}
-\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{%
- \blx@bibcpstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{%
- \blx@bibcpstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{%
- \blx@bibcpstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@bibcpstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% [<wrapper>]{<string>}
-\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{%
- \blx@biblcstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{%
- \blx@biblcstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{%
- \blx@biblcstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@biblcstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% [<wrapper>]{<string>}
-\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{%
- \blx@bibucstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{%
- \blx@bibucstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{%
- \blx@bibucstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@bibucstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% {<string>}
-\def\blx@imc@bibxstring#1{%
- \blx@bibxstring{\abx@str}{#1}}
-
-\def\blx@imc@bibxlstring#1{%
- \blx@bibxstring{abx@lstr}{#1}}
-
-\def\blx@imc@bibxsstring#1{%
- \blx@bibxstring{abx@sstr}{#1}}
-
-\def\blx@bibxstring#1#2{%
- \ifcsundef{#1@#2}
- {\protect\blx@warn@nostring{#2}}
- {\csuse{#1@#2}}}
-
-% {<string>}{<true>}{<false>}
-\def\blx@imc@ifbibstring#1{%
- \ifcsundef{\abx@str @\detokenize{#1}}
- {\@secondoftwo}
- {\@firstoftwo}}
-
-\def\blx@imc@ifbibxstring#1{%
- \blx@xsanitizeafter\ifcsundef{\abx@str @#1}
- {\@secondoftwo}
- {\@firstoftwo}}
-
-% {<field>}{<true>}{<false>}
-\def\blx@imc@iffieldbibstring#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\ifcsundef{\abx@str @\detokenize\expandafter
- \expandafter\expandafter{%
- \csname abx@field@#1\endcsname}}
- {\@secondoftwo}
- {\@firstoftwo}}}
-
-\blx@regimcs{%
- \bibstring \biblstring \bibsstring
- \bibxstring \bibxlstring \bibxsstring
- \bibcpstring \bibcplstring \bibcpsstring
- \biblcstring \biblclstring \biblcsstring
- \bibucstring \bibuclstring \bibucsstring
- \ifbibstring \ifbibxstring \iffieldbibstring}
-
-\let\blx@hook@uc\relax
-\let\blx@hook@lc\relax
-
-\AtEndPreamble{%
- \toggletrue{blx@tempa}%
- \toggletrue{blx@tempb}%
- \expandafter\patchcmd\csname MakeUppercase \endcsname
- {\protected@edef}
- {\blx@hook@uc\protected@edef}
- {\togglefalse{blx@tempa}}
- {}%
- \expandafter\patchcmd\csname MakeLowercase \endcsname
- {\protected@edef}
- {\blx@hook@lc\protected@edef}
- {\togglefalse{blx@tempb}}
- {}%
- \@ifpackageloaded{textcase}
- {\expandafter\patchcmd\csname MakeUppercase \endcsname
- {\def\i}
- {\blx@hook@uc\def\i}
- {\togglefalse{blx@tempa}}
- {}%
- \expandafter\patchcmd\csname MakeLowercase \endcsname
- {\@uclcnotmath{}}
- {\@uclcnotmath{\blx@hook@lc}}
- {\togglefalse{blx@tempb}}
- {}%
- \expandafter\patchcmd\csname MakeTextUppercase \endcsname
- {\def\i}
- {\blx@hook@uc\def\i}
- {}
- {}%
- \expandafter\patchcmd\csname MakeTextLowercase \endcsname
- {\@uclcnotmath{}}
- {\@uclcnotmath{\blx@hook@lc}}
- {}
- {}}
- {}%
- \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}%
- \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}%
-}
-
-\appto\blx@blxinit{%
- \def\blx@hook@uc{%
- \def\bibstring{\blx@imc@bibucstring}%
- \def\biblstring{\blx@imc@bibuclstring}%
- \def\bibsstring{\blx@imc@bibucsstring}%
- \def\biblcstring{\blx@imc@bibucstring}%
- \def\biblclstring{\blx@imc@bibuclstring}%
- \def\biblcsstring{\blx@imc@bibucsstring}%
- \def\bibcpstring{\blx@imc@bibucstring}%
- \def\bibcplstring{\blx@imc@bibuclstring}%
- \def\bibcpsstring{\blx@imc@bibucsstring}}%
- \def\blx@hook@lc{%
- \def\bibstring{\blx@imc@biblcstring}%
- \def\biblstring{\blx@imc@biblclstring}%
- \def\bibsstring{\blx@imc@biblcsstring}%
- \def\bibucstring{\blx@imc@biblcstring}%
- \def\bibuclstring{\blx@imc@biblclstring}%
- \def\bibucsstring{\blx@imc@biblcsstring}%
- \def\bibcpstring{\blx@imc@biblcstring}%
- \def\bibcplstring{\blx@imc@biblclstring}%
- \def\bibcpsstring{\blx@imc@biblcsstring}}}
-
-\def\abx@dostrings{%
- \do{bibliography}%
- \do{references}%
- \do{shorthands}%
- \do{editor}%
- \do{editors}%
- \do{compiler}%
- \do{compilers}%
- \do{redactor}%
- \do{redactors}%
- \do{reviser}%
- \do{revisers}%
- \do{founder}%
- \do{founders}%
- \do{continuator}%
- \do{continuators}%
- \do{collaborator}%
- \do{collaborators}%
- \do{translator}%
- \do{translators}%
- \do{commentator}%
- \do{commentators}%
- \do{annotator}%
- \do{annotators}%
- \do{commentary}%
- \do{annotations}%
- \do{introduction}%
- \do{foreword}%
- \do{afterword}%
- \do{editortr}%
- \do{editorstr}%
- \do{editorco}%
- \do{editorsco}%
- \do{editoran}%
- \do{editorsan}%
- \do{editorin}%
- \do{editorsin}%
- \do{editorfo}%
- \do{editorsfo}%
- \do{editoraf}%
- \do{editorsaf}%
- \do{editortrco}%
- \do{editorstrco}%
- \do{editortran}%
- \do{editorstran}%
- \do{editortrin}%
- \do{editorstrin}%
- \do{editortrfo}%
- \do{editorstrfo}%
- \do{editortraf}%
- \do{editorstraf}%
- \do{editorcoin}%
- \do{editorscoin}%
- \do{editorcofo}%
- \do{editorscofo}%
- \do{editorcoaf}%
- \do{editorscoaf}%
- \do{editoranin}%
- \do{editorsanin}%
- \do{editoranfo}%
- \do{editorsanfo}%
- \do{editoranaf}%
- \do{editorsanaf}%
- \do{editortrcoin}%
- \do{editorstrcoin}%
- \do{editortrcofo}%
- \do{editorstrcofo}%
- \do{editortrcoaf}%
- \do{editorstrcoaf}%
- \do{editortranin}%
- \do{editorstranin}%
- \do{editortranfo}%
- \do{editorstranfo}%
- \do{editortranaf}%
- \do{editorstranaf}%
- \do{translatorco}%
- \do{translatorsco}%
- \do{translatoran}%
- \do{translatorsan}%
- \do{translatorin}%
- \do{translatorsin}%
- \do{translatorfo}%
- \do{translatorsfo}%
- \do{translatoraf}%
- \do{translatorsaf}%
- \do{translatorcoin}%
- \do{translatorscoin}%
- \do{translatorcofo}%
- \do{translatorscofo}%
- \do{translatorcoaf}%
- \do{translatorscoaf}%
- \do{translatoranin}%
- \do{translatorsanin}%
- \do{translatoranfo}%
- \do{translatorsanfo}%
- \do{translatoranaf}%
- \do{translatorsanaf}%
- \do{byauthor}%
- \do{byeditor}%
- \do{bycompiler}%
- \do{byredactor}%
- \do{byreviser}%
- \do{byreviewer}%
- \do{byfounder}%
- \do{bycontinuator}%
- \do{bycollaborator}%
- \do{bytranslator}%
- \do{bycommentator}%
- \do{byannotator}%
- \do{withcommentator}%
- \do{withannotator}%
- \do{withintroduction}%
- \do{withforeword}%
- \do{withafterword}%
- \do{byeditortr}%
- \do{byeditorco}%
- \do{byeditoran}%
- \do{byeditorin}%
- \do{byeditorfo}%
- \do{byeditoraf}%
- \do{byeditortrco}%
- \do{byeditortran}%
- \do{byeditortrin}%
- \do{byeditortrfo}%
- \do{byeditortraf}%
- \do{byeditorcoin}%
- \do{byeditorcofo}%
- \do{byeditorcoaf}%
- \do{byeditoranin}%
- \do{byeditoranfo}%
- \do{byeditoranaf}%
- \do{byeditortrcoin}%
- \do{byeditortrcofo}%
- \do{byeditortrcoaf}%
- \do{byeditortranin}%
- \do{byeditortranfo}%
- \do{byeditortranaf}%
- \do{bytranslatorco}%
- \do{bytranslatoran}%
- \do{bytranslatorin}%
- \do{bytranslatorfo}%
- \do{bytranslatoraf}%
- \do{bytranslatorcoin}%
- \do{bytranslatorcofo}%
- \do{bytranslatorcoaf}%
- \do{bytranslatoranin}%
- \do{bytranslatoranfo}%
- \do{bytranslatoranaf}%
- \do{and}%
- \do{andothers}%
- \do{andmore}%
- \do{volume}%
- \do{volumes}%
- \do{involumes}%
- \do{part}%
- \do{jourvol}%
- \do{jourser}%
- \do{newseries}%
- \do{oldseries}%
- \do{edition}%
- \do{reprint}%
- \do{reprintof}%
- \do{reprintas}%
- \do{reprintfrom}%
- \do{reviewof}%
- \do{translationof}%
- \do{translationas}%
- \do{translationfrom}%
- \do{origpubas}%
- \do{origpubin}%
- \do{astitle}%
- \do{bypublisher}%
- \do{page}%
- \do{pages}%
- \do{column}%
- \do{columns}%
- \do{line}%
- \do{lines}%
- \do{nodate}%
- \do{verse}%
- \do{verses}%
- \do{section}%
- \do{sections}%
- \do{paragraph}%
- \do{paragraphs}%
- \do{in}%
- \do{inseries}%
- \do{ofseries}%
- \do{book}%
- \do{issue}%
- \do{number}%
- \do{chapter}%
- \do{mathesis}%
- \do{phdthesis}%
- \do{candthesis}%
- \do{resreport}%
- \do{techreport}%
- \do{software}%
- \do{datacd}%
- \do{audiocd}%
- \do{version}%
- \do{url}%
- \do{urlfrom}%
- \do{urlseen}%
- \do{file}%
- \do{inpreparation}%
- \do{submitted}%
- \do{inpress}%
- \do{prepublished}%
- \do{forthcoming}%
- \do{library}%
- \do{abstract}%
- \do{annotation}%
- \do{citedas}%
- \do{seenote}%
- \do{quotedin}%
- \do{opcit}%
- \do{loccit}%
- \do{ibidem}%
- \do{idem}%
- \do{idemsf}%
- \do{idemsm}%
- \do{idemsn}%
- \do{idempf}%
- \do{idempm}%
- \do{idempn}%
- \do{idempp}%
- \do{confer}%
- \do{sequens}%
- \do{sequentes}%
- \do{passim}%
- \do{see}%
- \do{seealso}%
- \do{backrefpage}%
- \do{backrefpages}%
- \do{thiscite}%
- \do{january}%
- \do{february}%
- \do{march}%
- \do{april}%
- \do{may}%
- \do{june}%
- \do{july}%
- \do{august}%
- \do{september}%
- \do{october}%
- \do{november}%
- \do{december}%
- \do{langamerican}%
- \do{langbrazilian}%
- \do{langcatalan}%
- \do{langcroatian}%
- \do{langczech}%
- \do{langdanish}%
- \do{langdutch}%
- \do{langenglish}%
- \do{langfinnish}%
- \do{langfrench}%
- \do{langgerman}%
- \do{langgreek}%
- \do{langitalian}%
- \do{langjapanese}%
- \do{langlatin}%
- \do{langnorwegian}%
- \do{langpolish}%
- \do{langportuguese}%
- \do{langrussian}%
- \do{langslovene}%
- \do{langspanish}%
- \do{langswedish}%
- \do{fromamerican}%
- \do{frombrazilian}%
- \do{fromcatalan}%
- \do{fromcroatian}%
- \do{fromczech}%
- \do{fromdanish}%
- \do{fromdutch}%
- \do{fromenglish}%
- \do{fromfinnish}%
- \do{fromfrench}%
- \do{fromgerman}%
- \do{fromgreek}%
- \do{fromitalian}%
- \do{fromjapanese}%
- \do{fromlatin}%
- \do{fromnorwegian}%
- \do{frompolish}%
- \do{fromportuguese}%
- \do{fromrussian}%
- \do{fromslovene}%
- \do{fromspanish}%
- \do{fromswedish}%
- \do{countryde}%
- \do{countryep}%
- \do{countryeu}%
- \do{countryfr}%
- \do{countryuk}%
- \do{countryus}%
- \do{patent}%
- \do{patentde}%
- \do{patenteu}%
- \do{patentfr}%
- \do{patentuk}%
- \do{patentus}%
- \do{patreq}%
- \do{patreqde}%
- \do{patreqeu}%
- \do{patreqfr}%
- \do{patrequk}%
- \do{patrequs}%
-}
-
-\newrobustcmd*{\NewBibliographyString}[1]{%
- \forcsvlist\blx@newstring{#1}}
-
-\def\blx@newstring#1{%
- \ifcsundef{KV@blx@lbx@#1}
- {\gappto\abx@dostrings{\do{#1}}%
- \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}}
- {}}
-
-% in *.cbx/bbx/tex: <key> = {<string>},
-% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}},
-\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}}
-\abx@dostrings
-
-% in *.cbx/bbx/tex: (implicit)
-% in *.lbx: inherit = {<language>},
-\define@key{blx@lbx}{inherit}{%
- \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}%
- \csuse{abx@strings@#1}}
-
-\def\blx@cfg@defstring#1#2{%
- \csdef{abx@lstr@#1}{#2}%
- \csdef{abx@sstr@#1}{#2}}
-
-\def\blx@lbx@defstring#1#2{%
- \blx@lbx@defstring@i{#1}#2}
-\def\blx@lbx@defstring@i#1#2#3{%
- \csdef{abx@lstr@#1}{#2}%
- \csdef{abx@sstr@#1}{#3}}
-
-% {<language>}
-\def\blx@lbxcheck#1{%
- \ifcsdef{blx@lng@#1}
- {\expandafter\expandafter\expandafter\IfFileExists
- \expandafter\expandafter\expandafter{%
- \csname blx@lng@#1\endcsname.lbx}
- {}
- {\blx@err@nolang{#1}}}
- {\IfFileExists{#1.lbx}
- {}
- {\blx@err@nolang{#1}}}}
-
-% {<language>}{<definitions>}
-\newrobustcmd*{\DefineBibliographyExtras}[2]{%
- \blx@lbxcheck{#1}%
- \csgappto{blx@hook@extras@#1}{%
- \blx@defbibextras{#1}{#2}}}
-\@onlypreamble\DefineBibliographyExtras
-
-\newrobustcmd*{\UndefineBibliographyExtras}[2]{%
- \blx@lbxcheck{#1}%
- \csgappto{blx@hook@noextras@#1}{%
- \blx@undefbibextras{#1}{#2}}}
-\@onlypreamble\UndefineBibliographyExtras
-
-\def\blx@defbibextras#1{\csgappto{abx@extras@#1}}
-\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}}
-
-% {<language>}{<language>}
-\def\blx@letbibextras#1#2{%
- \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}%
- \global\csletcs{abx@extras@#1}{abx@extras@#2}
- \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}%
-
-% {<language>}{<strings>}
-\newrobustcmd*{\DefineBibliographyStrings}[2]{%
- \blx@lbxcheck{#1}%
- \csgappto{blx@hook@strings@#1}{%
- \begingroup
- \let\blx@defstring\blx@cfg@defstring
- \blx@defbibstrings{#1}{#2}%
- \endgroup}}
-\@onlypreamble\DefineBibliographyStrings
-
-\def\blx@defbibstrings#1#2{%
- \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}%
- \abx@dostrings
- \csuse{abx@strings@#1}%
- \setkeys{blx@lbx}{#2}%
- \let\do\blx@defbibstrings@i
- \csxdef{abx@strings@#1}{\abx@dostrings}%
- \csgappto{abx@strings@#1}{%
- \ifcsdef{\abx@str @bibliography}
- {\letcs\bibname{\abx@str @bibliography}}
- {\let\bibname\@empty}%
- \ifcsdef{\abx@str @references}
- {\letcs\refname{\abx@str @references}}
- {\let\refname\@empty}%
- \ifcsdef{\abx@str @shorthands}
- {\letcs\biblistname{\abx@str @shorthands}}
- {\let\biblistname\@empty}}}
-
-\def\blx@defbibstrings@i#1{%
- \ifcsdef{abx@lstr@#1}
- {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{%
- \csexpandonce{abx@lstr@#1}}}
- {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}%
- \ifcsdef{abx@sstr@#1}
- {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{%
- \csexpandonce{abx@sstr@#1}}}
- {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}}
-
-% {<language>}{<language>}
-\def\blx@letbibstrings#1#2{%
- \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}%
- \global\csletcs{abx@strings@#1}{abx@strings@#2}}%
-
-% {<language>}{<exceptions>}
-\newrobustcmd*{\DefineHyphenationExceptions}[2]{%
- \ifcsundef{l@#1}
- {\blx@warn@nohyph{#1}}
- {}%
- \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}}
-\@onlypreamble\DefineHyphenationExceptions
-
-\def\blx@hyphexcept#1#2{%
- \ifcsundef{l@#1}
- {\blx@warn@nohyph{#1}}
- {\begingroup
- \language\csname l@#1\endcsname\relax
- \hyphenation{#2}%
- \endgroup}}
-
-% {<language>}{<mapping>}
-\newrobustcmd*{\DeclareLanguageMapping}[2]{%
- \csgdef{blx@lng@#1}{#2}}
-\@onlypreamble\DeclareLanguageMapping
-
-% {<language>}{<success>}{<failure>}
-\def\blx@lbxinput#1{%
- \ifcsdef{blx@lng@#1}
- {\expandafter\expandafter\expandafter\blx@lbxinput@i
- \expandafter\expandafter\expandafter{%
- \csname blx@lng@#1\endcsname}{#1}}
- {\blx@lbxinput@ii{#1}{#1}{language '#1'}}}
-
-% {<mapping>}{<language>}
-\def\blx@lbxinput@i#1#2{%
- \global\csundef{blx@lng@#2}%
- \IfFileExists{#1.lbx}
- {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}}
- {\blx@warning@noline{%
- File '#1.lbx' not found!\MessageBreak
- Ignoring mapping '#2' -> '#1'}%
- \blx@lbxinput{#2}}}
-
-% {<language>}{<lbxfile>}{<message>}
-\def\blx@lbxinput@ii#1#2#3{%
- \begingroup
- \setbox\@tempboxa=\hbox\bgroup
- \aftergroup\endgroup
- \blx@inputonce{#2.lbx}{#3}
- {\global\cslet{abx@strings@#1}\@empty
- \global\cslet{abx@extras@#1}\@empty
- \global\cslet{abx@noextras@#1}\@empty
- \blx@maplang{#1}{#1}%
- \def\InheritBibliographyStrings{%
- \blx@letbibstrings{#1}}%
- \def\DeclareBibliographyStrings####1{%
- \begingroup
- \let\blx@defstring\blx@lbx@defstring
- \blx@defbibstrings{#1}{####1}%
- \endgroup}%
- \def\InheritBibliographyExtras{\blx@letbibextras{#1}}%
- \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}%
- \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}%
- \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}%
- \begingroup
- \blx@saneccodes
- \makeatletter}
- {\endgroup
- \csuse{blx@hook@strings@#1}%
- \csuse{blx@hook@strings@#2}%
- \csuse{blx@hook@extras@#1}%
- \csuse{blx@hook@extras@#2}%
- \csuse{blx@hook@noextras@#1}%
- \csuse{blx@hook@noextras@#2}%
- \csuse{blx@hook@hyph@#1}%
- \csuse{blx@hook@hyph@#2}}
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \egroup}
-
-% {<language>}
-\def\blx@langsetup#1{%
- \blx@lbxinput{#1}
- {\edef\blx@languagename{#1}}
- {\blx@warning
- {Language '#1' not supported.\MessageBreak
- Using fallback language '\blx@languagename'}%
- \blx@lbxinput{\blx@languagename}
- {\blx@maplang{#1}{\blx@languagename}}
- {\blx@err@nolang{\blx@languagename}}}}
-
-% auxiliary macros
-
-% {<field base name>}
-
-\newrobustcmd*{\mkbibrangeshort}{%
- \mkbibrangefull{short}}
-
-\newrobustcmd*{\mkbibrangelong}{%
- \mkbibrangefull{long}}
-
-\newrobustcmd*{\mkbibrangeterse}{%
- \mkbibrangetrunc{short}}
-
-\newrobustcmd*{\mkbibrangecomp}{%
- \mkbibrangetrunc{long}}
-
-\newrobustcmd*{\mkbibrangeshortextra}{%
- \mkbibrangefullextra{short}}
-
-\newrobustcmd*{\mkbibrangelongextra}{%
- \mkbibrangefullextra{long}}
-
-\newrobustcmd*{\mkbibrangeterseextra}{%
- \mkbibrangetruncextra{short}}
-
-\newrobustcmd*{\mkbibrangecompextra}{%
- \mkbibrangetruncextra{long}}
-
-% {<short|long>}{<basename>}
-
-\newrobustcmd*{\mkbibrangefull}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
- \iffieldundef{#2endyear}
- {}
- {\iffieldequalstr{#2endyear}{}
- {\mbox{\bibdatedash}}
- {\bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
-
-\newrobustcmd*{\mkbibrangetrunc}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \iffieldsequal{#2year}{#2endyear}
- {\iffieldsequal{#2month}{#2endmonth}
- {\csuse{mkbibdate#1}{}{}{#2day}}
- {\csuse{mkbibdate#1}{}{#2month}{#2day}}}
- {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}%
- \iffieldundef{#2endyear}
- {}
- {\iffieldequalstr{#2endyear}{}
- {\mbox{\bibdatedash}}
- {\bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
-
-\newrobustcmd*{\mkbibrangefullextra}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \printtext{%
- \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}%
- \iffieldundef{#2endyear}
- {\printfield{extrayear}}
- {\iffieldequalstr{#2endyear}{}
- {\printfield{extrayear}%
- \printtext{\mbox{\bibdatedash}}}
- {\printtext{%
- \bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
- \printfield{extrayear}}}}}}}
-
-\newrobustcmd*{\mkbibrangetruncextra}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \printtext{%
- \iffieldsequal{#2year}{#2endyear}
- {\iffieldsequal{#2month}{#2endmonth}
- {\csuse{mkbibdate#1}{}{}{#2day}}
- {\csuse{mkbibdate#1}{}{#2month}{#2day}}}
- {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}%
- \iffieldundef{#2endyear}
- {\printfield{extrayear}}
- {\iffieldequalstr{#2endyear}{}
- {\printfield{extrayear}%
- \printtext{\mbox{\bibdatedash}}}
- {\printtext{%
- \bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
- \printfield{extrayear}}}}}}}
-
-\newrobustcmd*{\mkbibrangeyear}[1]{%
- \blx@imc@clearfield{#1month}%
- \blx@imc@clearfield{#1day}%
- \blx@imc@clearfield{#1endmonth}%
- \blx@imc@clearfield{#1endday}%
- \iffieldsequal{#1year}{#1endyear}
- {\blx@imc@clearfield{#1endyear}}
- {}%
- \mkbibrangefull{short}{#1}}
-
-\newrobustcmd*{\mkbibrangeyearextra}[1]{%
- \blx@imc@clearfield{#1month}%
- \blx@imc@clearfield{#1day}%
- \blx@imc@clearfield{#1endmonth}%
- \blx@imc@clearfield{#1endday}%
- \iffieldsequal{#1year}{#1endyear}
- {\blx@imc@clearfield{#1endyear}}
- {}%
- \mkbibrangefullextra{short}{#1}}
-
-\expandafter\newrobustcmd
-\expandafter*\csname mkbibrangeiso8601\endcsname[1]{%
- \iffieldundef{#1year}
- {}
- {\printtext[#1date]{%
- \blx@isodate{#1year}{#1month}{#1day}%
- \iffieldundef{#1endyear}
- {}
- {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}}
-
-\expandafter\newrobustcmd
-\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{%
- \iffieldundef{#1year}
- {}
- {\printtext[#1date]{%
- \blx@isodate[extrayear]{#1year}{#1month}{#1day}%
- \iffieldundef{#1endyear}
- {}
- {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}}
-
-\newrobustcmd*{\blx@isodate}[4][]{%
- \thefield{#2}\ifblank{#1}{}{\printfield{#1}}%
- \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}%
- \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}}
-
-\newrobustcmd*{\mkbibdatelong}[3]{}
-\newrobustcmd*{\mkbibdateshort}[3]{}
-\newrobustcmd*{\bibrangedash}{\textendash}
-\newrobustcmd*{\bibrangessep}{,\space}
-\newrobustcmd*{\bibdatedash}{\bibrangedash}
-\newrobustcmd*{\finalandcomma}{}
-\newrobustcmd*{\finalandsemicolon}{}
-\newrobustcmd*{\mkbibordinal}[1]{#1}
-\newrobustcmd*{\mkbibmascord}{\mkbibordinal}
-\newrobustcmd*{\mkbibfemord}{\mkbibordinal}
-\newrobustcmd*{\mkbibneutord}{\mkbibordinal}
-\newrobustcmd*{\mkbibmonth}[1]{%
- \ifcase0#1\relax
- \blx@warning@entry{Month out of range or not an integer}%
- \or\abx@bibmonth{january}%
- \or\abx@bibmonth{february}%
- \or\abx@bibmonth{march}%
- \or\abx@bibmonth{april}%
- \or\abx@bibmonth{may}%
- \or\abx@bibmonth{june}%
- \or\abx@bibmonth{july}%
- \or\abx@bibmonth{august}%
- \or\abx@bibmonth{september}%
- \or\abx@bibmonth{october}%
- \or\abx@bibmonth{november}%
- \or\abx@bibmonth{december}%
- \else
- \blx@warning@entry{Month out of range}#1%
- \fi}
-
-\protected\def\blx@imc@printdate{}
-\protected\def\blx@imc@printdateextra{}
-\protected\def\blx@imc@printdatelabel{}
-\protected\def\blx@imc@printdateextralabel{}
-\protected\def\blx@imc@printurldate{}
-\protected\def\blx@imc@printeventdate{}
-\protected\def\blx@imc@printorigdate{}
-
-\let\blx@imc@mkdatezeros\@firstofone
-\protected\def\blx@imc@stripzeros#1{%
- \begingroup
- \setbox\@tempboxa=\hbox\bgroup
- \aftergroup\endgroup
- \abx@hook@xsanitize
- \if0#1\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\@tempcnta#1\relax
- \expandafter\egroup
- \number\@tempcnta
- \@tempcnta#1\relax}
- {\egroup#1}}
-
-\blx@regimcs{%
- \printdate \printdateextra \printdatelabel \printdateextralabel
- \printurldate \printeventdate \printorigdate \stripzeros \mkdatezeros}
-
-% {<language>}{<strings>}
-\def\blx@maplang#1#2{%
- \csxappto{extras#1}{%
- \noexpand\blx@resetpunct
- \expandafter\noexpand\csname abx@extras@#2\endcsname
- \expandafter\noexpand\csname abx@strings@#2\endcsname}%
- \csxappto{noextras#1}{%
- \noexpand\blx@resetpunct
- \expandafter\noexpand\csname abx@noextras@#2\endcsname}}
-
-%% babel/polyglossia interface
-\def\blx@beglang{\blx@clearlang\begingroup}
-\def\blx@endlang{\endgroup}
-\let\blx@beglangbib\blx@beglang
-\let\blx@endlangbib\blx@endlang
-\let\blx@beglangcite\blx@beglang
-\let\blx@endlangcite\blx@endlang
-\let\blx@hook@endlang\@empty
-\let\blx@hook@initlang\@empty
-\let\blx@imc@mainlang\@empty
-\def\blx@hyphenreset{%
- \ifcsundef{l@\blx@languagename}
- {}
- {\language\csname l@\blx@languagename\endcsname\relax}%
- \ifcsundef{\blx@languagename hyphenmins}
- {\blx@sethyphenmins\tw@\thr@@}
- {\expandafter\expandafter\expandafter\blx@sethyphenmins
- \csname\blx@languagename hyphenmins\endcsname}}
-\def\blx@sethyphenmins#1#2{%
- \lefthyphenmin#1\relax
- \righthyphenmin#2\relax}
-
-\begingroup
-\@makeother\#
-\gdef\blx@mkautolangbabel{%
- \ifundef\bbl@main@language
- {\blx@error
- {No default babel language defined}
- {You must define a default language for babel}}
- {}%
- \pretocmd\select@language{\blx@langsetup{#1}}
- {\ifdef\blx@thelangenv
- {\def\blx@beglang{%
- \blx@clearlang
- \begingroup
- \ifdef\abx@field@langid
- {\ifcsundef{l@\abx@field@langid}
- {\blx@warn@nohyph{\abx@field@langid}}
- {\blx@hook@initlang
- \def\blx@endlang{%
- \blx@hook@endlang
- \csname end\blx@thelangenv\endcsname
- \endgroup}%
- \iftoggle{blx@autolangbib}
- {\let\blx@endlangbib\blx@endlang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@endlangcite\blx@endlang}
- {}%
- \csname\blx@thelangenv\expandafter\endcsname
- \expandafter{\abx@field@langid}}}
- {}}}
- {}%
- \def\blx@langstrings{}%
- \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
- \blx@langsetup\bbl@main@language}
- {\blx@err@patch{'babel' package}%
- \blx@mknoautolang}}
-
-\gdef\blx@mkautolangpoly{%
- \ifundef\bbl@main@language
- {\blx@error
- {No default polyglossia language defined}
- {You must define a default language for polyglossia}}
- {}%
- \catcode`\_=11% polyglossia uses "_" as a letter
- \pretocmd\select@language{\blx@langsetup{#1}}
- {\ifdef\blx@thelangenv
- {\def\blx@beglang{%
- \blx@clearlang
- \begingroup
- \ifdef\abx@field@langid
- {\ifcsundef{l@\abx@field@langid}
- {\blx@warn@nohyph{\abx@field@langid}}
- {\blx@hook@initlang
- \def\blx@endlang{%
- \blx@hook@endlang
- % Polyglossia language envs are \<lang>[]
- \ifcsstring{blx@thelangenv}{langname}
- {\csname end\abx@field@langid\endcsname}
- {\csname end\blx@thelangenv\endcsname}%
- \endgroup}%
- \iftoggle{blx@autolangbib}
- {\let\blx@endlangbib\blx@endlang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@endlangcite\blx@endlang}
- {}%
- \ifcsstring{blx@thelangenv}{langname}
- {\ifdef\abx@field@langidopts
- {\csname\abx@field@langid\expandafter\endcsname\expandafter[\abx@field@langidopts]}
- {\csname\abx@field@langid\endcsname}}
- {\csname\blx@thelangenv\expandafter\endcsname\expandafter{\abx@field@langid}}%
- % These lines are equal to \blx@maplang
- \blx@resetpunct
- \csuse{abx@extras@\abx@field@langid}%
- \csuse{abx@strings@\abx@field@langid}}}
- {}}}
- {}%
- % polyglossia needs this - it doesn't get the
- % strings automatically set for some reason
- \def\blx@langstrings{%
- \csuse{abx@extras@\languagename}%
- \csuse{abx@strings@\languagename}}%
- \def\blx@imc@mainlang{%
- \select@language{\bbl@main@language}%
- % These lines are equal to \blx@maplang
- \blx@resetpunct
- \csuse{abx@extras@\bbl@main@language}%
- \csuse{abx@strings@\bbl@main@language}}%
- \blx@langsetup\bbl@main@language}
- {\blx@err@patch{'polyglossia' package}%
- \blx@mknoautolang}%
- \catcode`\_=8}
-\endgroup
-
-\def\blx@mknoautolang{%
- \blx@lbxinput{\blx@languagename}
- {}
- {\blx@err@nolang{\blx@languagename}}}
-
-\blx@regimcs{\mainlang}
-
-\newrobustcmd*{\DeclareRedundantLanguages}[2]{%
- \begingroup
- \ifblank{#2}
- {\def\do##1{%
- \global\csundef{blx@rlm@##1}%
- \global\csundef{blx@rlm@lang##1}}}
- {\def\do##1{%
- \csxdef{blx@rlm@##1}{#2}%
- \csxdef{blx@rlm@lang##1}{#2}}}%
- \docsvlist{#1}%
- \endgroup}
-
-\def\blx@clearlang{%
- \iftoggle{blx@clearlang}
- {\iflistundef{language}
- {}
- {\ifnumgreater{\value{language}}{1}
- {}
- {\expandafter\blx@clearlang@i\abx@list@language}}}
- {}}
-
-\def\blx@clearlang@i#1{%
- \ifcsdef{blx@rlm@#1}
- {\expandafter\expandafter\expandafter\forcsvlist
- \expandafter\expandafter\expandafter\blx@clearlang@ii
- \expandafter\expandafter\expandafter{%
- \csname blx@rlm@#1\endcsname}}
- {}}
-
-\def\blx@clearlang@ii#1{%
- \ifdefstring\languagename{#1}
- {\clearlist{language}}
- {}}
-
-%% Biber equivalents to bibtex data interface
-
-\def\abx@dotypes{\dolistcsloop{blx@biber@datamodel@entrytypes}}
-
-% fields which can be used as labels - we auto-create some macros for these
-\def\abx@dolabelfields{%
- \dolistcsloop{blx@biber@datamodel@labelfields}}
-
-\def\abx@donames{%
- \dolistcsloop{blx@biber@datamodel@names}%
-}
-
-\def\abx@dolists{%
- \dolistcsloop{blx@biber@datamodel@lists}%
- \do{pageref}%
-}
-
-\def\abx@dofields{\dolistcsloop{blx@biber@datamodel@fields}}
-
-% Used to pass regexps to .bcf
-\def\regexp#1{\expandafter\zap@space\detokenize{#1} \@empty}
-
-% Have to do this otherwise the '~'s in the .bcf strings are not expanded
-% This is done for the .bcf later but since we have to do all the
-% data model things much earlier, have to set this here and reset on finishing
-\let\blx@tsave~
-\let~\space
-% Data model and supporting macros must be loaded early
-\blx@inputonce{blx-dm.def}{biblatex default data model}{}{}{}{}
-\let~\blx@tsave
-
-% We need to now load any style data model
-% Order of precedence is:
-% <datamodel option>.dbx
-% <style option>.dbx
-% <citestyle option>.dbx and <bibstyle option>.dbx
-% This has to be done before the real options processing so we need to
-% pick out just these four options to look at. You can't do this with keyval,
-% you have to use kvoptions. So, pick out these four, pass through all
-% others and delete datamodel option as we don't care about it when we come
-% to really set options below
-\SetupKeyvalOptions{
- family=blx@opt@eldt,
- prefix=blx@opt@eldt@}
-\DeclareStringOption{datamodel}
-\DeclareStringOption{style}
-\DeclareStringOption{citestyle}
-\DeclareStringOption{bibstyle}
-\DeclareDefaultOption{}
-\ProcessLocalKeyvalOptions{blx@opt@eldt}
-\ifx\blx@opt@eldt@datamodel\@empty
- \ifx\blx@opt@eldt@style\@empty
- \ifx\blx@opt@eldt@citestyle\@empty
- \else
- \blx@inputonce{\blx@opt@eldt@citestyle.dbx}{biblatex citestyle data model}{}{}{}{}
- \fi
- \ifx\blx@opt@eldt@bibstyle\@empty
- \else
- \blx@inputonce{\blx@opt@eldt@bibstyle.dbx}{biblatex bibstyle data model}{}{}{}{}
- \fi
- \else
- \blx@inputonce{\blx@opt@eldt@style.dbx}{biblatex style data model}{}{}{}{}
- \fi
-\else
- \blx@inputonce{\blx@opt@eldt@datamodel.dbx}{biblatex style data model}{}{}{}{}
-\fi
-\DisableKeyvalOption[action=undef,local]{blx@opt@eldt}{datamodel}
-
-% Override with user-defined data model if there is one
-\blx@inputonce{biblatex-dm.cfg}{biblatex custom data model}{}{}{}{}
-
-% Initialise option datatypes lists
-\global\let\blx@bcf@options@scope@global\@empty
-\global\let\blx@bcf@options@scope@type\@empty
-\global\let\blx@bcf@options@scope@entry\@empty
-\global\let\blx@bcf@options@scope@namelist\@empty
-\global\let\blx@bcf@options@scope@name\@empty
-\global\let\blx@globalopts@datatypes\@empty
-\global\let\blx@typeopts@datatypes\@empty
-\global\let\blx@entryopts@datatypes\@empty
-\global\let\blx@namelistopts@datatypes\@empty
-\global\let\blx@nameopts@datatypes\@empty
-\def\do#1{%
- \global\cslet{blx@globalopts@#1}\@empty
- \global\cslet{blx@typeopts@#1}\@empty
- \global\cslet{blx@entryopts@#1}\@empty
- \global\cslet{blx@namelistopts@#1}\@empty
- \global\cslet{blx@nameopts@#1}\@empty}
-\expandafter\expandafter\expandafter\docsvlist\expandafter\expandafter\expandafter{\csname blx@datamodel@constant@optiondatatypes\endcsname}
-
-% Helper for collecting options and datatypes
-% {<datatype>}{<scope>}{<name>}
-\def\blx@collectopts#1#2#3{%
- \ifinlistcs{#1}{#2@datatypes}
- {}
- {\listcsgadd{#2@datatypes}{#1}}%
- \ifinlistcs{#3}{#2@#1}
- {}
- {\listcsgadd{#2@#1}{#3}}}
-
-% useprefix namelist/name scope
-\blx@collectopts{boolean}{blx@namelistopts}{useprefix}% for passing to bcf
-\blx@collectopts{boolean}{blx@nameopts}{useprefix}% for passing to the .bcf
-
-% sortnamekeyscheme namelist/name scope
-\blx@collectopts{string}{blx@namelistopts}{sortnamekeyscheme}% for passing to bcf
-\blx@collectopts{string}{blx@nameopts}{sortnamekeyscheme}% for passing to the .bcf
-
-% Misc globalopts
-\blx@collectopts{xml}{blx@globalopts}{datamodel}% for passing to the .bcf
-\blx@collectopts{string}{blx@globalopts}{controlversion}% for passing to the .bcf
-
-\newcommand*{\labelalphaothers}{+}
-\newcommand*{\sortalphaothers}{\labelalphaothers}
-\blx@collectopts{string}{blx@globalopts}{alphaothers}% for passing to the .bcf
-\blx@collectopts{string}{blx@typeopts}{alphaothers}% for passing to the .bcf
-\blx@collectopts{string}{blx@globalopts}{sortalphaothers}% for passing to the .bcf
-\blx@collectopts{string}{blx@typeopts}{sortalphaothers}% for passing to the .bcf
-
-% The Declare*Option macros are for options which need to be visible
-% to biblatex. For options which only biber needs to see, they can be
-% passed to the .bcf directly using \blx@collectopts
-% [<datatype>]{<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareBibliographyOption}[2][]{%
- \ifblank{#1}
- {\def\blx@tempa{boolean}}
- {\ifcsundef{blx@globalopts@#1}
- {\blx@warn@badoptdt{#1}%
- \def\blx@tempa{boolean}}
- {\def\blx@tempa{#1}}}%
- \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@globalopts}{#2}%
- \@ifnextchar[%]
- {\blx@defbibopt{#2}}
- {\blx@defbibopt{#2}[]}}
-
-\long\def\blx@defbibopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@ldt@#1}
- {\ifcsundef{KV@blx@opt@pre@#1}
- {\ifblank{#2}
- {\define@key{blx@opt@pre}{#1}{#3}}
- {\define@key{blx@opt@pre}{#1}[#2]{#3}}}
- {\blx@err@optdef{#1}}}
- {\blx@err@optdef{#1}}}
-
-% [<datatype>]{<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareTypeOption}[2][]{%
- \ifblank{#1}
- {\def\blx@tempa{boolean}}
- {\ifcsundef{blx@typeopts@#1}
- {\blx@warn@badoptdt{#1}%
- \def\blx@tempa{boolean}}
- {\def\blx@tempa{#1}}}%
- \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@typeopts}{#2}%
- \@ifnextchar[%]
- {\blx@deftypeopt{#2}}
- {\blx@deftypeopt{#2}[]}}
-
-\long\def\blx@deftypeopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@typ@#1}
- {\ifblank{#2}
- {\define@key{blx@opt@typ}{#1}{#3}}
- {\define@key{blx@opt@typ}{#1}[#2]{#3}}}
- {\blx@err@optdef{#1}}}
-
-% [<datatype>]{<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareEntryOption}[2][]{%
- \ifblank{#1}
- {\def\blx@tempa{boolean}}
- {\ifcsundef{blx@entryopts@#1}
- {\blx@warn@badoptdt{#1}%
- \def\blx@tempa{boolean}}
- {\def\blx@tempa{#1}}}%
- \expandafter\blx@collectopts\expandafter{\blx@tempa}{blx@entryopts}{#2}%
- \@ifnextchar[%]
- {\blx@defentryopt{#2}}
- {\blx@defentryopt{#2}[]}}
-
- \long\def\blx@defentryopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@ent@#1}
- {\ifblank{#2}
- {\define@key{blx@opt@ent}{#1}{#3}}
- {\define@key{blx@opt@ent}{#1}[#2]{#3}}}
- {\blx@err@optdef{#1}}}
-
-% These are internal fields which are not part of the data model but
-% which need to be dealt with along with data model fields in places
-\def\abx@dointernalfields{%
- \do{childentrykey}%
- \do{clonesourcekey}%
- \do{datelabelsource}%
- \do{entrykey}%
- \do{entryset}%
- \do{entrysetcount}%
- \do{entrytype}%
- \do{extraalpha}%
- \do{extratitle}%
- \do{extratitleyear}%
- \do{extrayear}%
- \do{fullhash}%
- \do{labelalpha}%
- \do{labelnumber}%
- \do{labeltitleyear}%
- \do{labeldate}%
- \do{localnumber}%
- \do{namehash}%
- \do{prefixnumber}%
- \do{sortinit}%
- \do{sortinithash}}
-
-\def\abx@dobooleans{%
- \do{singletitle}}
-
-% Name toggles like \ifauthor etc. need to be dynamically created for all
-% name datatypes in the data model and we have to do this here after the
-% datamodel is available. Need to be careful about expansions here as these
-% go into hooks to be executed later
-
-% Define name toggles
-\def\do#1{\newtoggle{blx@use#1}\toggletrue{blx@use#1}}
-\dolistcsloop{blx@biber@datamodel@names}
-
-% Define name toggle checking macros
-\let\blx@nametoggles\@empty
-\def\do#1{\gappto\blx@nametoggles{\expandafter\def\csname ifuse#1\endcsname{\iftoggle{blx@use#1}}}}
-\dolistcsloop{blx@biber@datamodel@names}
-\eappto\blx@blxinit{\expandafter\expandonce\noexpand\blx@nametoggles}
-
-% Define ifthen interface name toggle checking macros
-\let\blx@nametogglesit\@empty
-\def\do#1{\gappto\blx@nametogglesit{\expandafter\def\csname ifuse#1\endcsname{\blx@TE{\iftoggle{blx@use#1}}}}}
-\dolistcsloop{blx@biber@datamodel@names}
-\expandafter\def\expandafter\blx@nametogglesite\expandafter{\expandonce\blx@nametogglesit}
-\appto\blx@blxinit{\appto\blx@TE@hook{\blx@nametogglesite}}
-
-% Define \ifuse<name> options scope for biber
-\def\do#1{\blx@collectopts{boolean}{blx@globalopts}{use#1}%
- \blx@collectopts{boolean}{blx@typeopts}{use#1}%
- \blx@collectopts{boolean}{blx@entryopts}{use#1}}
-\dolistcsloop{blx@biber@datamodel@names}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\def\do#1{%
- \newcounter{#1}%
- \newcounter{saved#1}%
- \appto\abx@dobooleans{\do{more#1}}}
-
-\abx@donames
-\abx@dornames
-\abx@dolists
-%\abx@dorlists
-\def\do#1{\newtoggle{abx@bool@#1}}
-\abx@dobooleans
-
-\def\do#1{\expandafter\newlength\expandafter{\csname #1width\endcsname}}
-\abx@dolabelfields
-
-\protected\def\blx@resetdata{%
- \let\blx@saved@do\do
- \let\do\blx@imc@clearname
- \abx@donames
- \let\do\blx@imc@clearlist
- \abx@dolists
- \let\do\blx@imc@clearfield
- \abx@dofields
- \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}%
- \abx@dointernalfields
- \def\do##1{\togglefalse{abx@bool@##1}}%
- \abx@dobooleans
- \let\do\blx@saved@do
- \c@citecounter\z@
- \iftoggle{blx@bibliography}
- {\c@maxnames\blx@maxbibnames\relax
- \c@minnames\blx@minbibnames\relax}
- {\c@maxnames\blx@maxcitenames\relax
- \c@minnames\blx@mincitenames\relax}%
- \c@maxitems\blx@maxitems\relax
- \c@minitems\blx@minitems\relax}
-
-\protected\def\blx@saveentry{%
- \let\blx@saved@do\do
- \let\do\blx@savename
- \abx@donames
- \let\do\blx@savelist
- \abx@dolists
- \let\do\blx@savefield
- \abx@dofields
- \do{options}\do{labelyear}\do{labelmonth}\do{labelday}\do{datelabelsource}%
- \abx@dointernalfields
- \let\do\blx@savebool
- \abx@dobooleans
- \c@savedcitecounter\c@citecounter
- \let\do\blx@saved@do}
-
-\protected\def\blx@savename#1{%
- \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}%
- \csletcs{abx@name@saved#1}{abx@name@#1}%
- \csname c@saved#1\endcsname\csname c@#1\endcsname}
-
-\protected\def\blx@savelist#1{%
- \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}%
- \csletcs{abx@list@saved#1}{abx@list@#1}%
- \csname c@saved#1\endcsname\csname c@#1\endcsname}
-
-\protected\def\blx@savefield#1{%
- \csletcs{abx@field@saved#1}{abx@field@#1}}
-
-\protected\def\blx@savebool#1{%
- \csletcs{abx@bool@saved#1}{abx@bool@#1}}
-
-% {<code>}
-\protected\long\def\blx@bbl@preamble#1{%
- \gappto\abx@preamble{#1}}
-
-% {<message>}
-\protected\def\blx@bbl@warn#1{%
- \begingroup
- \def\item{\MessageBreak-\space}%
- \def\break{\MessageBreak\space\space}%
- \edef\blx@tempa{%
- Biber reported the following issues%
- \ifdef\abx@field@entrykey
- {\MessageBreak with '\abx@field@entrykey'}
- {}%
- :#1}%
- \blx@warning@noline{\blx@tempa}%
- \endgroup}
-
-% {<field>}{<code>}
-\newrobustcmd{\DeclareFieldInputHandler}[2]{%
- \ifblank{#2}
- {\csundef{blx@fih@#1}}
- {\long\csdef{blx@fih@#1}##1{#2}}}
-\@onlypreamble\DeclareFieldInputHandler
-
-% {<list>}{<code>}
-\newrobustcmd*{\DeclareListInputHandler}[2]{%
- \ifblank{#2}
- {\csundef{blx@lih@#1}}
- {\csdef{blx@lih@#1}##1{#2}}}
-\@onlypreamble\DeclareListInputHandler
-
-% {<name>}{<code>}
-\newrobustcmd*{\DeclareNameInputHandler}[2]{%
- \ifblank{#2}
- {\csundef{blx@nih@#1}}
- {\csdef{blx@nih@#1}##1{#2}}}
-\@onlypreamble\DeclareNameInputHandler
-
-% {<entrykey>}{<refsection>}{<field>}{<sort context>}{<value>}
-\long\def\blx@bbl@addentryfield#1#2#3#4#5{%
- \csxappto{blx@data@#2@#4@#1}{%
- \def\expandafter\noexpand\csname abx@field@#3\endcsname{#5}}}
-
-% {<rangefield>}{<value>}
-\protected\def\blx@bbl@rangedef#1#2{%
- \csxappto\blx@bbl@data{%
- \def\expandafter\noexpand\csname abx@range@#1\endcsname{#2}}}
-
-% {<field>}{<value>}
-\long\def\blx@bbl@addfield#1#2{%
- \csxappto\blx@bbl@data{%
- \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}}
-
-\protected\long\def\blx@bbl@fielddef#1#2{%
- \def\NewValue{#2}%
- \ifcsdef{blx@fih@#1}
- {\csname blx@fih@#1\endcsname{#2}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\blx@bbl@addfield{#1}{\expandonce\NewValue}}}
-
-\protected\long\def\blx@bbl@fieldedef#1#2{%
- \edef\NewValue{#2}%
- \ifcsdef{blx@fih@#1}
- {\csname blx@fih@#1\expandafter
- \endcsname\expandafter{\NewValue}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\blx@bbl@addfield{#1}{\NewValue}}}
-
-\protected\long\def\blx@bbl@stringdef#1#2{%
- \begingroup
- \edef\blx@tempa{\endgroup
- \blx@bbl@fielddef{#1}{\detokenize{#2}}}%
- \blx@tempa}
-
-% Verbatim lists
-% {<list>}{<listcount>}
-\protected\def\blx@bbl@verbldef#1#2{%
- \begingroup
- \let\lverb\blx@bbl@verbladd
- \def\blx@tempa{#1}%
- \def\blx@tempb{#2}%
- \let\blx@tempc\@empty
- \let\NewValue\@empty}
-
-\protected\def\blx@bbl@verblend{%
- \expandafter\blx@bbl@listdef\expandafter{\expandafter\blx@tempa\expandafter}\expandafter{\expandafter\blx@tempb\expandafter}\expandafter{\blx@tempc}%
- \endgroup}
-
-\protected\def\blx@bbl@verbladd{%
- \begingroup
- \let\do\@makeother
- \dospecials
- \catcode\endlinechar=12\relax
- \blx@bbl@verbladd@i}
-
-% Verbatim fields
-% {<field>}
-\protected\def\blx@bbl@verbdef#1{%
- \begingroup
- \let\verb\blx@bbl@verbadd
- \def\blx@tempa{#1}%
- \let\NewValue\@empty}
-
-\protected\def\blx@bbl@verbend{%
- \ifcsdef{blx@fih@\blx@tempa}
- {\csname blx@fih@\blx@tempa\expandafter
- \endcsname\expandafter{\NewValue}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\blx@bbl@addfield{\blx@tempa}{\NewValue}}%
- \endgroup}
-
-\protected\def\blx@bbl@verbadd{%
- \begingroup
- \let\do\@makeother
- \dospecials
- \catcode\endlinechar=12\relax
- \blx@bbl@verbadd@i}
-
-\begingroup
-\catcode`\<=12
-\catcode`\>=12
-\uccode`\<=`\ %
-\uccode`\>=\endlinechar
-\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{%
- \endgroup
- \edef\NewValue{\NewValue\detokenize{#1}}}
-\uppercase{\gdef\blx@bbl@verbladd@i<#1>}{%
- \endgroup
- \eappto\blx@tempc{{\detokenize{#1}}}}%
-\endgroup
-
-% {<counter>}{<value>}
-\protected\long\def\blx@bbl@cntdef#1#2{%
- \csxappto\blx@bbl@data{%
- \csname c@#1\endcsname#2\relax}}
-
-% {<boolean>}
-\protected\def\blx@bbl@booltrue#1{%
- \csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@#1}}}
-
-\protected\def\blx@bbl@boolfalse#1{%
- \csgappto\blx@bbl@data{%
- \togglefalse{abx@bool@#1}}}
-
-% {<list>}{<itemcount>}{<value>}
-\protected\def\blx@bbl@listdef#1#2#3{%
- \def\NewCount{#2}%
- \def\NewValue{#3}%
- \ifcsdef{blx@lih@#1}
- {\csname blx@lih@#1\endcsname{#3}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\csxappto\blx@bbl@data{%
- \csname c@#1\endcsname\NewCount\relax
- \def\expandafter\noexpand\csname abx@list@#1\endcsname
- {\expandonce\NewValue}}}}
-
-% {<name>}{<itemcount>}{<nameoptions>}{<value>}
-\protected\def\blx@bbl@namedef#1#2#3#4{%
- \def\NewCount{#2}%
- \def\NewOption{#3}%
- \def\NewValue{#4}%
- \ifcsdef{blx@nih@#1}
- {\csname blx@nih@#1\endcsname{#4}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\csxappto\blx@bbl@data{%
- \csname c@#1\endcsname\NewCount\relax
- \def\expandafter\noexpand\csname abx@name@#1\endcsname
- {{\expandonce\NewOption}{\expandonce\NewValue}}}}}
-
-% blx@setp@<rs>@<sp> = map of set parent <sp> in a refsection <rs> to csv
-% of set children
-% blx@seti@<rs>@<sc> = position of set child <sc> in entry set in
-% refsection <rs>
-% blx@setc@<rs>@<sc> = map of set child <sc> in refsection <rs> to set parent
-
-% {<entrykey>,...}
-\protected\def\blx@bbl@set#1{%
- \blx@bbl@fieldedef{entryset}{\detokenize{#1}}%
- \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}%
- \begingroup
- \blx@tempcnta\z@
- \expandafter\forcsvlist
- \expandafter\blx@bbl@set@i
- \expandafter{\detokenize{#1}}%
- \endgroup}
-
-\def\blx@bbl@set@i#1{%
- \advance\blx@tempcnta\@ne
- \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}}
-
-% {<entrykey>}
-\protected\def\blx@bbl@inset#1{%
- \toggletrue{blx@setonly}%
- \blx@bbl@fieldedef{entryset}{\detokenize{#1}}%
- \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}}
-
-% {<keyword>,...}
-\protected\def\blx@bbl@keyw#1{%
- \iftoggle{blx@skipbib}
- {}
- {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}%
- \blx@bbl@fielddef{keywords}{#1}}}
-
-\def\blx@addkeyword#1#2{%
- \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}}
-
-% {<options>}
-\protected\long\def\blx@bbl@options#1{%
- \begingroup
- \let\blx@tempa\@empty
- \forcsvlist\blx@bbl@options@i{#1}%
- \edef\blx@tempa{%
- \endgroup
- \ifx\blx@tempa\@empty
- \else
- \def\noexpand\abx@field@options{\expandonce\blx@tempa}%
- \fi}%
- \blx@tempa}
-
-\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&}
-
-\long\def\blx@bbl@options@ii#1=#2=#3&{%
- \ifcsundef{KV@blx@opt@ent@#1}
- {\blx@warning@noline{%
- Ignoring undefined option '#1'\MessageBreak
- at entry '\abx@field@entrykey'}}
- {\eappto\blx@tempa{%
- \ifx\blx@tempa\@empty\else,\fi
- \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}}
-
-\def\blx@ifdata#1{%
- \ifcsdef{blx@data@\the\c@refsection @\blx@refcontext@context @#1}}
-\let\blx@imc@ifentryinbib\blx@ifdata
-
-\def\blx@getdata#1{%
- \csuse{blx@data@\the\c@refsection @\blx@refcontext@context @#1}%
- % Here we resolve label* bib fields to their real fields. Doing this here
- % dynamically means that we can vary the field chosen depending on the refcontext.
- % biber used to resolve these and materialise them in the .bbl but this
- % means a static resolution which is independent of the document context.
- \def\do##1{%
- \ifcsdef{abx@field@##1source}
- {\expandafter\def\csname abx@field@##1\endcsname{\csuse{abx@field@\csuse{abx@field@##1source}}}}%
- {}}%
- \dolistloop{\abx@rfields}%
- % Just in case we ever have non-name lists to instantiate
- % \def\do##1{%
- % \ifcsdef{abx@field@##1source}
- % {\csletcs{c@##1}{c@\csuse{abx@field@##1source}}%
- % \csletcs{abx@list@##1}{abx@list@\csuse{abx@field@##1source}}}
- % {}}%
- % \dolistloop{\abx@rlists}%
- \def\do##1{%
- \ifcsdef{abx@field@##1source}
- {\csletcs{c@##1}{c@\csuse{abx@field@##1source}}%
- \csletcs{abx@name@##1}{abx@name@\csuse{abx@field@##1source}}}
- {}}%
- \dolistloop{\abx@rnames}%
- \blx@setcitecounter}
-
-\def\blx@getdata@cite#1{%
- \ifcsdef{blx@setc@\the\c@refsection @#1}
- {\expandafter\expandafter\expandafter\blx@getdata
- \expandafter\expandafter\expandafter{%
- \csname blx@setc@\the\c@refsection @#1\endcsname}%
- \blx@ifdata{#1}
- {\def\abx@field@childentrykey{#1}%
- \begingroup
- \blx@getdata{#1}%
- \edef\blx@tempa{\endgroup
- \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}%
- \blx@tempa}
- {}}
- {\blx@getdata{#1}}%
- \ifcsdef{blx@seti@\the\c@refsection @#1}
- {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}}
- {}}
-
-\def\blx@execute{%
- \blx@imc@thefield{execute}}
-
-\def\blx@setoptions@entry{%
- \blx@imc@iffieldundef{options}
- {}
- {\begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}%
- \blx@tempa
- \blx@checkoptions@entry}}
-
-\def\blx@setoptions@type#1{%
- \ifcsdef{blx@opts@type@#1}
- {\begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}%
- \blx@tempa}
- {}}
-
-\def\blx@checkoptions@global{}
-\def\blx@checkoptions@type{}
-\def\blx@checkoptions@entry{}
-
-\def\blx@entrysetcount{%
- \ifdef\abx@field@entrykey
- {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey}
- {\letcs\abx@field@entrysetcount{%
- blx@seti@\the\c@refsection @\abx@field@entrykey}}
- {}}
- {}}
-
-% {<section>}
-\def\blx@bbl@refsection#1{%
- \begingroup
- \c@refsection#1\relax}
-
-\def\blx@bbl@endrefsection{%
- \iftoggle{blx@addset}
- {\blx@addset
- \global\togglefalse{blx@addset}}
- {}%
- \endgroup}
-
-% {<entrykey>}
-\protected\def\blx@bbl@missing#1{%
- \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}%
- \blx@warning@noline{%
- The following entry could not be found\MessageBreak
- in the database%
- \ifnumgreater\c@refsection\z@
- { (refsection \the\c@refsection)}
- {}:\MessageBreak
- \detokenize{#1}\MessageBreak
- Please verify the spelling and rerun\MessageBreak
- LaTeX afterwards}}
-
-% We create an alias resolving macro and also a list of aliases
-% which we need to add to the .bcf. We need to resolve the aliases
-% for internal use but we always want the aliases themselves in the .bcf
-% so that biber can correctly use and resolve them too.
-\protected\def\blx@bbl@keyalias#1#2{%
- \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}%
- \listcsgadd{blx@keyaliases@\the\c@refsection}{#1}}
-
-% blx@slist@list@<section>@<scheme> - a list of list items in a scheme in a
-% section (for tracking bibliography lists,
-% obeys skipbiblist)
-% blx@slist@entry@<section>@<scheme> - a list of normal entries in a scheme in a
-% section (for tracking bibliographies,
-% obeys skipbib)
-% blx@slist@centry@<section>@<scheme> - a list of normal entries in a scheme in a
-% section (for tracking citations,
-% obeys skipbib). Same as @entry@ but
-% with added set children
-
-% {<entrykey>}{<entrytype>}{<options>}
-\protected\def\blx@bbl@entry#1#2#3{%
- \begingroup
- \edef\abx@field@entrykey{\detokenize{#1}}%
- \blx@setoptions@type{#2}%
- \blx@bbl@options{#3}%
- \blx@setoptions@entry
- \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@slist@name @\abx@field@entrykey}%
- \csuse\blx@bbl@data
- \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
- \blx@bbl@addfield{entrytype}{#2}%
- \blx@imc@iffieldundef{options}
- {}
- {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}
-
-\protected\def\blx@bbl@endentry{%
- \csuse\blx@bbl@data
- \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey}
- {}
- {\blx@addpageref{\abx@field@entrykey}}%
- \nottoggle{blx@setonly}
- {}
- {\global\toggletrue{blx@addset}%
- \toggletrue{blx@skipbib}%
- \toggletrue{blx@skipbiblist}%
- \toggletrue{blx@skiplab}}%
- \nottoggle{blx@skipbib}
- {\expandafter\ifstrequal\expandafter{\blx@slist@type}{entry}
- {\listcsxadd{blx@slist@entry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}%
- \listcsxadd{blx@slist@centry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}%
- \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}%
- \ifdef\abx@field@entrysubtype
- {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}}
- {}}
- {}}%
- {}%
- \nottoggle{blx@skipbiblist}
- {\expandafter\ifstrequal\expandafter{\blx@slist@type}{list}
- {\blx@bbl@labelfields
- \listcsxadd{blx@slist@\blx@slist@type @\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}}
- {}}%
- {}%
- \nottoggle{blx@skiplab}
- {\iftoggle{blx@labelnumber}
- {\blx@bbl@labelnumber}
- {}%
- \iftoggle{blx@labelalpha}
- {\blx@bbl@labelalpha}
- {}%
- \iftoggle{blx@labeltitle}
- {\blx@bbl@labeltitle}
- {}%
- \iftoggle{blx@labeltitleyear}
- {\blx@bbl@labeltitleyear}
- {}%
- \iftoggle{blx@labeldate}
- {\blx@bbl@labeldate}
- {}%
- \blx@bbl@prefixnumber}
- {}%
- \blx@bbl@titles
- \blx@bbl@hooks
- \endgroup}
-
-% This, at the end of the .bbl, puts any set parent children into the
-% current context sort list of citations (a separate list *@centry@* to the
-% bibliography *@entry@* which doesn't want the children adding if they weren't
-% cited) as this is needed for the subentry citing
-% when sortcites is enabled as for sortcites, the current context sorting list
-% is used and the parent set of a subentry is not necessarily
-% available in the current context sortlist.
-\def\blx@addset{%
- \begingroup
- \letcs\blx@tempa{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}%
- \global\cslet{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}\@empty
- \forlistloop\blx@addset@i\blx@tempa
- \endgroup}
-
-\def\blx@addset@i#1{%
- \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}%
- \ifcsdef{blx@setp@\the\c@refsection @#1}
- {\expandafter\expandafter\expandafter\forcsvlist
- \expandafter\expandafter\expandafter\blx@addset@ii
- \expandafter\expandafter\expandafter{%
- \csname blx@setp@\the\c@refsection @#1\endcsname}}
- {}}
-
-\def\blx@addset@ii#1{%
- \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}}
-
-\def\blx@bbl@labelfields{%
- \def\do##1{%
- \ifcsundef{abx@field@##1}
- {}
- {\blx@setlabwidth{\csname ##1width\endcsname}{%
- \csuse{abx@ffd@*@##1width}{\csname abx@field@##1\endcsname}}}}%
- \abx@dolabelfields}
-
-\def\blx@bbl@labelnumber{%
- % Used at endentry, when reading .bbl
- % only do this for the global sorting list otherwise we increment
- % the labelnumbers for each sortlist
- \ifdefempty\abx@field@localnumber
- {}% only if omitnumbers=true
- {\ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth}
- {\letcs{\@lnw@labelnumberwidth}{abx@ffd@*@labelnumberwidth}}
- {\letcs{\@lnw@labelnumberwidth}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumberwidth}}%
- \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@prefixnumber}
- {\letcs{\@lnw@prefixnumber}{abx@ffd@*@prefixnumber}}
- {\letcs{\@lnw@prefixnumber}{abx@ffd@\blx@imc@thefield{entrytype}@prefixnumber}}%
- \ifcsundef{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber}
- {\letcs{\@lnw@labelnumber}{abx@ffd@*@labelnumber}}
- {\letcs{\@lnw@labelnumber}{abx@ffd@\blx@imc@thefield{entrytype}@labelnumber}}%
- \ifundef\abx@field@shorthand
- {\iftoggle{blx@defernumbers}
- % only if defernumbers=true, we have to define localnumber to
- % something to stop labelnumberwidth def complaining on first
- % post-backend run since there will be nothing in the .aux yet
- % for defernums localnumbers. On the second post-backend run,
- % it will have a value correct for generating labelnumberwidth
- % We also have to define a dummy value for labelnumber here for
- % first post-backend runs otherwise references to labelnumber
- % in cite styles like numeric-comp will die.
- {\ifundef\abx@field@localnumber
- {\numdef\abx@field@localnumber{0}%
- \blx@bbl@fielddef{labelnumber}{0}}
- {}}
- {\csnumgdef{blx@labelnumber@\the\c@refsection @\blx@slist@name}{%
- \csuse{blx@labelnumber@\the\c@refsection @\blx@slist@name}+1}%
- \edef\abx@field@localnumber{%
- \csuse{blx@labelnumber@\the\c@refsection @\blx@slist@name}}%
- \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelnumberwidth}{%
- \csuse{@lnw@labelnumberwidth}{%
- \ifdef\abx@field@prefixnumber
- {\csuse{@lnw@prefixnumber}{\abx@field@prefixnumber}}
- {}%
- \csuse{@lnw@labelnumber}{\abx@field@localnumber}}}}}
- {\csgappto\blx@bbl@data{\let\abx@field@labelnumber\abx@field@shorthand}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelnumberwidth}{%
- \csuse{@lnw@labelnumberwidth}{\abx@field@shorthand}}}}}}
-
-\def\blx@bbl@prefixnumber{%
- \ifdef\abx@field@prefixnumber
- {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}}
- {}}
-
-\def\blx@bbl@labelalpha{%
- \ifundef\abx@field@labelalpha
- {}
- {\ifundef\abx@field@extraalpha
- {}
- {\ifnum\abx@field@extraalpha>\c@maxextraalpha
- \global\c@maxextraalpha\abx@field@extraalpha\relax
- \fi}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelalphawidth}{%
- \csuse{abx@ffd@*@labelalphawidth}{%
- \ifdef\abx@field@prefixnumber
- {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}}
- {}%
- \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}%
- \ifundef\abx@field@extraalpha
- {}
- {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}}
-
-\def\blx@bbl@labeltitle{%
- \ifundef\abx@field@extratitle
- {}
- {\ifnum\abx@field@extratitle>\c@maxextratitle
- \global\c@maxextratitle\abx@field@extratitle\relax
- \fi}}
-
-\def\blx@bbl@labeltitleyear{%
- \ifundef\abx@field@extratitleyear
- {}
- {\ifnum\abx@field@extratitleyear>\c@maxextratitleyear
- \global\c@maxextratitleyear\abx@field@extratitleyear\relax
- \fi}}
-
-\def\blx@bbl@labeldate{%
- \ifundef\abx@field@extrayear
- {}
- {\ifnum\abx@field@extrayear>\c@maxextrayear
- \global\c@maxextrayear\abx@field@extrayear\relax
- \fi}}
-
-\def\blx@bbl@titles{%
- \ifundef\abx@field@indextitle
- {\csgappto\blx@bbl@data{%
- \let\abx@field@indextitle\abx@field@title}}
- {}%
- \ifundef\abx@field@indexsorttitle
- {\csgappto\blx@bbl@data{%
- \let\abx@field@indexsorttitle\abx@field@indextitle}}
- {}}
-
-\def\blx@bbl@hooks{%
- \ifcsundef{blx@hook@bblitem@*}
- {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype}
- {}
- {\csuse\blx@bbl@data
- \csuse{blx@hook@bblitem@\abx@field@entrytype}}}
- {\csuse\blx@bbl@data
- \csuse{blx@hook@bblitem@*}%
- \csuse{blx@hook@bblitem@\abx@field@entrytype}}}
-
-\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}}
-\@onlypreamble\AtDataInput
-
-\def\blx@setlabwidth#1#2{%
- \begingroup
- \settowidth{\@tempdima}{\bibfont#2}%
- \ifnum\@tempdima>#1%
- \global#1\@tempdima
- \fi
- \endgroup}
-
-\def\blx@bblstart{%
- \let\preamble\blx@bbl@preamble
- \let\warn\blx@bbl@thewarn
- \let\refsection\blx@bbl@refsection
- \let\endrefsection\blx@bbl@endrefsection
- \let\entry\blx@bbl@entry
- \let\endentry\blx@bbl@endentry
- \let\missing\blx@bbl@missing
- \let\keyalias\blx@bbl@keyalias
- \let\sortlist\blx@bbl@slist
- \let\endsortlist\blx@bbl@endslist
- \let\set\blx@bbl@set
- \let\inset\blx@bbl@inset
- \let\keyw\blx@bbl@keyw
- \let\name\blx@bbl@namedef
- \let\list\blx@bbl@listdef
- \let\field\blx@bbl@fielddef
- \let\range\blx@bbl@rangedef
- \let\strng\blx@bbl@stringdef
- \let\cnt\blx@bbl@cntdef
- \let\true\blx@bbl@booltrue
- \let\false\blx@bbl@boolfalse
- \let\verb\blx@bbl@verbdef
- \let\endverb\blx@bbl@verbend
- \let\lverb\blx@bbl@verbldef
- \let\endlverb\blx@bbl@verblend}
-
-\def\blx@bblend{%
-}
-
-% {<entrykey>}
-% Get the saved information on which citations were mentioned last run
-\protected\def\abx@aux@cite#1{%
- \listxadd{\blx@lastcites}{\detokenize{#1}}}
-
-% {<sortschemename>}
-% Get the saved information on which sorting schemes were mentioned last run
-\protected\def\abx@aux@sortscheme#1{%
- \listgadd{\blx@lastsortschemes}{#1}}
-
-% {<sortnamekeyschemename>}
-% Get the saved information on which sorting name key schemes were mentioned last run
-\protected\def\abx@aux@sortnamekeyscheme#1{%
- \listgadd{\blx@lastsortnamekeyschemes}{#1}}
-
-% {<sortschemename>}
-% Get the saved information on which shorthand sorting schemes were mentioned last run
-\protected\def\abx@aux@biblist#1{%
- \listgadd{\blx@lastbiblists}{#1}}
-
-% Here we mustn't change the checksum if we used localnumbers from the
-% .aux file as this means that deferred numbering is
-% complete. Otherwise we get in an endless rerun loop because the
-% checksum due to number changes is always different.
-\AtEndDocument{%
- \def\abx@aux@number#1#2#3#4{%
- \ifblank{#4}
- {}
- {\nottoggle{blx@localnumber}
- {\blx@addchecksum{#1}{#4}}
- {}}}}
-
-\AtEndDocument{%
- % Here we run some tests to decide if we need to issue re-run
- % messages in certain circumstances. In general, if we add/remove
- % any citations or add/remove any sorting schemes, we need to re-run
- % biber. Also, if we have to re-run biber, we need to defer writing
- % the defernumbers .aux information because it will not yet be correct.
-
- % Test to see if we *removed* any citations since last run
- % (adding citations is dealt with naturally in \blx@citation@entry)
- % If so, give a rerun biber message. This also sets the
- % rerun biber toggle so defernums doesn't consume the localnumbers
- % in the .aux but instead, re-writes them, which is what we need.
- \begingroup
- \def\do#1{\ifinlist{#1}{\blx@cites}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@lastcites
- % Special case - if we are using sortscheme "none" anywhere, then changes
- % in citation order matter and we need to re-run biber. So a special test
- % to see if the cites from last run are identical in order. We have
- % already tested for more or less cites between runs by now, we are
- % testing here for exactly the same cites by treating the cite and
- % lastcite lists as strings and comparing them. This doesn't apply
- % to biblist sortschemes as nobody wants to sort biblists with
- % "none", since it makes no sense
- \ifinlist{none}{\blx@sortschemes}
- {\ifdefstrequal{\blx@cites}{\blx@lastcites}
- {}
- {\blx@logreq@active{}}}
- {}%
- % Test if we removed any mention of a sorting name key scheme since last run.
- % If we did, we need to re-run biber
- \def\do#1{\ifinlist{#1}{\blx@sortnamekeyschemes}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@lastsortnamekeyschemes
- % Test if we added any mention of a sorting name key scheme since last run
- % If we did, we need to re-run biber
- \def\do#1{\ifinlist{#1}{\blx@lastsortnamekeyschemes}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@sortnamekeyschemes
- % Test if we removed any mention of a sorting scheme since last run.
- % If we did, we need to re-run biber
- \def\do#1{\ifinlist{#1}{\blx@sortschemes}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@lastsortschemes
- % Test if we added any mention of a sorting scheme since last run
- % If we did, we need to re-run biber
- \def\do#1{\ifinlist{#1}{\blx@lastsortschemes}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@sortschemes
- % Test if we removed any mention of a biblist since last run.
- % If we did, we need to re-run biber
- \def\do#1{\ifinlist{#1}{\blx@biblists}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@lastbiblists
- % Test to see if we added any mention of a biblist since last run.
- % If we did, we need to re-run biber
- \def\do#1{\ifinlist{#1}{\blx@lastbiblists}{}{\blx@logreq@active{}}\relax}%
- \dolistloop\blx@biblists
- % If we have to run biber or latex again and we are using defernumbers,
- % don't write the localnumber information to the .aux file yet as we will
- % potentially have to regenerate sorting order first in biber
- \iftoggle{blx@defernumbers}
- {\iftoggle{blx@runbiber}
- {}
- {\def\do#1{\blx@auxwrite\@mainaux{}{#1}}
- \dolistloop\blx@localnumaux}}
- {}%
- \endgroup}
-
-% {<instcount>}{<entrykey>}{<refsection>}{<sort context>}{<labelnumber>}
-\protected\def\blx@aux@number#1#2#3#4#5{%
- \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}%
- \blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}%
- \global\toggletrue{blx@localnumber}%
- \ifblank{#5}
- {}
- {\csgdef{blx@labelnumber@#3@#4}{#5}}}
-
-% Called as part of bib output for an entry
-% Only used when defernumbers=true
-\def\blx@addlabelnumber{%
- \begingroup
- \nottoggle{blx@skiplab}
- {\iftoggle{blx@labelnumber}
- {\ifundef\abx@field@shorthand
- % Need to know if we set any localnumber from .aux file, not
- % just current item. Otherwise, we may just write new
- % localnumbers but not existing ones
- % Also, don't want to regenerate localnumber for any key in a
- % refsection which we've already seen because this has the nasty
- % side-effect of incrementing the localnum counter
- {\ifboolexpr { not togl {blx@localnumber}
- and
- test {\ifcsundef{blx@defer@\the\c@refsection @\abx@field@entrykey}} }
- {\iftoggle{blx@omitnumbers}
- {\let\abx@field@localnumber\@empty}
- {\csnumgdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{%
- \csuse{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}+1}%
- \edef\abx@field@localnumber{%
- \csuse{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}}%
- \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
- {localnumber}{\blx@refcontext@context}{\abx@field@localnumber}}}
- {}%
- % If localnumbers were already in the .aux, add them
- % again from the .aux. This prevents some cycling
- % problems where pagebreaks change after localnumber
- % settles down and then we need another run which then
- % regenerates localnumber requiring another run but then
- % the pagebreaks change back again ... etc.
- \ifcsundef{blx@defer@\the\c@refsection @\abx@field@entrykey}
- {\listxadd\blx@localnumaux{%
- \string\abx@aux@number%
- {\the\c@instcount}%
- {\abx@field@entrykey}%
- {\the\c@refsection}%
- {\blx@refcontext@context}%
- {\abx@field@localnumber}}%
- % record that we have already generated and output localnum
- % for this key in this refsection
- \csgdef{blx@defer@\the\c@refsection @\abx@field@entrykey}{}}
- {}}
- {}}%
- {}}
- {}%
- \endgroup}
-
-\def\blx@addprefixnumber{%
- \nottoggle{blx@skiplab}
- {\ifdef\blx@prefixnumbers
- {\ifundef\abx@field@shorthand
- {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}%
- \ifundef\abx@field@prefixnumber
- {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
- {prefixnumber}{\blx@refcontext@context}{\expandonce\abx@field@prefixnumber}}
- {}%
- \blx@auxwrite\@mainaux{}{%
- \string\blx@aux@numprefix{\abx@field@entrykey}%
- {\the\c@refsection}{\blx@refcontext@context}{\expandonce\abx@field@prefixnumber}}}
- {}}
- {}}
- {}}
-
-% {<entrykey>}{<refsection>}{<sorting context}{<numberprefix>}
-\protected\def\blx@aux@numprefix#1#2#3#4{%
- \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}{#4}}
-
-% {<sortlistname>}
-\def\blx@bbl@slist[#1]#2{%
- \begingroup
- \def\blx@slist@type{#1}%
- \def\blx@slist@name{#2}}
-
- % This macro (\key) will only be called in sortlists of type "list"
-% \def\key##1{\listcsxadd{blx@slists@\the\c@refsection @#1}{\detokenize{##1}}}}
-
-\def\blx@bbl@endslist{%
- \csnumgdef{blx@labelnumber@\the\c@refsection @\blx@slist@name}{0}%
- \endgroup}
-
-\def\blx@addpageref#1{%
- \begingroup
- \blx@tempcnta\z@
- \let\blx@tempa\@empty
- \def\do##1{%
- \appto\blx@tempa{{##1}}%
- \advance\blx@tempcnta\@ne}%
- \dolistcsloop{blx@pref@\the\c@refsection @#1}%
- \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef
- {pageref}{\the\blx@tempcnta}{\blx@tempa}}%
- \blx@tempa}
-
-%% Data input
-
-\def\blx@bblinput{%
- \begingroup
- \blx@info@noline{Trying to load bibliographic data..}%
- \blx@blxinit
- \blx@bblfile@biber
- \endgroup}
-
-\def\blx@bblfile@biber{%
- \blx@secinit
- \begingroup
- \blx@bblstart
- \blx@ifsigned{\jobname}{bbl}
- {\InputIfFileExists{\jobname.bbl}
- {\blx@info@noline{... file '\jobname.bbl' found}}
- {\blx@info@noline{... file '\jobname.bbl' not found}%
- \typeout{No file \jobname.bbl.}}}
- {}%
- \blx@bblend
- \endgroup
- % global sorting as this is called at BeginDocument
- \csnumgdef{blx@labelnumber@\the\c@refsection @\blx@sorting}{0}}
-
-%% Bibliography
-
-% {<name>}{<start code>}[<end code>]{<item code>}
-\newrobustcmd*{\defbibenvironment}[4]{%
- \long\csdef{blx@env@#1}{#2}%
- \long\csdef{blx@endenv@#1}{#3}%
- \long\csdef{blx@item@#1}{#4}}
-
-\defbibenvironment{bibliography}
- {\list{}{%
- \leftmargin\bibhang
- \itemindent-\leftmargin
- \itemsep\bibitemsep
- \parsep\bibparsep}}
- {\endlist}
- {\item}
-
-\def\do#1{%
- \defbibenvironment{#1}
- {\list{\thefield{#1}}{%
- \labelwidth\csname #1width\endcsname
- \labelsep\biblabelsep
- \leftmargin\labelwidth
- \advance\leftmargin\labelsep
- \itemsep\bibitemsep
- \parsep\bibparsep
- \def\makelabel####1{####1\hss}}}
- {\endlist}
- {\item}}
-\abx@dolabelfields
-
-% {<name>}[<default>]{<code>}
-\newrobustcmd*{\defbibheading}[1]{%
- \@ifnextchar[%]
- {\blx@defbibheading{blx@head@#1}}
- {\blx@defbibheading{blx@head@#1}[\bibname]}}
-
-\def\blx@defbibheading#1[#2]{%
- \csundef{#1}%
- \expandafter\newcommand\csname#1\endcsname[1][#2]}
-
-% {<name>}{<text>}
-\newrobustcmd*{\defbibnote}[1]{%
- \long\csdef{blx@note@#1}}
-
-% {<name>}{<code>}
-\newrobustcmd*{\defbibfilter}[2]{%
- \begingroup
- \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}%
- \let\not\blx@flt@not \let\NOT\not
- \let\and\blx@flt@and \let\AND\and
- \let\or\blx@flt@or \let\OR\or
- \letcs\({blx@flt@(} \letcs\){blx@flt@)}%
- \def\section##1{\blx@flt@error}%
- \def\segment##1{segment=##1}%
- \def\type##1{type=##1}%
- \def\subtype##1{subtype=##1}%
- \def\keyword##1{keyword={##1}}%
- \def\category##1{category={##1}}%
- \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}%
- \ifdef\blx@flt@errortrue
- {\blx@err@filter}
- {\let\the\relax
- \let\blx@flt@item\relax
- \edef\blx@tempa{\blx@tempa}%
- \ifdef\blx@flt@errortrue
- {\blx@err@filter}
- {\csxdef{blx@filter@#1}{\blx@tempa}}}%
- \endgroup}
-
-\def\blx@defbibfilter#1{%
- \blx@defbibfilter@i#1 &}
-\def\blx@defbibfilter@i#1 #2&{%
- \blx@defbibfilter@ii#1==&%
- \ifblank{#2}{}{\blx@defbibfilter@i#2 &}}
-\def\blx@defbibfilter@ii#1=#2=#3&{%
- \ifblank{#2}
- {\ifblank{#1}
- {}
- {\ifcsdef{blx@flt@#1}
- {\csname blx@flt@#1\endcsname}
- {\blx@flt@error}}}
- {\ifcsdef{blx@flt@#1}
- {\csname blx@flt@#1\endcsname{\detokenize{#2}}}
- {\blx@flt@error}}}
-
-\def\blx@flt@and{ and }
-\def\blx@flt@or{ or }
-\def\blx@flt@not{ not }
-\csdef{blx@flt@(}{ ( }
-\csdef{blx@flt@)}{ ) }
-\def\blx@flt@segment#1{%
- test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}}
-\def\blx@flt@type#1{%
- test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}}
-\def\blx@flt@subtype#1{%
- test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}}
-\def\blx@flt@keyword#1{%
- test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}}
-\def\blx@flt@category#1{%
- test {\xifinlistcs\blx@flt@item{blx@catg@#1}}}
-
-% {<name>}{<code>}
-\newrobustcmd*{\defbibcheck}[2]{%
- \csdef{blx@bibcheck@#1}{%
- \togglefalse{blx@skipentry}%
- \def\skipentry{\toggletrue{blx@skipentry}}%
- #2\undef\skipentry}}
-
-% options
-% We need a 2-pass structure for options in \printbibliography and
-% \printbiblist because the section has to be set before any
-% other options and this partly determines which list to use for later filtering
-\define@key{blx@bib1}{segment}{}
-\define@key{blx@bib1}{type}{}
-\define@key{blx@bib1}{nottype}{}
-\define@key{blx@bib1}{subtype}{}
-\define@key{blx@bib1}{notsubtype}{}
-\define@key{blx@bib1}{keyword}{}
-\define@key{blx@bib1}{notkeyword}{}
-\define@key{blx@bib1}{category}{}
-\define@key{blx@bib1}{notcategory}{}
-\define@key{blx@bib1}{filter}{}
-\define@key{blx@bib1}{check}{}
-\define@key{blx@bib1}{heading}{}
-\define@key{blx@bib1}{env}{}
-\define@key{blx@bib1}{title}{}
-\define@key{blx@bib1}{prenote}{}
-\define@key{blx@bib1}{postnote}{}
-\define@key{blx@bib1}{resetnumbers}[]{}
-\define@key{blx@bib1}{omitnumbers}[]{}
-\define@key{blx@bib1}{prefixnumbers}{}
-
-\define@key{blx@bib2}{section}{}
-\define@key{blx@bib2}{sorting}{}
-
-\define@key{blx@biblist1}{segment}{}
-\define@key{blx@biblist1}{type}{}
-\define@key{blx@biblist1}{nottype}{}
-\define@key{blx@biblist1}{subtype}{}
-\define@key{blx@biblist1}{notsubtype}{}
-\define@key{blx@biblist1}{keyword}{}
-\define@key{blx@biblist1}{notkeyword}{}
-\define@key{blx@biblist1}{category}{}
-\define@key{blx@biblist1}{notcategory}{}
-\define@key{blx@biblist1}{filter}{}
-\define@key{blx@biblist1}{check}{}
-\define@key{blx@biblist1}{heading}{}
-\define@key{blx@biblist1}{env}{}
-\define@key{blx@biblist1}{title}{}
-\define@key{blx@biblist1}{prenote}{}
-\define@key{blx@biblist1}{postnote}{}
-
-\define@key{blx@biblist2}{section}{}
-\define@key{blx@biblist2}{sorting}{}
-
-\define@key{blx@bib1}{sorting}{%
- \blx@warning@noline{%
- sorting option to \string\printbibliography\space is no longer supported, use 'sorting' option to \string\newrefcontext}}
-
-\define@key{blx@bib1}{section}{%
- \ifcsundef{blx@sections@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax
- \def\blx@tempe{#1}}}
-
-\define@key{blx@biblist1}{section}{%
- \ifcsundef{blx@sections@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax
- \def\blx@tempe{#1}}}
-
-\define@key{blx@biblist1}{sorting}{%
- \blx@warning@noline{%
- sorting option to \string\printbiblist\space is no longer supported, use 'sorting' option to \string\newrefcontext}}
-
-\define@key{blx@bbg}{section}{%
- \ifcsundef{blx@sections@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax}}
-
-\define@key{blx@bbc}{section}{%
- \ifcsundef{blx@sections@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax}}
-
-\define@key{blx@bib2}{segment}{\blx@key@segment{#1}}
-\define@key{blx@biblist2}{segment}{\blx@key@segment{#1}}
-
-\def\blx@key@segment#1{%
- \ifcsundef{blx@segm@\the\c@refsection @#1}
- {\blx@error
- {Segment '#1' not found in section '\the\c@refsection'}
- {The reference segment '#1' could not be found in section '\the\c@refsection'}}
- {\c@refsegment#1\relax
- \blx@printbibchecks
- \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}}
-
-\define@key{blx@bib2}{type}{\blx@key@type{#1}}
-\define@key{blx@biblist2}{type}{\blx@key@type{#1}}
-
-\def\blx@key@type#1{%
- \ifcsundef{blx@type@\the\c@refsection @#1}
- {\blx@warning{Type '#1' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \iftoggle{blx@tempb}
- {\togglefalse{blx@tempb}%
- \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {'type' used multiple times}
- {When passing multiple filter options, each entry\MessageBreak
- must satisfy all conditions (AND conjunction),\MessageBreak
- hence some options may not be used twice.\MessageBreak
- Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
-
-\define@key{blx@bib2}{nottype}{\blx@key@nottype{#1}}
-\define@key{blx@biblist2}{nottype}{\blx@key@nottype{#1}}
-
-\def\blx@key@nottype#1{%
- \ifcsundef{blx@type@\the\c@refsection @#1}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}}
-
-\define@key{blx@bib2}{subtype}{\blx@key@subtype{#1}}
-\define@key{blx@biblist2}{subtype}{\blx@key@subtype{#1}}
-
-\def\blx@key@subtype#1{%
- \ifcsundef{blx@subt@\the\c@refsection @#1}
- {\blx@warning{Subtype '#1' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \iftoggle{blx@tempb}
- {\togglefalse{blx@tempb}%
- \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {'subtype' used multiple times}
- {When passing multiple filter options, each entry\MessageBreak
- must satisfy all conditions (AND conjunction),\MessageBreak
- hence some options may not be used twice.\MessageBreak
- Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
-
-\define@key{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}}
-\define@key{blx@biblist2}{notsubtype}{\blx@key@notsubtype{#1}}
-
-\def\blx@key@notsubtype#1{%
- \ifcsundef{blx@subt@\the\c@refsection @#1}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}}
-
-\define@key{blx@bib2}{keyword}{\blx@key@keyword{#1}}
-\define@key{blx@biblist2}{keyword}{\blx@key@keyword{#1}}
-
-\def\blx@key@keyword#1{%
- \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
- {\blx@warning{Keyword '\detokenize{#1}' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
-
-\define@key{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}}
-\define@key{blx@biblist2}{notkeyword}{\blx@key@notkeyword{#1}}
-
-\def\blx@key@notkeyword#1{%
- \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
-
-\define@key{blx@bib2}{category}{\blx@key@category{#1}}
-\define@key{blx@biblist2}{category}{\blx@key@category{#1}}
-
-\def\blx@key@category#1{%
- \ifcsundef{blx@catg@\detokenize{#1}}
- {\blx@warning{Category '\detokenize{#1}' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}}
-
-\define@key{blx@bib2}{notcategory}{\blx@key@notcategory{#1}}
-\define@key{blx@biblist2}{notcategory}{\blx@key@notcategory{#1}}
-
-\def\blx@key@notcategory#1{%
- \ifcsundef{blx@catg@#1}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@catg@#1}}}
-
-\define@key{blx@bib2}{filter}{\blx@key@filter{#1}}
-\define@key{blx@biblist2}{filter}{\blx@key@filter{#1}}
-
-\def\blx@key@filter#1{%
- \ifcsdef{blx@filter@#1}
- {\blx@printbibchecks
- \blx@bibfilter\blx@tempa{blx@filter@#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {Filter '#1' not found}
- {The filter '#1' could not be found.\MessageBreak
- Use \string\defbibfilter\space to define it}}}
-
-\define@key{blx@bib2}{check}{\blx@key@bibcheck{#1}}
-\define@key{blx@biblist2}{check}{\blx@key@bibcheck{#1}}
-
-\def\blx@key@bibcheck#1{%
- \ifcsdef{blx@bibcheck@#1}
- {\letcs\blx@bibcheck{blx@bibcheck@#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {Check '#1' not found}
- {The check '#1' could not be found.\MessageBreak
- Use \string\defbibcheck\space to define it}}}
-
-\define@key{blx@bhd}{heading}{\blx@key@heading{#1}}
-\define@key{blx@bib2}{heading}{\blx@key@heading{#1}}
-\define@key{blx@biblist2}{heading}{\blx@key@heading{#1}}
-\define@key{blx@bbs}{heading}{\blx@key@heading{#1}}
-\define@key{blx@bbg}{heading}{\blx@key@heading{#1}}
-
-\def\blx@key@heading#1{%
- \ifcsundef{blx@head@#1}
- {\blx@error
- {Heading '#1' not found}
- {The heading '#1' could not be found.\MessageBreak
- Use \string\defbibheading\space to define it}}
- {\def\blx@theheading{#1}}}
-
-\define@key{blx@bib2}{env}{\blx@key@env{#1}}
-\define@key{blx@biblist2}{env}{\blx@key@env{#1}}
-\define@key{blx@bbs}{env}{\blx@key@env{#1}}
-\define@key{blx@bbg}{env}{\blx@key@env{#1}}
-\define@key{blx@bbc}{env}{\blx@key@env{#1}}
-
-\def\blx@key@env#1{%
- \ifcsundef{blx@env@#1}
- {\blx@error
- {Environment '#1' not found}
- {The environment '#1' could not be found.\MessageBreak
- Use \string\defbibenvironment\space to define it}}
- {\def\blx@theenv{#1}}}
-
-\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}}
-\define@key{blx@bib2}{title}{\def\blx@thetitle{#1}}
-\define@key{blx@biblist2}{title}{\def\blx@thetitle{#1}}
-
-\define@key{blx@bib2}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@biblist2}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}}
-\def\blx@key@prenote#1{%
- \ifcsundef{blx@note@#1}
- {\blx@error
- {Note '#1' not found}
- {The note '#1' could not be found.\MessageBreak
- Use \string\defbibnote\space to define it}}
- {\def\blx@theprenote{#1}}}
-
-\define@key{blx@bib2}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@biblist2}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}}
-
-\def\blx@key@postnote#1{%
- \ifcsundef{blx@note@#1}
- {\blx@error
- {Note '#1' not found}
- {The note '#1' could not be found.\MessageBreak
- Use \string\defbibnote\space to define it}}
- {\def\blx@thepostnote{#1}}}
-
-\define@key{blx@bib2}{resetnumbers}[true]{%
- \iftoggle{blx@defernumbers}
- {\ifstrequal{#1}{true}
- {\csnumdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{0}}
- {\ifstrequal{#1}{false}
- {}
- {\csnumdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{#1-1}}}}
- {\blx@warning{%
- Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak
- Ignoring 'resetnumbers=true'}}}
-
-\define@key{blx@bib2}{omitnumbers}[true]{%
- \ifstrequal{#1}{true}
- {\iftoggle{blx@defernumbers}
- {\toggletrue{blx@omitnumbers}}
- {\blx@warning{%
- Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak
- Ignoring 'omitnumbers=true'}}}
- {}}
-
-\define@key{blx@bib2}{prefixnumbers}{%
- \def\blx@prefixnumbers{#1}%
- \iftoggle{blx@defernumbers}
- {\csnumdef{blx@labelnumber@\the\c@refsection @\blx@refcontext@context}{0}}
- {\iftoggle{blx@labelnumber}
- {\blx@warning{%
- Option 'prefixnumbers' requires global\MessageBreak
- 'defernumbers=true'}}
- {}}}
-
-% [<options>]
-\newrobustcmd*{\printbibheading}{%
- \begingroup
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@printbibheading}
- {\blx@printbibheading[]}}
-
-\def\blx@printbibheading[#1]{%
- \def\blx@theheading{bibliography}%
- \let\blx@thetitle\@empty
- \blx@safe@actives
- \setkeys{blx@bhd}{#1}%
- \blx@rest@actives
- \blx@langstrings
- \blx@bibheading\blx@theheading\blx@thetitle
- \endgroup}
-
-% [<options>]
-\newrobustcmd*{\printbibliography}{%
- \begingroup
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@printbibliography}
- {\blx@printbibliography[]}}
-
-\def\blx@printbibliography[#1]{%
- \toggletrue{blx@tempa}%
- \toggletrue{blx@tempb}%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- % defaults
- \let\blx@tempa\@empty% before there is a .bbl, this must not be undef
- \edef\blx@tempd{%
- \blx@xml@sorting{%
- \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting}
- { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"}
- {}}{%
- \csuse{blx@biber@sorting@\blx@refcontext@sorting}}}% default to context
- \edef\blx@tempe{\the\c@refsection}% default refsection is current
- \blx@safe@actives
- % Add the sortscheme to the list of sortschemes
- % so we can compare on next run
- \xifinlist{\blx@refcontext@sorting}{\blx@sortschemes}
- {}
- {\listxadd\blx@sortschemes{\blx@refcontext@sorting}%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@refcontext@sorting}}}%
- \edef\blx@tempd{%
- \blx@xml@sorting{%
- \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting}
- { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"}
- {}}{%
- \csuse{blx@biber@sorting@\blx@refcontext@sorting}}}%
- \setkeys{blx@bib1}{#1}% Set section only, if present ...
- \blx@rest@actives
- \ifcsvoid{blx@slist@entry@\blx@tempe @\blx@refcontext@context}
- {}
- {\letcs\blx@tempa{blx@slist@entry@\blx@tempe @\blx@refcontext@context}}%
- \blx@safe@actives
- % Must reset omitnumbers as it's a global macro and if we don't, any
- % \printbibliography following one with this set will inherit any
- % previous "true" value
- \togglefalse{blx@omitnumbers}%
- \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options
- \blx@rest@actives
- \csxappto{blx@biber@slists}{%
- \blx@xml@slist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@refcontext@sorting}{\blx@refcontext@sortingnamekey}{\blx@tempd}{}}%
- \ifdefvoid\blx@tempa
- {\blx@warn@bibempty\endgroup}
- {\blx@bibliography\blx@tempa}}
-
-% [<options>]
-\newrobustcmd*{\bibbysection}{%
- \begingroup
- \ifnum\blx@maxsection=\z@
- \blx@warning{No reference sections found}%
- \fi
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@bibbysection}
- {\blx@bibbysection[]}}
-
-\def\blx@bibbysection[#1]{%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \c@refsection\z@
- \blx@safe@actives
- \setkeys{blx@bbs}{#1}%
- \blx@rest@actives
- \togglefalse{blx@tempa}%
- \blx@refsections}
-
-\def\blx@refsections{%
- \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
- {}
- {\toggletrue{blx@tempa}%
- \begingroup
- \expandafter\blx@bibliography\csname blx@slist@entry@\the\c@refsection @\blx@refcontext@context\endcsname}%
- \ifnum\c@refsection<\blx@maxsection
- \advance\c@refsection\@ne
- \expandafter\blx@refsections
- \else
- \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
- \endgroup
- \fi}
-
-% [<options>]
-\newrobustcmd*{\bibbysegment}{%
- \begingroup
- \edef\on@line{\on@line}%
- \ifnum\csname blx@maxsegment@\the\c@refsection\endcsname=\z@
- \blx@warning{No reference segments found}%
- \fi
- \@ifnextchar[%]
- {\blx@bibbysegment}
- {\blx@bibbysegment[]}}
-
-\def\blx@bibbysegment[#1]{%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \c@refsegment\@ne
- \blx@safe@actives
- \setkeys{blx@bbg}{#1}%
- \blx@rest@actives
- \togglefalse{blx@tempa}%
- \blx@refsegments}
-
-\def\blx@refsegments{%
- \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment}
- {}
- {\toggletrue{blx@tempa}%
- \begingroup
- \let\blx@tempa\@empty
- \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
- {}
- {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}%
- \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}%
- \blx@bibliography\blx@tempa}%
- \ifnum\c@refsegment<\csname blx@maxsegment@\the\c@refsection\endcsname
- \advance\c@refsegment\@ne
- \expandafter\blx@refsegments
- \else
- \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
- \endgroup
- \fi}
-
-% [<options>]
-\newrobustcmd*{\bibbycategory}{%
- \begingroup
- \edef\on@line{\on@line}%
- \ifx\blx@categories\@empty
- \blx@warning{No categories found}%
- \fi
- \@ifnextchar[%]
- {\blx@bibbycategory}
- {\blx@bibbycategory[]}}
-
-\def\blx@bibbycategory[#1]{%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \c@refsection\z@
- \blx@safe@actives
- \setkeys{blx@bbc}{#1}%
- \blx@rest@actives
- \togglefalse{blx@tempa}%
- \forlistloop\blx@bibcategory\blx@categories
- \blx@endbibcategory}
-
-\def\blx@bibcategory#1{%
- \ifcsvoid{blx@catg@#1}
- {}
- {\toggletrue{blx@tempa}%
- \begingroup
- \blx@key@heading{#1}%
- \let\blx@tempa\@empty
- \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
- {}
- {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}%
- \blx@filter\blx@tempa{blx@catg@#1}%
- \blx@bibliography\blx@tempa}}%
-
-\def\blx@endbibcategory{%
- \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
- \endgroup}
-
-% {<entrykey>,...}
-\def\blx@bibliography{%
- \blx@langstrings
- \blx@bibheading\blx@theheading\blx@thetitle
- \blx@bibnote\blx@theprenote
- \begingroup
- \blx@bibinit
- \let\@noitemerr\@empty
- \let\blx@noitem\blx@warn@bibempty
- \ifnum\bibinitsep=\z@
- \let\blx@initsep\relax
- \fi
- \ifnum\bibnamesep=\z@
- \let\blx@namesep\relax
- \fi
- \csuse{blx@env@\blx@theenv}%
- \csuse{blx@hook@bibinit}%
- \csuse{blx@hook@bibinit@next}%
- \let\blx@do\blx@bibitem
- \let\blx@done\blx@endbibliography
- \blx@listloop}
-
-\def\blx@endbibliography{%
- \csuse{blx@endenv@\blx@theenv}%
- \blx@noitem
- \endgroup
- \blx@bibnote\blx@thepostnote
- \endgroup}
-
-\def\blx@bibheading#1#2{%
- \begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}%
- \blx@tempa}
-
-\def\blx@bibheading@i#1#2{%
- \let\newrefsection\relax
- \let\newrefsegment\relax
- \ifblank{#2}
- {\csuse{blx@head@#1}}
- {\csuse{blx@head@#1}[#2]}%
- \let\newrefsection\blx@newrefsection
- \let\newrefsegment\blx@newrefsegment}
-
-\def\blx@bibnote#1{%
- \ifdefempty#1
- {}
- {\begingroup
- \let\newrefsection\relax
- \let\newrefsegment\relax
- \noindent
- \csuse{blx@note@#1}\par\nobreak
- \endgroup}}
-
-\def\blx@bibinit{%
- \iftoggle{blx@citation}
- {}
- {\toggletrue{blx@bibliography}}%
- \blx@blxinit
- \blx@resetdata
- \csuse{blx@hook@bbxinit}%
- \bibsetup\bibfont
- \blx@setsfcodes
- \csuse{blx@bibsetup}}
-
-% {<entrykey>}
-% output a bib item, this is why \blx@thelabelnumber is here so that
-% labelnumber is deferred if defernumbers=true
-\def\blx@bibitem#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@getdata{#1}%
- \blx@bibcheck
- \iftoggle{blx@skipentry}{}{%
- \global\let\blx@noitem\@empty
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \blx@thelabelnumber
- \blx@addprefixnumber
- \addtocounter{instcount}\@ne
- \csuse{blx@item@\blx@theenv}\relax
- \blx@initsep
- \blx@namesep
- \csuse{blx@hook@bibitem}%
- \blx@execute
- \blx@initunit
- \blx@anchor
- \blx@beglangbib
- \bibsentence
- \blx@pagetracker
- \blx@driver\abx@field@entrytype
- \blx@postpunct
- \blx@endlangbib}%
- \endgroup}
- {}}
-
-\let\blx@bibcheck\relax
-
-\def\blx@initsep{%
- \blx@imc@iffieldundef{sortinithash}
- {}
- {\ifnum\c@instcount>\@ne
- \blx@imc@iffieldequals{sortinithash}\blx@previnithash
- {}
- {\addvspace{\bibinitsep}}%
- \fi
- \global\let\blx@previnithash\abx@field@sortinithash}}
-
-\def\blx@namesep{%
- \ifnum\c@instcount>\@ne
- \blx@imc@iffieldequals{fullhash}\blx@prevhash
- {}
- {\addvspace{\bibnamesep}}%
- \fi
- \global\let\blx@prevhash\abx@field@fullhash}
-
-\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit}
-\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem}
-\@onlypreamble\AtBeginBibliography
-\@onlypreamble\AtEveryBibitem
-
-\def\blx@imc@UseBibitemHook{\csuse{blx@hook@bibitem}}
-
-\blx@regimcs{\UseBibitemHook}
-
-\newrobustcmd*{\AtNextBibliography}{%
- \ifundef\blx@hook@bibinit@next
- {\gdef\blx@hook@bibinit@next{\global\undef\blx@hook@bibinit@next}}
- {}%
- \gappto\blx@hook@bibinit@next}
-
-% page tracker
-\def\blx@pagetracker@context{%
- \blx@leavevmode
- \ifbool{@filesw}
- {\ifbool{pagetracker}
- {\protected@write\@mainaux{}{%
- \iftoggle{blx@footnote}
- {\string\abx@aux@fnpage}
- {\string\abx@aux@page}%
- {\the\c@instcount}{\noexpand\the\c@page}}}
- {}}
- {}}
-
-% {<instcount>}{<page>}
-\protected\def\blx@aux@page#1#2{%
- \csgdef{blx@page@#1}{#2}%
- \blx@addpagesum{#1}{#2}}
-\protected\def\blx@aux@spread#1#2{%
- \ifodd#2\relax
- \csxdef{blx@page@#1}{\number\numexpr#2-1}%
- \else
- \csgdef{blx@page@#1}{#2}%
- \fi
- \blx@addpagesum{#1}{#2}}
-
-\protected\def\blx@aux@fnpage#1#2{%
- \csgdef{blx@fnpage@#1}{#2}%
- \blx@addpagesum{#1}{#2}}
-\protected\def\blx@aux@fnspread#1#2{%
- \ifodd#2\relax
- \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}%
- \else
- \csgdef{blx@fnpage@#1}{#2}%
- \fi
- \blx@addpagesum{#1}{#2}}
-
-\AtEndDocument{%
- \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}%
- \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}}
-
-% hyperref interface
-\appto\blx@mkhyperref{%
- \let\blx@anchors\@empty
- \ifundef\hyper@natanchorstart
- {\protected\def\blx@anchor{%
- \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
- {}
- {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
- \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}}
- {\protected\def\blx@anchor{%
- \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
- {}
- {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
- \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}%
- \hyper@natanchorend}}}}
-
-\appto\blx@mknohyperref{\let\blx@anchor\relax}
-
-% Legacy alias for \printshorthands
-\def\printshorthands{%
- \@ifnextchar[%]
- {\blx@printshorthands}
- {\blx@printshorthands[]}}
-
-\def\blx@printshorthands[#1]{\printbiblist[#1]{shorthand}}
-
-% Custom bibliography list
-% [<otions>]{biblistname}
-\newrobustcmd*{\printbiblist}[2][]{%
- \begingroup
- \edef\on@line{\on@line}%
- \toggletrue{blx@tempa}%
- \toggletrue{blx@tempb}%
- \def\blx@theheading{biblist}% default to biblist heading
- \def\blx@theenv{#2}% default to list name
- \def\blx@thebiblist{#2}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- % defaults
- \let\blx@tempa\@empty% before there is a .bbl, this must not be undef
- % default sorting scheme and scheme name for list is same name as list
- % name, then current context if not found
- \edef\blx@tempc{%
- \ifcsdef{blx@biber@sorting@#2}
- {#2}
- {\blx@refcontext@sorting}}%
- % locally define this since we want to fetch data from the slist named
- % after the list we are printing rather than the data in refcontext list
- \edef\blx@refcontext@context{\blx@tempc/\blx@refcontext@sortingnamekey}%
- \edef\blx@tempd{%
- \blx@xml@sorting
- {\ifcsdef{blx@sortdef@locale@#2}
- { locale="\csuse{blx@sortdef@locale@#2}"}
- {}}
- {\csuse{blx@biber@sorting@\blx@tempc}}}%
- \let\blx@printbibchecks\relax
- \edef\blx@tempe{\the\c@refsection}% default refsection is current
- \blx@safe@actives
- \blx@printbibchecks
- % Add the sortscheme to the list of sortschemes for this biblist
- % so we can compare on next run
- \xifinlist{\blx@tempc}{\blx@biblists}
- {}
- {\listxadd\blx@biblists{\blx@tempc}%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@biblist{\blx@tempc}}}%
- \edef\blx@tempd{%
- \blx@xml@sorting{%
- \ifcsdef{blx@sortdef@locale@\blx@tempc}
- { locale="\csuse{blx@sortdef@locale@\blx@tempc}"}
- {}}{%
- \csuse{blx@biber@sorting@\blx@tempc}}}%
- \setkeys{blx@biblist1}{#1}% Set section only, if present ...
- \blx@rest@actives
- \ifcsvoid{blx@slist@list@\blx@tempe @\blx@refcontext@context}
- {}
- {\letcs\blx@tempa{blx@slist@list@\blx@tempe @\blx@refcontext@context}}%
- \blx@safe@actives
- \setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options
- \ifundef\blx@bibcheck
- {\ifcsdef{blx@bibcheck@#2}
- {\letcs\blx@bibcheck{blx@bibcheck@#2}}
- {}}
- {}%
- \blx@rest@actives
- \csxappto{blx@biber@slists}{%
- \blx@xml@slist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@tempc}{\blx@refcontext@sortingnamekey}{\blx@tempd}{\csuse{blx@biber@biblistfilters@#2}}}%
- \ifdefvoid\blx@tempa
- {\blx@warn@biblistempty{#2}\endgroup}
- {\blx@biblist\blx@tempa}}
-
-\def\blx@printbibchecks{%
- \togglefalse{blx@tempa}%
- \iftoggle{blx@defernumbers}
- {\global\let\blx@printbibchecks\relax}
- {\iftoggle{blx@labelnumber}
- {\blx@warning@noline{Setting 'defernumbers=true' recommended}}
- {\global\let\blx@printbibchecks\relax}}}
-
-% {<entrykey>,...}
-\def\blx@biblist{%
- \if@twocolumn
- \@restonecoltrue\onecolumn
- \else
- \@restonecolfalse
- \fi
- \blx@langstrings
- \blx@bibheading\blx@theheading\blx@thetitle
- \blx@bibnote\blx@theprenote
- \begingroup
- \blx@bibinit
- \let\@noitemerr\@empty
- \def\blx@noitem{\blx@warn@biblistempty{\blx@thebiblist}}%
- \csuse{blx@env@\blx@theenv}%
- \csuse{blx@hook@biblistinit@\blx@thebiblist}%
- \let\blx@do\blx@biblistitem
- \let\blx@done\blx@endbiblist
- \blx@listloop}
-
-\def\blx@endbiblist{%
- \csuse{blx@endenv@\blx@theenv}%
- \blx@noitem
- \endgroup
- \blx@bibnote\blx@thepostnote
- \endgroup
- \if@restonecol\twocolumn\fi}
-
-% Legacy aliases
-\def\AtBeginShorthands{\AtBeginBiblist{shorthand}}
-\def\AtEveryLositem{\AtEveryBiblistitem{shorthand}}
-\@onlypreamble\AtBeginShorthands
-\@onlypreamble\AtEveryLositem
-
-% {<biblistname>}
-\newrobustcmd*{\AtBeginBiblist}[1]{\csgappto{blx@hook@biblistinit@#1}}
-\newrobustcmd*{\AtEveryBiblistitem}[1]{\csgappto{blx@hook@biblistitem@#1}}
-\@onlypreamble\AtBeginBiblist
-\@onlypreamble\AtEveryBiblistitem
-
-% {<entrykey>}
-\def\blx@biblistitem#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@getdata{#1}%
- \blx@bibcheck
- \iftoggle{blx@skipentry}{}{%
- \global\let\blx@noitem\@empty
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \addtocounter{instcount}\@ne
- \csuse{blx@item@\blx@theenv}\relax
- \csuse{blx@hook@biblistitem@\blx@thebiblist}%
- \blx@execute
- \blx@initunit
- \blx@beglangbib
- \bibsentence
- \blx@pagetracker
- \blx@driver{\blx@thebiblist}%
- \blx@postpunct
- \blx@endlangbib}%
- \endgroup}
- {}}
-
-% Just a default in case .bbx doesn't define it. standard.bbx defines
-% it to print a complete entry, like the bibliography.
-\DeclareBibliographyDriver{shorthand}{%
- \iffieldundef{shorttitle}
- {\printfield{title}}
- {\printfield{shorttitle}}}
-
-% Reference contexts
-\def\newrefcontext{%
- \endrefcontext
- \refcontext}
-
-\def\refcontext[#1]{%
- \iftoggle{blx@refcontext}
- {\blx@err@nestenv{refcontext}%
- \endrefcontext}
- {\toggletrue{blx@refcontext}%
- \setkeys{blx@refcontext}{#1}%
- \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey}%
- \ifcsundef{blx@biber@sorting@\blx@refcontext@sorting}
- {\blx@err@invopt{sorting=\blx@refcontext@sorting}{}}
- {}}}
-
-% Reset to global sorting etc. when we leave a ref context (since they can't be nested)
-\protected\def\endrefcontext{%
- \togglefalse{blx@refcontext}%
- \xdef\blx@refcontext@sorting{\blx@sorting}%
- \gdef\blx@refcontext@sortingnamekey{global}%
- \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey}}
-
-\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sorting{#1}}
-\define@key{blx@refcontext}{sortingnamekeyscheme}{\gdef\blx@refcontext@sortingnamekey{#1}}
-
-% [refcontext keys]{<keyword1>,<keyword2>,...}
-\def\assignrefcontextkeyws[#1]#2{%
- \edef\blx@tempa{\blx@sorting}%
- \def\blx@tempb{global}%
- \setkeys{blx@assignrefcontext}{#1}%
- \def\do##1{%
- \listxadd\blx@assignedrefcontextkeywlist{##1}%
- \csxdef{blx@assignedrefcontextkeyws@\the\c@refsection @##1}{\blx@tempa/\blx@tempb}}
- \docsvlist{#2}}
-
-% [refcontext keys]{<category1>,<category2>,...}
-\def\assignrefcontextcats[#1]#2{%
- \edef\blx@tempa{\blx@sorting}%
- \def\blx@tempb{global}%
- \setkeys{blx@assignrefcontext}{#1}%
- \def\do##1{%
- \listxadd\blx@assignedrefcontextcatlist{##1}%
- \csxdef{blx@assignedrefcontextcats@\the\c@refsection @##1}{\blx@tempa/\blx@tempb}}
- \docsvlist{#2}}
-
-% [refcontext keys]{<entrykey1>,<entrykey2>,...}
-\def\assignrefcontextentries[#1]#2{%
- \edef\blx@tempa{\blx@sorting}%
- \def\blx@tempb{global}%
- \setkeys{blx@assignrefcontext}{#1}%
- \def\do##1{%
- \csxdef{blx@assignedrefcontextkeys@\the\c@refsection @##1}{\blx@tempa/\blx@tempb}}%
- \docsvlist{#2}}
-
-\define@key{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}}
-\define@key{blx@assignrefcontext}{sortingnamekeyscheme}{\def\blx@tempb{#1}}
-
-% Reference sections
-\newrobustcmd*{\newrefsection}{%
- \ifnum\c@refsection>\z@
- \endrefsection
- \fi
- \refsection}
-\let\blx@newrefsection\newrefsection
-
-\newrobustcmd*{\refsection}{%
- \begingroup
- \edef\on@line{\on@line}%
- \ifnum\c@refsection>\z@
- \blx@err@nestenv{refsection}%
- \blx@endrefsection
- \fi
- \ifnum\c@refsegment>\z@
- \blx@err@nestenv{refsection}%
- \blx@endrefsegment
- \fi
- \@ifnextchar[%]
- {\blx@refsection}
- {\blx@refsection[]}}
-
-\def\blx@refsection{%
- \begingroup
- \blx@hook@fileverb
- \blx@refsection@i}
-
-\def\blx@refsection@i[#1]{%
- \endgroup
- \global\advance\blx@maxsection\@ne
- \global\c@refsection\blx@maxsection
- \expandafter\newcount\csname blx@maxsegment@\the\c@refsection\endcsname
- \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
- \blx@inf@refsec
- \blx@secinit
- \if@filesw
- \blx@auxwrite\@mainaux{}{%
- \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}%
- \ifblank{#1}
- {}
- {\let\blx@bibfiles\@empty
- % globals should be first as it might contain macros needed for others
- \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}%
- \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}%
- \blx@refsection@biber
- \fi
- \blx@info{Setting label 'refsection:\the\c@refsection'}%
- \label{refsection:\the\c@refsection}%
- \endgroup}
-
-\def\blx@refsection@addfile#1{%
- \ifcsdef{blx@res@labl@#1}
- {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}}
- {\blx@refsection@addfile@i{#1}}}
-
-\def\blx@refsection@addfile@i#1{%
- \ifcsdef{blx@res@loca@#1}
- {\listeadd\blx@bibfiles{#1}}
- {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}}
-
-\def\blx@refsection@biber{%
- \blx@regbibfiles\jobname\blx@bibfiles
- \begingroup
- \let\blx@tempa\@empty
- \blx@bibdata\blx@tempa\blx@bibfiles
- \blx@auxwrite\blx@bcfout
- {\let\do\blx@datasource}
- {\blx@xml@endsection\blx@nl
- \blx@xml@comment{SECTION \the\c@refsection}%
- \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}%
- \blx@xml@section{\the\c@refsection}}%
- \endgroup}
-
-\protected\def\endrefsection{%
- \blx@endrefsection
- \blx@inf@refsec}
-
-\def\blx@endrefsection{%
- \blx@endrefsegment
- \blx@endrefsection@biber
- \global\c@refsection\z@}
-
-\def\blx@endrefsection@biber{%
- % make sure we always output aliases to the .bcf otherwise after their
- % first resolution by biber, they will be invisible to subsequent biber
- % runs since biblatex will resolve the \keyalias{} macro to the main
- % entry key, biber won't put \keyalias{}in the .bbl on subsequent runs
- % and biblatex will report a missing citekey
- \def\do##1{%
- % Make sure this counter exists. Sometimes it might not when using, e.g:
- % refsection=chapter and \includeonly to put in the chapters or when
- % inserting citations into table of contents
- \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else
- \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
- \fi
- \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne
- \blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{##1}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}%
- \dolistcsloop{blx@keyaliases@\the\c@refsection}%
- \ifnum\c@refsection>\z@
- \blx@auxwrite\blx@bcfout{}{%
- \blx@xml@endsection\blx@nl
- \blx@xml@comment{SECTION 0 (cont.)}%
- \blx@xml@section{0}}%
- \fi}
-
-\AtEndDocument{%
- \endrefcontext
- \blx@endrefsection
- \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}}
-
-\protected\def\abx@aux@refsection#1#2{%
- \ifnum#1>\blx@maxsection
- \global\blx@maxsection#1\relax
- \fi
- \blx@addchecksum{#1}{#2}}
-
-% Reference segments
-
-\newrobustcmd*{\newrefsegment}{%
- \ifnum\c@refsegment>\z@
- \blx@endrefsegment
- \fi
- \refsegment}
-\let\blx@newrefsegment\newrefsegment
-
-\newrobustcmd*{\refsegment}{%
- \ifnum\c@refsegment>\z@
- \blx@err@nestenv{refsegment}%
- \blx@endrefsegment
- \fi
- \global\advance\csname blx@maxsegment@\the\c@refsection\endcsname\@ne
- \global\c@refsegment\csname blx@maxsegment@\the\c@refsection\endcsname
- \blx@inf@refseg
- \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}%
- \label{refsegment:\the\c@refsection\the\c@refsegment}%
- \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment}
- {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty}
- {}}
-
-\protected\def\endrefsegment{%
- \blx@endrefsegment
- \blx@inf@refseg}
-
-\def\blx@endrefsegment{%
- \global\c@refsegment\z@}
-
-% Reference section/segment auto-reset
-% we are prepending to the commands so that the resets happen before
-% the part title is typeset otherwise \cites in there could be "ibid"
-% which makes no sense
-\def\blx@refpatch@part#1{%
- \ifundef\part
- {\blx@err@nodocdiv{part}}
- {\toggletrue{blx@tempa}%
- \def\do##1{%
- \pretocmd##1{#1}
- {\togglefalse{blx@tempa}\listbreak}
- {}}%
- \docsvlist{%
- \H@old@part,% hyperref
- \NR@part,% nameref
- \@part}% latex/koma-script/memoir
- \iftoggle{blx@tempa}
- {\blx@err@patch{\string\@part}}
- {}%
- \let\do\noexpand}}
-
-\def\blx@refpatch@chapter#1{%
- \ifundef\chapter
- {\blx@err@nodocdiv{chapter}}
- {\pretocmd\@makechapterhead{#1}
- {}
- {\blx@err@patch{\string\@makechapterhead}}}}
-
-\def\blx@refpatch@sect#1{%
- \ifcsundef{#1}
- {\blx@err@nodocdiv{#1}\@gobbletwo}
- {\blx@refpatch@sect@i}}
-
-\edef\blx@refpatch@sect@i#1#2{%
- \def\noexpand\do##1{%
- \pretocmd##1%
- {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}}
- {\togglefalse{blx@tempa}\noexpand\listbreak}
- {}}%
- \noexpand\blx@refpatch@sect@iii}
-
-\def\blx@refpatch@sect@ii#1#2#3{%
- \ifnumequal{#2}{#3}{#1}{}}
-
-\def\blx@refpatch@sect@iii{%
- \toggletrue{blx@tempa}%
- \docsvlist{% order does matter:
- \H@old@sectm@m,% memoir+hyperref (what a mess...)
- \M@sect,% memoir
- \H@old@sect,% hyperref
- \NR@sect,% nameref
- \scr@sect,% koma-script 3.x
- \@sect}% latex
- \iftoggle{blx@tempa}
- {\blx@err@patch{\string\@sect}}
- {}%
- \let\do\noexpand}
-
-% Bibliography categories
-
-\let\blx@categories\@empty
-
-% {<category>}
-\newrobustcmd*{\DeclareBibliographyCategory}[1]{%
- \ifcsundef{blx@catg@#1}
- {\global\cslet{blx@catg@#1}\@empty
- \listgadd\blx@categories{#1}}
- {\blx@error
- {Category '#1' already declared}
- {The bibliography category '#1'\MessageBreak
- has already been declared}}}
-\@onlypreamble\DeclareBibliographyCategory
-
-% {<category>}{<entrykey>,...}
-\newrobustcmd*{\addtocategory}[2]{%
- \ifcsundef{blx@catg@#1}
- {\blx@error
- {Category '#1' not declared}
- {Use \string\DeclareBibliographyCategory\space to declare}}
- {\AfterPreamble{%
- \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}}
-
-% {<category>}{<entrykey>,...}
-\def\blx@addtocategory#1#2{%
- % If we are adding a set member to a category, make sure we also add the
- % set parent if it is cited. If it is cited, we should be using the set
- % parent in the category, not the set child member. blx@setc@... will
- % only exist if the set parent is also cited as it is only defined when a
- % member contains \inset which only happens when the set parent is cited.
- \ifcsdef{blx@setc@\the\c@refsection @#2}
- {\blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}%
- \abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}
- {}%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}%
- \abx@aux@category{#1}{#2}}
-
-% {<category>}{<entrykey>,...}
-\protected\def\abx@aux@category#1#2{%
- \xifinlistcs{\detokenize{#2}}{blx@catg@#1}
- {}
- {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}}
-
-\AtEndDocument{\let\abx@aux@category\@gobbletwo}
-
-% [<options>]{<resource>,...}
-\renewrobustcmd*{\bibliography}[1]{%
- \begingroup
- \def\blx@tempa{file}%
- \def\blx@tempb{bibtex}%
- \def\blx@tempc{local}%
- \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}%
- \endgroup}
-\@onlypreamble\bibliography
-
-\def\blx@addbib@legacy#1{%
- \begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}%
- \blx@tempa}
-
-\def\blx@stripbib#1{%
- \expandafter\blx@stripbib@i\detokenize{#1.bib}&}
-\edef\blx@stripbib@i{%
- \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&}
-\blx@stripbib@i{#1}
-
-% [<options>]{<resource>,...}
-\newrobustcmd*{\addbibresource}{%
- \blx@addbib\blx@addbib@resource}
-\@onlypreamble\addbibresource
-
-\newrobustcmd*{\addglobalbib}{%
- \blx@addbib\blx@addbib@global}
-\@onlypreamble\addglobalbib
-
-\newrobustcmd*{\addsectionbib}{%
- \blx@addbib\blx@addbib@register}
-\@onlypreamble\addsectionbib
-
-\def\blx@addbib#1{%
- \@ifnextchar[%]
- {\blx@addbib@i{#1}}
- {\blx@addbib@i{#1}[]}}
-
-\def\blx@addbib@i#1[#2]{%
- \begingroup
- \blx@hook@fileverb
- \blx@addbib@ii{#1}{#2}}
-
-\def\blx@addbib@ii#1#2#3{%
- \endgroup
- \begingroup
- \def\blx@tempa{file}%
- \def\blx@tempb{bibtex}%
- \def\blx@tempc{local}%
- \undef\blx@tempd
- \setkeys{blx@addbib}{#2}%
- \blx@xsanitizeafter{#1}{#3}%
- \endgroup}
-
-\def\blx@hook@fileverb{%
- \let\do\@makeother
- \dospecials
- \catcode`\\=\z@
- \catcode`\{=\@ne
- \catcode`\}=\tw@}
-
-\define@key{blx@addbib}{type}{\def\blx@tempa{#1}}
-\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}}
-\define@key{blx@addbib}{location}{\def\blx@tempc{#1}}
-\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}}
-
-% \blx@res@type@<resource> resource -> type
-% \blx@res@data@<resource> resource -> datatype
-% \blx@res@loca@<resource> resource -> datatype
-% \blx@res@labl@<resource> label -> resource
-
-\def\blx@addbib@register#1{%
- \csxdef{blx@res@type@#1}{\blx@tempa}%
- \csxdef{blx@res@data@#1}{\blx@tempb}%
- \csxdef{blx@res@loca@#1}{\blx@tempc}%
- \ifdef\blx@tempd
- {\csxdef{blx@res@labl@\blx@tempd}{#1}}
- {}}
-
-\def\blx@addbib@resource#1{%
- \blx@addbib@register{#1}%
- \listgadd\blx@bibfiles{#1}%
- \blx@regbibfile\jobname{#1}}
-
-\def\blx@addbib@global#1{%
- \blx@addbib@resource{#1}%
- \listgadd\blx@bibfiles@global{#1}}
-
-\let\blx@bibfiles\@empty
-\let\blx@bibfiles@global\@empty
-
-\def\blx@bibdata#1#2{%
- \forlistloop{\blx@bibdata@i{#1}}#2}
-\def\blx@bibdata@i#1#2{%
- \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}}
-\def\blx@bibdata@ii#1#2#3{%
- \eappto#1{%
- \blx@xml@datasource
- {\ifcsdef{blx@res@type@#2}
- {\csuse{blx@res@type@#2}}
- {file}}
- {\ifcsdef{blx@res@data@#2}
- {\csuse{blx@res@data@#2}}
- {bibtex}}
- {#3}}}
-
-%% Citations
-
-\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite}
-\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey}
-\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite}
-\@onlypreamble\AtEveryCite
-\@onlypreamble\AtEveryCitekey
-\@onlypreamble\AtEveryMultiCite
-
-\newrobustcmd*{\AtEachCitekey}{%
- \iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}}
-
-\def\blx@imc@UseEveryCiteHook{\csuse{blx@hook@cite}}
-\def\blx@imc@UseEveryCitekeyHook{\csuse{blx@hook@citekey}}
-\def\blx@imc@UseEveryMultiCiteHook{\csuse{blx@hook@mcite}}
-
-\newrobustcmd*{\AtNextCite}{%
- \ifundef\blx@hook@cite@next
- {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}}
- {}%
- \gappto\blx@hook@cite@next}
-
-\newrobustcmd*{\AtNextCitekey}{%
- \ifundef\blx@hook@citekey@next
- {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}}
- {}%
- \gappto\blx@hook@citekey@next}
-
-\newrobustcmd*{\AtNextMultiCite}{%
- \ifundef\blx@hook@mcite@next
- {\gdef\blx@hook@mcite@next{\global\undef\blx@hook@mcite@next}}
- {}%
- \gappto\blx@hook@mcite@next}
-
-\def\blx@imc@UseNextCiteHook{\csuse{blx@hook@cite@next}}
-\def\blx@imc@UseNextCitekeyHook{\csuse{blx@hook@citekey@next}}
-\def\blx@imc@UseNextMultiCiteHook{\csuse{blx@hook@mcite@next}}
-
-\def\blx@imc@DeferNextCitekeyHook{\undef\blx@hook@citekey@next}
-
-\blx@regimcs{%
- \UseEveryCiteHook \UseEveryCitekeyHook \UseEveryMultiCiteHook
- \UseNextCiteHook \UseNextCitekeyHook \UseNextMultiCiteHook
- \DeferNextCitekeyHook}
-
-% {<style>}
-
-\newrobustcmd*{\RequireCitationStyle}[1]{%
- \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{}
- {\blx@error
- {Style '#1' not found}
- {The citation style '#1' could not be found}}}
-\@onlypreamble\RequireCitationStyle
-
-% {<code>}
-
-\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit}
-\@onlypreamble\InitializeCitationStyle
-
-% {<code>}
-
-\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite}
-\@onlypreamble\OnManualCitation
-
-\newrobustcmd*{\mancite}{%
- \csuse{blx@hook@mancite}%
- \blx@ibidreset
- \blx@idemreset
- \blx@opcitreset
- \blx@loccitreset}
-
-% {<entrykey>}{<message>}
-% Just a wrapper to suppress citation tracking in toc/lof etc.
-\def\blx@citation#1#2{%
- \ifbool{citerequest}
- {\blx@citation@entry{#1}{#2}}
- {}}
-
-\def\blx@citation@entry#1#2{%
- \blx@bibreq{#1}%
- \ifinlist{#1}{\blx@cites}
- {}
- {\listgadd{\blx@cites}{#1}%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@cite{#1}}}%
- \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}
- {}
- {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}%
- \blx@ifdata{#1}
- {}
- {\ifcsdef{blx@miss@\the\c@refsection}
- {\ifinlistcs{#1}{blx@miss@\the\c@refsection}
- {}
- {\blx@logreq@active{#2{#1}}}}
- {\blx@logreq@active{#2{#1}}}}}
-
-\def\blx@citation@set#1#2{%
- \blx@citation@entry{#1}{#2}%
- \begingroup
- \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}%
- \expandafter\expandafter\expandafter\docsvlist
- \expandafter\expandafter\expandafter{%
- \csname blx@setp@\the\c@refsection @#1\endcsname}%
- \endgroup}
-
-\def\blx@citation@inset#1#2{%
- \blx@citation@entry{#1}{#2}%
- \expandafter\expandafter\expandafter\blx@citation@inset@i
- \expandafter\expandafter\expandafter{%
- \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef}
-
-\def\blx@citation@inset@i#1{%
- \ifcsdef{blx@setp@\the\c@refsection @#1}
- {\blx@citation@set{#1}}
- {\blx@citation@entry{#1}}}
-
-\def\blx@citation@all{%
- \ifbool{citerequest}
- {\blx@bibreq{*}%
- \global\csletcs
- {blx@segm@\the\c@refsection @\the\c@refsegment}
- {blx@slist@entry@\the\c@refsection @\blx@refcontext@context}%
- \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}
- {\blx@logreq@active{}}
- {}}
- {}}
-
-\protected\def\blx@bibreq#1{%
- \begingroup
- \blx@xmlsanitizeafter{\def\blx@tempa}{#1}%
- % citeall is always order "0" - this makes no real difference as biber
- % ignores all other citekeys in the section if citeall is present
- \ifstrequal{*}{#1}
- {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{0}}}
- {\blx@auxwrite\blx@bcfout{}{\blx@xml@citekey{\blx@tempa}{\expandafter\the\csname blx@sectionciteorder@\the\c@refsection\endcsname}}}%
- \endgroup}
-
-% {<set>}{<key1,key2,key3>}
-
-\newrobustcmd*{\defbibentryset}[2]{%
- \@bsphack
- \begingroup
- \blx@xsanitizeafter{\def\blx@tempa}{#1}%
- \let\blx@tempb\@empty
- \let\blx@tempc\@empty
- \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}%
- \ifcsdef{blx@set@\the\c@refsection @\blx@tempa}
- {\expandafter\ifdefequal
- \csname blx@set@\the\c@refsection @\blx@tempa\endcsname
- \blx@tempb
- {}
- {\blx@error
- {Conflicting definitions of '\blx@tempa'}
- {The entry set '\blx@tempa' been defined before.\MessageBreak
- old: \blx@tempa\space = %
- \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak
- new: \blx@tempa\space = \blx@tempb\MessageBreak
- I'm ignoring the new definition}}}
- {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb
- \edef\blx@tempa{%
- \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}%
- \blx@tempa}%
- \endgroup
- \@esphack}
-
-\def\blx@defentryset@add#1{%
- \edef\blx@tempb{\blx@tempb\blx@tempc#1}%
- \def\blx@tempc{,}}
-
-\protected\def\blx@setreq#1#2{%
- \begingroup
- \blx@xmlsanitizeafter{\def\blx@tempa}{#1}%
- \blx@xmlsanitizeafter{\def\blx@tempb}{#2}%
- \blx@auxwrite\blx@bcfout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}%
- \endgroup}
-
-% {<entrykey>,...}
-\protected\def\blx@citeloop#1{%
- \begingroup
- % Make sure this counter exists. Sometimes it might not when using, e.g:
- % refsection=chapter and \includeonly to put in the chapters or when
- % inserting citations into table of contents
- \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else
- \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
- \fi
- \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne
- \blx@tempcnta\z@
- \blx@tempcntb\z@
- \let\blx@tempa\@empty
- \forcsvlist\blx@citeadd{#1}%
- \blx@thenotecheck
- \ifnum\blx@tempcnta>\z@
- \ifnum\blx@tempcntb>\z@
- \multicitedelim
- \fi
- \fi
- \letcs\blx@tempb{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}%
- \blx@thecitesort
- \edef\blx@tempa{\endgroup
- \c@citecount\z@
- \c@citetotal\the\blx@tempcnta\relax
- \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}%
- \blx@tempa}
-
-\def\blx@notecheck{%
- \ifnum\blx@tempcnta>\@ne
- \blx@warning{%
- Package option 'sortcites' enabled.\MessageBreak
- Verify postnote placement}%
- \fi}
-
-\def\blx@citesort{%
- \ifnum\blx@tempcnta>\@ne
- \blx@filtercitesort\blx@tempb{blx@tempa}%
- \else
- \blx@citenosort
- \fi}
-
-\def\blx@citenosort{%
- \let\blx@tempb\blx@tempa}
-
-% {<entrykey>}
-\def\blx@citeadd#1{%
- \ifcsdef{blx@keyalias@\the\c@refsection @#1}
- {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}}
- {\def\blx@realkey{#1}}%
- \expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon
- \expandafter\blx@ifdata\expandafter{\blx@realkey}
- {\advance\blx@tempcnta\@ne
- \listeadd\blx@tempa{\blx@realkey}}
- {\ifnum\blx@tempcntb>\z@\multicitedelim\fi
- \expandafter\abx@missing\expandafter{\blx@realkey}%
- \advance\blx@tempcntb\@ne}}
-
-% set refcontext for one citation key from auto-assign \assignrefcontext*
-% macros, if any
-% <entrykey>
-\def\blx@getrefcontext#1{%
- \let\blx@refcontext@context@saved\blx@refcontext@context
- \ifdef\blx@assignedrefcontextkeywlist
- {\def\do##1{%
- \blx@imc@ifentrykeyword{#1}{##1}
- {\letcs\blx@refcontext@context{blx@assignedrefcontextkeyws@\the\c@refsection @##1}}
- {}}%
- \dolistloop\blx@assignedrefcontextkeywlist}
- {}%
- \ifdef\blx@assignedrefcontextcatlist
- {\def\do##1{%
- \blx@imc@ifentrycategory{#1}{##1}
- {\letcs\blx@refcontext@context{blx@assignedrefcontextcats@\the\c@refsection @##1}}
- {}}%
- \dolistloop\blx@assignedrefcontextcatlist}
- {}%
- \ifcsdef{blx@assignedrefcontextkeys@\the\c@refsection @#1}
- {\letcs\blx@refcontext@context{blx@assignedrefcontextkeys@\the\c@refsection @#1}}
- {}}
-
-% {<entrykey>}
-\protected\def\blx@citeprint#1{%
- \blx@getrefcontext{#1}%
- \advance\c@citecount\@ne
- \addtocounter{instcount}\@ne
- \ifnum\c@citecount=\@ne
- \blx@getdata@cite{#1}%
- \blx@precode
- \ifnum\c@citetotal>\@ne
- \blx@resetdata
- \fi
- \else
- \blx@dlimcode
- \fi
- \begingroup
- \ifnum\c@citetotal>\@ne
- \blx@getdata@cite{#1}%
- \fi
- \blx@entrysetcount
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \blx@backref{#1}%
- \blx@pagetracker
- \csuse{blx@hook@citekey}%
- \csuse{blx@hook@citekey@next}%
- \blx@beglangcite
- \blx@execute
- \blx@loopcode
- \blx@citecounter
- \blx@citetracker
- \blx@ibidtracker
- \blx@idemtracker
- \blx@opcittracker
- \blx@loccittracker
- \ifnum\c@citecount=\c@citetotal
- \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}%
- \blx@postcode
- \fi
- \blx@endlangcite
- \endgroup
- \let\blx@refcontext@context\blx@refcontext@context@saved}
-
-% cite counter
-
-\def\blx@citecounter@global{%
- \ifbool{@filesw}
- {\ifbool{citetracker}
- {\immediate\write\@mainaux{%
- \string\abx@aux@count
- {\the\c@refsection}{\abx@field@entrykey}}}
- {}}
- {}}
-
-\def\blx@citecounter@context{%
- \ifbool{@filesw}
- {\ifbool{citetracker}
- {\immediate\write\@mainaux{%
- \iftoggle{blx@footnote}
- {\string\abx@aux@fncount}
- {\string\abx@aux@count}%
- {\the\c@refsection}{\abx@field@entrykey}}}
- {}}
- {}}
-
-% {<refsection>}{<entrykey>}
-
-\protected\def\blx@aux@count#1#2{%
- \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}}
-\protected\def\blx@aux@fncount#1#2{%
- \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}}
-
-\let\abx@aux@count\@gobbletwo
-\let\abx@aux@fncount\@gobbletwo
-
-\AtEndDocument{%
- \let\abx@aux@count\@gobbletwo
- \let\abx@aux@fncount\@gobbletwo}
-
-\protected\def\blx@setcitecounter@global{%
- \c@citecounter0%
- \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}%
- \relax}
-
-\protected\def\blx@setcitecounter@context{%
- \c@citecounter0%
- \iftoggle{blx@footnote}
- {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}}
- {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}%
- \relax}
-
-% cite tracker
-
-\def\blx@citetracker@global{%
- \ifbool{citetracker}
- {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection}
- {}
- {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}
- {}}
-
-\def\blx@citetracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection}
- {}
- {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}}
- {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection}
- {}
- {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}}
- {}}
-
-\protected\appto\abx@savetrackers{%
- \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}%
- \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}}
-
-\protected\appto\abx@resttrackers{%
- \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}%
- \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}}
-
-\protected\appto\abx@cleartrackers{%
- \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty
- \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty}
-
-% ibidem tracker
-
-\def\blx@ibidtracker@global{%
- \ifbool{citetracker}
- {\global\let\blx@lastkey@text\abx@field@entrykey}
- {}}
-
-\def\blx@ibidtracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\global\let\blx@lastkey@foot\abx@field@entrykey}
- {\global\let\blx@lastkey@text\abx@field@entrykey}}
- {}}
-
-\def\blx@ibidtracker@strict{%
- \blx@ifcitesingle
- {\blx@ibidtracker@global}
- {\blx@ibidreset@global}}%
-
-\def\blx@ibidtracker@constrict{%
- \blx@ifcitesingle
- {\blx@mpfnsave
- \blx@ibidtracker@context}
- {\blx@ibidreset@context}}%
-
-\def\blx@ibidreset@force{%
- \global\undef\blx@lastkey@text
- \global\undef\blx@lastkey@foot
- \blx@mpfnreset}
-
-\def\blx@ibidreset@global{%
- \global\undef\blx@lastkey@text}
-
-\def\blx@ibidreset@context{%
- \iftoggle{blx@footnote}
- {\blx@mpfnreset
- \global\undef\blx@lastkey@foot}
- {\global\undef\blx@lastkey@text}}
-
-\protected\appto\abx@savetrackers{%
- \global\let\blx@saved@lastkey@text\blx@lastkey@text
- \global\let\blx@saved@lastkey@foot\blx@lastkey@foot}
-
-\protected\appto\abx@resttrackers{%
- \global\let\blx@lastkey@text\blx@saved@lastkey@text
- \global\let\blx@lastkey@foot\blx@saved@lastkey@foot}
-
-\protected\appto\abx@cleartrackers{%
- \global\undef\blx@saved@lastkey@text
- \global\undef\blx@saved@lastkey@foot}
-
-% idem tracker
-
-\def\blx@idemtracker@global{%
- \ifbool{citetracker}
- {\global\let\blx@lasthash@text\abx@field@fullhash}
- {}}
-
-\def\blx@idemtracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\global\let\blx@lasthash@foot\abx@field@fullhash}
- {\global\let\blx@lasthash@text\abx@field@fullhash}}
- {}}
-
-\let\blx@idemtracker@strict\blx@idemtracker@global
-
-\def\blx@idemtracker@constrict{%
- \blx@mpfnsave
- \blx@idemtracker@context}
-
-\def\blx@idemreset@force{%
- \global\undef\blx@lasthash@text
- \global\undef\blx@lasthash@foot
- \blx@mpfnreset}
-
-\def\blx@idemreset@global{%
- \global\undef\blx@lasthash@text}
-
-\def\blx@idemreset@context{%
- \iftoggle{blx@footnote}
- {\blx@mpfnreset
- \global\undef\blx@lasthash@foot}
- {\global\undef\blx@lasthash@text}}
-
-\protected\appto\abx@savetrackers{%
- \global\let\blx@saved@lasthash@text\blx@lasthash@text
- \global\let\blx@saved@lasthash@text\blx@lasthash@text}
-
-\protected\appto\abx@resttrackers{%
- \global\let\blx@lasthash@text\blx@saved@lasthash@text
- \global\let\blx@lasthash@text\blx@saved@lasthash@text}
-
-\protected\appto\abx@cleartrackers{%
- \global\undef\blx@saved@lasthash@text
- \global\undef\blx@saved@lasthash@foot}
-
-% opcit tracker
-
-\def\blx@opcittracker@global{%
- \ifbool{citetracker}
- {\blx@opcit@tracker{text}}
- {}}
-
-\def\blx@opcittracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@opcit@tracker{foot}}
- {\blx@opcit@tracker{text}}}
- {}}
-
-\def\blx@opcittracker@strict{%
- \blx@ifcitesingle
- {\blx@opcittracker@global}
- {\blx@opcitreset@global}}%
-
-\def\blx@opcittracker@constrict{%
- \blx@ifcitesingle
- {\blx@mpfnsave
- \blx@opcittracker@context}
- {\blx@opcitreset@context}}%
-
-\def\blx@opcit@tracker#1{%
- \blx@imc@iffieldundef{namehash}
- {}
- {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey
- \xifinlistcs\abx@field@namehash{blx@trackhash@#1}
- {}
- {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}}
-
-\def\blx@opcit@reset#1{%
- \begingroup
- \def\do##1{\global\csundef{blx@lastkey@#1@##1}}%
- \dolistcsloop{blx@trackhash@#1}%
- \global\cslet{blx@trackhash@#1}\@empty
- \endgroup}
-
-\def\blx@opcitreset@force{%
- \blx@opcit@reset{text}%
- \blx@opcit@reset{foot}%
- \blx@mpfnreset}
-
-\def\blx@opcitreset@global{%
- \blx@opcit@reset{text}}
-
-\def\blx@opcitreset@context{%
- \iftoggle{blx@footnote}
- {\blx@opcit@reset{foot}%
- \blx@mpfnreset}
- {\blx@opcit@reset{text}}}
-
-\let\blx@trackhash@text\@empty
-\let\blx@trackhash@foot\@empty
-
-\protected\appto\abx@savetrackers{%
- \begingroup
- \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}%
- \dolistloop\blx@trackhash@text
- \global\let\blx@saved@trackhash@text\blx@trackhash@text
- \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}%
- \dolistloop\blx@trackhash@foot
- \global\let\blx@saved@trackhash@foot\blx@trackhash@foot
- \endgroup}
-
-\protected\appto\abx@resttrackers{%
- \begingroup
- \blx@opcit@reset{text}%
- \global\let\blx@trackhash@text\blx@saved@trackhash@text
- \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}%
- \dolistloop\blx@trackhash@text
- \blx@opcit@reset{foot}%
- \global\let\blx@trackhash@foot\blx@saved@trackhash@foot
- \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}%
- \dolistloop\blx@trackhash@foot
- \endgroup}
-
-\protected\appto\abx@cleartrackers{%
- \begingroup
- \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}%
- \dolistloop\blx@saved@trackhash@text
- \global\undef\blx@saved@trackhash@text
- \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}%
- \dolistloop\blx@saved@trackhash@foot
- \global\undef\blx@saved@trackhash@foot
- \endgroup}
-
-% loccit tracker
-
-\def\blx@loccittracker@global{%
- \ifbool{citetracker}
- {\blx@loccit@tracker{text}}
- {}}
-
-\def\blx@loccittracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@loccit@tracker{foot}}
- {\blx@loccit@tracker{text}}}
- {}}
-
-\def\blx@loccittracker@strict{%
- \ifbool{citetracker}
- {\blx@loccit@stricttracker{text}}
- {}}
-
-\def\blx@loccittracker@constrict{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@mpfnsave
- \blx@loccit@stricttracker{foot}}
- {\blx@loccit@stricttracker{text}}}
- {}}
-
-\def\blx@loccit@tracker#1{%
- \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
- \blx@imc@iffieldundef{postnote}
- {}
- {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
- \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
- {}
- {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}}
-
-\def\blx@loccit@stricttracker#1{%
- \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
- \blx@imc@iffieldundef{postnote}
- {}
- {\blx@ifcitesingle
- {\expandafter\blx@imc@ifpages
- \expandafter{\abx@field@postnote}
- {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
- \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
- {}
- {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}
- {}}
- {}}}
-
-\def\blx@loccit@reset#1{%
- \begingroup
- \def\do##1{\global\csundef{blx@lastnote@#1@##1}}%
- \dolistcsloop{blx@trackkeys@#1}%
- \global\cslet{blx@trackkeys@#1}\@empty
- \endgroup}
-
-\def\blx@loccitreset@force{%
- \blx@loccit@reset{text}%
- \blx@loccit@reset{foot}%
- \blx@mpfnreset}
-
-\def\blx@loccitreset@global{%
- \blx@loccit@reset{text}}
-
-\def\blx@loccitreset@context{%
- \iftoggle{blx@footnote}
- {\blx@loccit@reset{foot}%
- \blx@mpfnreset}
- {\blx@loccit@reset{text}}}
-
-\let\blx@trackkeys@text\@empty
-\let\blx@trackkeys@foot\@empty
-
-\protected\appto\abx@savetrackers{%
- \begingroup
- \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}%
- \dolistloop\blx@trackkeys@text
- \global\let\blx@saved@trackkeys@text\blx@trackkeys@text
- \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}%
- \dolistloop\blx@trackkeys@foot
- \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot
- \endgroup}
-
-\protected\appto\abx@resttrackers{%
- \begingroup
- \blx@loccit@reset{text}%
- \global\let\blx@trackkeys@text\blx@saved@trackkeys@text
- \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}%
- \dolistloop\blx@trackkeys@text
- \blx@loccit@reset{foot}%
- \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot
- \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}%
- \dolistloop\blx@trackkeys@foot
- \endgroup}
-
-\protected\appto\abx@cleartrackers{%
- \begingroup
- \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}%
- \dolistloop\blx@saved@trackkeys@text
- \global\undef\blx@saved@trackkeys@text
- \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}%
- \dolistloop\blx@saved@trackkeys@foot
- \global\undef\blx@saved@trackkeys@foot
- \endgroup}
-
-\def\blx@addbackref#1{%
- \ifcsdef{blx@setp@\the\c@refsection @#1}
- {\ifcase\blx@backrefsetstyle
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@ii{setp}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setp}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setp}{#1}%
- \fi}
- {\ifcsdef{blx@setc@\the\c@refsection @#1}
- {\ifcase\blx@backrefsetstyle
- \blx@addbackref@ii{setc}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setc}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setc}{#1}%
- \fi}
- {\blx@addbackref@i{#1}}}}
-
-\def\blx@addbackref@i#1{%
- \ifbacktracker
- \blx@leavevmode
- \if@filesw
- \protected@write\@mainaux{}{\string\abx@aux@backref
- {\the\c@instcount}{#1}{\the\c@refsection}%
- {\thepage}{\noexpand\the\c@page}}%
- \fi
- \fi}
-
-\def\blx@addbackref@ii#1#2{%
- \expandafter\expandafter\expandafter\forcsvlist
- \expandafter\expandafter\expandafter\blx@addbackref@i
- \expandafter\expandafter\expandafter{%
- \csname blx@#1@\the\c@refsection @#2\endcsname}}
-
-% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>}
-\protected\def\blx@aux@backref#1#2#3#4#5{%
- \ifcsundef{blx@pref@#3@\detokenize{#2}}
- {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty
- \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname}
- {}%
- \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}}
- {}
- {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}%
- \blx@addpagesum{#1}{#5}}
-
-\AtEndDocument{%
- \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}}
-
-% {<true>}{<false>}
-\def\blx@ifcitesingle{%
- \ifnum\c@citetotal=\@ne
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% hyperref interface
-
-\appto\blx@mkhyperref{%
- \protected\def\blx@imc@bibhyperref{%
- \@ifnextchar[%]
- {\blx@bibhyperref}
- {\blx@bibhyperref[\abx@field@entrykey]}}%
- \ifundef\hyper@natanchorstart
- {\long\def\blx@bibhyperref[#1]#2{%
- \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest
- #2%
- \blx@sfsave}\blx@sfrest}%
- \protected\long\def\blx@imc@bibhyperlink#1#2{%
- \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest
- #2%
- \blx@sfsave}\blx@sfrest}%
- \protected\long\def\blx@imc@bibhypertarget#1#2{%
- \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest
- #2%
- \blx@sfsave}\blx@sfrest}}%
- {\long\def\blx@bibhyperref[#1]#2{%
- \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest
- #2%
- \blx@sfsave\hyper@natlinkend\blx@sfrest}%
- \protected\long\def\blx@imc@bibhyperlink#1#2{%
- \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest
- #2%
- \blx@sfsave\hyper@natlinkend\blx@sfrest}%
- \protected\long\def\blx@imc@bibhypertarget#1#2{%
- \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest
- #2%
- \blx@sfsave\hyper@natanchorend\blx@sfrest}}
- \let\blx@imc@ifhyperref\@firstoftwo
- \def\blx@sf{\spacefactor}%
- \def\blx@sfsave{%
- \blx@leavevmode
- \numgdef\blx@sf{\spacefactor}}%
- \def\blx@sfrest{%
- \ifhmode\spacefactor\blx@sf\relax\fi
- \gdef\blx@sf{\spacefactor}}}
-
-\appto\blx@mknohyperref{%
- \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}%
- \def\blx@nohyperref[#1]#2{#2}%
- \let\blx@imc@bibhyperlink\@secondoftwo
- \let\blx@imc@bibhypertarget\@secondoftwo
- \let\blx@imc@ifhyperref\@secondoftwo}
-
-\blx@regimcs{%
- \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref}
-
-% {<entrykey>,...}
-\protected\def\nocite#{\blx@nocite}
-
-\def\blx@nocite#1{%
- \@bsphack
- \AfterPreamble{%
- \iftoggle{blx@bibliography}
- {}
- {\ifstrequal{*}{#1}
- {\blx@citation@all}
- {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}%
- \@esphack}
-
-\def\blx@nocite@do#1{%
- % Make sure this counter exists. Sometimes it might not when using, e.g:
- % refsection=chapter and \includeonly to put in the chapters or when
- % inserting citations into table of contents
- \ifcsname blx@sectionciteorder@\the\c@refsection\endcsname\else
- \expandafter\newcount\csname blx@sectionciteorder@\the\c@refsection\endcsname
- \fi
- \global\advance\csname blx@sectionciteorder@\the\c@refsection\endcsname\@ne
- \blx@citation{#1}\blx@msg@cundef}
-
-% {<macro>}[<arg1>][<arg2>]{<arg3>}
-% => <macro>{<arg1>}{<arg2>}{<arg3>}
-\protected\def\blx@citeargs#1{%
- \@ifnextchar[%]
- {\blx@citeargs@i{#1}}
- {\blx@citeargs@iii{#1{}{}}}}
-\long\def\blx@citeargs@i#1[#2]{%
- \@ifnextchar[%]
- {\blx@citeargs@ii{#1{#2}}}
- {\blx@citeargs@iii{#1{}{#2}}}}
-\long\def\blx@citeargs@ii#1[#2]{%
- \blx@citeargs@iii{#1{#2}}}
-\long\def\blx@citeargs@iii#1#2{%
- \blx@xsanitizeafter{#1}{#2}}
-
-% {<macro>}(<arg1>)(<arg2>)
-% => <macro>{<arg1>}{<arg2>}
-\protected\def\blx@multiargs#1{%
- \@ifnextchar(%)
- {\blx@multiargs@i{#1}}
- {#1{}{}}}
-\long\def\blx@multiargs@i#1(#2){%
- \@ifnextchar(%)
- {\blx@multiargs@ii{#1{#2}}}
- {#1{}{#2}}}
-\long\def\blx@multiargs@ii#1(#2){#1{#2}}
-
-% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct>
-% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>}
-\protected\def\blx@citepunct#1{%
- \blx@citeargs{\blx@citepunct@i{#1}}}
-\long\def\blx@citepunct@i#1#2#3#4{%
- \blx@thecheckpunct{#1{#2}{#3}{#4}}}
-
-% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct>
-% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>}
-\protected\def\blx@citexpunct#1{%
- \blx@citeargs{\blx@citexpunct@i{#1}}}
-\long\def\blx@citexpunct@i#1#2#3#4{%
- \@ifnextchar[%]
- {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}}
- {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}}
-\long\def\blx@citexpunct@ii#1#2[#3]#4{%
- \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}}
-
-% {<code>}<punct> => <code>{<punctcmd>}
-\long\def\blx@checkpunct#1{%
- \begingroup
- \def\blx@tempa{\endgroup#1}%
- \futurelet\blx@tempb\blx@checkpunct@i}
-\def\blx@checkpunct@i{%
- \expandafter\blx@checkpunct@ii\blx@autopunct&}
-\def\blx@checkpunct@ii#1{%
- \ifx#1&%
- \expandafter\blx@checkpunct@iii
- \fi
- \ifx#1\blx@tempb
- \expandafter\blx@checkpunct@iv
- \fi
- \blx@checkpunct@ii}
-\def\blx@checkpunct@iii#1\blx@checkpunct@ii{%
- \global\undef\abx@field@postpunct
- \blx@tempa{\blx@postpunct}}
-\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2&#3{%
- \gdef\abx@field@postpunct{#3}%
- \edef\blx@tempa{%
- \expandonce\blx@tempa{%
- \ifcsdef{blx@pm@\detokenize{#3}}
- {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname
- \endcsname}
- {\noexpand#3}}}%
- \blx@tempa}
-
-\long\def\blx@nocheckpunct#1{#1{}}
-
-\protected\def\blx@citeinit{%
- \iftoggle{blx@bibliography}
- {}
- {\toggletrue{blx@citation}}%
- \blx@blxinit
- \blx@langstrings
- \citesetup
- \blx@setsfcodes
- \blx@postpunct@agroup
- \blx@resetdata
- \blx@leavevmode
- \csuse{blx@hook@cite}%
- \csuse{blx@hook@cite@next}%
- \let\blx@citeinit\blx@resetdata}
-
-\protected\def\blx@citecmdinit{%
- \blx@leavevmode@cite
- \iftoggle{blx@bibliography}
- {}
- {\blx@initunit}}
-
-% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>}
-\newrobustcmd*{\DeclareCiteCommand}{%
- \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}}
-
-\def\blx@defcitecmd#1#2{%
- \begingroup
- \escapechar\m@ne
- \edef\blx@tempa{\endgroup
- \noexpand\blx@defcitecmd@i{#1}{\string#2}}%
- \blx@tempa}
-
-\def\blx@defcitecmd@i#1#2{%
- \blx@checkcitecmd{#2}{#1}%
- \protected\csdef{#2}{%
- \blx@citecmdinit
- \@ifstar
- {\blx@citepunct{\blxcitecmd{#2*}}}
- {\blx@citepunct{\blxcitecmd{#2}}}}%
- \@ifnextchar[%]
- {\blx@defcitecmd@iii{#2#1}}
- {\blx@defcitecmd@ii{#2#1}}}
-
-\long\def\blx@defcitecmd@ii#1{%
- \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}%
- \blx@defcitecmd@iv{#1}}
-
-\long\def\blx@defcitecmd@iii#1[#2]{%
- \protected\long\csedef{blx@cite@#1}##1##2##3##4{%
- \begingroup
- \blx@citeinit
- \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}%
- ##4\endgroup}%
- \blx@defcitecmd@iv{#1}}
-
-\long\def\blx@defcitecmd@iv#1#2#3#4#5{%
- \protected\long\csdef{blx@citei@#1}##1##2##3##4{%
- \ifblank{##1}
- {}
- {\def\abx@field@prenote{##1}}%
- \ifblank{##2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{##2}}%
- \def\blx@precode{#2}%
- \def\blx@loopcode{#3}%
- \def\blx@dlimcode{#4}%
- \def\blx@postcode{#5##4}%
- \blx@citeloop{##3}%
- \endgroup}}
-
-% {<type>}{<name>}{*}
-\def\blx@checkcitecmd#1#2{%
- \ifblank{#2}
- {\ifcsdef{blx@cite@#1}
- {\blx@info{Redefining '\@backslashchar#1'}}
- {\ifcsundef{#1}
- {}
- {\blx@warning@noline{Redefining '\@backslashchar#1'}}}%
- \ifcsdef{blx@cite@#1*}
- {}
- {\csedef{blx@cite@#1*}{%
- \expandafter\noexpand\csname blx@cite@#1\endcsname}%
- \csedef{blx@citei@#1*}{%
- \expandafter\noexpand\csname blx@citei@#1\endcsname}}}
- {\ifcsdef{blx@cite@#1}
- {}
- {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}%
- \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}}
-
-% {<name>}{prenote}{postnote}{citekey}{punct}
-\newrobustcmd*{\blxcitecmd}[1]{%
- \ifcsundef{blx@cite@#1}
- {\blx@err@citecmd{#1}}
- {\csuse{blx@cite@#1}}}
-
-\newrobustcmd*{\blxciteicmd}[1]{%
- \begingroup
- \blx@citeinit
- \ifcsundef{blx@citei@#1}
- {\blx@err@citecmd{#1}}
- {\csuse{blx@citei@#1}}}
-
-% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct}
-\protected\def\blxmciteicmd#1{%
- \c@multicitecount#1\relax
- \blxciteicmd}
-
-% {<multicitetotal>}{<multiprenote>}{<multipostnote>}
-\protected\def\blxmcites#1#2#3{%
- \begingroup
- \blx@citeinit
- \c@multicitecount\z@
- \c@multicitetotal#1\relax
- \ifnum\c@multicitetotal>\@ne
- \let\blx@ifcitesingle\@secondoftwo
- \fi
- \csuse{blx@hook@mcite}%
- \csuse{blx@hook@mcite@next}%
- \ifblank{#2}%
- {}
- {\def\abx@field@multiprenote{#2}}%
- \ifblank{#3}%
- {}
- {\def\abx@field@multipostnote{#3}}%
- \usebibmacro{multiprenote}}
-
-\protected\def\blxendmcites{%
- \usebibmacro{multipostnote}%
- \endgroup}
-
-% {<command>}[<wrapper>]{<cite>}{<delimiter>}
-\newrobustcmd{\DeclareMultiCiteCommand}[1]{%
- \ifundef#1%
- {}
- {\blx@info{Redefining '\string#1'}}%
- \@ifnextchar[%]
- {\blx@defmcitecmd{#1}}
- {\blx@defmcitecmd{#1}[\@firstofone]}}
-
-\def\blx@defmcitecmd#1[#2]#3#4{%
- \begingroup
- \escapechar\m@ne
- \edef\blx@tempa{\endgroup
- \protected\def\noexpand#1{%
- \blx@citecmdinit
- \noexpand\@ifstar
- {\expandafter\noexpand
- \csname blx@mcite@\string#1\endcsname*%
- \expandafter\noexpand
- \csname blx@mcitei@\string#1\endcsname}
- {\expandafter\noexpand
- \csname blx@mcite@\string#1\endcsname{}%
- \expandafter\noexpand
- \csname blx@mcitei@\string#1\endcsname}}%
- \protected\csdef{blx@mcite@\string#1}####1####2{%
- \begingroup
- \blx@citeinit
- \noexpand\blx@multicite
- ####2%
- {\unexpanded{#2}}%
- {\string#3####1}%
- {\unexpanded{#4}}}%
- \protected\long\csdef{blx@mcitei@\string#1}}%
- \blx@tempa##1##2##3{##1{##2}##3\endgroup}}
-
-% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} =>
-% <init><command>{<wrapper>}{<cites>}{<punct>}
-\def\blx@multicite#1#2#3#4{%
- \begingroup
- \csuse{blx@hook@mcite@before}%
- \def\blx@tempa{#1}%
- \def\blx@tempb{#2}%
- \def\blx@tempc{#3}%
- \def\blx@tempd{#4}%
- \c@multicitetotal\z@
- \blx@multiargs\blx@multicite@i}
-
-\def\blx@multicite@i#1#2{%
- \ifblank{#1}%
- {\let\abx@field@multiprenote\@empty}%
- {\def\abx@field@multiprenote{#1}}%
- \ifblank{#2}%
- {\let\abx@field@multipostnote\@empty}%
- {\def\abx@field@multipostnote{#2}}%
- \let\blx@tempe\@empty
- \let\blx@tempf\@empty
- \togglefalse{blx@tempa}%
- \blx@multiparse}
-
-\def\blx@multicite@add#1#2#3{%
- \togglefalse{blx@tempa}%
- \advance\c@multicitetotal\@ne
- \eappto\blx@tempe{%
- \expandonce\blx@tempf
- \blxmciteicmd{\the\c@multicitetotal}%
- {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}%
- \let\blx@tempf\blx@tempd
- \blx@multiparse}
-
-\def\blx@multicite@end#1{%
- \edef\blx@tempa{\endgroup
- \expandonce\blx@tempa
- {\expandonce\blx@tempb}%
- {\blxmcites
- {\the\c@multicitetotal}%
- {\expandonce\abx@field@multiprenote}%
- {\expandonce\abx@field@multipostnote}%
- \expandonce\blx@tempe
- \blxendmcites}%
- {#1}%
- \iftoggle{blx@tempa}{\relax\space}{}}%
- \blx@tempa}
-
-\def\blx@multiparse{%
- \futurelet\@let@token\blx@multiparse@i}
-
-\def\blx@multiparse@i{%
- \ifx\@let@token\relax
- \blx@multiparse@ii{\blx@multicite@end{}}%
- \fi
- \ifx\@let@token[%]
- \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}%
- \fi
- \ifx\@let@token\bgroup
- \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}%
- \fi
- \ifx\@let@token\@sptoken
- \blx@multiparse@ii\blx@multiparse@iii
- \fi
- \iftrue
- \iftoggle{blx@tempa}
- {\blx@multiparse@ii{\blx@multicite@end{}}}
- {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}%
- \fi
- &}
-
-\def\blx@multiparse@ii#1#2&{\fi#1}
-\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse}
-
-% {<name>}[l|i|r]{<cite>}{<multicite>}
-\newrobustcmd*{\DeclareAutoCiteCommand}[1]{%
- \ifcsundef{blx@acite@#1}
- {}
- {\blx@info{Redefining autocite command '#1'}}%
- \@ifnextchar[%]
- {\blx@defautocmd@i{#1}}
- {\blx@defautocmd@i{#1}[r]}}
-
-\def\blx@defautocmd@i#1[#2]#3#4{%
- \begingroup
- \escapechar\m@ne
- \edef\blx@tempa{\endgroup
- \noexpand\blx@defautocmd@ii{#1}{#2}%
- {\string#3}{\string#4}}%
- \blx@tempa}
-
-\def\blx@defautocmd@ii#1#2#3#4{%
- \protected\csedef{blx@acite@#1}{%
- \blx@citecmdinit
- \noexpand\@ifstar
- {\blx@citepunct{\expandafter\noexpand
- \csname blx@acitei@#1\endcsname*}}
- {\blx@citepunct{\expandafter\noexpand
- \csname blx@acitei@#1\endcsname{}}}}%
- \protected\csedef{blx@acitei@#1}##1##2##3##4##5{%
- \begingroup
- \blx@citeinit
- \if l#2\noexpand\unspace##5\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi
- \blxcitecmd{#3##1}{##2}{##3}{##4}{}%
- \if r#2##5\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi
- \endgroup}%
- \protected\csedef{blx@macite@#1}{%
- \blx@citecmdinit
- \noexpand\@ifstar
- {\expandafter\noexpand
- \csname blx@mcite@#4\endcsname*%
- \expandafter\noexpand
- \csname blx@macitei@#1\endcsname}
- {\expandafter\noexpand
- \csname blx@mcite@#4\endcsname{}%
- \expandafter\noexpand
- \csname blx@macitei@#1\endcsname}}%
- \protected\csedef{blx@macitei@#1}##1##2##3{%
- \if l#2\noexpand\unspace##3\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi
- ##1{##2}%
- \if r#2##3\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi
- \endgroup}}
-
-% {<characters>}
-\newrobustcmd*{\DeclareAutoPunctuation}[1]{%
- \ifblank{#1}
- {\let\blx@thecheckpunct\blx@nocheckpunct}
- {\let\blx@thecheckpunct\blx@checkpunct
- \def\blx@autopunct{#1}}}
-
-\AfterEndPreamble{% babel
- \begingroup
- \makeatletter
- \endlinechar\m@ne
- \scantokens\expandafter{%
- \expandafter\gdef
- \expandafter\blx@autopunct
- \expandafter{\blx@autopunct}}%
- \endgroup}
-
-% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct>
-\newrobustcmd*{\citename}{\blx@citexpunct{citename}}
-\long\csdef{blx@cite@citename}#1#2#3#4#5#6{%
- \begingroup
- \blx@citecmdinit
- \blx@citeinit
- \ifblank{#1}
- {}
- {\def\abx@field@prenote{#1}}%
- \ifblank{#2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{#2}}%
- \def\blx@precode{\usebibmacro{prenote}}%
- \def\blx@loopcode{%
- \ifnameundef{#5}
- {\blx@warning@entry{'#5' undefined or not a name list}%
- \abx@missing{#5}}
- {\printnames[#4]{#5}}}%
- \def\blx@dlimcode{\multicitedelim}%
- \ifblank{#2}
- {\def\blx@postcode{#6}}
- {\def\blx@postcode{\usebibmacro{postnote}#6}}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \blx@citeloop{#3}%
- \endgroup}
-
-% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct>
-\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}}
-\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{%
- \begingroup
- \blx@citecmdinit
- \blx@citeinit
- \ifblank{#1}
- {}
- {\def\abx@field@prenote{#1}}%
- \ifblank{#2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{#2}}%
- \def\blx@precode{\usebibmacro{prenote}}%
- \def\blx@loopcode{%
- \iflistundef{#5}
- {\blx@warning@entry{'#5' undefined or not a literal list}%
- \abx@missing{#5}}
- {\printlist[#4]{#5}}}%
- \def\blx@dlimcode{\multicitedelim}%
- \ifblank{#2}
- {\def\blx@postcode{#6}}
- {\def\blx@postcode{\usebibmacro{postnote}#6}}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \blx@citeloop{#3}%
- \endgroup}
-
-% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct>
-
-\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}}
-\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{%
- \begingroup
- \blx@citecmdinit
- \blx@citeinit
- \ifblank{#1}
- {}
- {\def\abx@field@prenote{#1}}%
- \ifblank{#2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{#2}}%
- \def\blx@precode{\usebibmacro{prenote}}%
- \def\blx@loopcode{%
- \iffieldundef{#5}
- {\blx@warning@entry{'#5' undefined or not a field}%
- \abx@missing{#5}}
- {\printfield[#4]{#5}}}%
- \def\blx@dlimcode{\multicitedelim}%
- \ifblank{#2}
- {\def\blx@postcode{#6}}
- {\def\blx@postcode{\usebibmacro{postnote}#6}}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \blx@citeloop{#3}%
- \endgroup}
-
-\renewrobustcmd*{\cite}{\blx@err@citecmd\cite}
-\let\blx@cite@cite\relax
-\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite}
-\let\blx@cite@parencite\relax
-\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite}
-\let\blx@cite@footcite\relax
-\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite}
-\let\blx@cite@footcitetext\relax
-\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite}
-\let\blx@cite@smartcite\relax
-\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite}
-\let\blx@cite@textcite\relax
-\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite}
-\let\blx@cite@supercite\relax
-
-%% ifthen interface
-
-\def\blx@TE#1#2{%
- \TE@throw
- \unexpanded{%
- \iftrue\@nameuse{fi}%
- #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2}
-
-\def\blx@xTE#1#2{%
- \TE@throw
- \unexpanded{\iftrue\@nameuse{fi}}%
- #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2}
-
-\let\blx@TE@hook\@empty
-
-\appto\blx@blxinit{%
- \appto\blx@TE@hook{%
- \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}%
- \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}%
- \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}%
- \def\iffirstcitekey{\blx@TE\blx@imc@iffirstcitekey}%
- \def\iflastcitekey{\blx@TE\blx@imc@iflastcitekey}%
- \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}%
- \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}%
- \def\ifentryinbib{\blx@TE\blx@imc@ifentryinbib}%
- \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}%
- \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}%
- \def\ifopcit{\blx@TE\blx@imc@ifopcit}%
- \def\ifloccit{\blx@TE\blx@imc@ifloccit}%
- \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}%
- \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}%
- \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}%
- \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}%
- \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}%
- \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}%
- \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}%
- \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}%
- \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}%
- \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}%
- \def\ifbibmacroundef#1{\blx@TE{\blx@imc@ifbibmacroundef{#1}}}%
- \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}%
- \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}%
- \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}%
- \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}%
- \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}%
- \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}%
- \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}%
- \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}%
- \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}%
- \def\ifcapital{\blx@TE\blx@imc@ifcapital}%
- \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}%
- \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}%
- \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}%
- \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}%
- \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}%
- \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}%
- \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}%
- \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}%
- \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}%
- \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}%
- \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}%
- \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}%
- \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}%
- \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}%
- \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}%
- \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}%
- \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}%
- \def\ifterseinits{\blx@TE{\iftoggle{blx@terseinits}}}%
- \def\iffirstinits{\blx@TE{\iftoggle{blx@giveninits}}}% legacy name for \ifgiveninits
- \def\ifgiveninits{\blx@TE{\iftoggle{blx@giveninits}}}%
- \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}%
- \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}}
-
-% {<listmacro>}{<filtercsname>} => matches in <listmacro>
-
-\protected\def\blx@bibfilter#1#2{%
- \begingroup
- \edef\blx@do##1{%
- \def\noexpand\blx@flt@item{##1}%
- \ifboolexpr{\csexpandonce{#2}}%
- {\listadd\noexpand\blx@tempa{##1}}%
- {}}%
- \let\blx@done\relax
- \edef\blx@tempa{%
- \let\noexpand\blx@tempa\noexpand\@empty
- \blx@listloop{#1}}%
- \blx@tempa
- \edef\blx@tempa{\endgroup
- \def\noexpand#1{\blx@tempa}}%
- \blx@tempa}
-
-%% Auxiliary macros
-
-\newrobustcmd*{\mkbibquote}{\enquote}
-\protected\def\blx@imc@mkbibquote{%
- \blx@ifuspunct\blx@usquote\enquote}
-
-\def\blx@usquote{%
- \ifnum\@quotelevel>\z@
- \expandafter\blx@usiquote
- \else
- \expandafter\blx@usoquote
- \fi}
-
-\long\def\blx@usoquote#1{%
- \begingroup
- \initoquote
- \textooquote#1%
- \futurelet\@let@token\blx@usoquote@i}
-
-\def\blx@usoquote@i{%
- \blx@usqcheck
- {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi
- \textcoquote\endgroup}
- {\blx@setpostpunct\textcoquote\endgroup}}
-
-\long\def\blx@usiquote#1{%
- \begingroup
- \initiquote
- \textoiquote#1%
- \futurelet\@let@token\blx@usiquote@i}
-
-\def\blx@usiquote@i{%
- \blx@usqcheck
- {\textciquote\endgroup}
- {\blx@setpostpunct\textciquote\endgroup}}
-
-\long\def\blx@usqcheck#1#2{%
- \def\blx@tempa{#1}%
- \def\blx@tempb{#2}%
- \ifx\@let@token\space
- \blx@usqcheck@i\blx@tempa
- \fi
- \ifx\@let@token\@sptoken
- \blx@usqcheck@i\blx@tempa
- \fi
- \if\noexpand\@let@token\relax
- \expandafter\blx@usqcheck@iv
- \fi
- \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&}
-
-\long\def\blx@usqcheck@i#1#2&{\fi#1}
-
-\long\def\blx@usqcheck@ii#1{%
- \if\noexpand#1\relax
- \blx@usqcheck@i\blx@tempa
- \fi
- \if\noexpand#1\noexpand\@let@token
- \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}%
- \fi
- \blx@usqcheck@ii
-}
-
-\long\def\blx@usqcheck@iii#1#2{#2#1}
-
-\long\def\blx@usqcheck@iv#1&#2{%
- \begingroup
- \escapechar=-1 %
- \edef\blx@tempa{\expandafter\@gobble\string#2}%
- \expandafter\endgroup
- \ifx\blx@tempa\@empty
- \else
- \blx@usqcheck@i\blx@tempb
- \fi
- #1&#2%
-}
-
-\newrobustcmd*{\mkbibemph}{\emph}
-\protected\long\def\blx@imc@mkbibemph#1{%
- \emph{#1}\blx@imc@setpunctfont\emph}
-
-\newrobustcmd*{\mkbibbold}{\textbf}
-\protected\long\def\blx@imc@mkbibbold#1{%
- \textbf{#1}\blx@imc@setpunctfont\textbf}
-
-\newrobustcmd*{\mkbibitalic}{\textit}
-\protected\long\def\blx@imc@mkbibitalic#1{%
- \textit{#1}\blx@imc@setpunctfont\textit}
-
-\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold \mkbibitalic}
-
-\newcommand*{\bibleftparen}{\blx@postpunct(}
-\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence}
-\newcommand*{\bibleftbracket}{\blx@postpunct[}
-\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence}
-
-\def\blx@parenlevel{%
- \iftoggle{blx@footnote}
- {\blx@parenlevel@foot}
- {\blx@parenlevel@text}}
-
-\newrobustcmd*{\blx@bibopenparen}{%
- \blx@opencheck\bibopenparen
- \blx@postpunct
- \ifnum\blx@parenlevel=\z@
- \global\blx@parenlevel\@ne
- \global\c@parenlevel\@ne
- \expandafter\bibleftparen
- \else
- \expandafter\blx@openparen
- \fi}
-
-\newrobustcmd*{\blx@bibopenbracket}{%
- \blx@opencheck\bibopenbracket
- \blx@postpunct
- \ifnum\blx@parenlevel=\z@
- \global\blx@parenlevel1002
- \global\c@parenlevel\@ne
- \expandafter\bibleftbracket
- \else
- \expandafter\blx@openparen
- \fi}
-
-\newrobustcmd*{\blx@bibcloseparen}{%
- \blx@closecheck\bibcloseparen
- \blx@postpunct\blx@closeparen}
-
-\newrobustcmd*{\blx@bibclosebracket}{%
- \blx@closecheck\bibclosebracket
- \blx@postpunct\blx@closeparen}
-
-\def\blx@openparen{%
- \ifodd\blx@parenlevel
- \global\advance\blx@parenlevel\@ne
- \global\advance\c@parenlevel\@ne
- \expandafter\bibleftbracket
- \else
- \global\advance\blx@parenlevel\@ne
- \global\advance\c@parenlevel\@ne
- \expandafter\bibleftparen
- \fi}
-
-\def\blx@closeparen{%
- \ifodd\blx@parenlevel
- \blx@closeparen@i
- \expandafter\bibrightparen
- \else
- \blx@closeparen@i
- \expandafter\bibrightbracket
- \fi}
-
-\def\blx@closeparen@i{%
- \ifnum\blx@parenlevel=1002
- \global\blx@parenlevel\z@
- \global\c@parenlevel\z@
- \else
- \global\advance\blx@parenlevel\m@ne
- \global\advance\c@parenlevel\m@ne
- \fi}
-
-\def\blx@opencheck#1{%
- \ifnum\numexpr\blx@parenlevel+\@ne
- \ifnum\blx@parenlevel>\@m -1001\fi
- >\c@maxparens
- \blx@err@nestparen{\string#1}%
- \blx@errormark
- \fi}
-
-\def\blx@closecheck#1{%
- \ifnum\numexpr\blx@parenlevel
- \ifnum\blx@parenlevel>\@m -1001\fi
- >\c@maxparens
- \blx@err@nestparen{\string#1}%
- \blx@errormark
- \fi
- \ifnum\blx@parenlevel<\@ne
- \blx@err@matchparen{Unmatched \string#1}%
- \blx@errormark
- \fi}
-
-\protected\def\blx@errormark{%
- \rule[0.25ex]{1.25ex}{1.25ex}}
-
-\AtEndDocument{%
- \unless\ifnum\blx@parenlevel@text=\z@
- \blx@err@matchparen{%
- Unbalanced parentheses or brackets in the document body}%
- \fi
- \unless\ifnum\blx@parenlevel@foot=\z@
- \blx@err@matchparen{%
- Unbalanced parentheses or brackets in a foot or endnote}%
- \fi}
-
-\newrobustcmd{\mkbibparens}[1]{%
- \begingroup
- \blx@blxinit
- \blx@setsfcodes
- \bibopenparen#1\bibcloseparen
- \endgroup}
-
-\newrobustcmd{\mkbibbrackets}[1]{%
- \begingroup
- \blx@blxinit
- \blx@setsfcodes
- \bibopenbracket#1\bibclosebracket
- \endgroup}
-
-\newrobustcmd*{\parentext}{\mkbibparens}
-\newrobustcmd*{\brackettext}{\mkbibbrackets}
-
-\newrobustcmd{\mkbibsuperscript}[1]{%
- \unspace\allowhyphens\textsuperscript{%
- \begingroup
- \protected\long\def\mkbibsuperscript##1{%
- \blx@warning{Nested superscript}%
- \mkbibbrackets{##1}}%
- #1\endgroup}}
-
-\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}}
-\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}}
-\newrobustcmd{\blx@mkbibfootnote}[2]{%
- \iftoggle{blx@footnote}
- {\blx@warning{Nested notes}%
- \addspace\mkbibparens{#2}}
- {\unspace
- \ifnum\blx@notetype=\tw@
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
- {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
-
-\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}}
-\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}}
-\newrobustcmd{\blx@mkbibendnote}[2]{%
- \iftoggle{blx@footnote}
- {\blx@warning{Nested notes}%
- \addspace\mkbibparens{#2}}
- {\unspace
- \ifnum\blx@notetype=\@ne
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}
- {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}}
-
-\newrobustcmd{\blxmkbibnote}[2]{%
- \begingroup
- \blx@blxinit
- \blx@setsfcodes
- \blx@postpunct@agroup
- \toggletrue{blx@footnote}%
- \csuse{bib#1notewrapper}{#2}%
- \endgroup}
-
-\newcommand{\bibfootnotewrapper}[1]{%
- \bibsentence#1\addperiod}
-
-\newcommand{\bibendnotewrapper}[1]{%
- \bibsentence#1\addperiod}
-
-\AtEndPreamble{%
- \def\blx@theendnote{\blx@err@endnote\footnote}%
- \def\blx@theendnotetext{\blx@err@endnote\footnotetext}%
- \ifdef\endnote
- {\def\blx@theendnote{\endnote}%
- \ifdef\endnotetext
- {\def\blx@theendnotetext{\endnotetext}}
- {}}
- {\ifdef\pagenote
- {\def\blx@theendnote{\pagenote}%
- \ifdef\pagenotetext
- {\def\blx@theendnotetext{\pagenotetext}}
- {}}
- {}}}
-
-\newrobustcmd*{\mknumalph}[1]{%
- \begingroup
- \blx@tempcnta=#1\relax
- \ifnum\blx@tempcnta>702 %
- \else
- \ifnum\blx@tempcnta>26 %
- \advance\blx@tempcnta\m@ne
- \divide\blx@tempcnta26\relax
- \blx@numalph\blx@tempcnta
- \multiply\blx@tempcnta26\relax
- \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax
- \fi
- \fi
- \blx@numalph\blx@tempcnta
- \endgroup}
-\def\blx@numalph#1{%
- \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or
- a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or
- n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else
- \blx@warning@entry{Value out of range}\number#1\fi}
-
-% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}}
-
-\newrobustcmd*{\volcitecmd}{%
- \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
- \begingroup\let\blx@citeargs\blx@volciteargs}
-
-\protected\def\blx@volciteargs#1{%
- \endgroup
- \@ifnextchar[%]
- {\blx@volciteargs@i{#1}}
- {\blx@volciteargs@i{#1}[]}}
-
-\long\def\blx@volciteargs@i#1[#2]#3{%
- \@ifnextchar[%]
- {\blx@volciteargs@ii{#1}{#2}{#3}}
- {\blx@citeargs@iii{#1{#2}{{#3}{}}}}}
-
-\long\def\blx@volciteargs@ii#1#2#3[#4]{%
- \blx@citeargs@iii{#1{#2}{{#3}{#4}}}}
-
-\newrobustcmd*{\multivolcitecmd}{%
- \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
- \def\blx@hook@mcite@before{%
- \global\undef\blx@hook@mcite@before
- \let\blx@citeargs\blx@volmciteargs}}
-
-\protected\def\blx@volmciteargs#1{%
- \@ifnextchar[%]
- {\blx@volciteargs@i{#1}}
- {\blx@volciteargs@i{#1}[]}}
-
-%% Control file
-
-\begingroup
-\let~\space
-\@makeother\<
-\@makeother\>
-\@makeother\.
-\@makeother\:
-\@makeother\?
-\@makeother\"
-\@makeother\-
-\@makeother\=
-\@makeother\/
-\xdef\blx@xml@file{%
- \blx@sig@bcf\blx@nl
- \blx@ver@bcf\blx@nl}
-\xdef\blx@xml@endfile{%
- </bcf:controlfile>}
-\xdef\blx@xml@comment#1{%
- ~~<!-- #1 -->\blx@nl}
-\xdef\blx@xml@options#1#2#3{%
- ~~<bcf:options%
- \noexpand\ifblank{#1}{}{ component="#1"}%
- \noexpand\ifblank{#2}{}{ type="#2"}%
- >\blx@nl
- #3%
- ~~</bcf:options>\blx@nl}
-\xdef\blx@xml@option#1#2{%
- ~~~~<bcf:option type="#1">\blx@nl
- #2%
- ~~~~</bcf:option>\blx@nl}
-\xdef\blx@xml@ordered#1#2#3{%
- ~~~~~~<bcf:value order="#1"#2%
- >#3</bcf:value>\blx@nl}
-
-\xdef\blx@xml@sourcemap#1{%
- ~~<bcf:sourcemap>\blx@nl
- #1%
- ~~</bcf:sourcemap>\blx@nl}
-\xdef\blx@xml@sourcemap@maps#1#2{%
- ~~~~<bcf:maps#1>\blx@nl
- #2%
- ~~~~</bcf:maps>\blx@nl}
-\xdef\blx@xml@sourcemap@map#1#2{%
- ~~~~~~<bcf:map#1>\blx@nl
- #2%
- ~~~~~~</bcf:map>\blx@nl}
-\xdef\blx@xml@sourcemap@perdatasource#1{%
- ~~~~~~~~<bcf:per\string_datasource>#1</bcf:per\string_datasource>\blx@nl}
-\xdef\blx@xml@sourcemap@pertype#1{%
- ~~~~~~~~<bcf:per\string_type>#1</bcf:per\string_type>\blx@nl}
-\xdef\blx@xml@sourcemap@pernottype#1{%
- ~~~~~~~~<bcf:per\string_nottype>#1</bcf:per\string_nottype>\blx@nl}
-\xdef\blx@xml@sourcemap@step#1{%
- ~~~~~~~~<bcf:map\string_step#1/>\blx@nl}
-
-\xdef\blx@xml@labelalphatemplate#1#2{%
- ~~<bcf:labelalphatemplate type="#1">\blx@nl
- #2%
- ~~</bcf:labelalphatemplate>\blx@nl}
-\xdef\blx@xml@labelalpha@element#1#2{%
- ~~~~<bcf:labelelement order="#1">\blx@nl
- #2%
- ~~~~</bcf:labelelement>\blx@nl}
-\xdef\blx@xml@labelalpha@part#1#2{%
- ~~~~~~<bcf:labelpart#1>#2</bcf:labelpart>\blx@nl}
-
-\xdef\blx@xml@inheritance#1{%
- ~~<bcf:inheritance>\blx@nl
- #1%
- ~~</bcf:inheritance>\blx@nl}
-\xdef\blx@xml@inherit@defaults#1#2{%
- ~~~~<bcf:defaults#1>\blx@nl
- #2%
- ~~~~</bcf:defaults>\blx@nl}
-\xdef\blx@xml@inherit@data#1{%
- ~~~~<bcf:inherit>\blx@nl
- #1%
- ~~~~</bcf:inherit>\blx@nl}
-\xdef\blx@xml@inherit@type#1#2#3{%
- ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl}
-\xdef\blx@xml@inherit@field#1#2#3{%
- ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl}
-\xdef\blx@xml@inherit@block#1{%
- ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl}
-
-\xdef\blx@xml@nosorts#1{%
- ~~<bcf:nosorts>\blx@nl
- #1%
- ~~</bcf:nosorts>\blx@nl}
-\xdef\blx@xml@nosort#1#2{%
- ~~~~<bcf:nosort field="#1" value="#2"/>\blx@nl}
-
-\xdef\blx@xml@noinits#1{%
- ~~<bcf:noinits>\blx@nl
- #1%
- ~~</bcf:noinits>\blx@nl}
-\xdef\blx@xml@noinit#1{%
- ~~~~<bcf:noinit value="#1"/>\blx@nl}
-
-\xdef\blx@xml@nolabels#1{%
- ~~<bcf:nolabels>\blx@nl
- #1%
- ~~</bcf:nolabels>\blx@nl}
-\xdef\blx@xml@nolabel#1{%
- ~~~~<bcf:nolabel value="#1"/>\blx@nl}
-
-\xdef\blx@xml@nolabelwidthcounts#1{%
- ~~<bcf:nolabelwidthcounts>\blx@nl
- #1%
- ~~</bcf:nolabelwidthcounts>\blx@nl}
-\xdef\blx@xml@nolabelwidthcount#1{%
- ~~~~<bcf:nolabelwidthcount value="#1"/>\blx@nl}
-
-\xdef\blx@xml@sortingnamekey#1#2{%
- ~~<bcf:sortingnamekey keyscheme="#1">\blx@nl%
- #2%
- ~~</bcf:sortingnamekey>\blx@nl}
-
-\xdef\blx@xml@sortingnamekeykeypart#1#2{%
- ~~~~<bcf:keypart#1>\blx@nl
- #2%
- ~~~~</bcf:keypart>\blx@nl}
-
-\xdef\blx@xml@sortingnamekeynamepart#1#2#3{%
- ~~~~~~<bcf:part type="namepart"#1#2>#3</bcf:part>\blx@nl}
-
-\xdef\blx@xml@sortingnamekeyliteral#1#2{%
- ~~~~~~<bcf:part type="literal"#1>#2</bcf:part>\blx@nl}
-
-\xdef\blx@xml@sorting#1#2{%
- ~~<bcf:sorting#1>\blx@nl%
- #2%
- ~~</bcf:sorting>\blx@nl}
-\xdef\blx@xml@presort#1#2{%
- ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>%
- #2</bcf:presort>\blx@nl}
-
-\xdef\blx@xml@sortexclude#1#2{%
- ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl
- #2%
- ~~~~</bcf:sortexclusion>\blx@nl}
-\xdef\blx@xml@exclude#1{%
- ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl}
-\xdef\blx@xml@sort#1#2{%
- ~~~~<bcf:sort #1>\blx@nl
- #2%
- ~~~~</bcf:sort>\blx@nl}
-\xdef\blx@xml@sortitem#1#2{%
- ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl}
-\xdef\blx@xml@section#1{%
- ~~<bcf:section number="#1">}
-\xdef\blx@xml@endsection{%
- ~~</bcf:section>}
-
-\xdef\blx@xml@slist#1#2#3#4#5#6#7{%
- ~~<bcf:sortlist section="#3" name="#1" type="#2" sortscheme="#4" sortnamekeyscheme="#5">\blx@nl
- #7%
- #6%
- ~~</bcf:sortlist>\blx@nl}
-\xdef\blx@xml@slistfilterorbegin{%
- ~~~~<bcf:filteror>\blx@nl}
-\xdef\blx@xml@slistfilterorend{%
- ~~~~</bcf:filteror>\blx@nl}
-\xdef\blx@xml@slistfilter#1#2{%
- ~~~~<bcf:filter type="#1">#2</bcf:filter>\blx@nl}
-
-\xdef\blx@xml@bibdata#1#2{%
- ~~<bcf:bibdata section="#1">\blx@nl
- #2%
- ~~</bcf:bibdata>\blx@nl}
-\xdef\blx@xml@datasource#1#2#3{%
- ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl}
-\xdef\blx@xml@citekey#1#2{%
- ~~~~<bcf:citekey order="#2">#1</bcf:citekey>}
-\xdef\blx@xml@citeset#1#2{%
- ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>}
-\xdef\blx@xml@svalue#1#2{%
- \blx@xml@option{singlevalued}{%
- ~~~~~~<bcf:key>#1</bcf:key>\blx@nl
- ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}}
-\xdef\blx@xml@mvalue#1#2{%
- \blx@xml@option{multivalued}{%
- ~~~~~~<bcf:key>#1</bcf:key>\blx@nl
- #2}}
-\xdef\blx@xml@toggle#1{%
- \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}}
-\xdef\blx@xml@options@scope#1#2{%
- ~~<bcf:optionscope type="#1">\blx@nl
- #2%
- ~~</bcf:optionscope>\blx@nl}
-\xdef\blx@xml@option@scope#1#2{%
- ~~~~<bcf:option datatype="#1">#2</bcf:option>\blx@nl}
-\endgroup
-
-\def\blx@bcf@options@global{%
- \blx@xml@comment{GLOBAL}%
- \blx@xml@options{biblatex}{global}{%
- \blx@xml@svalue{alphaothers}{\labelalphaothers}%
- \blx@xml@toggle{labelalpha}%
- \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}%
- \blx@xml@toggle{labeltitle}%
- \blx@xml@mvalue{labeltitlespec}{\blx@bcf@labeltitlespec}%
- \blx@xml@toggle{labeltitleyear}%
- \blx@xml@toggle{labeldate}%
- \blx@xml@mvalue{labeldatespec}{\blx@bcf@labeldatespec}%
- \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}%
- \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}%
- \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}%
- \blx@xml@svalue{maxitems}{\blx@maxitems}%
- \blx@xml@svalue{minalphanames}{\blx@minalphanames}%
- \blx@xml@svalue{minbibnames}{\blx@minbibnames}%
- \blx@xml@svalue{mincitenames}{\blx@mincitenames}%
- \blx@xml@svalue{minitems}{\blx@minitems}%
- \blx@xml@toggle{singletitle}%
- \blx@xml@svalue{sortalphaothers}{\sortalphaothers}%
- \blx@xml@svalue{sortlocale}{\blx@sortlocale}%
- \blx@xml@svalue{sortscheme}{\blx@sorting}%
- \blx@xml@svalue{uniquelist}{\blx@uniquelist}%
- \blx@xml@svalue{uniquename}{\blx@uniquename}%
- \blx@xml@toggle{useprefix}%
- \blx@xml@nametoggles
- }%
-}
-
-\def\blx@bcf@options@type#1{%
- \blx@xml@comment{#1}%
- \blx@xml@options{biblatex}{#1}{%
- \blx@xml@toggle{labelalpha}%
- \blx@xml@mvalue{labelnamespec}{%
- \ifcsdef{blx@bcf@labelnamespec@#1}
- {\csuse{blx@bcf@labelnamespec@#1}}
- {\blx@bcf@labelnamespec}}%
- \blx@xml@toggle{labeltitle}%
- \blx@xml@mvalue{labeltitlespec}{%
- \ifcsdef{blx@bcf@labeltitlespec@#1}
- {\csuse{blx@bcf@labeltitlespec@#1}}
- {\blx@bcf@labeltitlespec}}%
- \blx@xml@toggle{labeltitleyear}%
- \blx@xml@toggle{labeldate}%
- \blx@xml@mvalue{labeldatespec}{%
- \ifcsdef{blx@bcf@labeldatespec@#1}
- {\csuse{blx@bcf@labeldatespec@#1}}
- {\blx@bcf@labeldatespec}}%
- \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}%
- \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}%
- \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}%
- \blx@xml@svalue{maxitems}{\blx@maxitems@type}%
- \blx@xml@svalue{minalphanames}{\blx@minalphanames}%
- \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}%
- \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}%
- \blx@xml@svalue{minitems}{\blx@minitems@type}%
- \blx@xml@toggle{singletitle}%
- \blx@xml@toggle{skipbib}%
- \blx@xml@toggle{skiplab}%
- \blx@xml@toggle{skipbiblist}%
- \blx@xml@svalue{uniquelist}{\blx@uniquelist}%
- \blx@xml@svalue{uniquename}{\blx@uniquename}%
- \blx@xml@toggle{useprefix}%
- \blx@xml@nametoggles
- }%
-}
-
-\def\blx@ctrlwrite@biber{%
- \begingroup
- \blx@safe@actives
- \let\protect\string
- % options
- \edef\labelalphaothers{\labelalphaothers}%
- \edef\sortalphaothers{\sortalphaothers}%
- \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}%
- \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}%
- % Expand the global use* name toggles
- \let\blx@xml@nametoggles\@empty
- \def\do##1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use##1}}}%
- \dolistcsloop{blx@biber@datamodel@names}
- \edef\blx@tempa{%
- \blx@xml@file
- \blx@xml@comment{BIBER OPTIONS}%
- \blx@xml@options{biber}{global}{%
- \blx@xml@svalue{output_encoding}{\blx@texencoding}%
- \blx@xml@svalue{input_encoding}{\blx@bibencoding}%
- \blx@xml@toggle{debug}%
- \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}%
- \blx@xml@toggle{sortcase}%
- \blx@xml@toggle{sortgiveninits}%
- \blx@xml@toggle{sortupper}%
- }%
- \blx@xml@comment{BIBLATEX OPTIONS}%
- \blx@bcf@options@global
- }%
- \ifdef\blx@opts@type
- {\def\do##1{%
- \begingroup
- \blx@setoptions@type{##1}%
- % Expand the type use* name toggles
- \let\blx@xml@nametoggles\@empty
- \def\do####1{\eappto\blx@xml@nametoggles{\blx@xml@toggle{use####1}}}%
- \dolistcsloop{blx@biber@datamodel@names}
- \begingroup
- \let\protect\relax
- \blx@checkoptions@type
- \endgroup
- \xappto\blx@tempa{\blx@bcf@options@type{##1}}%
- \endgroup}%
- \dolistloop\blx@opts@type}
- {}%
- % options scope
- % GLOBAL
- \def\do##1{%
- \begingroup
- \def\do####1{\xappto\blx@bcf@options@scope@global{\blx@xml@option@scope{##1}{####1}}}%
- \dolistcsloop{blx@globalopts@##1}%
- \endgroup}%
- \dolistloop\blx@globalopts@datatypes
- % ENTRYTYPE
- \def\do##1{%
- \begingroup
- \def\do####1{\xappto\blx@bcf@options@scope@type{\blx@xml@option@scope{##1}{####1}}}%
- \dolistcsloop{blx@typeopts@##1}%
- \endgroup}%
- \dolistloop\blx@typeopts@datatypes
- % ENTRY
- \def\do##1{%
- \begingroup
- \def\do####1{\xappto\blx@bcf@options@scope@entry{\blx@xml@option@scope{##1}{####1}}}%
- \dolistcsloop{blx@entryopts@##1}%
- \endgroup}%
- \dolistloop\blx@entryopts@datatypes
- % NAMELIST
- \def\do##1{%
- \begingroup
- \def\do####1{\xappto\blx@bcf@options@scope@namelist{\blx@xml@option@scope{##1}{####1}}}%
- \dolistcsloop{blx@namelistopts@##1}%
- \endgroup}%
- \dolistloop\blx@entryopts@datatypes
- % NAME
- \def\do##1{%
- \begingroup
- \def\do####1{\xappto\blx@bcf@options@scope@name{\blx@xml@option@scope{##1}{####1}}}%
- \dolistcsloop{blx@nameopts@##1}%
- \endgroup}%
- \dolistloop\blx@entryopts@datatypes
-
- \eappto\blx@tempa{%
- \blx@xml@comment{BIBLATEX OPTION SCOPE}%
- \blx@xml@options@scope{GLOBAL}{\blx@bcf@options@scope@global}%
- \blx@xml@options@scope{ENTRYTYPE}{\blx@bcf@options@scope@type}%
- \blx@xml@options@scope{ENTRY}{\blx@bcf@options@scope@entry}%
- \blx@xml@options@scope{NAMELIST}{\blx@bcf@options@scope@namelist}%
- \blx@xml@options@scope{NAME}{\blx@bcf@options@scope@name}}
- % sourcemap
- \ifbool{sourcemap}
- {\eappto\blx@tempa{%
- \blx@xml@comment{SOURCEMAP}%
- \blx@xml@sourcemap{%
- \ifcsdef{blx@biber@sourcemap@user}
- {\csuse{blx@biber@sourcemap@user}}
- {}%
- \ifcsdef{blx@biber@sourcemap@style}
- {\csuse{blx@biber@sourcemap@style}}
- {}%
- \ifcsdef{blx@biber@sourcemap@defaults@bibtex}
- {\csuse{blx@biber@sourcemap@defaults@bibtex}}
- {}%
- \ifcsdef{blx@biber@sourcemap@defaults@biblatexml}
- {\csuse{blx@biber@sourcemap@defaults@biblatexml}}
- {}%
- \ifcsdef{blx@biber@sourcemap@defaults@endnotexml}
- {\csuse{blx@biber@sourcemap@defaults@endnotexml}}
- {}%
- \ifcsdef{blx@biber@sourcemap@defaults@ris}
- {\csuse{blx@biber@sourcemap@defaults@ris}}
- {}%
- \ifcsdef{blx@biber@sourcemap@defaults@zoterordfxml}
- {\csuse{blx@biber@sourcemap@defaults@zoterordfxml}}
- {}}}}
- {}%
- % labelalpha template
- \eappto\blx@tempa{%
- \blx@xml@comment{LABELALPHA TEMPLATE}}%
- \def\do##1{%
- \eappto\blx@tempa{%
- \blx@xml@labelalphatemplate{##1}{%
- \csuse{blx@biber@labelalphatemplate@##1}}%
- }%
- }%
- \dolistloop\blx@biber@latem@type
- % data inheritance
- \eappto\blx@tempa{%
- \blx@xml@comment{INHERITANCE}%
- \blx@xml@inheritance{%
- \csuse{blx@biber@inherit@default}%
- \csuse{blx@biber@inherit@data}%
- }%
- }%
- % noinit
- \ifcsdef{blx@biber@noinit}
- {\eappto\blx@tempa{%
- \blx@xml@comment{NOINIT}%
- \blx@xml@noinits{%
- \csuse{blx@biber@noinit}%
- }%
- }}
- {}%
- % nolabel
- \ifcsdef{blx@biber@nolabel}
- {\eappto\blx@tempa{%
- \blx@xml@comment{NOLABEL}%
- \blx@xml@nolabels{%
- \csuse{blx@biber@nolabel}%
- }%
- }}
- {}%
- % nolabel
- \ifcsdef{blx@biber@nolabelwidthcount}
- {\eappto\blx@tempa{%
- \blx@xml@comment{NOLABELWIDTHCOUNT}%
- \blx@xml@nolabelwidthcounts{%
- \csuse{blx@biber@nolabelwidthcount}%
- }%
- }}
- {}%
- % nosort
- \ifcsdef{blx@biber@nosort}
- {\eappto\blx@tempa{%
- \blx@xml@comment{NOSORT}%
- \blx@xml@nosorts{%
- \csuse{blx@biber@nosort}%
- }%
- }}
- {}%
- % sortingnamekey
- \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY}}%
- \def\do##1{%
- \eappto\blx@tempa{%
- \blx@xml@sortingnamekey{##1}{%
- \csuse{blx@biber@sortingnamekey@##1}}}}%
- \dolistloop\blx@biber@sortingnamekeyspecs
- % sorting
- \def\do##1{%
- \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}%
- \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}%
- \dolistcsloop{blx@biber@datamodel@entrytypes}%
- \eappto\blx@tempa{%
- \blx@xml@comment{SORTING}%
- \blx@xml@sorting{}{%
- \blx@bcf@presort
- \blx@bcf@exclude
- \csuse{blx@biber@sorting@\blx@sorting}%
- }%
- }%
- % datamodel
- \eappto\blx@tempa{%
- \blx@xml@comment{DATA MODEL}%
- \blx@xml@datamodel{%
- \blx@xml@datamodel@constants{%
- \blx@bcf@datamodel@constants
- }%
- \blx@xml@datamodel@entrytypes{%
- \blx@bcf@datamodel@entrytypes
- }%
- \blx@xml@datamodel@fields{%
- \blx@bcf@datamodel@fields
- }%
- \blx@bcf@datamodel@entryfields
- \blx@bcf@datamodel@constraints
- }%
- }%
- % files
- \let\blx@tempb\@empty
- \blx@bibdata\blx@tempb\blx@bibfiles
- \eappto\blx@tempa{%
- \blx@xml@comment{CITATION DATA}%
- \blx@xml@comment{SECTION 0}%
- \blx@xml@bibdata{0}{\blx@tempb}%
- \blx@xml@section{0}%
- }%
- \immediate\openout\blx@bcfout\jobname.bcf\relax
- \blx@auxwrite\blx@bcfout{}{\blx@tempa}%
- \global\undef\blx@tempa
- \endgroup
- \AfterEndDocument{%
- \blx@auxwrite\blx@bcfout{}{%
- \blx@xml@endsection\blx@nl
- \csuse{blx@biber@slists}%
- \blx@xml@endfile}%
- \immediate\closeout\blx@bcfout}}
-
-%% Customisation
-
-% nolabel
-\newrobustcmd*{\DeclareNolabel}[1]{%
- \begingroup
- \let\nolabel\blx@nolabel
- \let\blx@tempa\@empty
- #1%
- \global\cslet{blx@biber@nolabel}\blx@tempa
- \endgroup}
-\@onlypreamble\DeclareNolabel
-
-\newcommand*{\blx@nolabel}[1]{%
- \eappto\blx@tempa{%
- \blx@xml@nolabel{#1}}}
-
-% nolabelwidthcount
-\newrobustcmd*{\DeclareNolabelwidthcount}[1]{%
- \begingroup
- \let\nolabel\blx@nolabelwidthcount
- \let\blx@tempa\@empty
- #1%
- \global\cslet{blx@biber@nolabelwidthcount}\blx@tempa
- \endgroup}
-\@onlypreamble\DeclareNolabelwidthcount
-
-\newcommand*{\blx@nolabelwidthcount}[1]{%
- \eappto\blx@tempa{%
- \blx@xml@nolabelwidthcount{#1}}}
-
-% nosort
-\newrobustcmd*{\DeclareNosort}[1]{%
- \begingroup
- \let\nosort\blx@nosort
- \let\blx@tempa\@empty
- #1%
- \global\cslet{blx@biber@nosort}\blx@tempa
- \endgroup}
-\@onlypreamble\DeclareNosort
-
-\newcommand*{\blx@nosort}[2]{%
- \eappto\blx@tempa{%
- \blx@xml@nosort{#1}{#2}}}
-
-% noinit
-\newrobustcmd*{\DeclareNoinit}[1]{%
- \begingroup
- \let\noinit\blx@noinit
- \let\blx@tempa\@empty
- #1%
- \global\cslet{blx@biber@noinit}\blx@tempa
- \endgroup}
-\@onlypreamble\DeclareNoinit
-
-\newcommand*{\blx@noinit}[1]{%
- \eappto\blx@tempa{%
- \blx@xml@noinit{#1}}}
-
-% sourcemap
-\newrobustcmd*{\DeclareSourcemap}[1]{%
- \booltrue{sourcemap}%
- \begingroup
- \let\maps\blx@usersourcemap@maps
- \let\blx@tempa\@empty
- #1%
- \csxdef{blx@biber@sourcemap@user}{\blx@tempa}%
- \endgroup}
-\@onlypreamble\DeclareSourcemap
-
-\newrobustcmd*{\DeclareStyleSourcemap}[1]{%
- \booltrue{sourcemap}%
- \begingroup
- \let\maps\blx@stylesourcemap@maps
- \let\blx@tempa\@empty
- #1%
- \csxdef{blx@biber@sourcemap@style}{\blx@tempa}%
- \endgroup}
-
-\@onlypreamble\DeclareStyleSourcemap
-
-\newrobustcmd*{\DeclareDriverSourcemap}[2][]{%
- \booltrue{sourcemap}%
- \begingroup
- \let\blx@tempa\@empty
- \let\blx@tempb\@empty
- \let\blx@tempc\@empty
- \let\blx@tempd\@empty
- \let\map\blx@sourcemap@map
- #2%
- \ifblank{#1}
- {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=driver}}
- {\setkeys{blx@sourcemap@maps}{#1, level=driver}}%
- \eappto\blx@tempa{%
- \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}%
- \csxdef{blx@biber@sourcemap@defaults@\blx@tempd}{\blx@tempa}%
- \endgroup}
-\@onlypreamble\DeclareDriverSourcemap
-
-\newcommand*{\blx@usersourcemap@maps}[2][]{%
- \let\blx@tempb\@empty
- \let\blx@tempc\@empty
- \let\map\blx@sourcemap@map
- \ifblank{#1}
- {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=user}}
- {\setkeys{blx@sourcemap@maps}{#1, level=user}}%
- #2%
- \eappto\blx@tempa{%
- \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}}
-
-\newcommand*{\blx@stylesourcemap@maps}[2][]{%
- \let\blx@tempb\@empty
- \let\blx@tempc\@empty
- \let\map\blx@sourcemap@map
- \ifblank{#1}
- {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=style}}
- {\setkeys{blx@sourcemap@maps}{#1, level=style}}%
- #2%
- \eappto\blx@tempa{%
- \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}}
-
-\define@key{blx@sourcemap@maps}{datatype}{% characters
- \eappto\blx@tempb{ datatype="#1"}%
- \eappto\blx@tempd{#1}}
-\define@key{blx@sourcemap@maps}{overwrite}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempb{ map\string_overwrite="1"}}
- {}}
-\define@key{blx@sourcemap@maps}{level}{% user|style|driver
- \appto\blx@tempb{ level="#1"}}
-
-\newcommand*{\blx@sourcemap@map}[2][]{%
- \let\blx@tempm\@empty
- \let\blx@tempe\@empty
- \let\perdatasource\blx@sourcemap@perdatasource
- \let\pertype\blx@sourcemap@pertype
- \let\pernottype\blx@sourcemap@pernottype
- \let\step\blx@sourcemap@step
- \ifblank{#1}
- {}
- {\setkeys{blx@sourcemap@map}{#1}}%
- #2%
- \eappto\blx@tempc{%
- \blx@xml@sourcemap@map{\blx@tempm}{\blx@tempe}}}
-
-\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempm{ map\string_overwrite="1"}}
- {}}
-\define@key{blx@sourcemap@map}{foreach}{% characters
- \eappto\blx@tempm{ map\string_foreach="#1"}}
-
-\newcommand*{\blx@sourcemap@perdatasource}[1]{%
- \eappto\blx@tempe{%
- \blx@xml@sourcemap@perdatasource{#1}}}
-
-\newcommand*{\blx@sourcemap@pertype}[1]{%
- \eappto\blx@tempe{%
- \blx@xml@sourcemap@pertype{#1}}}
-
-\newcommand*{\blx@sourcemap@pernottype}[1]{%
- \eappto\blx@tempe{%
- \blx@xml@sourcemap@pernottype{#1}}}
-
-\newcommand*{\blx@sourcemap@step}[1][2]{%
- \let\blx@tempf\@empty
- \setkeys{blx@sourcemap@step}{#1}%
- \eappto\blx@tempe{%
- \blx@xml@sourcemap@step{\blx@tempf}}}
-
-\define@key{blx@sourcemap@step}{typesource}{% characters
- \eappto\blx@tempf{ map\string_type\string_source="#1"}}
-\define@key{blx@sourcemap@step}{typetarget}{% characters
- \eappto\blx@tempf{ map\string_type\string_target="#1"}}
-\define@key{blx@sourcemap@step}{final}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_final="1"}}
- {}}
-\define@key{blx@sourcemap@step}{fieldsource}{% characters
- \eappto\blx@tempf{ map\string_field\string_source="#1"}}
-\define@key{blx@sourcemap@step}{fieldtarget}{% characters
- \eappto\blx@tempf{ map\string_field\string_target="#1"}}
-\define@key{blx@sourcemap@step}{fieldset}{% characters
- \eappto\blx@tempf{ map\string_field\string_set="#1"}}
-% We are sanitising the XML here as it's the value of an attribute which
-% might contain quotes or ampersands (URLs, for example)
-\define@key{blx@sourcemap@step}{fieldvalue}{% characters
- \blx@xmlsanitizeafter{\def\blx@temps}{#1}%
- \eappto\blx@tempf{ map\string_field\string_value="\blx@temps"}}
-\define@key{blx@sourcemap@step}{append}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_append="1"}}
- {}}
-\define@key{blx@sourcemap@step}{null}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_null="1"}}
- {}}
-\define@key{blx@sourcemap@step}{entrynull}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_entry\string_null="1"}}
- {}}
-\define@key{blx@sourcemap@step}{entrynew}{% characters
- \appto\blx@tempf{ map\string_entry\string_new="#1"}}
-\define@key{blx@sourcemap@step}{entrynewtype}{% characters
- \appto\blx@tempf{ map\string_entry\string_newtype="#1"}}
-\define@key{blx@sourcemap@step}{entrytarget}{% characters
- \appto\blx@tempf{ map\string_entrytarget="#1"}}
-\define@key{blx@sourcemap@step}{entryclone}{% characters
- \appto\blx@tempf{ map\string_entry\string_clone="#1"}}
-\define@key{blx@sourcemap@step}{origfield}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_origfield="1"}}
- {}}
-\define@key{blx@sourcemap@step}{origfieldval}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_origfieldval="1"}}
- {}}
-\define@key{blx@sourcemap@step}{origentrytype}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempf{ map\string_origentrytype="1"}}
- {}}
-\define@key{blx@sourcemap@step}{match}{% characters
- \appto\blx@tempf{ map\string_match="#1"}}
-\define@key{blx@sourcemap@step}{notmatch}{% characters
- \appto\blx@tempf{ map\string_notmatch="#1"}}
-\define@key{blx@sourcemap@step}{replace}{% characters
- \eappto\blx@tempf{ map\string_replace="#1"}}
-
-%%%
-
-\newrobustcmd*{\DeclareLabelalphaTemplate}[2][]{%
- \ifblank{#1}
- {\blx@biber@latem{#2}{global}}
- {\forcsvlist{\blx@biber@latem{#2}}{#1}}}
-\@onlypreamble\DeclareLabelalphaTemplate
-\blx@collectopts{xml}{blx@globalopts}{labelalphatemplate}% for passing to the .bcf
-\blx@collectopts{xml}{blx@typeopts}{labelalphatemplate}% for passing to the .bcf
-
-\def\blx@biber@latem#1#2{%
- \begingroup
- \let\labelelement\blx@latem@element
- \let\field\blx@latem@field
- \let\literal\blx@latem@literal
- \blx@tempcnta\z@
- \let\blx@tempa\@empty
- #1%
- \ifdef\blx@biber@latem@type
- {\ifinlist{#2}{\blx@biber@latem@type}
- {\global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}
- {\listgadd\blx@biber@latem@type{#2}%
- \global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}}%
- {\listgadd\blx@biber@latem@type{#2}%
- \global\cslet{blx@biber@labelalphatemplate@#2}\blx@tempa}%
- \endgroup}
-
-\newcommand*{\blx@latem@element}[1]{%
- \advance\blx@tempcnta\@ne
- \let\blx@tempb\@empty
- #1%
- \eappto\blx@tempa{%
- \blx@xml@labelalpha@element{\the\blx@tempcnta}{\blx@tempb}}}
-
-\newcommand*{\blx@latem@literal}[1]{%
- \blx@xmlsanitizeafter{\def\blx@temps}{#1}%
- \eappto\blx@tempb{%
- \blx@xml@labelalpha@part{}{\expandafter\regexp\expandafter{\blx@temps}}}}
-
-\newcommand*{\blx@latem@field}[2][]{%
- \let\blx@tempc\@empty
- \ifblank{#1}
- {}
- {\setkeys{blx@latem@field}{#1}}%
- \eappto\blx@tempb{%
- \blx@xml@labelalpha@part{\blx@tempc}{#2}}}
-
-\define@key{blx@latem@field}{uppercase}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ uppercase="1"}}
- {}}
-\define@key{blx@latem@field}{lowercase}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ lowercase="1"}}
- {}}
-\define@key{blx@latem@field}{final}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ final="1"}}
- {}}
-\define@key{blx@latem@field}{strwidth}{% integer
- \eappto\blx@tempc{ substring\string_width="#1"}}
-\define@key{blx@latem@field}{pstrwidth}{% integer
- \eappto\blx@tempc{ substring\string_pwidth="#1"}}
-\define@key{blx@latem@field}{varwidth}[true]{% "v"
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ substring\string_width="v"}}
- {}}
-\define@key{blx@latem@field}{varwidthnorm}[true]{% "vf"
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ substring\string_width="vf"}}
- {}}
-\define@key{blx@latem@field}{varwidthlist}[true]{% "l"
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ substring\string_width="l"}}
- {}}
-\define@key{blx@latem@field}{strfixedcount}{%
- \eappto\blx@tempc{ substring\string_fixed\string_threshold="#1"}}
-\define@key{blx@latem@field}{strwidthmax}{%
- \eappto\blx@tempc{ substring\string_width\string_max="#1"}}
-\define@key{blx@latem@field}{strside}{% left|right
- \ifstrequal{#1}{right}
- {\eappto\blx@tempc{ substring\string_side="right"}}
- {\eappto\blx@tempc{ substring\string_side="left"}}}
-\define@key{blx@latem@field}{compound}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ substring\string_compound="1"}}
- {}}
-\define@key{blx@latem@field}{pcompound}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ substring\string_pcompound="1"}}
- {}}
-\define@key{blx@latem@field}{ifnames}{%
- \eappto\blx@tempc{ ifnamecount="#1"}}
-\define@key{blx@latem@field}{names}{%
- \eappto\blx@tempc{ namerange="#1"}}
-\define@key{blx@latem@field}{noalphaothers}[true]{%
- \eappto\blx@tempc{ noalphaothers="1"}}
-\define@key{blx@latem@field}{padchar}{%
- \blx@xmlsanitizeafter{\def\blx@temps}{#1}%
- \eappto\blx@tempc{ pad\string_char="\expandafter\regexp\expandafter{\blx@temps}"}}
-\define@key{blx@latem@field}{padside}{% left|right
- \ifstrequal{#1}{left}
- {\eappto\blx@tempc{ pad\string_side="left"}}
- {\eappto\blx@tempc{ pad\string_side="right"}}}
-
-% [<exceptions>]{<options>}
-
-\newrobustcmd*{\DefaultInheritance}[2][]{%
- \begingroup
- \ifblank{#2}
- {}
- {\setkeys{blx@inherit@default}{#2}}%
- \edef\blx@tempa{\space
- inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space
- override\string_target="\iftoggle{blx@inherit@override}{true}{false}"}%
- \let\blx@tempb\@empty
- \let\except\blx@inherit@except
- #1%
- \xdef\blx@biber@inherit@default{%
- \blx@xml@inherit@defaults{\blx@tempa}{\blx@tempb}}%
- \endgroup}
-\@onlypreamble\DefaultInheritance
-
-\newtoggle{blx@inherit@all}
-\newtoggle{blx@inherit@override}
-
-\define@key{blx@inherit@default}{all}[true]{% true|false
- \settoggle{blx@inherit@all}{#1}}
-\define@key{blx@inherit@default}{override}[true]{% true|false
- \settoggle{blx@inherit@override}{#1}}
-
-% {<source>}{<target>}{<options>}
-
-\newcommand*{\blx@inherit@except}[3]{%
- \let\blx@tempc\@empty
- \ifblank{#3}
- {}
- {\setkeys{blx@inherit@except}{#3}}%
- \eappto\blx@tempb{%
- \blx@xml@inherit@type{#1}{#2}{\blx@tempc}}}
-
-\define@key{blx@inherit@except}{all}[true]{% true|false
- \eappto\blx@tempc{ inherit\string_all="#1"}}
-\define@key{blx@inherit@except}{override}[true]{% true|false
- \eappto\blx@tempc{ override\string_target="#1"}}
-
-% {<type,type,...>}{<type,type,...>}{<spec>}
-\newrobustcmd*{\DeclareDataInheritance}[3]{%
- \begingroup
- \let\blx@tempa\@empty
- \forcsvlist{\blx@inherit@i{#2}}{#1}%
- \let\blx@tempb\@empty
- \let\inherit\blx@inherit@field
- \let\noinherit\blx@inherit@block
- #3%
- \xappto\blx@biber@inherit@data{%
- \blx@xml@inherit@data{%
- \blx@tempa
- \blx@tempb}}%
- \endgroup}
-\@onlypreamble\DeclareDataInheritance
-
-\def\blx@inherit@i#1#2{%
- \forcsvlist{\blx@inherit@ii{#2}}{#1}}
-
-\def\blx@inherit@ii#1#2{%
- \eappto\blx@tempa{\blx@xml@inherit@type{#1}{#2}{}}}
-
-\blx@collectopts{xml}{blx@globalopts}{inheritance}% for passing to the .bcf
-
-% [<options>]{<source>}{<target>}
-\newcommand*{\blx@inherit@field}[3][]{%
- \let\blx@tempc\@empty
- \ifblank{#1}
- {}
- {\setkeys{blx@inherit@field}{#1}}%
- \eappto\blx@tempb{%
- \blx@xml@inherit@field{#2}{#3}{\blx@tempc}}}
-
-\newcommand*{\blx@inherit@block}[1]{%
- \eappto\blx@tempb{\blx@xml@inherit@block{#1}}}
-
-\define@key{blx@inherit@field}{override}[true]{% true|false
- \ifstrequal{#1}{true}
- {\edef\blx@tempc{ override\string_target="true"}}
- {\edef\blx@tempc{ override\string_target="false"}}}
-
-\newrobustcmd*{\ResetDataInheritance}{%
- \global\csundef{blx@biber@inherit@data}}
-\@onlypreamble\ResetDataInheritance
-
-% {<name>}{<spec>}
-\newrobustcmd*{\DeclareBiblistFilter}[2]{%
- \begingroup
- \let\filteror\blx@biblistfilteror
- \let\filter\blx@biblistfilter
- \let\blx@tempa\@empty
- #2%
- \global\cslet{blx@biber@biblistfilters@#1}\blx@tempa
- \endgroup}
-\@onlypreamble\DeclareBiblistFilter
-
-\newcommand*{\blx@biblistfilteror}[1]{%
- \eappto\blx@tempa{\blx@xml@slistfilterorbegin}%
- #1%
- \eappto\blx@tempa{\blx@xml@slistfilterorend}}
-
-\newcommand*{\blx@biblistfilter}[1][2]{%
- \let\blx@tempc\@empty
- \let\blx@tempd\@empty
- \setkeys{blx@biblistfilter@filter}{#1}%
- \eappto\blx@tempa{%
- \blx@xml@slistfilter{\blx@tempc}{\blx@tempd}}}
-
-\define@key{blx@biblistfilter@filter}{type}{%
- \def\blx@tempc{#1}}
-\define@key{blx@biblistfilter@filter}{filter}{%
- \def\blx@tempd{#1}}
-
-% Predefine filters for label fields
-\def\do#1{\DeclareBiblistFilter{#1}{\filter[type=field,filter=#1]}}
-\abx@dolabelfields
-
-% [<specname>]{<spec>}
-\newrobustcmd*{\DeclareSortingNamekeyScheme}[2][]{%
- \begingroup
- \ifblank{#1}
- {\def\blx@biber@snkname{global}}% default
- {\def\blx@biber@snkname{#1}}%
- \let\namepart\blx@sortnk@namepart
- \let\keypart\blx@sortnk@keypart
- \let\literal\blx@sortnk@literal
- \let\blx@tempa\@empty
- \blx@tempcnta\z@
- #2%
- \global\cslet{blx@biber@sortingnamekey@\blx@biber@snkname}\blx@tempa
- \xifinlist{\blx@biber@snkname}{\blx@biber@sortingnamekeyspecs}
- {}
- {\listxadd\blx@biber@sortingnamekeyspecs{\blx@biber@snkname}}%
- % Add the sortnamekeyscheme to the list of sortnamekeyschemes
- % so we can compare on next run
- \xifinlist{\blx@biber@snkname}{\blx@sortnamekeyschemes}
- {}
- {\listxadd\blx@sortnamekeyschemes{\blx@biber@snkname}}%
- \endgroup}
-\@onlypreamble\DeclareSortingNamekeyScheme
-\blx@collectopts{xml}{blx@globalopts}{sortingnamekey}% for passing to the .bcf
-\DeclareEntryOption[string]{sortnamekeyscheme}{%
- \def\blx@refcontext@sortingnamekey{#1}}
-
-% User-mode macro for checking sorting name key scheme
-\def\ifsortnamekeyscheme#1{%
- \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekey}{#1}}
-
-\newcommand*{\blx@sortnk@keypart}[1]{%
- \advance\blx@tempcnta\@ne
- \blx@tempcntb\z@
- \edef\blx@tempd{ order="\the\blx@tempcnta"}%
- \let\blx@tempb\@empty
- #1%
- \eappto\blx@tempa{%
- \blx@xml@sortingnamekeykeypart{\blx@tempd}{\blx@tempb}}}
-
-\newcommand*{\blx@sortnk@literal}[1]{%
- \advance\blx@tempcntb\@ne
- \edef\blx@tempe{ order="\the\blx@tempcntb"}%
- \let\blx@tempc\@empty
- \eappto\blx@tempb{%
- \blx@xml@sortingnamekeyliteral{\blx@tempe}{#1}}}
-
-\newcommand*{\blx@sortnk@namepart}[2][]{%
- \advance\blx@tempcntb\@ne
- \edef\blx@tempe{ order="\the\blx@tempcntb"}%
- \let\blx@tempc\@empty
- \ifblank{#1}
- {}
- {\setkeys{blx@sortnk@namepart}{#1}}%
- \eappto\blx@tempb{%
- \blx@xml@sortingnamekeynamepart{\blx@tempe}{\blx@tempc}{#2}}}
-
-\define@key{blx@sortnk@namepart}{use}[true]{% use* option for namepart true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ use="1"}}
- {\appto\blx@tempc{ use="0"}}}
-
-% {<name>}{<spec>}
-\newrobustcmd*{\DeclareSortingScheme}[3][]{%
- \ifblank{#1}
- {}
- {\setkeys{blx@sortdef@sorting}{#1}%
- \csxdef{blx@sortdef@locale@#2}{\blx@templ}}%
- \begingroup
- \let\sort\blx@sortdef@sort
- \let\name\blx@sortdef@field% legacy pre-biblatex 2.0 compat
- \let\list\blx@sortdef@field% legacy pre-biblatex 2.0 compat
- \let\field\blx@sortdef@field
- \let\literal\blx@sortdef@literal
- \def\citeorder{\blx@sortdef@field{citeorder}}%
- \blx@tempcnta\z@
- \let\blx@tempa\@empty
- #3%
- \global\cslet{blx@biber@sorting@#2}\blx@tempa
- \endgroup}
-\@onlypreamble\DeclareSortingScheme
-\blx@collectopts{xml}{blx@globalopts}{sortscheme}% for passing to the .bcf
-
-\define@key{blx@sortdef@sorting}{locale}{% locale name
- \def\blx@templ{#1}}
-
-\newcommand*{\blx@sortdef@sort}[2][]{%
- \advance\blx@tempcnta\@ne
- \blx@tempcntb\z@
- \let\blx@tempb\@empty
- \edef\blx@tempc{order="\the\blx@tempcnta"}%
- \ifblank{#1}
- {}
- {\setkeys{blx@sortdef@sort}{#1}}%
- \let\do\@firstofone
- #2%
- \eappto\blx@tempa{%
- \blx@xml@sort{\blx@tempc}{\blx@tempb}}}
-
-\define@key{blx@sortdef@sort}{locale}{% locale name
- \eappto\blx@tempc{ locale="#1"}}
-\define@key{blx@sortdef@sort}{direction}{% ascending|descending
- \ifstrequal{#1}{ascending}
- {\eappto\blx@tempc{ sort\string_direction="ascending"}}
- {\eappto\blx@tempc{ sort\string_direction="descending"}}}
-\define@key{blx@sortdef@sort}{final}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ final="1"}}
- {}}
-\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ sortcase="1"}}
- {\appto\blx@tempc{ sortcase="0"}}}
-\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false
- \ifstrequal{#1}{true}
- {\appto\blx@tempc{ sortupper="1"}}
- {\appto\blx@tempc{ sortupper="0"}}}
-
-\newcommand*{\blx@sortdef@field}[2][]{%
- \advance\blx@tempcntb\@ne
- \edef\blx@tempd{order="\the\blx@tempcntb"}%
- \ifblank{#1}
- {}
- {\setkeys{blx@sortdef@field}{#1}}%
- \eappto\blx@tempb{%
- \blx@xml@sortitem{\blx@tempd}{#2}}}
-
-\define@key{blx@sortdef@field}{padside}{% left|right
- \ifstrequal{#1}{right}
- {\eappto\blx@tempd{ pad\string_side="right"}}
- {\eappto\blx@tempd{ pad\string_side="left"}}}
-\define@key{blx@sortdef@field}{padwidth}{% integer
- \eappto\blx@tempd{ pad\string_width="#1"}}
-\define@key{blx@sortdef@field}{padchar}{% character
- \blx@xmlsanitizeafter{\def\blx@tempe}{#1}%
- \eappto\blx@tempd{ pad\string_char="\blx@tempe"}}
-\define@key{blx@sortdef@field}{strside}{% left|right
- \ifstrequal{#1}{right}
- {\eappto\blx@tempd{ substring\string_side="right"}}
- {\eappto\blx@tempd{ substring\string_side="left"}}}
-\define@key{blx@sortdef@field}{strwidth}{% integer
- \eappto\blx@tempd{ substring\string_width="#1"}}
-
-\def\blx@sortdef@literal#1{%
- \advance\blx@tempcntb\@ne
- \blx@xmlsanitizeafter{\def\blx@tempe}{#1}%
- \eappto\blx@tempb{%
- \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}}
-
-% [<type,type,...>]{<string>}
-
-\newrobustcmd*{\DeclarePresort}[2][]{%
- \begingroup
- \blx@xmlsanitizeafter{\def\blx@tempa}{#2}%
- \ifblank{#1}
- {\xdef\blx@bcf@presort{\blx@xml@presort{}{\blx@tempa}}}
- {\notblank{#2}
- {\forcsvlist{\blx@defpresort\blx@tempa}{#1}}
- {\forcsvlist\blx@undefpresort{#1}}}%
- \endgroup}
-\@onlypreamble\DeclarePresort
-\blx@collectopts{string}{blx@globalopts}{presort}% for passing to the .bcf
-\blx@collectopts{string}{blx@typeopts}{presort}% for passing to the .bcf
-\blx@collectopts{string}{blx@entryopts}{presort}% for passing to the .bcf
-
-\def\blx@defpresort#1#2{%
- \csxdef{blx@bcf@presort@#2}{\blx@xml@presort{#2}{#1}}}
-\def\blx@undefpresort#1{%
- \global\csundef{blx@bcf@presort@#1}}
-
-\newrobustcmd*{\DeclareSortExclusion}[2]{%
- \forcsvlist{\blx@sortexlude{#2}}{#1}}
-\blx@collectopts{xml}{blx@typeopts}{sortexclusion}% for passing to the .bcf
-
-\def\blx@sortexlude#1#2{%
- \begingroup
- \ifblank{#1}
- {\global\csundef{blx@bcf@exclude@#2}}
- {\let\blx@tempa\@empty
- \forcsvlist\blx@sortexlude@i{#1}%
- \csxdef{blx@bcf@exclude@#2}{%
- \blx@xml@sortexclude{#2}{\blx@tempa}}}
- \endgroup}
-
-\def\blx@sortexlude@i#1{%
- \appto\blx@tempa{\blx@xml@exclude{#1}}}
-
-% [<type,type,...>]{<field,field,...>}
-
-\newrobustcmd*{\DeclareLabelname}[2][]{%
- \begingroup
- \let\blx@tempa\@empty
- \def\blx@tempb{labelnamespec}%
- \let\field\blx@ordered@field
- \ifblank{#1}
- {\global\cslet{blx@bcf@labelnamespec}\@empty}
- {\def\blx@tempa{#1}%
- \def\do##1{\global\cslet{blx@bcf@labelnamespec@##1}\@empty}%
- \expandafter\docsvlist\expandafter{#1}}%
- #2%
- \endgroup}
-\@onlypreamble\DeclareLabelname
-\blx@collectopts{xml}{blx@globalopts}{labelnamespec}% for passing to the .bcf
-\blx@collectopts{xml}{blx@typeopts}{labelnamespec}% for passing to the .bcf
-
-\newrobustcmd*{\DeclareLabeltitle}[2][]{%
- \begingroup
- \let\blx@tempa\@empty
- \def\blx@tempb{labeltitlespec}%
- \let\field\blx@ordered@field
- \ifblank{#1}
- {\global\cslet{blx@bcf@labeltitlespec}\@empty}
- {\def\blx@tempa{#1}%
- \def\do##1{\global\cslet{blx@bcf@labeltitlespec@##1}\@empty}%
- \expandafter\docsvlist\expandafter{#1}}%
- #2%
- \endgroup}
-\@onlypreamble\DeclareLabeltitle
-\blx@collectopts{xml}{blx@globalopts}{labeltitlespec}% for passing to the .bcf
-\blx@collectopts{xml}{blx@typeopts}{labeltitlespec}% for passing to the .bcf
-
-\newrobustcmd*{\DeclareLabelyear}[2][]{%
- \blx@warning@noline{%
- 'DeclareLabelyear' is deprecated, please use 'DeclareLabeldate'}}
-
-\newrobustcmd*{\DeclareLabeldate}[2][]{%
- \begingroup
- \let\blx@tempa\@empty
- \def\blx@tempb{labeldatespec}%
- \let\field\blx@orderedld@field
- \let\literal\blx@orderedld@literal
- \ifblank{#1}
- {\global\cslet{blx@bcf@labeldatespec}\@empty}
- {\def\blx@tempa{#1}%
- \def\do##1{\global\cslet{blx@bcf@labeldatespec@##1}\@empty}%
- \expandafter\docsvlist\expandafter{#1}}%
- #2%
- \endgroup}
-\@onlypreamble\DeclareLabeldate
-\blx@collectopts{xml}{blx@globalopts}{labeldatespec}% for passing to the .bcf
-\blx@collectopts{xml}{blx@typeopts}{labeldatespec}% for passing to the .bcf
-
-\newcommand*{\blx@ordered@field}[2][]{%
- \let\blx@tempc\@empty
- \ifblank{#1}
- {}
- {\setkeys{blx@ordered@field}{#1}}%
- \advance\blx@tempcnta\@ne
- \ifdefempty{\blx@tempa}
- {\csxappto{blx@bcf@\blx@tempb}{%
- \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}
- {\def\do##1{%
- \blx@addtypeopt{##1}%
- \csxappto{blx@bcf@\blx@tempb @##1}{%
- \noexpand\blx@xml@ordered{\the\blx@tempcnta}{\blx@tempc}{#2}}}%
- \expandafter\docsvlist\expandafter{\blx@tempa}}}
-
-\newcommand*{\blx@orderedld@field}[2][]{%
- \let\blx@tempc\@empty
- \ifblank{#1}
- {}
- {\setkeys{blx@ordered@field}{#1}}%
- \advance\blx@tempcnta\@ne
- \ifdefempty{\blx@tempa}
- {\csxappto{blx@bcf@\blx@tempb}{%
- \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="field"\blx@tempc}{#2}}}
- {\def\do##1{%
- \blx@addtypeopt{##1}%
- \csxappto{blx@bcf@\blx@tempb @##1}{%
- \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="field"\blx@tempc}{#2}}}%
- \expandafter\docsvlist\expandafter{\blx@tempa}}}
-
-\newcommand*{\blx@orderedld@literal}[1]{%
- \advance\blx@tempcnta\@ne
- \ifdefempty{\blx@tempa}
- {\csxappto{blx@bcf@\blx@tempb}{%
- \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}
- {\def\do##1{%
- \blx@addtypeopt{##1}%
- \csxappto{blx@bcf@\blx@tempb @##1}{%
- \noexpand\blx@xml@ordered{\the\blx@tempcnta}{ type="string"}{#1}}}%
- \expandafter\docsvlist\expandafter{\blx@tempa}}}
-
-%% Package options
-
-% [<entrytype,entrytype,...>]{<options>}
-
-\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{%
- \ifblank{#1}
- {\setkeys{blx@opt@pre}{#2}}
- {\forcsvlist{\blx@typeoptions{#2}}{#1}}}
-\@onlypreamble\ExecuteBibliographyOptions
-
-\def\blx@typeoptions#1#2{%
- \blx@addtypeopt{#2}%
- \csappto{blx@opts@type@#2}{#1,}}
-
-\def\blx@addtypeopt#1{%
- \notblank{#1}
- {\ifdef\blx@opts@type
- {\ifinlist{#1}{\blx@opts@type}
- {}
- {\listgadd\blx@opts@type{#1}}}
- {\listgadd\blx@opts@type{#1}}}
- {}}
-
-% load-time only
-
-% Have to have a dummy for this as it's set much earlier but is passed
-% through to here where we just ignore it
-\define@key{blx@opt@ldt}{datamodel}{}
-
-\define@key{blx@opt@ldt}{style}{%
- \def\blx@cbxfile{#1}%
- \def\blx@bbxfile{#1}}
-
-\define@key{blx@opt@ldt}{bibstyle}{%
- \def\blx@bbxfile{#1}}
-
-\define@key{blx@opt@ldt}{citestyle}{%
- \def\blx@cbxfile{#1}}
-
-\define@key{blx@opt@ldt}{natbib}[true]{%
- \settoggle{blx@natbib}{#1}}
-
-\define@key{blx@opt@ldt}{mcite}[true]{%
- \settoggle{blx@mcite}{#1}}
-
-% load-time and preamble
-
-\DeclareBibliographyOption[string]{backend}{
- \blx@error
- {'backend' is load-time only option}
- {The 'backend' option is load-time only and cannot
- be\MessageBreak set after package loading}}
-
-\DeclareBibliographyOption[boolean]{debug}[true]{%
- \settoggle{blx@debug}{#1}}
-
-\DeclareBibliographyOption[boolean]{loadfiles}[true]{%
- \settoggle{blx@loadfiles}{#1}}
-
-\DeclareBibliographyOption[integer]{mincrossrefs}{%
- \ifnum#1<\z@
- \def\blx@mincrossrefs{1}%
- \def\blx@minxrefs{1}%
- \else
- \def\blx@mincrossrefs{#1}%
- \def\blx@minxrefs{#1}%
- \fi}
-\def\blx@minxrefs{2}
-
-\DeclareBibliographyOption[string]{texencoding}{%
- \ifstrequal{#1}{auto}
- {\undef\blx@texencoding}
- {\def\blx@texencoding{#1}}}
-
-\DeclareBibliographyOption[string]{bibencoding}{%
- \ifcsdef{blx@bibenc@#1}
- {\letcs\blx@bibencoding{blx@bibenc@#1}}
- {\def\blx@bibencoding{#1}}}
-
-\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}}
-\abx@mapbibenc{inputenc}{auto}
-\abx@mapbibenc{x-ascii}{ascii}
-
-\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}}
-\abx@mapinpenc{utf8x}{utf8}
-\abx@mapinpenc{lutf8}{utf8}
-\abx@mapinpenc{x-ascii}{ascii}
-
-\DeclareBibliographyOption[boolean]{safeinputenc}[true]{%
- \settoggle{blx@safeinputenc}{#1}}
-\newtoggle{blx@safeinputenc}
-
-\DeclareBibliographyOption[string]{sorting}{%
- \def\blx@sorting{#1}%
- \def\blx@refcontext@sorting{#1}}
-
-\AtEndPreamble{%
- \ifcsdef{blx@biber@sorting@\blx@sorting}
- {}
- {\blx@err@invopt{sorting=\blx@sorting}{}%
- \def\blx@sorting{nty}%
- \def\blx@refcontext@sorting{nty}}%
- \listxadd\blx@sortschemes{\blx@sorting}%
- \def\blx@refcontext@sortingnamekey{global}%
- \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey}}
-
-\DeclareBibliographyOption[boolean]{sortcase}[true]{%
- \settoggle{blx@sortcase}{#1}}
-
-\DeclareBibliographyOption[boolean]{sortupper}[true]{%
- \settoggle{blx@sortupper}{#1}}
-
-\DeclareBibliographyOption[string]{sortlos}{%
- \blx@warning@noline{%
- sortlos option is deprecated, use 'sorting' option to \string\printbiblist}}
-
-\DeclareBibliographyOption[integer]{maxnames}{%
- \numdef\blx@maxcitenames{#1}%
- \numdef\blx@maxbibnames{#1}}
-\DeclareBibliographyOption[integer]{minnames}{%
- \numdef\blx@mincitenames{#1}%
- \numdef\blx@minbibnames{#1}}
-\DeclareTypeOption[integer]{maxnames}{%
- \numdef\blx@maxcitenames@type{#1}%
- \numdef\blx@maxbibnames@type{#1}%
- \c@maxnames#1\relax}
-\DeclareTypeOption[integer]{minnames}{%
- \numdef\blx@mincitenames@type{#1}%
- \numdef\blx@minbibnames@type{#1}%
- \c@minnames#1\relax}
-\DeclareEntryOption[integer]{maxnames}{%
- \c@maxnames#1\relax}
-\DeclareEntryOption[integer]{minnames}{%
- \c@minnames#1\relax}
-
-\DeclareBibliographyOption[integer]{maxbibnames}{%
- \numdef\blx@maxbibnames{#1}}
-\DeclareBibliographyOption[integer]{minbibnames}{%
- \numdef\blx@minbibnames{#1}}
-\DeclareTypeOption[integer]{maxbibnames}{%
- \numdef\blx@maxbibnames@type{#1}%
- \iftoggle{blx@bibliography}
- {\c@maxnames#1\relax}
- {}}
-\DeclareTypeOption[integer]{minbibnames}{%
- \numdef\blx@minbibnames@type{#1}%
- \iftoggle{blx@bibliography}
- {\c@minnames#1\relax}
- {}}
-\DeclareEntryOption[integer]{maxbibnames}{%
- \iftoggle{blx@bibliography}
- {\c@maxnames#1\relax}
- {}}
-\DeclareEntryOption[integer]{minbibnames}{%
- \iftoggle{blx@bibliography}
- {\c@minnames#1\relax}
- {}}
-
-\DeclareBibliographyOption[integer]{maxcitenames}{%
- \numdef\blx@maxcitenames{#1}}
-\DeclareBibliographyOption[integer]{mincitenames}{%
- \numdef\blx@mincitenames{#1}}
-\DeclareTypeOption[integer]{maxcitenames}{%
- \numdef\blx@maxcitenames@type{#1}%
- \iftoggle{blx@bibliography}
- {}
- {\c@maxnames#1\relax}}
-\DeclareTypeOption[integer]{mincitenames}{%
- \numdef\blx@mincitenames@type{#1}%
- \iftoggle{blx@bibliography}
- {}
- {\c@minnames#1\relax}}
-\DeclareEntryOption[integer]{maxcitenames}{%
- \iftoggle{blx@bibliography}
- {}
- {\c@maxnames#1\relax}}
-\DeclareEntryOption[integer]{mincitenames}{%
- \iftoggle{blx@bibliography}
- {}
- {\c@minnames#1\relax}}
-
-\appto\blx@checkoptions@global{%
- \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames
- \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames}
-\appto\blx@checkoptions@type{%
- \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type
- \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type}
-\appto\blx@checkoptions@entry{%
- \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames}
-
-\DeclareBibliographyOption[integer]{maxitems}{%
- \numdef\blx@maxitems{#1}}
-\DeclareBibliographyOption[integer]{minitems}{%
- \numdef\blx@minitems{#1}}
-\DeclareTypeOption[integer]{maxitems}{%
- \numdef\blx@maxitems@type{#1}%
- \c@maxitems#1\relax}
-\DeclareTypeOption[integer]{minitems}{%
- \numdef\blx@minitems@type{#1}%
- \c@minitems#1\relax}
-\DeclareEntryOption[integer]{maxitems}{%
- \c@maxitems#1\relax}
-\DeclareEntryOption[integer]{minitems}{%
- \c@minitems#1\relax}
-
-\appto\blx@checkoptions@global{%
- \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems}
-\appto\blx@checkoptions@type{%
- \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type}
-\appto\blx@checkoptions@entry{%
- \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems}
-
-\DeclareBibliographyOption[integer]{maxalphanames}{%
- \numdef\blx@maxalphanames{#1}}
-\DeclareBibliographyOption[integer]{minalphanames}{%
- \numdef\blx@minalphanames{#1}}
-\DeclareTypeOption[integer]{maxalphanames}{%
- \numdef\blx@maxalphanames{#1}}
-\DeclareTypeOption[integer]{minalphanames}{%
- \numdef\blx@minalphanames{#1}}
-\DeclareEntryOption[integer]{maxalphanames}{%
- \numdef\blx@maxalphanames{#1}}
-\DeclareEntryOption[integer]{minalphanames}{%
- \numdef\blx@minalphanames{#1}}
-
-\appto\blx@checkoptions@global{%
- \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames}
-\appto\blx@checkoptions@type{%
- \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames}
-
-\def\blx@maxmin@num#1#2#3#4{%
- \ifnumless#3\@ne
- {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}%
- \let#3\@ne}
- {}%
- \ifnumless#4\@ne
- {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}%
- \let#4\@ne}
- {}%
- \ifnumless#3#4
- {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}%
- \let#3#4}
- {}}
-
-\def\blx@maxmin@cnt#1#2#3#4{%
- \ifnumless#3\@ne
- {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}%
- #3\@ne}
- {}%
- \ifnumless#4\@ne
- {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}%
- #4\@ne}
- {}%
- \ifnumless#3#4
- {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}%
- #3=#4}
- {}}
-
-\DeclareBibliographyOption[boolean]{terseinits}[true]{%
- \ifstrequal{#1}{true}
- {\toggletrue{blx@terseinits}
- \renewrobustcmd*{\bibinitperiod}{}
- \renewrobustcmd*{\bibinitdelim}{}
- \renewrobustcmd*{\bibinithyphendelim}{}}
- {\togglefalse{blx@terseinits}
- \renewrobustcmd*{\bibinitperiod}{\adddot}
- \renewrobustcmd*{\bibinitdelim}{\addnbspace}
- \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}}
-
-% Legacy for giveninits
-\DeclareBibliographyOption[boolean]{firstinits}[true]{%
- \blx@warning@noline{%
- 'firstinits' option is deprecated, use 'giveninits' instead}%
- \settoggle{blx@giveninits}{#1}}
-
-% Legacy for sortgiveninits
-\DeclareBibliographyOption[boolean]{sortfirstinits}[true]{%
- \blx@warning@noline{%
- 'sortfirstinits' option is deprecated, use 'sortgiveninits' instead}%
- \settoggle{blx@sortgiveninits}{#1}}
-
-\DeclareBibliographyOption[boolean]{giveninits}[true]{%
- \settoggle{blx@giveninits}{#1}}
-
-\DeclareBibliographyOption[boolean]{sortgiveninits}[true]{%
- \settoggle{blx@sortgiveninits}{#1}}
-
-\DeclareBibliographyOption[boolean]{abbreviate}[true]{%
- \ifstrequal{#1}{true}
- {\def\abx@str{abx@sstr}}
- {\def\abx@str{abx@lstr}}}
-
-\DeclareBibliographyOption[boolean]{dateabbrev}[true]{%
- \ifstrequal{#1}{true}
- {\let\abx@bibmonth\blx@imc@bibsstring}
- {\let\abx@bibmonth\blx@imc@biblstring}}
-
-\DeclareBibliographyOption[string]{sortlocale}{%
- \edef\blx@sortlocale{\detokenize{#1}}}
-
-\DeclareBibliographyOption[string]{language}{%
- \togglefalse{blx@autolangbib}%
- \togglefalse{blx@autolangcite}%
- \ifboolexpr{
- test {\ifstrequal{#1}{auto}}
- or
- test {\ifstrequal{#1}{autobib}}
- or
- test {\ifstrequal{#1}{autocite}}
- }
- {\def\blx@languagename{english}%
- \ifstrequal{#1}{auto}
- {\toggletrue{blx@autolangbib}%
- \toggletrue{blx@autolangcite}}
- {}%
- \ifstrequal{#1}{autobib}
- {\toggletrue{blx@autolangbib}}
- {}%
- \ifstrequal{#1}{autocite}
- {\toggletrue{blx@autolangcite}}
- {}}
- {\IfFileExists{#1.lbx}
- {\togglefalse{blx@autolangbib}%
- \togglefalse{blx@autolangcite}%
- \edef\blx@languagename{#1}}
- {\blx@error
- {Language '#1' not supported}
- {Failed to find a matching '#1.lbx' file}}}}
-
-\DeclareBibliographyOption[boolean]{clearlang}[true]{%
- \settoggle{blx@clearlang}{#1}}
-
-\DeclareBibliographyOption[string]{babel}{%
- \blx@warning@noline{%
- 'babel' option is deprecated, use 'autolang' instead}%
- \blx@autolang@i{#1}}
-
-\DeclareBibliographyOption[string]{autolang}{%
- \blx@autolang@i{#1}}
-
-\def\blx@autolang@i#1{%
- \ifcsdef{blx@opt@autolang@#1}
- {\csuse{blx@opt@autolang@#1}}
- {\blx@err@invopt{autolang=#1}{}}}
-
-\def\blx@opt@autolang@none{%
- \undef\blx@thelangenv
- \let\blx@hook@initlang\@empty
- \let\blx@hook@endlang\@empty}
-\def\blx@opt@autolang@hyphen{%
- \def\blx@thelangenv{hyphenrules}%
- \let\blx@hook@initlang\@empty
- \let\blx@hook@endlang\@empty}
-\csdef{blx@opt@autolang@other*}{%
- \def\blx@thelangenv{otherlanguage*}%
- \def\blx@hook@initlang{\@quotereset\@ne}%
- \def\blx@hook@endlang{\blx@postpunct}}
-\def\blx@opt@autolang@other{%
- \def\blx@thelangenv{otherlanguage}%
- \def\blx@hook@initlang{\@quotereset\@ne}%
- \def\blx@hook@endlang{\blx@postpunct}}
-\def\blx@opt@autolang@langname{%
- \@ifpackageloaded{polyglossia}
- {\def\blx@thelangenv{langname}}
- {\def\blx@thelangenv{otherlanguage}}%
- \def\blx@hook@initlang{\@quotereset\@ne}%
- \def\blx@hook@endlang{\blx@postpunct}}
-
-\DeclareBibliographyOption[boolean]{indexing}[true]{%
- \blx@opt@index{#1}}
-\DeclareTypeOption[boolean]{indexing}[true]{%
- \blx@opt@index{#1}}
-\DeclareEntryOption[boolean]{indexing}[true]{%
- \blx@opt@index{#1}}
-\def\blx@opt@index#1{%
- \ifcsdef{blx@opt@index@#1}
- {\csuse{blx@opt@index@#1}}
- {\blx@err@invopt{indexing=#1}{}}}
-\def\blx@opt@index@true{%
- \toggletrue{blx@citeindex}%
- \toggletrue{blx@bibindex}}
-\def\blx@opt@index@false{%
- \togglefalse{blx@citeindex}%
- \togglefalse{blx@bibindex}}
-\def\blx@opt@index@cite{%
- \toggletrue{blx@citeindex}%
- \togglefalse{blx@bibindex}}
-\def\blx@opt@index@bib{%
- \togglefalse{blx@citeindex}%
- \toggletrue{blx@bibindex}}
-
-\DeclareBibliographyOption[boolean]{sortcites}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@thecitesort\blx@citesort
- \let\blx@thenotecheck\blx@notecheck}
- {\let\blx@thecitesort\blx@citenosort
- \let\blx@thenotecheck\relax}}
-
-\DeclareBibliographyOption[boolean]{hyperref}[true]{%
- \ifcsdef{blx@opt@hyperref@#1}
- {\letcs\blx@hyperref{blx@opt@hyperref@#1}}
- {\blx@err@invopt{hyperref=#1}{}}}
-\def\blx@opt@hyperref@false{0}
-\def\blx@opt@hyperref@true{1}
-\def\blx@opt@hyperref@auto{2}
-
-\DeclareBibliographyOption[boolean]{backref}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@backref\blx@addbackref
- \let\abx@aux@backref\blx@aux@backref
- \booltrue{backtracker}}
- {\let\blx@backref\@gobble
- \let\abx@aux@backref\@gobblefive
- \boolfalse{backtracker}}}
-
-\DeclareBibliographyOption[string]{backrefsetstyle}{%
- \ifcsdef{blx@opt@backrefsetstyle@#1}
- {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}}
- {\blx@err@invopt{backrefsetstyle=#1}{}}}
-\def\blx@opt@backrefsetstyle@setonly{0}
-\def\blx@opt@backrefsetstyle@memonly{1}
-\def\blx@opt@backrefsetstyle@setormem{2}
-\def\blx@opt@backrefsetstyle@setandmem{3}
-\def\blx@opt@backrefsetstyle@memandset{4}
-\def\blx@opt@backrefsetstyle@setplusmem{5}
-
-\appto\blx@mkhyperref{%
- \ifHy@plainpages
- \blx@warning@noline{%
- hyperref package option 'plainpages' enabled.\MessageBreak
- This may cause problems with hyperlinked back\MessageBreak
- references. 'plainpages=false' is recommended}%
- \fi
- \ifHy@pageanchor\else
- \blx@warning@noline{%
- hyperref package option 'pageanchor' disabled.\MessageBreak
- This will cause problems with hyperlinked back\MessageBreak
- references. 'pageanchor=true' is required}%
- \fi}
-
-\DeclareBibliographyOption[string]{block}{%
- \ifcsdef{blx@opt@block@#1}
- {\csuse{blx@opt@block@#1}}
- {\blx@err@invopt{block=#1}{}}}
-\def\blx@opt@block@none{%
- \let\blx@bibsetup\@empty
- \let\newblockpunct\@empty}
-\def\blx@opt@block@par{%
- \let\blx@bibsetup\@empty
- \def\newblockpunct{\par}}
-\def\blx@opt@block@nbpar{%
- \def\blx@bibsetup{\interlinepenalty\@M}%
- \def\newblockpunct{\par\nobreak}}
-\def\blx@opt@block@space{%
- \let\blx@bibsetup\@empty
- \def\newblockpunct{%
- \unspace\space
- \hskip 0.11em
- \@plus 0.33em
- \@minus 0.07em}}
-\def\blx@opt@block@ragged{%
- \let\blx@bibsetup\raggedright
- \def\newblockpunct{%
- \unspace\penalty-9\relax\space}}
-
-\DeclareBibliographyOption[boolean]{pagetracker}[true]{%
- \ifcsdef{blx@opt@pagetracker@#1}
- {\csuse{blx@opt@pagetracker@#1}}
- {\blx@err@invopt{pagetracker=#1}{}}}
-\def\blx@opt@pagetracker@true{%
- \if@twoside
- \blx@opt@pagetracker@spread
- \else
- \blx@opt@pagetracker@page
- \fi}
-\def\blx@opt@pagetracker@false{%
- \let\blx@pagetracker\relax
- \let\abx@aux@page\@gobbletwo
- \let\abx@aux@fnpage\@gobbletwo
- \boolfalse{pagetracker}}
-\def\blx@opt@pagetracker@page{%
- \let\blx@pagetracker\blx@pagetracker@context
- \let\abx@aux@page\blx@aux@page
- \let\abx@aux@fnpage\blx@aux@fnpage
- \booltrue{pagetracker}}
-\def\blx@opt@pagetracker@spread{%
- \if@twoside
- \let\blx@pagetracker\blx@pagetracker@context
- \let\abx@aux@page\blx@aux@spread
- \let\abx@aux@fnpage\blx@aux@fnspread
- \booltrue{pagetracker}%
- \else
- \blx@warning@noline{%
- LaTeX not in twoside mode\MessageBreak
- Falling back to 'pagetracker=page'}%
- \blx@opt@pagetracker@page
- \fi}
-
-\DeclareBibliographyOption[boolean]{citecounter}[true]{%
- \ifcsdef{blx@opt@citecounter@#1}
- {\csuse{blx@opt@citecounter@#1}}
- {\blx@err@invopt{citecounter=#1}{}}}
-\def\blx@opt@citecounter@true{%
- \let\blx@setcitecounter\blx@setcitecounter@global
- \let\blx@citecounter\blx@citecounter@global
- \let\abx@aux@count\blx@aux@count
- \let\abx@aux@fncount\blx@aux@fncount
- \booltrue{citetracker}}
-\def\blx@opt@citecounter@context{%
- \let\blx@setcitecounter\blx@setcitecounter@context
- \let\blx@citecounter\blx@citecounter@context
- \let\abx@aux@count\blx@aux@count
- \let\abx@aux@fncount\blx@aux@fncount
- \booltrue{citetracker}}
-\def\blx@opt@citecounter@false{%
- \let\blx@setcitecounter\relax
- \let\blx@citecounter\relax
- \let\abx@aux@count\@gobbletwo
- \let\abx@aux@fncount\@gobbletwo}
-
-\DeclareBibliographyOption[boolean]{citetracker}[true]{%
- \ifcsdef{blx@opt@citetracker@#1}
- {\csuse{blx@opt@citetracker@#1}}
- {\blx@err@invopt{citetracker=#1}{}}}
-\def\blx@opt@citetracker@true{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@global
- \let\blx@imc@ifentryseen\blx@ifentryseen@global
- \let\blx@citetracker\blx@citetracker@global
- \booltrue{citetracker}}
-\def\blx@opt@citetracker@false{%
- \let\blx@imc@ifciteseen\@secondoftwo
- \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}%
- \let\blx@citetracker\relax}
-\def\blx@opt@citetracker@context{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@context
- \let\blx@imc@ifentryseen\blx@ifentryseen@context
- \let\blx@citetracker\blx@citetracker@context
- \booltrue{citetracker}}
-\def\blx@opt@citetracker@strict{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@global
- \let\blx@imc@ifentryseen\blx@ifentryseen@global
- \def\blx@citetracker{%
- \blx@ifcitesingle{\blx@citetracker@global}{}}%
- \booltrue{citetracker}}
-\def\blx@opt@citetracker@constrict{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@context
- \let\blx@imc@ifentryseen\blx@ifentryseen@context
- \def\blx@citetracker{%
- \blx@ifcitesingle{\blx@citetracker@context}{}}%
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption[boolean]{ibidtracker}[true]{%
- \ifcsdef{blx@opt@ibidtracker@#1}
- {\csuse{blx@opt@ibidtracker@#1}}
- {\blx@err@invopt{ibidtracker=#1}{}}}
-\def\blx@opt@ibidtracker@true{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@global
- \let\blx@ibidtracker\blx@ibidtracker@global
- \let\blx@ibidreset\blx@ibidreset@global
- \booltrue{citetracker}}
-\def\blx@opt@ibidtracker@false{%
- \let\blx@imc@ifciteibid\@secondoftwo
- \let\blx@ibidtracker\relax
- \let\blx@ibidreset\relax}
-\def\blx@opt@ibidtracker@context{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@context
- \let\blx@ibidtracker\blx@ibidtracker@context
- \let\blx@ibidreset\blx@ibidreset@context
- \booltrue{citetracker}}
-\def\blx@opt@ibidtracker@strict{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@strict
- \let\blx@ibidtracker\blx@ibidtracker@strict
- \let\blx@ibidreset\blx@ibidreset@global
- \booltrue{citetracker}}
-\def\blx@opt@ibidtracker@constrict{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@constrict
- \let\blx@ibidtracker\blx@ibidtracker@constrict
- \let\blx@ibidreset\blx@ibidreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption[boolean]{idemtracker}[true]{%
- \ifcsdef{blx@opt@idemtracker@#1}
- {\csuse{blx@opt@idemtracker@#1}}
- {\blx@err@invopt{idemtracker=#1}{}}}
-\def\blx@opt@idemtracker@true{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@global
- \let\blx@idemtracker\blx@idemtracker@global
- \let\blx@idemreset\blx@idemreset@global
- \booltrue{citetracker}}
-\def\blx@opt@idemtracker@false{%
- \let\blx@imc@ifciteidem\@secondoftwo
- \let\blx@idemtracker\relax
- \let\blx@idemreset\relax}
-\def\blx@opt@idemtracker@context{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@context
- \let\blx@idemtracker\blx@idemtracker@context
- \let\blx@idemreset\blx@idemreset@context
- \booltrue{citetracker}}
-\def\blx@opt@idemtracker@strict{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@strict
- \let\blx@idemtracker\blx@idemtracker@strict
- \let\blx@idemreset\blx@idemreset@global
- \booltrue{citetracker}}
-\def\blx@opt@idemtracker@constrict{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@constrict
- \let\blx@idemtracker\blx@idemtracker@constrict
- \let\blx@idemreset\blx@idemreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption[boolean]{opcittracker}[true]{%
- \ifcsdef{blx@opt@opcittracker@#1}
- {\csuse{blx@opt@opcittracker@#1}}
- {\blx@err@invopt{opcittracker=#1}{}}}
-\def\blx@opt@opcittracker@true{%
- \let\blx@imc@ifopcit\blx@ifopcit@global
- \let\blx@opcittracker\blx@opcittracker@global
- \let\blx@opcitreset\blx@opcitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@opcittracker@false{%
- \let\blx@imc@ifopcit\@secondoftwo
- \let\blx@opcittracker\relax
- \let\blx@opcitreset\relax}
-\def\blx@opt@opcittracker@context{%
- \let\blx@imc@ifopcit\blx@ifopcit@context
- \let\blx@opcittracker\blx@opcittracker@context
- \let\blx@opcitreset\blx@opcitreset@context
- \booltrue{citetracker}}
-\def\blx@opt@opcittracker@strict{%
- \let\blx@imc@ifopcit\blx@ifopcit@strict
- \let\blx@opcittracker\blx@opcittracker@strict
- \let\blx@opcitreset\blx@opcitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@opcittracker@constrict{%
- \let\blx@imc@ifopcit\blx@ifopcit@constrict
- \let\blx@opcittracker\blx@opcittracker@constrict
- \let\blx@opcitreset\blx@opcitreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption[boolean]{loccittracker}[true]{%
- \ifcsdef{blx@opt@loccittracker@#1}
- {\csuse{blx@opt@loccittracker@#1}}
- {\blx@err@invopt{loccittracker=#1}{}}}
-\def\blx@opt@loccittracker@true{%
- \let\blx@imc@ifloccit\blx@ifloccit@global
- \let\blx@loccittracker\blx@loccittracker@global
- \let\blx@loccitreset\blx@loccitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@loccittracker@false{%
- \let\blx@imc@ifloccit\@secondoftwo
- \let\blx@loccittracker\relax
- \let\blx@loccitreset\relax}
-\def\blx@opt@loccittracker@context{%
- \let\blx@imc@ifloccit\blx@ifloccit@context
- \let\blx@loccittracker\blx@loccittracker@context
- \let\blx@loccitreset\blx@loccitreset@context
- \booltrue{citetracker}}
-\def\blx@opt@loccittracker@strict{%
- \let\blx@imc@ifloccit\blx@ifloccit@strict
- \let\blx@loccittracker\blx@loccittracker@strict
- \let\blx@loccitreset\blx@loccitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@loccittracker@constrict{%
- \let\blx@imc@ifloccit\blx@ifloccit@constrict
- \let\blx@loccittracker\blx@loccittracker@constrict
- \let\blx@loccitreset\blx@loccitreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption[boolean]{parentracker}[true]{%
- \ifstrequal{#1}{true}
- {\let\bibopenparen\blx@bibopenparen
- \let\bibcloseparen\blx@bibcloseparen
- \let\bibopenbracket\blx@bibopenbracket
- \let\bibclosebracket\blx@bibclosebracket}
- {\protected\def\bibopenparen{\bibleftparen}%
- \protected\def\bibcloseparen{\bibrightparen}%
- \protected\def\bibopenbracket{\bibleftbracket}%
- \protected\def\bibclosebracket{\bibrightbracket}}}
-
-\DeclareBibliographyOption[integer]{maxparens}{%
- \ifnumless{#1}{1}
- {\blx@err@invopt{maxparens=#1}{}}
- {\setcounter{maxparens}{#1}}}
-
-\DeclareBibliographyOption[string]{date}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}%
- \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}}
- {\blx@err@invopt{date=#1}{}}}
-
-\DeclareBibliographyOption[string]{datelabel}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printdatelabel{%
- \blx@imc@iffieldundef{year}
- {\csuse{mkbibrange#1}{label}}
- {\csuse{mkbibrange#1}{}}}%
- \protected\def\blx@imc@printdateextralabel{%
- \blx@imc@iffieldundef{year}
- {\csuse{mkbibrange#1extra}{label}}
- {\csuse{mkbibrange#1extra}{}}}}
- {\blx@err@invopt{datelabel=#1}{}}}
-
-\DeclareBibliographyOption[string]{urldate}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}}
- {\blx@err@invopt{urldate=#1}{}}}
-
-\DeclareBibliographyOption[string]{eventdate}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}}
- {\blx@err@invopt{eventdate=#1}{}}}
-
-\DeclareBibliographyOption[string]{origdate}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}}
- {\blx@err@invopt{origdate=#1}{}}}
-
-\DeclareBibliographyOption[string]{alldates}{%
- \ExecuteBibliographyOptions{%
- date=#1,datelabel=#1,urldate=#1,eventdate=#1,origdate=#1}}
-
-\DeclareBibliographyOption[boolean]{datezeros}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@imc@mkdatezeros\@firstofone}
- {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}}
-
-\DeclareBibliographyOption[string]{autocite}{%
- \ifcsundef{blx@acite@#1}
- {\blx@error
- {Autocite command '#1' undefined}
- {The autocite command '#1' has not been defined by
- the\MessageBreak selected citation style}}
- {\letcs\autocite{blx@acite@#1}%
- \letcs\autocites{blx@macite@#1}}}
-
-\DeclareBibliographyOption[string]{notetype}{%
- \ifcsdef{blx@opt@notetype@#1}
- {\blx@notetype\csuse{blx@opt@notetype@#1}}
- {\blx@err@invopt{notetype=#1}{}}}
-\cslet{blx@opt@notetype@foot+end}\z@
-\let\blx@opt@notetype@footonly\@ne
-\let\blx@opt@notetype@endonly\tw@
-
-\DeclareBibliographyOption[boolean]{autopunct}[true]{%
- \ifstrequal{#1}{true}
- {\DeclareAutoPunctuation{.,;:!?}}
- {\DeclareAutoPunctuation{}}}
-
-\DeclareBibliographyOption[boolean]{punctfont}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@ifpuncthook\@firstoftwo}
- {\let\blx@ifpuncthook\@secondoftwo}}
-
-\DeclareBibliographyOption[boolean]{labelnumber}[true]{%
- \settoggle{blx@labelnumber}{#1}%
- \iftoggle{blx@labelnumber}
- {}
- {\setkeys{blx@opt@pre}{defernumbers=false}}}
-\DeclareTypeOption[boolean]{labelnumber}[true]{%
- \settoggle{blx@labelnumber}{#1}}
-
-\DeclareBibliographyOption[boolean]{labelalpha}[true]{%
- \settoggle{blx@labelalpha}{#1}}
-\DeclareTypeOption[boolean]{labelalpha}[true]{%
- \settoggle{blx@labelalpha}{#1}}
-
-\DeclareBibliographyOption[boolean]{labeltitle}[true]{%
- \settoggle{blx@labeltitle}{#1}}
-\DeclareTypeOption[boolean]{labeltitle}[true]{%
- \settoggle{blx@labeltitle}{#1}}
-
-\DeclareBibliographyOption[boolean]{labeltitleyear}[true]{%
- \settoggle{blx@labeltitleyear}{#1}}
-\DeclareTypeOption[boolean]{labeltitleyear}[true]{%
- \settoggle{blx@labeltitleyear}{#1}}
-
-\DeclareBibliographyOption[boolean]{labeldate}[true]{%
- \settoggle{blx@labeldate}{#1}}
-\DeclareTypeOption[boolean]{labeldate}[true]{%
- \settoggle{blx@labeldate}{#1}}
-
-\DeclareBibliographyOption[boolean]{labelyear}[true]{%
- \blx@warning@noline{%
- 'labelyear' option is deprecated, use 'labeldate' instead}%
- \settoggle{blx@labeldate}{#1}}
-\DeclareTypeOption[boolean]{labelyear}[true]{%
- \blx@warning@noline{%
- 'labelyear' option is deprecated, use 'labeldate' instead}%
- \settoggle{blx@labeldate}{#1}}
-
-\DeclareBibliographyOption[boolean]{uniquelist}[true]{%
- \ifcsdef{blx@opt@uniquelist@#1}
- {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
- {\blx@err@invopt{uniquelist=#1}{}}}
-\DeclareTypeOption[boolean]{uniquelist}[true]{%
- \ifcsdef{blx@opt@uniquelist@#1}
- {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
- {\blx@err@invopt{uniquelist=#1}{}}}
-\DeclareEntryOption[boolean]{uniquelist}[true]{%
- \ifcsdef{blx@opt@uniquelist@#1}
- {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
- {\blx@err@invopt{uniquelist=#1}{}}}
-\def\blx@opt@uniquelist@false{0}
-\def\blx@opt@uniquelist@true{1}
-\def\blx@opt@uniquelist@minyear{2}
-
-\DeclareBibliographyOption[boolean]{uniquename}[true]{%
- \ifcsdef{blx@opt@uniquename@#1}
- {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
- {\blx@err@invopt{uniquename=#1}{}}}
-\DeclareTypeOption[boolean]{uniquename}[true]{%
- \ifcsdef{blx@opt@uniquename@#1}
- {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
- {\blx@err@invopt{uniquename=#1}{}}}
-\DeclareEntryOption[boolean]{uniquename}[true]{%
- \ifcsdef{blx@opt@uniquename@#1}
- {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
- {\blx@err@invopt{uniquename=#1}{}}}
-\def\blx@opt@uniquename@false{0}
-\def\blx@opt@uniquename@init{1}
-\def\blx@opt@uniquename@true{2}
-\def\blx@opt@uniquename@full{2}
-\def\blx@opt@uniquename@allinit{3}
-\def\blx@opt@uniquename@allfull{4}
-\def\blx@opt@uniquename@mininit{5}
-\def\blx@opt@uniquename@minfull{6}
-
-\DeclareBibliographyOption[boolean]{singletitle}[true]{%
- \settoggle{blx@singletitle}{#1}}
-\DeclareTypeOption[boolean]{singletitle}[true]{%
- \settoggle{blx@singletitle}{#1}}
-
-\DeclareBibliographyOption[boolean]{defernumbers}[true]{%
- \settoggle{blx@defernumbers}{#1}%
- \iftoggle{blx@defernumbers}
- {\setkeys{blx@opt@pre}{labelnumber}%
- \let\blx@thelabelnumber\blx@addlabelnumber
- \let\abx@aux@number\blx@aux@number}
- {\let\blx@thelabelnumber\relax
- \let\abx@aux@number\@gobblefive}}
-
-\DeclareBibliographyOption[string]{refsection}{%
- \ifcsdef{blx@opt@refsection@#1}
- {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}}
- {\blx@err@invopt{refsection=#1}{}}}
-\def\blx@opt@refsection@none{0}
-\def\blx@opt@refsection@part{1}
-\def\blx@opt@refsection@chapter{2}
-\def\blx@opt@refsection@section{3}
-\def\blx@opt@refsection@subsection{4}
-
-\AtEndPreamble{%
- \ifcase\blx@refsecreset@level
- \or % 1
- \blx@refpatch@part\newrefsection
- \or % 2
- \blx@refpatch@chapter\newrefsection
- \or % 3
- \blx@refpatch@sect{section}{\newrefsection}{1}%
- \or % 4
- \blx@refpatch@sect{subsection}{\newrefsection}{2}%
- \fi}
-
-\DeclareBibliographyOption[string]{refsegment}{%
- \ifcsdef{blx@opt@refsegment@#1}
- {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}}
- {\blx@err@invopt{refsegment=#1}{}}}
-\def\blx@opt@refsegment@none{0}
-\def\blx@opt@refsegment@part{1}
-\def\blx@opt@refsegment@chapter{2}
-\def\blx@opt@refsegment@section{3}
-\def\blx@opt@refsegment@subsection{4}
-
-\AtEndPreamble{%
- \ifnumgreater\blx@refsegreset@level\z@
- {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level
- {}
- {\blx@err@confopt
- {refsegment/refsection}
- {The 'refsegment' option must point to a
- lower-level\MessageBreak document division
- than 'refsection'}%
- \def\blx@refsegreset@level{0}}}
- {}%
- \ifcase\blx@refsegreset@level
- \or % 1
- \blx@refpatch@part\newrefsegment
- \or % 2
- \blx@refpatch@chapter\newrefsegment
- \or % 3
- \blx@refpatch@sect{section}{\newrefsegment}{1}%
- \or % 4
- \blx@refpatch@sect{subsection}{\newrefsegment}{2}%
- \fi}
-
-\DeclareBibliographyOption[string]{citereset}{%
- \ifcsdef{blx@opt@citereset@#1}
- {\letcs\blx@citereset@level{blx@opt@citereset@#1}}
- {\blx@err@invopt{citereset=#1}{}}}
-\def\blx@opt@citereset@none{0}
-\def\blx@opt@citereset@part{1}
-\def\blx@opt@citereset@chapter{2}
-\def\blx@opt@citereset@section{3}
-\def\blx@opt@citereset@subsection{4}
-
-\AtEndPreamble{%
- \ifcase\blx@citereset@level
- \or % 1
- \blx@refpatch@part{\citereset\blx@inf@creset}%
- \or % 2
- \blx@refpatch@chapter{\citereset\blx@inf@creset}%
- \or % 3
- \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}%
- \or % 4
- \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}%
- \fi}
-
-\DeclareBibliographyOption[boolean]{bibwarn}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@bbl@thewarn\blx@bbl@warn}
- {\let\blx@bbl@thewarn\@gobble}}
-
-% Name field options
-\def\do#1{%
- \DeclareBibliographyOption[boolean]{use#1}[true]{%
- \settoggle{blx@use#1}{##1}}
- \DeclareTypeOption[boolean]{use#1}[true]{%
- \settoggle{blx@use#1}{##1}}
- \DeclareEntryOption[boolean]{use#1}[true]{%
- \settoggle{blx@use#1}{##1}}}
-\dolistcsloop{blx@biber@datamodel@names}
-
-% Entry options
-\DeclareBibliographyOption[boolean]{useprefix}[true]{%
- \settoggle{blx@useprefix}{#1}}
-\DeclareTypeOption[boolean]{useprefix}[true]{%
- \settoggle{blx@useprefix}{#1}}
-\DeclareEntryOption[boolean]{useprefix}[true]{%
- \settoggle{blx@useprefix}{#1}}
-
-\DeclareTypeOption[boolean]{skipbib}[true]{%
- \settoggle{blx@skipbib}{#1}}
-\DeclareEntryOption[boolean]{skipbib}[true]{%
- \settoggle{blx@skipbib}{#1}}
-
-\DeclareTypeOption[boolean]{skiplos}{%
- \blx@warning@noline{%
- skiplos option is deprecated, use 'skipbiblist' instead}%
- \settoggle{blx@skipbiblist}{#1}}
-\DeclareEntryOption[boolean]{skiplos}{%
- \blx@warning@noline{%
- skiplos option is deprecated, use 'skipbiblist' instead}%
- \settoggle{blx@skipbiblist}{#1}}
-
-\DeclareTypeOption[boolean]{skipbiblist}[true]{%
- \settoggle{blx@skipbiblist}{#1}}
-\DeclareEntryOption[boolean]{skipbiblist}[true]{%
- \settoggle{blx@skipbiblist}{#1}}
-
-\DeclareTypeOption[boolean]{skiplab}[true]{%
- \settoggle{blx@skiplab}{#1}}
-\DeclareEntryOption[boolean]{skiplab}[true]{%
- \settoggle{blx@skiplab}{#1}}
-
-\DeclareTypeOption[boolean]{dataonly}[true]{%
- \settoggle{blx@skipbib}{#1}%
- \settoggle{blx@skipbiblist}{#1}%
- \settoggle{blx@skiplab}{#1}}
-\DeclareEntryOption[boolean]{dataonly}[true]{%
- \settoggle{blx@skipbib}{#1}%
- \settoggle{blx@skipbiblist}{#1}%
- \settoggle{blx@skiplab}{#1}}
-
-% Option processor/scheduler
-\DeclareOption*{%
- \begingroup
- \def\blx@tempa#1=#2&{#1}%
- \edef\blx@tempa{%
- \expandafter\blx@tempa\CurrentOption=&}%
- \ifcsundef{KV@blx@opt@ldt@\blx@tempa}
- {\endgroup
- \eappto\blx@theoptions{\CurrentOption,}}
- {\edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}%
- \blx@tempa}}
-
-\def\blx@processoptions{%
- \ifundef\blx@theoptions
- {}
- {\begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}%
- \blx@tempa}}
-
-%% Initial setup
-
-% Set defaults
-
-\setkeys{blx@opt@ldt}{style=numeric}
-\setkeys{blx@opt@pre}{%
- sorting=nty,sortlocale=auto,sortcase,sortupper,sortcites=false,
- maxnames=3,minnames=1,maxalphanames=3,minalphanames=1,
- maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true,
- usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true,
- backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false,
- idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false,
- citecounter=false,block=none,language=autobib,clearlang=true,autolang=none,
- date=comp,datelabel=year,origdate=comp,eventdate=comp,urldate=short,
- autopunct=true,punctfont=false,defernumbers=false,
- refsection=none,refsegment=none,citereset=none,hyperref=auto,
- parentracker,maxparens=3,bibencoding=auto,bibwarn}
-
-% Load compatibility code
-
-\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{}
-
-% Restore catcodes
-
-\blx@catcodes
-\undef\blx@catcodes
-
-% Process load-time options
-
-\ProcessOptions*
-
-% Load citation and bibliography styles, configuration file
-
-\blx@inputonce{biblatex_.def}{generic definitions}{}{}{}{}
-\iftoggle{blx@natbib}
- {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}}
- {}
-\iftoggle{blx@mcite}
- {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}}
- {}
-\RequireBibliographyStyle{\blx@bbxfile}
-\RequireCitationStyle{\blx@cbxfile}
-\blx@secinit
-\citereset
-\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{}
-
-% Process preamble options
-
-\blx@processoptions
-
-% Deferred setup at end of preamble
-
-\AtEndPreamble{%
- \blx@checkoptions@global
- \c@maxnames\blx@maxcitenames\relax
- \c@minnames\blx@mincitenames\relax
- \c@maxitems\blx@maxitems\relax
- \c@minitems\blx@minitems\relax
- \iftoggle{blx@giveninits}
- {\ifnumequal\blx@uniquename\blx@opt@uniquename@full
- {\blx@warn@conflopt{%
- 'giveninits' conflicts with 'uniquename=full'.\MessageBreak
- Setting 'uniquename=init'}%
- \setkeys{blx@opt@pre}{uniquename=init}}
- {}%
- \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull
- {\blx@warn@conflopt{%
- 'giveninits' conflicts with 'uniquename=allfull'.\MessageBreak
- Setting 'uniquename=allinit}%
- \setkeys{blx@opt@pre}{uniquename=allinit}}
- {}%
- \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull
- {\blx@warn@conflopt{%
- 'giveninits' conflicts with 'uniquename=minfull'.\MessageBreak
- Setting 'uniquename=mininit}%
- \setkeys{blx@opt@pre}{uniquename=mininit}}
- {}}
- {}%
- \nottoggle{blx@labeldate}
- {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear
- {\blx@warn@conflopt{%
- 'uniquelist=minyear' requires 'labeldate'.\MessageBreak
- Setting 'uniquelist=true'}%
- \setkeys{blx@opt@pre}{uniquelist}}
- {}}
- {}}
-
-\def\blx@checkencoding{%
- \ifdef\blx@texencoding
- {\blx@info@noline{%
- Input encoding '\blx@texencoding' specified}}
- {\ifundef\inputencodingname
- {\ifundef\XeTeXrevision
- {\ifundef\luatexversion
- {\def\blx@texencoding{ascii}%
- \blx@info@noline{%
- No input encoding detected.\MessageBreak
- Assuming '\blx@texencoding'}}
- {\def\blx@texencoding{utf8}%
- \blx@info@noline{%
- LuaTeX detected.\MessageBreak
- Assuming input encoding '\blx@texencoding'}}}
- {\def\blx@texencoding{utf8}%
- \blx@info@noline{%
- XeTeX detected.\MessageBreak
- Assuming input encoding '\blx@texencoding'}}}
- {\ifcsdef{blx@inpenc@\inputencodingname}
- {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}}
- {\let\blx@texencoding\inputencodingname}%
- \blx@info@noline{%
- Input encoding '\blx@texencoding' detected}}}%
- \ifdef\blx@bibencoding
- {\ifdefstring\blx@bibencoding{ascii}
- {\blx@info@noline{%
- Data encoding '\blx@bibencoding' specified.\MessageBreak
- No need to reencode data}}
- {\ifdefstring\blx@bibencoding{auto}
- {\let\blx@bibencoding\blx@texencoding
- \blx@info@noline{%
- Automatic encoding selection.\MessageBreak
- Assuming data encoding '\blx@bibencoding'}}
- {\ifdefstrequal\blx@bibencoding\blx@texencoding
- {\blx@info@noline{%
- Data encoding '\blx@bibencoding' specified.\MessageBreak
- No need to reencode data}}
- {\blx@info@noline{%
- Data encoding '\blx@bibencoding' specified.\MessageBreak
- Backend will reencode on the fly}}}}}
- {\def\blx@bibencoding{ascii}%
- \blx@info@noline{%
- Data encoding not specified.\MessageBreak
- Assuming '\blx@bibencoding'}}%
- \ifboolexpr{%
- togl {blx@safeinputenc}
- and ( test {\@ifpackageloaded{inputenc}}
- or
- test {\@ifpackageloaded{inputenx}} )
- }
- {\def\blx@texencoding{ascii}%
- \blx@info@noline{%
- Input encoding '\blx@texencoding' forced by\MessageBreak
- 'safeinputenc' option}}
- {}%
-}
-
-
-% Deferred last minute setup
-
-\AtBeginDocument{%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@sorting}}%
- \def\do#1{%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@sortnamekeyscheme{#1}}}
- \dolistloop\blx@sortnamekeyschemes
- \blx@checkencoding
- \if@filesw
- \blx@ctrlwrite@biber
- \blx@bblinput
- \blx@maxsection\z@
- \fi
- \csuse{abx@preamble}%
- \blx@inf@refsec
- \blx@inf@refseg}
-
-\AtEndOfPackage{%
- % Data model macros are forbidden after package load is finished
- \def\blx@warn@dm#1{\blx@warning@noline{Data model macro '#1' cannot be used in preamble}}
- \def\ResetDatamodelEntrytypes{\blx@warn@dm{ResetDatamodelEntrytypes}}
- \def\ResetDatamodelFields{\blx@warn@dm{ResetDatamodelFields}}
- \def\ResetDatamodelEntryfields{\blx@warn@dm{ResetDatamodelEntryfields}}
- \def\ResetDatamodelConstraints{\blx@warn@dm{ResetDatamodelConstraints}}
- \renewcommand*{\DeclareDatamodelEntrytypes}[2][]{\blx@warn@dm{DeclareDatamodelEntrytypes}}
- \renewcommand*{\DeclareDatamodelFields}[2][]{\blx@warn@dm{DeclareDatamodelFields}}
- \renewcommand*{\DeclareDatamodelEntryfields}[2][]{\blx@warn@dm{DeclareDatamodelEntryfields}}
- \renewcommand*{\DeclareDatamodelConstraints}[2][]{\blx@warn@dm{DeclareDatamodelConstraints}}
- \renewcommand*{\DeclareDatamodelConstant}[3][]{\blx@warn@dm{DeclareDatamodelConstant}}
- \AtBeginDocument{%
- \let\do\undef
- \blx@dopreamblecmds
- \let\do\noexpand}}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def b/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def
deleted file mode 100644
index 602e84205f1..00000000000
--- a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.def
+++ /dev/null
@@ -1,2262 +0,0 @@
-% -*- mode: LaTeX -*-
-\ProvidesFile{biblatex_legacy.def}
-
-% ------------------------------------------------------------------
-% FORMATTING COMMANDS
-% ------------------------------------------------------------------
-
-% Generic formatting commands and hooks
-% ------------------------------------------------------------------
-
-% Used in citations, bibliography and bibliography lists
-
-\newcommand*{\mkbibnamegiven}[1]{#1}
-\newcommand*{\mkbibnamefirst}[1]{#1}% legacy alias
-\newcommand*{\mkbibnamefamily}[1]{#1}
-\newcommand*{\mkbibnamelast}[1]{#1}% legacy alias
-\newcommand*{\mkbibnameprefix}[1]{#1}
-\newcommand*{\mkbibnameaffix}[1]{#1}
-\newcommand*{\bibellipsis}{[\textellipsis\unkern]\midsentence}
-
-% Delimiters used in citations, bibliography and bibliography lists
-
-\newcommand*{\multinamedelim}{\addcomma\space}
-\newcommand*{\finalnamedelim}{%
- \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
- \addspace\bibstring{and}\space}
-\newcommand*{\revsdnamedelim}{}
-\newcommand*{\andothersdelim}{\addspace}
-
-\newcommand*{\multilistdelim}{\addcomma\space}
-\newcommand*{\finallistdelim}{%
- \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
- \addspace\bibstring{and}\space}
-\newcommand*{\andmoredelim}{\addspace}
-
-% Used in citations
-
-\newcommand*{\multicitedelim}{\addsemicolon\space}
-\newcommand*{\compcitedelim}{\addcomma\space}
-\newcommand*{\supercitedelim}{\addcomma}
-\newcommand*{\prenotedelim}{\addspace}
-\newcommand*{\postnotedelim}{\addcomma\space}
-\newcommand*{\extpostnotedelim}{\addspace}
-\newcommand*{\nametitledelim}{\addcomma\space}
-\newcommand*{\nameyeardelim}{\addspace}
-\newcommand*{\nonameyeardelim}{\addspace}
-\newcommand*{\volcitedelim}{\addcomma\space}
-\newcommand*{\textcitedelim}{%
- \iffinalcitedelim
- {\ifnumgreater{\value{textcitetotal}}{2}
- {\iftextcitepunct{\finalandsemicolon}{\finalandcomma}}{}%
- \addspace\bibstring{and}}
- {\iftextcitepunct{\addsemicolon}{\addcomma}}%
- \space}
-
-% This is a provisional definition for \iffinalcitedelim{<true>}{<false>}, a
-% test that should expand <true> if the next non-compact citation delimiter
-% is the last one in the citation list printed by \textcite or \textcites.
-\newcommand*{\iffinalcitedelim}{\@secondoftwo}
-
-% Expand <true> if the citation labels in the citation list printed by \textcite
-% or \textcites contains the serial comma \finalandcomma
-\newcommand*{\iftextcitepunct}{%
- \ifboolexpr{ not test {\ifdefempty{\finalandsemicolon}}
- and test {\ifnumgreater{\value{textcitemaxnames}}{2}} }}
-
-% Counters for the number of citation labels separated by non-compact delimiters
-% in the citation list printed by \textcite or \textcites. Counter values should
-% be managed by the citation style.
-\newcounter{textcitecount}
-\newcounter{textcitetotal}
-\setcounter{textcitecount}{0}
-\setcounter{textcitetotal}{0}
-
-% Counters for the maximum number of names among citation labels in the citation
-% list printed by \textcite or \textcites. Counter value should be managed by
-% the citation style.
-\newcounter{textcitemaxnames}
-\setcounter{textcitemaxnames}{0}
-
-% Used in the bibliography and bibliography lists
-
-\newcommand*{\newunitpunct}{\addperiod\space}
-\newcommand*{\entrysetpunct}{\addsemicolon\space}
-\newcommand*{\finentrypunct}{\addperiod}
-\newcommand*{\labelnamepunct}{\newunitpunct}
-\newcommand*{\subtitlepunct}{\newunitpunct}
-\newcommand*{\intitlepunct}{\addcolon\space}
-\newcommand*{\bibpagespunct}{\addcomma\space}
-\newcommand*{\bibpagerefpunct}{\addspace}
-\newcommand*{\revsdnamepunct}{\addcomma}
-\newcommand*{\bibnamedash}{%
- \ifdimless{\leftmargin}{0.75em}
- {\mbox{\textemdash\space}}
- {\makebox[\leftmargin][l]{%
- \ifdimless{\leftmargin}{1.25em}
- {\textendash}
- {\textemdash}}}}
-\newcommand*{\relatedpunct}{\addspace}
-\newcommand*{\relateddelim}{\adddot\par\nobreak}
-\newcommand{\mkrelatedstring}{\mainlang}
-
-% Used for indexing
-
-\newcommand*{\bibindexnamedelima}{ }
-\newcommand*{\bibindexnamedelimb}{ }
-\newcommand*{\bibindexnamedelimc}{ }
-\newcommand*{\bibindexnamedelimd}{ }
-\newcommand*{\bibindexnamedelimi}{ }
-\newcommand*{\bibindexinitperiod}{.}
-\newcommand*{\bibindexinitdelim}{ }
-\newcommand*{\bibindexinithyphendelim}{.-}
-
-% \bibsetup is a generic hook controlling the (low-level) layout of
-% the bibliography and bibliography lists. The default
-% definition should work fine in most cases.
-
-\newcommand*{\bibsetup}{%
- \interlinepenalty=5000\relax
- \widowpenalty=10000\relax
- \clubpenalty=10000\relax
- \raggedbottom
- \frenchspacing
- \biburlsetup}
-
-% The penalties above are not specific to biblatex. These are
-% low-level TeX features. \interlinepenalty is the penalty assigned
-% to page breaks within a paragraph (i.e., in this case, a
-% bibliography entry); \clubpenalty is an additional penalty
-% assigned to page breaks after the first line of a paragraph;
-% \widowpenalty is an additional penalty assigned to page breaks
-% before the last line of a paragraph. Note that the value 10000
-% means 'infinite' as far as TeX is concerned. Setting a penalty to
-% 10000 will unconditionally suppress the respective breakpoint.
-%
-% The net effect of the above settings is as follows. Breaking a
-% bibliography entry across pages is discouraged, but not suppressed
-% altogether. If a bibliography entry spans less than four lines,
-% TeX will always keep it on one page. If it spans four or more
-% lines, it may be broken across pages, provided that there are at
-% least two lines on the page before and after the break.
-%
-% These penalties should normally be used in conjunction with
-% \raggedbottom. If you don't like that and remove \raggedbottom
-% from the definition of \bibsetup, make sure to provide some
-% stretchability between bibliography entries by setting \bibitemsep
-% to a suitable value, e.g.:
-%
-% \setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
-%
-% Using \frenchspacing in the bibliography is recommended. If you
-% want more visual separation, try the package option 'block=space'.
-% This will yield better results than \nonfrenchspacing.
-
-% \citesetup is a generic hook for citations.
-
-\newcommand*{\citesetup}{%
- \biburlsetup}
-
-% Local setup for \url; see comments in url.sty for details.
-
-\newcounter{biburlnumpenalty}
-\newcounter{biburlucpenalty}
-\newcounter{biburllcpenalty}
-
-\newcommand*{\biburlsetup}{%
- \Urlmuskip=0mu plus 3mu\relax
- \mathchardef\UrlBigBreakPenalty=100\relax
- \mathchardef\UrlBreakPenalty=200\relax
- \def\UrlBigBreaks{\do\:\do\-}%
- \def\UrlBreaks{%
- \do\.\do\@\do\/\do\\\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\}%
- \do\,\do\?\do\'\do\+\do\=\do\#\do\$\do\&\do\*\do\^\do\"}%
- \ifnumgreater{\value{biburlnumpenalty}}{0}
- {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlnumpenalty}}}}%
- \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
- {}%
- \ifnumgreater{\value{biburlucpenalty}}{0}
- {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlucpenalty}}}}%
- \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J
- \do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T
- \do\U\do\V\do\W\do\X\do\Y\do\Z}
- {}%
- \ifnumgreater{\value{biburllcpenalty}}{0}
- {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburllcpenalty}}}}%
- \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
- \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t
- \do\u\do\v\do\w\do\x\do\y\do\z}
- {}%
- \let\do=\noexpand}
-
-% The above code allows linebreaks before numbers and letters.
-% This is often the only way to break DOIs. It also allows breaks
-% after hyphens and adjusts \Urlmuskip to add some stretchability
-% to URLs.
-
-% The default font of the bibliography and the bibliography lists.
-% We simply reset the current font to the global defaults.
-
-\newcommand*{\bibfont}{\normalfont\normalsize}
-
-% Some length registers which may be used to fine-tune the
-% (high-level) layout of the bibliography.
-
-% Default \bibhang to 1em if \parindent is 0 for some reason
-\setlength{\bibhang}{\ifnumequal{\parindent}{0}{1em}{\parindent}}
-\setlength{\biblabelsep}{2\labelsep}
-\setlength{\bibitemsep}{\itemsep}
-\setlength{\bibnamesep}{0pt}
-\setlength{\bibinitsep}{0pt}
-\setlength{\bibparsep}{0pt}
-
-% Miscellaneous facilities
-% ------------------------------------------------------------------
-
-% The counter 'abbrvpenalty' holds the penalty used in short or
-% abbreviated bibliography strings. For example, a linebreak in
-% expressions such as "et al." or "ed. by" is unfortunate, but should
-% still be possible to prevent overfull boxes. We use TeX's
-% \hyphenpenalty (normally 50) as the default value. The idea is
-% making TeX treat the whole expression as if it were a single,
-% hyphenatable word as far as line-breaking is concerned. If you
-% dislike such linebreaks, use a higher value. If you do not mind
-% them at all, set this counter to zero. If you want to suppress them
-% unconditionally, set it to 10000.
-\defcounter{abbrvpenalty}{\hyphenpenalty}
-
-% The counter 'highnamepenalty' also holds a penalty affecting the
-% line-breaking of names. This penalty is inserted between smaller
-% chunks of a name, for example between the first and the middle
-% name. The default value is \hyphenpenalty. If you dislike such
-% linebreaks, use a higher value. If you do not mind them at all,
-% set this counter to zero. If you prefer the traditional BibTeX
-% behavior, set it to 10000.
-\defcounter{highnamepenalty}{\hyphenpenalty}
-
-% The counter 'lownamepenalty' holds a penalty which affects the
-% line-breaking of names. This penalty is inserted between larger
-% chunks of a name, for example between the chunk consisting of all
-% first names and the last name. The default value is half the
-% \hyphenpenalty. If you dislike such linebreaks, use a higher
-% value. If you do not mind them at all, set this counter to zero.
-\defcounter{lownamepenalty}{\hyphenpenalty/2}
-
-% Note that default values assigned to the above counters are
-% deliberately very low to prevent overfull boxes. This implies that
-% you will hardly notice any effect on line-breaking if the text is
-% set justified. If you set these counters to 10000 to suppress the
-% respective breakpoints, you will notice their effect but you may
-% also be confronted with overfull boxes. Keep in mind that
-% line-breaking in the bibliography is often more difficult than in
-% the body text and that you can not resort to rephrasing a
-% sentence. In some cases it may be preferable to set the entire
-% bibliography \raggedright (by modifying \bibsetup) to prevent
-% suboptimal linebreaks. In this case, even the very low default
-% penalties will make a visible difference.
-
-% File name prefixes for external abstracts and annotations
-\newcommand*{\bibabstractprefix}{bibabstract-}
-\newcommand*{\bibannotationprefix}{bibannotation-}
-
-% Print acronyms in small caps if possible
-\newcommand*{\mkbibacro}[1]{%
- \ifcsundef{\f@encoding/\f@family/\f@series/sc}
- {#1}
- {\textsc{\MakeLowercase{#1}}}}
-
-% ------------------------------------------------------------------
-% ADDITIONAL PACKAGE OPTIONS
-% ------------------------------------------------------------------
-
-% Style of compressed page ranges in back references
-
-\DeclareBibliographyOption[string]{backrefstyle}{%
- \ifcsdef{abx@opt@pagerefstyle@#1}
- {\letcs\abx@pagerefstyle{abx@opt@pagerefstyle@#1}}
- {\PackageError{biblatex}
- {Option 'backrefstyle=#1' invalid}
- {The option you have supplied is invalid.\MessageBreak
- See the biblatex manual for valid option keys
- and possible values}}}
-\newcommand*{\abx@pagerefstyle}{1}
-\csdef{abx@opt@pagerefstyle@none}{-1}
-\csdef{abx@opt@pagerefstyle@two}{0}
-\csdef{abx@opt@pagerefstyle@three}{1}
-\csdef{abx@opt@pagerefstyle@two+}{2}
-\csdef{abx@opt@pagerefstyle@three+}{3}
-\csdef{abx@opt@pagerefstyle@all+}{4}
-
-% arXiv path/format selector
-%
-% abs = abstract page
-% ps = PostScript version
-% pdf = PDF version
-% format = format selector
-
-\DeclareBibliographyOption[string]{arxiv}{\def\abx@arxivpath{#1}}
-\newcommand*{\abx@arxivpath}{abs}
-
-% ------------------------------------------------------------------
-% FIELD FORMATS (#1 is the value of the field)
-% ------------------------------------------------------------------
-
-% The fallback used by \printfield
-
-\DeclareFieldFormat{default}{#1}
-
-% The default used by \citefield
-
-\DeclareFieldFormat{citefield}{#1}
-
-% Used in citations
-
-\DeclareFieldFormat{citetitle}{\mkbibemph{#1}}
-\DeclareFieldFormat
- [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
- {citetitle}{\mkbibquote{#1\isdot}}
-\DeclareFieldFormat
- [suppbook,suppcollection,suppperiodical]
- {citetitle}{#1}
-% labelyear can be a localisation string to allow for "no date" etc.
-\DeclareFieldFormat{labelyear}{% = the '1995' part in 'Jones 1995a'
- \ifbibstring{#1}{\bibstring{#1}}{\stripzeros{#1}}}
-\DeclareFieldFormat{extrayear}{% = the 'a' in 'Jones 1995a'
- \iffieldnums{labelyear}
- {\mknumalph{#1}}
- {\mkbibparens{\mknumalph{#1}}}}
-\DeclareFieldFormat{labelalpha}{#1}% = the 'Jon95' part of 'Jon95a'
-\DeclareFieldFormat{extraalpha}{\mknumalph{#1}}% = the 'a' in 'Jon95a'
-\DeclareFieldFormat{shorthand}{#1\isdot}
-\DeclareFieldFormat{shorthandintro}{%
- \ifcapital{\MakeCapital{#1}}{#1}\isdot}
-% citation commands
-\DeclareFieldFormat{prenote}{#1\isdot}
-\DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}}
-\DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1}
-\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}}
-\DeclareFieldFormat{volcitenote}{\mkvolcitenote#1}
-\newrobustcmd*{\mkvolcitenote}[2]{%
- \printtext[volcitevolume]{#1}%
- \ifblank{#2}{}{\volcitedelim\printtext[volcitepages]{#2}}}
-
-% multicite commands
-\DeclareFieldFormat{multiprenote}{#1\isdot}
-\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}}
-
-% Used by \citeurl
-
-\DeclareFieldFormat{citeurl}{\url{#1}}
-
-% Used in the bibliography and bibliography lists
-
-\DeclareFieldFormat{doi}{%
- \mkbibacro{DOI}\addcolon\space
- \ifhyperref
- {\href{http://dx.doi.org/#1}{\nolinkurl{#1}}}
- {\nolinkurl{#1}}}
-\DeclareFieldFormat{edition}{%
- \ifinteger{#1}
- {\mkbibordedition{#1}~\bibstring{edition}}
- {#1\isdot}}
-\DeclareFieldFormat{eprint}{%
- \iffieldundef{eprinttype}
- {eprint}
- {\thefield{eprinttype}}%
- \addcolon\space
- \ifhyperref
- {\url{#1}}
- {\nolinkurl{#1}}%
- \iffieldundef{eprintclass}
- {}
- {\addspace\mkbibparens{\thefield{eprintclass}}}}
-\DeclareFieldFormat{eprint:hdl}{%
- HDL\addcolon\space
- \ifhyperref
- {\href{http://hdl.handle.net/#1}{\nolinkurl{#1}}}
- {\nolinkurl{#1}}}
-\DeclareFieldAlias{eprint:HDL}{eprint:hdl}
-\DeclareFieldFormat{eprint:arxiv}{%
- arXiv\addcolon\space
- \ifhyperref
- {\href{http://arxiv.org/\abx@arxivpath/#1}{%
- \nolinkurl{#1}%
- \iffieldundef{eprintclass}
- {}
- {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}}
- {\nolinkurl{#1}
- \iffieldundef{eprintclass}
- {}
- {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}}
-\DeclareFieldAlias{eprint:arXiv}{eprint:arxiv}
-\DeclareFieldFormat{eprint:jstor}{%
- JSTOR\addcolon\space
- \ifhyperref
- {\href{http://www.jstor.org/stable/#1}{\nolinkurl{#1}}}
- {\nolinkurl{#1}}}
-\DeclareFieldAlias{eprint:JSTOR}{eprint:jstor}
-\DeclareFieldFormat{eprint:pubmed}{%
- PMID\addcolon\space
- \ifhyperref
- {\href{http://www.ncbi.nlm.nih.gov/pubmed/#1}{\nolinkurl{#1}}}
- {\nolinkurl{#1}}}
-\DeclareFieldAlias{eprint:PubMed}{eprint:pubmed}
-\DeclareFieldFormat{eprint:googlebooks}{%
- Google Books\addcolon\space
- \ifhyperref
- {\href{http://books.google.com/books?id=#1}{\nolinkurl{#1}}}
- {\nolinkurl{#1}}}
-\DeclareFieldAlias{eprint:Google Books}{eprint:googlebooks}
-\DeclareFieldFormat{file}{\url{#1}}
-\DeclareFieldFormat{isbn}{\mkbibacro{ISBN}\addcolon\space #1}
-\DeclareFieldFormat{isrn}{\mkbibacro{ISRN}\addcolon\space #1}
-\DeclareFieldFormat{issn}{\mkbibacro{ISSN}\addcolon\space #1}
-\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{issuetitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{maintitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{booktitle}{\mkbibemph{#1}}
-\DeclareFieldFormat{chapter}{\bibstring{chapter}~#1}
-\DeclareFieldFormat{month}{\mkbibmonth{#1}}
-\DeclareFieldFormat{note}{#1\isdot}
-\DeclareFieldFormat{number}{#1}% number in a series
-\DeclareFieldFormat[article,periodical]{number}{#1}% number of a journal
-\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}
-\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1}}
-\DeclareFieldFormat{part}{.#1}% physical part of a logical volume
-\DeclareFieldFormat{series}{#1}% publication series
-\DeclareFieldFormat[article,periodical]{series}{% series of a journal
- \ifinteger{#1}
- {\mkbibordseries{#1}~\bibstring{jourser}}
- {\ifbibstring{#1}{\bibstring{#1}}{#1}}}
-\DeclareFieldFormat{pubstate}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
-\DeclareFieldFormat{title}{\mkbibemph{#1}}
-\DeclareFieldFormat
- [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
- {title}{\mkbibquote{#1\isdot}}
-\DeclareFieldFormat
- [suppbook,suppcollection,suppperiodical]
- {title}{#1}
-\DeclareFieldFormat{type}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
-\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{#1}}
-\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}}
-\DeclareFieldFormat{version}{\bibstring{version}~#1}
-\DeclareFieldFormat{volume}{\bibstring{volume}~#1}% volume of a book
-\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal
-\DeclareFieldFormat{volumes}{#1~\bibstring{volumes}}
-\DeclareFieldFormat{related}{#1}
-\DeclareFieldFormat{related:multivolume}{\par\nobreak#1}
-\DeclareFieldFormat{related:origpubin}{\mkbibparens{#1}}
-\DeclareFieldFormat{related:origpubas}{\mkbibparens{#1}}
-\DeclareFieldFormat{relatedstring:default}{#1\printunit{\relatedpunct}}
-\DeclareFieldFormat{relatedstring:reprintfrom}{#1\addspace}
-
-% Generic formats for \printtext and \printfield
-
-\DeclareFieldFormat{emph}{\mkbibemph{#1}}
-\DeclareFieldFormat{bold}{\textbf{#1}}
-\DeclareFieldFormat{smallcaps}{\textsc{#1}}
-\DeclareFieldFormat{parens}{\mkbibparens{#1}}
-\DeclareFieldFormat{brackets}{\mkbibbrackets{#1}}
-\DeclareFieldFormat{bibhyperref}{\bibhyperref{#1}}
-\DeclareFieldFormat{bibhyperlink}{\bibhyperlink{\thefield{entrykey}}{#1}}
-\DeclareFieldFormat{bibhypertarget}{\bibhypertarget{\thefield{entrykey}}{#1}}
-\DeclareFieldFormat{titlecase}{#1}
-\DeclareFieldFormat{noformat}{#1}
-
-% ------------------------------------------------------------------
-% LITERAL LIST FORMATS (#1 is the current item)
-% ------------------------------------------------------------------
-
-% Formatting directives for literal lists
-% ------------------------------------------------------------------
-
-% The fallback used by \printlist
-
-\DeclareListFormat{default}{%
- \usebibmacro{list:delim}{#1}%
- #1\isdot
- \usebibmacro{list:andothers}}
-
-% The default used by \citelist
-
-\DeclareListAlias{citelist}{default}
-
-% Used in the bibliography
-
-\DeclareListFormat{publisher}{%
- \usebibmacro{list:delim}{#1}%
- #1\isdot
- \usebibmacro{list:andothers}}
-
-\DeclareListFormat{language}{%
- \usebibmacro{list:delim}{%
- \ifbibstring{#1}
- {\bibxstring{#1}}
- {\ifbibstring{lang#1}
- {\bibxstring{lang#1}}
- {#1}}}%
- \ifbibstring{#1}
- {\bibstring{#1}}
- {\ifbibstring{lang#1}
- {\bibstring{lang#1}}
- {#1}}%
- \usebibmacro{list:andothers}}
-
-\DeclareListFormat{location}{%
- \usebibmacro{list:delim}{#1}%
- #1\isdot
- \usebibmacro{list:andothers}}
-
-\DeclareListFormat[patent]{location}{%
- \usebibmacro{list:plain}%
- \ifbibstring{#1}{\bibstring{#1}}{#1\isdot}%
- \usebibmacro{list:andothers}}
-
-\DeclareListFormat{pageref}{%
- \ifnumless{\abx@pagerefstyle}{0}
- {\usebibmacro{list:plain}%
- \ifhyperref
- {\hyperlink{page.#1}{#1}}
- {#1}}
- {\ifnumequal{\value{listcount}}{1}
- {\usebibmacro{pageref:init}}
- {}%
- \usebibmacro{pageref:comp}{#1}%
- \ifnumequal{\value{listcount}}{\value{liststop}}
- {\usebibmacro{pageref:dump}}
- {}}}
-
-\DeclareListAlias{origlocation}{location}
-\DeclareListAlias{origpublisher}{publisher}
-\DeclareListAlias{institution}{default}
-\DeclareListAlias{organization}{default}
-
-% Auxiliary macros for list formatting directives
-% ------------------------------------------------------------------
-
-\newbibmacro*{list:delim}[1]{%
- \ifnumgreater{\value{listcount}}{\value{liststart}}
- {\ifboolexpr{
- test {\ifnumless{\value{listcount}}{\value{liststop}}}
- or
- test \ifmoreitems
- }
- {\multilistdelim}
- {\lbx@finallistdelim{#1}}}
- {}}
-
-\newbibmacro*{list:plain}{%
- \ifnumgreater{\value{listcount}}{\value{liststart}}
- {\multilistdelim}
- {}}
-
-\newbibmacro*{list:andothers}{%
- \ifboolexpr{
- test {\ifnumequal{\value{listcount}}{\value{liststop}}}
- and
- test \ifmoreitems
- }
- {\ifnumgreater{\value{liststop}}{1}
- {\finalandcomma}
- {}%
- \andmoredelim\bibstring{andmore}}
- {}}
-
-\newbibmacro*{pageref:init}{%
- \let\abx@range@hold=\empty
- \def\abx@range@diff{0}%
- \def\abx@range@prev{-1}%
- \def\abx@range@this{0}%
- \def\abx@range@last{-1}}
-
-\newbibmacro*{pageref:comp}[1]{%
- \numdef\abx@range@prev{\abx@range@prev+1}%
- \ifinteger{#1}
- {\def\abx@range@num{#1}%
- \def\abx@range@this{1}%
- \ifnumequal{\abx@range@this}{\abx@range@last}
- {}
- {\def\abx@range@prev{-1}}}
- {\ifrmnum{#1}
- {\numdef\abx@range@num{\rmntonum{#1}}%
- \def\abx@range@this{2}%
- \ifnumequal{\abx@range@this}{\abx@range@last}
- {}
- {\def\abx@range@prev{-1}}}
- {\undef\abx@range@num
- \def\abx@range@this{0}%
- \def\abx@range@prev{-1}}}%
- \ifdef\abx@range@num
- {\ifnumequal{\abx@range@num}{\abx@range@prev}
- {\def\abx@range@hold{#1}%
- \numdef\abx@range@diff{\abx@range@diff+1}}
- {\usebibmacro{pageref:dump}%
- \ifnumgreater{\abx@range@last}{-1}
- {\multilistdelim}
- {}%
- \ifhyperref
- {\hyperlink{page.#1}{#1}}
- {#1}}%
- \edef\abx@range@prev{\abx@range@num}}
- {\usebibmacro{pageref:dump}%
- \ifnumgreater{\abx@range@last}{-1}
- {\multilistdelim}
- {}%
- \ifhyperref
- {\hyperlink{page.#1}{#1}}
- {#1}%
- \def\abx@range@prev{-1}}%
- \edef\abx@range@last{\abx@range@this}}
-
-\newbibmacro*{pageref:dump}{%
- \ifnumgreater{\abx@range@diff}{0}
- {\ifcase\abx@pagerefstyle\relax % two
- \bibrangedash
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
- {\abx@range@hold}%
- \or % three
- \ifnumless{\abx@range@diff}{2}
- {\multilistdelim}
- {\bibrangedash}%
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
- {\abx@range@hold}%
- \or % two+
- \ifnumless{\abx@range@diff}{2}
- {\sqspace
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
- {\bibstring{sequens}}}
- {\bibrangedash
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
- {\abx@range@hold}}%
- \or % three+
- \ifnumless{\abx@range@diff}{2}
- {\sqspace
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
- {\bibstring{sequens}}}
- {\ifnumless{\abx@range@diff}{3}
- {\sqspace
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}}
- {\bibstring{sequentes}}}
- {\bibrangedash
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
- {\abx@range@hold}}}%
- \else % all+
- \ifnumless{\abx@range@diff}{2}
- {\sqspace
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
- {\bibstring{sequens}}}
- {\sqspace
- \ifhyperref
- {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}}
- {\bibstring{sequentes}}}%
- \fi
- \def\abx@range@diff{0}}
- {}}
-
-% ------------------------------------------------------------------
-% NAME LIST FORMATS
-% ------------------------------------------------------------------
-
-% Arguments passed to formatting directives for name lists:
-%
-% #1 = family name(s)
-% #2 = family name(s) (initials)
-% #3 = given name(s)
-% #4 = given name(s) (initials)
-% #5 = detachable name prefix
-% #6 = detachable name prefix (initials)
-% #7 = detachable name suffix
-% #8 = detachable name suffix (initials)
-
-% Formatting directives for name lists
-% ------------------------------------------------------------------
-
-\DeclareNameAlias{first-last}{given-family}% legacy alias
-\DeclareNameFormat{given-family}{%
- \ifgiveninits
- {\usebibmacro{name:given-family}{#1}{#4}{#5}{#7}}
- {\usebibmacro{name:given-family}{#1}{#3}{#5}{#7}}%
- \usebibmacro{name:andothers}}
-
-\DeclareNameAlias{last-first}{family-given}% legacy alias
-\DeclareNameFormat{family-given}{%
- \ifgiveninits
- {\usebibmacro{name:family-given}{#1}{#4}{#5}{#7}}
- {\usebibmacro{name:family-given}{#1}{#3}{#5}{#7}}%
- \usebibmacro{name:andothers}}
-
-\DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy alias
-\DeclareNameFormat{family-given/given-family}{%
- \ifnumequal{\value{listcount}}{1}
- {\ifgiveninits
- {\usebibmacro{name:family-given}{#1}{#4}{#5}{#7}}
- {\usebibmacro{name:family-given}{#1}{#3}{#5}{#7}}%
- \ifblank{#3#5}
- {}
- {\usebibmacro{name:revsdelim}}}
- {\ifgiveninits
- {\usebibmacro{name:given-family}{#1}{#4}{#5}{#7}}
- {\usebibmacro{name:given-family}{#1}{#3}{#5}{#7}}}%
- \usebibmacro{name:andothers}}
-
-\DeclareNameFormat{initsonly}{%
- \usebibmacro{name:given-family}{#2}{#4}{#6}{#8}%
- \usebibmacro{name:andothers}}
-
-% Fallback used by \printnames
-
-\DeclareNameAlias{default}{given-family}
-
-% Default used by \citename
-
-\DeclareNameAlias{citename}{default}
-
-% Used in some citations
-
-\DeclareNameFormat{labelname}{%
- \ifcase\value{uniquename}%
- \usebibmacro{name:family}{#1}{#3}{#5}{#7}%
- \or
- \ifuseprefix
- {\usebibmacro{name:given-family}{#1}{#4}{#5}{#8}}
- {\usebibmacro{name:given-family}{#1}{#4}{#6}{#8}}%
- \or
- \usebibmacro{name:given-family}{#1}{#3}{#5}{#7}%
- \fi
- \usebibmacro{name:andothers}}
-
-% Used in the bibliography
-
-\DeclareNameAlias{sortname}{family-given/given-family}
-
-\DeclareNameAlias{author}{default}
-\DeclareNameAlias{bookauthor}{author}
-\DeclareNameAlias{editor}{default}
-\DeclareNameAlias{editora}{editor}
-\DeclareNameAlias{editorb}{editor}
-\DeclareNameAlias{editorc}{editor}
-\DeclareNameAlias{translator}{default}
-
-\DeclareNameAlias{byauthor}{default}
-\DeclareNameAlias{bybookauthor}{byauthor}
-\DeclareNameAlias{byeditor}{default}
-\DeclareNameAlias{byeditora}{byeditor}
-\DeclareNameAlias{byeditorb}{byeditor}
-\DeclareNameAlias{byeditorc}{byeditor}
-\DeclareNameAlias{bytranslator}{default}
-
-\DeclareNameAlias{withcommentator}{default}
-\DeclareNameAlias{withannotator}{default}
-\DeclareNameAlias{withintroduction}{default}
-\DeclareNameAlias{withforeword}{default}
-\DeclareNameAlias{withafterword}{default}
-
-\DeclareFieldFormat{authortype}{#1}
-\DeclareFieldFormat{editortype}{#1}
-
-% Auxiliary macros for name formatting directives
-% ------------------------------------------------------------------
-
-\newbibmacro*{name:family}[4]{%
- \ifuseprefix
- {\usebibmacro{name:delim}{#3#1}%
- \usebibmacro{name:hook}{#3#1}%
- \ifblank{#3}
- {}
- {\ifcapital
- {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
- {\mkbibnameprefix{#3}\isdot}%
- \ifprefchar{}{\bibnamedelimc}}}
- {\usebibmacro{name:delim}{#1}%
- \usebibmacro{name:hook}{#1}}%
- \mkbibnamefamily{#1}\isdot}%
-\newbibmacro*{name:last}[4]{% legacy alias
- \blx@warning@noline{%
- 'name:last' is deprecated, please use 'name:family'}%
- \usebibmacro{name:family}{#1}{#2}{#3}{#4}}
-
-\newbibmacro*{name:given-family}[4]{%
- \usebibmacro{name:delim}{#2#3#1}%
- \usebibmacro{name:hook}{#2#3#1}%
- \ifblank{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
- \ifblank{#3}{}{%
- \mkbibnameprefix{#3}\isdot
- \ifprefchar
- {}
- {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
- \mkbibnamefamily{#1}\isdot
- \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}}
-\newbibmacro*{name:first-last}[4]{% legacy alias
- \blx@warning@noline{%
- 'name:first-last' is deprecated, please use 'name:given-family'}%
- \usebibmacro{name:given-family}{#1}{#2}{#3}{#4}}
-
-\newbibmacro*{name:family-given}[4]{%
- \ifuseprefix
- {\usebibmacro{name:delim}{#3#1}%
- \usebibmacro{name:hook}{#3#1}%
- \ifblank{#3}{}{%
- \ifcapital
- {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
- {\mkbibnameprefix{#3}\isdot}%
- \ifprefchar{}{\bibnamedelimc}}%
- \mkbibnamefamily{#1}\isdot
- \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
- \ifblank{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}
- {\usebibmacro{name:delim}{#1}%
- \usebibmacro{name:hook}{#1}%
- \mkbibnamefamily{#1}\isdot
- \ifblank{#4}{}{\bibnamedelimd\mkbibnameaffix{#4}\isdot}%
- \ifblank{#2#3}{}{\revsdnamepunct}%
- \ifblank{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
- \ifblank{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}
-\newbibmacro*{name:last-first}[4]{% legacy alias
- \blx@warning@noline{%
- 'name:last-first' is deprecated, please use 'name:family-given'}%
- \usebibmacro{name:family-given}{#1}{#2}{#3}{#4}}
-
-\newbibmacro*{name:hook}[1]{%
- \ifnumequal{\value{listcount}}{1}
- {\lbx@initnamehook{#1}}
- {}}
-
-\newbibmacro*{name:delim}[1]{%
- \ifnumgreater{\value{listcount}}{\value{liststart}}
- {\ifboolexpr{
- test {\ifnumless{\value{listcount}}{\value{liststop}}}
- or
- test \ifmorenames
- }
- {\multinamedelim}
- {\lbx@finalnamedelim{#1}}}
- {}}
-
-\newbibmacro*{name:revsdelim}{%
- \ifboolexpr{
- (
- test {\ifnumequal{\value{liststop}}{1}}
- and
- test \ifmorenames
- )
- or
- test {\ifnumequal{\value{liststop}}{2}}
- }
- {\revsdnamedelim}
- {}}
-
-\newbibmacro*{name:andothers}{%
- \ifboolexpr{
- test {\ifnumequal{\value{listcount}}{\value{liststop}}}
- and
- test \ifmorenames
- }
- {\ifnumgreater{\value{liststop}}{1}
- {\finalandcomma}
- {}%
- \andothersdelim\bibstring{andothers}}
- {}}
-
-% ------------------------------------------------------------------
-% INDEX FORMATS FOR FIELDS (#1 is the value of the field)
-% ------------------------------------------------------------------
-
-% There is no need to test if a field to be indexed is empty because
-% \indexfield performs this test implicitly.
-
-% The fallback used by \indexfield
-
-\DeclareIndexFieldFormat{default}{\index{#1}}
-
-% Used in the bibliography and in citations
-
-\DeclareIndexFieldFormat{indextitle}{%
- \usebibmacro{index:title}{\index}{#1}}
-
-\newbibmacro*{index:title}[2]{%
- \usebibmacro{index:field}{#1}{\thefield{indexsorttitle}}{\emph{#2}}}
-
-\newbibmacro*{index:field}[3]{%
- \usebibmacro{index:entry}{#1}{\mkbibindexfield{#2}{#3}}}
-
-% Auxiliary macros for field indexing directives
-% ------------------------------------------------------------------
-
-\newbibmacro*{index:entry}[2]{%
- \begingroup
- \protected@edef\theindexentry{\unexpanded{#1}{#2}}%
- \theindexentry
- \endgroup}
-
-\newcommand*{\mkbibindexfield}[2]{\mkbibindexentry{#1}{\unexpanded{#2}}}
-\newcommand*{\mkbibindexentry}[2]{#1\actualoperator#2}
-
-% ------------------------------------------------------------------
-% INDEX FORMATS FOR LITERAL LISTS (#1 is the current item)
-% ------------------------------------------------------------------
-
-% The fallback used by \indexlist
-
-\DeclareIndexListFormat{default}{\index{#1}}
-
-% ------------------------------------------------------------------
-% INDEX FORMATS FOR NAME LISTS
-% ------------------------------------------------------------------
-
-% Argments passed to indexing directives for name lists:
-%
-% #1 = family name(s)
-% #2 = family name(s) (initials)
-% #3 = given name(s)
-% #4 = given name(s) (initials)
-% #5 = detachable name prefix
-% #6 = detachable name prefix (initials)
-% #7 = detachable name suffix
-% #8 = detachable name suffix (initials)
-
-% Indexing directives for name lists
-% ------------------------------------------------------------------
-
-% The fallback used by \indexnames
-
-\DeclareIndexNameFormat{default}{%
- \usebibmacro{index:name}{\index}{#1}{#3}{#5}{#7}}
-
-% Used in citations
-
-\DeclareIndexNameAlias{labelname}{default}
-
-% Used in the bibliography
-
-\DeclareIndexNameAlias{author}{default}
-\DeclareIndexNameAlias{editor}{default}
-\DeclareIndexNameAlias{bookauthor}{default}
-
-% Auxiliary macros for name indexing directives
-% ------------------------------------------------------------------
-
-% When generating an index entry, we need to test which parts of a
-% name are actually available to prevent spurious punctuation and
-% spaces. Since those parts which are not available yield an empty
-% argument, we can use the \ifblank test from etoolbox.sty to analyze
-% the name.
-%
-% Note that the standard LaTeX \index command simply writes its
-% argument to the .idx file without preventing expansion. This means
-% that all \ifblank tests are expanded on the way and will not end
-% up in the index. The index package, however, prevents expansion.
-% This would lead to \ifblank ending up in the .idx file. To avoid
-% that, we preprocess the index entry inside an \edef. We use
-% \unexpanded to protect the \index command and the actual data from
-% expansion. This definition will work with both index.sty and the
-% standard indexing facilities.
-%
-% We also use \ifuseprefix to ensure that the name prefix is handled
-% properly. \actualoperator is the so-called actual operator, as
-% defined by the 'actual' specifier in the .ist file. The makeindex
-% program will use the part preceeding the \actualoperator
-% delimiter for sorting. The part after the delimiter is used as the
-% index is printed. Note that this is not specific to biblatex, see
-% the makeindex documentation for details.
-
-\newcommand*{\actualoperator}{@}
-\newcommand*{\subentryoperator}{!}
-
-\newbibmacro*{index:name}[5]{%
- \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}}
-
-% {<family name>}{<given name>}{<given initials>}{<family name prefix>}
-
-\newcommand*{\mkbibindexname}[4]{%
- \ifuseprefix
- {\ifblank{#3}{}{#3 }%
- \@firstofone #1% remove spurious braces
- \ifblank{#4}{}{ #4}%
- \ifblank{#2}{}{, #2}%
- \actualoperator
- \ifblank{#3}{}{\MakeCapital{#3} }%
- #1%
- \ifblank{#4}{}{ #4}%
- \ifblank{#2}{}{, #2}}
- {\@firstofone #1% remove spurious braces
- \ifblank{#4}{}{ #4}%
- \ifblank{#2#3}{}{,}%
- \ifblank{#2}{}{ #2}%
- \ifblank{#3}{}{ #3}}}
-
-% {<control sequence>}{<control sequence>}
-
-\newcommand*{\mkbibindexsubentry}[2]{%
- \ifblank{#1}{}{\subentryoperator#1\actualoperator#2}}
-
-% Additional macros with subentries
-
-\newbibmacro*{index:name:field}[6]{%
- \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5}
- {\thefield{#6}}{\csfield{#6}}}
-
-\newbibmacro*{index:name:title}[5]{%
- \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5}
- {\thefield{indexsorttitle}}{\emph{\csfield{indextitle}}}}
-
-\newbibmacro*{index:name:subentry}[7]{%
- \usebibmacro{index:entry}{#1}{%
- \mkbibindexname{#2}{#3}{#4}{#5}\mkbibindexsubentry{#6}{#7}}}
-
-% ------------------------------------------------------------------
-% MACROS FOR LBX FILES
-% ------------------------------------------------------------------
-
-\newcommand*{\lbx@initnamehook}[1]{}
-\newcommand*{\lbx@inittitlehook}[1]{}
-\newcommand*{\lbx@finalnamedelim}[1]{\finalnamedelim}
-\newcommand*{\lbx@finallistdelim}[1]{\finallistdelim}
-
-\newcommand*{\lbx@lfromlang}{%
- \iffieldundef{origlanguage}
- {\unspace}
- {\biblstring{from\thefield{origlanguage}}}}
-
-\newcommand*{\lbx@sfromlang}{%
- \iffieldundef{origlanguage}
- {\unspace}
- {\bibsstring{from\thefield{origlanguage}}}}
-
-% ------------------------------------------------------------------
-% MISCELLANEOUS
-% ------------------------------------------------------------------
-
-% ordinals
-
-\newcommand*{\mkbibordedition}{\mkbibordinal}
-\newcommand*{\mkbibordseries}{\mkbibordinal}
-
-% american
-
-\newrobustcmd*{\uspunctuation}{%
- \DeclareQuotePunctuation{.,}%
- \DeclarePunctuationPairs{comma}{*}}
-\newrobustcmd*{\stdpunctuation}{%
- \DeclareQuotePunctuation{}%
- \DeclarePunctuationPairs{comma}{*!?}}
-
-% catalan and french
-
-\newtoggle{smartof}
-\newrobustcmd*{\smartof}{\global\toggletrue{smartof}}
-\newrobustcmd*{\forceD}[1]{#1}
-\newrobustcmd*{\forceDE}[1]{#1}
-
-\AtBeginDocument{%
- \@ifpackageloaded{babel}
- {\ifdef\AutoSpaceBeforeFDP
- {\newrobustcmd*{\EnsureAutoSpaceBeforeFDP}{%
- \iflanguage{french}
- {\AutoSpaceBeforeFDP}
- {}}%
- \appto\bibsetup{\EnsureAutoSpaceBeforeFDP}%
- \appto\citesetup{\EnsureAutoSpaceBeforeFDP}}
- {}}
- {}}
-
-% spanish
-
-\newcounter{smartand}
-\defcounter{smartand}{1}
-\newrobustcmd*{\forceY}[1]{#1}
-\newrobustcmd*{\forceE}[1]{#1}
-
-% ------------------------------------------------------------------
-% PREDEFINED HEADINGS
-% ------------------------------------------------------------------
-
-\newcommand*{\abx@classtype}{0}
-\@ifclassloaded{article}
- {}
- {\@ifclassloaded{book}
- {\def\abx@classtype{1}}
- {\@ifclassloaded{report}
- {\def\abx@classtype{1}}
- {\@ifclassloaded{scrartcl}
- {\def\abx@classtype{2}}
- {\@ifclassloaded{scrbook}
- {\def\abx@classtype{3}}
- {\@ifclassloaded{scrreprt}
- {\def\abx@classtype{3}}
- {\@ifclassloaded{memoir}
- {\ifbool{artopt}
- {\def\abx@classtype{4}}
- {\def\abx@classtype{5}}}
- {\ifundef\chapter
- {}
- {\def\abx@classtype{1}}}}}}}}}
-
-\defbibheading{none}{}
-
-\ifcase\abx@classtype\relax % article
- \defbibheading{bibliography}[\refname]{%
- \section*{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{biblist}[\biblistname]{%
- \section*{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{bibintoc}[\refname]{%
- \section*{#1}%
- \addcontentsline{toc}{section}{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{biblistintoc}[\biblistname]{%
- \section*{#1}%
- \addcontentsline{toc}{section}{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{bibnumbered}[\refname]{%
- \section{#1}%
- \if@twoside\markright{\MakeUppercase{#1}}\fi}
- \defbibheading{biblistnumbered}[\biblistname]{%
- \section{#1}%
- \if@twoside\markright{\MakeUppercase{#1}}\fi}
- \defbibheading{subbibliography}[\refname]{%
- \subsection*{#1}}
- \defbibheading{subbibintoc}[\refname]{%
- \subsection*{#1}%
- \addcontentsline{toc}{subsection}{#1}}
- \defbibheading{subbibnumbered}[\refname]{%
- \subsection{#1}}
-
-\or % book/report
- \defbibheading{bibliography}[\bibname]{%
- \chapter*{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{biblist}[\biblistname]{%
- \chapter*{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{bibintoc}[\bibname]{%
- \chapter*{#1}%
- \addcontentsline{toc}{chapter}{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{biblistintoc}[\biblistname]{%
- \chapter*{#1}%
- \addcontentsline{toc}{chapter}{#1}%
- \markboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}}
- \defbibheading{bibnumbered}[\bibname]{%
- \chapter{#1}%
- \if@twoside\markright{\MakeUppercase{#1}}\fi}
- \defbibheading{biblistnumbered}[\biblistname]{%
- \chapter{#1}%
- \if@twoside\markright{\MakeUppercase{#1}}\fi}
- \defbibheading{subbibliography}[\refname]{%
- \section*{#1}%
- \if@twoside\markright{\MakeUppercase{#1}}\fi}
- \defbibheading{subbibintoc}[\refname]{%
- \section*{#1}%
- \addcontentsline{toc}{section}{#1}%
- \if@twoside\markright{\MakeUppercase{#1}}\fi}
- \defbibheading{subbibnumbered}[\refname]{%
- \section{#1}}
-
-\or % scrartcl
- \defbibheading{bibliography}[\refname]{%
- \ifkomabibtotocnumbered
- {\section{#1}}
- {\ifkomabibtotoc
- {\addsec{#1}}
- {\section*{#1}}%
- \markboth{#1}{#1}}}
- \defbibheading{biblist}[\biblistname]{%
- \ifkomabibtotocnumbered
- {\section{#1}}
- {\ifkomabibtotoc
- {\addsec{#1}}
- {\section*{#1}}%
- \markboth{#1}{#1}}}
- \defbibheading{bibintoc}[\refname]{%
- \addsec{#1}%
- \markboth{#1}{#1}}
- \defbibheading{biblistintoc}[\biblistname]{%
- \addsec{#1}%
- \markboth{#1}{#1}}
- \defbibheading{bibnumbered}[\refname]{%
- \section{#1}%
- \markboth{\sectionmarkformat#1}{\sectionmarkformat#1}}
- \defbibheading{biblistnumbered}[\biblistname]{%
- \section{#1}%
- \markboth{\sectionmarkformat#1}{\sectionmarkformat#1}}
- \defbibheading{subbibliography}[\refname]{%
- \subsection*{#1}}
- \defbibheading{subbibintoc}[\refname]{%
- \subsection*{#1}%
- \addcontentsline{toc}{subsection}{#1}}
- \defbibheading{subbibnumbered}[\refname]{%
- \subsection{#1}}
-
-\or % scrbook/scrreprt
- \defbibheading{bibliography}[\bibname]{%
- \ifkomabibtotocnumbered
- {\chapter{#1}}
- {\ifkomabibtotoc
- {\addchap{#1}}
- {\chapter*{#1}}%
- \markboth{#1}{#1}}}
- \defbibheading{biblist}[\biblistname]{%
- \ifkomabibtotocnumbered
- {\chapter{#1}}
- {\ifkomabibtotoc
- {\addchap{#1}}
- {\chapter*{#1}}%
- \markboth{#1}{#1}}}
- \defbibheading{bibintoc}[\bibname]{%
- \addchap{#1}%
- \markboth{#1}{#1}}
- \defbibheading{biblistintoc}[\biblistname]{%
- \addchap{#1}%
- \markboth{#1}{#1}}
- \defbibheading{bibnumbered}[\bibname]{%
- \chapter{#1}%
- \markboth{\chaptermarkformat#1}{\chaptermarkformat#1}}
- \defbibheading{biblistnumbered}[\biblistname]{%
- \chapter{#1}%
- \markboth{\chaptermarkformat#1}{\chaptermarkformat#1}}
- \defbibheading{subbibliography}[\refname]{%
- \section*{#1}%
- \if@twoside\markright{#1}\fi}
- \defbibheading{subbibintoc}[\refname]{%
- \addsec{#1}%
- \markboth{#1}{#1}}
- \defbibheading{subbibnumbered}[\refname]{%
- \section{#1}}
-
-\or % memoir (article)
- \ifdef\memUChead{}{\let\memUChead\MakeUppercase}
- \defbibheading{bibliography}[\refname]{%
- \chapter*{#1}%
- \ifmemoirbibintoc
- {\phantomsection
- \addcontentsline{toc}{chapter}{#1}}
- {}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{biblist}[\biblistname]{%
- \chapter*{#1}%
- \ifmemoirbibintoc
- {\phantomsection
- \addcontentsline{toc}{chapter}{#1}}
- {}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{bibintoc}[\refname]{%
- \chapter*{#1}%
- \phantomsection
- \addcontentsline{toc}{chapter}{#1}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{biblistintoc}[\biblistname]{%
- \chapter*{#1}%
- \phantomsection
- \addcontentsline{toc}{chapter}{#1}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{bibnumbered}[\refname]{%
- \chapter{#1}}
- \defbibheading{biblistnumbered}[\biblistname]{%
- \chapter{#1}}
- \defbibheading{subbibliography}[\refname]{%
- \section*{#1}%
- \ifmemoirbibintoc
- {\phantomsection
- \addcontentsline{toc}{section}{#1}}
- {}%
- \if@twoside\markright{\memUChead{#1}}\fi}
- \defbibheading{subbibintoc}[\refname]{%
- \section*{#1}%
- \phantomsection
- \addcontentsline{toc}{section}{#1}%
- \if@twoside\markright{\memUChead{#1}}\fi}
- \defbibheading{subbibnumbered}[\refname]{%
- \section{#1}}
-
-\or % memoir (book)
- \ifdef\memUChead{}{\let\memUChead\MakeUppercase}
- \defbibheading{bibliography}[\bibname]{%
- \chapter*{#1}%
- \ifmemoirbibintoc
- {\phantomsection
- \addcontentsline{toc}{chapter}{#1}}
- {}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{biblist}[\biblistname]{%
- \chapter*{#1}%
- \ifmemoirbibintoc
- {\phantomsection
- \addcontentsline{toc}{chapter}{#1}}
- {}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{bibintoc}[\bibname]{%
- \chapter*{#1}%
- \phantomsection
- \addcontentsline{toc}{chapter}{#1}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{biblistintoc}[\biblistname]{%
- \chapter*{#1}%
- \phantomsection
- \addcontentsline{toc}{chapter}{#1}%
- \markboth{\memUChead{#1}}{\memUChead{#1}}}
- \defbibheading{bibnumbered}[\bibname]{%
- \chapter{#1}%
- \if@twoside\markright{\memUChead{#1}}\fi}
- \defbibheading{biblistnumbered}[\biblistname]{%
- \chapter{#1}%
- \if@twoside\markright{\memUChead{#1}}\fi}
- \defbibheading{subbibliography}[\refname]{%
- \section*{#1}%
- \ifmemoirbibintoc
- {\phantomsection
- \addcontentsline{toc}{section}{#1}}
- {}%
- \if@twoside\markright{\memUChead{#1}}\fi}
- \defbibheading{subbibintoc}[\refname]{%
- \section*{#1}%
- \phantomsection
- \addcontentsline{toc}{section}{#1}%
- \if@twoside\markright{\memUChead{#1}}\fi}
- \defbibheading{subbibnumbered}[\refname]{%
- \section{#1}}
-
-\fi
-
-% ------------------------------------------------------------------
-% GENERIC CITATION COMMANDS
-% ------------------------------------------------------------------
-
-\DeclareCiteCommand{\fullcite}
- {\usebibmacro{prenote}}
- {\usedriver
- {\DeclareNameAlias{sortname}{default}}
- {\thefield{entrytype}}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\footfullcite}[\mkbibfootnote]
- {\usebibmacro{prenote}}
- {\usedriver
- {\DeclareNameAlias{sortname}{default}}
- {\thefield{entrytype}}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\citeauthor}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\ifciteindex
- {\indexnames{labelname}}
- {}%
- \printnames{labelname}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand*{\citeauthor}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\ifciteindex
- {\indexnames{labelname}}
- {}%
- \printnames[][1-1]{labelname}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\citetitle}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\ifciteindex
- {\indexfield{indextitle}}
- {}%
- \printfield[citetitle]{labeltitle}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand*{\citetitle}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\ifciteindex
- {\indexfield{indextitle}}
- {}%
- \printfield[citetitle]{title}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\citeyear}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\printfield{year}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand*{\citeyear}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\printfield{year}\printfield{extrayear}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\citedate}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\printdate}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand*{\citedate}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\printdateextra}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\citeurl}
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \usebibmacro{prenote}}
- {\printfield[citeurl]{url}}
- {\multicitedelim}
- {\usebibmacro{postnote}}
-
-\DeclareCiteCommand{\notecite}
- {\printfield{prenote}%
- \setunit*{\prenotedelim}}
- {\nocite{\thefield{entrykey}}}
- {}
- {\printfield{postnote}}
-
-\DeclareCiteCommand{\pnotecite}[\mkbibparens]
- {\printfield{prenote}%
- \setunit*{\prenotedelim}}
- {\nocite{\thefield{entrykey}}}
- {}
- {\printfield{postnote}}
-
-\DeclareCiteCommand{\fnotecite}[\mkbibfootnote]
- {\printfield{prenote}%
- \setunit*{\prenotedelim}}
- {\nocite{\thefield{entrykey}}}
- {}
- {\printfield{postnote}}
-
-\newrobustcmd*{\volcite}{\volcitecmd\cite}
-\newrobustcmd*{\pvolcite}{\volcitecmd\parencite}
-\newrobustcmd*{\fvolcite}{\volcitecmd\footcite}
-\newrobustcmd*{\ftvolcite}{\volcitecmd\footcitetext}
-\newrobustcmd*{\svolcite}{\volcitecmd\smartcite}
-\newrobustcmd*{\tvolcite}{\volcitecmd\textcite}
-\newrobustcmd*{\avolcite}{\volcitecmd\autocite}
-
-\newrobustcmd*{\volcites}{\multivolcitecmd\cites}
-\newrobustcmd*{\pvolcites}{\multivolcitecmd\parencites}
-\newrobustcmd*{\fvolcites}{\multivolcitecmd\footcites}
-\newrobustcmd*{\ftvolcites}{\multivolcitecmd\footcitetexts}
-\newrobustcmd*{\svolcites}{\multivolcitecmd\smartcites}
-\newrobustcmd*{\tvolcites}{\multivolcitecmd\textcites}
-\newrobustcmd*{\avolcites}{\multivolcitecmd\autocites}
-
-\newrobustcmd*{\Cite}{\bibsentence\cite}
-\newrobustcmd*{\Parencite}{\bibsentence\parencite}
-\newrobustcmd*{\Footcite}{\footcite}
-\newrobustcmd*{\Footcitetext}{\footcitetext}
-\newrobustcmd*{\Smartcite}{\bibsentence\smartcite}
-\newrobustcmd*{\Textcite}{\bibsentence\textcite}
-\newrobustcmd*{\Citeauthor}{%
- \@ifstar{\bibsentence\citeauthor*}{\bibsentence\citeauthor}}
-\newrobustcmd*{\Citetitle}{\bibsentence\citetitle}
-
-\newrobustcmd*{\Volcite}{\volcitecmd\Cite}
-\newrobustcmd*{\Pvolcite}{\volcitecmd\Parencite}
-\newrobustcmd*{\Fvolcite}{\volcitecmd\Footcite}
-\newrobustcmd*{\Ftvolcite}{\volcitecmd\Footcitetext}
-\newrobustcmd*{\Svolcite}{\volcitecmd\Smartcite}
-\newrobustcmd*{\Tvolcite}{\volcitecmd\Textcite}
-\newrobustcmd*{\Avolcite}{\volcitecmd\Autocite}
-
-\newrobustcmd*{\Volcites}{\multivolcitecmd\Cites}
-\newrobustcmd*{\Pvolcites}{\multivolcitecmd\Parencites}
-\newrobustcmd*{\Fvolcites}{\multivolcitecmd\Footcites}
-\newrobustcmd*{\Ftvolcites}{\multivolcitecmd\Footcitetext}
-\newrobustcmd*{\Svolcites}{\multivolcitecmd\Smartcites}
-\newrobustcmd*{\Tvolcites}{\multivolcitecmd\Textcites}
-\newrobustcmd*{\Avolcites}{\multivolcitecmd\Autocites}
-
-\newrobustcmd*{\Notecite}{\bibsentence\notecite}
-\newrobustcmd*{\Pnotecite}{\bibsentence\pnotecite}
-\newrobustcmd*{\Fnotecite}{\fnotecite}
-
-\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
-\DeclareMultiCiteCommand{\parencites}[\mkbibparens]{\parencite}{\multicitedelim}
-\DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]{\footcite}{\multicitedelim}
-\DeclareMultiCiteCommand{\footcitetexts}[\mkbibfootnotetext]
- {\footcitetext}{\multicitedelim}
-\DeclareMultiCiteCommand{\smartcites}[\iffootnote\mkbibparens\mkbibfootnote]
- {\smartcite}{\multicitedelim}
-\DeclareMultiCiteCommand{\supercites}[\mkbibsuperscript]
- {\supercite}{\supercitedelim}
-\DeclareMultiCiteCommand{\textcites}{\textcite}{\multicitedelim}
-
-\newrobustcmd*{\Cites}{\bibsentence\cites}
-\newrobustcmd*{\Parencites}{\bibsentence\parencites}
-\newrobustcmd*{\Footcites}{\footcites}
-\newrobustcmd*{\Footcitetexts}{\footcitetexts}
-\newrobustcmd*{\Smartcites}{\bibsentence\smartcites}
-\newrobustcmd*{\Textcites}{\bibsentence\textcites}
-
-\DeclareAutoCiteCommand{plain}{\cite}{\cites}
-\DeclareAutoCiteCommand{inline}{\parencite}{\parencites}
-%\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites}
-\DeclareAutoCiteCommand{footnote}[f]{\smartcite}{\smartcites}
-\DeclareAutoCiteCommand{superscript}[l]{\supercite}{\supercites}
-
-\newrobustcmd*{\Autocite}{\bibsentence\autocite}
-\newrobustcmd*{\Autocites}{\bibsentence\autocites}
-
-% ------------------------------------------------------------------
-% GENERIC CITATION MACROS
-% ------------------------------------------------------------------
-
-\newbibmacro*{citeindex}{%
- \ifciteindex
- {\indexnames{labelname}%
- \indexfield{indextitle}}
- {}}
-
-\newbibmacro*{shorthandintro}{%
- \iffieldundef{shorthandintro}
- {\iffieldundef{shorthand}
- {}
- {\setunit{\addspace}%
- \printtext[parens]{%
- \bibstring{citedas}\space
- \printfield{shorthand}}}}
- {\setunit{\addspace}%
- \printtext[parens]{\printfield{shorthandintro}}}}
-
-% citation commands
-
-\newbibmacro*{prenote}{%
- \iffieldundef{prenote}
- {}
- {\printfield{prenote}%
- \setunit{\prenotedelim}}}
-
-\newbibmacro*{postnote}{%
- \iffieldundef{postnote}
- {}
- {\setunit{\postnotedelim}%
- \printfield{postnote}}}
-
-% multicite commands
-
-\newbibmacro*{multiprenote}{%
- \iffieldundef{multiprenote}
- {}
- {\printfield{multiprenote}%
- \prenotedelim}}
-
-\newbibmacro*{multipostnote}{%
- \iffieldundef{multipostnote}
- {}
- {\postnotedelim
- \printfield{multipostnote}}}
-
-% ------------------------------------------------------------------
-% GENERIC BIBLIOGRAPHY MACROS
-% ------------------------------------------------------------------
-
-\newbibmacro*{bibindex}{%
- \ifbibindex
- {\indexnames{labelname}%
- \indexfield{indextitle}}
- {}}
-
-\newbibmacro*{author/editor}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\usebibmacro{author}}
- {\usebibmacro{editor}}}
-
-\newbibmacro*{author/editor+others}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\usebibmacro{author}}
- {\usebibmacro{editor+others}}}
-
-\newbibmacro*{author/translator}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\usebibmacro{author}}
- {\usebibmacro{translator}}}
-
-\newbibmacro*{author/translator+others}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\usebibmacro{author}}
- {\usebibmacro{translator+others}}}
-
-\newbibmacro*{author/editor/translator}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\usebibmacro{author}}
- {\ifboolexpr{
- test \ifuseeditor
- and
- not test {\ifnameundef{editor}}
- }
- {\usebibmacro{editor}}
- {\usebibmacro{translator}}}}
-
-\newbibmacro*{author/editor+others/translator+others}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\usebibmacro{author}}
- {\ifboolexpr{
- test \ifuseeditor
- and
- not test {\ifnameundef{editor}}
- }
- {\usebibmacro{editor+others}}
- {\usebibmacro{translator+others}}}}
-
-\newbibmacro*{author}{%
- \ifboolexpr{
- test \ifuseauthor
- and
- not test {\ifnameundef{author}}
- }
- {\printnames{author}%
- \iffieldundef{authortype}
- {}
- {\setunit{\addcomma\space}%
- \usebibmacro{authorstrg}}}
- {}}
-
-\newbibmacro*{editor}{%
- \ifboolexpr{
- test \ifuseeditor
- and
- not test {\ifnameundef{editor}}
- }
- {\printnames{editor}%
- \setunit{\addcomma\space}%
- \usebibmacro{editorstrg}%
- \clearname{editor}}
- {}}
-
-\newbibmacro*{editor+others}{%
- \ifboolexpr{
- test \ifuseeditor
- and
- not test {\ifnameundef{editor}}
- }
- {\printnames{editor}%
- \setunit{\addcomma\space}%
- \usebibmacro{editor+othersstrg}%
- \clearname{editor}}
- {}}
-
-\newbibmacro*{translator}{%
- \ifboolexpr{
- test \ifusetranslator
- and
- not test {\ifnameundef{translator}}
- }
- {\printnames{translator}%
- \setunit{\addcomma\space}%
- \usebibmacro{translatorstrg}%
- \clearname{translator}}
- {}}
-
-\newbibmacro*{translator+others}{%
- \ifboolexpr{
- test \ifusetranslator
- and
- not test {\ifnameundef{translator}}
- }
- {\printnames{translator}%
- \setunit{\addcomma\space}%
- \usebibmacro{translator+othersstrg}%
- \clearname{translator}}
- {}}
-
-\newbibmacro*{authorstrg}{%
- \iffieldundef{authortype}
- {}
- {\printtext[authortype]{%
- \ifbibxstring{\thefield{authortype}}
- {\ifboolexpr{
- test {\ifnumgreater{\value{author}}{1}}
- or
- test {\ifandothers{author}}
- }
- {\bibstring{\thefield{authortype}s}}
- {\bibstring{\thefield{authortype}}}}
- {\thefield{authortype}}}}}
-
-\newbibmacro*{editorstrg}{%
- \printtext[editortype]{%
- \iffieldundef{editortype}
- {\ifboolexpr{
- test {\ifnumgreater{\value{editor}}{1}}
- or
- test {\ifandothers{editor}}
- }
- {\bibstring{editors}}
- {\bibstring{editor}}}
- {\ifbibxstring{\thefield{editortype}}
- {\ifboolexpr{
- test {\ifnumgreater{\value{editor}}{1}}
- or
- test {\ifandothers{editor}}
- }
- {\bibstring{\thefield{editortype}s}}
- {\bibstring{\thefield{editortype}}}}
- {\thefield{editortype}}}}}
-
-\newbibmacro*{editor+othersstrg}{%
- \iffieldundef{editortype}
- {\ifboolexpr{
- test {\ifnumgreater{\value{editor}}{1}}
- or
- test {\ifandothers{editor}}
- }
- {\def\abx@tempa{editors}}
- {\def\abx@tempa{editor}}}
- {\ifboolexpr{
- test {\ifnumgreater{\value{editor}}{1}}
- or
- test {\ifandothers{editor}}
- }
- {\edef\abx@tempa{\thefield{editortype}s}}
- {\edef\abx@tempa{\thefield{editortype}}}}%
- \let\abx@tempb=\empty
- \ifnamesequal{editor}{translator}
- {\appto\abx@tempa{tr}%
- \appto\abx@tempb{\clearname{translator}}}
- {}%
- \ifnamesequal{editor}{commentator}
- {\appto\abx@tempa{co}%
- \appto\abx@tempb{\clearname{commentator}}}
- {\ifnamesequal{editor}{annotator}
- {\appto\abx@tempa{an}%
- \appto\abx@tempb{\clearname{annotator}}}
- {}}%
- \ifnamesequal{editor}{introduction}
- {\appto\abx@tempa{in}%
- \appto\abx@tempb{\clearname{introduction}}}
- {\ifnamesequal{editor}{foreword}
- {\appto\abx@tempa{fo}%
- \appto\abx@tempb{\clearname{foreword}}}
- {\ifnamesequal{editor}{afterword}
- {\appto\abx@tempa{af}%
- \appto\abx@tempb{\clearname{afterword}}}
- {}}}%
- \ifbibxstring{\abx@tempa}
- {\printtext[editortype]{\bibstring{\abx@tempa}}\abx@tempb}
- {\usebibmacro{editorstrg}}}
-
-\newbibmacro*{translatorstrg}{%
- \ifboolexpr{
- test {\ifnumgreater{\value{translator}}{1}}
- or
- test {\ifandothers{translator}}
- }
- {\bibstring{translators}}
- {\bibstring{translator}}}
-
-\newbibmacro*{translator+othersstrg}{%
- \ifboolexpr{
- test {\ifnumgreater{\value{translator}}{1}}
- or
- test {\ifandothers{translator}}
- }
- {\def\abx@tempa{translators}}
- {\def\abx@tempa{translator}}%
- \ifnamesequal{translator}{commentator}
- {\appto\abx@tempa{co}%
- \clearname{commentator}}
- {\ifnamesequal{translator}{annotator}
- {\appto\abx@tempa{an}%
- \clearname{annotator}}
- {}}%
- \ifnamesequal{translator}{introduction}
- {\appto\abx@tempa{in}%
- \clearname{introduction}}
- {\ifnamesequal{translator}{foreword}
- {\appto\abx@tempa{fo}%
- \clearname{foreword}}
- {\ifnamesequal{translator}{afterword}
- {\appto\abx@tempa{af}%
- \clearname{afterword}}
- {}}}%
- \bibstring{\abx@tempa}}
-
-\newbibmacro*{byauthor}{%
- \ifboolexpr{
- test \ifuseauthor
- or
- test {\ifnameundef{author}}
- }
- {}
- {\usebibmacro{bytypestrg}{author}{author}%
- \setunit{\addspace}%
- \printnames[byauthor]{author}}}
-
-\newbibmacro*{bybookauthor}{%
- \ifnamesequal{author}{bookauthor}
- {}
- {\printnames{bookauthor}}}
-
-\newbibmacro*{byeditor}{%
- \ifnameundef{editor}
- {}
- {\usebibmacro{bytypestrg}{editor}{editor}%
- \setunit{\addspace}%
- \printnames[byeditor]{editor}%
- \newunit}%
- \usebibmacro{byeditorx}}
-
-\newbibmacro*{byeditorx}{%
- \ifnameundef{editora}
- {}
- {\usebibmacro{bytypestrg}{editora}{editor}%
- \setunit{\addspace}%
- \printnames[byeditora]{editora}%
- \newunit}%
- \ifnameundef{editorb}
- {}
- {\usebibmacro{bytypestrg}{editorb}{editor}%
- \setunit{\addspace}%
- \printnames[byeditorb]{editorb}%
- \newunit}%
- \ifnameundef{editorc}
- {}
- {\usebibmacro{bytypestrg}{editorc}{editor}%
- \setunit{\addspace}%
- \printnames[byeditorc]{editorc}%
- \newunit}}
-
-\newbibmacro*{bytranslator}{%
- \ifnameundef{translator}
- {}
- {\bibstring{bytranslator}%
- \setunit{\addspace}%
- \printnames[bytranslator]{translator}}}
-
-\newbibmacro*{byholder}{%
- \printnames{holder}}
-
-\newbibmacro*{byeditor+others}{%
- \ifnameundef{editor}
- {}
- {\usebibmacro{byeditor+othersstrg}%
- \setunit{\addspace}%
- \printnames[byeditor]{editor}%
- \clearname{editor}%
- \newunit}%
- \usebibmacro{byeditorx}%
- \usebibmacro{bytranslator+others}}
-
-\newbibmacro*{bytranslator+others}{%
- \ifnameundef{translator}
- {}
- {\usebibmacro{bytranslator+othersstrg}%
- \setunit{\addspace}%
- \printnames[bytranslator]{translator}%
- \clearname{translator}%
- \newunit}%
- \usebibmacro{withothers}}
-
-\newbibmacro*{bytypestrg}[2]{%
- \iffieldundef{#1type}
- {\bibstring{by#2}}
- {\ifbibxstring{by\thefield{#1type}}
- {\bibstring{by\thefield{#1type}}}
- {\printtext{\thefield{#1type}}}}}
-
-\newbibmacro*{byeditor+othersstrg}{%
- \iffieldundef{editortype}
- {\def\abx@tempa{byeditor}}
- {\edef\abx@tempa{by\thefield{editortype}}}%
- \let\abx@tempb=\empty
- \ifnamesequal{editor}{translator}
- {\appto\abx@tempa{tr}%
- \appto\abx@tempb{\clearname{translator}}}
- {}%
- \ifnamesequal{editor}{commentator}
- {\appto\abx@tempa{co}%
- \appto\abx@tempb{\clearname{commentator}}}
- {\ifnamesequal{editor}{annotator}
- {\appto\abx@tempa{an}%
- \appto\abx@tempb{\clearname{annotator}}}
- {}}%
- \ifnamesequal{editor}{introduction}
- {\appto\abx@tempa{in}%
- \appto\abx@tempb{\clearname{introduction}}}
- {\ifnamesequal{editor}{foreword}
- {\appto\abx@tempa{fo}%
- \appto\abx@tempb{\clearname{foreword}}}
- {\ifnamesequal{editor}{afterword}
- {\appto\abx@tempa{af}%
- \appto\abx@tempb{\clearname{afterword}}}
- {}}}%
- \ifbibxstring{\abx@tempa}
- {\printtext{\bibstring{\abx@tempa}}\abx@tempb}
- {\usebibmacro{bytypestrg}{editor}{editor}}}
-
-\newbibmacro*{bytranslator+othersstrg}{%
- \def\abx@tempa{bytranslator}%
- \ifnamesequal{translator}{commentator}
- {\appto\abx@tempa{co}%
- \clearname{commentator}}
- {\ifnamesequal{translator}{annotator}
- {\appto\abx@tempa{an}%
- \clearname{annotator}}
- {}}%
- \ifnamesequal{translator}{introduction}
- {\appto\abx@tempa{in}%
- \clearname{introduction}}
- {\ifnamesequal{translator}{foreword}
- {\appto\abx@tempa{fo}%
- \clearname{foreword}}
- {\ifnamesequal{translator}{afterword}
- {\appto\abx@tempa{af}%
- \clearname{afterword}}
- {}}}%
- \bibstring{\abx@tempa}}
-
-\newbibmacro*{withcommentator}{%
- \ifnameundef{commentator}
- {}
- {\bibstring{withcommentator}%
- \setunit{\addspace}%
- \printnames[withcommentator]{commentator}}}
-
-\newbibmacro*{withannotator}{%
- \ifnameundef{annotator}
- {}
- {\bibstring{withannotator}%
- \setunit{\addspace}%
- \printnames[withannotator]{annotator}}}
-
-\newbibmacro*{withintroduction}{%
- \ifnameundef{introduction}
- {}
- {\bibstring{withintroduction}%
- \setunit{\addspace}%
- \printnames[withintroduction]{introduction}}}
-
-\newbibmacro*{withforeword}{%
- \ifnameundef{foreword}
- {}
- {\bibstring{withforeword}%
- \setunit{\addspace}%
- \printnames[withforeword]{foreword}}}
-
-\newbibmacro*{withafterword}{%
- \ifnameundef{afterword}
- {}
- {\bibstring{withafterword}%
- \setunit{\addspace}%
- \printnames[withafterword]{afterword}}}
-
-\newbibmacro*{withothers}{%
- \usebibmacro{withcommentator}%
- \clearname{commentator}%
- \newunit
- \usebibmacro{withannotator}%
- \clearname{annotator}%
- \newunit
- \usebibmacro{withintroduction}%
- \clearname{introduction}%
- \newunit
- \usebibmacro{withforeword}%
- \clearname{foreword}%
- \newunit
- \usebibmacro{withafterword}%
- \clearname{afterword}}
-
-\newbibmacro*{title}{%
- \ifboolexpr{
- test {\iffieldundef{title}}
- and
- test {\iffieldundef{subtitle}}
- }
- {}
- {\printtext[title]{%
- \printfield[titlecase]{title}%
- \setunit{\subtitlepunct}%
- \printfield[titlecase]{subtitle}}%
- \newunit}%
- \printfield{titleaddon}}
-
-\newbibmacro*{booktitle}{%
- \ifboolexpr{
- test {\iffieldundef{booktitle}}
- and
- test {\iffieldundef{booksubtitle}}
- }
- {}
- {\printtext[booktitle]{%
- \printfield[titlecase]{booktitle}%
- \setunit{\subtitlepunct}%
- \printfield[titlecase]{booksubtitle}}%
- \newunit}%
- \printfield{booktitleaddon}}
-
-\newbibmacro*{maintitle}{%
- \ifboolexpr{
- test {\iffieldundef{maintitle}}
- and
- test {\iffieldundef{mainsubtitle}}
- }
- {}
- {\printtext[maintitle]{%
- \printfield[titlecase]{maintitle}%
- \setunit{\subtitlepunct}%
- \printfield[titlecase]{mainsubtitle}}%
- \newunit}%
- \printfield{maintitleaddon}}
-
-\newbibmacro*{journal}{%
- \iffieldundef{journaltitle}
- {}
- {\printtext[journaltitle]{%
- \printfield[titlecase]{journaltitle}%
- \setunit{\subtitlepunct}%
- \printfield[titlecase]{journalsubtitle}}}}
-
-\newbibmacro*{periodical}{%
- \iffieldundef{title}
- {}
- {\printtext[title]{%
- \printfield[titlecase]{title}%
- \setunit{\subtitlepunct}%
- \printfield[titlecase]{subtitle}}}}
-
-\newbibmacro*{issue}{%
- \iffieldundef{issuetitle}
- {}
- {\printtext[issuetitle]{%
- \printfield[titlecase]{issuetitle}%
- \setunit{\subtitlepunct}%
- \printfield[titlecase]{issuesubtitle}}}}
-
-\newbibmacro*{in:}{%
- \printtext{%
- \bibstring{in}\intitlepunct}}
-
-\newbibmacro*{date}{\printdate}
-
-\newbibmacro*{url+urldate}{%
- \usebibmacro{url}%
- \iffieldundef{urlyear}
- {}
- {\setunit*{\addspace}%
- \usebibmacro{urldate}}}
-
-\newbibmacro*{url}{\printfield{url}}
-\newbibmacro*{urldate}{\printurldate}
-
-\newbibmacro*{pageref}{%
- \iflistundef{pageref}
- {}
- {\printtext[parens]{%
- \ifnumgreater{\value{pageref}}{1}
- {\bibstring{backrefpages}\ppspace}
- {\bibstring{backrefpage}\ppspace}%
- \printlist[pageref][-\value{listtotal}]{pageref}}}}
-
-\newbibmacro*{setpageref}{%
- \iflistundef{pageref}
- {}
- {\printtext{%
- \ifnumgreater{\value{pageref}}{1}
- {\bibstring{backrefpages}\ppspace}
- {\bibstring{backrefpage}\ppspace}%
- \printlist[pageref][-\value{listtotal}]{pageref}}}}
-
-\newbibmacro*{eprint}{%
- \iffieldundef{eprinttype}
- {\printfield{eprint}}
- {\printfield[eprint:\strfield{eprinttype}]{eprint}}}
-
-\newbibmacro*{annotation}{%
- \iffieldundef{annotation}
- {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}
- {\printfield{annotation}}}
-
-\newbibmacro*{abstract}{%
- \iffieldundef{abstract}
- {\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}}
- {\printfield{abstract}}}
-
-\newbibmacro*{related:default}[1]{%
- \entrydata*{#1}{%
- \usedriver
- {\ifnameundef{savedauthor}
- {\ifnameundef{savededitor}
- {}
- {\ifnamesequal{editor}{savededitor}
- {\clearname{editor}}
- {}}}
- {\ifnamesequal{author}{savedauthor}
- {\clearname{author}}
- {}}%
- \renewbibmacro*{related:init}{}%
- \DeclareNameAlias{sortname}{default}%
- \ifbibmacroundef{date+extrayear}
- {}
- {\renewbibmacro*{date+extrayear}{}%
- \renewbibmacro*{date}{\printdate}}%
- \renewbibmacro*{pageref}{}}
- {\thefield{entrytype}}}}
-
-\newbibmacro*{related:bytranslator}[1]{%
- \entrydata{#1}{%
- \renewbibmacro*{name:hook}[1]{%
- \ifnumequal{\value{listcount}}{1}
- {\begingroup
- \mkrelatedstring%
- \lbx@initnamehook{#1}%
- \endgroup}
- {}}%
- \printnames[bytranslator]{translator}%
- \setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}%
- \usebibmacro{title}%
- \setunit{\addspace}%
- \printtext[parens]{%
- \printlist{location}%
- \iflistundef{publisher}
- {\setunit*{\addcomma\space}}
- {\setunit*{\addcolon\space}}%
- \printlist{publisher}%
- \setunit*{\addcomma\space}%
- \printdate}}}
-
-\newbibmacro*{related:multivolume}[1]{%
- \entrydata*{#1}{%
- \printtext{%
- \printfield{volume}%
- \printfield{part}}%
- \setunit*{\addcolon\space}%
- \usebibmacro{title}%
- \ifboolexpr{
- test {\ifnamesequal{author}{savedauthor}}
- or
- test {\ifnameundef{author}}
- }
- {}
- {\usebibmacro{bytypestrg}{author}{author}%
- \setunit{\addspace}%
- \printnames[byauthor]{author}
- \newunit\newblock}%
- \ifboolexpr{
- test {\ifnamesequal{editor}{savededitor}}
- or
- test {\ifnameundef{editor}}
- }
- {}
- {\usebibmacro{byeditor+others}%
- \newunit\newblock}%
- \printdate}}
-
-\newbibmacro*{related:origpubin}[1]{%
- \entrydata*{#1}{%
- \printfield{year}%
- \ifboolexpr{
- test {\iflistsequal{publisher}{savedpublisher}}
- or
- test {\iflistundef{publisher}}
- }
- {}
- {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}%
- \printlist{publisher}%
- \setunit{\addcomma\space}%
- \iflistsequal{location}{savedlocation}
- {}
- {\printlist{location}}}}}
-
-\newbibmacro*{related:origpubas}[1]{%
- \entrydata*{#1}{%
- \usebibmacro{title}%
- \ifboolexpr{
- test {\iflistsequal{publisher}{savedpublisher}}
- or
- test {\iflistundef{publisher}}
- }
- {}
- {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}%
- \printlist{publisher}%
- \setunit{\addcomma\space}%
- \iflistsequal{location}{savedlocation}
- {}
- {\printlist{location}}}}}
-
-\DeclareFieldFormat{title:hook}{%
- \begingroup
- \mkrelatedstring%
- \lbx@inittitlehook{#1}%
- \endgroup
- \mkbibemph{#1}}
-
-\newbibmacro*{related:reprintfrom}[1]{%
- \entrydata*{#1}{%
- \iffieldundef{journaltitle}
- {\iffieldundef{maintitle}
- {\printfield[title:hook]{booktitle}}
- {\printfield[title:hook]{maintitle}}%
- \newunit\newblock
- \usebibmacro{byeditor+others}%
- \newunit\newblock
- \printfield{edition}%
- \newunit
- \iffieldundef{volume}
- {}
- {\printfield{volume}%
- \printfield{part}}
- \newunit\newblock
- \usebibmacro{series+number}%
- \newunit\newblock
- \printfield{note}%
- \newunit\newblock
- \usebibmacro{publisher+location+date}%
- \newunit\newblock
- \usebibmacro{chapter+pages}}
- {\printfield[title:hook]{journaltitle}%
- \newunit\newblock
- \usebibmacro{byeditor+others}%
- \newunit\newblock
- \usebibmacro{note+pages}}}}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty
deleted file mode 100644
index 11c339aef93..00000000000
--- a/Master/texmf-dist/tex/latex/biblatex/biblatex_legacy.sty
+++ /dev/null
@@ -1,10608 +0,0 @@
-% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $
-
-% Copyright (c) 2006-2011 Philipp Lehman.
-% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright
-% Permission is granted to copy, distribute and/or modify this
-% software under the terms of the LaTeX Project Public License
-% (LPPL), version 1.3.
-%
-% The LPPL maintenance status of this software is
-% 'author-maintained'.
-%
-% This software is provided 'as is', without warranty of any kind,
-% either expressed or implied, including, but not limited to, the
-% implied warranties of merchantability and fitness for a
-% particular purpose.
-
-\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{biblatex_legacy}
-[\abx@date\space v\abx@version\space programmable bibliographies (bibtex) (PK/JW/AB)]
-
-%% Dependencies
-
-\RequirePackage{etoolbox}
-\RequirePackage{keyval}
-\RequirePackage{logreq}
-\RequirePackage{ifthen}
-\RequirePackage{url}
-
-\@ifpackagelater{etoolbox}{2010/11/29}
- {}
- {\PackageError{biblatex}
- {Outdated 'etoolbox' package}
- {Upgrade to etoolbox v2.1 (2010/11/29) or later.\MessageBreak
- I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak
- This is a fatal error. I'm aborting now.}%
- \endinput}
-
-%% Category codes
-
-\def\blx@docatcodes{%
- \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.%
- \do\,\do\;\do\:\do\!\do\?\do\/}
-\def\do#1{\catcode\number`#1=\the\catcode`#1\relax}
-\edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|}
-\let\do\noexpand
-
-\def\blx@saneccodes{%
- \catcode`\~=\active
- \let\do\@makeother
- \blx@docatcodes
- \let\do\noexpand}
-
-\blx@saneccodes
-\catcode`\&=3
-\catcode`\|=3
-\catcode`\^=7
-\def\blx@nl{^^J}
-
-%% Compatibility
-
-\AtEndPreamble{%
- \def\do#1{%
- \@ifpackageloaded{#1}
- {\blx@error
- {Incompatible package '#1'}
- {The '#1' package and biblatex are incompatible}}
- {}}%
- \docsvlist{%
- amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib,
- cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus,
- mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}%
- \def\blx@langstrings{}%
- % Set up sortlocale defaults
- \ifdefstring\blx@sortlocale{auto}
- {\ifdef\bbl@main@language% babel or polyglossia is loaded
- {\edef\blx@sortlocale{\bbl@main@language}}
- {\def\blx@sortlocale{english}}}
- {}%
- \@ifpackageloaded{polyglossia}
- {\ifboolexpr{
- not test {\iftoggle{blx@autolangbib}}
- and
- not test {\iftoggle{blx@autolangcite}}}
- {\blx@mknoautolang}
- {\blx@mkautolangpoly}}
- {\@ifpackageloaded{babel}
- {\ifboolexpr{
- not test {\iftoggle{blx@autolangbib}}
- and
- not test {\iftoggle{blx@autolangcite}}}
- {\blx@mknoautolang}
- {\blx@mkautolangbabel}}
- {\blx@mknoautolang}}%
- % These already have defaults set to basically do nothing
- % so if the toggles are true, we need to define again since
- % mkautolang* redefines \blx@beglang
- % In turn, \blx@beglang defines \blx@endlang and so \blx@beglangcite and
- % \blx@endlangcite need redefining inside \blx@beglang after \blx@endlang
- % has been defined.
- \iftoggle{blx@autolangbib}
- {\let\blx@beglangbib\blx@beglang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@beglangcite\blx@beglang}
- {}%
- \csuse{abx@extras@\blx@languagename}%
- \csuse{abx@strings@\blx@languagename}%
- \undef\blx@mkautolangbabel
- \undef\blx@mkautolangpoly
- \undef\blx@mknoautolang
- \ifnum\blx@hyperref=\z@
- \blx@mknohyperref
- \else
- \@ifpackageloaded{hyperref}
- {\blx@mkhyperref}
- {\ifnum\blx@hyperref=\@ne
- \blx@warning@noline{%
- Missing 'hyperref' package.\MessageBreak
- Setting hyperref=false}%
- \fi
- \blx@mknohyperref}%
- \fi
- \providecommand*{\nolinkurl}{\url}%
- \undef\blx@mkhyperref
- \undef\blx@mknohyperref
- \ifundef\TE@hook
- {\let\TE@hook\@empty
- \toggletrue{blx@tempa}%
- \def\do#1{%
- \patchcmd#1%
- {\let\isundefined\TE@undef}
- {\let\isundefined\TE@undef\TE@hook}
- {\togglefalse{blx@tempa}\listbreak}
- {}}%
- \docsvlist{%
- \ifthenelse,% ifthen
- \org@ifthenelse,% babel
- \HyOrg@ifthenelse,% hyperref
- \NROrg@ifthenelse}% nameref
- \iftoggle{blx@tempa}
- {\blx@err@patch{'ifthen' package}}
- {}}
- {}%
- \appto\TE@hook{\blx@TE@hook}%
- \toggletrue{blx@tempa}%
- \def\do#1{%
- \patchcmd#1%
- {\color@begingroup}
- {\color@begingroup\toggletrue{blx@footnote}}
- {\togglefalse{blx@tempa}\listbreak}
- {}}%
- \docsvlist{%
- \@footnotetext,% latex
- \H@@footnotetext,% hyperref
- \V@@footnotetext,% fancyvrb
- \scr@saved@footnotetext,% koma-script 3.x
- \l@dold@footnotetext,% ledmac
- \l@doldold@footnotetext,% ledmac
- \@fntORI}% frenchle
- \iftoggle{blx@tempa}% ams classes
- {\patchcmd\@footnotetext
- {\@makefntext}
- {\toggletrue{blx@footnote}\@makefntext}
- {\togglefalse{blx@tempa}}
- {}}
- {}%
- \@ifclassloaded{memoir}
- {\def\do#1{%
- \patchcmd#1%
- {\color@begingroup}
- {\color@begingroup\toggletrue{blx@footnote}}
- {}
- {}}%
- \docsvlist{%
- \m@mold@footnotetext,%
- \@plainfootnotetext,%
- \@twocolfootnotetext,%
- \@threecolfootnotetext,%
- \@parafootnotetext}%
- \def\do#1{%
- \patchcmd#1%
- {\color@begingroup\@makefntext}
- {\color@begingroup\toggletrue{blx@footnote}\@makefntext}
- {}
- {}}%
- \docsvlist{%
- \@footnotetext,% patch twice
- \H@@footnotetext,% patch twice
- \@plainfootnotetext}}
- {}%
- \iftoggle{blx@tempa}
- {\blx@warning@noline{%
- Patching footnotes failed.\MessageBreak
- Footnote detection will not work}}
- {}%
- \@ifpackageloaded{endnotes}
- {\patchcmd\theendnotes
- {\enoteformat}
- {\toggletrue{blx@footnote}\enoteformat}
- {}
- {\blx@err@patch{'endnotes' package}}}
- {}%
- \@ifpackageloaded{bigfoot}
- {\apptocmd\@makefnstartbox
- {\toggletrue{blx@footnote}}
- {}
- {\blx@err@patch{'bigfoot' package}}}
- {}%
- \@ifpackageloaded{showkeys}
- {\ifdef\SK@
- {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}%
- \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}%
- \ifundef\SK@cite % = 'notcite' disabled
- {\AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}}
- {}}
- {}}
- {}%
- \apptocmd\@floatboxreset
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}}
- {}
- {\blx@err@patch{floats}}%
- \ifdef\TX@endtabularx % tabularx/memoir
- {\pretocmd\TX@endtabularx
- {\addtocounter{tabx@nest}{1}}% track nestes tabularx environments
- {}
- {\blx@err@patch{'tabularx'}}%
- % no need to conditionalise on top-level tabx as the search/replace
- % will only match once anyway
- \patchcmd\TX@endtabularx
- {\edef\TX@ckpt{\cl@@ckpt}}
- {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}%
- \abx@savetrackers}
- {}
- {\blx@err@patch{'tabularx'}}%
- \apptocmd\TX@endtabularx
- {\ifnum\value{tabx@nest}=1% only clear trackers for top-level tabularx
- \abx@cleartrackers
- \fi
- \addtocounter{tabx@nest}{-1}}
- {}
- {\blx@err@patch{'tabularx'}}}
- {}%
- \@ifpackageloaded{csquotes}
- {\@ifpackagelater{csquotes}{2009/05/30}
- {}
- {\blx@error
- {Outdated 'csquotes' package}
- {Upgrade to csquotes v4.4 (2009/05/30) or later.\MessageBreak
- I found: '\csuse{ver@csquotes.sty}'}}%
- \BlockquoteDisable{\let\blx@thecheckpunct\@gobble}%
- \@ifpackagelater{csquotes}{2009/08/27}
- {\appto\@blockquote@prehook{\abx@savetrackers}%
- \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}}
- {}%
- \@ifpackagelater{csquotes}{2010/06/09}
- {}
- {\newcommand*{\@quotereset}{}\newcount\@quotereset}}
- {\@ifpackageloaded{babel}
- {\blx@warning@noline{%
- 'babel/polyglossia' detected but 'csquotes' missing.\MessageBreak
- Loading 'csquotes' recommended}}
- {}%
- \newcommand*{\@quotelevel}{}%
- \newcount\@quotelevel
- \newcommand*{\@quotereset}{}%
- \newcount\@quotereset
- \newcommand*{\@setquotesfcodes}{}%
- \let\@setquotesfcodes\relax
- \newrobustcmd*{\initoquote}{\@quotelevel\@ne}%
- \newrobustcmd*{\initiquote}{\@quotelevel\tw@}%
- \newrobustcmd*{\textooquote}{``}%
- \newrobustcmd*{\textcoquote}{''}%
- \newrobustcmd*{\textoiquote}{`\relax}% block ligs
- \newrobustcmd*{\textciquote}{'\relax}% block ligs
- \newrobustcmd*{\enquote}{\@ifstar\blx@enquote@ii\blx@enquote}%
- \def\blx@enquote{%
- \ifnum\@quotelevel>\z@
- \expandafter\blx@enquote@ii
- \else
- \expandafter\blx@enquote@i
- \fi}%
- \long\def\blx@enquote@i#1{%
- \begingroup\initoquote
- \textooquote#1\textcoquote
- \endgroup}%
- \long\def\blx@enquote@ii#1{%
- \begingroup\initiquote
- \textoiquote#1\textciquote
- \endgroup}%
- \appto\blx@setsfcodes{%
- \sfcode`\`=\z@
- \sfcode`\'=\z@}}%
- \let\do\noexpand}
-
-\begingroup
-\@makeother\#
-% \relax: gobble newline -> titletoc.sty
-\AtEndPreamble{%
- \addtocontents{toc}{%
- \boolfalse{citerequest}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
- \addtocontents{lof}{%
- \boolfalse{citerequest}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
- \addtocontents{lot}{%
- \boolfalse{citerequest}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
- \patchcmd\addtocontents
- {\string\@writefile}
- {\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}%
- \string\@writefile}
- {}
- {\blx@err@patch{\string\addtocontents}}}
-\endgroup
-
-% trick hyperref into believing we're natbib
-\let\NAT@parse\@empty
-% trick showkeys into believing we're havard
-\let\HAR@checkdef\@empty
-
-%% Allocation
-
-\providecommand{\@gobblefive}[5]{}
-
-% Counter to track nested tabularx environemnts so we don't
-% try to patch the commands more than once below as this undefs some
-% macros and an error is thrown
-\newcounter{tabx@nest}
-\setcounter{tabx@nest}{0}
-
-\newcounter{listtotal}
-\def\thelisttotal{\the\c@listtotal}
-\newcounter{listcount}
-\def\thelistcount{\the\c@listcount}
-\newcounter{liststart}
-\def\theliststart{\the\c@liststart}
-\newcounter{liststop}
-\def\theliststop{\the\c@liststop}
-\newcounter{citecount}
-\def\thecitecount{\the\c@citecount}
-\newcounter{citetotal}
-\def\thecitetotal{\the\c@citetotal}
-\newcounter{multicitecount}
-\def\themulticitecount{\the\c@multicitecount}
-\newcounter{multicitetotal}
-\def\themulticitetotal{\the\c@multicitetotal}
-\newcounter{instcount}
-\def\theinstcount{\the\c@instcount}
-\newcounter{maxnames}
-\def\themaxnames{\the\c@maxnames}
-\newcounter{minnames}
-\def\theminnames{\the\c@minnames}
-\newcounter{maxitems}
-\def\themaxitems{\the\c@maxitems}
-\newcounter{minitems}
-\def\theminitems{\the\c@minitems}
-\newcounter{citecounter}
-\def\thecitecount{\the\c@citecounter}
-\newcounter{savedcitecounter}
-\def\thecitecount{\the\c@savedcitecounter}
-\newcounter{uniquelist}
-\def\theuniquelist{\the\c@uniquelist}
-\newcounter{uniquename}
-\def\theuniquename{\the\c@uniquename}
-\newcounter{refsection}
-\def\therefsection{\the\c@refsection}
-\newcounter{refsegment}
-\def\therefsegment{\the\c@refsegment}
-\newcounter{maxextrayear}
-\def\themaxextrayear{\the\c@maxextrayear}
-\newcounter{maxextraalpha}
-\def\themaxextraalpha{\the\c@maxextraalpha}
-\newcounter{abbrvpenalty}
-\def\theabbrvpenalty{\the\c@abbrvpenalty}
-\newcounter{highnamepenalty}
-\def\thehighnamepenalty{\the\c@highnamepenalty}
-\newcounter{lownamepenalty}
-\def\thelownamepenalty{\the\c@lownamepenalty}
-\newcounter{maxparens}
-\def\themaxparens{\the\c@maxparens}
-\newcounter{parenlevel}
-\def\theparenlevel{\the\c@parenlevel}
-
-\newcount\blx@tempcnta
-\newcount\blx@tempcntb
-\newcount\blx@tempcntc
-\newcount\blx@maxsection
-\newcount\blx@maxsegment
-\newcount\blx@notetype
-\newcount\blx@parenlevel@text
-\newcount\blx@parenlevel@foot
-
-\def\blx@backend{0}
-\def\blx@uniquename{0}
-\def\blx@uniquelist{0}
-\def\blx@maxbibnames{0}
-\def\blx@minbibnames{0}
-\def\blx@maxcitenames{0}
-\def\blx@mincitenames{0}
-\def\blx@maxbibnames@type{\blx@maxbibnames}
-\def\blx@minbibnames@type{\blx@minbibnames}
-\def\blx@maxcitenames@type{\blx@maxcitenames}
-\def\blx@mincitenames@type{\blx@mincitenames}
-\def\blx@maxalphanames{0}
-\def\blx@minalphanames{0}
-\def\blx@maxitems{0}
-\def\blx@minitems{0}
-\def\blx@maxitems@type{\blx@maxitems}
-\def\blx@minitems@type{\blx@minitems}
-
-\newlength{\labelnumberwidth}
-\newlength{\labelalphawidth}
-\newlength{\shorthandwidth}
-\newlength{\biblabelsep}
-\ifdef\bibitemsep % memoir
- {}
- {\newlength{\bibitemsep}}
-\newlength{\bibnamesep}
-\newlength{\bibinitsep}
-\newlength{\bibparsep}
-\newlength{\bibhang}
-
-\newbool{citetracker}
-\newbool{pagetracker}
-\newbool{backtracker}
-\newbool{citerequest}
-\booltrue{citerequest}
-
-\newtoggle{blx@tempa}
-\newtoggle{blx@tempb}
-\newtoggle{blx@runltx}
-\newtoggle{blx@runbtx}
-\newtoggle{blx@block}
-\newtoggle{blx@unit}
-\newtoggle{blx@skipentry}
-\newtoggle{blx@insert}
-\newtoggle{blx@lastins}
-\newtoggle{blx@keepunit}
-\newtoggle{blx@debug}
-\newtoggle{blx@sortcase}
-\newtoggle{blx@sortupper}
-\newtoggle{blx@autolangbib}
-\newtoggle{blx@autolangcite}
-\newtoggle{blx@clearlang}
-\newtoggle{blx@defernumbers}
-\newtoggle{blx@omitnumbers}
-\newtoggle{blx@footnote}
-\newtoggle{blx@labelalpha}
-\newtoggle{blx@labelnumber}
-\newtoggle{blx@labeldate}
-\newtoggle{blx@natbib}
-\newtoggle{blx@mcite}
-\newtoggle{blx@loadfiles}
-\newtoggle{blx@singletitle}
-\newtoggle{blx@terseinits}
-\newtoggle{blx@giveninits}
-\newtoggle{blx@useauthor}
-\newtoggle{blx@useeditor}
-\newtoggle{blx@usetranslator}
-\newtoggle{blx@useprefix}
-\newtoggle{blx@addset}
-\newtoggle{blx@setonly}
-\newtoggle{blx@dataonly}
-\newtoggle{blx@skipbib}
-\newtoggle{blx@skipbiblist}
-\newtoggle{blx@skiplab}
-\newtoggle{blx@citation}
-\newtoggle{blx@bibliography}
-\newtoggle{blx@reencode}
-\newtoggle{blx@citeindex}
-\newtoggle{blx@bibindex}
-
-\newread\blx@auxin
-\newwrite\blx@auxout
-
-\def\blx@onlypreamble#1{%
- \gappto\blx@dopreamblecmds{\do#1}}
-
-\def\blx@dopreamblecmds{%
- \do\blx@dopreamblecmds
- \do\blx@onlypreamble}
-
-%% Initialization
-
-\def\blx@blxinit{%
- \let\blx@blxinit\relax
- \blx@initunit}
-
-\edef\blx@auxfile@bibtex{\jobname}
-\let\blx@auxout@bibtex\@mainaux
-\newcommand*{\labelalphaothers}{+}
-\newcommand*{\sortalphaothers}{\labelalphaothers}
-\newcommand*{\blxauxsuffix}{-blx}
-
-\begingroup
-\def\blx@tempa#1"#2{%
- #1\ifx#2\@empty\else
- \expandafter\blx@tempa
- \fi#2}
-\edef\blx@ctrlfile@bibtex{%
- \noexpand\blx@tempa
- \expandafter\blx@tempa\jobname"\@empty
- \space\noexpand\@empty}
-\def\blx@tempa#1 #2{%
- #1\ifx#2\@empty\else
- \string_\expandafter\blx@tempa
- \fi#2}
-\xdef\blx@ctrlfile@bibtex{\blx@ctrlfile@bibtex}
-\endgroup
-
-\def\blx@secinit{%
- \ifcsundef{blx@sort@\the\c@refsection}
- {\global\cslet{blx@sort@\the\c@refsection}\@empty}
- {}%
- \ifcsundef{blx@sbib@\the\c@refsection}
- {\global\cslet{blx@sbib@\the\c@refsection}\@empty}
- {}%
- \ifcsundef{blx@bsee@\the\c@refsection}
- {\global\cslet{blx@bsee@\the\c@refsection}\@empty}
- {}%
- \ifcsundef{blx@fsee@\the\c@refsection}
- {\global\cslet{blx@fsee@\the\c@refsection}\@empty}
- {}%
- \ifcsundef{blx@losh@\the\c@refsection}
- {\global\cslet{blx@losh@\the\c@refsection}\@empty}
- {}%
- \blx@ibidreset@force
- \blx@idemreset@force
- \blx@opcitreset@force
- \blx@loccitreset@force
- \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment}
- {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty}
- {}}
-
-%% Auxiliary commands
-
-\protected\def\blx@safe@actives{%
- \let\blx@if@safe@actives\if@safe@actives
- \let\if@safe@actives\iftrue}
-
-\protected\def\blx@rest@actives{%
- \let\if@safe@actives\blx@if@safe@actives}
-
-\protected\def\blx@regimc#1{%
- \xappto\blx@blxinit{%
- \let\noexpand#1\expandafter\noexpand\csname
- blx@imc@\expandafter\@gobble\string#1\endcsname}}
-
-\protected\def\blx@regimcs#1{\blx@regimcs@i#1&}
-\def\blx@regimcs@i#1{%
- \ifx#1&\else
- \blx@regimc#1%
- \expandafter\blx@regimcs@i
- \fi}
-
-% {<field>} => \do{<item1>}\do{<item2>}...
-
-\def\blx@imc@docsvfield#1{%
- \blx@imc@iffieldundef{#1}
- {}
- {\expandafter\expandafter\expandafter\docsvlist
- \expandafter\expandafter\expandafter{%
- \csname abx@field@#1\endcsname}}}
-
-% {<handler>}{<field>} => <handler>{<item1>}<handler>{<item2>}...
-
-\def\blx@imc@forcsvfield#1#2{%
- \blx@imc@iffieldundef{#2}
- {}
- {\expandafter\expandafter\expandafter\blx@imc@forcsvfield@i
- \expandafter\expandafter\expandafter{%
- \csname abx@field@#2\endcsname}{#1}}}
-
-\def\blx@imc@forcsvfield@i#1#2{\forcsvlist{#2}{#1}}
-
-\blx@regimcs{\docsvfield \forcsvfield}
-
-% {<list>|<listmacro>}
-
-\protected\long\def\blx@listloop#1{%
- \expandafter\blx@listloop@i#1|&}
-\long\def\blx@listloop@i#1|{%
- \ifblank{#1}
- {\blx@break}
- {\blx@do{#1}\blx@listloop@i}}
-
-\long\def\blx@break#1&{%
- \blx@done
- \undef\blx@do
- \undef\blx@done}
-
-% {<listmacro>}{<listcsname>} => matches in <listmacro>
-
-\protected\def\blx@filter#1#2{%
- \def\do##1{%
- \ifinlistcs{##1}{#2}
- {\listadd#1{##1}}
- {}}%
- \blx@runfilter#1}
-
-% {<listmacro>}{<listcsname>} => matches in <listmacro>
-% Slightly odd use of filtering to do citation sorting.
-% Same as blx@filter but it keeps \tempcnta in step with the
-% resulting number of things in the filtered list. This is
-% because \tempcnta is used to set citetotal - this use
-% of filtering for cite sorting has the side-effect of stripping
-% duplicated like \cite{foo,foo} but we need then to keep citetotal
-% in sync.
-
-\protected\def\blx@filtercitesort#1#2{%
- \blx@tempcnta\z@
- \def\do##1{%
- \ifinlistcs{##1}{#2}
- {\listadd#1{##1}%
- \advance\blx@tempcnta\@ne}
- {}}%
- \blx@runfilter#1}
-
-% {<listmacro>}{<listcsname>} => neg. matches in <listmacro>
-
-\protected\def\blx@notfilter#1#2{%
- \def\do##1{%
- \ifinlistcs{##1}{#2}
- {}
- {\listadd#1{##1}}}%
- \blx@runfilter#1}
-
-\def\blx@runfilter#1{%
- \begingroup\edef#1{\endgroup
- \unexpanded{\let#1\@empty\dolistloop}{#1}}%
- #1\let\do\noexpand}
-
-% {<code>}{<string>} => <code>{<string>}
-
-\protected\def\blx@xsanitizeafter#1#2{%
- \begingroup
- \abx@hook@xsanitize
- \def\blx@tempa{\endgroup#1}%
- \edef\blx@tempb{#2}%
- \expandafter\blx@tempa
- \expandafter{\detokenize\expandafter{\blx@tempb}}}
-
-\def\abx@hook@xsanitize{%
- \blx@safe@actives
- \let\protect\string}
-
-% {<code>}{<string>} => <code>{<string>}
-
-\begingroup
-\catcode`\<=\active
-\catcode`\>=\active
-\catcode`\&=\active
-\catcode`\"=\active
-\catcode`\'=\active
-\protected\gdef\blx@xmlsanitizeafter#1#2{%
- \begingroup
- \abx@hook@xsanitize
- \def\blx@tempa{\endgroup#1}%
- \edef\blx@tempb{#2}%
- \let\do\@makeother
- \dospecials
- \catcode`\<=\active
- \catcode`\>=\active
- \catcode`\&=\active
- \catcode`\"=\active
- \catcode`\'=\active
- \edef<{\string&lt\string;}%
- \edef>{\string&gt\string;}%
- \edef&{\string&amp\string;}%
- \edef"{\string&quot\string;}%
- \edef'{\string&apos\string;}%
- \endlinechar\m@ne
- \everyeof{\noexpand}%
- \edef\blx@tempb{\scantokens\expandafter{\blx@tempb}}%
- \expandafter\blx@tempa
- \expandafter{\detokenize\expandafter{\blx@tempb}}}
-\endgroup
-
-% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>}
-
-\protected\long\def\blx@inputonce#1#2#3#4#5#6{%
- \ifcsundef{blx@file@#1}
- {\blx@info@noline{Trying to load #2..}%
- \IfFileExists{#1}
- {\blx@info@noline{... file '#1' found}%
- \listxadd\blx@list@req@stat{#1}%
- #3\@@input\@filef@und#4#5}
- {\blx@info@noline{... file '#1' not found}#6}%
- \global\csdef{blx@file@#1}{}%
- \@addtofilelist{#1}}
- {#5}}
-
-% {<write>}{<precode>}{<string>}
-
-\protected\def\blx@auxwrite#1#2#3{%
- \if@filesw
- \begingroup
- \blx@safe@actives
- \let\protect\string
- #2%
- \immediate\write#1{#3}%
- \endgroup
- \fi}
-
-\def\blx@auxinit@bibtex#1{%
- \blx@auxwrite\blx@auxout@bibtex
- {\def\do##1{,\blx@stripbib{##1}}}
- {\ifx\blx@auxout@bibtex\@mainaux
- \else
- \blx@msg@aux
- \fi
- \string\bibstyle{biblatex}\blx@nl
- \string\bibdata{%
- \blx@ctrlfile@bibtex\blxauxsuffix
- \ifx#1\@empty
- \else
- \dolistloop#1%
- \fi}\blx@nl
- \string\citation{biblatex-control}}}
-
-% {<file>}{<signature>}{<true>}{<false>}
-
-\def\blx@ifsigned#1#2{%
- \begingroup
- \let\blx@tempa\@firstoftwo
- \edef\blx@tempb{\csuse{blx@sig@#2}}%
- \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}%
- \openin\blx@auxin #1.#2\relax
- \ifeof\blx@auxin
- \else
- \endlinechar\m@ne
- \readline\blx@auxin to \blx@tempc
- \ifeof\blx@auxin
- \else
- \ifx\blx@tempb\blx@tempc
- \readline\blx@auxin to \blx@tempc
- \edef\blx@tempb{\csuse{blx@ver@#2}}%
- \edef\blx@tempb{\detokenize\expandafter{\blx@tempb}}%
- \ifx\blx@tempb\blx@tempc
- \else
- \blx@warning@noline{%
- File '#1.#2' created by wrong version}
- \fi
- \else
- \blx@error
- {File '#1.#2' not created by biblatex}
- {This file was apparently not created by biblatex.
- Rename it or\MessageBreak move it to a location were
- TeX will not find it. If this error\MessageBreak
- persists, consider redefining \string\blxauxsuffix.%
- See the biblatex\MessageBreak manual for details}%
- \let\blx@tempa\@secondoftwo
- \fi
- \fi
- \fi
- \closein\blx@auxin
- \expandafter\endgroup\blx@tempa}
-
-\def\blx@sig@bib{@Comment{$ biblatex control file $}}
-\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}}
-\edef\blx@sig@aux{\@percentchar\space $ biblatex auxiliary file $}
-\edef\blx@ver@aux{\@percentchar\space$ biblatex version \blx@bblversion\space $}
-\let\blx@sig@bbl\blx@sig@aux
-\let\blx@ver@bbl\blx@ver@aux
-\edef\blx@sig@bcf{\detokenize{<?xml version="1.0" encoding="UTF-8"?>}}
-\edef\blx@ver@bcf{%
- \detokenize{<bcf:controlfile version="}\blx@bblversion
- \detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}}
-
-\edef\blx@msg@aux{%
- \blx@sig@aux\blx@nl
- \blx@ver@aux\blx@nl
- \@percentchar\space Do not modify this file!\blx@nl
- \@percentchar\blx@nl
- \@percentchar\space This is an auxiliary file
- used by the 'biblatex' package.\blx@nl
- \@percentchar\space This file may safely be deleted.
- It will be recreated as\blx@nl
- \@percentchar\space required.\blx@nl
- \@percentchar\blx@nl\string\relax\blx@nl}
-\edef\blx@msg@bib{%
- \blx@sig@bib\blx@nl
- \blx@ver@bib\blx@nl
- Do not modify this file!\blx@nl\blx@nl
- This is an auxiliary file used
- by the 'biblatex' package.\blx@nl
- This file may safely be deleted.
- It will be recreated as\blx@nl
- required.\blx@nl\blx@nl}
-
-% {<true>}{<false>}
-
-\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{%
- test {\ifdefstring\inputencodingname{utf8}}
- or
- test {\ifdefstring\inputencodingname{utf8x}}
- or
- test {\ifdefstring\inputencodingname{lutf8}}
- or
- ( test {\ifundef\inputencodingname}
- and
- ( not test {\ifundef\XeTeXrevision}
- or
- not test {\ifundef\luatexversion}
- )
- )
-}}
-
-%% User feedback
-
-\protected\def\blx@error#1#2{%
- \begingroup
- \blx@safe@actives
- \PackageError{biblatex}{#1}{#2.}%
- \endgroup}
-
-\protected\def\blx@warning@noline#1{%
- \begingroup
- \blx@safe@actives
- \PackageWarningNoLine{biblatex}{#1}%
- \endgroup}
-\let\blx@warning\blx@warning@noline
-\AtEndOfPackage{
- \protected\def\blx@warning#1{%
- \begingroup
- \blx@safe@actives
- \PackageWarning{biblatex}{#1}%
- \endgroup}}
-
-\protected\def\blx@warning@entry#1{%
- \ifdef\abx@field@entrykey
- {\blx@warning{#1\MessageBreak at entry '\abx@field@entrykey'}}
- {\blx@warning{#1}}}
-
-\protected\def\blx@info@noline#1{%
- \begingroup
- \blx@safe@actives
- \PackageInfo{biblatex}{#1\@gobble}%
- \endgroup}
-\let\blx@info\blx@info@noline
-\AtEndOfPackage{
- \protected\def\blx@info#1{%
- \begingroup
- \blx@safe@actives
- \PackageInfo{biblatex}{#1}%
- \endgroup}}
-
-\let\blx@noline\@gobble
-\AtEndOfPackage{\let\blx@noline\@empty}
-\def\blx@imc@BibliographyWarning{\blx@warning@entry}
-\blx@regimc\BibliographyWarning
-
-\protected\def\abx@missing#1{%
- \mbox{\reset@font\bfseries#1}}
-
-\def\blx@err@patch#1{%
- \blx@error
- {Patching #1 failed}
- {This is an internal issue typically caused by a
- conflict\MessageBreak between biblatex and some
- other package. Modifying\MessageBreak the package
- loading order may fix the problem}}
-
-\def\blx@err@nolang#1{%
- \blx@error
- {Language '#1' not found}
- {The localization module for '#1' could not be found}}
-
-\def\blx@err@invarg#1#2{%
- \blx@error
- {Argument '#1' invalid}
- {\ifblank{#2}
- {The argument you have supplied is invalid.\MessageBreak
- See the biblatex manual for details}
- {#2}}}
-
-\def\blx@err@invopt#1#2{%
- \blx@error
- {Option '#1' invalid}
- {\ifblank{#2}
- {The option you have supplied is invalid.\MessageBreak
- See the biblatex manual for valid option keys and
- possible values}
- {#2}}}
-
-\def\blx@err@confopt#1#2{%
- \blx@error
- {Conflicting options\ifblank{#1}{}{ (#1)}}
- {\ifblank{#2}
- {The option you have supplied conflicts with another one.\MessageBreak
- See the biblatex manual for valid option keys and possible values}
- {#2}}}
-
-\def\blx@err@optdef#1{%
- \blx@error
- {Conflicting options}
- {The option '#1' is already defined}}
-
-\def\blx@err@nodocdiv#1{%
- \blx@error
- {\@backslashchar#1 not provided by class}
- {The document class does not seems to support #1s}}
-
-\def\blx@err@nosec#1{%
- \blx@error
- {Section '#1' not found}
- {The reference section '#1' could not be found}}
-
-\def\blx@err@secfirst{%
- \blx@error
- {'section' not first filter}
- {When passing multiple filter options,
- the 'section' filter must be given first}}
-
-\protected\def\blx@err@nestcite{%
- \blx@error
- {Nested citation command}
- {Citation commands may not be nested}}
-
-\def\blx@err@nestenv#1{%
- \blx@error
- {Nested '#1' environment}
- {This environment may not be nested}}
-
-\protected\def\blx@err@citecmd#1{%
- \begingroup
- \escapechar\m@ne
- \blx@error
- {Command '\@backslashchar\string#1' undefined}
- {The citation command '\@backslashchar\string#1'
- has not been defined\MessageBreak by the
- selected citation style}%
- \endgroup}
-
-\def\blx@err@endnote#1{%
- \blx@error
- {Missing or incomplete endnote support}
- {There does not seem to be endnote support available\MessageBreak
- or the available support is incomplete.\MessageBreak
- If you continue, I will fall back to '\string#1'}%
- #1}
-
-\def\blx@err@matchparen#1{%
- \blx@error
- {Unbalanced parentheses or brackets}
- {\iftoggle{blx@footnote}{#1 in foot or endnote}{#1}.\MessageBreak
- This error is triggered if \string\bibopenparen\space and
- \string\bibcloseparen\MessageBreak or
- \string\bibopenbracket\space and \string\bibclosebracket\space
- are unbalanced\MessageBreak or mismatched}}
-
-\def\blx@err@nestparen#1{%
- \blx@error
- {Too deeply nested parentheses or brackets}
- {#1 nested too deeply%
- \iftoggle{blx@footnote}{\space in foot or endnote}{}.\MessageBreak
- This error may also be triggered if \string\mkbibparens\MessageBreak
- or \string\mkbibbrackets\space are nested too deeply}}
-
-\def\blx@err@filter{%
- \blx@error
- {Invalid filter expression}
- {The filter expression you have supplied is invalid.\MessageBreak
- See the biblatex manual for details}}
-
-\def\blx@warn@nohyph#1{%
- \blx@warning{No hyphenation patterns for '#1'}}
-
-\protected\def\blx@warn@citecmd#1#2{%
- \blx@warning{%
- '\string#1' not defined by citation style.\MessageBreak
- Falling back to '\string#2'}%
- #2}
-
-\protected\def\blx@warn@nostring#1{%
- \blx@warning@entry{Bibliography string '#1' undefined}%
- \abx@missing{#1}}
-
-\def\blx@warn@conflopt#1{%
- \blx@warning{Conflicting options.\MessageBreak#1}}
-
-\def\blx@warn@depropt#1{%
- \blx@warning{Deprecated option.\MessageBreak Ignoring '#1'}}
-
-\def\blx@warn@bibempty{%
- \@latex@warning{Empty bibliography}}
-
-\def\blx@warn@losempty{%
- \@latex@warning{Empty list of shorthands}}
-
-\def\blx@inf@refsec{%
- \blx@info{Reference section=\the\c@refsection}}%
-
-\def\blx@inf@refseg{%
- \ifnum\c@refsection=\z@
- \blx@info{Reference segment=\the\c@refsegment}%
- \else
- \blx@info{%
- Reference section/segment=%
- \the\c@refsection/\the\c@refsegment}%
- \fi}
-
-\def\blx@inf@creset{%
- \blx@info{Resetting trackers}}%
-
-\def\blx@msg@cundef#1{%
- Citation '#1' undefined}
-\def\blx@msg@cundefon#1{%
- Citation '#1' on page \the\c@page\space undefined}
-
-\newrobustcmd*{\RequireBiber}[1][2]{%
- \ifnumgreater{#1}\blx@reqbiber
- {\numgdef\blx@reqbiber{#1}}
- {}%
- \blx@checkbackend{style}}
-\@onlypreamble\RequireBiber
-\let\blx@reqbiber\z@
-
-\def\blx@checkbackend#1{%
- \ifblx@load@version@legacy
- {\ifcase\blx@reqbiber
- \or
- \blx@info@noline{%
- backend=biber recommended by #1}%
- \or
- \blx@warning@noline{%
- backend=biber required by #1.\MessageBreak
- Some features may not work properly}%
- \else
- \blx@error
- {backend=biber required by #1}
- {The selected style or one of the .bib files
- requires backend=biber.\MessageBreak It will
- not work at all with any other backend}%
- \fi}
- {}}
-
-% \blx@list@active active aux files (basename)
-% [internal list]
-% \blx@list@inactive inactive aux files (basename)
-% [internal list]
-% \blx@list@bibfiles@<auxfile> aux file -> bib file mapping (refsections)
-% aux file (basename) -> bib files (full)
-% [internal list]
-
-\let\blx@list@active\@empty
-\let\blx@list@inactive\@empty
-\listeadd\blx@list@inactive{\jobname}
-
-\protected\def\blx@regbibfiles#1#2{%
- \forlistloop{\blx@regbibfile{#1}}{#2}}
-
-\def\blx@regbibfile#1#2{%
- \ifcsundef{blx@res@loca@#2}
- {\blx@regbibfile@i{#1}{#2}}
- {\ifcsstring{blx@res@loca@#2}{local}
- {\blx@regbibfile@i{#1}{#2}}
- {}}}
-
-\def\blx@regbibfile@i#1#2{%
- \ifinlistcs{#2}{blx@list@bibfiles@#1}
- {}
- {\listcsxadd{blx@list@bibfiles@#1}{#2}}}
-
-\def\blx@check@logreq{%
- \begingroup
- \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{%
- \provides[type=dynamic]{
- \def\do##1{\file{##1.aux}}
- \dolistloop\blx@list@inactive
- \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib}
- }
- \requires[type=dynamic]{
- \def\do##1{\file{##1.bbl}}
- \dolistloop\blx@list@inactive
- }
- \ifdef\blx@list@req@edit
- {\requires[type=editable]{
- \forlistloop\file\blx@list@req@edit
- }}
- {}
- \ifdef\blx@list@req@stat
- {\requires[type=static]{
- \forlistloop\file\blx@list@req@stat
- }}
- {}
- }%
- \def\do##1{%
- \ifinlist{##1}{\blx@list@active}
- {\blx@logreq@bibtex{1}{##1}}
- {\blx@logreq@bibtex{0}{##1}}}%
- \dolistloop\blx@list@inactive
- \endgroup}
-
-\def\blx@logreq@bibtex#1#2{%
- \logrequest[package=biblatex,priority=5,active=#1]{%
- \generic{bibtex}
- \cmdline{%
- \ifcase\blx@backend
- \binary{bibtex}
- \option{-min-crossrefs \blx@mincrossrefs}
- \or
- \binary{bibtex8}
- \option{--wolfgang}
- \option{--min\string_crossrefs \blx@mincrossrefs}
- \ifdef\blx@csfencoding
- {\option{--csfile \blx@csfencoding.csf}}
- {}%
- \or
- \binary{bibtexu}
- \option{--wolfgang}
- \option{--min\string_crossrefs \blx@mincrossrefs}
- \fi
- \infile{#2}
- }
- \input{
- \file{#2.aux}
- }
- \output{
- \file{#2.bbl}
- }
- \provides[type=dynamic]{
- \file{#2.bbl}
- }
- \requires[type=dynamic]{
- \file{#2.aux}
- \file{\blx@ctrlfile@bibtex\blxauxsuffix.bib}
- }
- \requires[type=editable]{
- \ifcsdef{blx@list@bibfiles@#2}
- {\def\do{\file}
- \dolistcsloop{blx@list@bibfiles@#2}}
- {}
- }
- \requires[type=static]{
- \file{biblatex.bst}
- \ifnum\blx@backend=\blx@backend@bibtexe
- \ifdef\blx@csfencoding
- {\file{\blx@csfencoding.csf}}
- {}%
- \fi
- }
- }%
-}
-
-\def\blx@logreq@active#1{%
- \xifinlist{\blx@auxfile@bibtex}{\blx@list@active}
- {}
- {\listxadd\blx@list@active{\blx@auxfile@bibtex}}%
- \ifblank{#1}
- {}
- {\@latex@warning{#1}}%
- \blx@rerun@latex
- \blx@rerun@bibtex}
-
-\def\blx@logreq@inactive{%
- \xifinlist{\blx@auxfile@bibtex}{\blx@list@inactive}
- {}
- {\listxadd\blx@list@inactive{\blx@auxfile@bibtex}}}
-
-\def\blx@rerun@latex{%
- \G@refundefinedtrue
- \global\toggletrue{blx@runltx}%
- \global\let\blx@rerun@latex\relax}
-
-\def\blx@rerun@bibtex{%
- \global\toggletrue{blx@runbtx}%
- \global\let\blx@rerun@bibtex\relax}
-
-\let\blx@checksum@old\@empty
-\let\blx@checksum@new\@empty
-\let\blx@pagesum@old\@empty
-\let\blx@pagesum@new\@empty
-
-\def\blx@checksum#1#2#3{%
- \begingroup
- \blx@tempcnta\the\numexpr0#2*0#3\relax
- \blx@tempcntb\blx@tempcnta
- \divide\blx@tempcntb10
- \multiply\blx@tempcntb10
- \advance\blx@tempcnta-\blx@tempcntb
- \xdef#1{#1\the\blx@tempcnta}%
- \endgroup}
-
-\def\blx@addchecksum{\blx@checksum\blx@checksum@old}
-\def\blx@addpagesum{\blx@checksum\blx@pagesum@old}
-\AtEndDocument{%
- \def\blx@addchecksum{\blx@checksum\blx@checksum@new}%
- \def\blx@addpagesum{\blx@checksum\blx@pagesum@new}}
-
-\protected\def\blx@check@rerun{%
- \begingroup
- \blx@tempcnta\z@
- \iftoggle{blx@runltx}
- {\blx@tempcnta\@ne}
- {\ifx\blx@checksum@old\blx@checksum@new
- \ifx\blx@pagesum@old\blx@pagesum@new
- \else
- \blx@tempcnta\@ne
- \fi
- \else
- \blx@tempcnta\@ne
- \fi}%
- \iftoggle{blx@runbtx}
- {\advance\blx@tempcnta\tw@}
- {}%
- \ifcase\blx@tempcnta
- \or
- \blx@rerun@latex
- \blx@warning@noline{%
- Please rerun LaTeX%
- \ifx\blx@pagesum@old\blx@pagesum@new\else
- .\MessageBreak Page breaks have changed%
- \fi}%
- \else
- \blx@rerun@latex
- \blx@warn@auxlist
- \fi
- \endgroup}
-
-\def\blx@warn@auxlist{%
- \begingroup
- \edef\blx@tempa{Please (re)run BibTeX on the file(s):}%
- \def\do##1{\appto\blx@tempa{\MessageBreak##1}}%
- \dolistloop\blx@list@active
- \blx@warning@noline{%
- \blx@tempa\MessageBreak
- and rerun LaTeX afterwards}%
- \endgroup}
-
-\AfterEndDocument{%
- \blx@check@rerun
- \blx@check@logreq}
-
-%% Punctuation and capitalization
-
-% 1001 apostrophe (\printnames only)
-% 1002 abbreviation period (dot)
-% 1003/1250 comma
-% 1004/1500 semicolon
-% 1005/2000 colon
-% 1006/3000 period
-% 1007/3001 exclamation mark
-% 1008/3002 question mark
-% 1009 suppress punctuation
-% 1010 new paragaph
-
-\mathchardef\blx@sf@prefixchar=1001
-\mathchardef\blx@sf@dot=1002
-\mathchardef\blx@sf@comma=1003
-\mathchardef\blx@sf@semicolon=1004
-\mathchardef\blx@sf@colon=1005
-\mathchardef\blx@sf@period=1006
-\mathchardef\blx@sf@exclam=1007
-\mathchardef\blx@sf@question=1008
-\mathchardef\blx@sf@nopunct=1009
-\mathchardef\blx@sf@par=1010
-\mathchardef\blx@sf@threshold@low=1002
-\mathchardef\blx@sf@threshold@high=1009
-
-\csdef{blx@sf@1250}{\the\blx@sf@comma}
-\csdef{blx@sf@1500}{\the\blx@sf@semicolon}
-\csdef{blx@sf@2000}{\the\blx@sf@colon}
-\csdef{blx@sf@3000}{\the\blx@sf@period}
-\csdef{blx@sf@3001}{\the\blx@sf@exclam}
-\csdef{blx@sf@3002}{\the\blx@sf@question}
-
-\csdef{blx@pm@,}{comma}
-\csdef{blx@pm@;}{semicolon}
-\csdef{blx@pm@:}{colon}
-\csdef{blx@pm@.}{period}
-\csdef{blx@pm@!}{exclam}
-\csdef{blx@pm@?}{question}
-
-\def\blx@setsfcodes{%
- \let\blx@setsfcodes\relax
- \let\frenchspacing\blx@setfrcodes
- \let\nonfrenchspacing\blx@setencodes
- \ifnum\sfcode`\.>2000
- \blx@setencodes
- \else
- \blx@setfrcodes
- \fi
- \@setquotesfcodes
- \sfcode`\(=\z@
- \sfcode`\)=\z@
- \sfcode`\[=\z@
- \sfcode`\]=\z@
- \sfcode`\<=\z@
- \sfcode`\>=\z@}
-
-\def\blx@setfrcodes{%
- \ifnum\sfcode`\A=\@m
- \else
- \blx@setazcodes
- \fi
- \sfcode`\,=\blx@sf@comma
- \sfcode`\;=\blx@sf@semicolon
- \sfcode`\:=\blx@sf@colon
- \sfcode`\.=\blx@sf@period
- \sfcode`\!=\blx@sf@exclam
- \sfcode`\?=\blx@sf@question
-}
-
-\def\blx@setencodes{%
- \sfcode`\,=1250
- \sfcode`\;=1500
- \sfcode`\:=2000
- \sfcode`\.=3000
- \sfcode`\!=3001
- \sfcode`\?=3002
-}
-
-% Defining characters that count as prefices in names like d'Argent
-% Code from moewe
-\let\blx@prefchars\@empty
-
-\def\blx@defprefchars@loop#1{%
- \ifx#1\relax
- \else
- \listadd{\blx@prefchars}{#1}%
- \expandafter\blx@defprefchars@loop
- \fi}
-
-\def\blx@defprefchars#1{%
- \expandafter\blx@defprefchars@loop\detokenize{#1}\relax}
-
-\newrobustcmd*{\DeclarePrefChars}{%
- \@ifstar
- {\blx@defprefchars}
- {\let\blx@prefchars\@empty
- \blx@defprefchars}}
-\DeclarePrefChars{'}
-
-\protected\def\blx@imc@ifprefchar{%
- \ifhmode
- \begingroup
- \ifnum\spacefactor=\blx@sf@prefixchar
- \endgroup
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \endgroup
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@secondoftwo
- \fi}
-
-\blx@regimcs{\ifprefchar}
-
-\def\blx@namecodes{%
- \ifnum\sfcode`\A=\@m
- \else
- \blx@setazcodes
- \fi
- \def\do##1{\sfcode`##1=\blx@sf@prefixchar}%
- \dolistloop\blx@prefchars
-}
-
-\begingroup
-\let\blx@setazcodes\@empty
-\def\blx@tempa{%
- \xdef\blx@setazcodes{%
- \blx@setazcodes
- \sfcode\the\blx@tempcnta=\@m}
- \ifnum\blx@tempcnta<\blx@tempcntb
- \advance\blx@tempcnta\@ne
- \expandafter\blx@tempa
- \fi}
-\blx@tempcnta`\A
-\blx@tempcntb`\Z
-\blx@tempa
-\ifnum\inputlineno=\m@ne\else
- \blx@tempcnta"80
- \blx@tempcntb"9C
- \blx@tempa
- \blx@tempcnta"C0
- \blx@tempcntb"DF
- \blx@tempa
-\fi
-\endgroup
-
-\def\blx@spacefactor{%
- \ifhmode
- \ifcsundef{blx@sf@\the\spacefactor}
- {\the\spacefactor}
- {\csname blx@sf@\the\spacefactor\endcsname}%
- \else
- \the\blx@sf@par
- \fi}
-
-\protected\def\blx@leavevmode{%
- \ifhmode
- \else
- \leavevmode\spacefactor\blx@sf@par
- \fi}
-
-\protected\def\blx@leavevmode@cite{%
- \ifhmode
- \ifnum\spacefactor=\blx@sf@par
- \else
- \spacefactor\@m
- \fi
- \else
- \leavevmode
- \fi}
-
-\protected\def\blx@imc@setpunctfont#1{%
- \blx@ifpuncthook
- {\gdef\abx@puncthook{%
- \ifdim\lastkern>\z@\unkern\fi
- \blx@imc@resetpunctfont#1}}
- {}}
-\protected\def\blx@imc@resetpunctfont{%
- \blx@ifpuncthook
- {\global\let\abx@puncthook\@firstofone}
- {}}
-
-\protected\def\blx@setpostpunct#1{%
- \blx@ifuspunct
- {\global\let\blx@postpunct\blx@dopostpunct
- \ifdef\blx@thepostpunct
- {\gappto\blx@thepostpunct{#1}}
- {\gdef\blx@thepostpunct{#1}}}
- {}}
-
-\def\blx@dopostpunct{%
- \blx@thepostpunct
- \global\let\blx@postpunct\@empty
- \global\undef\blx@thepostpunct}
-
-\protected\def\blx@postpunct@agroup{%
- \aftergroup\blx@postpunct
- \let\blx@postpunct@agroup\@empty}
-
-% {<characters>}
-
-\newrobustcmd*{\DeclareCapitalPunctuation}[1]{%
- \cslet{blx@cap@\the\blx@sf@par}\@empty
- \csundef{blx@cap@\the\blx@sf@comma}%
- \csundef{blx@cap@\the\blx@sf@semicolon}%
- \csundef{blx@cap@\the\blx@sf@colon}%
- \csundef{blx@cap@\the\blx@sf@period}%
- \csundef{blx@cap@\the\blx@sf@exclam}%
- \csundef{blx@cap@\the\blx@sf@question}%
- \ifblank{#1}
- {}
- {\expandafter\blx@defcapstring\detokenize{#1}\relax}}
-
-\def\blx@defcapstring#1{%
- \ifx#1\relax
- \else
- \begingroup
- \blx@setfrcodes
- \ifcsdef{blx@pm@#1}
- {\expandafter\endgroup
- \expandafter\let
- \csname blx@cap@\the\sfcode`#1\endcsname\@empty}
- {\blx@warning{Ignoring invalid punctuation mark '#1'}%
- \endgroup}%
- \expandafter\blx@defcapstring
- \fi}
-
-% {<characters>}
-
-\newrobustcmd*{\DeclareQuotePunctuation}[1]{%
- \csdef{blx@qp@comma}{\blx@postpunct}%
- \csdef{blx@qp@semicolon}{\blx@postpunct}%
- \csdef{blx@qp@colon}{\blx@postpunct}%
- \csdef{blx@qp@period}{\blx@postpunct}%
- \csdef{blx@qp@exclam}{\blx@postpunct}%
- \csdef{blx@qp@question}{\blx@postpunct}%
- \cslet{blx@pq@comma}\@empty
- \cslet{blx@pq@semicolon}\@empty
- \cslet{blx@pq@colon}\@empty
- \cslet{blx@pq@period}\@empty
- \cslet{blx@pq@exclam}\@empty
- \cslet{blx@pq@question}\@empty
- \let\blx@quotepunct\@empty
- \ifblank{#1}
- {\let\blx@ifuspunct\@secondoftwo}
- {\let\blx@ifuspunct\@firstoftwo
- \expandafter\blx@defquotepunct\detokenize{#1}&}}
-
-\def\blx@defquotepunct#1{%
- \ifx&#1\relax
- \else
- \ifcsdef{blx@pm@#1}
- {\appto\blx@quotepunct{#1}%
- \cslet{blx@qp@\csuse{blx@pm@#1}}\@empty
- \csdef{blx@pq@\csuse{blx@pm@#1}}{\blx@postpunct}}
- {\blx@warning{Ignoring invalid punctuation mark '#1'}}%
- \expandafter\blx@defquotepunct
- \fi}
-
-% {<mark>}{<characters>}
-
-\newrobustcmd*{\DeclarePunctuationPairs}[2]{%
- \ifcsdef{blx@sf@\detokenize{#1}}
- {\ifnum\csname blx@sf@\detokenize{#1}\endcsname>\blx@sf@prefixchar
- \ifnum\csname blx@sf@\detokenize{#1}\endcsname<\blx@sf@nopunct
- \expandafter\blx@defpunctpairs
- \expandafter{\the\csname blx@sf@\detokenize{#1}\endcsname}{#2}%
- \else
- \blx@err@invarg{\detokenize{#1}{}}%
- \fi
- \else
- \blx@err@invarg{\detokenize{#1}{}}%
- \fi}
- {\blx@err@invarg{\detokenize{#1}{}}}}
-
-\def\blx@defpunctpairs#1#2{%
- \blx@undefpair{#1}{\the\blx@sf@dot}%
- \blx@undefpair{#1}{\the\blx@sf@comma}%
- \blx@undefpair{#1}{\the\blx@sf@semicolon}%
- \blx@undefpair{#1}{\the\blx@sf@colon}%
- \blx@undefpair{#1}{\the\blx@sf@period}%
- \blx@undefpair{#1}{\the\blx@sf@exclam}%
- \blx@undefpair{#1}{\the\blx@sf@question}%
- \ifblank{#2}
- {}
- {\begingroup
- \def\blx@tempa{#1}%
- \let\blx@tempb\@empty
- \blx@setfrcodes
- \sfcode`\*=\blx@sf@dot
- \expandafter\blx@defpair\detokenize{#2}&%
- \expandafter\endgroup\blx@tempb}}
-
-\def\blx@defpair#1{%
- \ifx&#1%
- \else
- \ifnum\the\sfcode`#1>\blx@sf@prefixchar
- \ifnum\the\sfcode`#1<\blx@sf@nopunct
- \eappto\blx@tempb{%
- \cslet{blx@pp@\blx@tempa @\the\sfcode`#1}\noexpand\@empty}%
- \else
- \blx@err@invarg{#1}{}%
- \fi
- \else
- \blx@err@invarg{#1}{}%
- \fi
- \expandafter\blx@defpair
- \fi}
-
-\def\blx@undefpair#1#2{%
- \ifcsdef{blx@pp@#1@#2}
- {\csundef{blx@pp@#1@#2}}
- {}}
-
-\protected\def\blx@resetpunct{%
- \DeclareCapitalPunctuation{.!?}%
- \DeclarePunctuationPairs{dot}{}%
- \DeclarePunctuationPairs{comma}{*!?}%
- \DeclarePunctuationPairs{semicolon}{*!?}%
- \DeclarePunctuationPairs{colon}{*!?}%
- \DeclarePunctuationPairs{period}{}%
- \DeclarePunctuationPairs{exclam}{*}%
- \DeclarePunctuationPairs{question}{*}%
- \DeclareQuotePunctuation{}%
- \def\abx@dot{\ifdim\lastkern>\z@\unkern\fi.\spacefactor\blx@sf@dot}%
- \def\abx@comma{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{,}}%
- \def\abx@semicolon{\abx@puncthook{;}}%
- \def\abx@colon{\abx@puncthook{:}}%
- \def\abx@period{\ifdim\lastkern>\z@\unkern\fi\abx@puncthook{.}}%
- \def\abx@exclam{\abx@puncthook{!}}%
- \def\abx@question{\abx@puncthook{?}}%
- \global\let\abx@puncthook\@firstofone
- \global\let\blx@postpunct\@empty}
-
-\blx@resetpunct
-
-% {<character>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifpunctmark#1{%
- \ifhmode
- \begingroup
- \sfcode`\*=\blx@sf@dot
- \ifnum\sfcode`#1=\spacefactor
- \endgroup
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \endgroup
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<true>}{<false>}
-
-\protected\def\blx@imc@ifterm{%
- \ifhmode
- \expandafter\blx@imc@ifcapital
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<true>}{<false>}
-
-\protected\def\blx@imc@ifcapital{%
- \ifcsdef{blx@cap@\blx@spacefactor}}
-
-% {<true>}{<false>}
-
-\protected\def\blx@imc@ifpunct{%
- \ifnum\blx@spacefactor>\blx@sf@threshold@low
- \ifnum\blx@spacefactor<\blx@sf@threshold@high
- \expandafter\expandafter
- \expandafter\@firstoftwo
- \else
- \expandafter\expandafter
- \expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<character>}
-
-\newrobustcmd*{\autocap}[1]{#1}
-
-\protected\def\blx@imc@autocap{%
- \blx@imc@ifcapital\MakeUppercase\@firstofone}
-
-\protected\def\blx@imc@nopunct{%
- \leavevmode\spacefactor\blx@sf@nopunct}
-
-\protected\def\blx@imc@isdot{%
- \ifnum\blx@spacefactor=\blx@sf@period
- \spacefactor\blx@sf@dot
- \fi}
-
-\protected\def\blx@imc@adddot{%
- \blx@addpunct{dot}%
- \ifnum\blx@spacefactor=\blx@sf@period
- \spacefactor\blx@sf@dot
- \fi}
-
-\protected\def\blx@imc@addperiod{%
- \blx@addpunct{period}%
- \ifnum\blx@spacefactor=\blx@sf@dot
- \spacefactor\blx@sf@period
- \fi}
-
-\protected\def\blx@imc@addcomma{\blx@addpunct{comma}}
-\protected\def\blx@imc@addsemicolon{\blx@addpunct{semicolon}}
-\protected\def\blx@imc@addcolon{\blx@addpunct{colon}}
-\protected\def\blx@imc@addexclam{\blx@addpunct{exclam}}
-\protected\def\blx@imc@addquestion{\blx@addpunct{question}}
-
-\def\blx@addpunct#1{%
- \unspace
- \ifnum\blx@spacefactor<\blx@sf@threshold@low
- \csuse{blx@qp@#1}\csuse{abx@#1}%
- \else
- \ifnum\blx@spacefactor>\blx@sf@threshold@high
- \csuse{blx@qp@#1}\csuse{abx@#1}%
- \else
- \ifcsdef{blx@pp@\the\csname blx@sf@#1\endcsname @\blx@spacefactor}
- {\csuse{blx@qp@#1}\csuse{abx@#1}}
- {\csuse{blx@qp@#1}}%
- \fi
- \fi
- \csuse{blx@pq@#1}}
-
-\providerobustcmd*{\unspace}{%
- \ifbool{hmode}
- {\ifdimgreater\lastskip\z@
- {\unskip\unspace}
- {\ifnumgreater\lastpenalty\z@
- {\unpenalty\unspace}
- {}}}
- {}}
-
-\newrobustcmd*{\bibsentence}{%
- \leavevmode\spacefactor\blx@sf@par
- \ignorespaces}
-
-\newrobustcmd*{\midsentence}{%
- \leavevmode
- \@ifstar
- {\ifnum\spacefactor=\blx@sf@dot
- \else
- \spacefactor\@m
- \fi}
- {\spacefactor\@m}}
-
-\newrobustcmd*{\addslash}{%
- \unspace/\penalty\hyphenpenalty\hskip\z@skip}
-
-\newrobustcmd*{\addspace}{%
- \unspace\blx@postpunct
- \space\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addnbspace}{%
- \unspace\blx@postpunct
- \nobreak\space\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addthinspace}{%
- \unspace\blx@postpunct
- \hskip0.16667em\relax
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addnbthinspace}{%
- \unspace\blx@postpunct
- \nobreak\hskip0.16667em\relax
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addlowpenspace}{%
- \unspace\blx@postpunct
- \penalty\value{lownamepenalty}\space
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addhighpenspace}{%
- \unspace\blx@postpunct
- \penalty\value{highnamepenalty}\space
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addlpthinspace}{%
- \unspace\blx@postpunct
- \penalty\value{lownamepenalty}%
- \hskip0.16667em\relax\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addhpthinspace}{%
- \unspace\blx@postpunct
- \penalty\value{highnamepenalty}%
- \hskip0.16667em\relax\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addabbrvspace}{%
- \unspace\blx@postpunct
- \penalty\value{abbrvpenalty}%
- \space\blx@imc@resetpunctfont}
-
-\newrobustcmd*{\addabthinspace}{%
- \unspace\blx@postpunct
- \penalty\value{abbrvpenalty}%
- \hskip0.16667em\relax
- \blx@imc@resetpunctfont}
-
-\newrobustcmd*{\adddotspace}{%
- \unspace\adddot\blx@postpunct
- \penalty\value{abbrvpenalty}%
- \space\blx@imc@resetpunctfont}
-
-\providerobustcmd*{\noligature}{%
- \penalty\@M\discretionary{-}{}{\kern0.03em}%
- \nobreak\hskip\z@skip}
-
-\providerobustcmd*{\hyphen}{%
- \nobreak-\nobreak\hskip\z@skip}
-
-\providerobustcmd*{\nbhyphen}{%
- \nobreak\mbox{-}\nobreak\hskip\z@skip}
-
-\providerobustcmd*{\hyphenate}{%
- \nobreak\-\nobreak\hskip\z@skip}
-
-\providerobustcmd*{\allowhyphens}{%
- \nobreak\hskip\z@skip}
-
-\providerobustcmd*{\nohyphenation}{%
- \lefthyphenmin\@m}
-
-\providerobustcmd*{\textnohyphenation}[1]{%
- \bgroup\nohyphenation#1\egroup}
-
-\blx@regimcs{%
- \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark
- \ifpunct \ifterm \nopunct \isdot \adddot \addperiod \addcomma
- \addsemicolon \addcolon \addexclam \addquestion}
-
-\appto\blx@blxinit{%
- \appto\nocorrlist{\isdot\adddot\addperiod\addcomma}}
-
-%% Style definition
-
-% {<bibstyle>}
-
-\newrobustcmd*{\RequireBibliographyStyle}[1]{%
- \blx@inputonce{#1.bbx}{bibliography style '#1'}{}{}{}
- {\blx@error
- {Style '#1' not found}
- {The bibliography style '#1' could not be found}}}
-\@onlypreamble\RequireBibliographyStyle
-
-% {<code>}
-
-\newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit}
-\@onlypreamble\InitializeBibliographyStyle
-
-% {<entry type>}{<driverdef>}
-
-\newrobustcmd*{\DeclareBibliographyDriver}[1]{%
- \long\csdef{blx@bbx@#1}}
-\@onlypreamble\DeclareBibliographyDriver
-
-% {<entry type>}
-
-\def\blx@driver#1{%
- \ifcsdef{blx@bbx@#1}
- {\csuse{blx@bbx@#1}}
- {\ifcsdef{blx@bbx@*}
- {\blx@warning{%
- No driver for entry type '#1'.\MessageBreak
- Using fallback driver}%
- \csuse{blx@bbx@*}}
- {\blx@error
- {No driver found}
- {I can't find a driver for the entry type
- '\abx@field@entrytype'\MessageBreak
- and there is no fallback driver either}}}}
-
-% {<type>}{<true>}{<false>}
-
-\def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}}
-
-% {<alias>}{<type>}
-
-\newrobustcmd*{\DeclareBibliographyAlias}[2]{%
- \csedef{blx@bbx@#1}{%
- \expandafter\noexpand\csname blx@bbx@#2\endcsname}}
-\@onlypreamble\DeclareBibliographyAlias
-
-% Ignore first optional argument - only used in biblatex2.sty and biber
-% {<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareBibliographyOption}[2][]{%
- \@ifnextchar[%]
- {\blx@defbibopt{#2}}
- {\blx@defbibopt{#2}[]}}
-
-\long\def\blx@defbibopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@ldt@#1}
- {\ifcsundef{KV@blx@opt@pre@#1}
- {\ifblank{#2}
- {\define@key{blx@opt@pre}{#1}{#3}}
- {\define@key{blx@opt@pre}{#1}[#2]{#3}}}
- {\blx@err@optdef{#1}}}
- {\blx@err@optdef{#1}}}
-
-% Ignore first optional argument - only used in biblatex2.sty and biber
-% {<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareTypeOption}[2][]{%
- \@ifnextchar[%]
- {\blx@deftypeopt{#2}}
- {\blx@deftypeopt{#2}[]}}
-
-\long\def\blx@deftypeopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@typ@#1}
- {\ifblank{#2}
- {\define@key{blx@opt@typ}{#1}{#3}}
- {\define@key{blx@opt@typ}{#1}[#2]{#3}}}
- {\blx@err@optdef{#1}}}
-
-% Ignore first optional argument - only used in biblatex2.sty and biber
-% {<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareEntryOption}[2][]{%
- \@ifnextchar[%]
- {\blx@defentryopt{#2}}
- {\blx@defentryopt{#2}[]}}
-
-\long\def\blx@defentryopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@ent@#1}
- {\ifblank{#2}
- {\define@key{blx@opt@ent}{#1}{#3}}
- {\define@key{blx@opt@ent}{#1}[#2]{#3}}}
- {\blx@err@optdef{#1}}}
-
-%% Auxiliary commands
-
-\newrobustcmd*{\citereset}{%
- \csuse{blx@hook@cbxinit}%
- \@ifstar
- {}
- {\global\cslet{blx@bsee@\the\c@refsection}\@empty
- \global\cslet{blx@fsee@\the\c@refsection}\@empty
- \blx@ibidreset@force
- \blx@idemreset@force
- \blx@opcitreset@force
- \blx@loccitreset@force}}
-
-\def\blx@save#1{%
- \ifcsdef{blx@saved@#1}
- {}
- {\blx@safe@actives
- \csletcs{blx@saved@#1}{#1}%
- \blx@rest@actives}}
-
-\def\blx@restore#1{%
- \ifcsdef{blx@saved@#1}
- {\blx@safe@actives
- \csletcs{#1}{blx@saved@#1}%
- \csundef{blx@saved@#1}%
- \blx@rest@actives}
- {}}
-
-\newrobustcmd*{\savecommand}[1]{%
- \ifcsdef{blx@saved@cmd@\detokenize{#1}}
- {}
- {\cslet{blx@saved@cmd@\detokenize{#1}}{#1}}}
-
-\newrobustcmd*{\restorecommand}[1]{%
- \ifcsdef{blx@saved@cmd@\detokenize{#1}}
- {\letcs{#1}{blx@saved@cmd@\detokenize{#1}}%
- \csundef{blx@saved@cmd@\detokenize{#1}}}
- {}}
-
-% {<name>}
-
-\newrobustcmd*{\savebibmacro}[1]{%
- \blx@save{abx@macro@\detokenize{#1}}}
-
-\newrobustcmd*{\restorebibmacro}[1]{%
- \blx@restore{abx@macro@\detokenize{#1}}}
-
-% {<name>}[<args>][<optarg>]{<definition>}
-
-\newrobustcmd*{\newbibmacro}{%
- \@star@or@long\blx@newbibmacro}
-
-\def\blx@newbibmacro#1{%
- \ifcsundef{abx@macro@\detokenize{#1}}
- {\blx@defbibmacro\new@command{#1}}
- {\blx@warning{%
- Macro '\detokenize{#1}' already defined.\MessageBreak
- Using \string\renewbibmacro}
- \blx@defbibmacro\renew@command{#1}}}
-
-\newrobustcmd*{\renewbibmacro}{%
- \@star@or@long\blx@renewbibmacro}
-
-\def\blx@renewbibmacro#1{%
- \ifcsundef{abx@macro@\detokenize{#1}}
- {\blx@warning{%
- Macro '\detokenize{#1}' undefined.\MessageBreak
- Using \string\newbibmacro}
- \blx@defbibmacro\new@command{#1}}
- {\blx@defbibmacro\renew@command{#1}}}
-
-\newrobustcmd*{\providebibmacro}{%
- \@star@or@long{\blx@defbibmacro\provide@command}}
-
-\def\blx@defbibmacro#1#2{%
- \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname}
-
-% {<name>}
-
-\newrobustcmd*{\usebibmacro}{%
- \@ifstar
- {\blx@usebibmacro@i}
- {\blx@usebibmacro}}
-
-\def\blx@usebibmacro#1{%
- \blx@usebibmacro@i{\detokenize{#1}}}
-
-\def\blx@usebibmacro@i#1{%
- \ifcsundef{abx@macro@#1}
- {\blx@error
- {Bibliography macro '#1' undefined}
- {Use '\string\newbibmacro' to define this macro}}
- {\csuse{abx@macro@#1}}}
-
-% {<name>}{<true>}{<false>}
-
-\def\blx@imc@ifbibmacroundef#1{%
- \ifcsundef{abx@macro@#1}}
-
-% {<field>}
-
-\def\blx@imc@thefield#1{\csuse{abx@field@#1}}
-
-\def\blx@imc@strfield#1{%
- \ifcsdef{abx@field@#1}
- {\detokenize\expandafter\expandafter\expandafter
- {\csname abx@field@#1\endcsname}}
- {}}
-
-\def\blx@imc@csfield#1{\usefield{\unexpanded}{#1}}
-
-% {<command>}{<field>}
-
-\def\blx@imc@usefield#1#2{%
- \expandafter\expandafter\expandafter#1%
- \expandafter\expandafter\expandafter{\csname abx@field@#2\endcsname}}
-
-% {<plainlist>}
-
-\def\blx@imc@thelist#1{\csuse{abx@list@#1}}
-
-% {<namelist>}
-
-\def\blx@imc@thename#1{\csuse{abx@name@#1}}
-
-% {<field>}
-
-\protected\def\blx@imc@clearfield#1{%
- \csundef{abx@field@#1}}
-
-% {<plainlist>}
-
-\protected\def\blx@imc@clearlist#1{%
- \ifcsundef{abx@list@#1}
- {}
- {\togglefalse{abx@bool@more#1}%
- \csundef{abx@list@#1}%
- \csname c@#1\endcsname\z@}}
-
-% {<namelist>}
-
-\protected\def\blx@imc@clearname#1{%
- \ifcsundef{abx@name@#1}
- {}
- {\togglefalse{abx@bool@more#1}%
- \csundef{abx@name@#1}%
- \csname c@#1\endcsname\z@}}
-
-% {<field>}{<macro>}
-
-\protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}}
-
-% {<plainlist>}{<macro>}
-
-\protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}}
-
-% {<namelist>}{<macro>}
-
-\protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}}
-
-% {<field>}{<macro>}
-
-\protected\def\blx@imc@savefield{%
- \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}}
-\def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}}
-
-% {<plainlist>}{<macro>}
-
-\protected\def\blx@imc@savelist{%
- \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}}
-
-% {<namelist>}{<macro>}
-
-\protected\def\blx@imc@savename{%
- \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}}
-
-% {<field>}{<csname>}
-
-\protected\def\blx@imc@savefieldcs{%
- \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}}
-\def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}}
-
-% {<plainlist>}{<csname>}
-
-\protected\def\blx@imc@savelistcs{%
- \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}}
-
-% {<namelist>}{<csname>}
-
-\protected\def\blx@imc@savenamecs{%
- \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}}
-
-% {<field>}{<true>}{<false>}
-
-\def\blx@imc@iffieldundef#1{%
- \ifcsundef{abx@field@#1}}
-
-% {<plainlist>}{<true>}{<false>}
-
-\def\blx@imc@iflistundef#1{%
- \ifcsundef{abx@list@#1}}
-
-% {<namelist>}{<true>}{<false>}
-
-\def\blx@imc@ifnameundef#1{%
- \ifcsundef{abx@name@#1}}
-
-% {<field1>}{<field2>}{<true>}{<false>}
-
-\def\blx@imc@iffieldsequal#1#2{%
- \ifcsequal{abx@field@#1}{abx@field@#2}}
-
-% {<plainlist1>}{<plainlist2>}{<true>}{<false>}
-
-\def\blx@imc@iflistsequal#1#2{%
- \ifcsequal{abx@list@#1}{abx@list@#2}}
-
-% {<namelist1>}{<namelist2>}{<true>}{<false>}
-
-\def\blx@imc@ifnamesequal#1#2{%
- \ifcsundef{abx@name@#1}
- {\@secondoftwo}
- {\ifcsundef{abx@name@#2}
- {\@secondoftwo}
- {\blx@ifnamesequal{#1}{#2}}}}
-
-\def\blx@ifnamesequal#1#2{%
- \begingroup
- \let\blx@tempa\@empty
- \expandafter\expandafter
- \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname
- \let\blx@tempb\blx@tempa
- \let\blx@tempa\@empty
- \expandafter\expandafter
- \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname
- \expandafter\endgroup
- \ifx\blx@tempa\blx@tempb
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-\def\blx@ifnamesequal@i#1#2{%
- \expandafter\blx@ifnamesequal@ii#2{}&}
-
-\def\blx@ifnamesequal@ii#1{%
- \ifblank{#1}
- {\blx@namebreak}
- {\blx@ifnamesequal@iii#1%
- \blx@ifnamesequal@ii}}
-
-\def\blx@ifnamesequal@iii#1#2#3#4#5#6#7#8#9{%
- \setkeys{blx@opt@name}{#1}%
- \ifdef\abx@field@hash
- {\eappto\blx@tempa{{\abx@field@hash}}}
- {\appto\blx@tempa{{{#2}{#4}{#6}{#8}}}}}
-
-% {<field>}{<macro>}{<true>}{<false>}
-
-\def\blx@imc@iffieldequals#1#2{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@field@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<plainlist>}{<macro>}{<true>}{<false>}
-
-\def\blx@imc@iflistequals#1#2{%
- \blx@imc@iflistundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@list@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<namelist>}{<macro>}{<true>}{<false>}
-
-\def\blx@imc@ifnameequals#1#2{% FIXME
- \blx@imc@ifnameundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@name@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<field>}{<csname>}{<true>}{<false>}
-
-\def\blx@imc@iffieldequalcs#1{%
- \ifcsequal{abx@field@#1}}
-
-% {<plainlist>}{<csname>}{<true>}{<false>}
-
-\def\blx@imc@iflistequalcs#1{%
- \ifcsequal{abx@list@#1}}
-
-% {<namelist>}{<csname>}{<true>}{<false>}
-
-\def\blx@imc@ifnameequalcs#1{% FIXME
- \ifcsequal{abx@name@#1}}
-
-% {<field>}{<string>}{<true>}{<false>}
-
-\protected\long\def\blx@imc@iffieldequalstr#1#2{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter\expandafter\ifstrequal
- \expandafter\expandafter\expandafter{%
- \csname abx@field@#1\endcsname}{#2}}}
-
-% {<field>}{<true>}{<false>}
-
-\protected\def\blx@imc@iffieldxref#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\blx@whichxref
- {\blx@iffieldxref{#1}}
- {\@secondoftwo}}}
-
-\def\blx@iffieldxref#1#2{%
- \begingroup
- \letcs\blx@tempa{abx@field@#2}%
- \letcs\blx@tempb{abx@field@#1}%
- \csundef{abx@field@#1}%
- \blx@getdata{\blx@tempa}%
- \blx@imc@iffieldequals{#1}\blx@tempb
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \endgroup}
-
-\def\blx@whichxref#1#2{%
- \blx@imc@iffieldundef{crossref}
- {\blx@imc@iffieldundef{xref}
- {#2}
- {#1{xref}}}
- {#1{crossref}}}
-
-% {<plainlist>}{<true>}{<false>}
-
-\protected\def\blx@imc@iflistxref#1{%
- \blx@imc@iflistundef{#1}
- {\@secondoftwo}
- {\blx@whichxref
- {\blx@iflistxref{#1}}
- {\@secondoftwo}}}
-
-\def\blx@iflistxref#1#2{%
- \begingroup
- \letcs\blx@tempa{abx@field@#2}%
- \letcs\blx@tempb{abx@list@#1}%
- \csundef{abx@list@#1}%
- \blx@getdata{\blx@tempa}%
- \blx@imc@iflistequals{#1}\blx@tempb
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \endgroup}
-
-% {<namelist>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifnamexref#1{%
- \blx@imc@ifnameundef{#1}
- {\@secondoftwo}
- {\blx@whichxref
- {\blx@ifnamexref{#1}}
- {\@secondoftwo}}}
-
-\def\blx@ifnamexref#1#2{%
- \begingroup
- \letcs\blx@tempa{abx@field@#2}%
- \letcs\blx@tempb{abx@name@#1}%
- \csundef{abx@name@#1}%
- \blx@getdata{\blx@tempa}%
- \blx@imc@ifnameequals{#1}\blx@tempb
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifcurrentfield#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\currentfield\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifcurrentlist#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\currentlist\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifcurrentname#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\currentname\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<string>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifentrytype#1{%
- \begingroup
- \def\blx@tempa{#1}%
- \ifx\abx@field@entrytype\blx@tempa
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<true>}{<false>}
-
-\def\blx@imc@ifmorenames{%
- \ifundef\currentname
- {\@secondoftwo}
- {\iftoggle{abx@bool@more\currentname}
- {\@firstoftwo}
- {\ifnum\c@listtotal>\c@liststop
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<true>}{<false>}
-
-\def\blx@imc@ifmoreitems{%
- \ifundef\currentlist
- {\@secondoftwo}
- {\iftoggle{abx@bool@more\currentlist}
- {\@firstoftwo}
- {\ifnum\c@listtotal>\c@liststop
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
-
-% {<true>}{<false>}
-
-\def\blx@imc@iffirstcitekey{%
- \ifboolexpr{ ( test {\ifnumequal\c@multicitetotal\z@}
- and test {\ifnumequal\c@citecount\@ne} )
- or ( test {\ifnumgreater\c@multicitetotal\z@}
- and test {\ifnumequal\c@multicitecount\@ne}
- and test {\ifnumequal\c@citecount\@ne} ) }}
-
-\def\blx@imc@iflastcitekey{%
- \ifboolexpr{ test {\ifnumequal\c@citecount\c@citetotal}
- and test {\ifnumequal\c@multicitecount\c@multicitetotal} }}
-
-% {<category>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifcategory{%
- \ifdef\abx@field@entrykey
- {\blx@imc@ifentrycategory\abx@field@entrykey}
- {\expandafter\@secondoftwo\@gobble}}
-
-% {<entrykey>}{<category>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifentrycategory{%
- \blx@xsanitizeafter\blx@imc@ifentrycategory@i}
-
-\def\blx@imc@ifentrycategory@i#1#2{%
- \ifcsdef{blx@catg@\detokenize{#2}}
- {\ifinlistcs{#1}{blx@catg@\detokenize{#2}}}
- {\@secondoftwo}}
-
-% {<keyword>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifkeyword{%
- \ifdef\abx@field@entrykey
- {\blx@imc@ifentrykeyword\abx@field@entrykey}
- {\expandafter\@secondoftwo\@gobble}}
-
-% {<entrykey>}{<keyword>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifentrykeyword{%
- \blx@xsanitizeafter\blx@imc@ifentrykeyword@i}
-
-\def\blx@imc@ifentrykeyword@i#1#2{%
- \ifcsdef{blx@keyw@\the\c@refsection @\detokenize{#2}}
- {\ifinlistcs{#1}{blx@keyw@\the\c@refsection @\detokenize{#2}}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-
-\protected\def\blx@ifciteseen@global{%
- \ifbool{citetracker}
- {\ifdef\abx@field@entrykey
- {\expandafter\blx@ifseen@global
- \expandafter{\abx@field@entrykey}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\protected\def\blx@ifciteseen@context{%
- \ifbool{citetracker}
- {\ifdef\abx@field@entrykey
- {\expandafter\blx@ifseen@context
- \expandafter{\abx@field@entrykey}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-% {<entrykey>}{<true>}{<false>}
-
-\protected\def\blx@ifentryseen@global{%
- \blx@xsanitizeafter\blx@ifseen@global}
-
-\protected\def\blx@ifentryseen@context{%
- \blx@xsanitizeafter\blx@ifseen@context}
-
-\def\blx@ifseen@global#1{%
- \ifbool{citetracker}
- {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}
- {\@secondoftwo}}
-
-\def\blx@ifseen@context#1{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}}
- {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-
-\def\blx@ifciteibid@global{%
- \ifbool{citetracker}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}
- {\@secondoftwo}}
-
-\def\blx@ifciteibid@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}}
- {\@secondoftwo}}
-
-\def\blx@ifciteibid@strict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@ifciteibid@global}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@ifciteibid@constrict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot}
- {\@secondoftwo}}
- {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-
-\def\blx@ifciteidem@global{%
- \ifbool{citetracker}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}
- {\@secondoftwo}}
-
-\def\blx@ifciteidem@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}}
- {\@secondoftwo}}
-
-\let\blx@ifciteidem@strict\blx@ifciteidem@global
-
-\def\blx@ifciteidem@constrict{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot}
- {\@secondoftwo}}
- {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-
-\def\blx@ifopcit@global{%
- \ifbool{citetracker}
- {\blx@imc@iffieldundef{namehash}
- {\@secondoftwo}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}
- {\@secondoftwo}}
-
-\def\blx@ifopcit@context{%
- \ifbool{citetracker}
- {\blx@imc@iffieldundef{namehash}
- {\@secondoftwo}
- {\iftoggle{blx@footnote}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}}
- {\@secondoftwo}}
-
-\def\blx@ifopcit@strict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@ifopcit@global}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@ifopcit@constrict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@imc@iffieldundef{namehash}
- {\@secondoftwo}
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@foot@\abx@field@namehash}}
- {\@secondoftwo}}
- {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-% {<true>}{<false>}
-
-\def\blx@ifloccit@global{%
- \ifbool{citetracker}
- {\blx@loccit@check{text}}
- {\@secondoftwo}}
-
-\def\blx@ifloccit@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@loccit@check{foot}}
- {\blx@loccit@check{text}}}
- {\@secondoftwo}}
-
-\def\blx@ifloccit@strict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\blx@loccit@numcheck{text}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@ifloccit@constrict{%
- \ifbool{citetracker}
- {\blx@ifcitesingle
- {\iftoggle{blx@footnote}
- {\blx@ifmpfncheck
- {\blx@loccit@numcheck{foot}}
- {\@secondoftwo}}
- {\blx@loccit@numcheck{text}}}
- {\@secondoftwo}}
- {\@secondoftwo}}
-
-\def\blx@loccit@check#1{%
- \blx@imc@iffieldundef{postnote}
- {\@secondoftwo}
- {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}}
-
-\def\blx@loccit@numcheck#1{%
- \blx@imc@iffieldundef{postnote}
- {\@secondoftwo}
- {\expandafter\blx@imc@ifpages
- \expandafter{\abx@field@postnote}
- {\blx@imc@iffieldequalcs{postnote}{blx@lastnote@#1@\abx@field@entrykey}}
- {\@secondoftwo}}}
-
-% {<true>}{<false>}
-
-\def\blx@ifmpfncheck{%
- \ifnum\numexpr\value\@mpfn-\blx@lastmpfn<\tw@
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-\def\blx@mpfnsave{%
- \xdef\blx@lastmpfn{\the\value\@mpfn}}
-
-\def\blx@mpfnreset{%
- \global\let\blx@lastmpfn\z@}
-
-\blx@mpfnreset
-
-% {<true>}{<false>}
-
-\def\blx@imc@iffirstonpage{%
- \ifbool{pagetracker}
- {\iftoggle{blx@footnote}
- {\blx@iffirstonpage{fnpage}}
- {\blx@iffirstonpage{page}}}
- {\@secondoftwo}}
-
-\def\blx@iffirstonpage#1{%
- \ifcsundef{blx@#1@\number\c@instcount}
- {\@secondoftwo}
- {\expandafter\blx@iffirstonpage@i
- \expandafter{\number\numexpr\c@instcount-1}{#1}}}
-
-\def\blx@iffirstonpage@i#1#2{%
- \ifcsundef{blx@#2@#1}
- {\ifnum#1>\@ne
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\expandafter\blx@iffirstonpage@i
- \expandafter{\number\numexpr#1-1}{#2}}
- {\@firstoftwo}}
- {\ifnum\csuse{blx@#2@\number\c@instcount}=%
- \csuse{blx@#2@#1} %
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi}}
-
-% {<count1>}{<count2>}{<true>}{<false>}
-
-\def\blx@imc@ifsamepage#1#2{%
- \ifbool{pagetracker}
- {\ifcsundef{blx@page@\number\numexpr#1}
- {\ifcsundef{blx@fnpage@\number\numexpr#1}
- {\@secondoftwo}
- {\blx@ifsamepage{#1}{#2}{fnpage}}}
- {\blx@ifsamepage{#1}{#2}{page}}}
- {\@secondoftwo}}
-
-\def\blx@ifsamepage#1#2#3{%
- \ifcsundef{blx@page@\number\numexpr#2}
- {\ifcsundef{blx@fnpage@\number\numexpr#2}
- {\@secondoftwo}
- {\blx@ifsamepage@i{#1}{#2}{#3}{fnpage}}}
- {\blx@ifsamepage@i{#1}{#2}{#3}{page}}}
-
-\def\blx@ifsamepage@i#1#2#3#4{%
- \ifnum\csuse{blx@#3@\number\numexpr#1}=%
- \csuse{blx@#4@\number\numexpr#2} %
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% {<string>}{<true>}{<false>}
-
-\protected\long\def\blx@imc@ifinteger#1{%
- \begingroup
- \def\do##1{\uccode`##1=`\%}%
- \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
- \makeatletter
- \catcode`\%=9
- \endlinechar\m@ne
- \uppercase{\scantokens{\def\blx@tempa{#1}}}%
- \ifx\blx@tempa\@empty
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-
-% {<field>}{<true>}{<false>}
-
-\protected\def\blx@imc@iffieldint#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\ifinteger
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-% {<string>}{<true>}{<false>}
-
-\protected\def\blx@imc@ifnumeral{%
- \blx@ifnum\blx@hook@ifnum}
-
-\protected\def\blx@imc@ifnumerals{%
- \blx@ifnum\blx@hook@ifnums}
-
-\protected\def\blx@imc@ifpages{%
- \blx@ifnum\blx@hook@ifpages}
-
-\long\def\blx@ifnum#1#2{%
- \begingroup
- \let\protect\@unexpandable@protect
- \uppercase{\edef\blx@tempa{#2}}%
- \ifx\blx@tempa\@empty
- \aftergroup\@secondoftwo
- \else
- \makeatletter
- \catcode`\%=9
- \endlinechar\m@ne
- \everyeof{\noexpand}#1%
- \uppercase{\edef\blx@tempa{\scantokens{#2}}}%
- \ifx\blx@tempa\@empty
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \fi
- \endgroup}
-
-\def\blx@hook@ifnum{%
- \def\do##1{\uccode`##1=`\%}%
- \do\ \do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
- \do\i\do\v\do\x\do\l\do\c\do\d\do\m
- \do\I\do\V\do\X\do\L\do\C\do\D\do\M
- \blx@donumchars
- \let\RN\@firstofone
- \let\Rn\@firstofone}
-
-\def\blx@hook@ifnums{%
- \blx@hook@ifnum
- \def\do##1{\uccode`##1=`\%}%
- \blx@dorangechars
- \def\do##1{\let##1\@empty}%
- \blx@dorangecmds}
-
-\def\blx@hook@ifpages{%
- \blx@hook@ifnum
- \blx@hook@ifnums
- \def\do##1{\let##1\@empty}%
- \blx@dopagecmds}
-
-% {<field>}{<true>}{<false>}
-
-\protected\def\blx@imc@iffieldnum#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\blx@imc@ifnumeral
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-\protected\def\blx@imc@iffieldnums#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\blx@imc@ifnumerals
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-\protected\def\blx@imc@iffieldpages#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\expandafter\expandafter
- \expandafter\blx@imc@ifpages
- \expandafter\expandafter
- \expandafter{\csname abx@field@#1\endcsname}}}
-
-% {<chars>}
-
-\newrobustcmd*{\DeclareNumChars}{%
- \@ifstar
- {\blx@defnumchars}
- {\global\let\blx@donumchars\@empty
- \blx@defnumchars}}
-
-\def\blx@defnumchars#1{%
- \ifblank{#1}
- {}
- {\expandafter\blx@defdochars
- \expandafter\blx@donumchars
- \detokenize{#1}\relax}}
-
-% {<chars>}
-
-\newrobustcmd*{\DeclareRangeChars}{%
- \@ifstar
- {\blx@defrangechars}
- {\global\let\blx@dorangechars\@empty
- \blx@defrangechars}}
-
-\def\blx@defrangechars#1{%
- \ifblank{#1}
- {}
- {\expandafter\blx@defdochars
- \expandafter\blx@dorangechars
- \detokenize{#1}\relax}}
-
-\def\blx@defdochars#1#2{%
- \ifx#2\relax
- \else
- \xdef#1{%
- \expandonce#1\noexpand\do
- \expandafter\noexpand\csname#2\endcsname}%
- \expandafter\blx@defdochars
- \expandafter#1%
- \fi}
-
-% {<cstokens>}
-
-\newrobustcmd*{\DeclareRangeCommands}{%
- \@ifstar
- {\blx@defrangecmds}
- {\global\let\blx@dorangecmds\@empty
- \blx@defrangecmds}}
-
-\def\blx@defrangecmds#1{%
- \ifblank{#1}
- {}
- {\blx@defrangecmds@i#1&}}
-
-\def\blx@defrangecmds@i#1{%
- \ifx&#1%
- \else
- \gappto\blx@dorangecmds{\do#1}%
- \expandafter\blx@defrangecmds@i
- \fi}
-
-% {<cstokens>}
-
-\newrobustcmd*{\DeclarePageCommands}{%
- \@ifstar
- {\blx@defpagecmds}
- {\global\let\blx@dopagecmds\@empty
- \blx@defpagecmds}}
-
-\def\blx@defpagecmds#1{%
- \ifblank{#1}
- {}
- {\blx@defpagecmds@i#1&}}
-
-\def\blx@defpagecmds@i#1{%
- \ifx&#1%
- \else
- \gappto\blx@dopagecmds{\do#1}%
- \expandafter\blx@defpagecmds@i
- \fi}
-
-\DeclareNumChars{.}
-\DeclareRangeChars{~,;-+/}
-\DeclareRangeCommands{%
- \ \,\space\nobreakspace\addspace\addnbspace
- \addthinspace\addnbthinspace\addlowpenspace
- \addhighpenspace\addlpthinspace\addhpthinspace
- \adddotspace\addabbrvspace\&\psq\psqq
- \bibrangedash\bibdatedash\textendash\textemdash}
-\DeclarePageCommands{\pno\ppno}
-
-% *{<code>}
-
-\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum}
-\newcommand*{\NumcheckSetup}{\NumCheckSetup}
-
-% [<pagination>][<postpro>]{<string>}
-
-\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{%
- \begingroup
- \def\blx@tempa{\blx@mkpageprefix{page}}%
- \iffieldundef{#1}
- {}
- {\iffieldequalstr{#1}{none}
- {\def\blx@tempa{\blx@mkpageprefix@i}}
- {\iffieldbibstring{#1}
- {\edef\blx@tempa{\blx@mkpageprefix{\thefield{#1}}}}
- {\blx@warning@entry{%
- Unknown pagination type '\strfield{#1}'}}}}%
- \@ifnextchar[%]
- {\blx@tempa}
- {\blx@tempa[\@firstofone]}}
-
-\protected\long\def\blx@mkpageprefix#1[#2]#3{%
- \ifnumeral{#3}
- {\bibstring{#1}\ppspace}
- {\ifnumerals{#3}
- {\bibstring{#1s}\ppspace}
- {\def\pno{\bibstring{#1}}%
- \def\ppno{\bibstring{#1s}}}}%
- \blx@mkpageprefix@i[#2]{#3}}
-
-\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup}
-
-% [<pagination>][<postpro>]{<string>}
-
-\newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{%
- \begingroup
- \def\blx@tempa{\blx@mkpagetotal{page}}%
- \iffieldundef{#1}
- {}
- {\iffieldequalstr{#1}{none}
- {\def\blx@tempa{\blx@mkpagetotal@i}}
- {\iffieldbibstring{#1}
- {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}}
- {\blx@warning@entry{%
- Unknown pagination type '\strfield{#1}'}}}}%
- \@ifnextchar[%]
- {\blx@tempa}
- {\blx@tempa[\@firstofone]}}
-
-\protected\long\def\blx@mkpagetotal#1[#2]#3{%
- \ifnumeral{#3}
- {\setbox\@tempboxa=\hbox{%
- \blx@tempcnta0#3\relax
- \ifnum\blx@tempcnta=\@ne
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi}%
- {#2{#3}\ppspace\bibstring{#1}}
- {#2{#3}\ppspace\bibstring{#1s}}}
- {\def\pno{\bibstring{#1}}%
- \def\ppno{\bibstring{#1s}}%
- #2{#3}}%
- \endgroup}
-
-\long\def\blx@mkpagetotal@i[#1]#2{#1{#2}\endgroup}
-
-\newcounter{mincomprange}
-\newcounter{maxcomprange}
-\newcounter{mincompwidth}
-\setcounter{mincomprange}{10}
-\setcounter{maxcomprange}{100000}
-\setcounter{mincompwidth}{1}
-\def\abx@rangeproclimit{100000}
-
-% {<string>}
-% This mustn't be robust as it's likely to be used mainly tests and so
-% needs to be expandable
-\newcommand*{\rangelen}[1]{%
- \blx@rangelen@range#1\bibrangedash\bibrangedash&}
-
-\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@rangelen@hyphen#1--&}
- {\ifblank{#2}
- {0}% n\bibrangedash
- {\ifblank{#1}
- {0}% \bibrangedash n
- {\blx@rangelen@check{#1}{#2}}}}}
-
-\def\blx@rangelen@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {1}% n
- {\ifblank{#2}
- {\ifblank{#1}
- {\let\blx@tempb\@empty}
- {\def\blx@tempb{#1}}%
- \blx@rangelen@hyphen@i#3&}
- {\ifblank{#1}
- {0}% -n
- {\blx@rangelen@check{#1}{#2}}}}}
-
-\def\blx@rangelen@hyphen@i#1-#2&{%
- \ifblank{#1#2}
- {0}% n-
- {\notblank{#1}
- {\ifdefempty\blx@tempb
- {0}
- {\expandafter\blx@rangelen@check
- \expandafter{\blx@tempb}{#1}}}
- {\blx@rangelen@hyphen@i#2&}}}
-
-\def\blx@rangelen@check#1#2{%
- \blx@imc@ifinteger{#1}
- {\blx@imc@ifinteger{#2}
- {\the\numexpr#2-#1\relax}% n-m
- {0}}
- {0}}
-
-% <*>[<postpro>]{<string>}
-
-\newrobustcmd*{\mkcomprange}{%
- \begingroup
- \@ifstar
- {\blx@comprange\blx@comprange@ii}
- {\blx@comprange\blx@comprange@i}}
-
-\def\blx@comprange#1{%
- \@ifnextchar[{#1}{#1[\@firstofone]}}
-
-\def\blx@comprange@i[#1]#2{%
- \let\blx@tempa\@empty
- \protected\def\blx@range@out@value{\appto\blx@tempa}%
- \let\blx@range@out@delim\blx@range@out@value
- \let\blx@range@split\blx@comprange@split
- \blx@range@chunk{#2}%
- \edef\blx@tempa{\endgroup
- \unexpanded{#1}{\expandonce\blx@tempa}}%
- \blx@tempa}
-
-\def\blx@comprange@ii[#1]#2{%
- \protected\def\blx@range@out@value{#1}%
- \let\blx@range@out@delim\@firstofone
- \let\blx@range@split\blx@comprange@split
- \blx@range@chunk{#2}%
- \endgroup}
-
-\def\blx@comprange@split#1{%
- \def\blx@comprange@abort{\blx@range@out@value{#1}}%
- \blx@imc@ifpages{#1}
- {\blx@comprange@range#1\bibrangedash\bibrangedash&}
- {\blx@comprange@abort}}
-
-\def\blx@comprange@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@comprange@hyphen#1--&}
- {\ifblank{#2}
- {\blx@range@out@value{#1\bibrangedash}}
- {\ifblank{#1}
- {\blx@range@out@value{\bibrangedash#2}}
- {\blx@comprange@check{#1}{#2}}}}}
-
-\def\blx@comprange@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {\blx@comprange@abort}
- {\ifblank{#2}
- {\ifblank{#1}
- {\let\blx@tempb\@empty}
- {\def\blx@tempb{#1}}%
- \blx@comprange@hyphen@i#3&}
- {\ifblank{#1}
- {\blx@range@out@value{\bibrangedash#2}}
- {\blx@comprange@check{#1}{#2}}}}}
-
-\def\blx@comprange@hyphen@i#1-#2&{%
- \ifblank{#1#2}
- {\expandafter\blx@range@out@value
- \expandafter{\blx@tempb\bibrangedash}}
- {\notblank{#1}
- {\ifdefempty\blx@tempb
- {\blx@range@out@value{\bibrangedash#1}}
- {\expandafter\blx@comprange@check
- \expandafter{\blx@tempb}{#1}}}
- {\blx@comprange@hyphen@i#2&}}}
-
-\def\blx@comprange@check#1#2{%
- \blx@imc@ifinteger{#1}
- {\blx@imc@ifinteger{#2}
- {\blx@comprange@comp{#1}{#2}}
- {\blx@range@out@value{#1\bibrangedash#2}}}
- {\blx@range@out@value{#1\bibrangedash#2}}}
-
-\def\blx@comprange@comp#1#2{%
- \def\blx@tempb{#1}%
- \def\blx@tempc{#2}%
- \let\blx@tempd\blx@tempc
- \ifnum\c@maxcomprange<\abx@rangeproclimit\relax
- \numdef\blx@tempe\abx@rangeproclimit
- \else
- \numdef\blx@tempe\c@maxcomprange
- \fi
- \blx@tempcntc=\blx@tempe\relax
- \ifnum
- \ifnum\c@mincompwidth<1\space1\fi
- \ifnum\c@maxcomprange<10\space1\fi
- \ifnum\c@mincomprange<\blx@tempb\space\else1\fi
- \ifnum\blx@tempb<\numexpr\blx@tempcntc*10\relax\else1\fi
- 0=\z@
- \expandafter\blx@comprange@comp@div
- \else
- \expandafter\blx@comprange@end
- \fi}
-
-\def\blx@comprange@end{%
- \numdef\blx@tempb\blx@tempb
- \ifnum\blx@tempe>\c@maxcomprange\relax
- \numdef\blx@tempc\blx@tempc
- \else
- \numdef\blx@tempc\blx@tempd
- \fi
- \edef\blx@tempb{\blx@range@out@value{\blx@tempb\noexpand\bibrangedash\blx@tempc}}%
- \blx@tempb}
-
-\def\blx@comprange@comp@div{%
- \unless\ifnum\blx@tempb<\blx@tempcntc
- \blx@tempcnta\blx@tempb\relax
- \blx@tempcntb\blx@tempc\relax
- \divide\blx@tempcnta\blx@tempcntc
- \divide\blx@tempcntb\blx@tempcntc
- \ifnum\blx@tempcnta=\blx@tempcntb
- \edef\blx@tempd{\expandafter\@gobble\blx@tempd}%
- \numdef\blx@tempe\blx@tempcntc
- \fi
- \fi
- \divide\blx@tempcntc10\relax
- \ifnum
- \ifnum\blx@tempcntc<10 1\fi
- \ifnum\blx@tempcntc>\c@mincompwidth\else 1\fi
- 0=\z@
- \expandafter\blx@comprange@comp@div
- \else
- \expandafter\blx@comprange@end
- \fi}
-
-\def\blx@range@chunk#1{%
- \blx@range@chunk@semcol#1;&}
-
-\def\blx@range@chunk@semcol#1;#2&{%
- \notblank{#1}
- {\blx@range@chunk@comma#1,&}
- {}%
- \notblank{#2}
- {\notblank{#1}{\blx@range@out@delim{;\space}}{}%
- \blx@range@chunk@semcol#2&}
- {}}
-
-\def\blx@range@chunk@comma#1,#2&{%
- \notblank{#1}
- {\expandafter\blx@range@split
- \expandafter{\@firstofone#1}}
- {}%
- \notblank{#2}
- {\notblank{#1}{\blx@range@out@delim{,\space}}{}%
- \blx@range@chunk@comma#2&}
- {}}
-
-% <*>[<postpro>]{<string>}
-
-\newrobustcmd*{\mkfirstpage}{%
- \begingroup
- \@ifstar
- {\blx@firstpage\blx@firstpage@ii}
- {\blx@firstpage\blx@firstpage@i}}
-
-\def\blx@firstpage#1{%
- \@ifnextchar[{#1}{#1[\@firstofone]}}
-
-\def\blx@firstpage@i[#1]#2{%
- \let\blx@tempa\@empty
- \protected\def\blx@range@out@value{\appto\blx@tempa}%
- \let\blx@range@out@delim\blx@range@out@value
- \let\blx@range@split\blx@firstpage@split
- \blx@range@chunk{#2}%
- \edef\blx@tempa{\endgroup
- \unexpanded{#1}{\expandonce\blx@tempa}}%
- \blx@tempa}
-
-\def\blx@firstpage@ii[#1]#2{%
- \protected\def\blx@range@out@value{#1}%
- \let\blx@range@out@delim\@firstofone
- \let\blx@range@split\blx@firstpage@split
- \blx@range@chunk{#2}%
- \endgroup}
-
-\def\blx@firstpage@split#1{%
- \def\blx@firstpage@abort{\blx@range@out@value{#1}}%
- \blx@firstpage@range#1\bibrangedash\bibrangedash&}
-
-\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@firstpage@hyphen#1--&}
- {\ifblank{#1}
- {\blx@range@out@value{\bibrangedash#2}}
- {\blx@range@out@value{#1}}}}
-
-\def\blx@firstpage@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {\blx@firstpage@abort}
- {\ifblank{#1}
- {\ifblank{#2}
- {\blx@firstpage@hyphen@i#3&}
- {\blx@range@out@value{\bibrangedash#2}}}
- {\blx@range@out@value{#1}}}}
-
-\def\blx@firstpage@hyphen@i#1-#2&{%
- \ifblank{#1}
- {\ifblank{#2}
- {\blx@firstpage@abort}
- {\blx@firstpage@hyphen@i#2&}}
- {\blx@range@out@value{\bibrangedash#1}}}
-
-\newcommand*{\ppspace}{\addnbspace}
-\newcommand*{\sqspace}{\addnbspace}
-
-\newrobustcmd*{\RN}[1]{%
- \begingroup
- \expandafter\RNfont
- \expandafter{\romannumeral#1}%
- \endgroup}
-\newrobustcmd*{\Rn}[1]{%
- \begingroup
- \expandafter\Rnfont
- \expandafter{\romannumeral#1}%
- \endgroup}
-
-\newcommand*{\RNfont}{\uppercase}
-\newcommand*{\Rnfont}{}
-
-% {<init>}{<entrytype>}
-
-\protected\def\blx@imc@usedriver#1#2{%
- \begingroup
- \let\finentry\blx@finentry@usedrv
- \let\newblock\relax
- \let\abx@macro@bibindex\@empty
- \let\abx@macro@pageref\@empty
- \csuse{blx@hook@bbxinit}#1%
- \blx@beglangbib
- \blx@driver{#2}%
- \blx@endlangbib
- \endgroup}
-
-% Punctuation
-
-\protected\def\blx@initunit{%
- \global\togglefalse{blx@block}%
- \global\togglefalse{blx@unit}%
- \global\togglefalse{blx@insert}%
- \global\togglefalse{blx@lastins}%
- \global\togglefalse{blx@keepunit}%
- \global\let\blx@unitpunct\newunitpunct
- \blx@imc@resetpunctfont}
-
-\def\blx@begunit{%
- \toggletrue{blx@tempa}%
- \iftoggle{blx@insert}
- {\iftoggle{blx@unit}
- {\begingroup
- \let\blx@begunit\@empty
- \let\blx@endunit\@empty
- \let\blx@endnounit\@empty
- \blx@unitpunct\blx@postpunct
- \endgroup
- \global\togglefalse{blx@unit}%
- \togglefalse{blx@tempa}}
- {\blx@postpunct}%
- \iftoggle{blx@block}
- {\begingroup
- \let\blx@begunit\@empty
- \let\blx@endunit\@empty
- \let\blx@endnounit\@empty
- \newblockpunct
- \endgroup
- \global\togglefalse{blx@block}%
- \togglefalse{blx@tempa}}
- {}}
- {}%
- \blx@postpunct
- \blx@imc@resetpunctfont
- \iftoggle{blx@tempa}
- {}
- {\global\togglefalse{blx@insert}}%
- \blx@leavevmode
- \begingroup}
-
-\def\blx@endunit{%
- \endgroup
- \global\toggletrue{blx@insert}%
- \global\toggletrue{blx@lastins}}
-
-\def\blx@nounit{%
- \global\togglefalse{blx@lastins}}
-
-\def\blx@endnounit{%
- \endgroup\blx@nounit}
-
-\protected\def\blx@imc@newblock{%
- \global\toggletrue{blx@block}}%
-
-\protected\def\blx@imc@newunit{%
- \iftoggle{blx@keepunit}
- {}
- {\global\let\blx@unitpunct\newunitpunct
- \global\toggletrue{blx@unit}}}
-
-\protected\def\blx@imc@setunit{%
- \@ifstar\blx@setunit@i\blx@setunit}
-
-\long\def\blx@setunit#1{%
- \iftoggle{blx@keepunit}
- {}
- {\long\gdef\blx@unitpunct{#1}%
- \global\toggletrue{blx@unit}}}
-
-\def\blx@setunit@i{%
- \iftoggle{blx@lastins}
- {\blx@setunit}
- {\@gobble}}
-
-\protected\def\blx@imc@printunit{%
- \@ifstar\blx@printunit@i\blx@printunit}
-
-\def\blx@printunit#1{%
- \long\gdef\blx@unitpunct{#1\global\togglefalse{blx@keepunit}}%
- \global\toggletrue{blx@keepunit}%
- \global\toggletrue{blx@unit}}
-
-\def\blx@printunit@i{%
- \iftoggle{blx@lastins}
- {\blx@printunit}
- {\@gobble}}
-
-\protected\def\blx@imc@finentry{%
- \unspace\finentrypunct
- \blx@postpunct
- \blx@initunit}
-
-\protected\def\blx@finentry@usedrv{%
- \blx@setunit\relax}
-
-\protected\def\blx@finentry@inset{%
- \blx@setunit\entrysetpunct
- \global\toggletrue{blx@block}}
-
-\blx@regimcs{%
- \ifdriver \thefield \strfield \csfield \usefield \thelist \thename
- \clearfield \clearlist \clearname \restorefield \restorelist \restorename
- \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword
- \ifciteseen \ifentryseen \ifentryinbib \ifciteibid \ifciteidem \ifopcit \ifloccit
- \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype
- \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal
- \ifbibmacroundef \iffieldundef \iffieldxref \iflistequalcs \iflistequals
- \iflistsequal \iflistundef \iflistxref
- \ifmorenames \ifmoreitems \iffirstcitekey \iflastcitekey
- \ifnameequalcs \ifnameequals \ifnamesequal \ifnameundef \ifnamexref
- \iffirstonpage \ifsamepage \savefield \savefieldcs \savelist
- \savelistcs \savename \savenamecs \usedriver
- \ifinteger \ifnumeral \ifnumerals \ifpages
- \iffieldint \iffieldnum \iffieldnums \iffieldpages
- \mkpageprefix \mkpagetotal \mkpagefirst
- \newblock \newunit \setunit \printunit \finentry}
-
-\appto\blx@blxinit{%
- \def\ifnatbibmode{\iftoggle{blx@natbib}}%
- \def\ifcitation{\iftoggle{blx@citation}}%
- \def\ifbibliography{\iftoggle{blx@bibliography}}%
- \def\ifciteindex{\iftoggle{blx@citeindex}}%
- \def\ifbibindex{\iftoggle{blx@bibindex}}%
- \def\iffootnote{\iftoggle{blx@footnote}}%
- \def\ifuseprefix{\iftoggle{blx@useprefix}}%
- \def\ifuseauthor{\iftoggle{blx@useauthor}}%
- \def\ifuseeditor{\iftoggle{blx@useeditor}}%
- \def\ifusetranslator{\iftoggle{blx@usetranslator}}%
- \def\ifterseinits{\iftoggle{blx@terseinits}}%
- \def\iffirstinits{\iftoggle{blx@giveninits}}% legacy alias for \ifgiveninits
- \def\ifgiveninits{\iftoggle{blx@giveninits}}%
- \def\ifsingletitle{\iftoggle{abx@bool@singletitle}}%
- \def\ifandothers#1{\iftoggle{abx@bool@more#1}}%
- \protected\def\pno{\bibstring{page}}%
- \protected\def\ppno{\bibstring{pages}}%
- \let\nopp\relax
- \protected\def\psq{\sqspace\bibstring{sequens}}%
- \protected\def\psqq{\sqspace\bibstring{sequentes}}}
-
-% Make sure that commands which might pop up inside an \edef will be defined
-% as something. If they are taken \AtBeginDocument then we assume that all will
-% be well. If not, then provide a definition which will give an error outside
-% of a citation context.
-\AtBeginDocument{%
- \protected\def\do#1{%
- \ifdefined#1%
- \else
- \protected\def#1{\ERROR}%
- \fi
- }%
- \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}%
-}
-
-%% Global formatting hooks
-
-% capitalization
-
-% {<text>}
-
-\newrobustcmd{\MakeCapital}[1]{%
- \begingroup
- \blx@mkcp@init
- \protected@edef\blx@tempa{#1}%
- \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end}
-
-\def\blx@mkcp@init{%
- \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}%
- \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}%
- \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}%
- \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}%
- \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents
- \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents
- \def\IeC##1{\blx@mkcp@iec\IeC{##1}}%
- \def\@tabacckludge##1{%
- \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}}
-
-\begingroup
-\catcode`\"=\active
-\gappto\blx@mkcp@init{%
- \ifnum\catcode`\"=\active
- \def"#1{\blx@mkcp@bbl"\noexpand#1}%
- \fi}
-\endgroup
-
-\def\blx@mkcp@parse{%
- \futurelet\@let@token\blx@mkcp@eval}
-
-\long\def\blx@mkcp@eval{%
- \ifx\@let@token\blx@mkcp@iec
- \expandafter\blx@mkcp@getiec
- \fi
- \ifx\@let@token\blx@mkcp@bbl
- \expandafter\blx@mkcp@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@sgl
- \expandafter\blx@mkcp@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@dbl
- \expandafter\blx@mkcp@getthree
- \fi
- \blx@mkcp@case}
-
-\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{%
- \blx@mkcp@case{#2#3{#4}}}
-
-\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{%
- \blx@mkcp@case{#2#3#4}}
-
-\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{%
- \blx@mkcp@case{#2#3#4#5}}
-
-\long\def\blx@mkcp@case#1{%
- \begingroup
- \def\i{I}\def\j{J}%
- \def\do##1##2{\let##1##2\do}%
- \expandafter\do\@uclclist\relax{\relax\@gobble}%
- \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}%
- \blx@tempa}
-
-\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{%
- \let\blx@mkcp@iec\noexpand
- \let\blx@mkcp@bbl\noexpand
- \let\blx@mkcp@sgl\noexpand
- \let\blx@mkcp@dbl\noexpand
- \protected@edef\blx@tempa{\endgroup#1}%
- \blx@tempa}
-
-\def\abx@dosingleaccents{%
- \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
- \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
-\def\abx@dodoubleaccents{%
- \do\t}
-
-% {<text>}
-
-\newrobustcmd*{\MakeSentenceCase}{%
- \@ifstar\blx@mksc@i\blx@mksc@ii}
-
-\def\blx@mksc@i{%
- \ifdef\abx@field@langid
- {\xifinlist\abx@field@langid\blx@cmksc@lang
- {\blx@mksc@ii}
- {\@firstofone}}
- {\blx@mksc@ii}}
-
-\long\def\blx@mksc@ii#1{%
- \begingroup
- \let\blx@tempa\@empty
- \let\blx@tempb\@empty
- \blx@mksc@init
- \protected@edef\@tempa{#1}%
- \expandafter\blx@mksc@parse\@tempa\blx@mksc@end}
-
-\def\blx@mksc@init{%
- \blx@mkcp@init
- \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}%
- \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}%
- \def\do##1{%
- \ifx##1\relax
- \else
- \def##1{\blx@mkcp@nil##1}%
- \expandafter\do
- \fi}%
- \expandafter\do\@uclclist\relax}
-
-\def\blx@mksc@parse{%
- \futurelet\@let@token\blx@mksc@eval}
-
-\def\blx@mksc@eval{%
- \ifx\@let@token\blx@mksc@end
- \expandafter\blx@mksc@end
- \fi
- \ifx\@let@token\bgroup
- \expandafter\blx@mksc@group
- \fi
- \ifx\@let@token\@sptoken
- \expandafter\blx@mksc@space
- \fi
- \ifx\@let@token\blx@mkcp@nil
- \expandafter\blx@mksc@getone
- \fi
- \ifx\@let@token\blx@mkcp@iec
- \expandafter\blx@mksc@getiec
- \fi
- \ifx\@let@token\blx@mkcp@bbl
- \expandafter\blx@mksc@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@sgl
- \expandafter\blx@mksc@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@dbl
- \expandafter\blx@mksc@getthree
- \fi
- \if\noexpand\@let@token\relax
- \expandafter\blx@mksc@cs
- \fi
- \blx@mksc@other}
-
-\def\blx@mksc@end#1\blx@mksc@end{%
- \blx@mksc@eject
- \let\blx@mkcp@nil\noexpand
- \let\blx@mkcp@iec\noexpand
- \let\blx@mkcp@bbl\noexpand
- \let\blx@mkcp@sgl\noexpand
- \let\blx@mkcp@dbl\noexpand
- \let\MakeUppercase\relax
- \let\MakeLowercase\relax
- \protected@edef\blx@tempa{\endgroup\blx@tempa}%
- \blx@tempa}
-
-\long\def\blx@mksc@group#1\blx@mksc@other#2{%
- \futurelet\@let@token\blx@mksc@ingroup#2&{#2}%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\long\def\blx@mksc@ingroup#1&#2{%
- \if\noexpand\@let@token\relax
- \blx@mksc@locase{{#2}}%
- \else
- \blx@mksc@nocase{{#2}}%
- \fi}
-
-\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other}
-\csuse{blx@mksc@space} {%
- \blx@mksc@anycase{ }%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\long\def\blx@mksc@cs#1\blx@mksc@other#2{%
- \ifcat\noexpand~\noexpand#2%
- \blx@mksc@locase{#2}%
- \else
- \blx@mksc@nocase{#2}%
- \fi
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{%
- \blx@mksc@other{#2#3{#4}}}
-
-\def\blx@mksc@getone#1\blx@mksc@other#2#3{%
- \blx@mksc@other{#2#3}}
-
-\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{%
- \blx@mksc@other{#2#3#4}}
-
-\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{%
- \blx@mksc@other{#2#3#4#5}}
-
-\long\def\blx@mksc@other#1{%
- \blx@mksc@locase{#1}%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\def\blx@mksc@locase{%
- \appto\blx@tempb}
-
-\def\blx@mksc@nocase{%
- \blx@mksc@eject
- \appto\blx@tempa}
-
-\def\blx@mksc@anycase{%
- \ifx\blx@tempb\@empty
- \expandafter\appto
- \expandafter\blx@tempa
- \else
- \expandafter\appto
- \expandafter\blx@tempb
- \fi}
-
-\def\blx@mksc@eject{%
- \ifx\blx@tempb\@empty
- \else
- \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}%
- \let\blx@tempb\@empty
- \fi}
-
-\def\blx@mksc@endhead{%
- \ifx\blx@tempb\@empty
- \else
- \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}%
- \let\blx@tempb\@empty
- \fi
- \let\blx@mksc@endhead\relax}
-
-% {<language,language,...>}
-
-\newrobustcmd*{\DeclareCaseLangs}{%
- \@ifstar
- {\blx@defcaselangs}
- {\global\let\blx@cmksc@lang\@empty
- \blx@defcaselangs}}
-
-\def\blx@defcaselangs#1{%
- \ifblank{#1}
- {}
- {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}}
-
-\DeclareCaseLangs{%
- american,british,canadian,
- english,USenglish,UKenglish,
- australian,newzealand}
-
-%% Main formatting commands
-
-% [<entrytype>]{<name>}{<definiton>}
-
-\newrobustcmd*{\DeclareNameFormat}{%
- \@ifstar
- {\blx@defformat\blx@defnameformat{nfd}*}
- {\blx@defformat\blx@defnameformat{nfd}{}}}
-\newrobustcmd*{\DeclareIndexNameFormat}{%
- \@ifstar
- {\blx@defformat\blx@defnameformat{nid}*}
- {\blx@defformat\blx@defnameformat{nid}{}}}
-
-\newrobustcmd*{\DeclareListFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{lfd}*}
- {\blx@defformat\blx@defplainformat{lfd}{}}}
-\newrobustcmd*{\DeclareIndexListFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{lid}*}
- {\blx@defformat\blx@defplainformat{lid}{}}}
-
-\newrobustcmd*{\DeclareFieldFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{ffd}*}
- {\blx@defformat\blx@defplainformat{ffd}{}}}
-\newrobustcmd*{\DeclareIndexFieldFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{fid}*}
- {\blx@defformat\blx@defplainformat{fid}{}}}
-
-% {<macro>}{<class>}{<*>}
-
-\def\blx@defformat#1#2#3{%
- \@ifnextchar[%]
- {\blx@defformat@i{#1}{#2}{#3}}
- {\blx@defformat@i{#1}{#2}{#3}[*]}}
-
-% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}
-
-\def\blx@defformat@i#1#2#3[#4]#5{%
- \notblank{#3}
- {\blx@resetformat{#2}{#5}}
- {}%
- \def\blx@defformat@a{#2}%
- \def\blx@defformat@b{#4}%
- \blx@xsanitizeafter{\def\blx@defformat@c}{#5}%
- \afterassignment\blx@defformat@ii
- #1}
-
-\def\blx@defformat@ii{%
- \expandafter\forcsvlist
- \expandafter\blx@defformat@iii
- \expandafter{\blx@defformat@b}}
-
-\def\blx@defformat@iii#1{%
- \cslet{abx@\blx@defformat@a @#1@\blx@defformat@c}\blx@defformat@d}
-
-\def\blx@defplainformat{%
- \long\def\blx@defformat@d##1}
-
-\def\blx@defnameformat{%
- \long\def\blx@defformat@d##1##2##3##4##5##6##7##8}
-
-\def\blx@resetformat#1#2{%
- \let\blx@saved@do\do
- \def\do##1{\blx@resetformat@i{#1}{#2}{##1}}%
- \blx@safe@actives
- \abx@dotypes
- \blx@rest@actives
- \let\do\blx@saved@do}
-
-\def\blx@resetformat@i#1#2#3{%
- \ifcsdef{abx@#1@#3@#2}
- {\csundef{abx@#1@#3@#2}}
- {}}
-
-% {<name>}{<name>}
-
-\def\blx@letformat#1#2{%
- \blx@safe@actives
- \afterassignment\blx@rest@actives
- \csletcs{#1}{#2}}
-
-% [aliastype]{aliasname}[formattype]{formatname}
-
-\def\blx@defalias#1{%
- \@ifnextchar[%]
- {\blx@defalias@i{#1}}
- {\blx@defalias@i{#1}[*]}}
-\def\blx@defalias@i#1[#2]#3{%
- \@ifnextchar[%]
- {\blx@defalias@ii{#1}{#2}{#3}}
- {\blx@defalias@ii{#1}{#2}{#3}[*]}}
-\def\blx@defalias@ii#1#2#3[#4]#5{%
- \blx@safe@actives
- \afterassignment\blx@rest@actives
- \csedef{abx@#1@#2@#3}{%
- \expandonce{\csname abx@#1@#4@#5\endcsname}}}
-
-% {<macro>}{<id>}{<name>}{<field>}
-
-\def\blx@getformat#1#2#3#4{%
- \blx@safe@actives
- \afterassignment\blx@rest@actives
- \ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#3}
- {\ifcsundef{abx@#2@*@#3}
- {\ifcsundef{abx@#2@\blx@imc@thefield{entrytype}@#4}
- {\ifcsundef{abx@#2@*@#4}
- {\letcs#1{abx@#2@*@default}}
- {\letcs#1{abx@#2@*@#4}}}
- {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#4}}}
- {\letcs#1{abx@#2@*@#3}}}
- {\letcs#1{abx@#2@\blx@imc@thefield{entrytype}@#3}}}
-
-% [<entrytype>]{<name>}
-
-\newrobustcmd*{\savefieldformat}[2][*]{\blx@save{abx@ffd@#1@#2}}
-\newrobustcmd*{\savelistformat}[2][*]{\blx@save{abx@lfd@#1@#2}}
-\newrobustcmd*{\savenameformat}[2][*]{\blx@save{abx@nfd@#1@#2}}
-
-\newrobustcmd*{\restorefieldformat}[2][*]{\blx@restore{abx@ffd@#1@#2}}
-\newrobustcmd*{\restorelistformat}[2][*]{\blx@restore{abx@lfd@#1@#2}}
-\newrobustcmd*{\restorenameformat}[2][*]{\blx@restore{abx@nfd@#1@#2}}
-
-% [<entrytype>]{<name>}{<true>}{<false>}
-
-\newrobustcmd*{\iffieldformatundef}[2][*]{\ifcsundef{abx@ffd@#1@#2}}
-\newrobustcmd*{\iflistformatundef}[2][*]{\ifcsundef{abx@lfd@#1@#2}}
-\newrobustcmd*{\ifnameformatundef}[2][*]{\ifcsundef{abx@nfd@#1@#2}}
-
-% [<entrytype>]{<alias>}[<entrytype>]{<name>}
-
-\newrobustcmd*{\DeclareNameAlias}{\blx@defalias{nfd}}
-\newrobustcmd*{\DeclareIndexNameAlias}{\blx@defalias{nid}}
-
-\newrobustcmd*{\DeclareListAlias}{\blx@defalias{lfd}}
-\newrobustcmd*{\DeclareIndexListAlias}{\blx@defalias{lid}}
-
-\newrobustcmd*{\DeclareFieldAlias}{\blx@defalias{ffd}}
-\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}}
-
-% [<format>]{<text>}
-
-\newrobustcmd{\blx@imc@printtext}[2][]{%
- \ifblank{#2}
- {\blx@nounit}
- {\ifblank{#1}
- {\let\blx@theformat\@firstofone}
- {\blx@getformat\blx@theformat{ffd}{#1}{}}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \blx@theformat{#2}%
- \blx@endunit}}}
-
-% [<format>]{<field>}
-
-\newrobustcmd*{\blx@imc@printfield}[2][]{%
- \blx@imc@iffieldundef{#2}
- {\blx@nounit}
- {\blx@getformat\blx@theformat{ffd}{#1}{#2}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \def\currentfield{#2}%
- \expandafter\expandafter
- \expandafter\blx@theformat
- \expandafter\expandafter
- \expandafter{\csname abx@field@#2\endcsname}%
- \blx@endunit}}}
-
-% [<format>]{<field>}
-
-\newcommand*{\blx@imc@indexfield}[2][]{%
- \blx@imc@iffieldundef{#2}
- {}
- {\blx@getformat\blx@theformat{fid}{#1}{#2}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \def\currentfield{#2}%
- \letcs\blx@tempa{abx@field@#2}%
- \expandafter\blx@theformat\expandafter{\blx@tempa}%
- \endgroup}}}
-
-% [<format>]{<file>}
-
-\newrobustcmd*{\blx@imc@printfile}[2][]{%
- \iftoggle{blx@loadfiles}
- {\IfFileExists{#2}
- {\listxadd\blx@list@req@edit{#2}%
- \blx@imc@printtext[#1]{\input{#2}\unspace}}
- {\blx@nounit}}
- {\blx@nounit}}
-
-% {<macro>}[<format>][<start>-<stop>]
-% => <macro>{<format>}{<start>}{<stop>}
-
-\def\blx@listargs#1{%
- \@ifnextchar[%]
- {\blx@listargs@i{#1}}
- {#1{}{}{}}}
-
-\def\blx@listargs@i#1[#2]{%
- \@ifnextchar[%]
- {\blx@listargs@ii{#1}{#2}}
- {#1{#2}{}{}}}
-
-\def\blx@listargs@ii#1#2[#3]{%
- \blx@listargs@iii{#1}{#2}#3&}
-
-\def\blx@listargs@iii#1#2#3-#4&{%
- #1{#2}{#3}{#4}}
-
-% [<format>][<start>-<stop>]{<namelist>}
-
-\protected\def\blx@imc@printnames{%
- \blx@listargs\blx@printnames}
-
-% {<format>}{<start>}{<stop>}{<namelist>}
-
-\def\blx@printnames#1#2#3#4{%
- \blx@imc@ifnameundef{#4}
- {\blx@nounit}
- {\blx@getformat\blx@theformat{nfd}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \blx@namesetup{#2}{#3}{#4}%
- \expandafter\blx@nameparser\blx@thedata{}&%
- \blx@endunit}}}
-
-\def\blx@namesetup#1#2#3{%
- \def\currentname{#3}%
- \c@listcount\@ne
- \c@listtotal\csname c@#3\endcsname
- \blx@namesetup@i{#3}%
- \ifblank{#1}
- {\c@liststart\@ne}
- {\ifnum#1<\@ne
- \c@liststart\@ne
- \else
- \c@liststart#1\relax
- \fi}%
- \ifblank{#2}
- {\c@liststop\c@listtotal
- \ifnum\c@liststop>\c@maxnames
- \c@liststop\c@minnames
- \ifnum\c@uniquelist>\c@liststop
- \c@liststop\c@uniquelist
- \fi
- \fi}
- {\ifnum#2>\c@listtotal
- \c@liststop\c@listtotal
- \else
- \ifnum#2<\@ne
- \c@liststop\@ne
- \else
- \c@liststop#2\relax
- \fi
- \fi}%
- \let~\bibnamedelima
- \blx@namecodes}
-
-\def\blx@namesetup@i#1{%
- \expandafter\expandafter
- \expandafter\blx@namesetup@ii\csname abx@name@#1\endcsname}
-
-\def\blx@namesetup@ii#1#2{%
- \c@uniquelist\z@
- \ifblank{#1}
- {}
- {\setkeys{blx@opt@name}{#1}}%
- \def\blx@thedata{#2}}
-
-\define@key{blx@opt@name}{uniquelist}{\c@uniquelist#1\relax}
-\define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax}
-\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}}
-
-\newrobustcmd*{\bibinitperiod}{\adddot}
-\newrobustcmd*{\bibinitdelim}{\addnbspace}
-\newrobustcmd*{\bibinithyphendelim}{.\mbox{-}}
-\newrobustcmd*{\bibnamedelima}{\addhighpenspace}
-\newrobustcmd*{\bibnamedelimb}{\addlowpenspace}
-\newrobustcmd*{\bibnamedelimc}{\addhighpenspace}
-\newrobustcmd*{\bibnamedelimd}{\addlowpenspace}
-\newrobustcmd*{\bibnamedelimi}{\addnbspace}
-
-% [<format>][<start>-<stop>]{<namelist>}
-
-\protected\def\blx@imc@indexnames{%
- \blx@listargs\blx@indexnames}
-
-% {<format>}{<start>}{<stop>}{<namelist>}
-
-\def\blx@indexnames#1#2#3#4{%
- \blx@imc@ifnameundef{#4}
- {}
- {\blx@getformat\blx@theformat{nid}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \blx@namesetup{#2}{#3}{#4}%
- \blx@indexnamesetup
- \expandafter\blx@nameparser\blx@thedata{}&%
- \endgroup}}}
-
-\def\blx@indexnamesetup{%
- \let\bibinitperiod\bibindexinitperiod
- \let\bibinitdelim\bibindexinitdelim
- \let\bibinithyphendelim\bibindexinithyphendelim
- \let\bibnamedelima\bibindexnamedelima
- \let\bibnamedelimb\bibindexnamedelimb
- \let\bibnamedelimc\bibindexnamedelimc
- \let\bibnamedelimd\bibindexnamedelimd
- \let\bibnamedelimi\bibindexnamedelimi}
-
-% {<name1>}{<name2>}{...}
-
-\long\def\blx@nameparser#1{%
- \ifblank{#1}
- {\blx@namebreak}
- {\ifnum\c@listcount<\c@liststart
- \else
- \blx@nameparser@i#1%
- \fi
- \advance\c@listcount\@ne
- \ifnum\c@listcount>\c@liststop
- \expandafter\blx@namebreak
- \fi
- \blx@nameparser}}
-
-\long\def\blx@nameparser@i#1{%
- \ifblank{#1}
- {}
- {\setkeys{blx@opt@name}{#1}}%
- \blx@theformat}
-
-\long\def\blx@namebreak#1&{}
-
-% [<format>][<start>-<stop>]{<plainlist>}
-
-\protected\def\blx@imc@printlist{%
- \blx@listargs\blx@printlist}
-
-% {<format>}{<start>}{<stop>}{<plainlist>}
-
-\def\blx@printlist#1#2#3#4{%
- \blx@imc@iflistundef{#4}
- {\blx@nounit}
- {\blx@getformat\blx@theformat{lfd}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {\blx@nounit}
- {\blx@begunit
- \blx@listsetup{#2}{#3}{#4}%
- \expandafter\blx@listparser\blx@thedata{}&%
- \blx@endunit}}}
-
-\def\blx@listsetup#1#2#3{%
- \def\currentlist{#3}%
- \c@listcount\@ne
- \expandafter\c@listtotal\csname c@#3\endcsname
- \letcs\blx@thedata{abx@list@#3}%
- \ifblank{#1}
- {\c@liststart\@ne}
- {\ifnum#1<\@ne
- \c@liststart\@ne
- \else
- \c@liststart#1\relax
- \fi}%
- \ifblank{#2}
- {\c@liststop\c@listtotal
- \ifnum\c@listtotal>\c@maxitems
- \c@liststop\c@minitems
- \fi}
- {\ifnum#2>\c@listtotal
- \c@liststop\c@listtotal
- \else
- \ifnum#2<\@ne
- \c@liststop\@ne
- \else
- \c@liststop#2\relax
- \fi
- \fi}}
-
-% [<format>][<start>-<stop>]{<plainlist>}
-
-\protected\def\blx@imc@indexlist{%
- \blx@listargs\blx@indexlist}
-
-% {<format>}{<start>}{<stop>}{<plainlist>}
-
-\def\blx@indexlist#1#2#3#4{%
- \blx@imc@iflistundef{#4}
- {}
- {\blx@getformat\blx@theformat{lid}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \blx@listsetup{#2}{#3}{#4}%
- \expandafter\blx@listparser\blx@thedata{}&%
- \endgroup}}}
-
-% {<item1>}{<item2>}{...}
-
-\long\def\blx@listparser#1{%
- \ifblank{#1}
- {\blx@listbreak}
- {\ifnum\c@listcount<\c@liststart
- \else
- \blx@theformat{#1}%
- \fi
- \advance\c@listcount\@ne
- \ifnum\c@listcount>\c@liststop
- \expandafter\blx@listbreak
- \fi
- \blx@listparser}}
-
-\long\def\blx@listbreak#1&{}
-
-% <*>{<key>}{<code>}
-
-\protected\def\blx@imc@entrydata{%
- \@ifstar
- {\blx@xsanitizeafter{\blx@imc@entrydata@i\blx@saveentry}}
- {\blx@xsanitizeafter{\blx@imc@entrydata@i{}}}}
-
-\long\def\blx@imc@entrydata@i#1#2#3{%
- \blx@ifdata{#2}
- {\begingroup
- #1%
- \blx@resetdata
- \blx@getdata{#2}%
- \blx@entrysetcount
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \addtocounter{instcount}\@ne
- \blx@execute
- \blx@beglangbib#3\blx@endlangbib
- \endgroup}
- {}}
-
-\protected\def\blx@imc@entryset#1#2{%
- \blx@imc@iffieldundef{entrykey}
- {}
- {\begingroup
- \long\def\blx@entryset@precode{#1}%
- \long\def\blx@entryset@postcode{#2}%
- \let\finentry\blx@finentry@inset
- \let\do\blx@entryset
- \blx@imc@docsvfield{entryset}%
- \endgroup}}
-
-\def\blx@entryset#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@imc@clearlist{pageref}%
- \blx@getdata{#1}%
- \blx@setoptions@type\abx@field@entrytype
- \def\abx@field@entrysetcount{1}%
- \blx@entryset@precode
- \blx@driver{\blx@imc@thefield{entrytype}}%
- \blx@entryset@postcode
- \endgroup}
- {}%
- \let\do\blx@entryset@i}
-
-\def\blx@entryset@i#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@resetdata
- \blx@getdata{#1}%
- \blx@entrysetcount
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \addtocounter{instcount}\@ne
- \blx@execute
- \blx@beglangbib
- \blx@begunit
- \blx@entryset@precode
- \blx@driver{\blx@imc@thefield{entrytype}}
- \blx@entryset@postcode
- \blx@endunit
- \blx@endlangbib
- \endgroup}
- {\blx@nounit}}
-
-\blx@regimcs{%
- \printtext \printfield \printlist \printnames \printfile
- \indexfield \indexlist \indexnames \entrydata \entryset}
-
-%% Localization
-
-% [<wrapper>]{<string>}
-
-\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{%
- \blx@bibstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@biblstring}[2][\@firstofone]{%
- \blx@bibstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{%
- \blx@bibstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@bibstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {\blx@imc@ifcapital
- {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}}
- {#1{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% [<wrapper>]{<string>}
-
-\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{%
- \blx@bibcpstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@bibcplstring}[2][\@firstofone]{%
- \blx@bibcpstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@bibcpsstring}[2][\@firstofone]{%
- \blx@bibcpstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@bibcpstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeCapital{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% [<wrapper>]{<string>}
-
-\newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{%
- \blx@biblcstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@biblclstring}[2][\@firstofone]{%
- \blx@biblcstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@biblcsstring}[2][\@firstofone]{%
- \blx@biblcstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@biblcstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% [<wrapper>]{<string>}
-
-\newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{%
- \blx@bibucstring{#1}{\abx@str}{#2}}
-
-\newrobustcmd*{\blx@imc@bibuclstring}[2][\@firstofone]{%
- \blx@bibucstring{#1}{abx@lstr}{#2}}
-
-\newrobustcmd*{\blx@imc@bibucsstring}[2][\@firstofone]{%
- \blx@bibucstring{#1}{abx@sstr}{#2}}
-
-\protected\def\blx@bibucstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \let\bibstring\blx@imc@bibxstring
- \let\biblstring\blx@imc@bibxlstring
- \let\bibsstring\blx@imc@bibxsstring
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}%
- \blx@endunit}}
-
-% {<string>}
-
-\def\blx@imc@bibxstring#1{%
- \blx@bibxstring{\abx@str}{#1}}
-
-\def\blx@imc@bibxlstring#1{%
- \blx@bibxstring{abx@lstr}{#1}}
-
-\def\blx@imc@bibxsstring#1{%
- \blx@bibxstring{abx@sstr}{#1}}
-
-\def\blx@bibxstring#1#2{%
- \ifcsundef{#1@#2}
- {\protect\blx@warn@nostring{#2}}
- {\csuse{#1@#2}}}
-
-% {<string>}{<true>}{<false>}
-
-\def\blx@imc@ifbibstring#1{%
- \ifcsundef{\abx@str @\detokenize{#1}}
- {\@secondoftwo}
- {\@firstoftwo}}
-
-\def\blx@imc@ifbibxstring#1{%
- \blx@xsanitizeafter\ifcsundef{\abx@str @#1}
- {\@secondoftwo}
- {\@firstoftwo}}
-
-% {<field>}{<true>}{<false>}
-
-\def\blx@imc@iffieldbibstring#1{%
- \blx@imc@iffieldundef{#1}
- {\@secondoftwo}
- {\ifcsundef{\abx@str @\detokenize\expandafter
- \expandafter\expandafter{%
- \csname abx@field@#1\endcsname}}
- {\@secondoftwo}
- {\@firstoftwo}}}
-
-\blx@regimcs{%
- \bibstring \biblstring \bibsstring
- \bibxstring \bibxlstring \bibxsstring
- \bibcpstring \bibcplstring \bibcpsstring
- \biblcstring \biblclstring \biblcsstring
- \bibucstring \bibuclstring \bibucsstring
- \ifbibstring \ifbibxstring \iffieldbibstring}
-
-\let\blx@hook@uc\relax
-\let\blx@hook@lc\relax
-
-\AtEndPreamble{%
- \toggletrue{blx@tempa}%
- \toggletrue{blx@tempb}%
- \expandafter\patchcmd\csname MakeUppercase \endcsname
- {\protected@edef}
- {\blx@hook@uc\protected@edef}
- {\togglefalse{blx@tempa}}
- {}%
- \expandafter\patchcmd\csname MakeLowercase \endcsname
- {\protected@edef}
- {\blx@hook@lc\protected@edef}
- {\togglefalse{blx@tempb}}
- {}%
- \@ifpackageloaded{textcase}
- {\expandafter\patchcmd\csname MakeUppercase \endcsname
- {\def\i}
- {\blx@hook@uc\def\i}
- {\togglefalse{blx@tempa}}
- {}%
- \expandafter\patchcmd\csname MakeLowercase \endcsname
- {\@uclcnotmath{}}
- {\@uclcnotmath{\blx@hook@lc}}
- {\togglefalse{blx@tempb}}
- {}%
- \expandafter\patchcmd\csname MakeTextUppercase \endcsname
- {\def\i}
- {\blx@hook@uc\def\i}
- {}
- {}%
- \expandafter\patchcmd\csname MakeTextLowercase \endcsname
- {\@uclcnotmath{}}
- {\@uclcnotmath{\blx@hook@lc}}
- {}
- {}}
- {}%
- \iftoggle{blx@tempa}{\blx@err@patch{\string\MakeUppercase}}{}%
- \iftoggle{blx@tempb}{\blx@err@patch{\string\MakeLowercase}}{}%
-}
-
-\appto\blx@blxinit{%
- \def\blx@hook@uc{%
- \def\bibstring{\blx@imc@bibucstring}%
- \def\biblstring{\blx@imc@bibuclstring}%
- \def\bibsstring{\blx@imc@bibucsstring}%
- \def\biblcstring{\blx@imc@bibucstring}%
- \def\biblclstring{\blx@imc@bibuclstring}%
- \def\biblcsstring{\blx@imc@bibucsstring}%
- \def\bibcpstring{\blx@imc@bibucstring}%
- \def\bibcplstring{\blx@imc@bibuclstring}%
- \def\bibcpsstring{\blx@imc@bibucsstring}}%
- \def\blx@hook@lc{%
- \def\bibstring{\blx@imc@biblcstring}%
- \def\biblstring{\blx@imc@biblclstring}%
- \def\bibsstring{\blx@imc@biblcsstring}%
- \def\bibucstring{\blx@imc@biblcstring}%
- \def\bibuclstring{\blx@imc@biblclstring}%
- \def\bibucsstring{\blx@imc@biblcsstring}%
- \def\bibcpstring{\blx@imc@biblcstring}%
- \def\bibcplstring{\blx@imc@biblclstring}%
- \def\bibcpsstring{\blx@imc@biblcsstring}}}
-
-\def\abx@dostrings{%
- \do{bibliography}%
- \do{references}%
- \do{shorthands}%
- \do{editor}%
- \do{editors}%
- \do{compiler}%
- \do{compilers}%
- \do{redactor}%
- \do{redactors}%
- \do{reviser}%
- \do{revisers}%
- \do{founder}%
- \do{founders}%
- \do{continuator}%
- \do{continuators}%
- \do{collaborator}%
- \do{collaborators}%
- \do{translator}%
- \do{translators}%
- \do{commentator}%
- \do{commentators}%
- \do{annotator}%
- \do{annotators}%
- \do{commentary}%
- \do{annotations}%
- \do{introduction}%
- \do{foreword}%
- \do{afterword}%
- \do{editortr}%
- \do{editorstr}%
- \do{editorco}%
- \do{editorsco}%
- \do{editoran}%
- \do{editorsan}%
- \do{editorin}%
- \do{editorsin}%
- \do{editorfo}%
- \do{editorsfo}%
- \do{editoraf}%
- \do{editorsaf}%
- \do{editortrco}%
- \do{editorstrco}%
- \do{editortran}%
- \do{editorstran}%
- \do{editortrin}%
- \do{editorstrin}%
- \do{editortrfo}%
- \do{editorstrfo}%
- \do{editortraf}%
- \do{editorstraf}%
- \do{editorcoin}%
- \do{editorscoin}%
- \do{editorcofo}%
- \do{editorscofo}%
- \do{editorcoaf}%
- \do{editorscoaf}%
- \do{editoranin}%
- \do{editorsanin}%
- \do{editoranfo}%
- \do{editorsanfo}%
- \do{editoranaf}%
- \do{editorsanaf}%
- \do{editortrcoin}%
- \do{editorstrcoin}%
- \do{editortrcofo}%
- \do{editorstrcofo}%
- \do{editortrcoaf}%
- \do{editorstrcoaf}%
- \do{editortranin}%
- \do{editorstranin}%
- \do{editortranfo}%
- \do{editorstranfo}%
- \do{editortranaf}%
- \do{editorstranaf}%
- \do{translatorco}%
- \do{translatorsco}%
- \do{translatoran}%
- \do{translatorsan}%
- \do{translatorin}%
- \do{translatorsin}%
- \do{translatorfo}%
- \do{translatorsfo}%
- \do{translatoraf}%
- \do{translatorsaf}%
- \do{translatorcoin}%
- \do{translatorscoin}%
- \do{translatorcofo}%
- \do{translatorscofo}%
- \do{translatorcoaf}%
- \do{translatorscoaf}%
- \do{translatoranin}%
- \do{translatorsanin}%
- \do{translatoranfo}%
- \do{translatorsanfo}%
- \do{translatoranaf}%
- \do{translatorsanaf}%
- \do{byauthor}%
- \do{byeditor}%
- \do{byeditor}%
- \do{bycompiler}%
- \do{byredactor}%
- \do{byreviser}%
- \do{byreviewer}%
- \do{byfounder}%
- \do{bycontinuator}%
- \do{bycollaborator}%
- \do{bytranslator}%
- \do{bycommentator}%
- \do{byannotator}%
- \do{withcommentator}%
- \do{withannotator}%
- \do{withintroduction}%
- \do{withforeword}%
- \do{withafterword}%
- \do{byeditortr}%
- \do{byeditorco}%
- \do{byeditoran}%
- \do{byeditorin}%
- \do{byeditorfo}%
- \do{byeditoraf}%
- \do{byeditortrco}%
- \do{byeditortran}%
- \do{byeditortrin}%
- \do{byeditortrfo}%
- \do{byeditortraf}%
- \do{byeditorcoin}%
- \do{byeditorcofo}%
- \do{byeditorcoaf}%
- \do{byeditoranin}%
- \do{byeditoranfo}%
- \do{byeditoranaf}%
- \do{byeditortrcoin}%
- \do{byeditortrcofo}%
- \do{byeditortrcoaf}%
- \do{byeditortranin}%
- \do{byeditortranfo}%
- \do{byeditortranaf}%
- \do{bytranslatorco}%
- \do{bytranslatoran}%
- \do{bytranslatorin}%
- \do{bytranslatorfo}%
- \do{bytranslatoraf}%
- \do{bytranslatorcoin}%
- \do{bytranslatorcofo}%
- \do{bytranslatorcoaf}%
- \do{bytranslatoranin}%
- \do{bytranslatoranfo}%
- \do{bytranslatoranaf}%
- \do{and}%
- \do{andothers}%
- \do{andmore}%
- \do{volume}%
- \do{volumes}%
- \do{involumes}%
- \do{part}%
- \do{jourvol}%
- \do{jourser}%
- \do{newseries}%
- \do{oldseries}%
- \do{edition}%
- \do{reprint}%
- \do{reprintof}%
- \do{reprintas}%
- \do{reprintfrom}%
- \do{reviewof}%
- \do{translationof}%
- \do{translationas}%
- \do{translationfrom}%
- \do{origpubas}%
- \do{origpubin}%
- \do{astitle}%
- \do{bypublisher}%
- \do{page}%
- \do{pages}%
- \do{column}%
- \do{columns}%
- \do{line}%
- \do{lines}%
- \do{nodate}%
- \do{verse}%
- \do{verses}%
- \do{section}%
- \do{sections}%
- \do{paragraph}%
- \do{paragraphs}%
- \do{in}%
- \do{inseries}%
- \do{ofseries}%
- \do{book}%
- \do{issue}%
- \do{number}%
- \do{chapter}%
- \do{mathesis}%
- \do{phdthesis}%
- \do{candthesis}%
- \do{resreport}%
- \do{techreport}%
- \do{software}%
- \do{datacd}%
- \do{audiocd}%
- \do{version}%
- \do{url}%
- \do{urlfrom}%
- \do{urlseen}%
- \do{file}%
- \do{inpreparation}%
- \do{submitted}%
- \do{inpress}%
- \do{prepublished}%
- \do{forthcoming}%
- \do{library}%
- \do{abstract}%
- \do{annotation}%
- \do{citedas}%
- \do{seenote}%
- \do{quotedin}%
- \do{opcit}%
- \do{loccit}%
- \do{ibidem}%
- \do{idem}%
- \do{idemsf}%
- \do{idemsm}%
- \do{idemsn}%
- \do{idempf}%
- \do{idempm}%
- \do{idempn}%
- \do{idempp}%
- \do{confer}%
- \do{sequens}%
- \do{sequentes}%
- \do{passim}%
- \do{see}%
- \do{seealso}%
- \do{backrefpage}%
- \do{backrefpages}%
- \do{thiscite}%
- \do{january}%
- \do{february}%
- \do{march}%
- \do{april}%
- \do{may}%
- \do{june}%
- \do{july}%
- \do{august}%
- \do{september}%
- \do{october}%
- \do{november}%
- \do{december}%
- \do{langamerican}%
- \do{langbrazilian}%
- \do{langcatalan}%
- \do{langcroatian}%
- \do{langczech}%
- \do{langdanish}%
- \do{langdutch}%
- \do{langenglish}%
- \do{langfinnish}%
- \do{langfrench}%
- \do{langgerman}%
- \do{langgreek}%
- \do{langitalian}%
- \do{langjapanese}%
- \do{langlatin}%
- \do{langnorwegian}%
- \do{langpolish}%
- \do{langportuguese}%
- \do{langrussian}%
- \do{langslovene}%
- \do{langspanish}%
- \do{langswedish}%
- \do{fromamerican}%
- \do{frombrazilian}%
- \do{fromcatalan}%
- \do{fromcroatian}%
- \do{fromczech}%
- \do{fromdanish}%
- \do{fromdutch}%
- \do{fromenglish}%
- \do{fromfinnish}%
- \do{fromfrench}%
- \do{fromgerman}%
- \do{fromgreek}%
- \do{fromitalian}%
- \do{fromjapanese}%
- \do{fromlatin}%
- \do{fromnorwegian}%
- \do{frompolish}%
- \do{fromportuguese}%
- \do{fromrussian}%
- \do{fromslovene}%
- \do{fromspanish}%
- \do{fromswedish}%
- \do{countryde}%
- \do{countryep}%
- \do{countryeu}%
- \do{countryfr}%
- \do{countryuk}%
- \do{countryus}%
- \do{patent}%
- \do{patentde}%
- \do{patenteu}%
- \do{patentfr}%
- \do{patentuk}%
- \do{patentus}%
- \do{patreq}%
- \do{patreqde}%
- \do{patreqeu}%
- \do{patreqfr}%
- \do{patrequk}%
- \do{patrequs}%
-}
-
-\newrobustcmd*{\NewBibliographyString}[1]{%
- \forcsvlist\blx@newstring{#1}}
-
-\def\blx@newstring#1{%
- \ifcsundef{KV@blx@lbx@#1}
- {\gappto\abx@dostrings{\do{#1}}%
- \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}}
- {}}
-
-% in *.cbx/bbx/tex: <key> = {<string>},
-% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}},
-
-\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}}
-\abx@dostrings
-
-% in *.cbx/bbx/tex: (implicit)
-% in *.lbx: inherit = {<language>},
-
-\define@key{blx@lbx}{inherit}{%
- \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}%
- \csuse{abx@strings@#1}}
-
-\def\blx@cfg@defstring#1#2{%
- \csdef{abx@lstr@#1}{#2}%
- \csdef{abx@sstr@#1}{#2}}
-
-\def\blx@lbx@defstring#1#2{%
- \blx@lbx@defstring@i{#1}#2}
-\def\blx@lbx@defstring@i#1#2#3{%
- \csdef{abx@lstr@#1}{#2}%
- \csdef{abx@sstr@#1}{#3}}
-
-% {<language>}
-
-\def\blx@lbxcheck#1{%
- \ifcsdef{blx@lng@#1}
- {\expandafter\expandafter\expandafter\IfFileExists
- \expandafter\expandafter\expandafter{%
- \csname blx@lng@#1\endcsname.lbx}
- {}
- {\blx@err@nolang{#1}}}
- {\IfFileExists{#1.lbx}
- {}
- {\blx@err@nolang{#1}}}}
-
-% {<language>}{<definitions>}
-
-\newrobustcmd*{\DefineBibliographyExtras}[2]{%
- \blx@lbxcheck{#1}%
- \csgappto{blx@hook@extras@#1}{%
- \blx@defbibextras{#1}{#2}}}
-\@onlypreamble\DefineBibliographyExtras
-
-\newrobustcmd*{\UndefineBibliographyExtras}[2]{%
- \blx@lbxcheck{#1}%
- \csgappto{blx@hook@noextras@#1}{%
- \blx@undefbibextras{#1}{#2}}}
-\@onlypreamble\UndefineBibliographyExtras
-
-\def\blx@defbibextras#1{\csgappto{abx@extras@#1}}
-\def\blx@undefbibextras#1{\csgappto{abx@noextras@#1}}
-
-% {<language>}{<language>}
-
-\def\blx@letbibextras#1#2{%
- \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}%
- \global\csletcs{abx@extras@#1}{abx@extras@#2}
- \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}%
-
-% {<language>}{<strings>}
-
-\newrobustcmd*{\DefineBibliographyStrings}[2]{%
- \blx@lbxcheck{#1}%
- \csgappto{blx@hook@strings@#1}{%
- \begingroup
- \let\blx@defstring\blx@cfg@defstring
- \blx@defbibstrings{#1}{#2}%
- \endgroup}}
-\@onlypreamble\DefineBibliographyStrings
-
-\def\blx@defbibstrings#1#2{%
- \def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}%
- \abx@dostrings
- \csuse{abx@strings@#1}%
- \setkeys{blx@lbx}{#2}%
- \let\do\blx@defbibstrings@i
- \csxdef{abx@strings@#1}{\abx@dostrings}%
- \csgappto{abx@strings@#1}{%
- \ifcsdef{\abx@str @bibliography}
- {\letcs\bibname{\abx@str @bibliography}}
- {\let\bibname\@empty}%
- \ifcsdef{\abx@str @references}
- {\letcs\refname{\abx@str @references}}
- {\let\refname\@empty}%
- \ifcsdef{\abx@str @shorthands}
- {\letcs\biblistname{\abx@str @shorthands}}
- {\let\biblistname\@empty}}}
-
-\def\blx@defbibstrings@i#1{%
- \ifcsdef{abx@lstr@#1}
- {\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{%
- \csexpandonce{abx@lstr@#1}}}
- {\undef\expandafter\noexpand\csname abx@lstr@#1\endcsname}%
- \ifcsdef{abx@sstr@#1}
- {\def\expandafter\noexpand\csname abx@sstr@#1\endcsname{%
- \csexpandonce{abx@sstr@#1}}}
- {\undef\expandafter\noexpand\csname abx@sstr@#1\endcsname}}
-
-% {<language>}{<language>}
-
-\def\blx@letbibstrings#1#2{%
- \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}%
- \global\csletcs{abx@strings@#1}{abx@strings@#2}}%
-
-% {<language>}{<exceptions>}
-
-\newrobustcmd*{\DefineHyphenationExceptions}[2]{%
- \ifcsundef{l@#1}
- {\blx@warn@nohyph{#1}}
- {}%
- \csgappto{blx@hook@hyph@#1}{\blx@hyphexcept{#1}{#2}}}
-\@onlypreamble\DefineHyphenationExceptions
-
-\def\blx@hyphexcept#1#2{%
- \ifcsundef{l@#1}
- {\blx@warn@nohyph{#1}}
- {\begingroup
- \language\csname l@#1\endcsname\relax
- \hyphenation{#2}%
- \endgroup}}
-
-% {<language>}{<mapping>}
-
-\newrobustcmd*{\DeclareLanguageMapping}[2]{%
- \csgdef{blx@lng@#1}{#2}}
-\@onlypreamble\DeclareLanguageMapping
-
-% {<language>}{<success>}{<failure>}
-
-\def\blx@lbxinput#1{%
- \ifcsdef{blx@lng@#1}
- {\expandafter\expandafter\expandafter\blx@lbxinput@i
- \expandafter\expandafter\expandafter{%
- \csname blx@lng@#1\endcsname}{#1}}
- {\blx@lbxinput@ii{#1}{#1}{language '#1'}}}
-
-% {<mapping>}{<language>}
-
-\def\blx@lbxinput@i#1#2{%
- \global\csundef{blx@lng@#2}%
- \IfFileExists{#1.lbx}
- {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}}
- {\blx@warning@noline{%
- File '#1.lbx' not found!\MessageBreak
- Ignoring mapping '#2' -> '#1'}%
- \blx@lbxinput{#2}}}
-
-% {<language>}{<lbxfile>}{<message>}
-
-\def\blx@lbxinput@ii#1#2#3{%
- \begingroup
- \setbox\@tempboxa=\hbox\bgroup
- \aftergroup\endgroup
- \blx@inputonce{#2.lbx}{#3}
- {\global\cslet{abx@strings@#1}\@empty
- \global\cslet{abx@extras@#1}\@empty
- \global\cslet{abx@noextras@#1}\@empty
- \blx@maplang{#1}{#1}%
- \def\InheritBibliographyStrings{%
- \blx@letbibstrings{#1}}%
- \def\DeclareBibliographyStrings####1{%
- \begingroup
- \let\blx@defstring\blx@lbx@defstring
- \blx@defbibstrings{#1}{####1}%
- \endgroup}%
- \def\InheritBibliographyExtras{\blx@letbibextras{#1}}%
- \def\DeclareBibliographyExtras{\blx@defbibextras{#1}}%
- \def\UndeclareBibliographyExtras{\blx@undefbibextras{#1}}%
- \def\DeclareHyphenationExceptions{\blx@hyphexcept{#1}}%
- \begingroup
- \blx@saneccodes
- \makeatletter}
- {\endgroup
- \csuse{blx@hook@strings@#1}%
- \csuse{blx@hook@strings@#2}%
- \csuse{blx@hook@extras@#1}%
- \csuse{blx@hook@extras@#2}%
- \csuse{blx@hook@noextras@#1}%
- \csuse{blx@hook@noextras@#2}%
- \csuse{blx@hook@hyph@#1}%
- \csuse{blx@hook@hyph@#2}}
- {\aftergroup\@firstoftwo}
- {\aftergroup\@secondoftwo}%
- \egroup}
-
-% {<language>}
-
-\def\blx@langsetup#1{%
- \blx@lbxinput{#1}
- {\edef\blx@languagename{#1}}
- {\blx@warning
- {Language '#1' not supported.\MessageBreak
- Using fallback language '\blx@languagename'}%
- \blx@lbxinput{\blx@languagename}
- {\blx@maplang{#1}{\blx@languagename}}
- {\blx@err@nolang{\blx@languagename}}}}
-
-% auxiliary macros
-
-% {<field base name>}
-
-\newrobustcmd*{\mkbibrangeshort}{%
- \mkbibrangefull{short}}
-
-\newrobustcmd*{\mkbibrangelong}{%
- \mkbibrangefull{long}}
-
-\newrobustcmd*{\mkbibrangeterse}{%
- \mkbibrangetrunc{short}}
-
-\newrobustcmd*{\mkbibrangecomp}{%
- \mkbibrangetrunc{long}}
-
-\newrobustcmd*{\mkbibrangeshortextra}{%
- \mkbibrangefullextra{short}}
-
-\newrobustcmd*{\mkbibrangelongextra}{%
- \mkbibrangefullextra{long}}
-
-\newrobustcmd*{\mkbibrangeterseextra}{%
- \mkbibrangetruncextra{short}}
-
-\newrobustcmd*{\mkbibrangecompextra}{%
- \mkbibrangetruncextra{long}}
-
-% {<short|long>}{<basename>}
-
-\newrobustcmd*{\mkbibrangefull}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
- \iffieldundef{#2endyear}
- {}
- {\iffieldequalstr{#2endyear}{}
- {\mbox{\bibdatedash}}
- {\bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
-
-\newrobustcmd*{\mkbibrangetrunc}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \iffieldsequal{#2year}{#2endyear}
- {\iffieldsequal{#2month}{#2endmonth}
- {\csuse{mkbibdate#1}{}{}{#2day}}
- {\csuse{mkbibdate#1}{}{#2month}{#2day}}}
- {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}%
- \iffieldundef{#2endyear}
- {}
- {\iffieldequalstr{#2endyear}{}
- {\mbox{\bibdatedash}}
- {\bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}}}
-
-\newrobustcmd*{\mkbibrangefullextra}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \printtext{%
- \csuse{mkbibdate#1}{#2year}{#2month}{#2day}}%
- \iffieldundef{#2endyear}
- {\printfield{extrayear}}
- {\iffieldequalstr{#2endyear}{}
- {\printfield{extrayear}%
- \printtext{\mbox{\bibdatedash}}}
- {\printtext{%
- \bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
- \printfield{extrayear}}}}}}}
-
-\newrobustcmd*{\mkbibrangetruncextra}[2]{%
- \iffieldundef{#2year}
- {}
- {\printtext[#2date]{%
- \printtext{%
- \iffieldsequal{#2year}{#2endyear}
- {\iffieldsequal{#2month}{#2endmonth}
- {\csuse{mkbibdate#1}{}{}{#2day}}
- {\csuse{mkbibdate#1}{}{#2month}{#2day}}}
- {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}%
- \iffieldundef{#2endyear}
- {\printfield{extrayear}}
- {\iffieldequalstr{#2endyear}{}
- {\printfield{extrayear}%
- \printtext{\mbox{\bibdatedash}}}
- {\printtext{%
- \bibdatedash
- \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
- \printfield{extrayear}}}}}}}
-
-\newrobustcmd*{\mkbibrangeyear}[1]{%
- \blx@imc@clearfield{#1month}%
- \blx@imc@clearfield{#1day}%
- \blx@imc@clearfield{#1endmonth}%
- \blx@imc@clearfield{#1endday}%
- \iffieldsequal{#1year}{#1endyear}
- {\blx@imc@clearfield{#1endyear}}
- {}%
- \mkbibrangefull{short}{#1}}
-
-\newrobustcmd*{\mkbibrangeyearextra}[1]{%
- \blx@imc@clearfield{#1month}%
- \blx@imc@clearfield{#1day}%
- \blx@imc@clearfield{#1endmonth}%
- \blx@imc@clearfield{#1endday}%
- \iffieldsequal{#1year}{#1endyear}
- {\blx@imc@clearfield{#1endyear}}
- {}%
- \mkbibrangefullextra{short}{#1}}
-
-\expandafter\newrobustcmd
-\expandafter*\csname mkbibrangeiso8601\endcsname[1]{%
- \iffieldundef{#1year}
- {}
- {\printtext[#1date]{%
- \blx@isodate{#1year}{#1month}{#1day}%
- \iffieldundef{#1endyear}
- {}
- {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}}
-
-\expandafter\newrobustcmd
-\expandafter*\csname mkbibrangeiso8601extra\endcsname[1]{%
- \iffieldundef{#1year}
- {}
- {\printtext[#1date]{%
- \blx@isodate[extrayear]{#1year}{#1month}{#1day}%
- \iffieldundef{#1endyear}
- {}
- {\addslash\blx@isodate{#1endyear}{#1endmonth}{#1endday}}}}}
-
-\newrobustcmd*{\blx@isodate}[4][]{%
- \thefield{#2}\ifblank{#1}{}{\printfield{#1}}%
- \iffieldundef{#3}{}{\mbox{-}\thefield{#3}}%
- \iffieldundef{#4}{}{\mbox{-}\thefield{#4}}}
-
-\newrobustcmd*{\mkbibdatelong}[3]{}
-\newrobustcmd*{\mkbibdateshort}[3]{}
-\newrobustcmd*{\bibrangedash}{\textendash}
-\newrobustcmd*{\bibdatedash}{\bibrangedash}
-\newrobustcmd*{\finalandcomma}{}
-\newrobustcmd*{\finalandsemicolon}{}
-\newrobustcmd*{\mkbibordinal}[1]{#1}
-\newrobustcmd*{\mkbibmascord}{\mkbibordinal}
-\newrobustcmd*{\mkbibfemord}{\mkbibordinal}
-\newrobustcmd*{\mkbibneutord}{\mkbibordinal}
-\newrobustcmd*{\mkbibmonth}[1]{%
- \ifcase0#1\relax
- \blx@warning@entry{Month out of range or not an integer}%
- \or\abx@bibmonth{january}%
- \or\abx@bibmonth{february}%
- \or\abx@bibmonth{march}%
- \or\abx@bibmonth{april}%
- \or\abx@bibmonth{may}%
- \or\abx@bibmonth{june}%
- \or\abx@bibmonth{july}%
- \or\abx@bibmonth{august}%
- \or\abx@bibmonth{september}%
- \or\abx@bibmonth{october}%
- \or\abx@bibmonth{november}%
- \or\abx@bibmonth{december}%
- \else
- \blx@warning@entry{Month out of range}#1%
- \fi}
-
-\protected\def\blx@imc@printdate{}
-\protected\def\blx@imc@printdateextra{}
-\protected\def\blx@imc@printdatelabel{}
-\protected\def\blx@imc@printdateextralabel{}
-\protected\def\blx@imc@printurldate{}
-\protected\def\blx@imc@printeventdate{}
-\protected\def\blx@imc@printorigdate{}
-
-\let\blx@imc@mkdatezeros\@firstofone
-\protected\def\blx@imc@stripzeros#1{%
- \begingroup
- \setbox\@tempboxa=\hbox\bgroup
- \aftergroup\endgroup
- \abx@hook@xsanitize
- \if0#1\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\@tempcnta#1\relax
- \expandafter\egroup
- \number\@tempcnta
- \@tempcnta#1\relax}
- {\egroup#1}}
-
-\blx@regimcs{%
- \printdate \printdateextra \printdatelabel \printdateextralabel
- \printurldate \printeventdate \printorigdate \stripzeros \mkdatezeros}
-
-% {<language>}{<strings>}
-
-\def\blx@maplang#1#2{%
- \csxappto{extras#1}{%
- \noexpand\blx@resetpunct
- \expandafter\noexpand\csname abx@extras@#2\endcsname
- \expandafter\noexpand\csname abx@strings@#2\endcsname}%
- \csxappto{noextras#1}{%
- \noexpand\blx@resetpunct
- \expandafter\noexpand\csname abx@noextras@#2\endcsname}}
-
-%% babel/polyglossia interface
-\def\blx@beglang{\blx@clearlang\begingroup}
-\def\blx@endlang{\endgroup}
-\let\blx@beglangbib\blx@beglang
-\let\blx@endlangbib\blx@endlang
-\let\blx@beglangcite\blx@beglang
-\let\blx@endlangcite\blx@endlang
-\let\blx@hook@endlang\@empty
-\let\blx@hook@initlang\@empty
-\let\blx@imc@mainlang\@empty
-\def\blx@hyphenreset{%
- \ifcsundef{l@\blx@languagename}
- {}
- {\language\csname l@\blx@languagename\endcsname\relax}%
- \ifcsundef{\blx@languagename hyphenmins}
- {\blx@sethyphenmins\tw@\thr@@}
- {\expandafter\expandafter\expandafter\blx@sethyphenmins
- \csname\blx@languagename hyphenmins\endcsname}}
-\def\blx@sethyphenmins#1#2{%
- \lefthyphenmin#1\relax
- \righthyphenmin#2\relax}
-
-\begingroup
-\@makeother\#
-\gdef\blx@mkautolangbabel{%
- \pretocmd\select@language{\blx@langsetup{#1}}
- {\ifdef\blx@thelangenv
- {\def\blx@beglang{%
- \blx@clearlang
- \begingroup
- \blx@imc@iffieldundef{langid}
- {}
- {\ifcsundef{l@\abx@field@langid}
- {\blx@warn@nohyph{\abx@field@langid}}
- {\blx@hook@initlang
- \def\blx@endlang{%
- \blx@hook@endlang
- \csname end\blx@thelangenv\endcsname
- \endgroup}%
- \iftoggle{blx@autolangbib}
- {\let\blx@endlangbib\blx@endlang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@endlangcite\blx@endlang}
- {}%
- \csname\blx@thelangenv\expandafter\endcsname
- \expandafter{\abx@field@langid}}}}}
- {}%
- \def\blx@langstrings{}%
- \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
- \blx@langsetup\bbl@main@language}
- {\blx@err@patch{'babel' package}%
- \blx@mknoautolang}}
-
-\gdef\blx@mkautolangpoly{%
- \catcode`\_=11% polyglossia uses "_" as a letter
- \pretocmd\select@language{\blx@langsetup{#1}}
- {\ifdef\blx@thelangenv
- {\def\blx@beglang{%
- \blx@clearlang
- \begingroup
- \blx@imc@iffieldundef{langid}
- {}
- {\ifcsundef{l@\abx@field@langid}
- {\blx@warn@nohyph{\abx@field@langid}}
- {\blx@hook@initlang
- \def\blx@endlang{%
- \blx@hook@endlang
- \csname end\blx@thelangenv\endcsname
- \endgroup}%
- \iftoggle{blx@autolangbib}
- {\let\blx@endlangbib\blx@endlang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@endlangcite\blx@endlang}
- {}%
- \ifcsstring{blx@thelangenv}{langname}
- {\ifdef\abx@field@langidopts
- {\csname\abx@field@langid\expandafter\endcsname\expandafter[\abx@field@langidopts]}
- {\csname\abx@field@langid\endcsname}}
- {\csname\blx@thelangenv\expandafter\endcsname
- \expandafter{\abx@field@langid}}%
- % These lines are equal to \blx@maplang
- \blx@resetpunct
- \csuse{abx@extras@\abx@field@langid}%
- \csuse{abx@strings@\abx@field@langid}}}}}
- {}%
- % polyglossia needs this - it doesn't get the
- % strings by automatically set for some reason
- \def\blx@langstrings{%
- \csuse{abx@extras@\languagename}%
- \csuse{abx@strings@\languagename}}
- \def\blx@imc@mainlang{\select@language{\bbl@main@language}}%
- \blx@langsetup\bbl@main@language}
- {\blx@err@patch{'polyglossia' package}%
- \blx@mknoautolang}%
- \catcode`\_=8}
-\endgroup
-
-\def\blx@mknoautolang{%
- \blx@lbxinput{\blx@languagename}
- {}
- {\blx@err@nolang{\blx@languagename}}}
-
-\blx@regimcs{\mainlang}
-
-\newrobustcmd*{\DeclareRedundantLanguages}[2]{%
- \begingroup
- \ifblank{#2}
- {\def\do##1{%
- \global\csundef{blx@rlm@##1}%
- \global\csundef{blx@rlm@lang##1}}}
- {\def\do##1{%
- \csxdef{blx@rlm@##1}{#2}%
- \csxdef{blx@rlm@lang##1}{#2}}}%
- \docsvlist{#1}%
- \endgroup}
-
-\def\blx@clearlang{%
- \iftoggle{blx@clearlang}
- {\iflistundef{language}
- {}
- {\ifnumgreater{\value{language}}{1}
- {}
- {\expandafter\blx@clearlang@i\abx@list@language}}}
- {}}
-
-\def\blx@clearlang@i#1{%
- \ifcsdef{blx@rlm@#1}
- {\expandafter\expandafter\expandafter\forcsvlist
- \expandafter\expandafter\expandafter\blx@clearlang@ii
- \expandafter\expandafter\expandafter{%
- \csname blx@rlm@#1\endcsname}}
- {}}
-
-\def\blx@clearlang@ii#1{%
- \ifdefstring\languagename{#1}
- {\clearlist{language}}
- {}}
-
-%% Bibtex data interface
-
-\def\abx@dotypes{%
- \do{set}%
- \do{article}%
- \do{book}%
- \do{mvbook}%
- \do{booklet}%
- \do{collection}%
- \do{mvcollection}%
- \do{inbook}%
- \do{bookinbook}%
- \do{incollection}%
- \do{inproceedings}%
- \do{manual}%
- \do{misc}%
- \do{online}%
- \do{patent}%
- \do{periodical}%
- \do{proceedings}%
- \do{mvproceedings}%
- \do{report}%
- \do{suppbook}%
- \do{suppcollection}%
- \do{suppperiodical}%
- \do{thesis}%
- \do{unpublished}%
- \do{artwork}%
- \do{audio}%
- \do{commentary}%
- \do{image}%
- \do{inreference}%
- \do{jurisdiction}%
- \do{legal}%
- \do{legislation}%
- \do{letter}%
- \do{movie}%
- \do{music}%
- \do{performance}%
- \do{reference}%
- \do{mvreference}%
- \do{review}%
- \do{software}%
- \do{standard}%
- \do{video}%
- \do{customa}%
- \do{customb}%
- \do{customc}%
- \do{customd}%
- \do{custome}%
- \do{customf}%
-}
-
-\def\abx@donames{%
- \do{labelname}%
- \do{author}%
- \do{shortauthor}%
- \do{editor}%
- \do{editora}%
- \do{editorb}%
- \do{editorc}%
- \do{shorteditor}%
- \do{bookauthor}%
- \do{translator}%
- \do{annotator}%
- \do{commentator}%
- \do{introduction}%
- \do{foreword}%
- \do{afterword}%
- \do{holder}%
- \do{namea}%
- \do{nameb}%
- \do{namec}%
-}
-
-\def\abx@dolists{%
- \do{institution}%
- \do{language}%
- \do{location}%
- \do{organization}%
- \do{origlocation}%
- \do{origpublisher}%
- \do{pageref}%
- \do{publisher}%
- \do{lista}%
- \do{listb}%
- \do{listc}%
- \do{listd}%
- \do{liste}%
- \do{listf}%
-}
-
-\def\abx@dofields{%
- \do{crossref}%
- \do{xref}%
- \do{entrykey}%
- \do{childentrykey}%
- \do{entrytype}%
- \do{entrysubtype}%
- \do{entryset}%
- \do{entrysetcount}%
- \do{related}%
- \do{relatedtype}%
- \do{relatedstring}%
- \do{keywords}%
- \do{authortype}%
- \do{editortype}%
- \do{editoratype}%
- \do{editorbtype}%
- \do{editorctype}%
- \do{nameatype}%
- \do{namebtype}%
- \do{namectype}%
- \do{addendum}%
- \do{booktitle}%
- \do{booksubtitle}%
- \do{booktitleaddon}%
- \do{chapter}%
- \do{doi}%
- \do{edition}%
- \do{eid}%
- \do{eprint}%
- \do{eprinttype}%
- \do{eprintclass}%
- \do{file}%
- \do{gender}%
- \do{howpublished}%
- \do{indextitle}%
- \do{indexsorttitle}%
- \do{isan}%
- \do{isbn}%
- \do{ismn}%
- \do{isrn}%
- \do{issn}%
- \do{issue}%
- \do{iswc}%
- \do{issuetitle}%
- \do{issuesubtitle}%
- \do{journaltitle}%
- \do{journalsubtitle}%
- \do{label}%
- \do{labelalpha}%
- \do{langid}%
- \do{extraalpha}%
- \do{labelnumber}%
- \do{labeltitle}%
- \do{labeldate}%
- \do{extrayear}%
- \do{library}%
- \do{localnumber}%
- \do{prefixnumber}%
- \do{mainsubtitle}%
- \do{maintitle}%
- \do{maintitleaddon}%
- \do{nameaddon}%
- \do{namehash}%
- \do{fullhash}%
- \do{note}%
- \do{number}%
- \do{day}%
- \do{month}%
- \do{year}%
- \do{endday}%
- \do{endmonth}%
- \do{endyear}%
- \do{origlanguage}%
- \do{origtitle}%
- \do{origday}%
- \do{origmonth}%
- \do{origyear}%
- \do{origendday}%
- \do{origendmonth}%
- \do{origendyear}%
- \do{reprinttitle}%
- \do{pages}%
- \do{pagetotal}%
- \do{pagination}%
- \do{bookpagination}%
- \do{part}%
- \do{pubstate}%
- \do{series}%
- \do{shorthand}%
- \do{shorthandintro}%
- \do{shortjournal}%
- \do{shortseries}%
- \do{shorttitle}%
- \do{sortinit}%
- \do{subtitle}%
- \do{title}%
- \do{titleaddon}%
- \do{eventtitle}%
- \do{eventday}%
- \do{eventmonth}%
- \do{eventyear}%
- \do{eventendday}%
- \do{eventendmonth}%
- \do{eventendyear}%
- \do{type}%
- \do{url}%
- \do{urlday}%
- \do{urlmonth}%
- \do{urlyear}%
- \do{urlendday}%
- \do{urlendmonth}%
- \do{urlendyear}%
- \do{venue}%
- \do{version}%
- \do{volume}%
- \do{volumes}%
- \do{abstract}%
- \do{annotation}%
- \do{usera}%
- \do{userb}%
- \do{userc}%
- \do{userd}%
- \do{usere}%
- \do{userf}%
- \do{verba}%
- \do{verbb}%
- \do{verbc}%
-}
-
-\def\abx@dobooleans{%
- \do{singletitle}%
-}
-
-% Used in some styles but biber-only, here to prevent warnings.
-\protected\long\def\abx@dointernalfields{}%
-\protected\long\def\DeclareLabelalphaTemplate#1{}%
-
-\def\do#1{%
- \newcounter{#1}%
- \newcounter{saved#1}%
- \csedef{the#1}{\noexpand\the\expandonce{\csname c@#1\endcsname}}%
- \csedef{thesaved#1}{\noexpand\the\expandonce{\csname c@saved#1\endcsname}}%
- \appto\abx@dobooleans{\do{more#1}}}
-\abx@donames
-\abx@dolists
-\def\do#1{\newtoggle{abx@bool@#1}}
-\abx@dobooleans
-
-\protected\def\blx@resetdata{%
- \let\blx@saved@do\do
- \let\do\blx@imc@clearname
- \abx@donames
- \let\do\blx@imc@clearlist
- \abx@dolists
- \let\do\blx@imc@clearfield
- \abx@dofields\do{execute}\do{options}%
- \def\do##1{\togglefalse{abx@bool@##1}}%
- \abx@dobooleans
- \let\do\blx@saved@do
- \c@citecounter\z@
- \iftoggle{blx@bibliography}
- {\c@maxnames\blx@maxbibnames\relax
- \c@minnames\blx@minbibnames\relax}
- {\c@maxnames\blx@maxcitenames\relax
- \c@minnames\blx@mincitenames\relax}%
- \c@maxitems\blx@maxitems\relax
- \c@minitems\blx@minitems\relax}
-
-\protected\def\blx@saveentry{%
- \let\blx@saved@do\do
- \let\do\blx@savename
- \abx@donames
- \let\do\blx@savelist
- \abx@dolists
- \let\do\blx@savefield
- \abx@dofields\do{execute}\do{options}%
- \let\do\blx@savebool
- \abx@dobooleans
- \c@savedcitecounter\c@citecounter
- \let\do\blx@saved@do}
-
-\protected\def\blx@savename#1{%
- \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}%
- \csletcs{abx@name@saved#1}{abx@name@#1}%
- \csname c@saved#1\endcsname\csname c@#1\endcsname}
-
-\protected\def\blx@savelist#1{%
- \csletcs{etb@tgl@abx@bool@moresaved#1}{etb@tgl@abx@bool@more#1}%
- \csletcs{abx@list@saved#1}{abx@list@#1}%
- \csname c@saved#1\endcsname\csname c@#1\endcsname}
-
-\protected\def\blx@savefield#1{%
- \csletcs{abx@field@saved#1}{abx@field@#1}}
-
-\protected\def\blx@savebool#1{%
- \csletcs{abx@bool@saved#1}{abx@bool@#1}}
-
-% {<code>}
-
-\protected\long\def\blx@bbl@preamble#1{%
- \gappto\abx@preamble{#1}}
-
-% {<message>}
-
-\protected\def\blx@bbl@warn#1{%
- \begingroup
- \def\item{\MessageBreak-\space}%
- \def\break{\MessageBreak\space\space}%
- \edef\blx@tempa{%
- BibTeX reported the following issues%
- \ifdef\abx@field@entrykey
- {\MessageBreak with '\abx@field@entrykey'}
- {}%
- :#1}%
- \blx@warning@noline{\blx@tempa}%
- \endgroup}
-
-% {<field>}{<code>}
-
-\newrobustcmd{\DeclareFieldInputHandler}[2]{%
- \ifblank{#2}
- {\csundef{blx@fih@#1}}
- {\long\csdef{blx@fih@#1}##1{#2}}}
-\@onlypreamble\DeclareFieldInputHandler
-
-% {<list>}{<code>}
-
-\newrobustcmd*{\DeclareListInputHandler}[2]{%
- \ifblank{#2}
- {\csundef{blx@lih@#1}}
- {\csdef{blx@lih@#1}##1{#2}}}
-\@onlypreamble\DeclareListInputHandler
-
-% {<name>}{<code>}
-
-\newrobustcmd*{\DeclareNameInputHandler}[2]{%
- \ifblank{#2}
- {\csundef{blx@nih@#1}}
- {\csdef{blx@nih@#1}##1{#2}}}
-\@onlypreamble\DeclareNameInputHandler
-
-% {<entrykey>}{<refsection>}{<field>}{<value>}
-
-\long\def\blx@bbl@addentryfield#1#2#3#4{%
- \csxappto{blx@data@#2@#1}{%
- \def\expandafter\noexpand\csname abx@field@#3\endcsname{#4}}}
-
-% {<field>}{<value>}
-
-\long\def\blx@bbl@addfield#1#2{%
- \csxappto\blx@bbl@data{%
- \def\expandafter\noexpand\csname abx@field@#1\endcsname{#2}}}
-
-\protected\long\def\blx@bbl@fielddef#1#2{%
- \def\NewValue{#2}%
- \ifcsdef{blx@fih@#1}
- {\csname blx@fih@#1\endcsname{#2}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\blx@bbl@addfield{#1}{\expandonce\NewValue}}}
-
-\protected\long\def\blx@bbl@fieldedef#1#2{%
- \edef\NewValue{#2}%
- \ifcsdef{blx@fih@#1}
- {\csname blx@fih@#1\expandafter
- \endcsname\expandafter{\NewValue}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\blx@bbl@addfield{#1}{\NewValue}}}
-
-\protected\long\def\blx@bbl@stringdef#1#2{%
- \begingroup
- \edef\blx@tempa{\endgroup
- \blx@bbl@fielddef{#1}{\detokenize{#2}}}%
- \blx@tempa}
-
-% {<field>}
-
-\protected\def\blx@bbl@verbdef#1{%
- \begingroup
- \let\verb\blx@bbl@verbadd
- \def\blx@tempa{#1}%
- \let\NewValue\@empty}
-
-\protected\def\blx@bbl@verbend{%
- \ifcsdef{blx@fih@\blx@tempa}
- {\csname blx@fih@\blx@tempa\expandafter
- \endcsname\expandafter{\NewValue}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\blx@bbl@addfield{\blx@tempa}{\NewValue}}%
- \endgroup}
-
-\protected\def\blx@bbl@verbadd{%
- \begingroup
- \let\do\@makeother
- \dospecials
- \catcode\endlinechar=12\relax
- \blx@bbl@verbadd@i}
-
-\begingroup
-\catcode`\<=12
-\catcode`\>=12
-\uccode`\<=`\ %
-\uccode`\>=\endlinechar
-\uppercase{\gdef\blx@bbl@verbadd@i<#1>}{%
- \endgroup
- \edef\NewValue{\NewValue\detokenize{#1}}}
-\endgroup
-
-% {<counter>}{<value>}
-
-\protected\long\def\blx@bbl@cntdef#1#2{%
- \csxappto\blx@bbl@data{%
- \csname c@#1\endcsname#2\relax}}
-
-% {<boolean>}
-
-\protected\def\blx@bbl@booltrue#1{%
- \csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@#1}}}
-
-\protected\def\blx@bbl@boolfalse#1{%
- \csgappto\blx@bbl@data{%
- \togglefalse{abx@bool@#1}}}
-
-% {<list}{<itemcount>}{<value>}
-
-\protected\def\blx@bbl@listdef#1#2#3{%
- \def\NewCount{#2}%
- \def\NewValue{#3}%
- \ifcsdef{blx@lih@#1}
- {\csname blx@lih@#1\endcsname{#3}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\csxappto\blx@bbl@data{%
- \csname c@#1\endcsname\NewCount\relax
- \def\expandafter\noexpand\csname abx@list@#1\endcsname
- {\expandonce\NewValue}}}}
-
-
-% {<name>}{<itemcount>}{<value>}
-
-\protected\def\blx@bbl@namedef#1#2#3#4{%
- \def\NewCount{#2}%
- \def\NewOption{#3}%
- \def\NewValue{#4}%
- \ifcsdef{blx@nih@#1}
- {\csname blx@nih@#1\endcsname{#4}%
- \ifdefvoid\NewValue}
- {\@secondoftwo}
- {}
- {\csxappto\blx@bbl@data{%
- \csname c@#1\endcsname\NewCount\relax
- \def\expandafter\noexpand\csname abx@name@#1\endcsname
- {{\expandonce\NewOption}{\expandonce\NewValue}}}}}
-
-% {<entrykey>,...}
-
-\protected\def\blx@bbl@set#1{%
- \blx@bbl@fieldedef{entryset}{\detokenize{#1}}%
- \csxdef{blx@setp@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}%
- \begingroup
- \blx@tempcnta\z@
- \expandafter\forcsvlist
- \expandafter\blx@bbl@set@i
- \expandafter{\detokenize{#1}}%
- \endgroup}
-
-\def\blx@bbl@set@i#1{%
- \advance\blx@tempcnta\@ne
- \csxdef{blx@seti@\the\c@refsection @#1}{\the\blx@tempcnta}}
-
-% {<entrykey>}
-\protected\def\blx@bbl@inset#1{%
- \toggletrue{blx@setonly}%
- \blx@bbl@fieldedef{entryset}{\detokenize{#1}}%
- \csxdef{blx@setc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}}
-
-% {<entrykey>}
-\protected\def\blx@bbl@xref#1{% BibTeX only
- \ifcsdef{blx@refp@\the\c@refsection @\detokenize{#1}}
- {}
- {\listcsxadd{blx@refs@\the\c@refsection}{\detokenize{#1}}}%
- \listcsxadd{blx@refp@\the\c@refsection @\detokenize{#1}}{\abx@field@entrykey}%
- \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}}
-
-\def\blx@addxref#1{% BibTeX only
- \blx@ifdata{#1}
- {\begingroup
- \def\do##1{%
- \csgappto{blx@data@\the\c@refsection @##1}{%
- \def\abx@field@xref{#1}}}%
- \dolistcsloop{blx@refp@\the\c@refsection @#1}%
- \endgroup}
- {}%
- \global\csundef{blx@refp@\the\c@refsection @#1}}
-
-% {<keyword>,...}
-
-\protected\def\blx@bbl@keyw#1{%
- \iftoggle{blx@skipbib}
- {}
- {\forcsvlist{\blx@addkeyword{\abx@field@entrykey}}{#1}%
- \blx@bbl@fielddef{keywords}{#1}}}
-
-\def\blx@addkeyword#1#2{%
- \listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}}
-
-% {<options>}
-
-\protected\long\def\blx@bbl@options#1{%
- \begingroup
- \let\blx@tempa\@empty
- \forcsvlist\blx@bbl@options@i{#1}%
- \edef\blx@tempa{%
- \endgroup
- \ifx\blx@tempa\@empty
- \else
- \def\noexpand\abx@field@options{\expandonce\blx@tempa}%
- \fi}%
- \blx@tempa}
-
-\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&}
-
-\long\def\blx@bbl@options@ii#1=#2=#3&{%
- \ifcsundef{KV@blx@opt@ent@#1}
- {\blx@warning@noline{%
- Ignoring undefined option '#1'\MessageBreak
- at entry '\abx@field@entrykey'}}
- {\eappto\blx@tempa{%
- \ifx\blx@tempa\@empty\else,\fi
- \unexpanded{#1}\ifblank{#2}{}{=\unexpanded{#2}}}}}
-
-% \blx@data@<section>@<entrykey> data hook
-% key -> data
-% \blx@miss@<section> missing entries (blacklist)
-% section -> keys [internal list]
-% \blx@sort@<section> all entries, sorted
-% section -> keys [internal list]
-% \blx@sbib@<section> all entries in bibliography, sorted
-% section -> keys [internal list]
-% \blx@bsee@<section> seen citations, document body
-% section -> keys [internal list]
-% \blx@fsee@<section> seen citations, footnotes
-% section -> keys [internal list]
-% \blx@type@<section>@<entrytype> type hash
-% type -> keys [internal list]
-% \blx@subt@<section>@<entrytype> subtype hash
-% subtype -> keys [internal list]
-% \blx@segm@<section>@<segment> segment hash
-% segment -> keys [internal list]
-% \blx@keyw@<section>@<keyword> keyword hash
-% keyword -> keys [internal list]
-% \blx@losh@<section> shorthand hash
-% section -> keys [internal list]
-% \blx@catg@<category> category hash, global
-% category -> keys [internal list]
-% \blx@set@<section>@<entrykey> parent -> child mapping (dynamic entry sets)
-% key -> key,key,... [csv list]
-% \blx@setp@<section>@<entrykey> parent -> child mapping (entry sets)
-% key -> key,key,... [csv list]
-% \blx@setc@<section>@<entrykey> child -> parent mapping (entry sets)
-% key -> key
-% \blx@seti@<section>@<entrykey> child -> index mapping (entry sets)
-% key -> index
-% \blx@pref@<section>@<entrykey> pageref hook, temporary
-% key -> pages [internal list]
-% \blx@refs@<section> xref hash, temporary
-% section -> parents [internal list]
-% (BibTeX only)
-% \blx@refp@<section>@<entrykey> parent -> child mapping (xrefs), temporary
-% key -> keys [internal list]
-% (BibTeX only)
-% \blx@refc@<section>@<entrykey> child -> parent mapping (xrefs)
-% key -> key [internal list]
-% (BibTeX only)
-
-\def\blx@ifdata#1{%
- \ifcsdef{blx@data@\the\c@refsection @#1}}
-\let\blx@imc@ifentryinbib\blx@ifdata
-
-\def\blx@getdata#1{%
- \csuse{blx@data@\the\c@refsection @#1}%
- \blx@setcitecounter}
-
-\def\blx@getdata@cite#1{%
- \ifcsdef{blx@setc@\the\c@refsection @#1}
- {\expandafter\expandafter\expandafter\blx@getdata
- \expandafter\expandafter\expandafter{%
- \csname blx@setc@\the\c@refsection @#1\endcsname}%
- \blx@ifdata{#1}
- {\def\abx@field@childentrykey{#1}%
- \begingroup
- \blx@getdata{#1}%
- \edef\blx@tempa{\endgroup
- \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}%
- \blx@tempa}
- {}}
- {\blx@getdata{#1}}%
- \ifcsdef{blx@seti@\the\c@refsection @#1}
- {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}}
- {}}
-
-\def\blx@execute{%
- \blx@imc@thefield{execute}}
-
-\def\blx@setoptions@entry{%
- \blx@imc@iffieldundef{options}
- {}
- {\begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}%
- \blx@tempa
- \blx@checkoptions@entry}}
-
-\def\blx@setoptions@type#1{%
- \ifcsdef{blx@opts@type@#1}
- {\begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}%
- \blx@tempa}
- {}}
-
-\def\blx@checkoptions@global{}
-\def\blx@checkoptions@type{}
-\def\blx@checkoptions@entry{}
-
-\def\blx@entrysetcount{%
- \ifdef\abx@field@entrykey
- {\ifcsdef{blx@seti@\the\c@refsection @\abx@field@entrykey}
- {\letcs\abx@field@entrysetcount{%
- blx@seti@\the\c@refsection @\abx@field@entrykey}}
- {}}
- {}}
-
-% {<section>}
-
-\def\blx@bbl@refsection#1{%
- \begingroup
- \c@refsection#1\relax}
-
-\def\blx@bbl@endrefsection{%
- \endgroup
- \csnumgdef{blx@labelnumber@\the\c@refsection}{0}%
- \iftoggle{blx@reencode}{\blx@reencode}{}}
-
-% {<entrykey>}
-
-\protected\def\blx@bbl@missing#1{%
- \listcsxadd{blx@miss@\the\c@refsection}{\detokenize{#1}}%
- \blx@warning@noline{%
- The following entry could not be found\MessageBreak
- in the database%
- \ifnumgreater\c@refsection\z@
- { (refsection \the\c@refsection)}
- {}:\MessageBreak
- \detokenize{#1}\MessageBreak
- Please verify the spelling and rerun\MessageBreak
- LaTeX afterwards}}
-
-% {<entrykey>}{<entrytype>}{<options>}
-
-\protected\def\blx@bbl@entry#1#2#3{%
- \begingroup
- \edef\abx@field@entrykey{\detokenize{#1}}%
- \blx@setoptions@type{#2}%
- \blx@bbl@options{#3}%
- \blx@setoptions@entry
- \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}%
- \csuse\blx@bbl@data
- \cslet\blx@bbl@data\@empty
- \blx@bbl@addfield{entrykey}{\abx@field@entrykey}%
- \blx@bbl@addfield{entrytype}{#2}%
- \blx@imc@iffieldundef{options}
- {}
- {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}}
-
-\protected\def\blx@bbl@endentry{%
- \csuse\blx@bbl@data
- \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey}
- {}
- {\blx@addpageref{\abx@field@entrykey}}%
- \nottoggle{blx@setonly}
- {\listcsxadd{blx@sort@\the\c@refsection}{\abx@field@entrykey}}
- {\global\toggletrue{blx@addset}%
- \toggletrue{blx@skipbib}%
- \toggletrue{blx@skipbiblist}%
- \toggletrue{blx@skiplab}}%
- \nottoggle{blx@skipbib}
- {\listcsxadd{blx@sbib@\the\c@refsection}{\abx@field@entrykey}%
- \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}%
- \ifdef\abx@field@entrysubtype
- {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}}
- {}}
- {}%
- \nottoggle{blx@skipbiblist}
- {\blx@bbl@shorthand}
- {}%
- \nottoggle{blx@skiplab}
- {\iftoggle{blx@labelnumber}
- {\blx@bbl@labelnumber}
- {}%
- \iftoggle{blx@labelalpha}
- {\blx@bbl@labelalpha}
- {}%
- \iftoggle{blx@labeldate}
- {\blx@bbl@labeldate}
- {}%
- \blx@bbl@prefixnumber}
- {}%
- \blx@bbl@labelname
- \blx@bbl@titles
- \blx@bbl@hooks
- \endgroup}
-
-\def\blx@addset{%
- \begingroup
- \letcs\blx@tempa{blx@sort@\the\c@refsection}%
- \global\cslet{blx@sort@\the\c@refsection}\@empty
- \forlistloop\blx@addset@i\blx@tempa
- \endgroup}
-
-\def\blx@addset@i#1{%
- \listcsgadd{blx@sort@\the\c@refsection}{#1}%
- \ifcsdef{blx@setp@\the\c@refsection @#1}
- {\expandafter\expandafter\expandafter\forcsvlist
- \expandafter\expandafter\expandafter\blx@addset@ii
- \expandafter\expandafter\expandafter{%
- \csname blx@setp@\the\c@refsection @#1\endcsname}}
- {}}
-
-\def\blx@addset@ii#1{%
- \listcsgadd{blx@sort@\the\c@refsection}{#1}}
-
-\def\blx@bbl@shorthand{%
- \ifundef\abx@field@shorthand
- {}
- {\blx@setlabwidth{\shorthandwidth}{%
- \csuse{abx@ffd@*@shorthandwidth}{\abx@field@shorthand}}}}
-
-\def\blx@bbl@labelnumber{%
- \ifdefempty\abx@field@localnumber
- {}
- {\ifundef\abx@field@shorthand
- {\ifdef\abx@field@localnumber
- {}
- {\csnumgdef{blx@labelnumber@\the\c@refsection}{%
- \csuse{blx@labelnumber@\the\c@refsection}+1}%
- \edef\abx@field@localnumber{%
- \csuse{blx@labelnumber@\the\c@refsection}}}%
- \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelnumberwidth}{%
- \csuse{abx@ffd@*@labelnumberwidth}{%
- \ifdef\abx@field@prefixnumber
- {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}}
- {}%
- \abx@field@localnumber}}}}
- {\csgappto\blx@bbl@data{%
- \let\abx@field@labelnumber\abx@field@shorthand}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelnumberwidth}{%
- \csuse{abx@ffd@*@labelnumberwidth}{\abx@field@shorthand}}}}}}
-
-\def\blx@bbl@prefixnumber{%
- \ifdef\abx@field@prefixnumber
- {\blx@bbl@fieldedef{prefixnumber}{\abx@field@prefixnumber}}
- {}}
-
-\def\blx@bbl@labelalpha{%
- \ifundef\abx@field@shorthand
- {\ifundef\abx@field@labelalpha
- {}
- {\ifundef\abx@field@extraalpha
- {}
- {\ifnum\abx@field@extraalpha>\c@maxextraalpha
- \global\c@maxextraalpha\abx@field@extraalpha\relax
- \fi}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelalphawidth}{%
- \csuse{abx@ffd@*@labelalphawidth}{%
- \ifdef\abx@field@prefixnumber
- {\csuse{abx@ffd@*@prefixnumber}{\abx@field@prefixnumber}}
- {}%
- \csuse{abx@ffd@*@labelalpha}{\abx@field@labelalpha}%
- \ifundef\abx@field@extraalpha
- {}
- {\csuse{abx@ffd@*@extraalpha}{\abx@field@extraalpha}}}}}}}
- {\csgappto\blx@bbl@data{%
- \let\abx@field@labelalpha\abx@field@shorthand}%
- \iftoggle{blx@skipbib}
- {}
- {\blx@setlabwidth{\labelalphawidth}{%
- \csuse{abx@ffd@*@labelalphawidth}{\abx@field@shorthand}}}}}
-
-\def\blx@bbl@labeldate{%
- \ifundef\abx@field@extrayear
- {}
- {\ifnum\abx@field@extrayear>\c@maxextrayear
- \global\c@maxextrayear\abx@field@extrayear\relax
- \fi}}
-
-\def\blx@bbl@labelname{% BibTeX only
- \iftoggle{blx@useauthor}
- {\ifundef\abx@name@shortauthor
- {\ifundef\abx@name@author
- {\blx@bbl@labelname@i}
- {\csgappto\blx@bbl@data{%
- \c@labelname\c@author
- \let\abx@name@labelname\abx@name@author}%
- \iftoggle{abx@bool@moreauthor}
- {\csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@morelabelname}}}
- {}}}
- {\csgappto\blx@bbl@data{%
- \c@labelname\c@shortauthor
- \let\abx@name@labelname\abx@name@shortauthor}%
- \iftoggle{abx@bool@moreshortauthor}
- {\csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@morelabelname}}}
- {}}}
- {\blx@bbl@labelname@i}}
-
-\def\blx@bbl@labelname@i{%
- \iftoggle{blx@useeditor}
- {\ifundef\abx@name@shorteditor
- {\ifundef\abx@name@editor
- {\blx@bbl@labelname@ii}
- {\csgappto\blx@bbl@data{%
- \c@labelname\c@editor
- \let\abx@name@labelname\abx@name@editor}%
- \iftoggle{abx@bool@moreeditor}
- {\csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@morelabelname}}}
- {}}}
- {\csgappto\blx@bbl@data{%
- \c@labelname\c@shorteditor
- \let\abx@name@labelname\abx@name@shorteditor}%
- \iftoggle{abx@bool@moreshorteditor}
- {\csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@morelabelname}}}
- {}}}
- {\blx@bbl@labelname@ii}}
-
-\def\blx@bbl@labelname@ii{%
- \iftoggle{blx@usetranslator}
- {\ifundef\abx@name@translator
- {}
- {\csgappto\blx@bbl@data{%
- \c@labelname\c@translator
- \let\abx@name@labelname\abx@name@translator}%
- \iftoggle{abx@bool@moretranslator}
- {\csgappto\blx@bbl@data{%
- \toggletrue{abx@bool@morelabelname}}}
- {}}}
- {}}
-
-\def\blx@bbl@titles{%
- \ifundef\abx@field@shorttitle
- {\csgappto\blx@bbl@data{%
- \let\abx@field@labeltitle\abx@field@title}}
- {\csgappto\blx@bbl@data{%
- \let\abx@field@labeltitle\abx@field@shorttitle}}%
- \ifundef\abx@field@indextitle
- {\csgappto\blx@bbl@data{%
- \let\abx@field@indextitle\abx@field@title}}
- {}%
- \ifundef\abx@field@indexsorttitle
- {\csgappto\blx@bbl@data{%
- \let\abx@field@indexsorttitle\abx@field@indextitle}}
- {}}
-
-\def\blx@bbl@hooks{%
- \ifcsundef{blx@hook@bblitem@*}
- {\ifcsundef{blx@hook@bblitem@\abx@field@entrytype}
- {}
- {\csuse\blx@bbl@data
- \csuse{blx@hook@bblitem@\abx@field@entrytype}}}
- {\csuse\blx@bbl@data
- \csuse{blx@hook@bblitem@*}%
- \csuse{blx@hook@bblitem@\abx@field@entrytype}}}
-
-\newrobustcmd*{\AtDataInput}[1][*]{\csgappto{blx@hook@bblitem@#1}}
-\@onlypreamble\AtDataInput
-
-\def\blx@setlabwidth#1#2{%
- \begingroup
- \settowidth{\@tempdima}{\bibfont#2}%
- \ifnum\@tempdima>#1%
- \global#1\@tempdima
- \fi
- \endgroup}
-
-\def\blx@bblstart{%
- \let\preamble\blx@bbl@preamble
- \let\warn\blx@bbl@thewarn
- \let\refsection\blx@bbl@refsection
- \let\endrefsection\blx@bbl@endrefsection
- \let\entry\blx@bbl@entry
- \let\endentry\blx@bbl@endentry
- \let\missing\blx@bbl@missing
- \let\lossort\blx@bbl@lossort
- \let\endlossort\blx@bbl@endlossort
- \let\set\blx@bbl@set
- \let\inset\blx@bbl@inset
- \let\xref\blx@bbl@xref % BibTeX only
- \let\keyw\blx@bbl@keyw
- \let\name\blx@bbl@namedef
- \let\list\blx@bbl@listdef
- \let\field\blx@bbl@fielddef
- \let\strng\blx@bbl@stringdef
- \let\cnt\blx@bbl@cntdef
- \let\true\blx@bbl@booltrue
- \let\false\blx@bbl@boolfalse
- \let\verb\blx@bbl@verbdef
- \let\endverb\blx@bbl@verbend}
-
-\def\blx@bblend{%
- \ifcsdef{blx@refs@\the\c@refsection}% BibTeX only
- {\begingroup
- \let\do\blx@addxref
- \dolistcsloop{blx@refs@\the\c@refsection}%
- \endgroup
- \global\csundef{blx@refs@\the\c@refsection}}
- {}%
- \iftoggle{blx@addset}
- {\blx@addset
- \global\togglefalse{blx@addset}}
- {}}
-
-% {<instcount>}{<entrykey>}{<refsection>}{<labelnumber>}
-
-\protected\def\blx@aux@number#1#2#3#4{%
- \blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}%
- \ifblank{#4}
- {}
- {\csgdef{blx@labelnumber@#3}{#4}%
- \blx@addchecksum{#1}{#4}}}
-
-\AtEndDocument{%
- \def\abx@aux@number#1#2#3#4{%
- \ifblank{#4}
- {}
- {\blx@addchecksum{#1}{#4}}}}
-
-\def\blx@addlabelnumber{%
- \begingroup
- \nottoggle{blx@skiplab}
- {\iftoggle{blx@labelnumber}
- {\ifundef\abx@field@shorthand
- {\ifundef\abx@field@localnumber
- {\iftoggle{blx@omitnumbers}
- {\let\abx@field@localnumber\@empty}
- {\csnumgdef{blx@labelnumber@\the\c@refsection}{%
- \csuse{blx@labelnumber@\the\c@refsection}+1}%
- \edef\abx@field@localnumber{\csuse{blx@labelnumber@\the\c@refsection}}%
- \blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
- {localnumber}{\abx@field@localnumber}}%
- \blx@auxwrite\@mainaux{}{%
- \string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}%
- {\the\c@refsection}{\abx@field@localnumber}}}
- {}}
- {}}%
- {}}
- {}%
- \endgroup}
-
-\def\blx@addprefixnumber{%
- \nottoggle{blx@skiplab}
- {\ifdef\blx@prefixnumbers
- {\ifundef\abx@field@shorthand
- {\edef\abx@field@prefixnumber{\expandonce\blx@prefixnumbers}%
- \ifundef\abx@field@prefixnumber
- {\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
- {prefixnumber}{\expandonce\abx@field@prefixnumber}}
- {}%
- \blx@auxwrite\@mainaux{}{%
- \string\blx@aux@numprefix{\abx@field@entrykey}%
- {\the\c@refsection}{\expandonce\abx@field@prefixnumber}}}
- {}}
- {}}
- {}}
-
-% {<entrykey>}{<refsection>}{<numberprefix>}
-
-\protected\def\blx@aux@numprefix#1#2#3{%
- \blx@bbl@addentryfield{\detokenize{#1}}{#2}{prefixnumber}{#3}}
-
-\def\blx@bbl@lossort{%
- \begingroup
- \def\key##1{\listcsxadd{blx@losh@\the\c@refsection}{\detokenize{##1}}}}
-\let\blx@bbl@endlossort\endgroup
-
-\def\blx@addpageref#1{%
- \begingroup
- \blx@tempcnta\z@
- \let\blx@tempa\@empty
- \def\do##1{%
- \appto\blx@tempa{{##1}}%
- \advance\blx@tempcnta\@ne}%
- \dolistcsloop{blx@pref@\the\c@refsection @#1}%
- \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef
- {pageref}{\the\blx@tempcnta}{\blx@tempa}}%
- \blx@tempa}
-
-%% Data input
-
-\def\blx@bblinput{%
- \begingroup
- \iftoggle{blx@reencode}
- {\ifdef\inpenc@prehook
- {\inpenc@prehook{}%
- \inpenc@posthook{}}
- {}%
- \inputencoding\blx@bibencoding}
- {}%
- \blx@info@noline{Trying to load bibliographic data..}%
- \blx@blxinit
- \blx@bblfile@bibtex
- \blx@bblsecs@bibtex
- \endgroup
- \iftoggle{blx@reencode}
- {\ifdef\@enablequotes
- {\@enablequotes}
- {}}
- {}}
-
-\def\blx@bblfile@biber{%
- \blx@secinit
- \begingroup
- \blx@bblstart
- \blx@ifsigned{\jobname}{bbl}
- {\InputIfFileExists{\jobname.bbl}
- {\blx@info@noline{... file '\jobname.bbl' found}}
- {\blx@info@noline{... file '\jobname.bbl' not found}%
- \typeout{No file \jobname.bbl.}}}
- {}%
- \blx@bblend
- \endgroup
- \csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
-
-\def\blx@bblfile@bibtex{%
- \blx@secinit
- \begingroup
- \blx@bblstart
- \ifnum\c@refsection>\z@
- \edef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}%
- \else
- \edef\blx@auxfile@bibtex{\jobname}%
- \fi
- \blx@ifsigned{\blx@auxfile@bibtex}{bbl}
- {\InputIfFileExists{\blx@auxfile@bibtex.bbl}
- {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' found}}
- {\blx@info@noline{... file '\blx@auxfile@bibtex.bbl' not found}%
- \typeout{No file \blx@auxfile@bibtex.bbl.}}}
- {}%
- \blx@bblend
- \endgroup
- \csnumgdef{blx@labelnumber@\the\c@refsection}{0}%
- \iftoggle{blx@reencode}{\blx@reencode}{}}
-
-\def\blx@bblsecs@bibtex{%
- \advance\c@refsection\@ne
- \ifnum\c@refsection>\blx@maxsection
- \else
- \blx@bblfile@bibtex
- \expandafter\blx@bblsecs@bibtex
- \fi}
-
-\def\blx@reencode{%
- \begingroup
- \abx@hook@reencode
- \let\protect\@unexpandable@protect
- \def\do##1{\cslet{abx@name@##1}\relax}%
- \abx@donames
- \def\do##1{\cslet{abx@list@##1}\relax}%
- \abx@dolists
- \def\do##1{\cslet{abx@field@##1}\relax}%
- \abx@dofields\do{options}%
- \long\def\abx@field@execute##1{%
- \unexpanded{\abx@field@execute{##1}}}%
- \csuse{abx@preamble}%
- \def\do##1{%
- \csxdef{blx@data@\the\c@refsection @##1}{%
- \csuse{blx@data@\the\c@refsection @##1}}}%
- \dolistcsloop{blx@sort@\the\c@refsection}%
- \endgroup}
-
-\def\abx@hook@reencode{%
- \ifdef\@enablequotes{\@enablequotes}{}%
- \def\IeC##1{\unexpanded{\IeC{##1}}}%
- \let~\relax
-}
-
-%% Bibliography
-
-% {<name>}{<start code>}[<end code>]{<item code>}
-
-\newrobustcmd*{\defbibenvironment}[4]{%
- \long\csdef{blx@env@#1}{#2}%
- \long\csdef{blx@endenv@#1}{#3}%
- \long\csdef{blx@item@#1}{#4}}
-
-\defbibenvironment{bibliography}
- {\list{}{%
- \leftmargin\bibhang
- \itemindent-\leftmargin
- \itemsep\bibitemsep
- \parsep\bibparsep}}
- {\endlist}
- {\item}
-
-\defbibenvironment{shorthand}
- {\list{\thefield{shorthand}}{%
- \labelwidth\shorthandwidth
- \labelsep\biblabelsep
- \leftmargin\labelwidth
- \advance\leftmargin\labelsep
- \itemsep\bibitemsep
- \parsep\bibparsep
- \def\makelabel##1{##1\hss}}}
- {\endlist}
- {\item}
-
-% {<name>}[<default>]{<code>}
-
-\newrobustcmd*{\defbibheading}[1]{%
- \@ifnextchar[%]
- {\blx@defbibheading{blx@head@#1}}
- {\blx@defbibheading{blx@head@#1}[\bibname]}}
-
-\def\blx@defbibheading#1[#2]{%
- \csundef{#1}%
- \expandafter\newcommand\csname#1\endcsname[1][#2]}
-
-% {<name>}{<text>}
-
-\newrobustcmd*{\defbibnote}[1]{%
- \long\csdef{blx@note@#1}}
-
-% {<name>}{<code>}
-
-\newrobustcmd*{\defbibfilter}[2]{%
- \begingroup
- \def\blx@flt@error{\csname blx@flt@errortrue\endcsname}%
- \let\not\blx@flt@not \let\NOT\not
- \let\and\blx@flt@and \let\AND\and
- \let\or\blx@flt@or \let\OR\or
- \letcs\({blx@flt@(} \letcs\){blx@flt@)}%
- \def\section##1{\blx@flt@error}%
- \def\segment##1{segment=##1}%
- \def\type##1{type=##1}%
- \def\subtype##1{subtype=##1}%
- \def\keyword##1{keyword={##1}}%
- \def\category##1{category={##1}}%
- \edef\blx@tempa{\noexpand\blx@defbibfilter{#2}}%
- \ifdef\blx@flt@errortrue
- {\blx@err@filter}
- {\let\the\relax
- \let\blx@flt@item\relax
- \edef\blx@tempa{\blx@tempa}%
- \ifdef\blx@flt@errortrue
- {\blx@err@filter}
- {\csxdef{blx@filter@#1}{\blx@tempa}}}%
- \endgroup}
-
-\def\blx@defbibfilter#1{%
- \blx@defbibfilter@i#1 &}
-\def\blx@defbibfilter@i#1 #2&{%
- \blx@defbibfilter@ii#1==&%
- \ifblank{#2}{}{\blx@defbibfilter@i#2 &}}
-\def\blx@defbibfilter@ii#1=#2=#3&{%
- \ifblank{#2}
- {\ifblank{#1}
- {}
- {\ifcsdef{blx@flt@#1}
- {\csname blx@flt@#1\endcsname}
- {\blx@flt@error}}}
- {\ifcsdef{blx@flt@#1}
- {\csname blx@flt@#1\endcsname{\detokenize{#2}}}
- {\blx@flt@error}}}
-
-\def\blx@flt@and{ and }
-\def\blx@flt@or{ or }
-\def\blx@flt@not{ not }
-\csdef{blx@flt@(}{ ( }
-\csdef{blx@flt@)}{ ) }
-\def\blx@flt@segment#1{%
- test {\xifinlistcs\blx@flt@item{blx@segm@\the\c@refsection @#1}}}
-\def\blx@flt@type#1{%
- test {\xifinlistcs\blx@flt@item{blx@type@\the\c@refsection @#1}}}
-\def\blx@flt@subtype#1{%
- test {\xifinlistcs\blx@flt@item{blx@subt@\the\c@refsection @#1}}}
-\def\blx@flt@keyword#1{%
- test {\xifinlistcs\blx@flt@item{blx@keyw@\the\c@refsection @#1}}}
-\def\blx@flt@category#1{%
- test {\xifinlistcs\blx@flt@item{blx@catg@#1}}}
-
-% {<name>}{<code>}
-
-\newrobustcmd*{\defbibcheck}[2]{%
- \csdef{blx@bibcheck@#1}{%
- \togglefalse{blx@skipentry}%
- \def\skipentry{\toggletrue{blx@skipentry}}%
- #2\undef\skipentry}}
-
-% options
-
-\define@key{blx@bib}{section}{%
- \ifcsundef{blx@sbib@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax
- \iftoggle{blx@tempa}
- {\letcs\blx@tempa{blx@sbib@\the\c@refsection}}
- {\blx@err@secfirst}}}
-
-\define@key{blx@los}{section}{%
- \ifcsundef{blx@sbib@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax
- \iftoggle{blx@tempa}
- {\letcs\blx@tempa{blx@losh@\the\c@refsection}}
- {\blx@err@secfirst}}}
-
-\define@key{blx@bbg}{section}{%
- \ifcsundef{blx@sbib@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax}}
-
-\define@key{blx@bbc}{section}{%
- \ifcsundef{blx@sbib@#1}
- {\blx@err@nosec{#1}}
- {\c@refsection#1\relax}}
-
-\define@key{blx@bib}{segment}{\blx@key@segment{#1}}
-\define@key{blx@los}{segment}{\blx@key@segment{#1}}
-
-\def\blx@key@segment#1{%
- \ifcsundef{blx@segm@\the\c@refsection @#1}
- {\blx@error
- {Segment '#1' not found}
- {The reference segment '#1' could not be found}}
- {\c@refsegment#1\relax
- \blx@printbibchecks
- \blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}}
-
-\define@key{blx@bib}{type}{\blx@key@type{#1}}
-\define@key{blx@los}{type}{\blx@key@type{#1}}
-
-\def\blx@key@type#1{%
- \ifcsundef{blx@type@\the\c@refsection @#1}
- {\blx@warning{Type '#1' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \iftoggle{blx@tempb}
- {\togglefalse{blx@tempb}%
- \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {'type' used multiple times}
- {When passing multiple filter options, each entry\MessageBreak
- must satisfy all conditions (AND conjunction),\MessageBreak
- hence some options may not be used twice.\MessageBreak
- Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
-
-\define@key{blx@bib}{nottype}{\blx@key@nottype{#1}}
-\define@key{blx@los}{nottype}{\blx@key@nottype{#1}}
-
-\def\blx@key@nottype#1{%
- \ifcsundef{blx@type@\the\c@refsection @#1}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}}
-
-\define@key{blx@bib}{subtype}{\blx@key@subtype{#1}}
-\define@key{blx@los}{subtype}{\blx@key@subtype{#1}}
-
-\def\blx@key@subtype#1{%
- \ifcsundef{blx@subt@\the\c@refsection @#1}
- {\blx@warning{Subtype '#1' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \iftoggle{blx@tempb}
- {\togglefalse{blx@tempb}%
- \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {'subtype' used multiple times}
- {When passing multiple filter options, each entry\MessageBreak
- must satisfy all conditions (AND conjunction),\MessageBreak
- hence some options may not be used twice.\MessageBreak
- Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
-
-\define@key{blx@bib}{notsubtype}{\blx@key@notsubtype{#1}}
-\define@key{blx@los}{notsubtype}{\blx@key@notsubtype{#1}}
-
-\def\blx@key@notsubtype#1{%
- \ifcsundef{blx@subt@\the\c@refsection @#1}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}}
-
-\define@key{blx@bib}{keyword}{\blx@key@keyword{#1}}
-\define@key{blx@los}{keyword}{\blx@key@keyword{#1}}
-
-\def\blx@key@keyword#1{%
- \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
- {\blx@warning{Keyword '\detokenize{#1}' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
-
-\define@key{blx@bib}{notkeyword}{\blx@key@notkeyword{#1}}
-\define@key{blx@los}{notkeyword}{\blx@key@notkeyword{#1}}
-
-\def\blx@key@notkeyword#1{%
- \ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
-
-\define@key{blx@bib}{category}{\blx@key@category{#1}}
-\define@key{blx@los}{category}{\blx@key@category{#1}}
-
-\def\blx@key@category#1{%
- \ifcsundef{blx@catg@\detokenize{#1}}
- {\blx@warning{Category '\detokenize{#1}' not found}%
- \let\blx@tempa\@empty}
- {\blx@printbibchecks
- \blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}}
-
-\define@key{blx@bib}{notcategory}{\blx@key@notcategory{#1}}
-\define@key{blx@los}{notcategory}{\blx@key@notcategory{#1}}
-
-\def\blx@key@notcategory#1{%
- \ifcsundef{blx@catg@#1}
- {}
- {\blx@printbibchecks
- \blx@notfilter\blx@tempa{blx@catg@#1}}}
-
-\define@key{blx@bib}{filter}{\blx@key@filter{#1}}
-\define@key{blx@los}{filter}{\blx@key@filter{#1}}
-
-\def\blx@key@filter#1{%
- \ifcsdef{blx@filter@#1}
- {\blx@printbibchecks
- \blx@bibfilter\blx@tempa{blx@filter@#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {Filter '#1' not found}
- {The filter '#1' could not be found.\MessageBreak
- Use \string\defbibfilter\space to define it}}}
-
-\define@key{blx@bib}{check}{\blx@key@bibcheck{#1}}
-\define@key{blx@los}{check}{\blx@key@bibcheck{#1}}
-
-\def\blx@key@bibcheck#1{%
- \ifcsdef{blx@bibcheck@#1}
- {\letcs\blx@bibcheck{blx@bibcheck@#1}}
- {\let\blx@tempa\@empty
- \blx@error
- {Check '#1' not found}
- {The check '#1' could not be found.\MessageBreak
- Use \string\defbibcheck\space to define it}}}
-
-\define@key{blx@bhd}{heading}{\blx@key@heading{#1}}
-\define@key{blx@bib}{heading}{\blx@key@heading{#1}}
-\define@key{blx@los}{heading}{\blx@key@heading{#1}}
-\define@key{blx@bbs}{heading}{\blx@key@heading{#1}}
-\define@key{blx@bbg}{heading}{\blx@key@heading{#1}}
-
-\def\blx@key@heading#1{%
- \ifcsundef{blx@head@#1}
- {\blx@error
- {Heading '#1' not found}
- {The heading '#1' could not be found.\MessageBreak
- Use \string\defbibheading\space to define it}}
- {\def\blx@theheading{#1}}}
-
-\define@key{blx@bib}{env}{\blx@key@env{#1}}
-\define@key{blx@los}{env}{\blx@key@env{#1}}
-\define@key{blx@bbs}{env}{\blx@key@env{#1}}
-\define@key{blx@bbg}{env}{\blx@key@env{#1}}
-\define@key{blx@bbc}{env}{\blx@key@env{#1}}
-
-\def\blx@key@env#1{%
- \ifcsundef{blx@env@#1}
- {\blx@error
- {Environment '#1' not found}
- {The environment '#1' could not be found.\MessageBreak
- Use \string\defbibenvironment\space to define it}}
- {\def\blx@theenv{#1}}}
-
-\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}}
-\define@key{blx@bib}{title}{\def\blx@thetitle{#1}}
-\define@key{blx@los}{title}{\def\blx@thetitle{#1}}
-
-\define@key{blx@bib}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@los}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@bbs}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@bbg}{prenote}{\blx@key@prenote{#1}}
-\define@key{blx@bbc}{prenote}{\blx@key@prenote{#1}}
-\def\blx@key@prenote#1{%
- \ifcsundef{blx@note@#1}
- {\blx@error
- {Note '#1' not found}
- {The note '#1' could not be found.\MessageBreak
- Use \string\defbibnote\space to define it}}
- {\def\blx@theprenote{#1}}}
-
-\define@key{blx@bib}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@los}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@bbs}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@bbg}{postnote}{\blx@key@postnote{#1}}
-\define@key{blx@bbc}{postnote}{\blx@key@postnote{#1}}
-
-\def\blx@key@postnote#1{%
- \ifcsundef{blx@note@#1}
- {\blx@error
- {Note '#1' not found}
- {The note '#1' could not be found.\MessageBreak
- Use \string\defbibnote\space to define it}}
- {\def\blx@thepostnote{#1}}}
-
-\define@key{blx@bib}{resetnumbers}[true]{%
- \ifstrequal{#1}{true}
- {\iftoggle{blx@defernumbers}
- {\csnumdef{blx@labelnumber@\the\c@refsection}{0}}
- {\blx@warning{%
- Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak
- Ignoring 'resetnumbers=true'}}}
- {}}
-
-\define@key{blx@bib}{omitnumbers}[true]{%
- \ifstrequal{#1}{true}
- {\iftoggle{blx@defernumbers}
- {\toggletrue{blx@omitnumbers}}
- {\blx@warning{%
- Option 'omitnumbers' requires 'defernumbers=true'.\MessageBreak
- Ignoring 'omitnumbers=true'}}}
- {}}
-
-\define@key{blx@bib}{prefixnumbers}{%
- \def\blx@prefixnumbers{#1}%
- \iftoggle{blx@defernumbers}
- {\csnumdef{blx@labelnumber@\the\c@refsection}{0}}
- {\iftoggle{blx@labelnumber}
- {\blx@warning{%
- Option 'prefixnumbers' requires global\MessageBreak
- 'defernumbers=true'}}
- {}}}
-
-% [<options>]
-
-\newrobustcmd*{\printbibheading}{%
- \begingroup
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@printbibheading}
- {\blx@printbibheading[]}}
-
-\def\blx@printbibheading[#1]{%
- \def\blx@theheading{bibliography}%
- \let\blx@thetitle\@empty
- \blx@safe@actives
- \setkeys{blx@bhd}{#1}%
- \blx@rest@actives
- \blx@langstrings
- \blx@bibheading\blx@theheading\blx@thetitle
- \endgroup}
-
-% [<options>]
-
-\newrobustcmd*{\printbibliography}{%
- \begingroup
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@printbibliography}
- {\blx@printbibliography[]}}
-
-\def\blx@printbibliography[#1]{%
- \toggletrue{blx@tempa}%
- \toggletrue{blx@tempb}%
- \letcs\blx@tempa{blx@sbib@\the\c@refsection}%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \blx@safe@actives
- \setkeys{blx@bib}{#1}%
- \blx@rest@actives
- \ifdefvoid\blx@tempa
- {\blx@warn@bibempty\endgroup}
- {\blx@bibliography\blx@tempa}}
-
-% [<options>]
-
-\newrobustcmd*{\bibbysection}{%
- \begingroup
- \ifnum\blx@maxsection=\z@
- \blx@warning{No reference sections found}%
- \fi
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@bibbysection}
- {\blx@bibbysection[]}}
-
-\def\blx@bibbysection[#1]{%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \c@refsection\z@
- \blx@safe@actives
- \setkeys{blx@bbs}{#1}%
- \blx@rest@actives
- \togglefalse{blx@tempa}%
- \blx@refsections}
-
-\def\blx@refsections{%
- \ifcsvoid{blx@sbib@\the\c@refsection}
- {}
- {\toggletrue{blx@tempa}%
- \begingroup
- \expandafter\blx@bibliography\csname blx@sbib@\the\c@refsection\endcsname}%
- \ifnum\c@refsection<\blx@maxsection
- \advance\c@refsection\@ne
- \expandafter\blx@refsections
- \else
- \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
- \endgroup
- \fi}
-
-% [<options>]
-
-\newrobustcmd*{\bibbysegment}{%
- \begingroup
- \edef\on@line{\on@line}%
- \ifnum\blx@maxsegment=\z@
- \blx@warning{No reference segments found}%
- \fi
- \@ifnextchar[%]
- {\blx@bibbysegment}
- {\blx@bibbysegment[]}}
-
-\def\blx@bibbysegment[#1]{%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \c@refsection\z@
- \c@refsegment\@ne
- \blx@safe@actives
- \setkeys{blx@bbg}{#1}%
- \blx@rest@actives
- \togglefalse{blx@tempa}%
- \blx@refsegments}
-
-\def\blx@refsegments{%
- \ifcsvoid{blx@segm@\the\c@refsection @\the\c@refsegment}
- {}
- {\toggletrue{blx@tempa}%
- \begingroup
- \letcs\blx@tempa{blx@sbib@\the\c@refsection}%
- \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}%
- \blx@bibliography\blx@tempa}%
- \ifnum\c@refsegment<\blx@maxsegment
- \advance\c@refsegment\@ne
- \expandafter\blx@refsegments
- \else
- \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
- \endgroup
- \fi}
-
-% [<options>]
-
-\newrobustcmd*{\bibbycategory}{%
- \begingroup
- \edef\on@line{\on@line}%
- \ifx\blx@categories\@empty
- \blx@warning{No categories found}%
- \fi
- \@ifnextchar[%]
- {\blx@bibbycategory}
- {\blx@bibbycategory[]}}
-
-\def\blx@bibbycategory[#1]{%
- \def\blx@theheading{bibliography}%
- \def\blx@theenv{bibliography}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \c@refsection\z@
- \blx@safe@actives
- \setkeys{blx@bbc}{#1}%
- \blx@rest@actives
- \togglefalse{blx@tempa}%
- \forlistloop\blx@bibcategory\blx@categories
- \blx@endbibcategory}
-
-\def\blx@bibcategory#1{%
- \ifcsvoid{blx@catg@#1}
- {}
- {\toggletrue{blx@tempa}%
- \begingroup
- \blx@key@heading{#1}%
- \letcs\blx@tempa{blx@sbib@\the\c@refsection}%
- \blx@filter\blx@tempa{blx@catg@#1}%
- \blx@bibliography\blx@tempa}}%
-
-\def\blx@endbibcategory{%
- \iftoggle{blx@tempa}{}{\blx@warn@bibempty}%
- \endgroup}
-
-% {<entrykey>,...}
-
-\def\blx@bibliography{%
- \blx@langstrings
- \blx@bibheading\blx@theheading\blx@thetitle
- \blx@bibnote\blx@theprenote
- \begingroup
- \blx@bibinit
- \let\@noitemerr\@empty
- \let\blx@noitem\blx@warn@bibempty
- \ifnum\bibinitsep=\z@
- \let\blx@initsep\relax
- \fi
- \ifnum\bibnamesep=\z@
- \let\blx@namesep\relax
- \fi
- \csuse{blx@env@\blx@theenv}%
- \csuse{blx@hook@bibinit}%
- \csuse{blx@hook@bibinit@next}%
- \let\blx@do\blx@bibitem
- \let\blx@done\blx@endbibliography
- \blx@listloop}
-
-\def\blx@endbibliography{%
- \csuse{blx@endenv@\blx@theenv}%
- \blx@noitem
- \endgroup
- \blx@bibnote\blx@thepostnote
- \endgroup}
-
-\def\blx@bibheading#1#2{%
- \begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\blx@bibheading@i{\expandonce#1}{\expandonce#2}}%
- \blx@tempa}
-
-\def\blx@bibheading@i#1#2{%
- \let\newrefsection\relax
- \let\newrefsegment\relax
- \ifblank{#2}
- {\csuse{blx@head@#1}}
- {\csuse{blx@head@#1}[#2]}%
- \let\newrefsection\blx@newrefsection
- \let\newrefsegment\blx@newrefsegment}
-
-\def\blx@bibnote#1{%
- \ifdefempty#1
- {}
- {\begingroup
- \let\newrefsection\relax
- \let\newrefsegment\relax
- \noindent
- \csuse{blx@note@#1}\par\nobreak
- \endgroup}}
-
-\def\blx@bibinit{%
- \iftoggle{blx@citation}
- {}
- {\toggletrue{blx@bibliography}}%
- \blx@blxinit
- \blx@resetdata
- \csuse{blx@hook@bbxinit}%
- \bibsetup\bibfont
- \blx@setsfcodes
- \csuse{blx@bibsetup}}
-
-% {<entrykey>}
-
-\def\blx@bibitem#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@getdata{#1}%
- \blx@bibcheck
- \iftoggle{blx@skipentry}{}{%
- \global\let\blx@noitem\@empty
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \blx@thelabelnumber
- \blx@addprefixnumber
- \addtocounter{instcount}\@ne
- \csuse{blx@item@\blx@theenv}\relax
- \blx@initsep
- \blx@namesep
- \csuse{blx@hook@bibitem}%
- \blx@execute
- \blx@initunit
- \blx@anchor
- \blx@beglangbib
- \bibsentence
- \blx@pagetracker
- \blx@driver\abx@field@entrytype
- \blx@postpunct
- \blx@endlangbib}%
- \endgroup}
- {}}
-
-\let\blx@bibcheck\relax
-
-\def\blx@initsep{%
- \blx@imc@iffieldundef{sortinit}
- {}
- {\ifnum\c@instcount>\@ne
- \blx@imc@iffieldequals{sortinit}\blx@previnit
- {}
- {\addvspace{\bibinitsep}}%
- \fi
- \global\let\blx@previnit\abx@field@sortinit}}
-
-\def\blx@namesep{%
- \ifnum\c@instcount>\@ne
- \blx@imc@iffieldequals{fullhash}\blx@prevhash
- {}
- {\addvspace{\bibnamesep}}%
- \fi
- \global\let\blx@prevhash\abx@field@fullhash}
-
-\newrobustcmd*{\AtBeginBibliography}{\gappto\blx@hook@bibinit}
-\newrobustcmd*{\AtEveryBibitem}{\gappto\blx@hook@bibitem}
-\@onlypreamble\AtBeginBibliography
-\@onlypreamble\AtEveryBibitem
-
-\def\blx@imc@UseBibitemHook{\csuse{blx@hook@bibitem}}
-
-\blx@regimcs{\UseBibitemHook}
-
-\newrobustcmd*{\AtNextBibliography}{%
- \ifundef\blx@hook@bibinit@next
- {\gdef\blx@hook@bibinit@next{\global\undef\blx@hook@bibinit@next}}
- {}%
- \gappto\blx@hook@bibinit@next}
-
-% page tracker
-
-\def\blx@pagetracker@context{%
- \blx@leavevmode
- \ifbool{@filesw}
- {\ifbool{pagetracker}
- {\protected@write\@mainaux{}{%
- \iftoggle{blx@footnote}
- {\string\abx@aux@fnpage}
- {\string\abx@aux@page}%
- {\the\c@instcount}{\noexpand\the\c@page}}}
- {}}
- {}}
-
-% {<instcount>}{<page>}
-
-\protected\def\blx@aux@page#1#2{%
- \csgdef{blx@page@#1}{#2}%
- \blx@addpagesum{#1}{#2}}
-\protected\def\blx@aux@spread#1#2{%
- \ifodd#2\relax
- \csxdef{blx@page@#1}{\number\numexpr#2-1}%
- \else
- \csgdef{blx@page@#1}{#2}%
- \fi
- \blx@addpagesum{#1}{#2}}
-
-\protected\def\blx@aux@fnpage#1#2{%
- \csgdef{blx@fnpage@#1}{#2}%
- \blx@addpagesum{#1}{#2}}
-\protected\def\blx@aux@fnspread#1#2{%
- \ifodd#2\relax
- \csxdef{blx@fnpage@#1}{\number\numexpr#2-1}%
- \else
- \csgdef{blx@fnpage@#1}{#2}%
- \fi
- \blx@addpagesum{#1}{#2}}
-
-\AtEndDocument{%
- \def\abx@aux@page#1#2{\blx@addpagesum{#1}{#2}}%
- \def\abx@aux@fnpage#1#2{\blx@addpagesum{#1}{#2}}}
-
-% hyperref interface
-
-\appto\blx@mkhyperref{%
- \let\blx@anchors\@empty
- \ifundef\hyper@natanchorstart
- {\protected\def\blx@anchor{%
- \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
- {}
- {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
- \hypertarget{cite.\the\c@refsection @\abx@field@entrykey}{}}}}
- {\protected\def\blx@anchor{%
- \xifinlist{\the\c@refsection @\abx@field@entrykey}{\blx@anchors}
- {}
- {\listxadd\blx@anchors{\the\c@refsection @\abx@field@entrykey}%
- \hyper@natanchorstart{\the\c@refsection @\abx@field@entrykey}%
- \hyper@natanchorend}}}}
-
-\appto\blx@mknohyperref{\let\blx@anchor\relax}
-
-% List of shorthands
-
-\newrobustcmd*{\printshorthands}{%
- \begingroup
- \edef\on@line{\on@line}%
- \@ifnextchar[%]
- {\blx@printshorthands}
- {\blx@printshorthands[]}}
-
-\def\blx@printshorthands[#1]{%
- \toggletrue{blx@tempa}%
- \toggletrue{blx@tempb}%
- \letcs\blx@tempa{blx@losh@\the\c@refsection}%
- \def\blx@theheading{biblist}%
- \def\blx@theenv{shorthand}%
- \let\blx@theprenote\@empty
- \let\blx@thepostnote\@empty
- \let\blx@thetitle\@empty
- \let\blx@printbibchecks\relax
- \blx@safe@actives
- \setkeys{blx@los}{#1}%
- \blx@rest@actives
- \ifdefvoid\blx@tempa
- {\blx@warn@losempty\endgroup}
- {\blx@shorthands\blx@tempa}}
-
-\def\blx@printbibchecks{%
- \togglefalse{blx@tempa}%
- \iftoggle{blx@defernumbers}
- {\global\let\blx@printbibchecks\relax}
- {\iftoggle{blx@labelnumber}
- {\blx@warning@noline{Setting 'defernumbers=true' recommended}}
- {\global\let\blx@printbibchecks\relax}}}
-
-% {<entrykey>,...}
-
-\def\blx@shorthands{%
- \if@twocolumn
- \@restonecoltrue\onecolumn
- \else
- \@restonecolfalse
- \fi
- \blx@langstrings
- \blx@bibheading\blx@theheading\blx@thetitle
- \blx@bibnote\blx@theprenote
- \begingroup
- \blx@bibinit
- \let\@noitemerr\@empty
- \let\blx@noitem\blx@warn@losempty
- \csuse{blx@env@\blx@theenv}%
- \csuse{blx@hook@losinit}%
- \let\blx@do\blx@lositem
- \let\blx@done\blx@endshorthands
- \blx@listloop}
-
-\def\blx@endshorthands{%
- \csuse{blx@endenv@\blx@theenv}%
- \blx@noitem
- \endgroup
- \blx@bibnote\blx@thepostnote
- \endgroup
- \if@restonecol\twocolumn\fi}
-
-\newrobustcmd*{\AtBeginShorthands}{\gappto\blx@hook@losinit}
-\newrobustcmd*{\AtEveryLositem}{\gappto\blx@hook@lositem}
-\@onlypreamble\AtBeginShorthands
-\@onlypreamble\AtEveryLositem
-
-% {<entrykey>}
-
-\def\blx@lositem#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@getdata{#1}%
- \blx@bibcheck
- \iftoggle{blx@skipentry}{}{%
- \global\let\blx@noitem\@empty
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \addtocounter{instcount}\@ne
- \csuse{blx@item@\blx@theenv}\relax
- \csuse{blx@hook@lositem}%
- \blx@execute
- \blx@initunit
- \blx@beglangbib
- \bibsentence
- \blx@pagetracker
- \blx@driver{shorthand}%
- \blx@postpunct
- \blx@endlangbib}%
- \endgroup}
- {}}
-
-\DeclareBibliographyDriver{shorthand}{%
- \iffieldundef{shorttitle}
- {\printfield{title}}
- {\printfield{shorttitle}}}
-
-% Reference sections
-
-\newrobustcmd*{\newrefsection}{%
- \ifnum\c@refsection>\z@
- \endrefsection
- \fi
- \refsection}
-\let\blx@newrefsection\newrefsection
-
-\newrobustcmd*{\refsection}{%
- \begingroup
- \edef\on@line{\on@line}%
- \ifnum\c@refsection>\z@
- \blx@err@nestenv{refsection}%
- \blx@endrefsection
- \fi
- \ifnum\c@refsegment>\z@
- \blx@err@nestenv{refsection}%
- \blx@endrefsegment
- \fi
- \@ifnextchar[%]
- {\blx@refsection}
- {\blx@refsection[]}}
-
-\def\blx@refsection{%
- \begingroup
- \blx@hook@fileverb
- \blx@refsection@i}
-
-\def\blx@refsection@i[#1]{%
- \endgroup
- \global\advance\blx@maxsection\@ne
- \global\c@refsection\blx@maxsection
- \blx@inf@refsec
- \blx@secinit
- \if@filesw
- \blx@auxwrite\@mainaux{}{%
- \string\abx@aux@refsection{\the\c@refsection}{\the\c@page}}%
- \ifblank{#1}
- {}
- {\let\blx@bibfiles\@empty
- \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}%
- \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}%
- \blx@refsection@bibtex
- \fi
- \blx@info{Setting label 'refsection:\the\c@refsection'}%
- \label{refsection:\the\c@refsection}%
- \endgroup}
-
-\def\blx@refsection@addfile#1{%
- \ifcsdef{blx@res@labl@#1}
- {\blx@refsection@addfile@i{\csuse{blx@res@labl@#1}}}
- {\blx@refsection@addfile@i{#1}}}
-
-\def\blx@refsection@addfile@i#1{%
- \ifcsdef{blx@res@loca@#1}
- {\listeadd\blx@bibfiles{#1}}
- {\listeadd\blx@bibfiles{\blx@stripbib{#1}\detokenize{.bib}}}}
-
-\def\blx@refsection@biber{%
- \blx@regbibfiles\jobname\blx@bibfiles
- \begingroup
- \let\blx@tempa\@empty
- \blx@bibdata\blx@tempa\blx@bibfiles
- \blx@auxwrite\blx@auxout
- {\let\do\blx@datasource}
- {\blx@xml@endsection\blx@nl
- \blx@xml@comment{section \the\c@refsection}%
- \blx@xml@bibdata{\the\c@refsection}{\blx@tempa}%
- \blx@xml@section{\the\c@refsection}}%
- \endgroup}
-
-\def\blx@refsection@bibtex{%
- \xdef\blx@auxfile@bibtex{\jobname\the\c@refsection\blxauxsuffix}%
- \blx@regbibfiles\blx@auxfile@bibtex\blx@bibfiles
- \blx@logreq@inactive
- \blx@ifsigned{\blx@auxfile@bibtex}{aux}
- {\immediate\openout\blx@auxout\blx@auxfile@bibtex.aux\relax
- \global\let\blx@auxout@bibtex\blx@auxout
- \blx@auxinit@bibtex\blx@bibfiles}
- {}}
-
-\protected\def\endrefsection{%
- \blx@endrefsection
- \blx@inf@refsec}
-
-\def\blx@endrefsection{%
- \blx@endrefsegment
- \blx@endrefsection@bibtex
- \global\c@refsection\z@}
-
-\def\blx@endrefsection@biber{%
- \ifnum\c@refsection>\z@
- \blx@auxwrite\blx@auxout{}{%
- \blx@xml@endsection\blx@nl
- \blx@xml@comment{section 0 (cont.)}%
- \blx@xml@section{0}}%
- \fi}
-
-\def\blx@endrefsection@bibtex{%
- \ifx\blx@auxout@bibtex\blx@auxout
- \immediate\closeout\blx@auxout
- \global\let\blx@auxout@bibtex\@mainaux
- \xdef\blx@auxfile@bibtex{\jobname}%
- \fi}
-
-\AtEndDocument{%
- \blx@endrefsection
- \def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}}
-
-\protected\def\abx@aux@refsection#1#2{%
- \ifnum#1>\blx@maxsection
- \global\blx@maxsection#1\relax
- \fi
- \blx@addchecksum{#1}{#2}}
-
-% Reference segments
-
-\newrobustcmd*{\newrefsegment}{%
- \ifnum\c@refsegment>\z@
- \blx@endrefsegment
- \fi
- \refsegment}
-\let\blx@newrefsegment\newrefsegment
-
-\newrobustcmd*{\refsegment}{%
- \ifnum\c@refsegment>\z@
- \blx@err@nestenv{refsegment}%
- \blx@endrefsegment
- \fi
- \global\advance\blx@maxsegment\@ne
- \global\c@refsegment\blx@maxsegment
- \blx@inf@refseg
- \blx@info{Setting label 'refsegment:\the\c@refsection\the\c@refsegment'}%
- \label{refsegment:\the\c@refsection\the\c@refsegment}%
- \ifcsundef{blx@segm@\the\c@refsection @\the\c@refsegment}
- {\global\cslet{blx@segm@\the\c@refsection @\the\c@refsegment}\@empty}
- {}}
-
-\protected\def\endrefsegment{%
- \blx@endrefsegment
- \blx@inf@refseg}
-
-\def\blx@endrefsegment{%
- \global\c@refsegment\z@}
-
-% Reference section/segment auto-reset
-% we are prepending to the commands so that the resets happen before
-% the part title is typeset otherwise \cites in there could be "ibid"
-% which makes no sense
-\def\blx@refpatch@part#1{%
- \ifundef\part
- {\blx@err@nodocdiv{part}}
- {\toggletrue{blx@tempa}%
- \def\do##1{%
- \pretocmd##1{#1}
- {\togglefalse{blx@tempa}\listbreak}
- {}}%
- \docsvlist{%
- \H@old@part,% hyperref
- \NR@part,% nameref
- \@part}% latex/koma-script/memoir
- \iftoggle{blx@tempa}
- {\blx@err@patch{\string\@part}}
- {}%
- \let\do\noexpand}}
-
-\def\blx@refpatch@chapter#1{%
- \ifundef\chapter
- {\blx@err@nodocdiv{chapter}}
- {\pretocmd\@makechapterhead{#1}
- {}
- {\blx@err@patch{\string\@makechapterhead}}}}
-
-\def\blx@refpatch@sect#1{%
- \ifcsundef{#1}
- {\blx@err@nodocdiv{#1}\@gobbletwo}
- {\blx@refpatch@sect@i}}
-
-\edef\blx@refpatch@sect@i#1#2{%
- \def\noexpand\do##1{%
- \pretocmd##1%
- {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}}
- {\togglefalse{blx@tempa}\noexpand\listbreak}
- {}}%
- \noexpand\blx@refpatch@sect@iii}
-
-\def\blx@refpatch@sect@ii#1#2#3{%
- \ifnumequal{#2}{#3}{#1}{}}
-
-\def\blx@refpatch@sect@iii{%
- \toggletrue{blx@tempa}%
- \docsvlist{% order does matter:
- \H@old@sectm@m,% memoir+hyperref (what a mess...)
- \M@sect,% memoir
- \H@old@sect,% hyperref
- \NR@sect,% nameref
- \scr@sect,% koma-script 3.x
- \@sect}% latex
- \iftoggle{blx@tempa}
- {\blx@err@patch{\string\@sect}}
- {}%
- \let\do\noexpand}
-
-% Bibliography categories
-
-\let\blx@categories\@empty
-
-% {<category>}
-
-\newrobustcmd*{\DeclareBibliographyCategory}[1]{%
- \ifcsundef{blx@catg@#1}
- {\global\cslet{blx@catg@#1}\@empty
- \listgadd\blx@categories{#1}}
- {\blx@error
- {Category '#1' already declared}
- {The bibliography category '#1'\MessageBreak
- has already been declared}}}
-\@onlypreamble\DeclareBibliographyCategory
-
-% {<category>}{<entrykey>,...}
-
-\newrobustcmd*{\addtocategory}[2]{%
- \ifcsundef{blx@catg@#1}
- {\blx@error
- {Category '#1' not declared}
- {Use \string\DeclareBibliographyCategory\space to declare}}
- {\AfterPreamble{%
- \blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}}
-
-% {<category>}{<entrykey>,...}
-
-\def\blx@addtocategory#1#2{%
- \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}%
- \abx@aux@category{#1}{#2}}
-
-% {<category>}{<entrykey>,...}
-
-\protected\def\abx@aux@category#1#2{%
- \xifinlistcs{\detokenize{#2}}{blx@catg@#1}
- {}
- {\listcsxadd{blx@catg@#1}{\detokenize{#2}}}}
-
-\AtEndDocument{\let\abx@aux@category\@gobbletwo}
-
-% [<options>]{<resource>,...}
-
-\renewrobustcmd*{\bibliography}[1]{%
- \begingroup
- \def\blx@tempa{file}%
- \def\blx@tempb{bibtex}%
- \def\blx@tempc{local}%
- \blx@xsanitizeafter{\forcsvlist\blx@addbib@legacy}{#1}%
- \endgroup}
-\@onlypreamble\bibliography
-
-\def\blx@addbib@legacy#1{%
- \begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\blx@addbib@resource{\blx@stripbib{#1}\detokenize{.bib}}}%
- \blx@tempa}
-
-\def\blx@stripbib#1{%
- \expandafter\blx@stripbib@i\detokenize{#1.bib}&}
-\edef\blx@stripbib@i{%
- \def\noexpand\blx@stripbib@i##1\detokenize{.bib}##2&}
-\blx@stripbib@i{#1}
-
-% [<options>]{<resource>,...}
-
-\newrobustcmd*{\addbibresource}{%
- \blx@addbib\blx@addbib@resource}
-\@onlypreamble\addbibresource
-
-\newrobustcmd*{\addglobalbib}{%
- \blx@addbib\blx@addbib@global}
-\@onlypreamble\addglobalbib
-
-\newrobustcmd*{\addsectionbib}{%
- \blx@addbib\blx@addbib@register}
-\@onlypreamble\addsectionbib
-
-\def\blx@addbib#1{%
- \@ifnextchar[%]
- {\blx@addbib@i{#1}}
- {\blx@addbib@i{#1}[]}}
-
-\def\blx@addbib@i#1[#2]{%
- \begingroup
- \blx@hook@fileverb
- \blx@addbib@ii{#1}{#2}}
-
-\def\blx@addbib@ii#1#2#3{%
- \endgroup
- \begingroup
- \def\blx@tempa{file}%
- \def\blx@tempb{bibtex}%
- \def\blx@tempc{local}%
- \undef\blx@tempd
- \setkeys{blx@addbib}{#2}%
- \blx@xsanitizeafter{#1}{#3}%
- \endgroup}
-
-\def\blx@hook@fileverb{%
- \let\do\@makeother
- \dospecials
- \catcode`\\=\z@
- \catcode`\{=\@ne
- \catcode`\}=\tw@}
-
-\define@key{blx@addbib}{type}{\def\blx@tempa{#1}}
-\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}}
-\define@key{blx@addbib}{location}{\def\blx@tempc{#1}}
-\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}}
-
-% \blx@res@type@<resource> resource -> type
-% \blx@res@data@<resource> resource -> datatype
-% \blx@res@loca@<resource> resource -> datatype
-% \blx@res@labl@<resource> label -> resource
-
-\def\blx@addbib@register#1{%
- \csxdef{blx@res@type@#1}{\blx@tempa}%
- \csxdef{blx@res@data@#1}{\blx@tempb}%
- \csxdef{blx@res@loca@#1}{\blx@tempc}%
- \ifdef\blx@tempd
- {\csxdef{blx@res@labl@\blx@tempd}{#1}}
- {}}
-
-\def\blx@addbib@resource#1{%
- \blx@addbib@register{#1}%
- \listgadd\blx@bibfiles{#1}%
- \blx@regbibfile\jobname{#1}}
-
-\def\blx@addbib@global#1{%
- \blx@addbib@resource{#1}%
- \listgadd\blx@bibfiles@global{#1}}
-
-\let\blx@bibfiles\@empty
-\let\blx@bibfiles@global\@empty
-
-\def\blx@bibdata#1#2{%
- \forlistloop{\blx@bibdata@i{#1}}#2}
-\def\blx@bibdata@i#1#2{%
- \blx@xmlsanitizeafter{\blx@bibdata@ii{#1}{#2}}{#2}}
-\def\blx@bibdata@ii#1#2#3{%
- \eappto#1{%
- \blx@xml@datasource
- {\ifcsdef{blx@res@type@#2}
- {\csuse{blx@res@type@#2}}
- {file}}
- {\ifcsdef{blx@res@data@#2}
- {\csuse{blx@res@data@#2}}
- {bibtex}}
- {#3}}}
-
-%% Citations
-
-\newrobustcmd*{\AtEveryCite}{\gappto\blx@hook@cite}
-\newrobustcmd*{\AtEveryCitekey}{\gappto\blx@hook@citekey}
-\newrobustcmd*{\AtEveryMultiCite}{\gappto\blx@hook@mcite}
-\@onlypreamble\AtEveryCite
-\@onlypreamble\AtEveryCitekey
-\@onlypreamble\AtEveryMultiCite
-
-\newrobustcmd*{\AtEachCitekey}{%
- \iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}}
-
-\def\blx@imc@UseEveryCiteHook{\csuse{blx@hook@cite}}
-\def\blx@imc@UseEveryCitekeyHook{\csuse{blx@hook@citekey}}
-\def\blx@imc@UseEveryMultiCiteHook{\csuse{blx@hook@mcite}}
-
-\newrobustcmd*{\AtNextCite}{%
- \ifundef\blx@hook@cite@next
- {\gdef\blx@hook@cite@next{\global\undef\blx@hook@cite@next}}
- {}%
- \gappto\blx@hook@cite@next}
-
-\newrobustcmd*{\AtNextCitekey}{%
- \ifundef\blx@hook@citekey@next
- {\gdef\blx@hook@citekey@next{\global\undef\blx@hook@citekey@next}}
- {}%
- \gappto\blx@hook@citekey@next}
-
-\newrobustcmd*{\AtNextMultiCite}{%
- \ifundef\blx@hook@mcite@next
- {\gdef\blx@hook@mcite@next{\global\undef\blx@hook@mcite@next}}
- {}%
- \gappto\blx@hook@mcite@next}
-
-\def\blx@imc@UseNextCiteHook{\csuse{blx@hook@cite@next}}
-\def\blx@imc@UseNextCitekeyHook{\csuse{blx@hook@citekey@next}}
-\def\blx@imc@UseNextMultiCiteHook{\csuse{blx@hook@mcite@next}}
-
-\def\blx@imc@DeferNextCitekeyHook{\undef\blx@hook@citekey@next}
-
-\blx@regimcs{%
- \UseEveryCiteHook \UseEveryCitekeyHook \UseEveryMultiCiteHook
- \UseNextCiteHook \UseNextCitekeyHook \UseNextMultiCiteHook
- \DeferNextCitekeyHook}
-
-% {<style>}
-
-\newrobustcmd*{\RequireCitationStyle}[1]{%
- \blx@inputonce{#1.cbx}{citation style '#1'}{}{}{}
- {\blx@error
- {Style '#1' not found}
- {The citation style '#1' could not be found}}}
-\@onlypreamble\RequireCitationStyle
-
-% {<code>}
-
-\newrobustcmd*{\InitializeCitationStyle}{\appto\blx@hook@cbxinit}
-\@onlypreamble\InitializeCitationStyle
-
-% {<code>}
-
-\newrobustcmd*{\OnManualCitation}{\appto\blx@hook@mancite}
-\@onlypreamble\OnManualCitation
-
-\newrobustcmd*{\mancite}{%
- \csuse{blx@hook@mancite}%
- \blx@ibidreset
- \blx@idemreset
- \blx@opcitreset
- \blx@loccitreset}
-
-% {<entrykey>}{<message>}
-
-\def\blx@citation#1#2{%
- \ifbool{citerequest}
- {\ifcsdef{blx@setp@\the\c@refsection @#1}
- {\blx@citation@set{#1}{#2}}
- {\ifcsdef{blx@setc@\the\c@refsection @#1}
- {\blx@citation@inset{#1}{#2}}
- {\blx@citation@entry{#1}{#2}}}%
- \ifcsdef{blx@refc@\the\c@refsection @#1}% BibTeX only
- {\blx@citation@xref{#1}}
- {}}
- {}}
-
-\def\blx@citation@entry#1#2{%
- \blx@bibreq{#1}%
- \ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}
- {}
- {\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}%
- \blx@ifdata{#1}
- {}
- {\ifcsdef{blx@miss@\the\c@refsection}
- {\ifinlistcs{#1}{blx@miss@\the\c@refsection}
- {}
- {\blx@logreq@active{#2{#1}}}}
- {\blx@logreq@active{#2{#1}}}}}
-
-\def\blx@citation@set#1#2{%
- \blx@citation@entry{#1}{#2}%
- \begingroup
- \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}%
- \expandafter\expandafter\expandafter\docsvlist
- \expandafter\expandafter\expandafter{%
- \csname blx@setp@\the\c@refsection @#1\endcsname}%
- \endgroup}
-
-\def\blx@citation@inset#1#2{%
- \blx@citation@entry{#1}{#2}%
- \expandafter\expandafter\expandafter\blx@citation@inset@i
- \expandafter\expandafter\expandafter{%
- \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef}
-
-\def\blx@citation@inset@i#1{%
- \ifcsdef{blx@setp@\the\c@refsection @#1}
- {\blx@citation@set{#1}}
- {\blx@citation@entry{#1}}}
-
-\def\blx@citation@xref#1{% BibTeX only
- \begingroup
- \edef\blx@tempa{blx@refp@\the\c@refsection @%
- \csname blx@refc@\the\c@refsection @#1\endcsname}%
- \ifcsdef\blx@tempa
- {\ifinlistcs{#1}\blx@tempa
- {}
- {\listcsxadd\blx@tempa{#1}}%
- \blx@tempcnta\z@
- \def\do##1{\advance\blx@tempcnta\@ne}%
- \dolistcsloop\blx@tempa}
- {\listcsxadd\blx@tempa{#1}%
- \blx@tempcnta\@ne}%
- \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax
- \else
- \expandafter\expandafter\expandafter\blx@citation@entry
- \expandafter\expandafter\expandafter{%
- \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef
- \fi}
-
-\def\blx@citation@all{%
- \ifbool{citerequest}
- {\blx@bibreq{*}%
- \global\csletcs
- {blx@segm@\the\c@refsection @\the\c@refsegment}
- {blx@sbib@\the\c@refsection}%
- \ifcsvoid{blx@sort@\the\c@refsection}
- {\blx@logreq@active{}}
- {}}
- {}}
-
-\protected\def\blx@bibreq#1{%
- \blx@auxwrite\blx@auxout@bibtex{}{\string\citation{#1}}}
-
-% {<set>}{<key1,key2,key3>}
-
-\newrobustcmd*{\defbibentryset}[2]{%
- \@bsphack
- \begingroup
- \blx@xsanitizeafter{\def\blx@tempa}{#1}%
- \let\blx@tempb\@empty
- \let\blx@tempc\@empty
- \blx@xsanitizeafter{\forcsvlist\blx@defentryset@add}{#2}%
- \ifcsdef{blx@set@\the\c@refsection @\blx@tempa}
- {\expandafter\ifdefequal
- \csname blx@set@\the\c@refsection @\blx@tempa\endcsname
- \blx@tempb
- {}
- {\blx@error
- {Conflicting definitions of '\blx@tempa'}
- {The entry set '\blx@tempa' been defined before.\MessageBreak
- old: \blx@tempa\space = %
- \csuse{blx@set@\the\c@refsection @\blx@tempa}\MessageBreak
- new: \blx@tempa\space = \blx@tempb\MessageBreak
- I'm ignoring the new definition}}}
- {\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb}%
- \endgroup
- \@esphack}
-
-\def\blx@defentryset@add#1{%
- \edef\blx@tempb{\blx@tempb\blx@tempc#1}%
- \def\blx@tempc{,}}
-
-% {<entrykey>,...}
-
-\protected\def\blx@citeloop#1{%
- \begingroup
- \blx@tempcnta\z@
- \blx@tempcntb\z@
- \let\blx@tempa\@empty
- \forcsvlist\blx@citeadd{#1}%
- \blx@thenotecheck
- \ifnum\blx@tempcnta>\z@
- \ifnum\blx@tempcntb>\z@
- \multicitedelim
- \fi
- \fi
- \letcs\blx@tempb{blx@sort@\the\c@refsection}%
- \blx@thecitesort
- \edef\blx@tempa{\endgroup
- \c@citecount\z@
- \c@citetotal\the\blx@tempcnta\relax
- \unexpanded{\forlistloop\blx@citeprint}{\blx@tempb}}%
- \blx@tempa}
-
-\def\blx@notecheck{%
- \ifnum\blx@tempcnta>\@ne
- \blx@warning{%
- Package option 'sortcites' enabled.\MessageBreak
- Verify postnote placement}%
- \fi}
-
-\def\blx@citesort{%
- \ifnum\blx@tempcnta>\@ne
- \blx@filtercitesort\blx@tempb{blx@tempa}%
- \else
- \blx@citenosort
- \fi}
-
-\def\blx@citenosort{%
- \let\blx@tempb\blx@tempa}
-
-% {<entrykey>}
-
-\def\blx@citeadd#1{%
- \blx@citation{#1}\blx@msg@cundefon
- \blx@ifdata{#1}
- {\advance\blx@tempcnta\@ne
- \listadd\blx@tempa{#1}}
- {\ifnum\blx@tempcntb>\z@\multicitedelim\fi
- \abx@missing{#1}%
- \advance\blx@tempcntb\@ne}}
-
-% {<entrykey>}
-
-\protected\def\blx@citeprint#1{%
- \advance\c@citecount\@ne
- \addtocounter{instcount}\@ne
- \ifnum\c@citecount=\@ne
- \blx@getdata@cite{#1}%
- \blx@precode
- \ifnum\c@citetotal>\@ne
- \blx@resetdata
- \fi
- \else
- \blx@dlimcode
- \fi
- \begingroup
- \ifnum\c@citetotal>\@ne
- \blx@getdata@cite{#1}%
- \fi
- \blx@entrysetcount
- \blx@setoptions@type\abx@field@entrytype
- \blx@setoptions@entry
- \blx@backref{#1}%
- \blx@pagetracker
- \csuse{blx@hook@citekey}%
- \csuse{blx@hook@citekey@next}%
- \blx@beglangcite
- \blx@execute
- \blx@loopcode
- \blx@citecounter
- \blx@citetracker
- \blx@ibidtracker
- \blx@idemtracker
- \blx@opcittracker
- \blx@loccittracker
- \ifnum\c@citecount=\c@citetotal
- \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}%
- \blx@postcode
- \fi
- \blx@endlangcite
- \endgroup}
-
-% cite counter
-
-\def\blx@citecounter@global{%
- \ifbool{@filesw}
- {\ifbool{citetracker}
- {\immediate\write\@mainaux{%
- \string\abx@aux@count
- {\the\c@refsection}{\abx@field@entrykey}}}
- {}}
- {}}
-
-\def\blx@citecounter@context{%
- \ifbool{@filesw}
- {\ifbool{citetracker}
- {\immediate\write\@mainaux{%
- \iftoggle{blx@footnote}
- {\string\abx@aux@fncount}
- {\string\abx@aux@count}%
- {\the\c@refsection}{\abx@field@entrykey}}}
- {}}
- {}}
-
-% {<refsection>}{<entrykey>}
-
-\protected\def\blx@aux@count#1#2{%
- \csnumgdef{blx@count@#1@\detokenize{#2}}{\csuse{blx@count@#1@\detokenize{#2}}+1}}
-\protected\def\blx@aux@fncount#1#2{%
- \csnumgdef{blx@fncount@#1@\detokenize{#2}}{\csuse{blx@fncount@#1@\detokenize{#2}}+1}}
-
-\let\abx@aux@count\@gobbletwo
-\let\abx@aux@fncount\@gobbletwo
-
-\AtEndDocument{%
- \let\abx@aux@count\@gobbletwo
- \let\abx@aux@fncount\@gobbletwo}
-
-\protected\def\blx@setcitecounter@global{%
- \c@citecounter0%
- \csuse{blx@count@\the\c@refsection @\abx@field@entrykey}%
- \relax}
-
-\protected\def\blx@setcitecounter@context{%
- \c@citecounter0%
- \iftoggle{blx@footnote}
- {\csuse{blx@fncount@\the\c@refsection @\abx@field@entrykey}}
- {\csuse{blx@count@\the\c@refsection @\abx@field@entrykey}}%
- \relax}
-
-% cite tracker
-
-\def\blx@citetracker@global{%
- \ifbool{citetracker}
- {\xifinlistcs\abx@field@entrykey{blx@bsee@\the\c@refsection}
- {}
- {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}
- {}}
-
-\def\blx@citetracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\xifinlistcs\abx@field@entrykey{blx@fsee@\the\c@refsection}
- {}
- {\listcsxadd{blx@fsee@\the\c@refsection}\abx@field@entrykey}}
- {\xifinlistcs{\abx@field@entrykey}{blx@bsee@\the\c@refsection}
- {}
- {\listcsxadd{blx@bsee@\the\c@refsection}\abx@field@entrykey}}}
- {}}
-
-\protected\appto\abx@savetrackers{%
- \global\csletcs{blx@saved@bsee@\the\c@refsection}{blx@bsee@\the\c@refsection}%
- \global\csletcs{blx@saved@fsee@\the\c@refsection}{blx@fsee@\the\c@refsection}}
-
-\protected\appto\abx@resttrackers{%
- \global\csletcs{blx@bsee@\the\c@refsection}{blx@saved@bsee@\the\c@refsection}%
- \global\csletcs{blx@fsee@\the\c@refsection}{blx@saved@fsee@\the\c@refsection}}
-
-\protected\appto\abx@cleartrackers{%
- \global\cslet{blx@saved@bsee@\the\c@refsection}\@empty
- \global\cslet{blx@saved@fsee@\the\c@refsection}\@empty}
-
-% ibidem tracker
-
-\def\blx@ibidtracker@global{%
- \ifbool{citetracker}
- {\global\let\blx@lastkey@text\abx@field@entrykey}
- {}}
-
-\def\blx@ibidtracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\global\let\blx@lastkey@foot\abx@field@entrykey}
- {\global\let\blx@lastkey@text\abx@field@entrykey}}
- {}}
-
-\def\blx@ibidtracker@strict{%
- \blx@ifcitesingle
- {\blx@ibidtracker@global}
- {\blx@ibidreset@global}}%
-
-\def\blx@ibidtracker@constrict{%
- \blx@ifcitesingle
- {\blx@mpfnsave
- \blx@ibidtracker@context}
- {\blx@ibidreset@context}}%
-
-\def\blx@ibidreset@force{%
- \global\undef\blx@lastkey@text
- \global\undef\blx@lastkey@foot
- \blx@mpfnreset}
-
-\def\blx@ibidreset@global{%
- \global\undef\blx@lastkey@text}
-
-\def\blx@ibidreset@context{%
- \iftoggle{blx@footnote}
- {\blx@mpfnreset
- \global\undef\blx@lastkey@foot}
- {\global\undef\blx@lastkey@text}}
-
-\protected\appto\abx@savetrackers{%
- \global\let\blx@saved@lastkey@text\blx@lastkey@text
- \global\let\blx@saved@lastkey@foot\blx@lastkey@foot}
-
-\protected\appto\abx@resttrackers{%
- \global\let\blx@lastkey@text\blx@saved@lastkey@text
- \global\let\blx@lastkey@foot\blx@saved@lastkey@foot}
-
-\protected\appto\abx@cleartrackers{%
- \global\undef\blx@saved@lastkey@text
- \global\undef\blx@saved@lastkey@foot}
-
-% idem tracker
-
-\def\blx@idemtracker@global{%
- \ifbool{citetracker}
- {\global\let\blx@lasthash@text\abx@field@fullhash}
- {}}
-
-\def\blx@idemtracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\global\let\blx@lasthash@foot\abx@field@fullhash}
- {\global\let\blx@lasthash@text\abx@field@fullhash}}
- {}}
-
-\let\blx@idemtracker@strict\blx@idemtracker@global
-
-\def\blx@idemtracker@constrict{%
- \blx@mpfnsave
- \blx@idemtracker@context}
-
-\def\blx@idemreset@force{%
- \global\undef\blx@lasthash@text
- \global\undef\blx@lasthash@foot
- \blx@mpfnreset}
-
-\def\blx@idemreset@global{%
- \global\undef\blx@lasthash@text}
-
-\def\blx@idemreset@context{%
- \iftoggle{blx@footnote}
- {\blx@mpfnreset
- \global\undef\blx@lasthash@foot}
- {\global\undef\blx@lasthash@text}}
-
-\protected\appto\abx@savetrackers{%
- \global\let\blx@saved@lasthash@text\blx@lasthash@text
- \global\let\blx@saved@lasthash@text\blx@lasthash@text}
-
-\protected\appto\abx@resttrackers{%
- \global\let\blx@lasthash@text\blx@saved@lasthash@text
- \global\let\blx@lasthash@text\blx@saved@lasthash@text}
-
-\protected\appto\abx@cleartrackers{%
- \global\undef\blx@saved@lasthash@text
- \global\undef\blx@saved@lasthash@foot}
-
-% opcit tracker
-
-\def\blx@opcittracker@global{%
- \ifbool{citetracker}
- {\blx@opcit@tracker{text}}
- {}}
-
-\def\blx@opcittracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@opcit@tracker{foot}}
- {\blx@opcit@tracker{text}}}
- {}}
-
-\def\blx@opcittracker@strict{%
- \blx@ifcitesingle
- {\blx@opcittracker@global}
- {\blx@opcitreset@global}}%
-
-\def\blx@opcittracker@constrict{%
- \blx@ifcitesingle
- {\blx@mpfnsave
- \blx@opcittracker@context}
- {\blx@opcitreset@context}}%
-
-\def\blx@opcit@tracker#1{%
- \blx@imc@iffieldundef{namehash}
- {}
- {\global\cslet{blx@lastkey@#1@\abx@field@namehash}\abx@field@entrykey
- \xifinlistcs\abx@field@namehash{blx@trackhash@#1}
- {}
- {\listcsxadd{blx@trackhash@#1}\abx@field@namehash}}}
-
-\def\blx@opcit@reset#1{%
- \begingroup
- \def\do##1{\global\csundef{blx@lastkey@#1@##1}}%
- \dolistcsloop{blx@trackhash@#1}%
- \global\cslet{blx@trackhash@#1}\@empty
- \endgroup}
-
-\def\blx@opcitreset@force{%
- \blx@opcit@reset{text}%
- \blx@opcit@reset{foot}%
- \blx@mpfnreset}
-
-\def\blx@opcitreset@global{%
- \blx@opcit@reset{text}}
-
-\def\blx@opcitreset@context{%
- \iftoggle{blx@footnote}
- {\blx@opcit@reset{foot}%
- \blx@mpfnreset}
- {\blx@opcit@reset{text}}}
-
-\let\blx@trackhash@text\@empty
-\let\blx@trackhash@foot\@empty
-
-\protected\appto\abx@savetrackers{%
- \begingroup
- \def\do#1{\global\csletcs{blx@saved@lastkey@text@#1}{blx@lastkey@text@#1}}%
- \dolistloop\blx@trackhash@text
- \global\let\blx@saved@trackhash@text\blx@trackhash@text
- \def\do#1{\global\csletcs{blx@saved@lastkey@foot@#1}{blx@lastkey@foot@#1}}%
- \dolistloop\blx@trackhash@foot
- \global\let\blx@saved@trackhash@foot\blx@trackhash@foot
- \endgroup}
-
-\protected\appto\abx@resttrackers{%
- \begingroup
- \blx@opcit@reset{text}%
- \global\let\blx@trackhash@text\blx@saved@trackhash@text
- \def\do#1{\global\csletcs{blx@lastkey@text@#1}{blx@saved@lastkey@text@#1}}%
- \dolistloop\blx@trackhash@text
- \blx@opcit@reset{foot}%
- \global\let\blx@trackhash@foot\blx@saved@trackhash@foot
- \def\do#1{\global\csletcs{blx@lastkey@foot@#1}{blx@saved@lastkey@foot@#1}}%
- \dolistloop\blx@trackhash@foot
- \endgroup}
-
-\protected\appto\abx@cleartrackers{%
- \begingroup
- \def\do#1{\global\csundef{blx@saved@lastkey@text@#1}}%
- \dolistloop\blx@saved@trackhash@text
- \global\undef\blx@saved@trackhash@text
- \def\do#1{\global\csundef{blx@saved@lastkey@foot@#1}}%
- \dolistloop\blx@saved@trackhash@foot
- \global\undef\blx@saved@trackhash@foot
- \endgroup}
-
-% loccit tracker
-
-\def\blx@loccittracker@global{%
- \ifbool{citetracker}
- {\blx@loccit@tracker{text}}
- {}}
-
-\def\blx@loccittracker@context{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@loccit@tracker{foot}}
- {\blx@loccit@tracker{text}}}
- {}}
-
-\def\blx@loccittracker@strict{%
- \ifbool{citetracker}
- {\blx@loccit@stricttracker{text}}
- {}}
-
-\def\blx@loccittracker@constrict{%
- \ifbool{citetracker}
- {\iftoggle{blx@footnote}
- {\blx@mpfnsave
- \blx@loccit@stricttracker{foot}}
- {\blx@loccit@stricttracker{text}}}
- {}}
-
-\def\blx@loccit@tracker#1{%
- \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
- \blx@imc@iffieldundef{postnote}
- {}
- {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
- \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
- {}
- {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}}
-
-\def\blx@loccit@stricttracker#1{%
- \global\csundef{blx@lastnote@#1@\abx@field@entrykey}%
- \blx@imc@iffieldundef{postnote}
- {}
- {\blx@ifcitesingle
- {\expandafter\blx@imc@ifpages
- \expandafter{\abx@field@postnote}
- {\global\cslet{blx@lastnote@#1@\abx@field@entrykey}\abx@field@postnote
- \xifinlistcs\abx@field@entrykey{blx@trackkeys@#1}
- {}
- {\listcsxadd{blx@trackkeys@#1}\abx@field@entrykey}}
- {}}
- {}}}
-
-\def\blx@loccit@reset#1{%
- \begingroup
- \def\do##1{\global\csundef{blx@lastnote@#1@##1}}%
- \dolistcsloop{blx@trackkeys@#1}%
- \global\cslet{blx@trackkeys@#1}\@empty
- \endgroup}
-
-\def\blx@loccitreset@force{%
- \blx@loccit@reset{text}%
- \blx@loccit@reset{foot}%
- \blx@mpfnreset}
-
-\def\blx@loccitreset@global{%
- \blx@loccit@reset{text}}
-
-\def\blx@loccitreset@context{%
- \iftoggle{blx@footnote}
- {\blx@loccit@reset{foot}%
- \blx@mpfnreset}
- {\blx@loccit@reset{text}}}
-
-\let\blx@trackkeys@text\@empty
-\let\blx@trackkeys@foot\@empty
-
-\protected\appto\abx@savetrackers{%
- \begingroup
- \def\do#1{\global\csletcs{blx@saved@lastnote@text@#1}{blx@lastnote@text@#1}}%
- \dolistloop\blx@trackkeys@text
- \global\let\blx@saved@trackkeys@text\blx@trackkeys@text
- \def\do#1{\global\csletcs{blx@saved@lastnote@foot@#1}{blx@lastnote@foot@#1}}%
- \dolistloop\blx@trackkeys@foot
- \global\let\blx@saved@trackkeys@foot\blx@trackkeys@foot
- \endgroup}
-
-\protected\appto\abx@resttrackers{%
- \begingroup
- \blx@loccit@reset{text}%
- \global\let\blx@trackkeys@text\blx@saved@trackkeys@text
- \def\do#1{\global\csletcs{blx@lastnote@text@#1}{blx@saved@lastnote@text@#1}}%
- \dolistloop\blx@trackkeys@text
- \blx@loccit@reset{foot}%
- \global\let\blx@trackkeys@foot\blx@saved@trackkeys@foot
- \def\do#1{\global\csletcs{blx@lastnote@foot@#1}{blx@saved@lastnote@foot@#1}}%
- \dolistloop\blx@trackkeys@foot
- \endgroup}
-
-\protected\appto\abx@cleartrackers{%
- \begingroup
- \def\do#1{\global\csundef{blx@saved@lastnote@text@#1}}%
- \dolistloop\blx@saved@trackkeys@text
- \global\undef\blx@saved@trackkeys@text
- \def\do#1{\global\csundef{blx@saved@lastnote@foot@#1}}%
- \dolistloop\blx@saved@trackkeys@foot
- \global\undef\blx@saved@trackkeys@foot
- \endgroup}
-
-\def\blx@addbackref#1{%
- \ifcsdef{blx@setp@\the\c@refsection @#1}
- {\ifcase\blx@backrefsetstyle
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@ii{setp}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setp}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setp}{#1}%
- \fi}
- {\ifcsdef{blx@setc@\the\c@refsection @#1}
- {\ifcase\blx@backrefsetstyle
- \blx@addbackref@ii{setc}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setc}{#1}%
- \or
- \blx@addbackref@i{#1}%
- \or
- \blx@addbackref@i{#1}%
- \blx@addbackref@ii{setc}{#1}%
- \fi}
- {\blx@addbackref@i{#1}}}}
-
-\def\blx@addbackref@i#1{%
- \ifbacktracker
- \blx@leavevmode
- \if@filesw
- \protected@write\@mainaux{}{\string\abx@aux@backref
- {\the\c@instcount}{#1}{\the\c@refsection}%
- {\thepage}{\noexpand\the\c@page}}%
- \fi
- \fi}
-
-\def\blx@addbackref@ii#1#2{%
- \expandafter\expandafter\expandafter\forcsvlist
- \expandafter\expandafter\expandafter\blx@addbackref@i
- \expandafter\expandafter\expandafter{%
- \csname blx@#1@\the\c@refsection @#2\endcsname}}
-
-% {<instcount>}{<entrykey>}{<refsection>}{<page>}{<page int>}
-
-\protected\def\blx@aux@backref#1#2#3#4#5{%
- \ifcsundef{blx@pref@#3@\detokenize{#2}}
- {\global\cslet{blx@pref@#3@\detokenize{#2}}\@empty
- \expandafter\blx@onlypreamble\csname blx@pref@#3@\detokenize{#2}\endcsname}
- {}%
- \ifinlistcs{#4}{blx@pref@#3@\detokenize{#2}}
- {}
- {\listcsgadd{blx@pref@#3@\detokenize{#2}}{#4}}%
- \blx@addpagesum{#1}{#5}}
-
-\AtEndDocument{%
- \def\abx@aux@backref#1#2#3#4#5{\blx@addpagesum{#1}{#5}}}
-
-% {<true>}{<false>}
-
-\def\blx@ifcitesingle{%
- \ifnum\c@citetotal=\@ne
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
-
-% hyperref interface
-
-\appto\blx@mkhyperref{%
- \protected\def\blx@imc@bibhyperref{%
- \@ifnextchar[%]
- {\blx@bibhyperref}
- {\blx@bibhyperref[\abx@field@entrykey]}}%
- \ifundef\hyper@natanchorstart
- {\long\def\blx@bibhyperref[#1]#2{%
- \blx@sfsave\hyperlink{cite.\the\c@refsection @#1}{\blx@sfrest
- #2%
- \blx@sfsave}\blx@sfrest}%
- \protected\long\def\blx@imc@bibhyperlink#1#2{%
- \blx@sfsave\hyperlink{cite.\the\c@refsection:#1}{\blx@sfrest
- #2%
- \blx@sfsave}\blx@sfrest}%
- \protected\long\def\blx@imc@bibhypertarget#1#2{%
- \blx@sfsave\hypertarget{cite.\the\c@refsection:#1}{\blx@sfrest
- #2%
- \blx@sfsave}\blx@sfrest}}%
- {\long\def\blx@bibhyperref[#1]#2{%
- \blx@sfsave\hyper@natlinkstart{\the\c@refsection @#1}\blx@sfrest
- #2%
- \blx@sfsave\hyper@natlinkend\blx@sfrest}%
- \protected\long\def\blx@imc@bibhyperlink#1#2{%
- \blx@sfsave\hyper@natlinkstart{\the\c@refsection:#1}\blx@sfrest
- #2%
- \blx@sfsave\hyper@natlinkend\blx@sfrest}%
- \protected\long\def\blx@imc@bibhypertarget#1#2{%
- \blx@sfsave\hyper@natanchorstart{\the\c@refsection:#1}\blx@sfrest
- #2%
- \blx@sfsave\hyper@natanchorend\blx@sfrest}}
- \let\blx@imc@ifhyperref\@firstoftwo
- \def\blx@sf{\spacefactor}%
- \def\blx@sfsave{%
- \blx@leavevmode
- \numgdef\blx@sf{\spacefactor}}%
- \def\blx@sfrest{%
- \ifhmode\spacefactor\blx@sf\relax\fi
- \gdef\blx@sf{\spacefactor}}}
-
-\appto\blx@mknohyperref{%
- \protected\def\blx@imc@bibhyperref{\@ifnextchar[\blx@nohyperref\@firstofone}%
- \def\blx@nohyperref[#1]#2{#2}%
- \let\blx@imc@bibhyperlink\@secondoftwo
- \let\blx@imc@bibhypertarget\@secondoftwo
- \let\blx@imc@ifhyperref\@secondoftwo}
-
-\blx@regimcs{%
- \bibhyperref \bibhyperlink \bibhypertarget \ifhyperref}
-
-% {<entrykey>,...}
-
-\protected\def\nocite#{\blx@nocite}
-
-\def\blx@nocite#1{%
- \@bsphack
- \AfterPreamble{%
- \iftoggle{blx@bibliography}
- {}
- {\ifstrequal{*}{#1}
- {\blx@citation@all}
- {\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}}%
- \@esphack}
-
-\def\blx@nocite@do#1{\blx@citation{#1}\blx@msg@cundef}
-
-% {<macro>}[<arg1>][<arg2>]{<arg3>}
-% => <macro>{<arg1>}{<arg2>}{<arg3>}
-
-\protected\def\blx@citeargs#1{%
- \@ifnextchar[%]
- {\blx@citeargs@i{#1}}
- {\blx@citeargs@iii{#1{}{}}}}
-\long\def\blx@citeargs@i#1[#2]{%
- \@ifnextchar[%]
- {\blx@citeargs@ii{#1{#2}}}
- {\blx@citeargs@iii{#1{}{#2}}}}
-\long\def\blx@citeargs@ii#1[#2]{%
- \blx@citeargs@iii{#1{#2}}}
-\long\def\blx@citeargs@iii#1#2{%
- \blx@xsanitizeafter{#1}{#2}}
-
-% {<macro>}(<arg1>)(<arg2>)
-% => <macro>{<arg1>}{<arg2>}
-
-\protected\def\blx@multiargs#1{%
- \@ifnextchar(%)
- {\blx@multiargs@i{#1}}
- {#1{}{}}}
-\long\def\blx@multiargs@i#1(#2){%
- \@ifnextchar(%)
- {\blx@multiargs@ii{#1{#2}}}
- {#1{}{#2}}}
-\long\def\blx@multiargs@ii#1(#2){#1{#2}}
-
-% {<macro>}[<arg1>][<arg2>]{<arg3>}<punct>
-% => <macro>{<arg1>}{<arg2>}{<arg3>}{<punctcmd>}
-
-\protected\def\blx@citepunct#1{%
- \blx@citeargs{\blx@citepunct@i{#1}}}
-\long\def\blx@citepunct@i#1#2#3#4{%
- \blx@thecheckpunct{#1{#2}{#3}{#4}}}
-
-% {<csname>}[<arg1>][<arg2>]{arg3}[arg4]{arg5}<punct>
-% => <macro>{<arg1>}{<arg2>}{<arg3>}{<arg4>}{arg5}{<punctcmd>}
-
-\protected\def\blx@citexpunct#1{%
- \blx@citeargs{\blx@citexpunct@i{#1}}}
-\long\def\blx@citexpunct@i#1#2#3#4{%
- \@ifnextchar[%]
- {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}}
- {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}}
-\long\def\blx@citexpunct@ii#1#2[#3]#4{%
- \blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}}
-
-% {<code>}<punct> => <code>{<punctcmd>}
-
-\long\def\blx@checkpunct#1{%
- \begingroup
- \def\blx@tempa{\endgroup#1}%
- \futurelet\blx@tempb\blx@checkpunct@i}
-\def\blx@checkpunct@i{%
- \expandafter\blx@checkpunct@ii\blx@autopunct&}
-\def\blx@checkpunct@ii#1{%
- \ifx#1&%
- \expandafter\blx@checkpunct@iii
- \fi
- \ifx#1\blx@tempb
- \expandafter\blx@checkpunct@iv
- \fi
- \blx@checkpunct@ii}
-\def\blx@checkpunct@iii#1\blx@checkpunct@ii{%
- \global\undef\abx@field@postpunct
- \blx@tempa{\blx@postpunct}}
-\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2&#3{%
- \gdef\abx@field@postpunct{#3}%
- \edef\blx@tempa{%
- \expandonce\blx@tempa{%
- \ifcsdef{blx@pm@\detokenize{#3}}
- {\csname blx@imc@add\csname blx@pm@\detokenize{#3}\endcsname
- \endcsname}
- {\noexpand#3}}}%
- \blx@tempa}
-
-\long\def\blx@nocheckpunct#1{#1{}}
-
-\protected\def\blx@citeinit{%
- \iftoggle{blx@bibliography}
- {}
- {\toggletrue{blx@citation}}%
- \blx@blxinit
- \citesetup
- \blx@setsfcodes
- \blx@postpunct@agroup
- \blx@resetdata
- \blx@leavevmode
- \csuse{blx@hook@cite}%
- \csuse{blx@hook@cite@next}%
- \let\blx@citeinit\blx@resetdata}
-
-\protected\def\blx@citecmdinit{%
- \blx@leavevmode@cite
- \iftoggle{blx@bibliography}
- {}
- {\blx@initunit}}
-
-% *{<command>}[<wrapper>]{<precode>}{<loopcode>}{<delimcode>}{<postcode>}
-
-\newrobustcmd*{\DeclareCiteCommand}{%
- \@ifstar{\blx@defcitecmd*}{\blx@defcitecmd{}}}
-
-\def\blx@defcitecmd#1#2{%
- \begingroup
- \escapechar\m@ne
- \edef\blx@tempa{\endgroup
- \noexpand\blx@defcitecmd@i{#1}{\string#2}}%
- \blx@tempa}
-
-\def\blx@defcitecmd@i#1#2{%
- \blx@checkcitecmd{#2}{#1}%
- \protected\csdef{#2}{%
- \blx@citecmdinit
- \@ifstar
- {\blx@citepunct{\blxcitecmd{#2*}}}
- {\blx@citepunct{\blxcitecmd{#2}}}}%
- \@ifnextchar[%]
- {\blx@defcitecmd@iii{#2#1}}
- {\blx@defcitecmd@ii{#2#1}}}
-
-\long\def\blx@defcitecmd@ii#1{%
- \protected\csedef{blx@cite@#1}{\blxciteicmd{#1}}%
- \blx@defcitecmd@iv{#1}}
-
-\long\def\blx@defcitecmd@iii#1[#2]{%
- \protected\long\csedef{blx@cite@#1}##1##2##3##4{%
- \begingroup
- \blx@citeinit
- \unexpanded{#2}{\blxciteicmd{#1}{##1}{##2}{##3}{}}%
- ##4\endgroup}%
- \blx@defcitecmd@iv{#1}}
-
-\long\def\blx@defcitecmd@iv#1#2#3#4#5{%
- \protected\long\csdef{blx@citei@#1}##1##2##3##4{%
- \ifblank{##1}
- {}
- {\def\abx@field@prenote{##1}}%
- \ifblank{##2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{##2}}%
- \def\blx@precode{#2}%
- \def\blx@loopcode{#3}%
- \def\blx@dlimcode{#4}%
- \def\blx@postcode{#5##4}%
- \blx@citeloop{##3}%
- \endgroup}}
-
-% {<type>}{<name>}{*}
-
-\def\blx@checkcitecmd#1#2{%
- \ifblank{#2}
- {\ifcsdef{blx@cite@#1}
- {\blx@info{Redefining '\@backslashchar#1'}}
- {\ifcsundef{#1}
- {}
- {\blx@warning@noline{Redefining '\@backslashchar#1'}}}%
- \ifcsdef{blx@cite@#1*}
- {}
- {\csedef{blx@cite@#1*}{%
- \expandafter\noexpand\csname blx@cite@#1\endcsname}%
- \csedef{blx@citei@#1*}{%
- \expandafter\noexpand\csname blx@citei@#1\endcsname}}}
- {\ifcsdef{blx@cite@#1}
- {}
- {\csdef{blx@cite@#1}{\blx@err@citecmd{#1}}%
- \csdef{blx@citei@#1}{\blx@err@citecmd{#1}}}}}
-
-% {<name>}{prenote}{postnote}{citekey}{punct}
-
-\newrobustcmd*{\blxcitecmd}[1]{%
- \ifcsundef{blx@cite@#1}
- {\blx@err@citecmd{#1}}
- {\csuse{blx@cite@#1}}}
-
-\newrobustcmd*{\blxciteicmd}[1]{%
- \begingroup
- \blx@citeinit
- \ifcsundef{blx@citei@#1}
- {\blx@err@citecmd{#1}}
- {\csuse{blx@citei@#1}}}
-
-% {<multicitecount>}{<name>}{prenote}{postnote}{citekey}{punct}
-
-\protected\def\blxmciteicmd#1{%
- \c@multicitecount#1\relax
- \blxciteicmd}
-
-% {<multicitetotal>}{<multiprenote>}{<multipostnote>}
-
-\protected\def\blxmcites#1#2#3{%
- \begingroup
- \blx@citeinit
- \c@multicitecount\z@
- \c@multicitetotal#1\relax
- \ifnum\c@multicitetotal>\@ne
- \let\blx@ifcitesingle\@secondoftwo
- \fi
- \csuse{blx@hook@mcite}%
- \csuse{blx@hook@mcite@next}%
- \ifblank{#2}%
- {}
- {\def\abx@field@multiprenote{#2}}%
- \ifblank{#3}%
- {}
- {\def\abx@field@multipostnote{#3}}%
- \usebibmacro{multiprenote}}
-
-\protected\def\blxendmcites{%
- \usebibmacro{multipostnote}%
- \endgroup}
-
-% {<command>}[<wrapper>]{<cite>}{<delimiter>}
-
-\newrobustcmd{\DeclareMultiCiteCommand}[1]{%
- \ifundef#1%
- {}
- {\blx@info{Redefining '\string#1'}}%
- \@ifnextchar[%]
- {\blx@defmcitecmd{#1}}
- {\blx@defmcitecmd{#1}[\@firstofone]}}
-
-\def\blx@defmcitecmd#1[#2]#3#4{%
- \begingroup
- \escapechar\m@ne
- \edef\blx@tempa{\endgroup
- \protected\def\noexpand#1{%
- \blx@citecmdinit
- \noexpand\@ifstar
- {\expandafter\noexpand
- \csname blx@mcite@\string#1\endcsname*%
- \expandafter\noexpand
- \csname blx@mcitei@\string#1\endcsname}
- {\expandafter\noexpand
- \csname blx@mcite@\string#1\endcsname{}%
- \expandafter\noexpand
- \csname blx@mcitei@\string#1\endcsname}}%
- \protected\csdef{blx@mcite@\string#1}####1####2{%
- \begingroup
- \blx@citeinit
- \noexpand\blx@multicite
- ####2%
- {\unexpanded{#2}}%
- {\string#3####1}%
- {\unexpanded{#4}}}%
- \protected\long\csdef{blx@mcitei@\string#1}}%
- \blx@tempa##1##2##3{##1{##2}##3\endgroup}}
-
-% {<command>}{<wrapper>}{<citecmd>}{<delimiter>} =>
-% <init><command>{<wrapper>}{<cites>}{<punct>}
-
-\def\blx@multicite#1#2#3#4{%
- \begingroup
- \csuse{blx@hook@mcite@before}%
- \def\blx@tempa{#1}%
- \def\blx@tempb{#2}%
- \def\blx@tempc{#3}%
- \def\blx@tempd{#4}%
- \c@multicitetotal\z@
- \blx@multiargs\blx@multicite@i}
-
-\def\blx@multicite@i#1#2{%
- \ifblank{#1}%
- {\let\abx@field@multiprenote\@empty}%
- {\def\abx@field@multiprenote{#1}}%
- \ifblank{#2}%
- {\let\abx@field@multipostnote\@empty}%
- {\def\abx@field@multipostnote{#2}}%
- \let\blx@tempe\@empty
- \let\blx@tempf\@empty
- \togglefalse{blx@tempa}%
- \blx@multiparse}
-
-\def\blx@multicite@add#1#2#3{%
- \togglefalse{blx@tempa}%
- \advance\c@multicitetotal\@ne
- \eappto\blx@tempe{%
- \expandonce\blx@tempf
- \blxmciteicmd{\the\c@multicitetotal}%
- {\expandonce\blx@tempc}\unexpanded{{#1}{#2}{#3}}{}}%
- \let\blx@tempf\blx@tempd
- \blx@multiparse}
-
-\def\blx@multicite@end#1{%
- \edef\blx@tempa{\endgroup
- \expandonce\blx@tempa
- {\expandonce\blx@tempb}%
- {\blxmcites
- {\the\c@multicitetotal}%
- {\expandonce\abx@field@multiprenote}%
- {\expandonce\abx@field@multipostnote}%
- \expandonce\blx@tempe
- \blxendmcites}%
- {#1}%
- \iftoggle{blx@tempa}{\relax\space}{}}%
- \blx@tempa}
-
-\def\blx@multiparse{%
- \futurelet\@let@token\blx@multiparse@i}
-
-\def\blx@multiparse@i{%
- \ifx\@let@token\relax
- \blx@multiparse@ii{\blx@multicite@end{}}%
- \fi
- \ifx\@let@token[%]
- \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}%
- \fi
- \ifx\@let@token\bgroup
- \blx@multiparse@ii{\blx@citeargs\blx@multicite@add}%
- \fi
- \ifx\@let@token\@sptoken
- \blx@multiparse@ii\blx@multiparse@iii
- \fi
- \iftrue
- \iftoggle{blx@tempa}
- {\blx@multiparse@ii{\blx@multicite@end{}}}
- {\blx@multiparse@ii{\blx@thecheckpunct\blx@multicite@end}}%
- \fi
- &}
-
-\def\blx@multiparse@ii#1#2&{\fi#1}
-\csdef{blx@multiparse@iii} {\toggletrue{blx@tempa}\blx@multiparse}
-
-% {<name>}[l|i|r]{<cite>}{<multicite>}
-
-\newrobustcmd*{\DeclareAutoCiteCommand}[1]{%
- \ifcsundef{blx@acite@#1}
- {}
- {\blx@info{Redefining autocite command '#1'}}%
- \@ifnextchar[%]
- {\blx@defautocmd@i{#1}}
- {\blx@defautocmd@i{#1}[r]}}
-
-\def\blx@defautocmd@i#1[#2]#3#4{%
- \begingroup
- \escapechar\m@ne
- \edef\blx@tempa{\endgroup
- \noexpand\blx@defautocmd@ii{#1}{#2}%
- {\string#3}{\string#4}}%
- \blx@tempa}
-
-\def\blx@defautocmd@ii#1#2#3#4{%
- \protected\csedef{blx@acite@#1}{%
- \blx@citecmdinit
- \noexpand\@ifstar
- {\blx@citepunct{\expandafter\noexpand
- \csname blx@acitei@#1\endcsname*}}
- {\blx@citepunct{\expandafter\noexpand
- \csname blx@acitei@#1\endcsname{}}}}%
- \protected\csedef{blx@acitei@#1}##1##2##3##4##5{%
- \begingroup
- \blx@citeinit
- \if l#2\noexpand\unspace##5\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##5}\fi
- \blxcitecmd{#3##1}{##2}{##3}{##4}{}%
- \if r#2##5\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{##5}{}\fi
- \endgroup}%
- \protected\csedef{blx@macite@#1}{%
- \blx@citecmdinit
- \noexpand\@ifstar
- {\expandafter\noexpand
- \csname blx@mcite@#4\endcsname*%
- \expandafter\noexpand
- \csname blx@macitei@#1\endcsname}
- {\expandafter\noexpand
- \csname blx@mcite@#4\endcsname{}%
- \expandafter\noexpand
- \csname blx@macitei@#1\endcsname}}%
- \protected\csedef{blx@macitei@#1}##1##2##3{%
- \if l#2\noexpand\unspace##3\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{}{\unspace##3}\fi
- ##1{##2}%
- \if r#2##3\fi
- \if f#2\noexpand\iftoggle{blx@footnote}{##3}{}\fi
- \endgroup}}
-
-% {<characters>}
-
-\newrobustcmd*{\DeclareAutoPunctuation}[1]{%
- \ifblank{#1}
- {\let\blx@thecheckpunct\blx@nocheckpunct}
- {\let\blx@thecheckpunct\blx@checkpunct
- \def\blx@autopunct{#1}}}
-
-\AfterEndPreamble{% babel
- \begingroup
- \makeatletter
- \endlinechar\m@ne
- \scantokens\expandafter{%
- \expandafter\gdef
- \expandafter\blx@autopunct
- \expandafter{\blx@autopunct}}%
- \endgroup}
-
-% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<namelist>}<punct>
-
-\newrobustcmd*{\citename}{\blx@citexpunct{citename}}
-\long\csdef{blx@cite@citename}#1#2#3#4#5#6{%
- \begingroup
- \blx@citecmdinit
- \blx@citeinit
- \ifblank{#1}
- {}
- {\def\abx@field@prenote{#1}}%
- \ifblank{#2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{#2}}%
- \def\blx@precode{\usebibmacro{prenote}}%
- \def\blx@loopcode{%
- \ifnameundef{#5}
- {\blx@warning@entry{'#5' undefined or not a name list}%
- \abx@missing{#5}}
- {\printnames[#4]{#5}}}%
- \def\blx@dlimcode{\multicitedelim}%
- \ifblank{#2}
- {\def\blx@postcode{#6}}
- {\def\blx@postcode{\usebibmacro{postnote}#6}}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \blx@citeloop{#3}%
- \endgroup}
-
-% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<list>}<punct>
-
-\newrobustcmd*{\citelist}{\blx@citexpunct{citelist}}
-\long\csdef{blx@cite@citelist}#1#2#3#4#5#6{%
- \begingroup
- \blx@citecmdinit
- \blx@citeinit
- \ifblank{#1}
- {}
- {\def\abx@field@prenote{#1}}%
- \ifblank{#2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{#2}}%
- \def\blx@precode{\usebibmacro{prenote}}%
- \def\blx@loopcode{%
- \iflistundef{#5}
- {\blx@warning@entry{'#5' undefined or not a literal list}%
- \abx@missing{#5}}
- {\printlist[#4]{#5}}}%
- \def\blx@dlimcode{\multicitedelim}%
- \ifblank{#2}
- {\def\blx@postcode{#6}}
- {\def\blx@postcode{\usebibmacro{postnote}#6}}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \blx@citeloop{#3}%
- \endgroup}
-
-% [<prenote>][<postnote>]{<entrykey>,...}[<format>]{<field>}<punct>
-
-\newrobustcmd*{\citefield}{\blx@citexpunct{citefield}}
-\long\csdef{blx@cite@citefield}#1#2#3#4#5#6{%
- \begingroup
- \blx@citecmdinit
- \blx@citeinit
- \ifblank{#1}
- {}
- {\def\abx@field@prenote{#1}}%
- \ifblank{#2}
- {\let\blx@thenotecheck\relax}
- {\def\abx@field@postnote{#2}}%
- \def\blx@precode{\usebibmacro{prenote}}%
- \def\blx@loopcode{%
- \iffieldundef{#5}
- {\blx@warning@entry{'#5' undefined or not a field}%
- \abx@missing{#5}}
- {\printfield[#4]{#5}}}%
- \def\blx@dlimcode{\multicitedelim}%
- \ifblank{#2}
- {\def\blx@postcode{#6}}
- {\def\blx@postcode{\usebibmacro{postnote}#6}}%
- \boolfalse{citetracker}%
- \boolfalse{pagetracker}%
- \blx@citeloop{#3}%
- \endgroup}
-
-\renewrobustcmd*{\cite}{\blx@err@citecmd\cite}
-\let\blx@cite@cite\relax
-\newrobustcmd*{\parencite}{\blx@warn@citecmd\parencite\cite}
-\let\blx@cite@parencite\relax
-\newrobustcmd*{\footcite}{\blx@warn@citecmd\footcite\cite}
-\let\blx@cite@footcite\relax
-\newrobustcmd*{\footcitetext}{\blx@warn@citecmd\footcitetext\cite}
-\let\blx@cite@footcitetext\relax
-\newrobustcmd*{\smartcite}{\blx@warn@citecmd\smartcite\cite}
-\let\blx@cite@smartcite\relax
-\newrobustcmd*{\textcite}{\blx@warn@citecmd\textcite\cite}
-\let\blx@cite@textcite\relax
-\newrobustcmd*{\supercite}{\blx@warn@citecmd\supercite\cite}
-\let\blx@cite@supercite\relax
-
-%% ifthen interface
-
-\def\blx@TE#1#2{%
- \TE@throw
- \unexpanded{%
- \iftrue\@nameuse{fi}%
- #1{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2}
-
-\def\blx@xTE#1#2{%
- \TE@throw
- \unexpanded{\iftrue\@nameuse{fi}}%
- #1\unexpanded{{\@nameuse{iftrue}}{\@nameuse{iffalse}}}#2}
-
-\let\blx@TE@hook\@empty
-
-\appto\blx@blxinit{%
- \appto\blx@TE@hook{%
- \def\ifhyperref{\blx@TE\blx@imc@ifhyperref}%
- \def\ifmorenames{\blx@TE\blx@imc@ifmorenames}%
- \def\ifmoreitems{\blx@TE\blx@imc@ifmoreitems}%
- \def\iffirstcitekey{\blx@TE\blx@imc@iffirstcitekey}%
- \def\iflastcitekey{\blx@TE\blx@imc@iflastcitekey}%
- \def\ifciteseen{\blx@TE\blx@imc@ifciteseen}%
- \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}%
- \def\ifentryinbib{\blx@TE\blx@imc@ifentryinbib}%
- \def\ifciteibid{\blx@TE\blx@imc@ifciteibid}%
- \def\ifciteidem{\blx@TE\blx@imc@ifciteidem}%
- \def\ifopcit{\blx@TE\blx@imc@ifopcit}%
- \def\ifloccit{\blx@TE\blx@imc@ifloccit}%
- \def\ifsamepage{\blx@TE\blx@imc@ifsamepage}%
- \def\iffirstonpage{\blx@TE\blx@imc@iffirstonpage}%
- \def\ifcurrentfield#1{\blx@TE{\blx@imc@ifcurrentfield{#1}}}%
- \def\ifcurrentlist#1{\blx@TE{\blx@imc@ifcurrentlist{#1}}}%
- \def\ifcurrentname#1{\blx@TE{\blx@imc@ifcurrentname{#1}}}%
- \def\ifentrytype#1{\blx@TE{\blx@imc@ifentrytype{#1}}}%
- \def\iffieldequalcs#1#2{\blx@TE{\blx@imc@iffieldequalcs{#1}{#2}}}%
- \def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}%
- \def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}%
- \def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}%
- \def\ifbibmacroundef#1{\blx@TE{\blx@imc@ifbibmacroundef{#1}}}%
- \def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}%
- \def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}%
- \def\ifnameequals#1#2{\blx@TE{\blx@imc@ifnameequals{#1}{#2}}}%
- \def\ifnamesequal#1#2{\blx@TE{\blx@imc@ifnamesequal{#1}{#2}}}%
- \def\ifnameundef#1{\blx@TE{\blx@imc@ifnameundef{#1}}}%
- \def\ifcategory#1{\blx@TE{\blx@imc@ifcategory{#1}}}%
- \def\ifkeyword#1{\blx@TE{\blx@imc@ifkeyword{#1}}}%
- \def\ifentrycategory#1#2{\blx@TE{\blx@imc@ifentrycategory{#1}{#2}}}%
- \def\ifentrykeyword#1#2{\blx@TE{\blx@imc@ifentrykeyword{#1}{#2}}}%
- \def\ifcapital{\blx@TE\blx@imc@ifcapital}%
- \def\ifinteger#1{\blx@TE{\blx@imc@ifinteger{#1}}}%
- \def\iffieldint#1{\blx@TE{\blx@imc@iffieldint{#1}}}%
- \def\ifnumeral#1{\blx@TE{\blx@imc@ifnumeral{#1}}}%
- \def\ifnumerals#1{\blx@TE{\blx@imc@ifnumerals{#1}}}%
- \def\ifpages#1{\blx@TE{\blx@imc@ifpages{#1}}}%
- \def\iffieldnum#1{\blx@TE{\blx@imc@iffieldnum{#1}}}%
- \def\iffieldnums#1{\blx@TE{\blx@imc@iffieldnums{#1}}}%
- \def\iffieldpages#1{\blx@TE{\blx@imc@iffieldpages{#1}}}%
- \def\ifbibstring#1{\blx@TE{\blx@imc@ifbibstring{#1}}}%
- \def\iffieldbibstring#1{\blx@TE{\blx@imc@iffieldbibstring{#1}}}%
- \def\ifnatbibmode{\blx@TE{\iftoggle{blx@natbib}}}%
- \def\ifcitation{\blx@TE{\iftoggle{blx@citation}}}%
- \def\ifbibliography{\blx@TE{\iftoggle{blx@bibliography}}}%
- \def\ifciteindex{\blx@TE{\iftoggle{blx@citeindex}}}%
- \def\ifbibindex{\blx@TE{\iftoggle{blx@bibindex}}}%
- \def\iffootnote{\blx@TE{\iftoggle{blx@footnote}}}%
- \def\ifuseprefix{\blx@TE{\iftoggle{blx@useprefix}}}%
- \def\ifuseauthor{\blx@TE{\iftoggle{blx@useauthor}}}%
- \def\ifuseeditor{\blx@TE{\iftoggle{blx@useeditor}}}%
- \def\ifusetranslator{\blx@TE{\iftoggle{blx@usetranslator}}}%
- \def\ifterseinits{\blx@TE{\iftoggle{blx@terseinits}}}%
- \def\iffirstinits{\blx@TE{\iftoggle{blx@giveninits}}}% legacy alias for \ifgiveninits
- \def\ifgiveninits{\blx@TE{\iftoggle{blx@giveninits}}}%
- \def\ifsingletitle{\blx@TE{\iftoggle{abx@bool@singletitle}}}%
- \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}}
-
-% {<listmacro>}{<filtercsname>} => matches in <listmacro>
-
-\protected\def\blx@bibfilter#1#2{%
- \begingroup
- \edef\blx@do##1{%
- \def\noexpand\blx@flt@item{##1}%
- \ifboolexpr{\csexpandonce{#2}}%
- {\listadd\noexpand\blx@tempa{##1}}%
- {}}%
- \let\blx@done\relax
- \edef\blx@tempa{%
- \let\noexpand\blx@tempa\noexpand\@empty
- \blx@listloop{#1}}%
- \blx@tempa
- \edef\blx@tempa{\endgroup
- \def\noexpand#1{\blx@tempa}}%
- \blx@tempa}
-
-%% Auxiliary macros
-
-\newrobustcmd*{\mkbibquote}{\enquote}
-\protected\def\blx@imc@mkbibquote{%
- \blx@ifuspunct\blx@usquote\enquote}
-
-\def\blx@usquote{%
- \ifnum\@quotelevel>\z@
- \expandafter\blx@usiquote
- \else
- \expandafter\blx@usoquote
- \fi}
-
-\long\def\blx@usoquote#1{%
- \begingroup
- \initoquote
- \textooquote#1%
- \futurelet\@let@token\blx@usoquote@i}
-
-\def\blx@usoquote@i{%
- \blx@usqcheck
- {\ifx\blx@postpunct\@empty\else\blx@dopostpunct\fi
- \textcoquote\endgroup}
- {\blx@setpostpunct\textcoquote\endgroup}}
-
-\long\def\blx@usiquote#1{%
- \begingroup
- \initiquote
- \textoiquote#1%
- \futurelet\@let@token\blx@usiquote@i}
-
-\def\blx@usiquote@i{%
- \blx@usqcheck
- {\textciquote\endgroup}
- {\blx@setpostpunct\textciquote\endgroup}}
-
-\long\def\blx@usqcheck#1#2{%
- \def\blx@tempa{#1}%
- \def\blx@tempb{#2}%
- \ifx\@let@token\space
- \blx@usqcheck@i\blx@tempa
- \fi
- \ifx\@let@token\@sptoken
- \blx@usqcheck@i\blx@tempa
- \fi
- \if\noexpand\@let@token\relax
- \expandafter\blx@usqcheck@iv
- \fi
- \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&}
-
-\long\def\blx@usqcheck@i#1#2&{\fi#1}
-
-\long\def\blx@usqcheck@ii#1{%
- \if\noexpand#1\relax
- \blx@usqcheck@i\blx@tempa
- \fi
- \if\noexpand#1\noexpand\@let@token
- \blx@usqcheck@i{\blx@usqcheck@iii\blx@tempa}%
- \fi
- \blx@usqcheck@ii
-}
-
-\long\def\blx@usqcheck@iii#1#2{#2#1}
-
-\long\def\blx@usqcheck@iv#1&#2{%
- \begingroup
- \escapechar=-1 %
- \edef\blx@tempa{\expandafter\@gobble\string#2}%
- \expandafter\endgroup
- \ifx\blx@tempa\@empty
- \else
- \blx@usqcheck@i\blx@tempb
- \fi
- #1&#2%
-}
-
-\def\blx@usqcheck@iii#1#2{#2#1}
-
-\newrobustcmd*{\mkbibemph}{\emph}
-\protected\long\def\blx@imc@mkbibemph#1{%
- \emph{#1}\blx@imc@setpunctfont\emph}
-
-\newrobustcmd*{\mkbibbold}{\textbf}
-\protected\long\def\blx@imc@mkbibbold#1{%
- \textbf{#1}\blx@imc@setpunctfont\textbf}
-
-\newrobustcmd*{\mkbibitalic}{\textit}
-\protected\long\def\blx@imc@mkbibitalic#1{%
- \textit{#1}\blx@imc@setpunctfont\textit}
-
-\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold \mkbibitalic}
-
-\newcommand*{\bibleftparen}{\blx@postpunct(}
-\newcommand*{\bibrightparen}{\blx@postpunct)\midsentence}
-\newcommand*{\bibleftbracket}{\blx@postpunct[}
-\newcommand*{\bibrightbracket}{\blx@postpunct]\midsentence}
-
-\def\blx@parenlevel{%
- \iftoggle{blx@footnote}
- {\blx@parenlevel@foot}
- {\blx@parenlevel@text}}
-
-\newrobustcmd*{\blx@bibopenparen}{%
- \blx@opencheck\bibopenparen
- \blx@postpunct
- \ifnum\blx@parenlevel=\z@
- \global\blx@parenlevel\@ne
- \global\c@parenlevel\@ne
- \expandafter\bibleftparen
- \else
- \expandafter\blx@openparen
- \fi}
-
-\newrobustcmd*{\blx@bibopenbracket}{%
- \blx@opencheck\bibopenbracket
- \blx@postpunct
- \ifnum\blx@parenlevel=\z@
- \global\blx@parenlevel1002
- \global\c@parenlevel\@ne
- \expandafter\bibleftbracket
- \else
- \expandafter\blx@openparen
- \fi}
-
-\newrobustcmd*{\blx@bibcloseparen}{%
- \blx@closecheck\bibcloseparen
- \blx@postpunct\blx@closeparen}
-
-\newrobustcmd*{\blx@bibclosebracket}{%
- \blx@closecheck\bibclosebracket
- \blx@postpunct\blx@closeparen}
-
-\def\blx@openparen{%
- \ifodd\blx@parenlevel
- \global\advance\blx@parenlevel\@ne
- \global\advance\c@parenlevel\@ne
- \expandafter\bibleftbracket
- \else
- \global\advance\blx@parenlevel\@ne
- \global\advance\c@parenlevel\@ne
- \expandafter\bibleftparen
- \fi}
-
-\def\blx@closeparen{%
- \ifodd\blx@parenlevel
- \blx@closeparen@i
- \expandafter\bibrightparen
- \else
- \blx@closeparen@i
- \expandafter\bibrightbracket
- \fi}
-
-\def\blx@closeparen@i{%
- \ifnum\blx@parenlevel=1002
- \global\blx@parenlevel\z@
- \global\c@parenlevel\z@
- \else
- \global\advance\blx@parenlevel\m@ne
- \global\advance\c@parenlevel\m@ne
- \fi}
-
-\def\blx@opencheck#1{%
- \ifnum\numexpr\blx@parenlevel+\@ne
- \ifnum\blx@parenlevel>\@m -1001\fi
- >\c@maxparens
- \blx@err@nestparen{\string#1}%
- \blx@errormark
- \fi}
-
-\def\blx@closecheck#1{%
- \ifnum\numexpr\blx@parenlevel
- \ifnum\blx@parenlevel>\@m -1001\fi
- >\c@maxparens
- \blx@err@nestparen{\string#1}%
- \blx@errormark
- \fi
- \ifnum\blx@parenlevel<\@ne
- \blx@err@matchparen{Unmatched \string#1}%
- \blx@errormark
- \fi}
-
-\protected\def\blx@errormark{%
- \rule[0.25ex]{1.25ex}{1.25ex}}
-
-\AtEndDocument{%
- \unless\ifnum\blx@parenlevel@text=\z@
- \blx@err@matchparen{%
- Unbalanced parentheses or brackets in the document body}%
- \fi
- \unless\ifnum\blx@parenlevel@foot=\z@
- \blx@err@matchparen{%
- Unbalanced parentheses or brackets in a foot or endnote}%
- \fi}
-
-\newrobustcmd{\mkbibparens}[1]{%
- \begingroup
- \blx@blxinit
- \blx@setsfcodes
- \bibopenparen#1\bibcloseparen
- \endgroup}
-
-\newrobustcmd{\mkbibbrackets}[1]{%
- \begingroup
- \blx@blxinit
- \blx@setsfcodes
- \bibopenbracket#1\bibclosebracket
- \endgroup}
-
-\newrobustcmd*{\parentext}{\mkbibparens}
-\newrobustcmd*{\brackettext}{\mkbibbrackets}
-
-\newrobustcmd{\mkbibsuperscript}[1]{%
- \unspace\allowhyphens\textsuperscript{%
- \begingroup
- \protected\long\def\mkbibsuperscript##1{%
- \blx@warning{Nested superscript}%
- \mkbibbrackets{##1}}%
- #1\endgroup}}
-
-\newrobustcmd{\mkbibfootnote}{\blx@mkbibfootnote{}}
-\newrobustcmd{\mkbibfootnotetext}{\blx@mkbibfootnote{text}}
-\newrobustcmd{\blx@mkbibfootnote}[2]{%
- \iftoggle{blx@footnote}
- {\blx@warning{Nested notes}%
- \addspace\mkbibparens{#2}}
- {\unspace
- \ifnum\blx@notetype=\tw@
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}
- {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}}}
-
-\newrobustcmd{\mkbibendnote}{\blx@mkbibendnote{}}
-\newrobustcmd{\mkbibendnotetext}{\blx@mkbibendnote{text}}
-\newrobustcmd{\blx@mkbibendnote}[2]{%
- \iftoggle{blx@footnote}
- {\blx@warning{Nested notes}%
- \addspace\mkbibparens{#2}}
- {\unspace
- \ifnum\blx@notetype=\@ne
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {\csuse{footnote#1}{\protecting{\blxmkbibnote{foot}{#2}}}}
- {\csuse{blx@theendnote#1}{\protecting{\blxmkbibnote{end}{#2}}}}}}
-
-\newrobustcmd{\blxmkbibnote}[2]{%
- \begingroup
- \blx@blxinit
- \blx@setsfcodes
- \blx@postpunct@agroup
- \toggletrue{blx@footnote}%
- \csuse{bib#1notewrapper}{#2}%
- \endgroup}
-
-\newcommand{\bibfootnotewrapper}[1]{%
- \bibsentence#1\addperiod}
-
-\newcommand{\bibendnotewrapper}[1]{%
- \bibsentence#1\addperiod}
-
-\AtEndPreamble{%
- \def\blx@theendnote{\blx@err@endnote\footnote}%
- \def\blx@theendnotetext{\blx@err@endnote\footnotetext}%
- \ifdef\endnote
- {\def\blx@theendnote{\endnote}%
- \ifdef\endnotetext
- {\def\blx@theendnotetext{\endnotetext}}
- {}}
- {\ifdef\pagenote
- {\def\blx@theendnote{\pagenote}%
- \ifdef\pagenotetext
- {\def\blx@theendnotetext{\pagenotetext}}
- {}}
- {}}}
-
-\newrobustcmd*{\mknumalph}[1]{%
- \begingroup
- \blx@tempcnta=#1\relax
- \ifnum\blx@tempcnta>702 %
- \else
- \ifnum\blx@tempcnta>26 %
- \advance\blx@tempcnta\m@ne
- \divide\blx@tempcnta26\relax
- \blx@numalph\blx@tempcnta
- \multiply\blx@tempcnta26\relax
- \blx@tempcnta=\numexpr#1-\blx@tempcnta\relax
- \fi
- \fi
- \blx@numalph\blx@tempcnta
- \endgroup}
-\def\blx@numalph#1{%
- \ifcase#1\relax\blx@warning@entry{Value out of range}\number#1\or
- a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or
- n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else
- \blx@warning@entry{Value out of range}\number#1\fi}
-
-% {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}}
-
-\newrobustcmd*{\volcitecmd}{%
- \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
- \begingroup\let\blx@citeargs\blx@volciteargs}
-
-\protected\def\blx@volciteargs#1{%
- \endgroup
- \@ifnextchar[%]
- {\blx@volciteargs@i{#1}}
- {\blx@volciteargs@i{#1}[]}}
-
-\long\def\blx@volciteargs@i#1[#2]#3{%
- \@ifnextchar[%]
- {\blx@volciteargs@ii{#1}{#2}{#3}}
- {\blx@citeargs@iii{#1{#2}{{#3}{}}}}}
-
-\long\def\blx@volciteargs@ii#1#2#3[#4]{%
- \blx@citeargs@iii{#1{#2}{{#3}{#4}}}}
-
-\newrobustcmd*{\multivolcitecmd}{%
- \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
- \def\blx@hook@mcite@before{%
- \global\undef\blx@hook@mcite@before
- \let\blx@citeargs\blx@volmciteargs}}
-
-\protected\def\blx@volmciteargs#1{%
- \@ifnextchar[%]
- {\blx@volciteargs@i{#1}}
- {\blx@volciteargs@i{#1}[]}}
-
-%% Control file
-
-\begingroup
-\let~\space
-\@makeother\<
-\@makeother\>
-\@makeother\.
-\@makeother\:
-\@makeother\?
-\@makeother\"
-\@makeother\-
-\@makeother\=
-\@makeother\/
-\xdef\blx@xml@file{%
- \blx@sig@bcf\blx@nl
- \blx@ver@bcf\blx@nl}
-\xdef\blx@xml@endfile{%
- \blx@nl</bcf:controlfile>}
-\xdef\blx@xml@comment#1{%
- ~~<!-- #1 -->\blx@nl}
-\xdef\blx@xml@options#1#2#3{%
- ~~<bcf:options%
- \noexpand\ifblank{#1}{}{ component="#1"}%
- \noexpand\ifblank{#2}{}{ type="#2"}%
- >\blx@nl
- #3%
- ~~</bcf:options>\blx@nl}
-\xdef\blx@xml@option#1#2{%
- ~~~~<bcf:option type="#1">\blx@nl
- #2%
- ~~~~</bcf:option>\blx@nl}
-\xdef\blx@xml@ordered#1#2{%
- ~~~~~~<bcf:value order="#1">#2</bcf:value>\blx@nl}
-
-\xdef\blx@xml@displaymodes#1#2{%
- ~~<bcf:displaymodes type="#1">\blx@nl
- #2%
- ~~</bcf:displaymodes>\blx@nl}
-\xdef\blx@xml@displaymode#1{%
- ~~~~<bcf:displaymode>\blx@nl
- #1%
- ~~~~</bcf:displaymode>\blx@nl}
-\xdef\blx@xml@dtarget#1{%
- ~~~~~~<bcf:dtarget>#1</bcf:dtarget>\blx@nl}
-\xdef\blx@xml@dmode#1#2{%
- ~~~~~~<bcf:dmode order="#1">#2</bcf:dmode>\blx@nl}
-
-\xdef\blx@xml@inheritance#1{%
- ~~<bcf:inheritance>\blx@nl
- #1%
- ~~</bcf:inheritance>\blx@nl}
-\xdef\blx@xml@inherit@defaults#1#2{%
- ~~~~<bcf:defaults#1>\blx@nl
- #2%
- ~~~~</bcf:defaults>\blx@nl}
-\xdef\blx@xml@inherit@data#1{%
- ~~~~<bcf:inherit>\blx@nl
- #1%
- ~~~~</bcf:inherit>\blx@nl}
-\xdef\blx@xml@inherit@type#1#2#3{%
- ~~~~~~<bcf:type\string_pair source="#1" target="#2"#3/>\blx@nl}
-\xdef\blx@xml@inherit@field#1#2#3{%
- ~~~~~~<bcf:field source="#1" target="#2"#3/>\blx@nl}
-\xdef\blx@xml@inherit@block#1{%
- ~~~~~~<bcf:field source="#1" skip="true"/>\blx@nl}
-
-\xdef\blx@xml@sorting#1{%
- ~~<bcf:sorting>\blx@nl
- #1%
- ~~</bcf:sorting>\blx@nl}
-\xdef\blx@xml@presort#1#2{%
- ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>%
- #2</bcf:presort>\blx@nl}
-
-\xdef\blx@xml@sortexclude#1#2{%
- ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl
- #2%
- ~~~~</bcf:sortexclusion>\blx@nl}
-\xdef\blx@xml@exclude#1{%
- ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl}
-\xdef\blx@xml@sort#1#2{%
- ~~~~<bcf:sort #1>\blx@nl
- #2%
- ~~~~</bcf:sort>\blx@nl}
-\xdef\blx@xml@sortitem#1#2{%
- ~~~~~~<bcf:sortitem #1>#2</bcf:sortitem>\blx@nl}
-\xdef\blx@xml@section#1{%
- ~~<bcf:section number="#1">}
-\xdef\blx@xml@endsection{%
- ~~</bcf:section>}
-\xdef\blx@xml@bibdata#1#2{%
- ~~<bcf:bibdata section="#1">\blx@nl
- #2%
- ~~</bcf:bibdata>\blx@nl}
-\xdef\blx@xml@datasource#1#2#3{%
- ~~~~<bcf:datasource type="#1" datatype="#2">#3</bcf:datasource>\blx@nl}
-\xdef\blx@xml@citekey#1{%
- ~~~~<bcf:citekey>#1</bcf:citekey>}
-\xdef\blx@xml@citeset#1#2{%
- ~~~~<bcf:citekey type="set" members="#2">#1</bcf:citekey>}
-\xdef\blx@xml@svalue#1#2{%
- \blx@xml@option{singlevalued}{%
- ~~~~~~<bcf:key>#1</bcf:key>\blx@nl
- ~~~~~~<bcf:value>#2</bcf:value>\blx@nl}}
-\xdef\blx@xml@mvalue#1#2{%
- \blx@xml@option{multivalued}{%
- ~~~~~~<bcf:key>#1</bcf:key>\blx@nl
- #2}}
-\xdef\blx@xml@toggle#1{%
- \blx@xml@svalue{#1}{\noexpand\iftoggle{blx@#1}{1}{0}}}
-\endgroup
-
-\def\blx@bcf@options@global{%
- \blx@xml@comment{global}%
- \blx@xml@options{biblatex}{global}{%
- \blx@xml@svalue{alphaothers}{\labelalphaothers}%
- \blx@xml@toggle{labelalpha}%
- \blx@xml@mvalue{labelnamespec}{\blx@bcf@labelnamespec}%
- \blx@xml@toggle{labeldate}%
- \blx@xml@mvalue{labeldatespec}{\blx@bcf@labeldatespec}%
- \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}%
- \blx@xml@svalue{maxbibnames}{\blx@maxbibnames}%
- \blx@xml@svalue{maxcitenames}{\blx@maxcitenames}%
- \blx@xml@svalue{maxitems}{\blx@maxitems}%
- \blx@xml@svalue{minalphanames}{\blx@minalphanames}%
- \blx@xml@svalue{minbibnames}{\blx@minbibnames}%
- \blx@xml@svalue{mincitenames}{\blx@mincitenames}%
- \blx@xml@svalue{minitems}{\blx@minitems}%
- \blx@xml@toggle{singletitle}%
- \blx@xml@svalue{sortalphaothers}{\sortalphaothers}%
- \blx@xml@svalue{sortlos}{\blx@sortlos}%
- \blx@xml@svalue{uniquelist}{\blx@uniquelist}%
- \blx@xml@svalue{uniquename}{\blx@uniquename}%
- \blx@xml@toggle{useauthor}%
- \blx@xml@toggle{useeditor}%
- \blx@xml@toggle{useprefix}%
- \blx@xml@toggle{usetranslator}%
- }%
-}
-
-\def\blx@bcf@options@type#1{%
- \blx@xml@comment{#1}%
- \blx@xml@options{biblatex}{#1}{%
- \blx@xml@toggle{labelalpha}%
- \blx@xml@mvalue{labelnamespec}{%
- \ifcsdef{blx@bcf@labelnamespec@#1}
- {\csuse{blx@bcf@labelnamespec@#1}}
- {\blx@bcf@labelnamespec}}%
- \blx@xml@toggle{labeldate}%
- \blx@xml@mvalue{labeldatespec}{%
- \ifcsdef{blx@bcf@labeldatespec@#1}
- {\csuse{blx@bcf@labeldatespec@#1}}
- {\blx@bcf@labeldatespec}}%
- \blx@xml@svalue{maxalphanames}{\blx@maxalphanames}%
- \blx@xml@svalue{maxbibnames}{\blx@maxbibnames@type}%
- \blx@xml@svalue{maxcitenames}{\blx@maxcitenames@type}%
- \blx@xml@svalue{maxitems}{\blx@maxitems@type}%
- \blx@xml@svalue{minalphanames}{\blx@minalphanames}%
- \blx@xml@svalue{minbibnames}{\blx@minbibnames@type}%
- \blx@xml@svalue{mincitenames}{\blx@mincitenames@type}%
- \blx@xml@svalue{minitems}{\blx@minitems@type}%
- \blx@xml@toggle{singletitle}%
- \blx@xml@toggle{skipbib}%
- \blx@xml@toggle{skiplab}%
- \blx@xml@toggle{skiplos}%
- \blx@xml@svalue{uniquelist}{\blx@uniquelist}%
- \blx@xml@svalue{uniquename}{\blx@uniquename}%
- \blx@xml@toggle{useauthor}%
- \blx@xml@toggle{useeditor}%
- \blx@xml@toggle{useprefix}%
- \blx@xml@toggle{usetranslator}%
- }%
-}
-
-\edef\blx@ctrl@bibtex{%
- \blx@msg@bib
- @Control\string{biblatex-control,\blx@nl
- \space\space options = \string{%
- \blx@bblversion:%
- \noexpand\iftoggle{blx@debug}{1}{0}:%
- \noexpand\ifnum\noexpand\blx@backend>\noexpand\blx@backend@bibtex
- 1:%
- \noexpand\else
- 0:%
- \noexpand\fi
- \noexpand\iftoggle{blx@sortcase}{1}{0}:%
- \noexpand\iftoggle{blx@terseinits}{1}{0}:%
- \noexpand\iftoggle{blx@useprefix}{1}{0}:%
- \noexpand\iftoggle{blx@useauthor}{1}{0}:%
- \noexpand\iftoggle{blx@useeditor}{1}{0}:%
- \noexpand\iftoggle{blx@usetranslator}{1}{0}:%
- \noexpand\iftoggle{blx@labelalpha}{1}{0}:%
- \noexpand\iftoggle{blx@labeldate}{1}{0}:%
- \noexpand\iftoggle{blx@singletitle}{1}{0}:%
- \noexpand\csuse{blx@bibtex@sorting@\noexpand\blx@sorting}:%
- \noexpand\blx@sortlos:%
- \noexpand\blx@maxcitenames:%
- \noexpand\blx@mincitenames:%
- \noexpand\blx@maxline:%
- \noexpand\detokenize\noexpand\expandafter{\noexpand\labelalphaothers}%
- \string},\blx@nl
- \string}%
-}
-
-\def\blx@ctrlwrite@bibtex{%
- \immediate\openout\blx@auxout\blx@ctrlfile@bibtex\blxauxsuffix.bib\relax
- \blx@auxwrite\blx@auxout{}{\blx@ctrl@bibtex}%
- \immediate\closeout\blx@auxout}
-
-\def\blx@ctrlwrite@biber{%
- \begingroup
- \blx@safe@actives
- \let\protect\string
- % options
- \edef\labelalphaothers{\labelalphaothers}%
- \edef\sortalphaothers{\sortalphaothers}%
- \blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}%
- \blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}%
- \edef\blx@tempa{%
- \blx@xml@file
- \blx@xml@comment{BIBER OPTIONS}%
- \blx@xml@options{biber}{global}{%
- \blx@xml@svalue{bblencoding}{\blx@texencoding}%
- \blx@xml@svalue{bibencoding}{\blx@bibencoding}%
- \blx@xml@toggle{debug}%
- \blx@xml@svalue{mincrossrefs}{\blx@mincrossrefs}%
- \blx@xml@toggle{sortcase}%
- \ifdef\blx@sortlocale
- {\blx@xml@svalue{sortlocale}{\blx@sortlocale}}
- {}%
- \blx@xml@toggle{sortupper}%
- }%
- \blx@xml@comment{BIBLATEX OPTIONS}%
- \blx@bcf@options@global
- }%
- \ifdef\blx@opts@type
- {\def\do##1{%
- \begingroup
- \blx@setoptions@type{##1}%
- \begingroup
- \let\protect\relax
- \blx@checkoptions@type
- \endgroup
- \xappto\blx@tempa{\blx@bcf@options@type{##1}}%
- \endgroup}%
- \dolistloop\blx@opts@type}
- {}%
- % displaymode
- \eappto\blx@tempa{%
- \blx@xml@comment{DISPLAYMODES}%
- \blx@xml@displaymodes{global}{%
- \csuse{blx@biber@displaymodes@global}%
- }%
- }%
- % data inheritance
- \eappto\blx@tempa{%
- \blx@xml@comment{CROSSREF}%
- \blx@xml@inheritance{%
- \csuse{blx@biber@inherit@default}%
- \csuse{blx@biber@inherit@data}%
- }%
- }%
- % sorting
- \def\do##1{%
- \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}%
- \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}}%
- \abx@dotypes
- \eappto\blx@tempa{%
- \blx@xml@comment{SORTING}%
- \blx@xml@sorting{%
- \blx@bcf@presort
- \blx@bcf@exclude
- \csuse{blx@biber@sorting@\blx@sorting}%
- }%
- }%
- % files
- \let\blx@tempb\@empty
- \blx@bibdata\blx@tempb\blx@bibfiles
- \eappto\blx@tempa{%
- \blx@xml@comment{CITATION DATA}%
- \blx@xml@comment{section 0}%
- \blx@xml@bibdata{0}{\blx@tempb}%
- \blx@xml@section{0}%
- }%
- \immediate\openout\blx@auxout\jobname.bcf\relax
- \blx@auxwrite\blx@auxout{}{\blx@tempa}%
- \global\undef\blx@tempa
- \endgroup
- \AfterEndDocument{%
- \blx@auxwrite\blx@auxout{}{%
- \blx@xml@endsection
- \blx@xml@endfile}%
- \immediate\closeout\blx@auxout}}
-
-%% Package options
-
-% [<entrytype,entrytype,...>]{<options>}
-
-\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{%
- \ifblank{#1}
- {\setkeys{blx@opt@pre}{#2}}
- {\forcsvlist{\blx@typeoptions{#2}}{#1}}}
-\@onlypreamble\ExecuteBibliographyOptions
-
-\def\blx@typeoptions#1#2{%
- \blx@addtypeopt{#2}%
- \csappto{blx@opts@type@#2}{#1}}
-
-\def\blx@addtypeopt#1{%
- \notblank{#1}
- {\ifdef\blx@opts@type
- {\ifinlist{#1}{\blx@opts@type}
- {}
- {\listadd\blx@opts@type{#1}}}
- {\listadd\blx@opts@type{#1}}}
- {}}
-
-% load-time only
-
-\define@key{blx@opt@ldt}{style}{%
- \def\blx@cbxfile{#1}%
- \def\blx@bbxfile{#1}}
-
-\define@key{blx@opt@ldt}{bibstyle}{%
- \def\blx@bbxfile{#1}}
-
-\define@key{blx@opt@ldt}{citestyle}{%
- \def\blx@cbxfile{#1}}
-
-\define@key{blx@opt@ldt}{natbib}[true]{%
- \settoggle{blx@natbib}{#1}}
-
-\define@key{blx@opt@ldt}{mcite}[true]{%
- \settoggle{blx@mcite}{#1}}
-
-% load-time and preamble
-
-\DeclareBibliographyOption{debug}[true]{%
- \settoggle{blx@debug}{#1}}
-
-\DeclareBibliographyOption{backend}{%
- \ifcsdef{blx@backend@#1}
- {\letcs\blx@backend{blx@backend@#1}}
- {\blx@err@invopt{backend=#1}{}}}
-\chardef\blx@backend@bibtex=0
-\chardef\blx@backend@bibtexe=1
-\chardef\blx@backend@bibtexu=2
-\cslet{blx@backend@bibtex8}\blx@backend@bibtexe
-
-\DeclareBibliographyOption{loadfiles}[true]{%
- \settoggle{blx@loadfiles}{#1}}
-
-\DeclareBibliographyOption{mincrossrefs}{%
- \ifnum#1<\z@
- \def\blx@mincrossrefs{1}%
- \def\blx@minxrefs{1}%
- \else
- \def\blx@mincrossrefs{#1}%
- \def\blx@minxrefs{#1}%
- \fi}
-\def\blx@minxrefs{2}
-
-\DeclareBibliographyOption{texencoding}{%
- \ifstrequal{#1}{auto}
- {\undef\blx@texencoding}
- {\def\blx@texencoding{#1}}}
-
-\DeclareBibliographyOption{bibencoding}{%
- \ifcsdef{blx@bibenc@#1}
- {\letcs\blx@bibencoding{blx@bibenc@#1}}
- {\def\blx@bibencoding{#1}}}
-
-\def\abx@mapbibenc#1#2{\csdef{blx@bibenc@#1}{#2}}
-\abx@mapbibenc{inputenc}{auto}
-\abx@mapbibenc{x-ascii}{ascii}
-
-\def\abx@mapinpenc#1#2{\csdef{blx@inpenc@#1}{#2}}
-\abx@mapinpenc{utf8x}{utf8}
-\abx@mapinpenc{lutf8}{utf8}
-\abx@mapinpenc{x-ascii}{ascii}
-
-\DeclareBibliographyOption{safeinputenc}[true]{%
- \settoggle{blx@safeinputenc}{#1}}
-\newtoggle{blx@safeinputenc}
-
-\DeclareBibliographyOption{sorting}{%
- \def\blx@sorting{#1}}
-\def\blx@bibtex@sorting@none{0}
-\def\blx@bibtex@sorting@nty{1}
-\def\blx@bibtex@sorting@nyt{2}
-\def\blx@bibtex@sorting@nyvt{3}
-\def\blx@bibtex@sorting@anyt{12}
-\def\blx@bibtex@sorting@anyvt{13}
-\def\blx@bibtex@sorting@ynt{21}
-\def\blx@bibtex@sorting@ydnt{22}
-\def\blx@bibtex@sorting@debug{99}
-
-\AtEndPreamble{%
- \ifcsdef{blx@bibtex@sorting@\blx@sorting}
- {}
- {\blx@err@invopt{sorting=\blx@sorting}{}%
- \def\blx@sorting{nty}}}
-
-\DeclareBibliographyOption{sortcase}[true]{%
- \settoggle{blx@sortcase}{#1}}
-
-\DeclareBibliographyOption{sortupper}[true]{%
- \settoggle{blx@sortupper}{#1}}
-
-\DeclareBibliographyOption{sortlocale}{%
- \ifblank{#1}
- {\undef\blx@sortlocale}
- {\edef\blx@sortlocale{\detokenize{#1}}}}
-
-\DeclareBibliographyOption{sortlos}{%
- \ifcsdef{blx@opt@sortlos@#1}
- {\letcs\blx@sortlos{blx@opt@sortlos@#1}}
- {\blx@err@invopt{sortlos=#1}{}}}
-\def\blx@opt@sortlos@bib{0}
-\def\blx@opt@sortlos@los{1}
-
-\DeclareBibliographyOption{maxnames}{%
- \numdef\blx@maxcitenames{#1}%
- \numdef\blx@maxbibnames{#1}}
-\DeclareBibliographyOption{minnames}{%
- \numdef\blx@mincitenames{#1}%
- \numdef\blx@minbibnames{#1}}
-\DeclareTypeOption{maxnames}{%
- \numdef\blx@maxcitenames@type{#1}%
- \numdef\blx@maxbibnames@type{#1}%
- \c@maxnames#1\relax}
-\DeclareTypeOption{minnames}{%
- \numdef\blx@mincitenames@type{#1}%
- \numdef\blx@minbibnames@type{#1}%
- \c@minnames#1\relax}
-\DeclareEntryOption{maxnames}{%
- \c@maxnames#1\relax}
-\DeclareEntryOption{minnames}{%
- \c@minnames#1\relax}
-
-\DeclareBibliographyOption{maxbibnames}{%
- \numdef\blx@maxbibnames{#1}}
-\DeclareBibliographyOption{minbibnames}{%
- \numdef\blx@minbibnames{#1}}
-\DeclareTypeOption{maxbibnames}{%
- \numdef\blx@maxbibnames@type{#1}%
- \iftoggle{blx@bibliography}
- {\c@maxnames#1\relax}
- {}}
-\DeclareTypeOption{minbibnames}{%
- \numdef\blx@minbibnames@type{#1}%
- \iftoggle{blx@bibliography}
- {\c@minnames#1\relax}
- {}}
-\DeclareEntryOption{maxbibnames}{%
- \iftoggle{blx@bibliography}
- {\c@maxnames#1\relax}
- {}}
-\DeclareEntryOption{minbibnames}{%
- \iftoggle{blx@bibliography}
- {\c@minnames#1\relax}
- {}}
-
-\DeclareBibliographyOption{maxcitenames}{%
- \numdef\blx@maxcitenames{#1}}
-\DeclareBibliographyOption{mincitenames}{%
- \numdef\blx@mincitenames{#1}}
-\DeclareTypeOption{maxcitenames}{%
- \numdef\blx@maxcitenames@type{#1}%
- \iftoggle{blx@bibliography}
- {}
- {\c@maxnames#1\relax}}
-\DeclareTypeOption{mincitenames}{%
- \numdef\blx@mincitenames@type{#1}%
- \iftoggle{blx@bibliography}
- {}
- {\c@minnames#1\relax}}
-\DeclareEntryOption{maxcitenames}{%
- \iftoggle{blx@bibliography}
- {}
- {\c@maxnames#1\relax}}
-\DeclareEntryOption{mincitenames}{%
- \iftoggle{blx@bibliography}
- {}
- {\c@minnames#1\relax}}
-
-\appto\blx@checkoptions@global{%
- \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames\blx@minbibnames
- \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames\blx@mincitenames}
-\appto\blx@checkoptions@type{%
- \blx@maxmin@num{maxbibnames}{minbibnames}\blx@maxbibnames@type\blx@minbibnames@type
- \blx@maxmin@num{maxcitenames}{mincitenames}\blx@maxcitenames@type\blx@mincitenames@type}
-\appto\blx@checkoptions@entry{%
- \blx@maxmin@cnt{maxnames}{minnames}\c@maxnames\c@minnames}
-
-\DeclareBibliographyOption{maxitems}{%
- \numdef\blx@maxitems{#1}}
-\DeclareBibliographyOption{minitems}{%
- \numdef\blx@minitems{#1}}
-\DeclareTypeOption{maxitems}{%
- \numdef\blx@maxitems@type{#1}%
- \c@maxitems#1\relax}
-\DeclareTypeOption{minitems}{%
- \numdef\blx@minitems@type{#1}%
- \c@minitems#1\relax}
-\DeclareEntryOption{maxitems}{%
- \c@maxitems#1\relax}
-\DeclareEntryOption{minitems}{%
- \c@minitems#1\relax}
-
-\appto\blx@checkoptions@global{%
- \blx@maxmin@num{maxitems}{minitems}\blx@maxitems\blx@minitems}
-\appto\blx@checkoptions@type{%
- \blx@maxmin@num{maxitems}{minitems}\blx@maxitems@type\blx@minitems@type}
-\appto\blx@checkoptions@entry{%
- \blx@maxmin@cnt{maxitems}{minitems}\c@maxitems\blx@minitems}
-
-\DeclareBibliographyOption{maxalphanames}{%
- \numdef\blx@maxalphanames{#1}}
-\DeclareBibliographyOption{minalphanames}{%
- \numdef\blx@minalphanames{#1}}
-\DeclareTypeOption{maxalphanames}{%
- \numdef\blx@maxalphanames{#1}}
-\DeclareTypeOption{minalphanames}{%
- \numdef\blx@minalphanames{#1}}
-
-\appto\blx@checkoptions@global{%
- \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames}
-\appto\blx@checkoptions@type{%
- \blx@maxmin@num{maxalphanames}{minalphanames}\blx@maxalphanames\blx@minalphanames}
-
-\def\blx@maxmin@num#1#2#3#4{%
- \ifnumless#3\@ne
- {\blx@err@invopt{#1=#3}{'#1' must be greater than zero}%
- \let#3\@ne}
- {}%
- \ifnumless#4\@ne
- {\blx@err@invopt{#2=#4}{'#2' must be greater than zero}%
- \let#4\@ne}
- {}%
- \ifnumless#3#4
- {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}%
- \let#3#4}
- {}}
-
-\def\blx@maxmin@cnt#1#2#3#4{%
- \ifnumless#3\@ne
- {\blx@err@invopt{#1=\number#3}{'#1' must be greater than zero}%
- #3\@ne}
- {}%
- \ifnumless#4\@ne
- {\blx@err@invopt{#2=\number#4}{'#2' must be greater than zero}%
- #4\@ne}
- {}%
- \ifnumless#3#4
- {\blx@err@confopt{#1/#2}{'#1' must be greater than or equal to '#2'}%
- #3=#4}
- {}}
-
-\DeclareBibliographyOption{maxline}{% BibTeX only
- \ifnum#1<49
- \def\blx@maxline{49}%
- \else
- \ifnum#1>79
- \def\blx@maxline{79}%
- \else
- \def\blx@maxline{#1}%
- \fi
- \fi}
-
-\DeclareBibliographyOption{terseinits}[true]{%
- \ifstrequal{#1}{true}
- {\toggletrue{blx@terseinits}
- \renewrobustcmd*{\bibinitperiod}{}
- \renewrobustcmd*{\bibinitdelim}{}
- \renewrobustcmd*{\bibinithyphendelim}{}}
- {\togglefalse{blx@terseinits}
- \renewrobustcmd*{\bibinitperiod}{\adddot}
- \renewrobustcmd*{\bibinitdelim}{\addnbspace}
- \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}}
-
-% Legacy for giveninits
-\DeclareBibliographyOption{firstinits}[true]{%
- \blx@warning@noline{%
- 'firstinits' option is deprecated, use 'giveninits' instead}%
- \settoggle{blx@giveninits}{#1}}
-
-\DeclareBibliographyOption{giveninits}[true]{%
- \settoggle{blx@giveninits}{#1}}
-
-\DeclareBibliographyOption{abbreviate}[true]{%
- \ifstrequal{#1}{true}
- {\def\abx@str{abx@sstr}}
- {\def\abx@str{abx@lstr}}}
-
-\DeclareBibliographyOption{dateabbrev}[true]{%
- \ifstrequal{#1}{true}
- {\let\abx@bibmonth\blx@imc@bibsstring}
- {\let\abx@bibmonth\blx@imc@biblstring}}
-
-\DeclareBibliographyOption{language}{%
- \togglefalse{blx@autolangbib}%
- \togglefalse{blx@autolangcite}%
- \ifboolexpr{
- test {\ifstrequal{#1}{auto}}
- or
- test {\ifstrequal{#1}{autobib}}
- or
- test {\ifstrequal{#1}{autocite}}
- }
- {\def\blx@languagename{english}%
- \ifstrequal{#1}{auto}
- {\toggletrue{blx@autolangbib}%
- \toggletrue{blx@autolangcite}}
- {}%
- \ifstrequal{#1}{autobib}
- {\toggletrue{blx@autolangbib}}
- {}%
- \ifstrequal{#1}{autocite}
- {\toggletrue{blx@autolangcite}}
- {}}
- {\IfFileExists{#1.lbx}
- {\togglefalse{blx@autolangbib}%
- \togglefalse{blx@autolangcite}%
- \edef\blx@languagename{#1}}
- {\blx@error
- {Language '#1' not supported}
- {Failed to find a matching '#1.lbx' file}}}}
-
-\DeclareBibliographyOption{clearlang}[true]{%
- \settoggle{blx@clearlang}{#1}}
-
-\DeclareBibliographyOption{babel}{%
- \blx@warning@noline{%
- 'babel' option is deprecated, use 'autolang' instead}%
- \blx@autolang@i{#1}}
-
-\DeclareBibliographyOption{autolang}{%
- \blx@autolang@i{#1}}
-
-\def\blx@autolang@i#1{%
- \ifcsdef{blx@opt@autolang@#1}
- {\csuse{blx@opt@autolang@#1}}
- {\blx@err@invopt{autolang=#1}{}}}
-
-\def\blx@opt@autolang@none{%
- \undef\blx@thelangenv
- \let\blx@hook@initlang\@empty
- \let\blx@hook@endlang\@empty}
-\def\blx@opt@autolang@hyphen{%
- \def\blx@thelangenv{hyphenrules}%
- \let\blx@hook@initlang\@empty
- \let\blx@hook@endlang\@empty}
-\csdef{blx@opt@autolang@other*}{%
- \def\blx@thelangenv{otherlanguage*}%
- \def\blx@hook@initlang{\@quotereset\@ne}%
- \def\blx@hook@endlang{\blx@postpunct}}
-\def\blx@opt@autolang@other{%
- \def\blx@thelangenv{otherlanguage}%
- \def\blx@hook@initlang{\@quotereset\@ne}%
- \def\blx@hook@endlang{\blx@postpunct}}
-
-\DeclareBibliographyOption{indexing}[true]{%
- \blx@opt@index{#1}}
-\DeclareTypeOption{indexing}[true]{%
- \blx@opt@index{#1}}
-\DeclareEntryOption{indexing}[true]{%
- \blx@opt@index{#1}}
-\def\blx@opt@index#1{%
- \ifcsdef{blx@opt@index@#1}
- {\csuse{blx@opt@index@#1}}
- {\blx@err@invopt{indexing=#1}{}}}
-\def\blx@opt@index@true{%
- \toggletrue{blx@citeindex}%
- \toggletrue{blx@bibindex}}
-\def\blx@opt@index@false{%
- \togglefalse{blx@citeindex}%
- \togglefalse{blx@bibindex}}
-\def\blx@opt@index@cite{%
- \toggletrue{blx@citeindex}%
- \togglefalse{blx@bibindex}}
-\def\blx@opt@index@bib{%
- \togglefalse{blx@citeindex}%
- \toggletrue{blx@bibindex}}
-
-\DeclareBibliographyOption{sortcites}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@thecitesort\blx@citesort
- \let\blx@thenotecheck\blx@notecheck}
- {\let\blx@thecitesort\blx@citenosort
- \let\blx@thenotecheck\relax}}
-
-\DeclareBibliographyOption{hyperref}[true]{%
- \ifcsdef{blx@opt@hyperref@#1}
- {\letcs\blx@hyperref{blx@opt@hyperref@#1}}
- {\blx@err@invopt{hyperref=#1}{}}}
-\def\blx@opt@hyperref@false{0}
-\def\blx@opt@hyperref@true{1}
-\def\blx@opt@hyperref@auto{2}
-
-\DeclareBibliographyOption{backref}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@backref\blx@addbackref
- \let\abx@aux@backref\blx@aux@backref
- \booltrue{backtracker}}
- {\let\blx@backref\@gobble
- \let\abx@aux@backref\@gobblefive
- \boolfalse{backtracker}}}
-
-\DeclareBibliographyOption{backrefsetstyle}{%
- \ifcsdef{blx@opt@backrefsetstyle@#1}
- {\letcs\blx@backrefsetstyle{blx@opt@backrefsetstyle@#1}}
- {\blx@err@invopt{backrefsetstyle=#1}{}}}
-\def\blx@opt@backrefsetstyle@setonly{0}
-\def\blx@opt@backrefsetstyle@memonly{1}
-\def\blx@opt@backrefsetstyle@setormem{2}
-\def\blx@opt@backrefsetstyle@setandmem{3}
-\def\blx@opt@backrefsetstyle@memandset{4}
-\def\blx@opt@backrefsetstyle@setplusmem{5}
-
-\appto\blx@mkhyperref{%
- \ifHy@plainpages
- \blx@warning@noline{%
- hyperref package option 'plainpages' enabled.\MessageBreak
- This may cause problems with hyperlinked back\MessageBreak
- references. 'plainpages=false' is recommended}%
- \fi
- \ifHy@pageanchor\else
- \blx@warning@noline{%
- hyperref package option 'pageanchor' disabled.\MessageBreak
- This will cause problems with hyperlinked back\MessageBreak
- references. 'pageanchor=true' is required}%
- \fi}
-
-\DeclareBibliographyOption{block}{%
- \ifcsdef{blx@opt@block@#1}
- {\csuse{blx@opt@block@#1}}
- {\blx@err@invopt{block=#1}{}}}
-\def\blx@opt@block@none{%
- \let\blx@bibsetup\@empty
- \let\newblockpunct\@empty}
-\def\blx@opt@block@par{%
- \let\blx@bibsetup\@empty
- \def\newblockpunct{\par}}
-\def\blx@opt@block@nbpar{%
- \def\blx@bibsetup{\interlinepenalty\@M}%
- \def\newblockpunct{\par\nobreak}}
-\def\blx@opt@block@space{%
- \let\blx@bibsetup\@empty
- \def\newblockpunct{%
- \unspace\space
- \hskip 0.11em
- \@plus 0.33em
- \@minus 0.07em}}
-\def\blx@opt@block@ragged{%
- \let\blx@bibsetup\raggedright
- \def\newblockpunct{%
- \unspace\penalty-9\relax\space}}
-
-\DeclareBibliographyOption{pagetracker}[true]{%
- \ifcsdef{blx@opt@pagetracker@#1}
- {\csuse{blx@opt@pagetracker@#1}}
- {\blx@err@invopt{pagetracker=#1}{}}}
-\def\blx@opt@pagetracker@true{%
- \if@twoside
- \blx@opt@pagetracker@spread
- \else
- \blx@opt@pagetracker@page
- \fi}
-\def\blx@opt@pagetracker@false{%
- \let\blx@pagetracker\relax
- \let\abx@aux@page\@gobbletwo
- \let\abx@aux@fnpage\@gobbletwo
- \boolfalse{pagetracker}}
-\def\blx@opt@pagetracker@page{%
- \let\blx@pagetracker\blx@pagetracker@context
- \let\abx@aux@page\blx@aux@page
- \let\abx@aux@fnpage\blx@aux@fnpage
- \booltrue{pagetracker}}
-\def\blx@opt@pagetracker@spread{%
- \if@twoside
- \let\blx@pagetracker\blx@pagetracker@context
- \let\abx@aux@page\blx@aux@spread
- \let\abx@aux@fnpage\blx@aux@fnspread
- \booltrue{pagetracker}%
- \else
- \blx@warning@noline{%
- LaTeX not in twoside mode\MessageBreak
- Falling back to 'pagetracker=page'}%
- \blx@opt@pagetracker@page
- \fi}
-
-\DeclareBibliographyOption{citecounter}[true]{%
- \ifcsdef{blx@opt@citecounter@#1}
- {\csuse{blx@opt@citecounter@#1}}
- {\blx@err@invopt{citecounter=#1}{}}}
-\def\blx@opt@citecounter@true{%
- \let\blx@setcitecounter\blx@setcitecounter@global
- \let\blx@citecounter\blx@citecounter@global
- \let\abx@aux@count\blx@aux@count
- \let\abx@aux@fncount\blx@aux@fncount
- \booltrue{citetracker}}
-\def\blx@opt@citecounter@context{%
- \let\blx@setcitecounter\blx@setcitecounter@context
- \let\blx@citecounter\blx@citecounter@context
- \let\abx@aux@count\blx@aux@count
- \let\abx@aux@fncount\blx@aux@fncount
- \booltrue{citetracker}}
-\def\blx@opt@citecounter@false{%
- \let\blx@setcitecounter\relax
- \let\blx@citecounter\relax
- \let\abx@aux@count\@gobbletwo
- \let\abx@aux@fncount\@gobbletwo}
-
-\DeclareBibliographyOption{citetracker}[true]{%
- \ifcsdef{blx@opt@citetracker@#1}
- {\csuse{blx@opt@citetracker@#1}}
- {\blx@err@invopt{citetracker=#1}{}}}
-\def\blx@opt@citetracker@true{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@global
- \let\blx@imc@ifentryseen\blx@ifentryseen@global
- \let\blx@citetracker\blx@citetracker@global
- \booltrue{citetracker}}
-\def\blx@opt@citetracker@false{%
- \let\blx@imc@ifciteseen\@secondoftwo
- \protected\long\def\blx@imc@ifentryseen##1##2##3{##3}%
- \let\blx@citetracker\relax}
-\def\blx@opt@citetracker@context{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@context
- \let\blx@imc@ifentryseen\blx@ifentryseen@context
- \let\blx@citetracker\blx@citetracker@context
- \booltrue{citetracker}}
-\def\blx@opt@citetracker@strict{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@global
- \let\blx@imc@ifentryseen\blx@ifentryseen@global
- \def\blx@citetracker{%
- \blx@ifcitesingle{\blx@citetracker@global}{}}%
- \booltrue{citetracker}}
-\def\blx@opt@citetracker@constrict{%
- \let\blx@imc@ifciteseen\blx@ifciteseen@context
- \let\blx@imc@ifentryseen\blx@ifentryseen@context
- \def\blx@citetracker{%
- \blx@ifcitesingle{\blx@citetracker@context}{}}%
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption{ibidtracker}[true]{%
- \ifcsdef{blx@opt@ibidtracker@#1}
- {\csuse{blx@opt@ibidtracker@#1}}
- {\blx@err@invopt{ibidtracker=#1}{}}}
-\def\blx@opt@ibidtracker@true{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@global
- \let\blx@ibidtracker\blx@ibidtracker@global
- \let\blx@ibidreset\blx@ibidreset@global
- \booltrue{citetracker}}
-\def\blx@opt@ibidtracker@false{%
- \let\blx@imc@ifciteibid\@secondoftwo
- \let\blx@ibidtracker\relax
- \let\blx@ibidreset\relax}
-\def\blx@opt@ibidtracker@context{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@context
- \let\blx@ibidtracker\blx@ibidtracker@context
- \let\blx@ibidreset\blx@ibidreset@context
- \booltrue{citetracker}}
-\def\blx@opt@ibidtracker@strict{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@strict
- \let\blx@ibidtracker\blx@ibidtracker@strict
- \let\blx@ibidreset\blx@ibidreset@global
- \booltrue{citetracker}}
-\def\blx@opt@ibidtracker@constrict{%
- \let\blx@imc@ifciteibid\blx@ifciteibid@constrict
- \let\blx@ibidtracker\blx@ibidtracker@constrict
- \let\blx@ibidreset\blx@ibidreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption{idemtracker}[true]{%
- \ifcsdef{blx@opt@idemtracker@#1}
- {\csuse{blx@opt@idemtracker@#1}}
- {\blx@err@invopt{idemtracker=#1}{}}}
-\def\blx@opt@idemtracker@true{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@global
- \let\blx@idemtracker\blx@idemtracker@global
- \let\blx@idemreset\blx@idemreset@global
- \booltrue{citetracker}}
-\def\blx@opt@idemtracker@false{%
- \let\blx@imc@ifciteidem\@secondoftwo
- \let\blx@idemtracker\relax
- \let\blx@idemreset\relax}
-\def\blx@opt@idemtracker@context{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@context
- \let\blx@idemtracker\blx@idemtracker@context
- \let\blx@idemreset\blx@idemreset@context
- \booltrue{citetracker}}
-\def\blx@opt@idemtracker@strict{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@strict
- \let\blx@idemtracker\blx@idemtracker@strict
- \let\blx@idemreset\blx@idemreset@global
- \booltrue{citetracker}}
-\def\blx@opt@idemtracker@constrict{%
- \let\blx@imc@ifciteidem\blx@ifciteidem@constrict
- \let\blx@idemtracker\blx@idemtracker@constrict
- \let\blx@idemreset\blx@idemreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption{opcittracker}[true]{%
- \ifcsdef{blx@opt@opcittracker@#1}
- {\csuse{blx@opt@opcittracker@#1}}
- {\blx@err@invopt{opcittracker=#1}{}}}
-\def\blx@opt@opcittracker@true{%
- \let\blx@imc@ifopcit\blx@ifopcit@global
- \let\blx@opcittracker\blx@opcittracker@global
- \let\blx@opcitreset\blx@opcitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@opcittracker@false{%
- \let\blx@imc@ifopcit\@secondoftwo
- \let\blx@opcittracker\relax
- \let\blx@opcitreset\relax}
-\def\blx@opt@opcittracker@context{%
- \let\blx@imc@ifopcit\blx@ifopcit@context
- \let\blx@opcittracker\blx@opcittracker@context
- \let\blx@opcitreset\blx@opcitreset@context
- \booltrue{citetracker}}
-\def\blx@opt@opcittracker@strict{%
- \let\blx@imc@ifopcit\blx@ifopcit@strict
- \let\blx@opcittracker\blx@opcittracker@strict
- \let\blx@opcitreset\blx@opcitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@opcittracker@constrict{%
- \let\blx@imc@ifopcit\blx@ifopcit@constrict
- \let\blx@opcittracker\blx@opcittracker@constrict
- \let\blx@opcitreset\blx@opcitreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption{loccittracker}[true]{%
- \ifcsdef{blx@opt@loccittracker@#1}
- {\csuse{blx@opt@loccittracker@#1}}
- {\blx@err@invopt{loccittracker=#1}{}}}
-\def\blx@opt@loccittracker@true{%
- \let\blx@imc@ifloccit\blx@ifloccit@global
- \let\blx@loccittracker\blx@loccittracker@global
- \let\blx@loccitreset\blx@loccitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@loccittracker@false{%
- \let\blx@imc@ifloccit\@secondoftwo
- \let\blx@loccittracker\relax
- \let\blx@loccitreset\relax}
-\def\blx@opt@loccittracker@context{%
- \let\blx@imc@ifloccit\blx@ifloccit@context
- \let\blx@loccittracker\blx@loccittracker@context
- \let\blx@loccitreset\blx@loccitreset@context
- \booltrue{citetracker}}
-\def\blx@opt@loccittracker@strict{%
- \let\blx@imc@ifloccit\blx@ifloccit@strict
- \let\blx@loccittracker\blx@loccittracker@strict
- \let\blx@loccitreset\blx@loccitreset@global
- \booltrue{citetracker}}
-\def\blx@opt@loccittracker@constrict{%
- \let\blx@imc@ifloccit\blx@ifloccit@constrict
- \let\blx@loccittracker\blx@loccittracker@constrict
- \let\blx@loccitreset\blx@loccitreset@context
- \booltrue{citetracker}}
-
-\DeclareBibliographyOption{parentracker}[true]{%
- \ifstrequal{#1}{true}
- {\let\bibopenparen\blx@bibopenparen
- \let\bibcloseparen\blx@bibcloseparen
- \let\bibopenbracket\blx@bibopenbracket
- \let\bibclosebracket\blx@bibclosebracket}
- {\protected\def\bibopenparen{\bibleftparen}%
- \protected\def\bibcloseparen{\bibrightparen}%
- \protected\def\bibopenbracket{\bibleftbracket}%
- \protected\def\bibclosebracket{\bibrightbracket}}}
-
-\DeclareBibliographyOption{maxparens}{%
- \ifnumless{#1}{1}
- {\blx@err@invopt{maxparens=#1}{}}
- {\setcounter{maxparens}{#1}}}
-
-\DeclareBibliographyOption{date}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printdate{\csuse{mkbibrange#1}{}}%
- \protected\def\blx@imc@printdateextra{\csuse{mkbibrange#1extra}{}}}
- {\blx@err@invopt{date=#1}{}}}
-
-\DeclareBibliographyOption{datelabel}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printdatelabel{%
- \blx@imc@iffieldundef{year}
- {\csuse{mkbibrange#1}{label}}
- {\csuse{mkbibrange#1}{}}}%
- \protected\def\blx@imc@printdateextralabel{%
- \blx@imc@iffieldundef{year}
- {\csuse{mkbibrange#1extra}{label}}
- {\csuse{mkbibrange#1extra}{}}}}
- {\blx@err@invopt{datelabel=#1}{}}}
-
-\DeclareBibliographyOption{urldate}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printurldate{\csuse{mkbibrange#1}{url}}}
- {\blx@err@invopt{urldate=#1}{}}}
-
-\DeclareBibliographyOption{eventdate}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printeventdate{\csuse{mkbibrange#1}{event}}}
- {\blx@err@invopt{eventdate=#1}{}}}
-
-\DeclareBibliographyOption{origdate}{%
- \ifcsdef{mkbibrange#1}
- {\protected\def\blx@imc@printorigdate{\csuse{mkbibrange#1}{orig}}}
- {\blx@err@invopt{origdate=#1}{}}}
-
-\DeclareBibliographyOption{alldates}{%
- \ExecuteBibliographyOptions{date=#1,urldate=#1,eventdate=#1,origdate=#1}}
-
-\DeclareBibliographyOption{datezeros}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@imc@mkdatezeros\@firstofone}
- {\let\blx@imc@mkdatezeros\blx@imc@stripzeros}}
-
-\DeclareBibliographyOption{autocite}{%
- \ifcsundef{blx@acite@#1}
- {\blx@error
- {Autocite command '#1' undefined}
- {The autocite command '#1' has not been defined by
- the\MessageBreak selected citation style}}
- {\letcs\autocite{blx@acite@#1}%
- \letcs\autocites{blx@macite@#1}}}
-
-\DeclareBibliographyOption{notetype}{%
- \ifcsdef{blx@opt@notetype@#1}
- {\blx@notetype\csuse{blx@opt@notetype@#1}}
- {\blx@err@invopt{notetype=#1}{}}}
-\cslet{blx@opt@notetype@foot+end}\z@
-\let\blx@opt@notetype@footonly\@ne
-\let\blx@opt@notetype@endonly\tw@
-
-\DeclareBibliographyOption{autopunct}[true]{%
- \ifstrequal{#1}{true}
- {\DeclareAutoPunctuation{.,;:!?}}
- {\DeclareAutoPunctuation{}}}
-
-\DeclareBibliographyOption{punctfont}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@ifpuncthook\@firstoftwo}
- {\let\blx@ifpuncthook\@secondoftwo}}
-
-\DeclareBibliographyOption{labelnumber}[true]{%
- \settoggle{blx@labelnumber}{#1}%
- \iftoggle{blx@labelnumber}
- {}
- {\setkeys{blx@opt@pre}{defernumbers=false}}}
-\DeclareTypeOption{labelnumber}[true]{%
- \settoggle{blx@labelnumber}{#1}}
-
-\DeclareBibliographyOption{labelalpha}[true]{%
- \settoggle{blx@labelalpha}{#1}}
-\DeclareTypeOption{labelalpha}[true]{%
- \settoggle{blx@labelalpha}{#1}}
-
-\DeclareBibliographyOption{labeldate}[true]{%
- \settoggle{blx@labeldate}{#1}}
-\DeclareTypeOption{labeldate}[true]{%
- \settoggle{blx@labeldate}{#1}}
-
-\DeclareBibliographyOption{labelyear}[true]{%
- \blx@warning@noline{%
- 'labelyear' option is deprecated, use 'labeldate' instead}%
- \settoggle{blx@labeldate}{#1}}
-\DeclareTypeOption{labelyear}[true]{%
- \blx@warning@noline{%
- 'labelyear' option is deprecated, use 'labeldate' instead}%
- \settoggle{blx@labeldate}{#1}}
-
-\DeclareBibliographyOption{uniquelist}[true]{%
- \ifcsdef{blx@opt@uniquelist@#1}
- {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
- {\blx@err@invopt{uniquelist=#1}{}}}
-\DeclareTypeOption{uniquelist}[true]{%
- \ifcsdef{blx@opt@uniquelist@#1}
- {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}}
- {\blx@err@invopt{uniquelist=#1}{}}}
-\def\blx@opt@uniquelist@false{0}
-\def\blx@opt@uniquelist@true{1}
-\def\blx@opt@uniquelist@minyear{2}
-
-\DeclareBibliographyOption{uniquename}[true]{%
- \ifcsdef{blx@opt@uniquename@#1}
- {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
- {\blx@err@invopt{uniquename=#1}{}}}
-\DeclareTypeOption{uniquename}[true]{%
- \ifcsdef{blx@opt@uniquename@#1}
- {\letcs\blx@uniquename{blx@opt@uniquename@#1}}
- {\blx@err@invopt{uniquename=#1}{}}}
-\def\blx@opt@uniquename@false{0}
-\def\blx@opt@uniquename@init{1}
-\def\blx@opt@uniquename@true{2}
-\def\blx@opt@uniquename@full{2}
-\def\blx@opt@uniquename@allinit{3}
-\def\blx@opt@uniquename@allfull{4}
-\def\blx@opt@uniquename@mininit{5}
-\def\blx@opt@uniquename@minfull{6}
-
-\DeclareBibliographyOption{singletitle}[true]{%
- \settoggle{blx@singletitle}{#1}}
-\DeclareTypeOption{singletitle}[true]{%
- \settoggle{blx@singletitle}{#1}}
-
-\DeclareBibliographyOption{defernumbers}[true]{%
- \settoggle{blx@defernumbers}{#1}%
- \iftoggle{blx@defernumbers}
- {\setkeys{blx@opt@pre}{labelnumber}%
- \let\blx@thelabelnumber\blx@addlabelnumber
- \let\abx@aux@number\blx@aux@number}
- {\let\blx@thelabelnumber\relax
- \let\abx@aux@number\@gobblefour}}
-
-\DeclareBibliographyOption{refsection}{%
- \ifcsdef{blx@opt@refsection@#1}
- {\letcs\blx@refsecreset@level{blx@opt@refsection@#1}}
- {\blx@err@invopt{refsection=#1}{}}}
-\def\blx@opt@refsection@none{0}
-\def\blx@opt@refsection@part{1}
-\def\blx@opt@refsection@chapter{2}
-\def\blx@opt@refsection@section{3}
-\def\blx@opt@refsection@subsection{4}
-
-\AtEndPreamble{%
- \ifcase\blx@refsecreset@level
- \or % 1
- \blx@refpatch@part\newrefsection
- \or % 2
- \blx@refpatch@chapter\newrefsection
- \or % 3
- \blx@refpatch@sect{section}{\newrefsection}{1}%
- \or % 4
- \blx@refpatch@sect{subsection}{\newrefsection}{2}%
- \fi}
-
-\DeclareBibliographyOption{refsegment}{%
- \ifcsdef{blx@opt@refsegment@#1}
- {\letcs\blx@refsegreset@level{blx@opt@refsegment@#1}}
- {\blx@err@invopt{refsegment=#1}{}}}
-\def\blx@opt@refsegment@none{0}
-\def\blx@opt@refsegment@part{1}
-\def\blx@opt@refsegment@chapter{2}
-\def\blx@opt@refsegment@section{3}
-\def\blx@opt@refsegment@subsection{4}
-
-\AtEndPreamble{%
- \ifnumgreater\blx@refsegreset@level\z@
- {\ifnumgreater\blx@refsegreset@level\blx@refsecreset@level
- {}
- {\blx@err@confopt
- {refsegment/refsection}
- {The 'refsegment' option must point to a
- lower-level\MessageBreak document division
- than 'refsection'}%
- \def\blx@refsegreset@level{0}}}
- {}%
- \ifcase\blx@refsegreset@level
- \or % 1
- \blx@refpatch@part\newrefsegment
- \or % 2
- \blx@refpatch@chapter\newrefsegment
- \or % 3
- \blx@refpatch@sect{section}{\newrefsegment}{1}%
- \or % 4
- \blx@refpatch@sect{subsection}{\newrefsegment}{2}%
- \fi}
-
-\DeclareBibliographyOption{citereset}{%
- \ifcsdef{blx@opt@citereset@#1}
- {\letcs\blx@citereset@level{blx@opt@citereset@#1}}
- {\blx@err@invopt{citereset=#1}{}}}
-\def\blx@opt@citereset@none{0}
-\def\blx@opt@citereset@part{1}
-\def\blx@opt@citereset@chapter{2}
-\def\blx@opt@citereset@section{3}
-\def\blx@opt@citereset@subsection{4}
-
-\AtEndPreamble{%
- \ifcase\blx@citereset@level
- \or % 1
- \blx@refpatch@part{\citereset\blx@inf@creset}%
- \or % 2
- \blx@refpatch@chapter{\citereset\blx@inf@creset}%
- \or % 3
- \blx@refpatch@sect{section}{\citereset\blx@inf@creset}{1}%
- \or % 4
- \blx@refpatch@sect{subsection}{\citereset\blx@inf@creset}{2}%
- \fi}
-
-\DeclareBibliographyOption{bibwarn}[true]{%
- \ifstrequal{#1}{true}
- {\let\blx@bbl@thewarn\blx@bbl@warn}
- {\let\blx@bbl@thewarn\@gobble}}
-
-% Entry options
-
-\DeclareBibliographyOption{useprefix}[true]{%
- \settoggle{blx@useprefix}{#1}}
-\DeclareTypeOption{useprefix}[true]{%
- \settoggle{blx@useprefix}{#1}}
-\DeclareEntryOption{useprefix}[true]{%
- \settoggle{blx@useprefix}{#1}}
-
-\DeclareBibliographyOption{useauthor}[true]{%
- \settoggle{blx@useauthor}{#1}}
-\DeclareTypeOption{useauthor}[true]{%
- \settoggle{blx@useauthor}{#1}}
-\DeclareEntryOption{useauthor}[true]{%
- \settoggle{blx@useauthor}{#1}}
-
-\DeclareBibliographyOption{useeditor}[true]{%
- \settoggle{blx@useeditor}{#1}}
-\DeclareTypeOption{useeditor}[true]{%
- \settoggle{blx@useeditor}{#1}}
-\DeclareEntryOption{useeditor}[true]{%
- \settoggle{blx@useeditor}{#1}}
-
-\DeclareBibliographyOption{usetranslator}[true]{%
- \settoggle{blx@usetranslator}{#1}}
-\DeclareTypeOption{usetranslator}[true]{%
- \settoggle{blx@usetranslator}{#1}}
-\DeclareEntryOption{usetranslator}[true]{%
- \settoggle{blx@usetranslator}{#1}}
-
-\DeclareTypeOption{skipbib}[true]{%
- \settoggle{blx@skipbib}{#1}}
-\DeclareEntryOption{skipbib}[true]{%
- \settoggle{blx@skipbib}{#1}}
-
-\DeclareTypeOption{skiplos}[true]{%
- \settoggle{blx@skipbiblist}{#1}}
-\DeclareEntryOption{skiplos}[true]{%
- \settoggle{blx@skipbiblist}{#1}}
-
-\DeclareTypeOption{skipbiblist}{%
- \blx@warning@noline{%
- skipbiblist option is Biber only, use 'skiplos' instead}%
- \settoggle{blx@skipbiblist}{#1}}
-\DeclareEntryOption{skipbiblist}{%
- \blx@warning@noline{%
- skipbiblist option is Biber only, use 'skiplos' instead}%
- \settoggle{blx@skipbiblist}{#1}}
-
-\DeclareTypeOption{skiplab}[true]{%
- \settoggle{blx@skiplab}{#1}}
-\DeclareEntryOption{skiplab}[true]{%
- \settoggle{blx@skiplab}{#1}}
-
-\DeclareTypeOption{dataonly}[true]{%
- \settoggle{blx@skipbib}{#1}%
- \settoggle{blx@skipbiblist}{#1}%
- \settoggle{blx@skiplab}{#1}}
-\DeclareEntryOption{dataonly}[true]{%
- \settoggle{blx@skipbib}{#1}%
- \settoggle{blx@skipbiblist}{#1}%
- \settoggle{blx@skiplab}{#1}}
-
-% Option processor/scheduler
-
-\DeclareOption*{%
- \begingroup
- \def\blx@tempa#1=#2&{#1}%
- \edef\blx@tempa{%
- \expandafter\blx@tempa\CurrentOption=&}%
- \ifcsundef{KV@blx@opt@ldt@\blx@tempa}
- {\endgroup
- \eappto\blx@theoptions{\CurrentOption,}}
- {\edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}%
- \blx@tempa}}
-
-\def\blx@processoptions{%
- \ifundef\blx@theoptions
- {}
- {\begingroup
- \edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}%
- \blx@tempa}}
-
-%% Initial setup
-
-% Set defaults
-
-\setkeys{blx@opt@ldt}{style=numeric}
-\setkeys{blx@opt@pre}{%
- sorting=nty,sortlos=los,sortcase,sortupper,sortcites=false,
- maxnames=3,minnames=1,maxalphanames=3,minalphanames=1,
- maxitems=3,minitems=1,mincrossrefs=2,useauthor=true,useeditor=true,
- usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true,
- backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false,
- idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false,
- citecounter=false,block=none,language=autobib,clearlang=true,autolang=none,
- date=comp,datelabel=year,origdate=comp,eventdate=comp,urldate=short,
- autopunct=true,punctfont=false,defernumbers=false,
- refsection=none,refsegment=none,citereset=none,hyperref=auto,
- parentracker,maxparens=3,maxline=79,bibencoding=auto,bibwarn}
-
-% Load compatibility code
-
-\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{}
-
-% Restore catcodes
-
-\blx@catcodes
-\undef\blx@catcodes
-
-% Process load-time options
-
-\ProcessOptions*
-
-% Load citation and bibliography styles, configuration file
-
-\blx@inputonce{biblatex_legacy.def}{generic definitions}{}{}{}{}
-\iftoggle{blx@natbib}
- {\blx@inputonce{blx-natbib.def}{natbib compatibility}{}{}{}{}}
- {}
-\iftoggle{blx@mcite}
- {\blx@inputonce{blx-mcite.def}{mcite-like commands}{}{}{}{}}
- {}
-\RequireBibliographyStyle{\blx@bbxfile}
-\RequireCitationStyle{\blx@cbxfile}
-\blx@secinit
-\citereset
-\blx@inputonce{biblatex.cfg}{configuration file}{}{}{}{}
-
-% Process preamble options
-
-\blx@processoptions
-
-% Deferred setup at end of preamble
-
-\AtEndPreamble{%
- \blx@checkoptions@global
- \c@maxnames\blx@maxcitenames\relax
- \c@minnames\blx@mincitenames\relax
- \c@maxitems\blx@maxitems\relax
- \c@minitems\blx@minitems\relax
- \iftoggle{blx@giveninits}
- {\ifnumequal\blx@uniquename\blx@opt@uniquename@full
- {\blx@warn@conflopt{%
- 'giveninits' conflicts with 'uniquename=full'.\MessageBreak
- Setting 'uniquename=init'}%
- \setkeys{blx@opt@pre}{uniquename=init}}
- {}%
- \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull
- {\blx@warn@conflopt{%
- 'giveninits' conflicts with 'uniquename=allfull'.\MessageBreak
- Setting 'uniquename=allinit}%
- \setkeys{blx@opt@pre}{uniquename=allinit}}
- {}%
- \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull
- {\blx@warn@conflopt{%
- 'giveninits' conflicts with 'uniquename=minfull'.\MessageBreak
- Setting 'uniquename=mininit}%
- \setkeys{blx@opt@pre}{uniquename=mininit}}
- {}}
- {}%
- \nottoggle{blx@labeldate}
- {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear
- {\blx@warn@conflopt{%
- 'uniquelist=minyear' requires 'labeldate'.\MessageBreak
- Setting 'uniquelist=true'}%
- \setkeys{blx@opt@pre}{uniquelist}}
- {}}
- {}}
-
-\def\blx@checkencoding{%
- \ifdef\blx@texencoding
- {\blx@info@noline{%
- Input encoding '\blx@texencoding' specified}}
- {\ifundef\inputencodingname
- {\ifundef\XeTeXrevision
- {\ifundef\luatexversion
- {\def\blx@texencoding{ascii}%
- \blx@info@noline{%
- No input encoding detected.\MessageBreak
- Assuming '\blx@texencoding'}}
- {\def\blx@texencoding{utf8}%
- \blx@info@noline{%
- LuaTeX detected.\MessageBreak
- Assuming input encoding '\blx@texencoding'}}}
- {\def\blx@texencoding{utf8}%
- \blx@info@noline{%
- XeTeX detected.\MessageBreak
- Assuming input encoding '\blx@texencoding'}}}
- {\ifcsdef{blx@inpenc@\inputencodingname}
- {\letcs\blx@texencoding{blx@inpenc@\inputencodingname}}
- {\let\blx@texencoding\inputencodingname}%
- \blx@info@noline{%
- Input encoding '\blx@texencoding' detected}}}%
- \ifdef\blx@bibencoding
- {\ifdefstring\blx@bibencoding{ascii}
- {\blx@info@noline{%
- Data encoding '\blx@bibencoding' specified.\MessageBreak
- No need to reencode data}%
- \togglefalse{blx@reencode}}
- {\ifdefstring\blx@bibencoding{auto}
- {\let\blx@bibencoding\blx@texencoding
- \blx@info@noline{%
- Automatic encoding selection.\MessageBreak
- Assuming data encoding '\blx@bibencoding'}
- \togglefalse{blx@reencode}}
- {\ifdefstrequal\blx@bibencoding\blx@texencoding
- {\blx@info@noline{%
- Data encoding '\blx@bibencoding' specified.\MessageBreak
- No need to reencode data}%
- \togglefalse{blx@reencode}}
- {\blx@info@noline{%
- Data encoding '\blx@bibencoding' specified.\MessageBreak
- Reencoding not supported by backend.\MessageBreak
- Falling back to reencoding with inputenc}%
- \@ifpackageloaded{inputenc}
- {\toggletrue{blx@reencode}}
- {\@ifpackageloaded{inputenx}
- {\toggletrue{blx@reencode}}
- {\blx@warning@noline{%
- On-the-fly data reencoding not supported by\MessageBreak
- this setup. Load the 'inputenc/inputenx'\MessageBreak
- package or use backend=biber. 'luainputenc'\MessageBreak
- is not supported (use backend=biber instead)}%
- \togglefalse{blx@reencode}}}}}}}
- {\def\blx@bibencoding{ascii}%
- \blx@info@noline{%
- Data encoding not specified.\MessageBreak
- Assuming '\blx@bibencoding'}%
- \togglefalse{blx@reencode}}%
- \ifdefstring\blx@bibencoding{ascii}
- {}
- {\ifdefstring\blx@bibencoding{utf8}
- {\ifnumless\blx@backend\blx@backend@bibtexu
- {\blx@warning@noline{%
- Data encoding is '\blx@bibencoding'.\MessageBreak
- Use backend=biber}}
- {}}
- {\ifnumodd\blx@backend
- {\ifnumequal\blx@backend\blx@backend@bibtexe
- {\let\blx@csfencoding\blx@bibencoding}
- {}}
- {\blx@warning@noline{%
- Data encoding is '\blx@bibencoding'.\MessageBreak
- Use backend=bibtex8 or backend=biber}}}}%
-}
-
-% Deferred last minute setup
-
-\AtBeginDocument{%
- \blx@checkencoding
- \if@filesw
- \blx@auxinit@bibtex\blx@bibfiles
- \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib}
- {\blx@ctrlwrite@bibtex}
- {}%
- \ifnumless\blx@reqbiber\thr@@
- {\blx@bblinput}
- {}%
- \blx@maxsection\z@
- \fi
- \let\blx@reqbiber\z@
- \csuse{abx@preamble}%
- \blx@checkbackend{.bib file}%
- \blx@inf@refsec
- \blx@inf@refseg}
-
-\AtEndOfPackage{%
- \AtBeginDocument{%
- \let\do\undef
- \blx@dopreamblecmds
- \let\do\noexpand}}
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def b/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
new file mode 100644
index 00000000000..fdc1363b419
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
@@ -0,0 +1,428 @@
+\ProvidesFile{blx-bibtex.def}
+[\abx@cptid]
+
+\blx@warning@noline{%
+ Using fall-back BibTeX(8) backend:\MessageBreak
+ functionality may be reduced/unavailable%
+}
+
+% Initialisation of backend-related switches, variables, etc.
+\newtoggle{blx@runbtx}
+
+% No interface provided for this but can be set 'in emergency' by user
+\def\blx@maxline{79}
+
+% Rename write stream so use is clear
+\let\blx@write\blx@bcfout
+
+% Data file initialisation
+\edef\blx@auxfile{\jobname}
+\let\blx@aux\@mainaux
+\newcommand*{\blxauxsuffix}{-blx}
+
+\begingroup
+\def\blx@tempa#1"#2{%
+ #1\ifx#2\@empty\else
+ \expandafter\blx@tempa
+ \fi#2}
+\edef\blx@ctrlfile{%
+ \noexpand\blx@tempa
+ \expandafter\blx@tempa\jobname"\@empty
+ \space\noexpand\@empty}
+\def\blx@tempa#1 #2{%
+ #1\ifx#2\@empty\else
+ \string_\expandafter\blx@tempa
+ \fi#2}
+\xdef\blx@ctrlfile{\blx@ctrlfile}
+\endgroup
+
+\def\blx@auxinit#1{%
+ \blx@auxwrite\blx@aux
+ {\def\do##1{,\blx@stripbib{##1}}}
+ {\ifx\blx@aux\@mainaux
+ \else
+ \blx@msg@aux
+ \fi
+ \string\bibstyle{biblatex}\blx@nl
+ \string\bibdata{%
+ \blx@ctrlfile\blxauxsuffix
+ \ifx#1\@empty
+ \else
+ \dolistloop#1%
+ \fi}\blx@nl
+ \string\citation{biblatex-control}}}
+
+\def\blx@sig@bib{@Comment{$ biblatex control file $}}
+\edef\blx@ver@bib{@Comment{$ biblatex version \blx@bblversion\space $}}
+
+\let\blx@sig@aux\blx@sig@bbl
+\let\blx@ver@aux\blx@ver@bbl
+
+\edef\blx@msg@aux{%
+ \blx@sig@aux\blx@nl
+ \blx@ver@aux\blx@nl
+ \@percentchar\space Do not modify this file!\blx@nl
+ \@percentchar\blx@nl
+ \@percentchar\space This is an auxiliary file
+ used by the 'biblatex' package.\blx@nl
+ \@percentchar\space This file may safely be deleted.
+ It will be recreated as\blx@nl
+ \@percentchar\space required.\blx@nl
+ \@percentchar\blx@nl\string\relax\blx@nl}
+\edef\blx@msg@bib{%
+ \blx@sig@bib\blx@nl
+ \blx@ver@bib\blx@nl
+ Do not modify this file!\blx@nl\blx@nl
+ This is an auxiliary file used
+ by the 'biblatex' package.\blx@nl
+ This file may safely be deleted.
+ It will be recreated as\blx@nl
+ required.\blx@nl\blx@nl}
+
+% User feedback
+
+\renewrobustcmd*{\RequireBiber}[1][2]{%
+ \ifnumgreater{#1}\blx@reqbiber
+ {\numgdef\blx@reqbiber{#1}}
+ {}%
+ \blx@checkbackend{style}}
+\@onlypreamble\RequireBiber
+\let\blx@reqbiber\z@
+
+\def\blx@checkbackend#1{%
+ \ifnum\blx@reqbiber>2 %
+ \blx@error
+ {Biber backend is required by #1}
+ {The selected style or one of the .bib files
+ requires Biber.\MessageBreak It will
+ not work at all with BibTeX.}%
+ \fi}
+
+\def\blx@check@logreq{%
+ \begingroup
+ \ltxrequest{biblatex}{{\iftoggle{blx@runltx}{1}{0}}}{%
+ \provides[type=dynamic]{
+ \def\do##1{\file{##1.aux}}
+ \dolistloop\blx@list@inactive
+ \file{\blx@ctrlfile\blxauxsuffix.bib}
+ }
+ \requires[type=dynamic]{
+ \def\do##1{\file{##1.bbl}}
+ \dolistloop\blx@list@inactive
+ }
+ \ifdef\blx@list@req@edit
+ {\requires[type=editable]{
+ \forlistloop\file\blx@list@req@edit
+ }}
+ {}
+ \ifdef\blx@list@req@stat
+ {\requires[type=static]{
+ \forlistloop\file\blx@list@req@stat
+ }}
+ {}
+ }%
+ \def\do##1{%
+ \ifinlist{##1}{\blx@list@active}
+ {\blx@logreq@bibtex{1}{##1}}
+ {\blx@logreq@bibtex{0}{##1}}}%
+ \dolistloop\blx@list@inactive
+ \endgroup}
+
+\def\blx@logreq@bibtex#1#2{%
+ \logrequest[package=biblatex,priority=5,active=#1]{%
+ \generic{bibtex}
+ \cmdline{%
+ \iftoggle{blx@bibtex8}
+ {\binary{bibtex8}
+ \option{--wolfgang}
+ \option{--min\string_crossrefs \blx@mincrossrefs}}
+ {\binary{bibtex}
+ \option{-min-crossrefs \blx@mincrossrefs}}%
+ \infile{#2}
+ }
+ \input{
+ \file{#2.aux}
+ }
+ \output{
+ \file{#2.bbl}
+ }
+ \provides[type=dynamic]{
+ \file{#2.bbl}
+ }
+ \requires[type=dynamic]{
+ \file{#2.aux}
+ \file{\blx@ctrlfile\blxauxsuffix.bib}
+ }
+ \requires[type=editable]{
+ \ifcsdef{blx@list@bibfiles@#2}
+ {\def\do{\file}
+ \dolistcsloop{blx@list@bibfiles@#2}}
+ {}
+ }
+ \requires[type=static]{
+ \file{biblatex.bst}}
+ }%
+}
+
+\def\blx@logreq@active#1{%
+ \xifinlist{\blx@auxfile}{\blx@list@active}
+ {}
+ {\listxadd\blx@list@active{\blx@auxfile}}%
+ \ifblank{#1}
+ {}
+ {\@latex@warning{#1}}%
+ \blx@rerun@latex
+ \blx@rerun@bibtex}
+
+\def\blx@logreq@inactive{%
+ \xifinlist{\blx@auxfile}{\blx@list@inactive}
+ {}
+ {\listxadd\blx@list@inactive{\blx@auxfile}}}
+
+\def\blx@rerun@bibtex{%
+ \global\toggletrue{blx@runbtx}%
+ \global\let\blx@rerun@bibtex\relax}
+
+% Only the toggle name changes here
+\patchcmd{\blx@check@rerun}{blx@runbiber}{blx@runbtx}{}{}
+
+\def\blx@warn@auxlist{%
+ \begingroup
+ \edef\blx@tempa{Please (re)run BibTeX on the file(s):}%
+ \def\do##1{\appto\blx@tempa{\MessageBreak##1}}%
+ \dolistloop\blx@list@active
+ \blx@warning@noline{%
+ \blx@tempa\MessageBreak
+ and rerun LaTeX afterwards}%
+ \endgroup}
+
+\protected\def\blx@bibreq#1{%
+ \blx@auxwrite\blx@aux{}{\string\citation{#1}}}
+
+% {<string>}
+% This mustn't be robust as it's likely to be used mainly tests and so
+% needs to be expandable
+\renewcommand*\rangelen[1]{%
+ \ifblank{#1}
+ {0}%
+ {%
+ \expandafter\blx@rangelen@range\romannumeral-`\q%
+ #1\bibrangedash\bibrangedash&%
+ }%
+ }
+
+\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
+ \ifblank{#3}
+ {\blx@rangelen@hyphen#1--&}
+ {\blx@rangelen@check{#1}{#2}}%
+}
+\def\blx@rangelen@hyphen#1-#2-#3&{%
+ \ifblank{#3}
+ {1}% No range at all: assume one page
+ {\blx@rangelen@check{#1}{#2}}%
+}
+\def\blx@rangelen@check#1#2{%
+ \expandafter\blx@rangelen@check@aux
+ \number\numexpr
+ \blx@rangelen@check@int{#2}
+ -
+ \blx@rangelen@check@int{#1}
+ + 1
+ \relax
+ &\stop
+}
+\def\blx@rangelen@check@aux#1&#2\stop{%
+ \ifblank{#2}
+ {#1}
+ {-1}%
+}
+\def\blx@rangelen@check@int#1{%
+ \ifblank{#1}
+ {0&}
+ {%
+ \if\number\numexpr0#1-0#1\relax0
+ #1
+ \else
+ 0&
+ \fi
+ }%
+}
+
+% Alter message text
+\patchcmd{\blx@bbl@warn}{Biber}{BibTeX}{}{}
+
+%% Data input
+
+\patchcmd{\blx@bblinput}{\blx@bblfile}{\blx@bblfile\blx@bblsecs}{}{}
+
+\def\blx@bblfile{%
+ \blx@secinit
+ \begingroup
+ \blx@bblstart
+ \ifnum\c@refsection>\z@
+ \edef\blx@auxfile{\jobname\the\c@refsection\blxauxsuffix}%
+ \else
+ \edef\blx@auxfile{\jobname}%
+ \fi
+ \blx@ifsigned{\blx@auxfile}{bbl}
+ {\InputIfFileExists{\blx@auxfile.bbl}
+ {\blx@info@noline{... file '\blx@auxfile.bbl' found}%
+ \global\toggletrue{blx@bbldone}}
+ {\blx@info@noline{... file '\blx@auxfile.bbl' not found}%
+ \typeout{No file \blx@auxfile.bbl.}%
+ \global\togglefalse{blx@bbldone}}}
+ {}%
+ \blx@bblend
+ \endgroup
+ \csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
+
+\def\blx@bblsecs{%
+ \advance\c@refsection\@ne
+ \ifnum\c@refsection>\blx@maxsection
+ \else
+ \blx@bblfile
+ \expandafter\blx@bblsecs
+ \fi}
+
+\def\blx@refsection@ii{%
+ \xdef\blx@auxfile{\jobname\the\c@refsection\blxauxsuffix}%
+ \blx@regbibfiles\blx@auxfile\blx@bibfiles
+ \blx@logreq@inactive
+ \blx@ifsigned{\blx@auxfile}{aux}
+ {\immediate\openout\blx@write\blx@auxfile.aux\relax
+ \global\let\blx@aux\blx@write
+ \blx@auxinit\blx@bibfiles}
+ {}}
+
+\def\blx@endrefsection{%
+ \blx@endrefsegment
+ \ifx\blx@aux\blx@write
+ \immediate\closeout\blx@write
+ \global\let\blx@aux\@mainaux
+ \xdef\blx@auxfile{\jobname}%
+ \fi
+ \global\c@refsection\z@}
+
+% xref support
+
+% {<entrykey>}
+\protected\def\blx@bbl@xref#1{%
+ \ifcsdef{blx@refp@\the\c@refsection @\detokenize{#1}}
+ {}
+ {\listcsxadd{blx@refs@\the\c@refsection}{\detokenize{#1}}}%
+ \listcsxadd{blx@refp@\the\c@refsection @\detokenize{#1}}{\abx@field@entrykey}%
+ \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{\detokenize{#1}}}
+
+\def\blx@addxref#1{%
+ \blx@ifdata{#1}
+ {\begingroup
+ \def\do##1{%
+ \csgappto{blx@data@\the\c@refsection @##1}{%
+ \def\abx@field@xref{#1}}}%
+ \dolistcsloop{blx@refp@\the\c@refsection @#1}%
+ \endgroup}
+ {}%
+ \global\csundef{blx@refp@\the\c@refsection @#1}}
+
+\def\blx@bblend{%
+ \ifcsdef{blx@refs@\the\c@refsection}%
+ {\begingroup
+ \let\do\blx@addxref
+ \dolistcsloop{blx@refs@\the\c@refsection}%
+ \endgroup
+ \global\csundef{blx@refs@\the\c@refsection}}
+ {}%
+ \iftoggle{blx@addset}
+ {\blx@addset
+ \global\togglefalse{blx@addset}}
+ {}}
+
+\def\blx@citation#1#2{%
+ \ifbool{citerequest}
+ {\ifcsdef{blx@setp@\the\c@refsection @#1}
+ {\blx@citation@set{#1}{#2}}
+ {\ifcsdef{blx@setc@\the\c@refsection @#1}
+ {\blx@citation@inset{#1}{#2}}
+ {\blx@citation@entry{#1}{#2}}}%
+ \ifcsdef{blx@refc@\the\c@refsection @#1}%
+ {\blx@citation@xref{#1}}
+ {}}
+ {}}
+
+\def\blx@citation@xref#1{%
+ \begingroup
+ \edef\blx@tempa{blx@refp@\the\c@refsection @%
+ \csname blx@refc@\the\c@refsection @#1\endcsname}%
+ \ifcsdef\blx@tempa
+ {\ifinlistcs{#1}\blx@tempa
+ {}
+ {\listcsxadd\blx@tempa{#1}}%
+ \blx@tempcnta\z@
+ \def\do##1{\advance\blx@tempcnta\@ne}%
+ \dolistcsloop\blx@tempa}
+ {\listcsxadd\blx@tempa{#1}%
+ \blx@tempcnta\@ne}%
+ \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax
+ \else
+ \expandafter\expandafter\expandafter\blx@citation@entry
+ \expandafter\expandafter\expandafter{%
+ \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef
+ \fi}
+
+% Control file
+
+\edef\blx@ctrl{%
+ \blx@msg@bib
+ @Control\string{biblatex-control,\blx@nl
+ \space\space options = \string{%
+ \blx@bblversion:%
+ \noexpand\iftoggle{blx@debug}{1}{0}:%
+ \noexpand\iftoggle{blx@bibtex8}{1}{0}:%
+ \noexpand\iftoggle{blx@sortcase}{1}{0}:%
+ \noexpand\iftoggle{blx@useprefix}{1}{0}:%
+ \noexpand\iftoggle{blx@useauthor}{1}{0}:%
+ \noexpand\iftoggle{blx@useeditor}{1}{0}:%
+ \noexpand\iftoggle{blx@usetranslator}{1}{0}:%
+ \noexpand\iftoggle{blx@labelalpha}{1}{0}:%
+ \noexpand\iftoggle{blx@labeldate}{1}{0}:%
+ \noexpand\iftoggle{blx@singletitle}{1}{0}:%
+ \noexpand\csuse{blx@sorting@\noexpand\blx@sorting}:%
+ \noexpand\blx@maxcitenames:%
+ \noexpand\blx@mincitenames:%
+ \noexpand\blx@maxline:%
+ \noexpand\detokenize\noexpand\expandafter{\noexpand\labelalphaothers}:%
+ \noexpand\detokenize\noexpand\expandafter{\noexpand\blx@sorting}%
+ \string},\blx@nl
+ \string}%
+}
+
+\def\blx@ctrlwrite{%
+ \immediate\openout\blx@write\blx@ctrlfile\blxauxsuffix.bib\relax
+ \blx@auxwrite\blx@write{}{\blx@ctrl}%
+ \immediate\closeout\blx@write}
+
+% Translate sorting schemes to BibTeX form
+
+\def\blx@sorting@none{0}
+\def\blx@sorting@nty{1}
+\def\blx@sorting@nyt{2}
+\def\blx@sorting@nyvt{3}
+\def\blx@sorting@anyt{12}
+\def\blx@sorting@anyvt{13}
+\def\blx@sorting@ynt{21}
+\def\blx@sorting@ydnt{22}
+\def\blx@sorting@debug{99}
+
+% Disable some interfaces
+
+\renewrobustcmd*{\DeclareSortingScheme}[3][]{}
+
+\def\blx@checkencoding{}
+
+\AtBeginDocument{%
+ \blx@checkencoding
+ \if@filesw
+ \blx@auxinit\blx@bibfiles
+ \fi}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-dm.def b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
index d5e65b6fbdb..4312836dd97 100644
--- a/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
+++ b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
@@ -65,32 +65,32 @@
\xdef\blx@xml@datamodel@constraintfieldsub#1{%
~~~~~~~~~~<bcf:field>#1</bcf:field>\blx@nl}
-
% Data model specification macros
\newrobustcmd*{\ResetDatamodelEntrytypes}{%
- \global\cslet{blx@bcf@datamodel@entrytypes}\@empty
- \global\cslet{blx@biber@datamodel@entrytypes}\@empty}
+ \global\let\blx@bcf@datamodel@entrytypes\@empty
+ \global\let\blx@datamodel@entrytypes\@empty}
\newrobustcmd*{\ResetDatamodelFields}{%
- \global\cslet{blx@biber@datamodel@labelfields}\@empty
- \global\cslet{blx@bcf@datamodel@fields}\@empty
- \global\cslet{blx@biber@datamodel@fields}\@empty
- \global\cslet{blx@biber@datamodel@names}\@empty
- \global\cslet{blx@biber@datamodel@lists}\@empty}
+ \global\let\blx@datamodel@labelfields\@empty
+ \global\let\blx@bcf@datamodel@fields\@empty
+ \global\let\blx@datamodel@fields\@empty
+ \global\let\blx@datamodel@names\@empty
+ \global\let\blx@datamodel@dates\@empty
+ \global\let\blx@datamodel@lists\@empty}
\newrobustcmd*{\ResetDatamodelEntryfields}{%
- \global\cslet{blx@bcf@datamodel@entryfields}\@empty}
+ \global\let\blx@bcf@datamodel@entryfields\@empty}
\newrobustcmd*{\ResetDatamodelConstraints}{%
- \global\cslet{blx@bcf@datamodel@constraints}\@empty}
+ \global\letblx@bcf@datamodel@constraints\@empty}
\newrobustcmd*{\DeclareDatamodelEntrytypes}[2][]{%
\begingroup
\let\blx@tempa\@empty
\def\do##1{%
- \ifinlistcs{##1}{blx@biber@datamodel@entrytypes}
+ \ifinlistcs{##1}{blx@datamodel@entrytypes}
{}
- {\listcsgadd{blx@biber@datamodel@entrytypes}{##1}}%
+ {\listcsgadd{blx@datamodel@entrytypes}{##1}}%
\xappto\blx@bcf@datamodel@entrytypes{%
\blx@xml@datamodel@entrytype{\blx@tempa}{##1}}}%
\ifblank{#1}
@@ -106,7 +106,7 @@
\newrobustcmd*{\DeclareDatamodelFields}[2][]{%
\begingroup
- \let\blx@dm@type\@empty
+ \let\blx@dm@fieldtype\@empty
\let\blx@dm@datatype\@empty
\let\blx@dm@format\@empty
\boolfalse{dmskipout}%
@@ -114,25 +114,47 @@
\let\blx@tempa\@empty
\setkeys{blx@datamodel@field}{#1}%
\def\do##1{%
+ % Generic lists of field/datatypes for testing bib fields
+ \ifinlistcs{##1}{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype}
+ {}
+ {\listcsgadd{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype}{##1}}%
+ \ifinlistcs{##1}{blx@datamodelfields@datatypes@\blx@dm@datatype}
+ {}
+ {\listcsgadd{blx@datamodelfields@datatypes@\blx@dm@datatype}{##1}}%
+ \ifinlistcs{##1}{blx@datamodelfields@types@\blx@dm@fieldtype @\blx@dm@datatype}
+ {}
+ {\listcsgadd{blx@datamodelfields@types@\blx@dm@fieldtype @\blx@dm@datatype}{##1}}%
+
+ % Processed convenience lists of various datamodel fields
+
+ % add to list of dates. These are skipout in the default datamodel but
+ % we want to auto-create some internals/options for all date fields in
+ % biblatex
+ \ifboolexpr{%
+ test {\ifcsstring{blx@dm@datatype}{date}}
+ and
+ not test {\ifinlistcs{##1}{blx@datamodel@dates}}}
+ {\listcsgadd{blx@datamodel@dates}{##1}}
+ {}%
\ifboolexpr{% add to list of label fields
not bool {dmskipout}
and
bool {dmlabelfield}
and
- not test {\ifinlistcs{##1}{blx@biber@datamodel@labelfields}}}
- {\listcsgadd{blx@biber@datamodel@labelfields}{##1}}
+ not test {\ifinlistcs{##1}{blx@datamodel@labelfields}}}
+ {\listcsgadd{blx@datamodel@labelfields}{##1}}
{}%
\ifboolexpr{% add to list of names if it is a name which appears in .bbl
not bool {dmskipout}
and
test {\ifcsstring{blx@dm@datatype}{name}}
and
- not test {\ifinlistcs{##1}{blx@biber@datamodel@names}}}
- {\listcsgadd{blx@biber@datamodel@names}{##1}}
+ not test {\ifinlistcs{##1}{blx@datamodel@names}}}
+ {\listcsgadd{blx@datamodel@names}{##1}}
{}%
\ifboolexpr{% add to list of lists if it is a list which appears in .bbl
not bool {dmskipout}
- test {\ifcsstring{blx@dm@type}{list}}
+ test {\ifcsstring{blx@dm@fieldtype}{list}}
and
( test {\ifcsstring{blx@dm@datatype}{literal}}
or
@@ -143,50 +165,85 @@
test {\ifcsstring{blx@dm@datatype}{verbatim}}
)
and
- not test {\ifinlistcs{##1}{blx@biber@datamodel@lists}}}
- {\listcsgadd{blx@biber@datamodel@lists}{##1}}
+ not test {\ifinlistcs{##1}{blx@datamodel@lists}}}
+ {\listcsgadd{blx@datamodel@lists}{##1}}
{}%
\ifboolexpr{% add to list of fields unless certain type/datatype etc.
bool {dmskipout}
or
test {\ifcsstring{blx@dm@datatype}{name}}
or
- ( test {\ifcsstring{blx@dm@type}{list}}
+ ( test {\ifcsstring{blx@dm@fieldtype}{list}}
and
test {\ifcsstring{blx@dm@datatype}{literal}}
)
or
- ( test {\ifcsstring{blx@dm@type}{list}}
+ ( test {\ifcsstring{blx@dm@fieldtype}{list}}
and
test {\ifcsstring{blx@dm@datatype}{key}}
)
or
- ( test {\ifcsstring{blx@dm@type}{list}}
+ ( test {\ifcsstring{blx@dm@fieldtype}{list}}
and
test {\ifcsstring{blx@dm@datatype}{uri}}
)
or
- ( test {\ifcsstring{blx@dm@type}{list}}
+ ( test {\ifcsstring{blx@dm@fieldtype}{list}}
and
test {\ifcsstring{blx@dm@datatype}{verbatim}}
)
or
- ( test {\ifcsstring{blx@dm@type}{field}}
+ ( test {\ifcsstring{blx@dm@fieldtype}{field}}
and
test {\ifcsstring{blx@dm@datatype}{code}}
)
or
- test {\ifinlistcs{##1}{blx@biber@datamodel@fields}}}
+ test {\ifinlistcs{##1}{blx@datamodel@fields}}}
{}
- {\listcsgadd{blx@biber@datamodel@fields}{##1}}%
+ {\listcsgadd{blx@datamodel@fields}{##1}}%
\xappto\blx@bcf@datamodel@fields{%
- \blx@xml@datamodel@field{\blx@tempa}{##1}}}%
- \docsvlist{#2}
- \endgroup}
+ \blx@xml@datamodel@field{\blx@tempa}{##1}}%
+
+
+ % Dateparts are special - auto-create for all date fields
+ \ifcsstring{blx@dm@datatype}{date}
+ {\begingroup
+ \let\blx@tempa\@empty% reset setkeys buffer due to manual calls below
+ % add to list of dates. These are skipout in the default datamodel but
+ % we want to auto-create some internals/options for all date fields in
+ % biblatex
+ \ifinlistcs{##1}{blx@datamodel@dates}
+ {}
+ {\listcsgadd{blx@datamodel@dates}{##1}}%
+ \ifinlistcs{##1}{blx@datamodel@fields}
+ {}
+ {\listcsgadd{blx@datamodel@fields}{##1}}%
+ \StrCut{##1}{date}\blx@datetype\blx@tempnull
+ % *endyear
+ \xifinlistcs{\blx@datetype endyear}{blx@datamodel@fields}
+ {}
+ {\listcsxadd{blx@datamodel@fields}{\blx@datetype endyear}}%
+ \setkeys{blx@datamodel@field}{type=field,datatype=datepart,nullok}%
+ \xappto\blx@bcf@datamodel@fields{%
+ \blx@xml@datamodel@field{\blx@tempa}{\blx@datetype endyear}}%
+ % *year, *month, *day, *endmonth, *endday
+ \def\do####1{%
+ \let\blx@tempa\@empty% reset setkeys buffer due to loop calls
+ \xifinlistcs{\blx@datetype ####1}{blx@datamodel@fields}
+ {}
+ {\listcsxadd{blx@datamodel@fields}{\blx@datetype ####1}}%
+ \setkeys{blx@datamodel@field}{type=field,datatype=datepart}%
+ \xappto\blx@bcf@datamodel@fields{%
+ \blx@xml@datamodel@field{\blx@tempa}{\blx@datetype ####1}}}%
+ \docsvlist{year,month,day,endmonth,endday}%
+ \endgroup}
+ {}}%
+ \docsvlist{#2}
+ \endgroup}
\define@key{blx@datamodel@field}{type}{% characters
\eappto\blx@tempa{ fieldtype="#1"}%
- \def\blx@dm@type{#1}}
+ \def\blx@dm@fieldtype{#1}}
\define@key{blx@datamodel@field}{datatype}{% characters
\eappto\blx@tempa{ datatype="#1"}%
\def\blx@dm@datatype{#1}}
@@ -354,6 +411,7 @@
music,
mvcollection,
mvreference,
+ mvproceedings,
mvbook,
online,
patent,
@@ -374,28 +432,6 @@
\DeclareDatamodelEntrytypes[skipout]{xdata}
-\DeclareDatamodelFields[type=field, datatype=datepart]{
- month,
- year,
- day,
- endday,
- endmonth,
- eventday,
- eventendday,
- eventendmonth,
- eventmonth,
- eventyear,
- origday,
- origendday,
- origendmonth,
- origmonth,
- origyear,
- urlday,
- urlendday,
- urlendmonth,
- urlmonth,
- urlyear}
-
\DeclareDatamodelFields[type=field, datatype=literal]{
abstract,
addendum,
@@ -464,12 +500,6 @@
shortseries,
shorttitle}
-\DeclareDatamodelFields[type=field, datatype=datepart, nullok]{
- urlendyear,
- endyear,
- eventendyear,
- origendyear}
-
\DeclareDatamodelFields[type=field, datatype=literal, skipout]{
sorttitle,
sortshorthand,
@@ -653,6 +683,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -707,6 +738,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -762,6 +794,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -817,6 +850,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -855,6 +889,7 @@
\DeclareDatamodelEntryfields[booklet]{
author,
editor,
+ editortype,
title,
day,
endday,
@@ -905,6 +940,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -960,6 +996,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -1012,6 +1049,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -1061,6 +1099,7 @@
doi,
edition,
editor,
+ editortype,
eprint,
eprintclass,
eprinttype,
@@ -1103,6 +1142,7 @@
author,
doi,
editor,
+ editortype,
eprint,
eprintclass,
eprinttype,
@@ -1130,6 +1170,7 @@
addendum,
author,
editor,
+ editortype,
language,
month,
note,
@@ -1191,6 +1232,7 @@
editora,
editorb,
editorc,
+ editortype,
editoratype,
editorbtype,
editorctype,
@@ -1218,6 +1260,7 @@
\DeclareDatamodelEntryfields[mvproceedings]{
editor,
+ editortype,
title,
day,
endday,
@@ -1262,6 +1305,7 @@
\DeclareDatamodelEntryfields[proceedings]{
editor,
+ editortype,
title,
day,
endday,
@@ -1314,6 +1358,7 @@
\DeclareDatamodelEntryfields[inproceedings]{
author,
editor,
+ editortype,
title,
booktitle,
day,
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx
index be019d10e5f..26625b06fb7 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx
@@ -7,7 +7,7 @@
\newbibmacro*{cite}{%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelalpha}%
\printfield{extraalpha}}}
@@ -15,7 +15,7 @@
\ifnameundef{labelname}
{\printfield[citetitle]{labeltitle}}
{\printnames{labelname}}%
- \addspace\bibopenbracket
+ \printdelim{namelabeldelim}\bibopenbracket
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx
index d232ebfebc8..1e114d1bb81 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx
@@ -10,7 +10,7 @@
\newbibmacro*{cite}{%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelalpha}%
\printfield{extraalpha}}}
@@ -22,7 +22,7 @@
{\printnames{labelname}}%
\setunit{%
\global\booltrue{cbx:parens}%
- \addspace\bibopenbracket}%
+ \printdelim{namelabeldelim}\bibopenbracket}%
\stepcounter{textcitecount}%
\savefield{namehash}{\cbx@lasthash}}%
\ifnumequal{\value{citecount}}{1}
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx
index d5e5183de32..bbc4229864f 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx
@@ -28,7 +28,7 @@
{\ifnameundef{labelname}
{}
{\printnames{labelname}%
- \setunit{\nametitledelim}}%
+ \setunit{\printdelim{nametitledelim}}}%
\savefield{namehash}{\cbx@lasthash}}%
\usebibmacro{cite:title}}
{\usebibmacro{cite:shorthand}%
@@ -49,7 +49,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}}%
+ \printdelim{nametitledelim}\bibopenparen}}%
\stepcounter{textcitecount}%
\savefield{namehash}{\cbx@lasthash}}%
\ifnumequal{\value{citecount}}{1}
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx
index 2f7c68df495..3b6618314b9 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx
@@ -23,7 +23,7 @@
{\ifnameundef{labelname}
{}
{\printnames{labelname}%
- \setunit{\nametitledelim}}%
+ \setunit{\printdelim{nametitledelim}}}%
\usebibmacro{cite:title}}}%
{\usebibmacro{cite:shorthand}}}
@@ -42,7 +42,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}}%
+ \printdelim{nametitledelim}\bibopenparen}}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx
index 9d248a215eb..f8f2f7e5371 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx
@@ -39,7 +39,7 @@
{\ifnameundef{labelname}
{}
{\printnames{labelname}%
- \setunit{\nametitledelim}}%
+ \setunit{\printdelim{nametitledelim}}}%
\savefield{namehash}{\cbx@lasthash}}%
\usebibmacro{cite:title}}}%
{\usebibmacro{cite:shorthand}%
@@ -62,7 +62,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}}%
+ \printdelim{nametitledelim}\bibopenparen}}%
\stepcounter{textcitecount}%
\savefield{namehash}{\cbx@lasthash}}%
\ifnumequal{\value{citecount}}{1}
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx
index c0e8a1fe57c..85cce7eedcd 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx
@@ -17,7 +17,7 @@
{\ifsingletitle
{\printtext[bibhyperref]{\printnames{labelname}}}
{\printnames{labelname}%
- \setunit{\nametitledelim}%
+ \setunit{\printdelim{nametitledelim}}%
\usebibmacro{cite:title}}}%
\savefield{namehash}{\cbx@lasthash}}}
{\usebibmacro{cite:shorthand}%
@@ -53,7 +53,7 @@
{\printnames{labelname}
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}%
+ \printdelim{nametitledelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx
index a0f7fef85ac..d83c432fd56 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx
@@ -11,7 +11,7 @@
{\ifsingletitle
{\printtext[bibhyperref]{\printnames{labelname}}}
{\printnames{labelname}%
- \setunit{\nametitledelim}%
+ \setunit{\printdelim{nametitledelim}}%
\usebibmacro{cite:title}}}}%
{\usebibmacro{cite:shorthand}}}
@@ -29,7 +29,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}%
+ \printdelim{nametitledelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx
index e485f4fadd9..54f10d6baaf 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx
@@ -19,7 +19,7 @@
{\ifsingletitle
{\printtext[bibhyperref]{\printnames{labelname}}}
{\printnames{labelname}%
- \setunit{\nametitledelim}%
+ \setunit{\printdelim{nametitledelim}}%
\usebibmacro{cite:title}}}%
\savefield{namehash}{\cbx@lasthash}}}}
{\usebibmacro{cite:shorthand}%
@@ -61,7 +61,7 @@
{\printnames{labelname}
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}%
+ \printdelim{nametitledelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx
index aff0a63a496..8d52c873f3a 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx
@@ -12,7 +12,7 @@
{\ifnameundef{labelname}
{}
{\printnames{labelname}%
- \setunit{\nametitledelim}}%
+ \setunit{\printdelim{nametitledelim}}}%
\usebibmacro{cite:title}}%
{\usebibmacro{cite:shorthand}}}
@@ -27,7 +27,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nametitledelim\bibopenparen}}%
+ \printdelim{nametitledelim}\bibopenparen}}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx
index 966e516fafa..a7774c5faa0 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx
@@ -27,7 +27,7 @@
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
- \setunit{\nonameyeardelim}%
+ \setunit{\printdelim{nonameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}%
\usebibmacro{cite:reinit}}
{\iffieldequals{namehash}{\cbx@lasthash}
@@ -39,7 +39,7 @@
\usebibmacro{cite:labelyear+extrayear}%
\savefield{labelyear}{\cbx@lastyear}}}
{\printnames{labelname}%
- \setunit{\nameyeardelim}%
+ \setunit{\printdelim{nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}%
\savefield{namehash}{\cbx@lasthash}%
\savefield{labelyear}{\cbx@lastyear}}}}
@@ -85,7 +85,7 @@
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nonameyeardelim\bibopenparen}%
+ \printdelim{nonameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
@@ -94,7 +94,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nameyeardelim\bibopenparen}%
+ \printdelim{nameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx
index bf8cc731263..96ffba35fba 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx
@@ -22,9 +22,9 @@
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
- \setunit{\nonameyeardelim}}
+ \setunit{\printdelim{nonameyeardelim}}}
{\printnames{labelname}%
- \setunit{\nameyeardelim}}%
+ \setunit{\printdelim{nameyeardelim}}}%
\usebibmacro{cite:labelyear+extrayear}}}
{\usebibmacro{cite:shorthand}}}
@@ -45,7 +45,7 @@
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nonameyeardelim\bibopenparen}%
+ \printdelim{nonameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
@@ -54,7 +54,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nameyeardelim\bibopenparen}%
+ \printdelim{nameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx
index d662299bcb0..6481a00ae92 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx
@@ -37,7 +37,7 @@
{\usebibmacro{cite:ibid}}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
- \setunit{\nonameyeardelim}%
+ \setunit{\printdelim{nonameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}%
\usebibmacro{cite:reinit}}
{\iffieldequals{namehash}{\cbx@lasthash}
@@ -49,7 +49,7 @@
\usebibmacro{cite:labelyear+extrayear}%
\savefield{labelyear}{\cbx@lastyear}}}
{\printnames{labelname}%
- \setunit{\nameyeardelim}%
+ \setunit{\printdelim{nameyeardelim}}%
\usebibmacro{cite:labelyear+extrayear}%
\savefield{namehash}{\cbx@lasthash}%
\savefield{labelyear}{\cbx@lastyear}}}}}
@@ -97,7 +97,7 @@
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nonameyeardelim\bibopenparen}%
+ \printdelim{nonameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
@@ -108,7 +108,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nameyeardelim\bibopenparen}%
+ \printdelim{nameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx
index c36c9729b8a..949a35be915 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx
@@ -11,9 +11,9 @@
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
- \setunit{\nonameyeardelim}}
+ \setunit{\printdelim{nonameyeardelim}}}
{\printnames{labelname}%
- \setunit{\nameyeardelim}}%
+ \setunit{\printdelim{nameyeardelim}}}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
@@ -30,7 +30,7 @@
{\usebibmacro{cite:label}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nonameyeardelim\bibopenparen}%
+ \printdelim{nonameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
@@ -39,7 +39,7 @@
{\printnames{labelname}%
\setunit{%
\global\booltrue{cbx:parens}%
- \nameyeardelim\bibopenparen}%
+ \printdelim{nameyeardelim}\bibopenparen}%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
index d1ecbd63e9c..0f8942fa118 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx
@@ -35,9 +35,9 @@
\newbibmacro*{cite:comp:comp}{%
\ifboolexpr{
- ( test {\iffieldundef{prefixnumber}} and test {\ifundef\cbx@lastprefix} )
+ ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} )
or
- test {\iffieldequals{prefixnumber}{\cbx@lastprefix}}
+ test {\iffieldequals{labelprefix}{\cbx@lastprefix}}
}
{\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}}
{\savefield{entrykey}{\cbx@lastkey}%
@@ -50,11 +50,11 @@
{\multicitedelim}
{}%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelnumber}}}}}
{\usebibmacro{cite:comp:end}}%
\setcounter{cbx@tempcntb}{\thefield{labelnumber}}%
- \savefield{prefixnumber}{\cbx@lastprefix}}
+ \savefield{labelprefix}{\cbx@lastprefix}}
\newbibmacro*{cite:comp:end}{%
\usebibmacro{cite:dump}%
@@ -62,7 +62,7 @@
{\multicitedelim}
{}%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelnumber}}}
\newbibmacro*{cite:comp:inset}{%
@@ -71,7 +71,7 @@
{\multicitedelim}
{}%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelnumber}%
\printfield{entrysetcount}}%
\setcounter{cbx@tempcntb}{-1}}
@@ -91,7 +91,7 @@
{\multicitedelim}%
\bibhyperref[\cbx@lastkey]{%
\ifdef\cbx@lastprefix
- {\printtext[prefixnumber]{\cbx@lastprefix}}
+ {\printtext[labelprefix]{\cbx@lastprefix}}
{}%
\printtext[labelnumber]{\cbx@lastnumber}}}
{}%
@@ -113,7 +113,7 @@
{\printfield[citetitle]{labeltitle}}
{\printnames{labelname}}%
\global\booltrue{cbx:parens}%
- \addspace\bibopenbracket%
+ \printdelim{namelabeldelim}\bibopenbracket%
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx
index 065f2ad2c7c..e64e19e810f 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx
@@ -12,7 +12,7 @@
\newbibmacro*{cite}{%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelnumber}%
\ifbool{bbx:subentry}
{\printfield{entrysetcount}}
@@ -22,7 +22,7 @@
\ifnameundef{labelname}
{\printfield[citetitle]{labeltitle}}
{\printnames{labelname}}%
- \addspace\bibopenbracket
+ \printdelim{namelabeldelim}\bibopenbracket
\ifnumequal{\value{citecount}}{1}
{\usebibmacro{prenote}}
{}%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
index 67af09ca407..5c6fa4b1009 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx
@@ -14,7 +14,7 @@
\newbibmacro*{cite}{%
\printtext[bibhyperref]{%
- \printfield{prefixnumber}%
+ \printfield{labelprefix}%
\printfield{labelnumber}%
\ifbool{bbx:subentry}
{\printfield{entrysetcount}}
@@ -28,7 +28,7 @@
{\printnames{labelname}}%
\setunit{%
\global\booltrue{cbx:parens}%
- \addspace\bibopenbracket}%
+ \printdelim{namelabeldelim}\bibopenbracket}%
\stepcounter{textcitecount}%
\savefield{namehash}{\cbx@lasthash}}%
\ifnumequal{\value{citecount}}{1}
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx
index 846a0f75f38..d4a45642373 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx
@@ -119,7 +119,7 @@
\newbibmacro*{cite:short}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}%
+ \setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}}}
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx
index df81985a88b..d4fc145459d 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx
@@ -120,7 +120,7 @@
\newbibmacro*{cite:short}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}%
+ \setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}}}
@@ -168,7 +168,7 @@
{\printnames{labelname}}%
\ifsingletitle
{}
- {\setunit*{\nametitledelim}%
+ {\setunit*{\printdelim{nametitledelim}}%
\printfield[title]{labeltitle}}%
\setunit*{\addcomma\space}%
\printtext{%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx
index b22c4da3cb9..de06094186f 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx
@@ -111,7 +111,7 @@
\newbibmacro*{cite:short}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}%
+ \setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}}}
@@ -145,7 +145,7 @@
{\printnames{labelname}}%
\ifsingletitle
{}
- {\setunit*{\nametitledelim}%
+ {\setunit*{\printdelim{nametitledelim}}%
\printfield[title]{labeltitle}}%
\setunit*{\addcomma\space}%
\printtext{%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx
index b1729fe0d91..fe450f85e38 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx
@@ -134,11 +134,11 @@
\newbibmacro*{cite:name}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}}
+ \setunit*{\printdelim{nametitledelim}}}
\newbibmacro*{cite:idem}{%
\bibstring[\mkibid]{idem\thefield{gender}}%
- \setunit{\nametitledelim}}
+ \setunit{\printdelim{nametitledelim}}}
\newbibmacro*{cite:title}{%
\printtext[bibhyperlink]{%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx
index 6cdd7b1cde3..acf463877aa 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx
@@ -135,16 +135,16 @@
\newbibmacro*{cite:name}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}}
+ \setunit*{\printdelim{nametitledelim}}}
\newbibmacro*{cite:idem}{%
\bibstring[\mkibid]{idem\thefield{gender}}%
- \setunit{\nametitledelim}}
+ \setunit{\printdelim{nametitledelim}}}
\newbibmacro*{cite:title}{%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}%
- \setunit{\nametitledelim}%
+ \setunit{\printdelim{nametitledelim}}%
\bibstring[\mkibid]{opcit}}}
\newbibmacro*{cite:ibid}{%
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx
index 5ef371196da..54e2b3aecfa 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx
@@ -115,13 +115,13 @@
\newbibmacro*{cite:short}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}%
+ \setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}}}
\newbibmacro*{cite:opcit}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}%
+ \setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\bibstring[\mkibid]{opcit}}}
diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx
index f373895c82a..e798dec1839 100644
--- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx
+++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx
@@ -100,7 +100,7 @@
\newbibmacro*{cite:short}{%
\printnames{labelname}%
- \setunit*{\nametitledelim}%
+ \setunit*{\printdelim{nametitledelim}}%
\printtext[bibhyperlink]{%
\printfield[citetitle]{labeltitle}}}
diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
index dc87d06d0f1..9b116925185 100644
--- a/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
@@ -77,175 +77,175 @@
references = {{Refer\`encies}{Refer\`encies}},
shorthands = {{Llista d'abreviatures}{Abreviatures}},
editor = {{editor}{ed\adddot}},
- editors = {{editors}{eds\adddot}},
+ editors = {{editors}{ed\adddot}},
compiler = {{compilador}{comp\adddot}},% Revisar
- compilers = {{compiladors}{comps\adddot}},% Revisar
+ compilers = {{compiladors}{comp\adddot}},% Revisar
redactor = {{redactor}{red\adddot}},
- redactors = {{redactors}{reds\adddot}},
+ redactors = {{redactors}{red\adddot}},
reviser = {{revisor}{rev\adddot}},
- revisers = {{revisors}{revs\adddot}},
+ revisers = {{revisors}{rev\adddot}},
founder = {{fundador}{fund\adddot}},
- founders = {{fundadors}{funds\adddot}},
+ founders = {{fundadors}{fund\adddot}},
continuator = {{continuador}{cont\adddot}},
- continuators = {{continuadors}{conts\adddot}},
+ continuators = {{continuadors}{cont\adddot}},
collaborator = {{co\l.laborador}{co\l.l\adddot}},% \l* -> catalan.ldf (babel)
- collaborators = {{co\l.laboradors}{co\l.ls\adddot}},
+ collaborators = {{co\l.laboradors}{co\l.l\adddot}},
translator = {{traductor}{trad\adddot}},
- translators = {{traductors}{trads\adddot}},
+ translators = {{traductors}{trad\adddot}},
commentator = {{comentarista}{com\adddot}},
- commentators = {{comentaristes}{coms\adddot}},
+ commentators = {{comentaristes}{com\adddot}},
annotator = {{anotador}{anot\adddot}},
- annotators = {{anotadors}{anots\adddot}},
+ annotators = {{anotadors}{anot\adddot}},
commentary = {{comentari}{com\adddot}},
annotations = {{notes}{n\adddot}},
introduction = {{introducci\'o}{intr\adddot}},
foreword = {{pr\`oleg}{pr\`ol\adddot}},
afterword = {{ep{\'\i}leg}{ep\adddot}},
editortr = {{editor i traductor}{ed\adddotspace i trad\adddot}},
- editorstr = {{editors i traductors}{eds\adddotspace i trads\adddot}},
+ editorstr = {{editors i traductors}{ed\adddotspace i trad\adddot}},
editorco = {{editor i comentarista}{ed\adddotspace i com\adddot}},
- editorsco = {{editors i comentaristes}{eds\adddotspace i coms\adddot}},
+ editorsco = {{editors i comentaristes}{ed\adddotspace i com\adddot}},
editoran = {{editor i anotador}{ed\adddotspace i anot\adddot}},
- editorsan = {{editors i anotadors}{eds\adddotspace i anots\adddot}},
+ editorsan = {{editors i anotadors}{ed\adddotspace i anot\adddot}},
editorin = {{editor i autor de la introducci\'o}
{ed\adddotspace i aut\adddotspace de la intr\adddot}},
editorsin = {{editors i autors de la introducci\'o}
- {eds\adddotspace i auts\adddotspace de la intr\adddot}},
+ {ed\adddotspace i aut\adddotspace de la intr\adddot}},
editorfo = {{editor i autor del pr\`oleg}
{ed\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editorsfo = {{editors i autors del pr\`oleg}
- {eds\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {ed\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editoraf = {{editor i autor de l'ep{\'\i}leg} %
{ed\adddotspace i aut\adddotspace de l'ep\adddot}},
editorsaf = {{editors i autors de l'ep{\'\i}leg} %
- {eds\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {ed\adddotspace i aut\adddotspace de l'ep\adddot}},
editortrco = {{editor, traductor i comentarista}
{ed.,\addabbrvspace trad\adddotspace i com\adddot}},
editorstrco = {{editors, traductors i comentaristes}
- {eds.,\addabbrvspace trads\adddotspace i coms\adddot}},
+ {ed.,\addabbrvspace trad\adddotspace i com\adddot}},
editortran = {{editor, traductor i anotador}
{ed.,\addabbrvspace trad\adddotspace i anot\adddot}},
editorstran = {{editors, traductors i anotadors}
- {eds.,\addabbrvspace trads\adddotspace i anots\adddot}},
+ {ed.,\addabbrvspace trad\adddotspace i anot\adddot}},
editortrin = {{editor, traductor i autor de la introducci\'o}
{ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de la intr\adddot}},
editorstrin = {{editors, traductors i autors de la introducci\'o}
- {eds.,\addabbrvspace trads\adddotspace i auts\adddotspace de la intr\adddot}},
+ {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de la intr\adddot}},
editortrfo = {{editor, traductor i autor del pr\`oleg}
{ed.,\addabbrvspace trad\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editorstrfo = {{editors, traductors i autors del pr\`oleg}
- {eds.,\addabbrvspace trads\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editortraf = {{editor, traductor i autor de l'ep{\'\i}leg}
{ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de l'ep\adddot}},
editorstraf = {{editors, traductors i autors de l'ep{\'\i}leg}
- {eds.,\addabbrvspace trads\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {ed.,\addabbrvspace trad\adddotspace i aut\adddotspace de l'ep\adddot}},
editorcoin = {{editor, comentarista i autor de la introducci\'o}
{ed.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
editorscoin = {{editors, comentaristes i autors de la introducci\'o}
- {eds.,\addabbrvspace coms\adddotspace i auts\adddotspace de la intr\adddot}},
+ {ed.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
editorcofo = {{editor, comentarista i autor del pr\`oleg}
{ed.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editorscofo = {{editors, comentaristes i autors del pr\`oleg}
- {eds.,\addabbrvspace coms\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {ed.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editorcoaf = {{editor, comentarista i autor de l'ep{\'\i}leg}
{ed.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}},
editorscoaf = {{editors, comentaristes i autors de l'ep{\'\i}leg}
- {eds.,\addabbrvspace coms\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {ed.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}},
editoranin = {{editor, anotador i autor de la introducci\'o}
{ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}},
editorsanin = {{editors, anotadors i autors de la introducci\'o}
- {eds.,\addabbrvspace anots\adddotspace i auts\adddotspace de la intr\adddot}},
+ {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}},
editoranfo = {{editor, anotador i autor del pr\`oleg}
{ed.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editorsanfo = {{editors, anotadors i autors del pr\`oleg}
- {eds.,\addabbrvspace anots\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}},
editoranaf = {{editor, anotador i autor de l'ep{\'\i}leg}
{ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}},
editorsanaf = {{editors, anotadors i autors de l'ep{\'\i}leg}
- {eds.,\addabbrvspace anots\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {ed.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}},
editortrcoin = {{editor, traductor, comentarista i autor de la introducci\'o}
{ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
editorstrcoin = {{editors, traductors, comentaristes i autors de la introducci\'o}
- {eds.,\addabbrvspace trads.,\addabbrvspace coms\adddotspace i aut\adddotspace de la intr\adddot}},
+ {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
editortrcofo = {{editor, traductor, comentarista i autor del pr\`oleg}
{ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot }},
editorstrcofo = {{editors, traductors, comentaristes i autors del pr\`oleg}
- {eds.,\addabbrvspace trads.,\addabbrvspace coms\adddotspace i auts\adddotspace del pr\`ol\adddot }},
+ {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot }},
editortrcoaf = {{editor, traductor, comentarista i autor de l'ep{\'\i}leg}
{ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}},
editorstrcoaf = {{editors, traductors, comentaristes i autors de l'ep{\'\i}leg}
- {eds.,\addabbrvspace trads.,\addabbrvspace coms\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {ed.,\addabbrvspace trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}},
editortranin = {{editor, traductor, anotador i autor de la introducci\'o}
{ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}},
editorstranin = {{editors, traductors, anotadors i autors de la introducci\'o}
- {eds.,\addabbrvspace trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de la intr\adddot}},
+ {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}},
editortranfo = {{editor, traductor, anotador i autor del pr\`oleg}
{ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de pr\`ol\adddot}},
editorstranfo = {{editors, traductors, anotadors i autors del pr\`oleg}
- {eds.,\addabbrvspace trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de pr\`ol\adddot}},
+ {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de pr\`ol\adddot}},
editortranaf = {{editor, traductor, anotador i autor de l'ep{\'\i}leg}
{ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}},
editorstranaf = {{editors, traductors, anotadors i autors de l'ep{\'\i}leg}
- {eds.,\addabbrvspace trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {ed.,\addabbrvspace trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}},
translatorco = {{traductor i comentarista}
{trad\adddotspace i com\adddot}},
translatorsco = {{traductors i comentaristes}
- {trads\adddotspace i coms\adddot}},
+ {trad\adddotspace i com\adddot}},
translatoran = {{traductor i anotador}
{trad\adddotspace i anot\adddot}},
translatorsan = {{traductors i anotadors}
- {trads\adddotspace i anots\adddot}},
+ {trad\adddotspace i anot\adddot}},
translatorin = {{traductor i autor de la introducci\'o}
{trad\adddotspace i aut\adddotspace de la intr\adddot}},
translatorsin = {{traductors i autors de la introducci\'o}
- {trads\adddotspace i auts\adddotspace de la intr\adddot}},
+ {trad\adddotspace i aut\adddotspace de la intr\adddot}},
translatorfo = {{traductor i autor del pr\`oleg}
{trad\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatorsfo = {{traductors i autors del pr\`oleg}
- {trads\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {trad\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatoraf = {{traductor i autor de l'ep{\'\i}leg}
{trad\adddotspace i aut\adddotspace de l'ep\adddot}},
translatorsaf = {{traductors i autors de l'ep{\'\i}leg}
- {trads\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {trad\adddotspace i aut\adddotspace de l'ep\adddot}},
translatorcoin = {{traductor, comentarista i autor de la introducci\'o}
{trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}},
translatorscoin = {{traductors, comentaristes i autors de la introducci\'o}
- {trads.,\addabbrvspace coms\adddotspace i auts\adddotspace de la intr\adddotspace}},
+ {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}},
translatorcofo = {{traductor, comentarista i autor del pr\`oleg}
{trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatorscofo = {{traductors, comentaristes i autors del pr\`oleg}
- {trads.,\addabbrvspace coms\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatorcoaf = {{traductor, comentarista i autor de l'ep{\'\i}leg}
{trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}},
translatorscoaf = {{traductors, comentaristes i autors de l'ep{\'\i}leg}
- {trads.,\addabbrvspace coms\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de l'ep\adddot}},
translatoranin = {{traductor, anotador i autor de la introducci\'o}
{trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}},
translatorsanin = {{traductors, anotadors i autors de la introducci\'o}
- {trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de la intr\adddot}},
+ {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de la intr\adddot}},
translatoranfo = {{traductor, anotador i autor del pr\`oleg}
{trad.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatorsanfo = {{traductors, anotadors i autors del pr\`oleg}
- {trads.,\addabbrvspace anots\adddotspace i auts\adddotspace del pr\`ol\adddot}},
+ {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatoranaf = {{traductor, anotador i autor de l'ep{\'\i}leg}
{trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}},
translatorsanaf = {{traductors, anotadors i autors de l'ep{\'\i}leg}
- {trads.,\addabbrvspace anots\adddotspace i auts\adddotspace de l'ep\adddot}},
+ {trad.,\addabbrvspace anot\adddotspace i aut\adddotspace de l'ep\adddot}},
byauthor = {{per}{per}},
byeditor = {{edici\'o a cura \smartof}{ed\adddotspace\smartof}},
bycompiler = {{compilaci\'o a cura \smartof}{comp\adddotspace\smartof}},
byredactor = {{redacci\'o a cura \smartof}{red\adddotspace\smartof}},
byreviser = {{revisi\'o a cura \smartof}{rev\adddotspace\smartof}},
- byreviewer = {{revisi\'o a cura \smartof}{rev\adddotspace\smartof}},
+ byreviewer = {{ressenya a cura \smartof}{ress\adddotspace\smartof}},
byfounder = {{fundat per}{fund\adddotspace per}},
bycontinuator = {{continuat per}{cont\adddotspace per}},
bycollaborator = {{amb la co\l.laboraci\'o \smartof}{amb la co\l.l\adddotspace\smartof}},
bytranslator = {{traducci\'o \lbx@fromlang\ a cura \smartof}{trad\adddotspace\lbx@fromlang\ \smartof}},
bycommentator = {{comentaris a cura \smartof}{com\adddotspace\smartof}},
- byannotator = {{notes a cura \smartof}{notes \smartof}},
+ byannotator = {{notes a cura \smartof}{n\adddotspace\smartof}},
withcommentator = {{amb comentaris a cura \smartof}{amb com\adddotspace\smartof}},
- withannotator = {{amb notes a cura \smartof}{amb notes \smartof}},
- withintroduction = {{amb una introducci\'o a cura \smartof}{amb una intr\adddotspace\smartof}},
+ withannotator = {{amb notes a cura \smartof}{amb n\adddotspace\smartof}},
+ withintroduction = {{amb la introducci\'o a cura \smartof}{amb la intr\adddotspace\smartof}},
withforeword = {{amb el pr\`oleg a cura \smartof}{amb el pr\`ol\adddotspace\smartof}},
withafterword = {{amb l'ep{\'\i}leg a cura \smartof}{amb l'ep\adddotspace\smartof}},
byeditortr = {{edici\'o i traducci\'o \lbx@fromlang\ a cura \smartof}%
@@ -253,7 +253,7 @@
byeditorco = {{edici\'o i comentaris a cura \smartof}%
{ed\adddotspace i com\adddotspace\smartof}},
byeditoran = {{edici\'o i notes a cura \smartof}%
- {ed\adddotspace i not\adddotspace\smartof}},
+ {ed\adddotspace i n\adddotspace\smartof}},
byeditorin = {{edici\'o i introducci\'o a cura \smartof}%
{ed\adddotspace i intr\adddotspace\smartof}},
byeditorfo = {{edici\'o i pr\`oleg a cura \smartof}%
@@ -263,9 +263,9 @@
byeditortrco = {{edici\'o, traducci\'o \lbx@fromlang\ i comentaris a cura \smartof}%
{ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i com\adddotspace\smartof}},
byeditortran = {{edici\'o, traducci\'o \lbx@fromlang\ i notes a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i not\adddotspace\smartof}},
+ {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i n\adddotspace\smartof}},
byeditortrin = {{edici\'o, traducci\'o \lbx@fromlang\ i introducci\'o a cura \smartof}%
- {ed,,\addabbrvspace trad\adddotspace\lbx@fromlang\ i intr\adddotspace\smartof}},
+ {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i intr\adddotspace\smartof}},
byeditortrfo = {{edici\'o, traducci\'o \lbx@fromlang\ i pr\`oleg a cura \smartof}%
{ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i pr\`ol\adddotspace\smartof}},
byeditortraf = {{edici\'o, traducci\'o \lbx@fromlang\ i ep{\'\i}leg a cura \smartof}%
@@ -277,11 +277,11 @@
byeditorcoaf = {{edici\'o, comentaris i ep{\'\i}leg a cura \smartof}%
{ed.,\addabbrvspace com\adddotspace i ep\adddotspace\smartof}},
byeditoranin = {{edici\'o, notes i introducci\'o a cura \smartof}%
- {ed.,\addabbrvspace not\adddotspace i introd\adddotspace\smartof}},
+ {ed.,\addabbrvspace n\adddotspace i intr\adddotspace\smartof}},
byeditoranfo = {{edici\'o, notes i pr\`oleg a cura \smartof}%
- {ed.,\addabbrvspace not\adddotspace {\'\i} pr\'ol\adddotspace\smartof}},
+ {ed.,\addabbrvspace n\adddotspace i pr\`ol\adddotspace\smartof}},
byeditoranaf = {{edici\'o, notes i ep{\'\i}leg a cura \smartof}%
- {ed.,\addabbrvspace not\adddotspace i ep\adddotspace\smartof}},
+ {ed.,\addabbrvspace n\adddotspace i ep\adddotspace\smartof}},
byeditortrcoin = {{edici\'o, traducci\'o \lbx@fromlang, comentaris i introducci\'o a cura \smartof}%
{ed.,\addabbrvspace trad\adddotspace \lbx@fromlang, com\adddotspace i intr\adddotspace\smartof}},
byeditortrcofo = {{edici\'o, traducci\'o \lbx@fromlang, comentaris i pr\`oleg a cura \smartof}%
@@ -289,15 +289,15 @@
byeditortrcoaf = {{edici\'o, traducci\'o \lbx@fromlang, comentaris i ep{\'\i}leg a cura \smartof}%
{ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\ \smartof}},
byeditortranin = {{edici\'o, traducci\'o \lbx@fromlang, notes i introducci\'o a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, not\adddot\ i intr\adddot\ \smartof}},
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\ \smartof}},
byeditortranfo = {{edici\'o, traducci\'o \lbx@fromlang, notes i pr\`oleg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, not\adddot\ i pr\`ol\adddot\ \smartof}},
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}},
byeditortranaf = {{edici\'o, traducci\'o \lbx@fromlang, notes i ep{\'\i}leg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, not\adddot\ i ep\adddot\ \smartof}},
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i ep\adddot\ \smartof}},
bytranslatorco = {{traducci\'o \lbx@fromlang\ i comentaris a cura \smartof}%
{trad\adddot\ \lbx@fromlang\ i com\adddot\ \smartof}},
bytranslatoran = {{traducci\'o \lbx@fromlang\ i notes a cura \smartof}%
- {trad\adddot\ \lbx@fromlang\ i not\adddot\ \smartof}},
+ {trad\adddot\ \lbx@fromlang\ i n\adddot\ \smartof}},
bytranslatorin = {{traducci\'o \lbx@fromlang\ i introducci\'o a cura \smartof}%
{trad\adddot\ \lbx@fromlang\ i intr\adddot\ \smartof}},
bytranslatorfo = {{traducci\'o \lbx@fromlang\ i pr\`oleg a cura \smartof}%
@@ -305,39 +305,39 @@
bytranslatoraf = {{traducci\'o \lbx@fromlang\ i ep{\'\i}leg a cura \smartof}%
{trad\adddot\ \lbx@fromlang\ i ep\adddot\ \smartof}},
bytranslatorcoin = {{traducci\'o \lbx@fromlang, comentaris i introducci\'o a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, com\adddot\ i introd\adddot\ \smartof}},
+ {trad\adddot\ \lbx@fromlang, com\adddot\ i intr\adddot\ \smartof}},
bytranslatorcofo = {{traducci\'o \lbx@fromlang, comentaris i pr\`oleg a cura \smartof}%
{trad\adddot\ \lbx@fromlang, com\adddot\ i pr\`ol\adddot\ \smartof}},
bytranslatorcoaf = {{traducci\'o \lbx@fromlang, comentaris i ep{\'\i}leg a cura \smartof}%
{trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\ \smartof}},
bytranslatoranin = {{traducci\'o \lbx@fromlang, notes i introducci\'o a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, not\adddot\ i introd\adddot\ \smartof}},
+ {trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\ \smartof}},
bytranslatoranfo = {{traducci\'o \lbx@fromlang, notes i pr\`oleg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, not\adddot\ i pr\`ol\adddot\ \smartof}},
+ {trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}},
bytranslatoranaf = {{traducci\'o \lbx@fromlang, notes i ep{\'\i}leg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, not\adddot\ i ep\adddot\ \smartof}},
+ {trad\adddot\ \lbx@fromlang, n\adddot\ i ep\adddot\ \smartof}},
and = {{i}{i}},
andothers = {{et al\adddot}{et al\adddot}},
andmore = {{i m\'es}{i m\'es}},
volume = {{volum}{vol\adddot}},
- volumes = {{volums}{vols\adddot}},
+ volumes = {{volums}{vol\adddot}},
involumes = {{en}{en}},
jourvol = {{volum}{vol\adddot}},
jourser = {{s\`erie}{s\`er\adddot}},
- book = {{llibre}{ll\adddot}},
+ book = {{llibre}{llib\adddot}},
part = {{part}{part}},
issue = {{n\'umero}{n\'um\adddot}},
- newseries = {{s\`erie nova}{s\`er\adddotspace nova}},
- oldseries = {{s\`erie antiga}{s\`er\adddotspace ant\adddot}},
+ newseries = {{s\`erie nova}{s\`erie nova}},
+ oldseries = {{s\`erie antiga}{s\`erie ant\adddot}},
edition = {{edici\'o}{ed\adddot}},
reprint = {{reimpressi\'o}{reimpr\adddot}},
- reprintof = {{reimpressi\'o del}{reimpr\adddotspace del}},
+ reprintof = {{reimpressi\'o \smartof}{reimpr\adddotspace\smartof}},
reprintas = {{reimpr\`es com}{reimpr\adddotspace com}},
reprintfrom = {{reimpr\`es \smartof}{reimpr\adddotspace\smartof}},
- reviewof = {{revisi\'o del}{rev\adddotspace del}},
- translationof = {{traducci\'o del}{trad\adddotspace del}},
+ reviewof = {{ressenya \smartof}{ress\adddotspace\smartof}},
+ translationof = {{traducci\'o \smartof}{trad\adddotspace\smartof}},
translationas = {{tradu{\"\i}t com}{trad\adddotspace com}},
- translationfrom = {{tradu{\"\i}t del}{trad\adddotspace del}},
+ translationfrom = {{tradu{\"\i}t del}{trad\adddotspace del}}, % Unsure of 'del'
origpubas = {{publicat originalment com}{pub\adddotspace orig\adddotspace com}},
origpubin = {{publicat originalment el}{pub\adddotspace orig\adddotspace el}},
astitle = {{com}{com}},
@@ -347,8 +347,8 @@
column = {{columna}{col\adddot}},
columns = {{columnes}{cols\adddot}},
line = {{l{\'\i}nia}{l{\'\i}n\adddot}},
- lines = {{l{\'\i}nies}{l{\'\i}ns\adddot}},
- nodate = {{sine data}{s\adddot d\adddot}},
+ lines = {{l{\'\i}nies}{l{\'\i}n\adddot}},
+ nodate = {{sine data}{s\adddotspace d\adddot}},
verse = {{vers}{v\adddot}},
verses = {{versos}{v\adddot}},
section = {{apartat}{\S}},
@@ -368,17 +368,17 @@
software = {{programari}{prog\adddot}},
datacd = {{CD de dades}{CD de dades}},
audiocd = {{CD d'\`audio}{CD d'\`audio}},
- version = {{versi\'o}{ver\adddot}},
+ version = {{versi\'o}{vers\adddot}},
url = {{adre\c{c}a}{adr\adddot}},
urlfrom = {{disponible a}{disp\adddotspace a}},
urlseen = {{consultat}{cons\adddotspace}},
inpreparation = {{en preparaci\'o}{en prep\adddot}},
inpress = {{a impremta}{a impr\adddot}},% Per revisar
prepublished = {{pre-publicat}{pre-publicat}},
- submitted = {{enviat}{env\adddot}},% Per revisar
- forthcoming = {{disponible en breu}{disp\adddotspace en breu}},
+ submitted = {{enviat a publicar}{env\adddotspace a pub\adddot}},
+ forthcoming = {{acceptat per a publicar}{acc\adddotspace per a pub\adddot}},
citedas = {{d'ara endavant citat com}{d'ara end\adddotspace cit\adddotspace com}},
- thiscite = {{aquesta citaci\'o}{a\adddotspace cit\adddot}},
+ thiscite = {{aquesta citaci\'o}{aqu\adddotspace cit\adddot}},
seenote = {{vegeu la nota}{v\adddotspace la n\adddot}},
quotedin = {{citat a}{cit\adddotspace a}},
idem = {{{\'\i}dem}{{\'\i}d\adddot}},
@@ -401,57 +401,57 @@
backrefpage = {{vegeu la p\`agina}{v\adddotspace la p\`ag\adddot}},
backrefpages = {{vegeu les p\`agines}{v\adddotspace les p\`ag\adddot}},
january = {{gener}{gen\adddot}},
- february = {{febrer}{feb\adddot}},
- march = {{mar\c{c}}{mar\adddot}},
+ february = {{febrer}{febr\adddot}},
+ march = {{mar\c{c}}{mar\c{c}}},
april = {{abril}{abr\adddot}},
- may = {{maig}{mai\adddot}},
- june = {{juny}{jun\adddot}},
+ may = {{maig}{maig}},
+ june = {{juny}{juny}},
july = {{juliol}{jul\adddot}},
- august = {{agost}{ago\adddot}},
+ august = {{agost}{ag\adddot}},
september = {{setembre}{set\adddot}},
october = {{octubre}{oct\adddot}},
november = {{novembre}{nov\adddot}},
december = {{desembre}{des\adddot}},
langamerican = {{angl\`es americ\`a}{ang\adddotspace amer\adddot}},
langbrazilian = {{portugu\`es brasiler}{port\adddotspace bras\adddot}},
- langcatalan = {{catal\`a}{catal\`a}},
+ langcatalan = {{catal\`a}{cat\adddot}},
langczech = {{txec}{txec}},
langcroatian = {{croat}{croat}},
langdanish = {{dan\`es}{dan\adddot}},
- langdutch = {{neerland\`es}{neerland\`es}},
+ langdutch = {{neerland\`es}{neerl\adddot}},
langenglish = {{angl\`es}{ang\adddot}},
- langfinnish = {{fin\`es}{fin\`es}},
- langfrench = {{franc\`es}{fran\adddot}},
- langgerman = {{alemany}{alem\adddot}},
+ langfinnish = {{fin\`es}{fin\adddot}},
+ langfrench = {{franc\`es}{fr\adddot}},
+ langgerman = {{alemany}{al\adddot}},
langgreek = {{grec}{grec}},
- langitalian = {{itali\`a}{ital\adddot}},
- langlatin = {{llat{\'\i}}{llat{\'\i}}},
- langnorwegian = {{noruec}{noruec}},
-% langpolish = {{}{}},% FIXME: missing
+ langitalian = {{itali\`a}{it\adddot}},
+ langlatin = {{llat{\'\i}}{ll\adddot}},
+ langnorwegian = {{noruec}{nor\adddot}},
+ langpolish = {{polon\`es}{pol\adddot}},
langportuguese = {{portugu\`es}{port\adddot}},
langrussian = {{rus}{rus}},
-% langslovene = {{}{}},% FIXME: missing
+ langslovene = {{eslov\`e}{esl\adddot}},
langspanish = {{castell\`a}{cast\adddot}},
langswedish = {{suec}{suec}},
fromamerican = {{de l'angl\`es americ\`a}{de l'ang\adddotspace amer\adddot}},
- frombrazilian = {{del portugu\`es brasiler}{del port\adddot bras\adddot}},
- fromcatalan = {{del catal\`a}{del catal\`a}},
+ frombrazilian = {{del portugu\`es brasiler}{del port\adddotspace bras\adddot}},
+ fromcatalan = {{del catal\`a}{del cat\adddot}},
fromcroatian = {{del croat}{del croat}},
fromczech = {{del txec}{del txec}},
- fromdanish = {{del dan\`es}{del dan\`es}},
+ fromdanish = {{del dan\`es}{del dan\adddot}},
fromdutch = {{del neerland\`es}{del neerl\adddot}},
fromenglish = {{de l'angl\`es}{de l'ang\adddot}},
- fromfinnish = {{del fin\`es}{del fin\`es}},
- fromfrench = {{del franc\`es}{del fran\adddot}},
- fromgerman = {{de l'alemany}{de l'alem\adddot}},
+ fromfinnish = {{del fin\`es}{del fin\adddot}},
+ fromfrench = {{del franc\`es}{del fr\adddot}},
+ fromgerman = {{de l'alemany}{de l'al\adddot}},
fromgreek = {{del grec}{del grec}},
- fromitalian = {{de l'itali\`a}{de l'ital\adddot}},
- fromlatin = {{del llat{\'\i}}{del llat{\'\i}}},
- fromnorwegian = {{del noruec}{del noruec}},
-% frompolish = {{}{}},% FIXME: missing
+ fromitalian = {{de l'itali\`a}{de l'it\adddot}},
+ fromlatin = {{del llat{\'\i}}{del ll\adddot}},
+ fromnorwegian = {{del noruec}{del nor\adddot}},
+ frompolish = {{del polon\`es}{del pol\adddot}},
fromportuguese = {{del portugu\`es}{del port\adddot}},
fromrussian = {{del rus}{del rus}},
-% fromslovene = {{}{}},% FIXME: missing
+ fromslovene = {{de l'eslov\`e}{de l'esl\adddot}},
fromspanish = {{del castell\`a}{del cast\adddot}},
fromswedish = {{del suec}{del suec}},
countryde = {{Alemanya}{DE}},
@@ -461,15 +461,15 @@
countryuk = {{Regne Unit}{GB}},
countryus = {{Estats Units d'Am\`erica}{US}},
patent = {{patent}{pat\adddot}},
- patentde = {{patent alemana}{pat\adddot\ alem\adddot}},
+ patentde = {{patent alemana}{pat\adddot\ al\adddot}},
patenteu = {{patent europea}{pat\adddot\ eur\adddot}},
- patentfr = {{patent francesa}{pat\adddot\ fran\adddot}},
+ patentfr = {{patent francesa}{pat\adddot\ fr\adddot}},
patentuk = {{patent brit\`anica}{pat\adddot\ brit\adddot\adddot}},
patentus = {{patent estatunidenca}{pat\adddot\ EUA}},
patreq = {{so\l.licitud de patent}{so\l.l\adddotspace de pat\adddot}},
- patreqde = {{so\l.licitud de patent alemana}{so\l.l\adddotspace de pat\adddot\ alem\adddot}},
+ patreqde = {{so\l.licitud de patent alemana}{so\l.l\adddotspace de pat\adddot\ al\adddot}},
patreqeu = {{so\l.licitud de patent europea}{so\l.l\adddotspace de pat\adddot\ eur\adddot}},
- patreqfr = {{so\l.licitud de patent francesa}{so\l.l\adddotspace de pat\adddot\ fran\adddot}},
+ patreqfr = {{so\l.licitud de patent francesa}{so\l.l\adddotspace de pat\adddot\ fr\adddot}},
patrequk = {{so\l.licitud de patent brit\`anica}{so\l.l\adddotspace de pat\adddot\ brit\adddot}},
patrequs = {{so\l.licitud de patent estatunidenca}{so\l.l\adddotspace de pat\adddot\ EUA}},
file = {{fitxer}{fitx\adddot}},
diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx
index 0dee39d8496..2f0b63da8a3 100644
--- a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx
@@ -361,7 +361,7 @@
and = {{en}{en}},
andothers = {{en andere}{e\adddot a\adddot}},
andmore = {{en andere}{e\adddot a\adddot}},
- url = {{addres}{addres}},
+ url = {{adres}{adres}},
urlfrom = {{beschikbaar op}{beschikbaar op}},
urlseen = {{bezocht op}{bezocht op}},
file = {{bestand}{bestand}},
diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx
new file mode 100644
index 00000000000..f317b608aeb
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/biblatex/lbx/slovak.lbx
@@ -0,0 +1,661 @@
+\ProvidesFile{slovak.lbx}
+[\abx@lbxid]
+
+\DeclareBibliographyExtras{%
+ \DeclareCapitalPunctuation{.!?}%
+ \protected\def\bibrangedash{%
+ \textendash\penalty\hyphenpenalty}% breakable dash
+ \protected\def\bibdatedash{%
+ \textendash\penalty\hyphenpenalty}% breakable dash
+ \let\finalandcomma=\empty
+ \let\finalandsemicolon=\empty
+ \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+ \protected\def\mkbibmascord{\mkbibordinal}%
+ \protected\def\mkbibfemord{\mkbibordinal}%
+ \protected\def\mkbibneutord{\mkbibordinal}%
+ \protected\def\mkbibdatelong#1#2#3{%
+ \iffieldundef{#3}
+ {}
+ {\mkbibordinal{\thefield{#3}}%
+ \iffieldundef{#2}{}{\thinspace}}%
+ \iffieldundef{#2}
+ {}
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}%
+ \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\stripzeros{\thefield{#1}}}}%
+ \protected\def\mkbibdateshort#1#2#3{%
+ \iffieldundef{#3}
+ {}
+ {\mkdatezeros{\thefield{#3}}\adddot
+ \iffieldundef{#2}{}{\thinspace}}%
+ \iffieldundef{#2}
+ {}
+ {\mkdatezeros{\thefield{#2}}%
+ \iffieldundef{#1}
+ {}
+ {\iffieldundef{#3}{/}{\adddot\thinspace}}}%
+ \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}{\mkdatezeros{\thefield{#1}}}}%
+}
+
+\DeclareBibliographyStrings{%
+ bibliography = {{Zoznam bibliografick\'{y}ch odkazov}%
+ {Bibliografia}},
+ references = {{Cit\'{a}cie}% % ISO 690 -- section 2.15
+ {Cit\'{a}cie}},
+ shorthands = {{Zoznam skratiek}%
+ {Skratky}},
+ editor = {{editor}%
+ {ed\adddot}},
+ editors = {{editori}%
+ {ed\adddot}},
+ compiler = {{zostavovate\v{l}}% % ISO 690 -- section 5.1 -- c)
+ {zost\adddot}},
+ compilers = {{zostavovatelia}%
+ {zost\adddot}},
+ redactor = {{redaktor}%
+ {red\adddot}},
+ redactors = {{redaktori}%
+ {red\adddot}},
+ reviser = {{korektor}%
+ {kor\adddot}},
+ revisers = {{korektori}%
+ {kor\adddot}},
+ founder = {{zakladate\v{l}}%
+ {zakl\adddot}},
+ founders = {{zakladatelia}%
+ {zakl\adddot}},
+ continuator = {{pokra\v{c}ovate\v{l}}%
+ {pokr\adddot}},
+ continuators = {{pokra\v{c}ovatelia}%
+ {pokr\adddot}},
+ collaborator = {{spolupracovn\'{i}k}%
+ {spoluprac\adddot}},
+ collaborators = {{spolupracovn\'{i}ci}%
+ {spoluprac\adddot}},
+ translator = {{prekladate\v{l}}%
+ {prekl\adddot}},
+ translators = {{prekladatelia}%
+ {prekl\adddot}},
+ commentator = {{koment\'{a}tor}%
+ {kom\adddot}},
+ commentators = {{koment\'{a}tori}%
+ {kom\adddot}},
+ annotator = {{anot\'{a}tor}%
+ {anot\adddot}},
+ annotators = {{anot\'{a}tori}%
+ {anot\adddot}},
+ commentary = {{koment\'{a}r}%
+ {kom\adddot}},
+ annotations = {{anot\'{a}cia}%
+ {anot\adddot}},
+ introduction = {{\'{u}vod}%
+ {\'{u}v\adddot}},
+ foreword = {{predhovor}%
+ {predh\adddot}},
+ afterword = {{doslov}%
+ {dosl\adddot}},
+ editortr = {{editor a prekladate\v{l}}%
+ {ed\adddotspace a prekl\adddot}},
+ editorstr = {{editori a prekladatelia}%
+ {ed\adddotspace a prekl\adddot}},
+ editorco = {{editor a koment\'{a}tor}%
+ {ed\adddotspace a kom\adddot}},
+ editorsco = {{editori a koment\'{a}tori}%
+ {ed\adddotspace a kom\adddot}},
+ editoran = {{editor a anot\'{a}tor}%
+ {ed\adddotspace a anot\adddot}},
+ editorsan = {{editori a anot\'{a}tori}%
+ {ed\adddotspace a anot\adddot}},
+ editorin = {{editor a \'{u}vod}%
+ {ed\adddotspace a \'{u}v\adddot}},
+ editorsin = {{editori a \'{u}vod}%
+ {ed\adddotspace a \'{u}v\adddot}},
+ editorfo = {{editor a predhovor}%
+ {ed\adddotspace a predh\adddot}},
+ editorsfo = {{editori a predhovor}%
+ {ed\adddotspace a predh\adddot}},
+ editoraf = {{editor a doslov}%
+ {ed\adddotspace a dosl\adddot}},
+ editorsaf = {{editori a doslov}%
+ {ed\adddotspace a dosl\adddot}},
+ editortrco = {{editor, prekladate\v{l}\ a koment\'{a}tor}%
+ {ed.,\addabbrvspace prekl\adddot\ a kom\adddot}},
+ editorstrco = {{editori, prekladatelia\ a koment\'{a}tori}%
+ {ed.,\addabbrvspace prekl\adddot\ a kom\adddot}},
+ editortran = {{editor, prekladate\v{l}\ a anot\'{a}tor}%
+ {ed.,\addabbrvspace prekl\adddot\ a anot\adddot}},
+ editorstran = {{editori, prekladatelia\ a anot\'{a}tori}%
+ {ed.,\addabbrvspace prekl\adddot\ a anot\adddot}},
+ editortrin = {{editor, prekladate\v{l}\ a \'{u}vod}%
+ {ed.,\addabbrvspace prekl\adddot\ a \'{u}v\adddot}},
+ editorstrin = {{editori, prekladatelia\ a \'{u}vod}%
+ {ed.,\addabbrvspace prekl\adddot\ a \'{u}v\adddot}},
+ editortrfo = {{editor, prekladate\v{l}\ a predhovor}%
+ {ed.,\addabbrvspace prekl\adddot\ a predh\adddot}},
+ editorstrfo = {{editori, prekladatelia\ a predhovor}%
+ {ed.,\addabbrvspace prekl\adddot\ a predh\adddot}},
+ editortraf = {{editor, prekladate\v{l}\ a doslov}%
+ {ed.,\addabbrvspace prekl\adddot\ a dosl\adddot}},
+ editorstraf = {{editori, prekladatelia\ a doslov}%
+ {ed.,\addabbrvspace prekl\adddot\ a dosl\adddot}},
+ editorcoin = {{editor, koment\'{a}tor\ a \'{u}vod}%
+ {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}},
+ editorscoin = {{editori, koment\'{a}tori\ a \'{u}vod}%
+ {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}},
+ editorcofo = {{editor, koment\'{a}tor\ a predhovor}%
+ {ed.,\addabbrvspace kom\adddot\ a predh\adddot}},
+ editorscofo = {{editori, koment\'{a}tori\ a predhovor}%
+ {ed.,\addabbrvspace kom\adddot\ a predh\adddot}},
+ editorcoaf = {{editor, koment\'{a}tor\ a doslov}%
+ {ed.,\addabbrvspace kom\adddot\ a dosl\adddot}},
+ editorscoaf = {{editori, koment\'{a}tori\ a doslov}%
+ {ed.,\addabbrvspace kom\adddot\ a dosl\adddot}},
+ editoranin = {{editor, anot\'{a}tor\ a \'{u}vod}%
+ {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}},
+ editorsanin = {{editori, anot\'{a}tori\ a \'{u}vod}%
+ {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}},
+ editoranfo = {{editor, anot\'{a}tor\ a predhovor}%
+ {ed.,\addabbrvspace anot\adddot\ a predh\adddot}},
+ editorsanfo = {{editori, anot\'{a}tori\ a predhovor}%
+ {ed.,\addabbrvspace anot\adddot\ a predh\adddot}},
+ editoranaf = {{editor, anot\'{a}tor\ a doslov}%
+ {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
+ editorsanaf = {{editori, anot\'{a}tori\ a doslov}%
+ {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
+ editortrcoin = {{editor, prekladate\v{l}, koment\'{a}tor\ a \'{u}vod}%
+ {ed.,\addabbrvspace prekl., kom\adddot\ a \'{u}v\adddot}},
+ editorstrcoin = {{editori, prekladatelia, koment\'{a}tori\ a \'{u}vod}%
+ {ed.,\addabbrvspace prekl., kom\adddot\ a \'{u}v\adddot}},
+ editortrcofo = {{editor, prekladate\v{l}, koment\'{a}tor\ a predhovor}%
+ {ed.,\addabbrvspace prekl., kom\adddot\ a predh\adddot}},
+ editorstrcofo = {{editori, prekladatelia, koment\'{a}tori\ a predhovor}%
+ {ed.,\addabbrvspace prekl., kom\adddot\ a predh\adddot}},
+ editortrcoaf = {{editor, prekladate\v{l}, koment\'{a}tor\ a doslov}%
+ {ed.,\addabbrvspace prekl., kom\adddot\ a dosl\adddot}},
+ editorstrcoaf = {{editori, prekladatelia, koment\'{a}tori\ a doslov}%
+ {ed.,\addabbrvspace prekl., kom\adddot\ a dosl\adddot}},
+ editortranin = {{editor, prekladate\v{l}, anot\'{a}tor\ a \'{u}vod}%
+ {ed.,\addabbrvspace prekl., anot\adddot\ a \'{u}v\adddot}},
+ editorstranin = {{editori, prekladatelia, anot\'{a}tori\ a \'{u}vod}%
+ {ed.,\addabbrvspace prekl., anot\adddot\ a \'{u}v\adddot}},
+ editortranfo = {{editor, prekladate\v{l}, anot\'{a}tor\ a predhovor}%
+ {ed.,\addabbrvspace prekl., anot\adddot\ a predh\adddot}},
+ editorstranfo = {{editori, prekladatelia, anot\'{a}tori\ a predhovor}%
+ {ed.,\addabbrvspace prekl., anot\adddot\ a predh\adddot}},
+ editortranaf = {{editor, prekladate\v{l}, anot\'{a}tor\ a doslov}%
+ {ed.,\addabbrvspace prekl., anot\adddot\ a dosl\adddot}},
+ editorstranaf = {{editori, prekladatelia, anot\'{a}tori\ a doslov}%
+ {ed.,\addabbrvspace prekl., anot\adddot\ a dosl\adddot}},
+ translatorco = {{prekladate\v{l} a koment\'{a}tor}%
+ {prekl\adddot\ a kom\adddot}},
+ translatorsco = {{prekladatelia a koment\'{a}tori}%
+ {prekl\adddot\ a kom\adddot}},
+ translatoran = {{prekladate\v{l} a anot\'{a}tor}%
+ {prekl\adddot\ a anot\adddot}},
+ translatorsan = {{prekladatelia a anot\'{a}tori}%
+ {prekl\adddot\ a anot\adddot}},
+ translatorin = {{prekladate\v{l} a \'{u}vod}%
+ {prekl\adddot\ a \'{u}v\adddot}},
+ translatorsin = {{prekladatelia a \'{u}vod}%
+ {prekl\adddot\ a \'{u}v\adddot}},
+ translatorfo = {{prekladate\v{l} a predhovor}%
+ {prekl\adddot\ a predh\adddot}},
+ translatorsfo = {{prekladatelia a predhovor}%
+ {prekl\adddot\ a predh\adddot}},
+ translatoraf = {{prekladate\v{l} a doslov}%
+ {prekl\adddot\ a dosl\adddot}},
+ translatorsaf = {{prekladatelia a doslov}%
+ {prekl\adddot\ a dosl\adddot}},
+ translatorcoin = {{prekladate\v{l}, koment\'{a}tor\ a \'{u}vod}%
+ {prekl., kom\adddot\ a \'{u}v\adddot}},
+ translatorscoin = {{prekladatelia, koment\'{a}tori\ a \'{u}vod}%
+ {prekl., kom\adddot\ a \'{u}v\adddot}},
+ translatorcofo = {{prekladate\v{l}, koment\'{a}tor\ a predhovor}%
+ {prekl., kom\adddot\ a predh\adddot}},
+ translatorscofo = {{prekladatelia, koment\'{a}tori\ a predhovor}%
+ {prekl., kom\adddot\ a predh\adddot}},
+ translatorcoaf = {{prekladate\v{l}, koment\'{a}tor\ a doslov}%
+ {prekl., kom\adddot\ a dosl\adddot}},
+ translatorscoaf = {{prekladatelia, koment\'{a}tori\ a doslov}%
+ {prekl., kom\adddot\ a dosl\adddot}},
+ translatoranin = {{prekladate\v{l}, anot\'{a}tor\ a \'{u}vod}%
+ {prekl., anot\adddot\ a \'{u}v\adddot}},
+ translatorsanin = {{prekladatelia, anot\'{a}tori\ a \'{u}vod}%
+ {prekl., anot\adddot\ a \'{u}v\adddot}},
+ translatoranfo = {{prekladate\v{l}, anot\'{a}tor\ a predhovor}%
+ {prekl., anot\adddot\ a predh\adddot}},
+ translatorsanfo = {{prekladatelia, anot\'{a}tori\ a predhovor}%
+ {prekl., anot\adddot\ a predh\adddot}},
+ translatoranaf = {{prekladate\v{l}, anot\'{a}tor\ a doslov}%
+ {prekl., anot\adddot\ a dosl\adddot}},
+ translatorsanaf = {{prekladatelia, anot\'{a}tori\ a doslov}%
+ {prekl., anot\adddot\ a dosl\adddot}},
+ byauthor = {{}%
+ {}},
+ byeditor = {{editovan\'{e}}%
+ {ed\adddot}},
+ bycompiler = {{zostaven\'{e}}%
+ {zost\adddot}},
+ byredactor = {{redigovan\'{e}}%
+ {red\adddot}},
+ byfounder = {{zalo\v{z}en\'{e}}%
+ {zal\adddot}},
+ bycontinuator = {{pokra\v{c}ovan\'{e}}%
+ {pokr\adddot}},
+ bycollaborator = {{v\addnbspace spolupr\'{a}ci s}%
+ {v\addnbspace spol\adddotspace s}},
+ bytranslator = {{prelo\v{z}en\'{e} \lbx@lfromlang}%
+ {prel\adddot\ \lbx@sfromlang}},
+ bycommentator = {{komentovan\'{e}}%
+ {kom\adddot}},
+ byannotator = {{anotovan\'{e}}%
+ {anot\adddot}},
+ withcommentator = {{s\addnbspace koment\'{a}rom od}%
+ {s\addnbspace kom\adddotspace od}},
+ withannotator = {{s\addnbspace anot\'{a}ciami od}%
+ {s\addnbspace anot\adddot\ od}},
+ withintroduction = {{s\addnbspace \'{u}vodom od}%
+ {s\addnbspace \'{u}v\adddot\ od}},
+ withforeword = {{s\addnbspace predhovorom od}%
+ {s\addnbspace predh\adddot\ od}},
+ withafterword = {{s\addnbspace doslovom od}%
+ {s\addnbspace dosl\adddot\ od}},
+ byeditortr = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang\ }%
+ {ed\adddotspace a prel\adddot\ \lbx@sfromlang\ }},
+ byeditorco = {{editovan\'{e} a komentovan\'{e}}%
+ {ed\adddotspace a kom\adddot\ }},
+ byeditoran = {{editovan\'{e} a anotovan\'{e}}%
+ {ed\adddotspace a anot\adddot\ }},
+ byeditorin = {{editovan\'{e}, s\addnbspace \'{u}vodom}%
+ {ed.,\addabbrvspace s\addnbspace \'{u}v\addot}},
+ byeditorfo = {{editovan\'{e}, s\addnbspace predhovorom}%
+ {ed.,\addabbrvspace s\addnbspace predh.,}},
+ byeditoraf = {{editovan\'{e}, s\addnbspace doslovom}%
+ {ed.,\addabbrvspace s\addnbspace dosl.,}},
+ byeditortrco = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom\adddot\ }},
+ byeditortran = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot\ }},
+ byeditortrin = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace \'{u}vodom}%
+ {ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\addot}},
+ byeditortrfo = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace predhovorom}%
+ {ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace predh\adddot}},
+ byeditortraf = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace doslovom}%
+ {ed\adddotspace a prekl\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}},
+ byeditorcoin = {{editovan\'{e} a komentovan\'{e}, s\addnbspace \'{u}vodom}%
+ {ed\adddotspace a kom., s\addnbspace \'{u}v\addot}},
+ byeditorcofo = {{editovan\'{e} a komentovan\'{e}, s\addnbspace predhovorom}%
+ {ed\adddotspace a kom., s\addnbspace predh\adddot}},
+ byeditorcoaf = {{editovan\'{e} a komentovan\'{e}, s\addnbspace doslovom}%
+ {ed\adddotspace a kom., s\addnbspace dosl\adddot}},
+ byeditoranin = {{editovan\'{e} a anotovan\'{e}, s\addnbspace \'{u}vodom}%
+ {ed\adddotspace a anot., s\addnbspace \'{u}v\addot}},
+ byeditoranfo = {{editovan\'{e} a anotovan\'{e}, s\addnbspace predhovorom}%
+ {ed\adddotspace a anot., s\addnbspace predh\adddot}},
+ byeditoranaf = {{editovan\'{e} a anotovan\'{e}, s\addnbspace doslovom}%
+ {ed\adddotspace a anot., s\addnbspace dosl\adddot}},
+ byeditortrcoin = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace \'{u}vodom}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace \'{u}v\addot}},
+ byeditortrcofo = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace predhovorom}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace predh\adddot}},
+ byeditortrcoaf = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace doslovom}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace dosl\adddot}},
+ byeditortranin = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace \'{u}vodom}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace \'{u}v\addot}},
+ byeditortranfo = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace predhovorom}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace predh\adddot}},
+ byeditortranaf = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace doslovom}%
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace dosl\adddot}},
+ bytranslatorco = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}}%
+ {prel\adddot\ \lbx@sfromlang\ a kom\adddot}},
+ bytranslatoran = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}}%
+ {prel\adddot\ \lbx@sfromlang\ a anot\adddot}},
+ bytranslatorin = {{prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace \'{u}vodom}%
+ {prel\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\addot}},
+ bytranslatorfo = {{prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace predhovorom}%
+ {prel\adddot\ \lbx@sfromlang, s\addnbspace predh\adddot}},
+ bytranslatoraf = {{prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace doslovom}%
+ {prel\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}},
+ bytranslatorcoin = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace \'{u}vodom}%
+ {prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace \'{u}v\addot}},
+ bytranslatorcofo = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace predhovorom}%
+ {prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace predh\adddot}},
+ bytranslatorcoaf = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}, s\addnbspace doslovom}%
+ {prel\adddot\ \lbx@sfromlang\ a kom., s\addnbspace dosl\adddot}},
+ bytranslatoranin = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace \'{u}vodom}%
+ {prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace \'{u}v\addot}},
+ bytranslatoranfo = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace predhovorom}%
+ {prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace predh\adddot}},
+ bytranslatoranaf = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace doslovom}%
+ {prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace dosl\adddot}},
+ and = {{a}%
+ {a}},
+ andothers = {{et\addabbrvspace al\adddot}% %et\addabbrvspace alii
+ {et\addabbrvspace al\adddot}},
+ andmore = {{et\addabbrvspace al\adddot}% %et\addabbrvspace alii
+ {et\addabbrvspace al\adddot}},
+ volume = {{zv\"{a}zok}%
+ {zv\adddot}},
+ volumes = {{zv\"{a}zky}%
+ {zv\adddot}},
+ involumes = {{in}%
+ {in}},
+ jourvol = {{ro\v{c}n\'{i}k}%
+ {ro\v{c}\adddot}},
+ jourser = {{ed\'{i}cia}% % ISO 690 -- section 2.17
+ {ed\adddot}},
+ book = {{kniha}%
+ {kniha}},
+ part = {{\v{c}as\v{t}}%
+ {\v{c}as\v{t}}},
+ issue = {{\v{c}\'{i}slo}%
+ {\v{c}\'{i}slo}},
+ newseries = {{nov\'{a} ed\'{i}cia}% % ISO 690 -- section 2.17
+ {n\adddotspace ed\adddot}},
+ oldseries = {{star\'{a} ed\'{i}cia}% % ISO 690 -- section 2.17
+ {st\adddotspace ed\addot}},
+ edition = {{vydanie}%
+ {vyd\adddot}},
+ reprint = {{dotla\v{c}}%
+ {dotl\adddot}},
+ reprintof = {{dotla\v{c}}%
+ {dotl\adddot}},
+ reprintas = {{dotla\v{c}en\'{e} ako}%
+ {dotl\adddotspace ako}},
+ reprintfrom = {{dotla\v{c}en\'{e} z}%
+ {dotl\adddotspace z}},
+ reviewof = {{hodnotenie}%
+ {hodn\adddot}},
+ translationof = {{preklad}%
+ {prekl\adddot}},
+ translationas = {{prelo\v{z}en\'{e} ako}%
+ {prel\adddotspace ako}},
+ translationfrom = {{prelo\v{z}en\'{e} z}%
+ {prel\adddotspace z}},
+ origpubas = {{p\^{o}vodne vydan\'{e} ako}%
+ {p\^{o}v\adddotspace vyd\adddotspace ako}},
+ origpubin = {{p\^{o}vodne vydan\'{e} v\addnbspace roku}%
+ {p\^{o}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
+ astitle = {{ako}%
+ {ako}},
+ bypublisher = {{}%
+ {}},
+ page = {{strana}%
+ {s\adddot}},
+ pages = {{strany}%
+ {s\adddot}},
+ column = {{st\'{l}pec}%
+ {st\'{l}p\adddot}},
+ columns = {{st\'{l}pce}%
+ {st\'{l}p\adddot}},
+ line = {{riadok}%
+ {r\adddot}},
+ lines = {{riadky}%
+ {r\adddot}},
+ nodate = {{nedatovan\'{e}}% % ISO 690 -- section 9.3.4
+ {b\adddotspace r\adddot}}, % bez roku
+ verse = {{ver\v{s}}%
+ {v\adddot}},
+ verses = {{ver\v{s}e}%
+ {v\adddot}},
+ section = {{paragraf}%
+ {\S}},
+ sections = {{paragrafy}%
+ {\S\S}},
+ paragraph = {{odsek}%
+ {ods\adddot}},
+ paragraphs = {{odseky}%
+ {ods\adddot}},
+ in = {{in}%
+ {in}},
+ inseries = {{v}%
+ {v}},
+ ofseries = {{z}%
+ {z}},
+ number = {{\v{c}\'{i}slo}%
+ {\v{c}\adddot}},
+ chapter = {{kapitola}%
+ {kap\adddot}},
+ mathesis = {{diplomov\'{a} pr\'{a}ca}%
+ {dipl\adddotspace pr\adddot}},
+ phdthesis = {{dizerta\v{c}n\'{a} pr\'{a}ca}%
+ {diz\adddotspace pr\adddot}},
+ candthesis = {{kandid\'{a}tska pr\'{a}ca}%
+ {kand\adddotspace pr\adddot}},
+ resreport = {{v\'{y}skumn\'{a} spr\'{a}va}%
+ {v\'{y}sk\adddot\ spr\adddot}},
+ techreport = {{technick\'{a} spr\'{a}va}%
+ {tech\adddotspace spr\adddot}},
+ software = {{po\v{c}\'{i}ta\v{c}ov\'{y} softv\'{e}r}%
+ {soft\adddot}},
+ datacd = {{CD-ROM}%
+ {CD-ROM}},
+ audiocd = {{audio CD}%
+ {audio CD}},
+ version = {{verzia}%
+ {ver\adddot}},
+ url = {{url}%
+ {url}},
+ urlfrom = {{dostupn\'{e} z}% % ISO 690 -- section 15.2.6
+ {dostupn\'{e} z}},
+ urlseen = {{citovane\'{e}}%
+ {cit\adddot}},
+ inpreparation = {{v\addnbspace pr\'{i}prave}%
+ {v\addnbspace pr\'{i}prave}},
+ submitted = {{predlo\v{z}en\'{e}}%
+ {predl\adddot}},
+ forthcoming = {{prijat\'{e}}%
+ {prij\adddot}},
+ inpress = {{v\addnbspace tla\v{c}i}%
+ {v\addnbspace tla\v{c}i}},
+ prepublished = {{pred publikovan\'{i}m}%
+ {pred publ\adddot}},
+ citedas = {{\v{d}alej citovan\'{e} ako}%
+ {\v{d}alej cit\adddotspace ako}},
+ thiscite = {{obzvl\'{a}\v{s}\v{t}}%
+ {obzvl\adddot}},
+ seenote = {{vi\v{d} pozn\'{a}mka}%
+ {vi\v{d} pozn\adddot}},
+ quotedin = {{citovan\'{e} v}%
+ {cit\adddotspace v}},
+ idem = {{idem}%
+ {idem}},
+ idemsm = {{idem}%
+ {idem}},
+ idemsf = {{eadem}%
+ {eadem}},
+ idemsn = {{idem}%
+ {idem}},
+ idempm = {{eidem}%
+ {eidem}},
+ idempf = {{eaedem}%
+ {eaedem}},
+ idempn = {{eadem}%
+ {eadem}},
+ idempp = {{eidem}%
+ {eidem}},
+ ibidem = {{ibidem}%
+ {ibid\adddot}},
+ opcit = {{op\adddotspace cit\adddot}%
+ {op\adddotspace cit\adddot}},
+ loccit = {{loc\adddotspace cit\adddot}%
+ {loc\adddotspace cit\adddot}},
+ confer = {{cf\adddot}%
+ {cf\adddot}},
+ sequens = {{sq\adddot}%
+ {sq\adddot}},
+ sequentes = {{sqq\adddot}%
+ {sqq\adddot}},
+ passim = {{passim}%
+ {pass\adddot}},
+ see = {{vi\v{d}}%
+ {vi\v{d}}},
+ seealso = {{vi\v{d} tie\v{z}}%
+ {vi\v{d} tie\v{z}}},
+ backrefpage = {{citovan\'{e} na strane}%
+ {cit\adddotspace na s\adddot}},
+ backrefpages = {{citovan\'{e} na stran\'{a}ch}%
+ {cit\adddotspace na str\adddot}},
+ january = {{janu\'{a}r}%
+ {jan\adddot}},
+ february = {{febru\'{a}r}%
+ {feb\adddot}},
+ march = {{marec}%
+ {mar\adddot}},
+ april = {{apr\'{i}l}%
+ {apr\adddot}},
+ may = {{m\'{a}j}%
+ {m\'{a}j}},
+ june = {{j\'{u}n}%
+ {j\'{u}n}},
+ july = {{j\'{u}l}%
+ {j\'{u}l}},
+ august = {{august}%
+ {aug\adddot}},
+ september = {{september}%
+ {sept\adddot}},
+ october = {{okt\'{o}ber}%
+ {okt\adddot}},
+ november = {{november}%
+ {nov\adddot}},
+ december = {{december}%
+ {dec\adddot}},
+ langamerican = {{americk\'{a} angli\v{c}tina}%
+ {am\adddot angl\adddot}},
+ langbrazilian = {{braz\'{i}lska portugal\v{c}ina}%
+ {braz\adddot portugal\adddot}},
+ langcatalan = {{katal\'{a}n\v{c}ina}%
+ {katal\adddot}},
+ langcroatian = {{chorv\'{a}t\v{c}ina}%
+ {chorv\adddot}},
+ langczech = {{\v{c}e\v{s}tina}%
+ {\v{c}e\v{s}tina}},
+ langdanish = {{d\'{a}n\v{c}ina}%
+ {d\'{a}n\adddot}},
+ langdutch = {{holand\v{c}ina}%
+ {hol\adddot}},
+ langenglish = {{angli\v{c}tina}%
+ {angl\adddot}},
+ langfinnish = {{f\'{i}n\v{c}ina}%
+ {f\'{i}n\adddot}},
+ langfrench = {{franc\'{u}z\v{s}tina}%
+ {franc\adddot}},
+ langgerman = {{nem\v{c}ina}%
+ {nem\adddot}},
+ langgreek = {{gr\'{e}\v{c}tina}%
+ {gr\'{e}\v{c}tina}},
+ langitalian = {{talian\v{c}ina}%
+ {tal\adddot}},
+ langjapanese = {{japon\v{c}ina}%
+ {jap\adddot}},
+ langlatin = {{latin\v{c}ina}%
+ {lat\adddot}},
+ langnorwegian = {{n\'{o}r\v{c}ina}%
+ {n\'{o}r\adddot}},
+ langpolish = {{po\v{l}\v{s}tina}%
+ {po\v{l}\adddot}},
+ langportuguese = {{portugal\v{c}ina}%
+ {portugal\adddot}},
+ langrussian = {{ru\v{s}tina}%
+ {ru\v{s}tina}},
+ langslovak = {{sloven\v{c}ina}%
+ {sloven\v{c}ina}},
+ langslovene = {{slovin\v{c}ina}%
+ {slovin\v{c}ina}},
+ langspanish = {{\v{s}paniel\v{c}ina}%
+ {\v{s}pan\adddot}},
+ langswedish = {{\v{s}v\'{e}d\v{c}ina}%
+ {\v{s}v\'{e}d\adddot}},
+ fromamerican = {{z\addnbspace americkej angli\v{c}tiny}%
+ {z\addnbspace amer\adddot angl\adddot}},
+ frombrazilian = {{z\addnbspace braz\'{i}lskej portugal\v{c}iny}%
+ {z\addnbspace braz\adddotspace portugal\adddot}},
+ fromcatalan = {{z\addnbspace katal\'{a}n\v{c}iny}%
+ {z\addnbspace katal\adddot}},
+ fromcroatian = {{z\addnbspace chorvat\v{c}iny}%
+ {z\addnbspace chorv\adddot}},
+ fromczech = {{z\addnbspace \v{c}e\v{s}tiny}%
+ {z\addnbspace \v{c}e\v{s}tiny}},
+ fromdanish = {{z\addnbspace d\'{a}n\v{c}iny}%
+ {z\addnbspace d\'{a}n\adddot}},
+ fromdutch = {{z\addnbspace holand\v{c}iny}%
+ {z\addnbspace hol\adddot}},
+ fromenglish = {{z\addnbspace angli\v{c}tiny}%
+ {z\addnbspace angl\adddot}},
+ fromfinnish = {{z\addnbspace f\'{i}n\v{c}iny}%
+ {z\addnbspace f\'{i}n\adddot}},
+ fromfrench = {{z\addnbspace franc\'{u}z\v{s}tiny}%
+ {z\addnbspace franc\adddot}},
+ fromgerman = {{z\addnbspace nem\v{c}iny}%
+ {z\addnbspace nem\adddot}},
+ fromgreek = {{z\addnbspace gr\'{e}\v{c}tiny}%
+ {z\addnbspace gr\'{e}\v{c}tiny}},
+ fromitalian = {{z\addnbspace talian\v{c}iny}%
+ {z\addnbspace tal\adddot}},
+ fromjapanese = {{z\addnbspace japon\v{c}iny}%
+ {z\addnbspace jap\adddot}},
+ fromlatin = {{z\addnbspace latin\v{c}iny}%
+ {z\addnbspace lat\adddot}},
+ fromnorwegian = {{z\addnbspace n\'{o}r\v{c}iny}%
+ {z\addnbspace n\'{o}r\adddot}},
+ frompolish = {{z\addnbspace po\v{l}\v{s}tiny}%
+ {z\addnbspace po\v{l}\adddot}},
+ fromportuguese = {{z\addnbspace portugal\v{c}iny}%
+ {z\addnbspace portugal\adddot}},
+ fromrussian = {{z\addnbspace ru\v{s}tiny}%
+ {z\addnbspace ru\v{s}tiny}},
+ fromslovak = {{zo sloven\v{c}iny}%
+ {zo sloven\v{c}iny}},
+ fromslovene = {{zo slovin\v{c}iny}%
+ {zo slovin\v{c}iny}},
+ fromspanish = {{zo \v{s}paniel\v{c}iny}%
+ {zo \v{s}pan\adddot}},
+ fromswedish = {{zo \v{s}v\'{e}d\v{c}iny}%
+ {zo \v{s}v\'{e}d\adddot}},
+ countryde = {{Nemecko}%
+ {DE}},
+ countryeu = {{Eur\'{o}pska \'{u}nia}%
+ {EU}},
+ countryep = {{Eur\'{o}pska \'{u}nia}%
+ {EP}},
+ countryfr = {{Franc\'{u}zsko}%
+ {FR}},
+ countryuk = {{Ve\v{l}k\'{a} Brit\'{a}nia}%
+ {GB}},
+ countryus = {{Spojen\'{e} \v{S}t\'{a}ty Americk\'{e}}%
+ {US}},
+ patent = {{patent}%
+ {pat\adddot}},
+ patentde = {{nemeck\'{y} patent}%
+ {nem\adddot\ pat\adddot}},
+ patenteu = {{eur\'{o}psky patent}%
+ {eur\adddot\ pat\adddot}},
+ patentfr = {{franc\'{u}zsky patent}%
+ {franc\adddot\ pat\adddot}},
+ patentuk = {{britsk\'{y} patent}%
+ {britsk\'{y} pat\adddot}},
+ patentus = {{americk\'{y} patent}%
+ {US\adddotspace pat\adddot}},
+ patreq = {{patentov\'{a} \v{z}iados\v{t}}%
+ {pat\adddot\ \v{z}iad\adddot}},
+ patreqde = {{nemeck\'{a} patentov\'{a} \v{z}iados\v{t}}%
+ {nem\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patreqeu = {{eur\'{o}pska patentov\'{a} \v{z}iados\v{t}}%
+ {eur\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patreqfr = {{franc\'{u}zska patentov\'{a} \v{z}iados\v{t}}%
+ {franc\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patrequk = {{britsk\'{a} patentov\'{a} \v{z}iados\v{t}}%
+ {brit\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patrequs = {{US\adddotspace patentov\'{a} \v{z}iados\v{t}}%
+ {US\adddotspace pat\adddot\ \v{z}iad\adddot}},
+ file = {{s\'{u}bor}%
+ {s\'{u}b\adddot}},
+ library = {{kni\v{z}nica}%
+ {kni\v{z}nica}},
+ abstract = {{abstrakt}%
+ {abst\adddot}},
+ annotation = {{anot\'{a}cia}%
+ {anot\adddot}},
+}
+
+\endinput
diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
index 600160692a5..8bfd3b828f2 100644
--- a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
+++ b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx
@@ -426,7 +426,7 @@
\begingroup
\def\forceY##1{\relax}%
\def\forceE##1{i\relax}%
- \def\do##1{\let##1\@empty}%
+ \def\do##1{\let##1\@firstofone}%
\abx@dosingleaccents
\abx@dodoubleaccents
\def\'{'}\def\i{i}\def\j{j}%
@@ -444,7 +444,7 @@
\let~\@empty
\fi
\let\protect\noexpand
- \lowercase{\edef\lbx@tempa{#1}}%
+ \edef\lbx@tempa{#1}%
\expandafter\futurelet
\expandafter\lbx@tempa
\expandafter\lbx@es@smartand@ii
@@ -455,17 +455,23 @@
\def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@ii##1}%
\else\ifcat\noexpand~\noexpand\lbx@tempa
\def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@ii}%
- \else\if h\noexpand\lbx@tempa
+ \else\ifnum 0%
+ \if h\noexpand\lbx@tempa 1\fi
+ \if H\noexpand\lbx@tempa 1\fi
+ >0 %
\def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@ii}%
- \else\if i\noexpand\lbx@tempa
- \def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iii}%
- \else\if y\noexpand\lbx@tempa
+ \else\ifnum 0%
+ \if i\noexpand\lbx@tempa 1\fi
+ \if y\noexpand\lbx@tempa 1\fi
+ \if I\noexpand\lbx@tempa 1\fi
+ \if Y\noexpand\lbx@tempa 1\fi
+ >0 %
\def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iii}%
\else\if '\noexpand\lbx@tempa
\def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iv}%
\else
- \let\lbx@tempa\lbx@es@smartand@y
- \fi\fi\fi\fi\fi\fi
+ \let\lbx@tempa\lbx@es@smartand@y
+ \fi\fi\fi\fi\fi
\lbx@tempa}
\gdef\lbx@es@smartand@iii{%
@@ -475,19 +481,22 @@
\let\lbx@tempa\lbx@es@smartand@e
\else\if '\noexpand\lbx@tempa
\def\lbx@tempa##1{\futurelet\lbx@tempa\lbx@es@smartand@iii}%
- \else\if a\noexpand\lbx@tempa
- \let\lbx@tempa\lbx@es@smartand@y
- \else\if e\noexpand\lbx@tempa
- \let\lbx@tempa\lbx@es@smartand@y
- \else\if i\noexpand\lbx@tempa
- \let\lbx@tempa\lbx@es@smartand@y
- \else\if o\noexpand\lbx@tempa
- \let\lbx@tempa\lbx@es@smartand@y
- \else\if u\noexpand\lbx@tempa
+ \else\ifnum 0%
+ \if a\noexpand\lbx@tempa 1\fi
+ \if e\noexpand\lbx@tempa 1\fi
+ \if i\noexpand\lbx@tempa 1\fi
+ \if o\noexpand\lbx@tempa 1\fi
+ \if u\noexpand\lbx@tempa 1\fi
+ \if A\noexpand\lbx@tempa 1\fi
+ \if E\noexpand\lbx@tempa 1\fi
+ \if I\noexpand\lbx@tempa 1\fi
+ \if O\noexpand\lbx@tempa 1\fi
+ \if U\noexpand\lbx@tempa 1\fi
+ >0 %
\let\lbx@tempa\lbx@es@smartand@y
\else
\let\lbx@tempa\lbx@es@smartand@e
- \fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi
\lbx@tempa}
\gdef\lbx@es@smartand@iv{%