diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex')
91 files changed, 23791 insertions, 10789 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx index 5323b7b960e..d9b165af160 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic-verb.bbx @@ -1,7 +1,5 @@ -% $Id: alphabetic-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic-verb.bbx} -[\abx@bbxid $Id: alphabetic-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{alphabetic} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx index f3cf7e09d91..e8d45afd516 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx @@ -1,7 +1,5 @@ -% $Id: alphabetic.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic.bbx} -[\abx@bbxid $Id: alphabetic.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{labelalpha,sorting=anyt} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx index c1362eb12dc..2db8da073c6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-comp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-comp.bbx} -[\abx@bbxid $Id: authortitle-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx index 3ee21efebe1..b614f26d24f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ibid.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ibid.bbx} -[\abx@bbxid $Id: authortitle-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx index 89174567403..881a873437d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-icomp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-icomp.bbx} -[\abx@bbxid $Id: authortitle-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx index f1128ccc186..2d0015d816f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-tcomp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-tcomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-tcomp.bbx} -[\abx@bbxid $Id: authortitle-tcomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx index a0d578f774a..cb6b5791b57 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-terse.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-terse.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-terse.bbx} -[\abx@bbxid $Id: authortitle-terse.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx index 060c9cf0832..d466a83bdd0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle-ticomp.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ticomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ticomp.bbx} -[\abx@bbxid $Id: authortitle-ticomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx index ebeb7003907..6f67296b03f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authortitle.bbx @@ -1,7 +1,5 @@ -% $Id: authortitle.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle.bbx} -[\abx@bbxid $Id: authortitle.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{pagetracker} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx index ba75ca61d4e..46817d906c7 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-comp.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-comp.bbx} -[\abx@bbxid $Id: authoryear-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authoryear} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx index 6202f6d627a..252d31f006c 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-ibid.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-ibid.bbx} -[\abx@bbxid $Id: authoryear-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authoryear} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx index 3fdb40e55c1..38068b6ae31 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear-icomp.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-icomp.bbx} -[\abx@bbxid $Id: authoryear-icomp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authoryear} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx index 1085e5e9c48..feff034590c 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx @@ -1,7 +1,5 @@ -% $Id: authoryear.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear.bbx} -[\abx@bbxid $Id: authoryear.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx index e4b2214ea76..fc90ed62f29 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/debug.bbx @@ -1,7 +1,5 @@ -% $Id: debug.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{debug.bbx} -[\abx@bbxid $Id: debug.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \ExecuteBibliographyOptions{sorting=debug} \DeclareFieldFormat{entrykey}{\ttfamily[#1]} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx index 67655a116f5..0a63b386f80 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx @@ -1,7 +1,5 @@ -% $Id: draft.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{draft.bbx} -[\abx@bbxid $Id: draft.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{sorting=debug} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx index 47ce22e2450..0a4be7f5807 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-comp.bbx @@ -1,7 +1,5 @@ -% $Id: numeric-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-comp.bbx} -[\abx@bbxid $Id: numeric-comp.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{numeric} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx index 84e24a173be..f5788bf24cf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric-verb.bbx @@ -1,7 +1,5 @@ -% $Id: numeric-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-verb.bbx} -[\abx@bbxid $Id: numeric-verb.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{numeric} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx index 55a5b95f9bf..5ae940ff95b 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx @@ -1,7 +1,5 @@ -% $Id: numeric.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric.bbx} -[\abx@bbxid $Id: numeric.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} \ExecuteBibliographyOptions{labelnumber} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx index 64b709d2a5d..f74a1d1d69a 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx @@ -1,7 +1,5 @@ -% $Id: reading.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{reading.bbx} -[\abx@bbxid $Id: reading.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{standard} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx index b9f79ba5e4e..d237fba1534 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx @@ -1,12 +1,11 @@ -% $Id: standard.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{standard.bbx} -[\abx@bbxid $Id: standard.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \newtoggle{bbx:isbn} \newtoggle{bbx:url} \newtoggle{bbx:doi} \newtoggle{bbx:eprint} +\newtoggle{bbx:related} \DeclareBibliographyOption{isbn}[true]{% \settoggle{bbx:isbn}{#1}} @@ -16,8 +15,10 @@ \settoggle{bbx:doi}{#1}} \DeclareBibliographyOption{eprint}[true]{% \settoggle{bbx:eprint}{#1}} +\DeclareBibliographyOption{related}[true]{% + \settoggle{bbx:related}{#1}} -\ExecuteBibliographyOptions{isbn,url,doi,eprint} +\ExecuteBibliographyOptions{isbn,url,doi,eprint,related} \newbibmacro*{begentry}{} \newbibmacro*{finentry}{\finentry} @@ -53,6 +54,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{book}{% @@ -96,6 +99,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{booklet}{% @@ -128,6 +133,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{collection}{% @@ -169,6 +176,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inbook}{% @@ -215,6 +224,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{incollection}{% @@ -259,6 +270,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{inproceedings}{% @@ -305,6 +318,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{manual}{% @@ -347,6 +362,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{misc}{% @@ -377,6 +394,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{online}{% @@ -409,6 +428,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{patent}{% @@ -442,6 +463,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{periodical}{% @@ -466,6 +489,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{proceedings}{% @@ -509,6 +534,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{report}{% @@ -545,6 +572,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{thesis}{% @@ -577,6 +606,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{unpublished}{% @@ -603,6 +634,8 @@ \usebibmacro{addendum+pubstate}% \setunit{\bibpagerefpunct}\newblock \usebibmacro{pageref}% + \newunit\newblock + \usebibmacro{related}% \usebibmacro{finentry}} \DeclareBibliographyDriver{shorthands}{% @@ -797,4 +830,35 @@ \newunit\newblock \printfield{pubstate}} +\newcounter{bbx:relatedcount} + +\newbibmacro*{related}{% + \ifboolexpr{ + not test {\iftoggle{bbx:related}} + or + test {\iffieldundef{related}} + } + {} + {\setcounter{bbx:relatedcount}{0}% + \def\do{% + \stepcounter{bbx:relatedcount}% + \ifnumgreater{\value{bbx:relatedcount}}{1} + {\printtext{\relateddelim}} + {}}% + \ifcsundef{abx@macro@related:\strfield{relatedtype}} + {\appto{\do}{\csuse{abx@macro@related:default}}} + {\appto{\do}{\csuse{abx@macro@related:\strfield{relatedtype}}}}% + \ifcsundef{abx@ffd@*@related:\strfield{relatedtype}} + {\def\abx@tempa{related}} + {\def\abx@tempa{related:\strfield{relatedtype}}}% + \printtext[\abx@tempa]{% + \iffieldundef{relatedstring} + {\iffieldbibstring{relatedtype} + {\printtext{\bibstring{\thefield{relatedtype}}\relatedpunct}} + {}} + {\iffieldbibstring{relatedstring} + {\printtext{\bibstring{\thefield{relatedstring}}\relatedpunct}} + {\printtext{\printfield{relatedstring}\relatedpunct}}}% + \docsvfield{related}}}} + \endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx index e531cfc535e..ab2cf1a8710 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-ibid.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-ibid.bbx} -[\abx@bbxid $Id: verbose-ibid.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx index 5d10cef58ae..32b6dcb8791 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-inote.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-inote.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-inote.bbx} -[\abx@bbxid $Id: verbose-inote.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx index e4096a346fc..6560305a663 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-note.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-note.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-note.bbx} -[\abx@bbxid $Id: verbose-note.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx index 46ae4158311..f2f4f36f3ef 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad1.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-trad1.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad1.bbx} -[\abx@bbxid $Id: verbose-trad1.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx index 610cca8966d..e177123c7ac 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad2.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-trad2.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad2.bbx} -[\abx@bbxid $Id: verbose-trad2.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx index 8003bb379a7..e48de940745 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose-trad3.bbx @@ -1,7 +1,5 @@ -% $Id: verbose-trad3.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad3.bbx} -[\abx@bbxid $Id: verbose-trad3.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx index 80d05549a7c..fdba2250cd2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx +++ b/Master/texmf-dist/tex/latex/biblatex/bbx/verbose.bbx @@ -1,7 +1,5 @@ -% $Id: verbose.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose.bbx} -[\abx@bbxid $Id: verbose.bbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@bbxid] \RequireBibliographyStyle{authortitle} diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg b/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg index f544b1af305..5c8cf286176 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.cfg @@ -1,5 +1,3 @@ -% $Id: biblatex.cfg,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{biblatex.cfg} % Put your definitions here. diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.def b/Master/texmf-dist/tex/latex/biblatex/biblatex.def index 89b815e8134..403ef2347f8 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.def +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.def @@ -1,8 +1,5 @@ -% $Id: biblatex.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - +% -*- mode: LaTeX -*- \ProvidesFile{biblatex.def} -[\abx@rcsid $Id: biblatex.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - biblatex generic definitions] % ------------------------------------------------------------------ % FORMATTING COMMANDS @@ -62,6 +59,8 @@ \ifdimless{\leftmargin}{1.25em} {\textendash} {\textemdash}}}} +\newcommand*{\relatedpunct}{\space} +\newcommand*{\relateddelim}{\adddot\par\nobreak} % Used for indexing @@ -335,7 +334,7 @@ {\nolinkurl{#1}}} \DeclareFieldAlias{eprint:HDL}{eprint:hdl} \DeclareFieldFormat{eprint:arxiv}{% - arXiv\addcolon + arXiv\addcolon\space \ifhyperref {\href{http://arxiv.org/\abx@arxivpath/#1}{% \nolinkurl{#1}% @@ -399,6 +398,10 @@ \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}} % Generic formats for \printtext and \printfield @@ -920,7 +923,324 @@ \endgroup} % ------------------------------------------------------------------ -% CUSTOMIZATION +% Driver sourcemaps +% ------------------------------------------------------------------ + +\DeclareDefaultSourcemap[datatype=bibtex]{ + \map{ + \step[typesource=conference, typetarget=inproceedings] + \step[typesource=electronic, typetarget=online] + \step[typesource=www, typetarget=online] + } + \map{ + \step[typesource=mastersthesis, typetarget=thesis, final] + \step[fieldset=type, fieldvalue=mathesis] + } + \map{ + \step[typesource=phdthesis, typetarget=thesis, final] + \step[fieldset=type, fieldvalue=phdthesis] + } + \map{ + \step[typesource=techreport, typetarget=report, final] + \step[fieldset=type, fieldvalue=techreport] + } + \map{ + \step[fieldsource=address, fieldtarget=location] + \step[fieldsource=school, fieldtarget=institution] + \step[fieldsource=annote, fieldtarget=annotation] + \step[fieldsource=archiveprefix, fieldtarget=eprinttype] + \step[fieldsource=journal, fieldtarget=journaltitle] + \step[fieldsource=primaryclass, fieldtarget=eprintclass] + \step[fieldsource=key, fieldtarget=sortkey] + \step[fieldsource=pdf, fieldtarget=file] + } +} + +\DeclareDefaultSourcemap[datatype=endnotexml]{ + \map{ + \step[typesource={Aggregated Database}, typetarget=misc] + \step[typesource={Ancient Text}, typetarget=misc] + \step[typesource=Artwork, typetarget=artwork] + \step[typesource={Audiovisual Material}, typetarget=misc] + \step[typesource=Bill, typetarget=jurisdiction] + \step[typesource=Blog, typetarget=online] + \step[typesource=Book, typetarget=book] + \step[typesource={Book Section}, typetarget=inbook] + \step[typesource=Case, typetarget=jurisdiction] + \step[typesource=Catalog, typetarget=misc] + \step[typesource={Chart or Table}, typetarget=misc] + \step[typesource={Classical Work}, typetarget=misc] + \step[typesource={Computer Program}, typetarget=software] + \step[typesource={Conference Paper}, typetarget=inproceedings] + \step[typesource={Conference Proceedings}, typetarget=proceedings] + \step[typesource=Dictionary, typetarget=inreference] + \step[typesource={Edited Book}, typetarget=collection] + \step[typesource={Electronic Article}, typetarget=article] + \step[typesource={Electronic Book}, typetarget=book] + \step[typesource={Encyclopedia}, typetarget=reference] + \step[typesource=Equation, typetarget=misc] + \step[typesource=Figure, typetarget=misc] + \step[typesource={Film or Broadcast}, typetarget=movie] + \step[typesource={Government Document}, typetarget=report] + \step[typesource=Grant, typetarget=misc] + \step[typesource=Hearing, typetarget=jurisdiction] + \step[typesource={Journal Article}, typetarget=article] + \step[typesource={Legal Rule or Regulation}, typetarget=legislation] + \step[typesource={Magazine Article}, typetarget=article] + \step[typesource=Manuscript, typetarget=unpublished] + \step[typesource=Map, typetarget=misc] + \step[typesource={Newspaper Article}, typetarget=article] + \step[typesource={Online Database}, typetarget=online] + \step[typesource={Online Multimedia}, typetarget=online] + \step[typesource=Pamphlet, typetarget=booklet] + \step[typesource=Patent, typetarget=patent] + \step[typesource={Personal Communication}, typetarget=letter] + \step[typesource=Report, typetarget=report] + \step[typesource=Serial, typetarget=periodical] + \step[typesource=Standard, typetarget=standard] + \step[typesource=Statute, typetarget=legislation] + \step[typesource=Thesis, typetarget=thesis] + \step[typesource={Unpublished Work}, typetarget=unpublished] + \step[typesource={Web Page}, typetarget=online] + } + \map{ + \step[fieldsource={electronic-resource-num}, fieldtarget=eprint] + \step[fieldsource={alt-title}, fieldtarget=shorttitle] + \step[fieldsource={meeting-place}, fieldtarget=venue] + \step[fieldsource={pub-location}, fieldtarget=location] + \step[fieldsource={orig-pub}, fieldtarget=origpublisher] + \step[fieldsource={authors}, fieldtarget=author] + \step[fieldsource={secondary-authors}, fieldtarget=editor] + \step[fieldsource={tertiary-authors}, fieldtarget=commentator] + \step[fieldsource={subsidiary-authors}, fieldtarget=translator] + \step[fieldsource={year}, fieldtarget=date] + \step[fieldsource={pub-dates}, fieldtarget=date] + \step[fieldsource={num-vols}, fieldtarget=volumes] + \step[fieldsource={call-num}, fieldtarget=library] + \step[fieldsource={notes}, fieldtarget=note] + \step[fieldsource={secondary-title}, fieldtarget=subtitle] + \step[fieldsource={work-type}, fieldtarget=type] + } + \map{ + \pertype{Edited Book} + \step[fieldsource=contributors/authors, fieldtarget=contributors/editor] + } + \map{ + \pertype{Electronic Article} + \pertype{Journal Article} + \pertype{Magazine Article} + \pertype{Newspaper Article} + \step[fieldsource=isbn, fieldtarget=issn] + } + \map{ + \pertype{Patent} + \pertype{Report} + \pertype{Government Document} + \pertype{Legal Rule or Regulation} + \step[fieldsource=isbn, fieldtarget=number] + } + \map{ + \pertype{Blog} + \pertype{Online Database} + \pertype{Online Multimedia} + \pertype{Web Page} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/title}] + } + \map{ + \pertype{Book Section} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/booktitle}] + } + \map{ + \pertype{Book} + \pertype{Electronic Book} + \pertype{Manuscript} + \pertype{Unpublished Work} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/series}] + } + \map{ + \pertype{Conference Paper} + \pertype{Conference Proceedings} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/eventtitle}] + } + \map{ + \pertype{Electronic Article} + \pertype{Journal Article} + \pertype{Magazine Article} + \pertype{Newspaper Article} + \step[fieldsource={titles/secondary-title}, fieldtarget={titles/journaltitle}] + } + \map{ + \pertype{Book Section} + \step[fieldsource={titles/tertiary-title}, fieldtarget={titles/booktitle}] + } + \map{ + \pertype{Conference Proceedings} + \pertype{periodical} + \step[fieldsource={titles/tertiary-title}, fieldtarget={titles/series}] + } +} +\DeclareDefaultSourcemap[datatype=ris]{ + \map{ + \step[typesource=ART, typetarget=artwork] + \step[typesource=BILL, typetarget=jurisdiction] + \step[typesource=BOOK, typetarget=book] + \step[typesource=CHAP, typetarget=inbook] + \step[typesource=COMP, typetarget=software] + \step[typesource=CONF, typetarget=proceedings] + \step[typesource=GEN, typetarget=misc] + \step[typesource=JFULL, typetarget=article] + \step[typesource=JOUR, typetarget=article] + \step[typesource=MGZN, typetarget=misc] + \step[typesource=MPCT, typetarget=movie] + \step[typesource=NEWS, typetarget=misc] + \step[typesource=PAMP, typetarget=misc] + \step[typesource=PAT, typetarget=patent] + \step[typesource=PCOMM, typetarget=misc] + \step[typesource=RPRT, typetarget=report] + \step[typesource=SER, typetarget=misc] + \step[typesource=SLIDE, typetarget=misc] + \step[typesource=SOUND, typetarget=audio] + \step[typesource=STAT, typetarget=legal] + \step[typesource=THES, typetarget=thesis] + \step[typesource=UNBILL, typetarget=jurisdiction] + \step[typesource=UNPB, typetarget=unpublished] + } + \map{ + \step[fieldsource=Y1, fieldtarget=date] + \step[fieldsource=PY, fieldtarget=date] + \step[fieldsource=Y2, fieldtarget=eventdate] + \step[fieldsource=A1, fieldtarget=author] + \step[fieldsource=AU, fieldtarget=author] + \step[fieldsource=A2, fieldtarget=editor] + \step[fieldsource=A3, fieldtarget=editor] + \step[fieldsource=ED, fieldtarget=editor] + \step[fieldsource=SPEP, fieldtarget=pages] + \step[fieldsource=N1, fieldtarget=note] + \step[fieldsource=N2, fieldtarget=abstract] + \step[fieldsource=AB, fieldtarget=abstract] + \step[fieldsource=JO, fieldtarget=journaltitle] + \step[fieldsource=JF, fieldtarget=journaltitle] + \step[fieldsource=JA, fieldtarget=shortjournal] + \step[fieldsource=VL, fieldtarget=volume] + \step[fieldsource=IS, fieldtarget=issue] + \step[fieldsource=CP, fieldtarget=issue] + \step[fieldsource=CY, fieldtarget=location] + \step[fieldsource=SN, fieldtarget=isbn] + \step[fieldsource=PB, fieldtarget=publisher] + \step[fieldsource=KW, fieldtarget=keywords] + \step[fieldsource=TI, fieldtarget=title] + \step[fieldsource=U1, fieldtarget=usera] + \step[fieldsource=U2, fieldtarget=userb] + \step[fieldsource=U3, fieldtarget=userc] + \step[fieldsource=U4, fieldtarget=userd] + \step[fieldsource=U5, fieldtarget=usere] + \step[fieldsource=UR, fieldtarget=url] + \step[fieldsource=L1, fieldtarget=file] + } +} +\DeclareDefaultSourcemap[datatype=zoterordfxml]{ + \map{ + \step[typesource=conferencePaper, typetarget=inproceedings] + \step[typesource=bookSection, typetarget=inbook] + \step[typesource=journalArticle, typetarget=article] + \step[typesource=magazineArticle, typetarget=article] + \step[typesource=newspaperArticle, typetarget=article] + \step[typesource=encyclopediaArticle, typetarget=inreference] + \step[typesource=manuscript, typetarget=unpublished] + \step[typesource=document, typetarget=misc] + \step[typesource=dictionaryEntry, typetarget=inreference] + \step[typesource=interview, typetarget=misc] + \step[typesource=film, typetarget=movie] + \step[typesource=webpage, typetarget=online] + \step[typesource=note, typetarget=misc] + \step[typesource=attachment, typetarget=misc] + \step[typesource=bill, typetarget=legislation] + \step[typesource=case, typetarget=jurisdiction] + \step[typesource=hearing, typetarget=jurisdiction] + \step[typesource=statute, typetarget=legislation] + \step[typesource=email, typetarget=letter] + \step[typesource=map, typetarget=image] + \step[typesource=blogPost, typetarget=online] + \step[typesource=instantMessage, typetarget=letter] + \step[typesource=forumPost, typetarget=online] + \step[typesource=audioRecording, typetarget=audio] + \step[typesource=presentation, typetarget=inproceedings] + \step[typesource=videoRecording, typetarget=video] + \step[typesource=tvBroadcast, typetarget=misc] + \step[typesource=radioBroadcast, typetarget=misc] + \step[typesource=podcast, typetarget=online] + \step[typesource=computerProgram, typetarget=software] + } + \map{ + \step[fieldsource=bib:contributors, fieldtarget=author] + \step[fieldsource=bib:authors, fieldtarget=author] + \step[fieldsource=z:interviewers, fieldtarget=author] + \step[fieldsource=z:directors, fieldtarget=author] + \step[fieldsource=z:scriptwriters, fieldtarget=author] + \step[fieldsource=z:bookAuthor, fieldtarget=author] + \step[fieldsource=z:inventors, fieldtarget=author] + \step[fieldsource=z:recipients, fieldtarget=author] + \step[fieldsource=z:counsels, fieldtarget=author] + \step[fieldsource=z:artists, fieldtarget=author] + \step[fieldsource=z:podcasters, fieldtarget=author] + \step[fieldsource=z:presenters, fieldtarget=author] + \step[fieldsource=z:commenters, fieldtarget=author] + \step[fieldsource=z:programers, fieldtarget=author] + \step[fieldsource=z:composers, fieldtarget=author] + \step[fieldsource=z:producers, fieldtarget=author] + \step[fieldsource=z:performers, fieldtarget=author] + \step[fieldsource=bib:editors, fieldtarget=editor] + \step[fieldsource=z:translators, fieldtarget=translator] + \step[fieldsource=z:seriesEditors, fieldtarget=editor] + \step[fieldsource=dc:date, fieldtarget=date] + \step[fieldsource=bib:pages, fieldtarget=pages] + \step[fieldsource=dc:title, fieldtarget=title] + \step[fieldsource=z:proceedingsTitle, fieldtarget=title] + \step[fieldsource=z:encyclopediaTitle, fieldtarget=title] + \step[fieldsource=z:dictionaryTitle, fieldtarget=title] + \step[fieldsource=z:websiteTitle, fieldtarget=title] + \step[fieldsource=z:forumTitle, fieldtarget=title] + \step[fieldsource=z:blogTitle, fieldtarget=title] + \step[fieldsource=z:nameOfAct, fieldtarget=title] + \step[fieldsource=z:caseName, fieldtarget=title] + \step[fieldsource=z:meetingName, fieldtarget=eventtitle] + \step[fieldsource=prism:volume, fieldtarget=volume] + \step[fieldsource=numberOfVolumes, fieldtarget=volumes] + \step[fieldsource=z:numPages, fieldtarget=pagetotal] + \step[fieldsource=prism:edition, fieldtarget=edition] + \step[fieldsource=dc:description, fieldtarget=note] + \step[fieldsource=dc:alternative, fieldtarget=shortjournal] + \step[fieldsource=dcterms:abstract, fieldtarget=abstract] + \step[fieldsource=dc:type, fieldtarget=type] + \step[fieldsource=z:shortTitle, fieldtarget=shorttitle] + \step[fieldsource=z:bookTitle, fieldtarget=booktitle] + \step[fieldsource=prism:number, fieldtarget=number] + \step[fieldsource=z:patentNumber, fieldtarget=number] + \step[fieldsource=z:codeNumber, fieldtarget=number] + \step[fieldsource=z:reportNumber, fieldtarget=number] + \step[fieldsource=z:billNumber, fieldtarget=number] + \step[fieldsource=z:documentNumber, fieldtarget=number] + \step[fieldsource=z:publicLawNumber, fieldtarget=number] + \step[fieldsource=z:applicationNumber, fieldtarget=number] + \step[fieldsource=z:episodeNumber, fieldtarget=number] + \step[fieldsource=dc:coverage, fieldtarget=location] + \step[fieldsource=z:university, fieldtarget=institution] + \step[fieldsource=z:language, fieldtarget=language] + \step[fieldsource=z:version, fieldtarget=version] + \step[fieldsource=z:libraryCatalog, fieldtarget=library] + \step[fieldsource=dcterms:isPartOf, fieldtarget=BIBERCUSTOMpartof] + \step[fieldsource=dc:identifier, fieldtarget=BIBERCUSTOMidentifier] + \step[fieldsource=dc:publisher, fieldtarget=BIBERCUSTOMpublisher] + \step[fieldsource=dc:presentedAt, fieldtarget=BIBERCUSTOMpresentedat] + \step[fieldsource=dc:subject, fieldtarget=BIBERCUSTOMsubject] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Journal}, fieldtarget={dcterms:BIBERCUSTOMpartof/periodical}] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Book}, fieldtarget={dcterms:BIBERCUSTOMpartof/book}] + \step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:ConferenceProceedings}, fieldtarget={dcterms:BIBERCUSTOMpartof/proceedings}] + } +} + +% ------------------------------------------------------------------ +% META-FIELDS % ------------------------------------------------------------------ \DeclareLabelname{% @@ -936,12 +1256,41 @@ origyear, urlyear} +\DeclareLabeltitle{% + shorttitle, + title} + +% ------------------------------------------------------------------ +% LABELALPHA TEMPLATE +% ------------------------------------------------------------------ + +\DeclareLabelalphaTemplate{ + \labelelement{ + \field[final]{shorthand} + \field{label} + \field[strwidth=3,strside=left,ifnames=1]{labelname} + \field[strwidth=1,strside=left]{labelname} + } + \labelelement{ + \field[strwidth=2,strside=right]{year} + } +} + % ------------------------------------------------------------------ % SORTING % ------------------------------------------------------------------ \DeclarePresort{mm} +\DeclareSortingScheme{shorthand}{ + \sort[final]{ + \field{sortshorthand} + } + \sort{ + \field{shorthand} + } +} + \DeclareSortingScheme{none}{ \sort{\citeorder} } @@ -960,10 +1309,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -989,10 +1338,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1018,10 +1367,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1050,10 +1399,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1082,10 +1431,10 @@ \field{sortkey} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1116,10 +1465,10 @@ \literal{9999} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1142,10 +1491,10 @@ \literal{9999} } \sort{ - \name{sortname} - \name{author} - \name{editor} - \name{translator} + \field{sortname} + \field{author} + \field{editor} + \field{translator} \field{sorttitle} \field{title} } @@ -1629,6 +1978,14 @@ {\multicitedelim} {\usebibmacro{postnote}} +\DeclareCiteCommand*{\citeyear} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\printfield{year}\printfield{extrayear}} + {\multicitedelim} + {\usebibmacro{postnote}} + \DeclareCiteCommand{\citedate} {\boolfalse{citetracker}% \boolfalse{pagetracker}% @@ -1637,6 +1994,14 @@ {\multicitedelim} {\usebibmacro{postnote}} +\DeclareCiteCommand*{\citedate} + {\boolfalse{citetracker}% + \boolfalse{pagetracker}% + \usebibmacro{prenote}} + {\printdateextra} + {\multicitedelim} + {\usebibmacro{postnote}} + \DeclareCiteCommand{\citeurl} {\boolfalse{citetracker}% \boolfalse{pagetracker}% @@ -2250,7 +2615,7 @@ {\printtext[journaltitle]{% \printfield[titlecase]{journaltitle}% \setunit{\subtitlepunct}% - \printfield[titlecase]{journalsubtitle}}}} + \printfield{journalsubtitle}}}} \newbibmacro*{periodical}{% \iffieldundef{title} @@ -2258,7 +2623,7 @@ {\printtext[title]{% \printfield[titlecase]{title}% \setunit{\subtitlepunct}% - \printfield[titlecase]{subtitle}}}} + \printfield{subtitle}}}} \newbibmacro*{issue}{% \iffieldundef{issuetitle} @@ -2266,7 +2631,7 @@ {\printtext[issuetitle]{% \printfield[titlecase]{issuetitle}% \setunit{\subtitlepunct}% - \printfield[titlecase]{issuesubtitle}}}} + \printfield{issuesubtitle}}}} \newbibmacro*{in:}{% \printtext{% @@ -2314,4 +2679,103 @@ {\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}} {\printfield{abstract}}} +\newbibmacro*{related:default}[1]{% + \entrydata{#1}{% + \usebibmacro{title}% + \newunit + \ifentrytype{article} + {\usebibmacro{in:}% + \usebibmacro{journal+issuetitle}% + \newunit\newblock} + {}% + \ifboolexpr{ + test {\ifentrytype{inbook}} + or + test {\ifentrytype{incollection}} + or + test {\ifentrytype{inproceedings}} + } + {\usebibmacro{in:}% + \usebibmacro{maintitle+booktitle}% + \newunit\newblock + \usebibmacro{event+venue+date}% + \newunit\newblock} + {}% + \usebibmacro{byeditor+others}% + \newunit\newblock + \printlist{location}% + \iflistundef{publisher} + {\setunit*{\addcomma\space}} + {\setunit*{\addcolon\space}}% + \printlist{publisher}% + \setunit*{\addcomma\space}% + \printdate% + \setunit{\bibpagespunct}% + \printfield{pages}}} + +\newbibmacro*{related:bytranslator}[1]{% + \entrydata{#1}{% + \printnames[bytranslator]{translator}% + \setunit*{\addspace\bibstring{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}{% + \printfield{volume}% + \printfield{part}% + \setunit{\addcolon\space}% + \usebibmacro{title}% + \ifnamesequal{author}{savedauthor} + {} + {\usebibmacro{bytypestrg}{author}{author}% + \setunit{\addspace}% + \printnames[byauthor]{author} + \newunit\newblock}% + \ifnamesequal{editor}{savededitor} + {} + {\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{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{bypublisher}\space}% + \printlist{publisher}% + \setunit{\addcomma\space}% + \iflistsequal{location}{savedlocation} + {} + {\printlist{location}}}}} + \endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty index 6eeb7ae78e9..3ec4ad4da00 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty @@ -1,10465 +1,91 @@ -% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ - -% Copyright (c) 2006-2011 Philipp Lehman. -% -% 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. - -\def\abx@rcsid$#1: #2 #3 #4 #5${#4 v#3} -\def\abx@bbxid$#1: #2 #3 #4 #5${#4 v#3 biblatex bibliography style} -\def\abx@cbxid$#1: #2 #3 #4 #5${#4 v#3 biblatex citation style} -\def\abx@lbxid$#1: #2 #3 #4 #5${#4 v#3 biblatex localization} +%% +%% This is file `biblatex.sty'. +%% + +% Set up the version strings here, so they are the same for both branches +\def\abx@date{2012/07/01} +\def\abx@version{2.0} +\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)} +\def\blx@bblversion{\abx@version} \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{biblatex} -[\abx@rcsid $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ - programmable bibliographies] - -\def\blx@bblversion$#1: #2 ${#2} -\edef\blx@bblversion{\blx@bblversion$Revision: 1.7 $} - -%% 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}% - \@ifpackageloaded{babel} - {\iftoggle{blx@autolang} - {\blx@mkbabel} - {\blx@mknobabel}} - {\blx@mknobabel}% - \csuse{abx@extras@\blx@languagename}% - \csuse{abx@strings@\blx@languagename}% - \undef\blx@mkbabel - \undef\blx@mknobabel - \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 - \@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 - {\patchcmd\TX@endtabularx - {\edef\TX@ckpt{\cl@@ckpt}} - {\edef\TX@ckpt{\cl@@ckpt\abx@resttrackers}% - \abx@savetrackers} - {} - {\blx@err@patch{'tabularx'}}% - \apptocmd\TX@endtabularx{\abx@cleartrackers} - {} - {\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' 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]{} - -\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@debug} -\newtoggle{blx@sortcase} -\newtoggle{blx@sortupper} -\newtoggle{blx@autolang} -\newtoggle{blx@clearlang} -\newtoggle{blx@defernumbers} -\newtoggle{blx@omitnumbers} -\newtoggle{blx@footnote} -\newtoggle{blx@labelalpha} -\newtoggle{blx@labelnumber} -\newtoggle{blx@labelyear} -\newtoggle{blx@natbib} -\newtoggle{blx@mcite} -\newtoggle{blx@loadfiles} -\newtoggle{blx@singletitle} -\newtoggle{blx@terseinits}% BibTeX only -\newtoggle{blx@firstinits} -\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@skiplos} -\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>} => 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<\string;}% - \edef>{\string>\string;}% - \edef&{\string&\string;}% - \edef"{\string"\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#1{% - \begingroup - \blx@safe@actives - \PackageWarning{biblatex}{#1\blx@noline}% - \endgroup} -\protected\def\blx@warning@noline#1{% - \begingroup - \blx@safe@actives - \PackageWarning{biblatex}{#1\@gobble}% - \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#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1\blx@noline}% - \endgroup} -\def\blx@info@noline#1{% - \begingroup - \blx@safe@actives - \PackageInfo{biblatex}{#1\@gobble}% - \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}} - {}} -\@onlypreamble\RequireBiber -\let\blx@reqbiber\z@ - -\def\blx@checkbackend#1{% - \ifnumequal\blx@backend\blx@backend@biber - {} - {\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 - \ifnum\blx@backend=\blx@backend@biber - \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@runbtx}{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} - }} - {} - }% - \else - \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 - \fi - \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{% - \ifnum\blx@backend=\blx@backend@biber - \else - \xifinlist{\blx@auxfile@bibtex}{\blx@list@active} - {} - {\listxadd\blx@list@active{\blx@auxfile@bibtex}}% - \fi - \ifblank{#1} - {} - {\@latex@warning{#1}}% - \blx@rerun@latex - \blx@rerun@bibtex} - -\def\blx@logreq@inactive{% - \ifnum\blx@backend=\blx@backend@biber - \else - \xifinlist{\blx@auxfile@bibtex}{\blx@list@inactive} - {} - {\listxadd\blx@list@inactive{\blx@auxfile@bibtex}}% - \fi} - -\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 - \ifnum\blx@backend=\blx@backend@biber - \edef\blx@tempa{% - Please (re)run Biber on the file:\MessageBreak - \jobname}% - \else - \edef\blx@tempa{Please (re)run BibTeX on the file(s):}% - \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% - \dolistloop\blx@list@active - \fi - \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@apo=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 -} - -\def\blx@namecodes{% - \ifnum\sfcode`\A=\@m - \else - \blx@setazcodes - \fi - \sfcode`\'=\blx@sf@apo -} - -\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\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@apo - \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% - \else - \ifnum\the\sfcode`#1>\blx@sf@apo - \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 - -% {<key>}[<value>]{<code>} - -\newrobustcmd*{\DeclareBibliographyOption}[1]{% - \@ifnextchar[%] - {\blx@defbibopt{#1}} - {\blx@defbibopt{#1}[]}} - -\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}}} - -% {<key>}[<value>]{<code>} - -\newrobustcmd*{\DeclareTypeOption}[1]{% - \@ifnextchar[%] - {\blx@deftypeopt{#1}} - {\blx@deftypeopt{#1}[]}} - -\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}}} - -% {<key>}[<value>]{<code>} - -\newrobustcmd*{\DeclareEntryOption}[1]{% - \@ifnextchar[%] - {\blx@defentryopt{#1}} - {\blx@defentryopt{#1}[]}} - -\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}[1]{% - \ifcsundef{abx@macro@\detokenize{#1}} - {\blx@error - {Bibliography macro '\detokenize{#1}' undefined} - {Use '\string\newbibmacro' to define this macro}} - {\csuse{abx@macro@\detokenize{#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}} - {}} - -% {<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}}} - -% {<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{% - \ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@global - \expandafter{\abx@field@entrykey}} - {\@secondoftwo}} - -\protected\def\blx@ifciteseen@context{% - \ifdef\abx@field@entrykey - {\expandafter\blx@ifseen@context - \expandafter{\abx@field@entrykey}} - {\@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{% - \ifinlistcs{#1}{blx@bsee@\the\c@refsection}} - -\def\blx@ifseen@context#1{% - \iftoggle{blx@footnote} - {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} - {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} - -% {<true>}{<false>} - -\def\blx@ifciteibid@global{% - \blx@imc@iffieldequals{entrykey}\blx@lastkey@text} - -\def\blx@ifciteibid@context{% - \iftoggle{blx@footnote} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - -\def\blx@ifciteibid@strict{% - \blx@ifcitesingle - {\blx@ifciteibid@global} - {\@secondoftwo}}% - -\def\blx@ifciteibid@constrict{% - \blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} - {\@secondoftwo}}% - -% {<true>}{<false>} - -\def\blx@ifciteidem@global{% - \blx@imc@iffieldequals{fullhash}\blx@lasthash@text} - -\def\blx@ifciteidem@context{% - \iftoggle{blx@footnote} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - -\let\blx@ifciteidem@strict\blx@ifciteidem@global - -\def\blx@ifciteidem@constrict{% - \iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} - {\@secondoftwo}} - {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} - -% {<true>}{<false>} - -\def\blx@ifopcit@global{% - \blx@imc@iffieldundef{namehash} - {\@secondoftwo} - {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} - -\def\blx@ifopcit@context{% - \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}}}} - -\def\blx@ifopcit@strict{% - \blx@ifcitesingle - {\blx@ifopcit@global} - {\@secondoftwo}}% - -\def\blx@ifopcit@constrict{% - \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}}% - -% {<true>}{<false>} - -\def\blx@ifloccit@global{% - \blx@loccit@check{text}} - -\def\blx@ifloccit@context{% - \iftoggle{blx@footnote} - {\blx@loccit@check{foot}} - {\blx@loccit@check{text}}} - -\def\blx@ifloccit@strict{% - \blx@ifcitesingle - {\blx@loccit@numcheck{text}} - {\@secondoftwo}}% - -\def\blx@ifloccit@constrict{% - \blx@ifcitesingle - {\iftoggle{blx@footnote} - {\blx@ifmpfncheck - {\blx@loccit@numcheck{foot}} - {\@secondoftwo}} - {\blx@loccit@numcheck{text}}} - {\@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{% - \iftoggle{blx@footnote} - {\blx@iffirstonpage{fnpage}} - {\blx@iffirstonpage{page}}} - -\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{% - \ifcsundef{blx@page@\number\numexpr#1} - {\ifcsundef{blx@fnpage@\number\numexpr#1} - {\@secondoftwo} - {\blx@ifsamepage{#1}{#2}{fnpage}}} - {\blx@ifsamepage{#1}{#2}{page}}} - -\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% - \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% - \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} - -% <*>[<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@beglang - \blx@driver{#2}% - \blx@endlang - \endgroup} - -% Punctuation - -\protected\def\blx@initunit{% - \global\togglefalse{blx@block}% - \global\togglefalse{blx@unit}% - \global\togglefalse{blx@insert}% - \global\togglefalse{blx@lastins}% - \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{% - \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{% - \long\gdef\blx@unitpunct{#1}% - \global\toggletrue{blx@unit}}% - -\def\blx@setunit@i{% - \iftoggle{blx@lastins} - {\blx@setunit} - {\@gobble}} - -\protected\def\blx@imc@finentry{% - \unspace\finentrypunct - \blx@postpunct - \blx@initunit} - -\protected\def\blx@finentry@usedrv{% - \unspace -% \blx@initunit -} - -\protected\def\blx@finentry@inset{% - \blx@setunit\entrysetpunct - \global\toggletrue{blx@block}} - -\blx@regimcs{% - \ifdriver \thefield \strfield \thelist \thename \clearfield \clearlist - \clearname \restorefield \restorelist \restorename - \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword - \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit - \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype - \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal - \iffieldundef \iffieldxref \iflistequalcs \iflistequals - \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems - \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 \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\iffirstinits{\iftoggle{blx@firstinits}}% - \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}}} - -%% 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@hyphenation - {\xifinlist\abx@field@hyphenation\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{% - \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>]{<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}% - \ifnumequal\blx@backend\blx@backend@biber - {} - {\let~\bibnamedelima}% BibTeX only - \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@beglang#3\blx@endlang - \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@imc@entrydata{#1}{% - \blx@entryset@precode - \blx@driver{\blx@imc@thefield{entrytype}} - \blx@entryset@postcode}} - -\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{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{part}% - \do{jourvol}% - \do{jourser}% - \do{newseries}% - \do{oldseries}% - \do{edition}% - \do{reprint}% - \do{reprintof}% - \do{reprintas}% - \do{page}% - \do{pages}% - \do{column}% - \do{columns}% - \do{line}% - \do{lines}% - \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{resreport}% - \do{techreport}% - \do{software}% - \do{datacd}% - \do{audiocd}% - \do{version}% - \do{doi}% - \do{url}% - \do{urlseen}% - \do{file}% - \do{inpreparation}% - \do{submitted}% - \do{inpress}% - \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{langcroatian}% - \do{langdanish}% - \do{langdutch}% - \do{langenglish}% - \do{langfinnish}% - \do{langfrench}% - \do{langgerman}% - \do{langgreek}% - \do{langitalian}% - \do{langlatin}% - \do{langnorwegian}% - \do{langportuguese}% - \do{langrussian}% - \do{langspanish}% - \do{langswedish}% - \do{fromamerican}% - \do{frombrazilian}% - \do{fromcroatian}% - \do{fromdanish}% - \do{fromdutch}% - \do{fromenglish}% - \do{fromfinnish}% - \do{fromfrench}% - \do{fromgerman}% - \do{fromgreek}% - \do{fromitalian}% - \do{fromlatin}% - \do{fromnorwegian}% - \do{fromportuguese}% - \do{fromrussian}% - \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\losname{\abx@str @shorthands}} - {\let\losname\@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}}}}}}} - -\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*{\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@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 \printurldate \printeventdate - \printorigdate \stripzeros \mkdatezeros} - -% {<language>}{<strings>} +[\abx@date\space v\abx@version\space programmable bibliographies (PK/JW/AB)] -\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}} +% Set up a switch for choosing the version +\newif\ifblx@load@version@one -%% Babel interface +% A switch so we can issue a message about the backend +\newif\ifblx@load@backend@seen -\def\blx@beglang{\blx@clearlang\begingroup} -\def\blx@endlang{\endgroup} -\let\blx@hook@endlang\@empty -\let\blx@hook@initlang\@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@mkbabel{% - \pretocmd\select@language{\blx@langsetup{#1}} - {\ifdef\blx@thelangenv - {\def\blx@beglang{% - \blx@clearlang - \begingroup - \blx@imc@iffieldundef{hyphenation} - {} - {\blx@hook@initlang - \def\blx@endlang{% - \blx@hook@endlang - \csname end\blx@thelangenv\endcsname - \endgroup}% - \csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@hyphenation}}}} - {}% - \blx@langsetup\bbl@main@language} - {\blx@err@patch{'babel' package}% - \blx@mknobabel}} -\endgroup - -\def\blx@mknobabel{% - \blx@lbxinput{\blx@languagename} - {} - {\blx@err@nolang{\blx@languagename}}} - -\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}% +% Fake keyval options to detect the backend +% All basically the same, so passing the backend is done simply +\DeclareOption{backend=bibtex}{% + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \blx@load@version@onetrue + \blx@load@backend@seentrue } - -\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}% +\DeclareOption{backend=bibtex8}{% + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \blx@load@version@onetrue + \blx@load@backend@seentrue } - -\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{hyphenation}% - \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{extraalpha}% - \do{labelnumber}% - \do{labeltitle}% - \do{labelyear}% - \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}% +\DeclareOption{backend=bibtexu}{% + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \blx@load@version@onetrue + \blx@load@backend@seentrue } - -\def\abx@dobooleans{% - \do{singletitle}% +\DeclareOption{backend=biber}{% + \blx@load@version@onefalse + \blx@load@backend@seentrue } - -\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{% - \ifnum\blx@backend=\blx@backend@biber - Biber - \else - BibTeX - \fi - 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@countdef#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}} - -\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@skiplos}% - \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@skiplos} - {\blx@bbl@shorthand} - {}% - \nottoggle{blx@skiplab} - {\iftoggle{blx@labelnumber} - {\blx@bbl@labelnumber} - {}% - \iftoggle{blx@labelalpha} - {\blx@bbl@labelalpha} - {}% - \iftoggle{blx@labelyear} - {\blx@bbl@labelyear} - {}% - \blx@bbl@prefixnumber} - {}% - \ifnumless\blx@backend\blx@backend@biber - {\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@labelyear{% - \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\count\blx@bbl@countdef - \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{\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 - \ifnumequal\blx@backend\blx@backend@biber - {\blx@bblfile@biber} - {\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{shorthands} - {\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@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@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}% - \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@beglang - \bibsentence - \blx@pagetracker - \blx@driver\abx@field@entrytype - \blx@postpunct - \blx@endlang}% - \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 - -% 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{shorthands}% - \def\blx@theenv{shorthands}% - \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@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@beglang - \bibsentence - \blx@pagetracker - \blx@driver{shorthands}% - \blx@postpunct - \blx@endlang}% - \endgroup} - {}} - -\DeclareBibliographyDriver{shorthands}{% - \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}% - \ifnum\blx@backend=\blx@backend@biber - \blx@refsection@biber - \else - \blx@refsection@bibtex - \fi - \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 - \ifnum\blx@backend=\blx@backend@biber - \blx@endrefsection@biber - \else - \blx@endrefsection@bibtex - \fi - \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@refsegment'}% - \label{refsegment:\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 - -\def\blx@refpatch@part#1{% - \ifundef\part - {\blx@err@nodocdiv{part}} - {\toggletrue{blx@tempa}% - \def\do##1{% - \patchcmd##1{\@endpart}{#1\@endpart} - {\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}} - {\apptocmd\@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{% - \patchcmd##1% - {\noexpand\@xsect} - {\noexpand\blx@refpatch@sect@ii{#1}{#2}{\string#2}\noexpand\@xsect} - {\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} -\@onlypreamble\AtEveryCite -\@onlypreamble\AtEveryCitekey - -\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} - -% {<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} - {\ifnumless\blx@backend\blx@backend@biber % BibTeX only - {\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}}}} - {\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{% - \ifnum\blx@backend=\blx@backend@biber - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% - \blx@auxwrite\blx@auxout{}{\blx@xml@citekey{\blx@tempa}}% - \endgroup - \else - \blx@auxwrite\blx@auxout@bibtex{}{\string\citation{#1}}% - \fi} - -% {<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{% - \ifnum\blx@backend=\blx@backend@biber - \begingroup - \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% - \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% - \blx@auxwrite\blx@auxout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% - \endgroup - \fi} - -% {<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@filter\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@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 - \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@gobal{% - \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@gobal} - {\blx@ibidreset@gobal}}% - -\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@gobal{% - \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@gobal{% - \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@gobal - -\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@gobal{% - \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@gobal{% - \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@gobal} - {\blx@opcitreset@gobal}}% - -\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@gobal{% - \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@gobal{% - \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@gobal{% - \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{% - \blx@tempa{\blx@postpunct}} -\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2{% - \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 - \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 - \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\ifciteseen{\blx@TE\blx@imc@ifciteseen}% - \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}% - \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\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\iffirstinits{\blx@TE{\iftoggle{blx@firstinits}}}% - \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}} - -\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 - \blx@usqcheck@i\blx@tempb - \fi - \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} - -\def\blx@usqcheck@i#1#2&{\fi#1} - -\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} - -\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} - -\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold} - -\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} - -\newrobustcmd*{\volcitecmd}[1]{% - \begingroup - \def\blx@tempa{\endgroup#1}% - \@ifstar - {\appto\blx@tempa{*}% - \blx@volcitecmd@i} - {\blx@volcitecmd@i}} - -\def\blx@volcitecmd@i{% - \@ifnextchar[%] - {\blx@volcitecmd@ii} - {\blx@volcitecmd@ii[]}} - -\def\blx@volcitecmd@ii[#1]#2{% - \appto\blx@tempa{[#1]}% - \blx@getformat\blx@tempb{ffd}{}{volcitevolume}% - \@ifnextchar[%] - {\blx@volcitecmd@iii{#2}} - {\edef\blx@tempa{\expandonce\blx@tempa[{% - \expandonce{\blx@tempb{#2}}}]}% - \blx@tempa}} - -\def\blx@volcitecmd@iii#1[#2]{% - \blx@getformat\blx@tempc{ffd}{}{volcitepages}% - \edef\blx@tempa{\expandonce\blx@tempa[{% - \expandonce{\blx@tempb{#1}}% - \noexpand\volcitedelim - \expandonce{\blx@tempc{#2}}}]}% - \blx@tempa} - -%% 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{labelyear}% - \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% - \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{labelyear}% - \blx@xml@mvalue{labelyearspec}{% - \ifcsdef{blx@bcf@labelyearspec@#1} - {\csuse{blx@bcf@labelyearspec@#1}} - {\blx@bcf@labelyearspec}}% - \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@labelyear}{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}} - -%% Customization - -% [<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}{}}} - -% [<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*{\DeclareSortingScheme}[2]{% - \begingroup - \let\sort\blx@sortdef@sort - \let\name\blx@sortdef@list - \let\list\blx@sortdef@list - \let\field\blx@sortdef@field - \let\literal\blx@sortdef@literal - \def\citeorder{\blx@sortdef@field{citeorder}}% - \blx@tempcnta\z@ - \let\blx@tempa\@empty - #2% - \global\cslet{blx@biber@sorting@#1}\blx@tempa - \endgroup} -\@onlypreamble\DeclareSortingScheme - -\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}{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"}}} - -\def\blx@sortdef@list#1{% - \advance\blx@tempcntb\@ne - \edef\blx@tempd{order="\the\blx@tempcntb"}% - \eappto\blx@tempb{% - \blx@xml@sortitem{\blx@tempd}{#1}}} - -\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 - -\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}} - -\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][]{% - \blx@defmvalue{labelnamespec}{#1}{#2}} -\@onlypreamble\DeclareLabelname - -\newrobustcmd*{\DeclareLabelyear}[2][]{% - \blx@defmvalue{labelyearspec}{#1}{#2}} -\@onlypreamble\Declarelabelyear - -\def\blx@defmvalue#1#2#3{% - \ifblank{#2} - {\expandafter\blx@defmvalue@ii\csname blx@bcf@#1\endcsname{#3}} - {\forcsvlist{\blx@defmvalue@i{#1}{#3}}{#2}}} - -\def\blx@defmvalue@i#1#2#3{% - \blx@addtypeopt{#3}% - \expandafter\blx@defmvalue@ii\csname blx@bcf@#1@#3\endcsname{#2}} - -\def\blx@defmvalue@ii#1#2{% - \begingroup - \global\let#1\@empty - \blx@tempcnta\z@ - \def\do##1{% - \advance\blx@tempcnta\@ne - \xappto#1{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{##1}}}% - \docsvlist{#2}% - \endgroup} - -% experimental - -\newrobustcmd*{\DeclareDisplaymode}[2][global]{% - \begingroup - \blx@tempcnta\z@ - \def\blx@tempa{\blx@xml@dtarget{*}}% - \forcsvlist\blx@defdisplaymode{#2}% - \csxdef{blx@biber@displaymodes@#1}{% - \blx@xml@displaymode{\blx@tempa}}% - \endgroup} - -\def\blx@defdisplaymode#1{% - \advance\blx@tempcnta\@ne - \edef\blx@tempa{% - \blx@tempa - \blx@xml@dmode{\the\blx@tempcnta}{#1}}} - -\DeclareDisplaymode{original,romanised,uniform,translated} - -%% 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 -\chardef\blx@backend@biber=3 -\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{% - \ifnum\blx@backend=\blx@backend@biber - \ifcsdef{blx@biber@sorting@\blx@sorting} - {} - {\blx@err@invopt{sorting=\blx@sorting}{}% - \def\blx@sorting{nty}}% - \else - \ifcsdef{blx@bibtex@sorting@\blx@sorting} - {} - {\blx@err@invopt{sorting=\blx@sorting}{}% - \def\blx@sorting{nty}}% - \fi} - -\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@minbibnames{#1}} -\DeclareTypeOption{maxcitenames}{% - \numdef\blx@maxcitenames@type{#1}% - \iftoggle{blx@bibliography} - {} - {\c@maxnames#1\relax}} -\DeclareTypeOption{mincitenames}{% - \numdef\blx@minbibnames@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}% BibTeX only - \renewrobustcmd*{\bibinitperiod}{} - \renewrobustcmd*{\bibinitdelim}{} - \renewrobustcmd*{\bibinithyphendelim}{}} - {\togglefalse{blx@terseinits}% BibTeX only - \renewrobustcmd*{\bibinitperiod}{\adddot} - \renewrobustcmd*{\bibinitdelim}{\addnbspace} - \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} - -\DeclareBibliographyOption{firstinits}[true]{% - \settoggle{blx@firstinits}{#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}{% - \ifstrequal{#1}{auto} - {\toggletrue{blx@autolang}% - \def\blx@languagename{english}} - {\IfFileExists{#1.lbx} - {\togglefalse{blx@autolang}% - \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}{% - \ifcsdef{blx@opt@babel@#1} - {\csuse{blx@opt@babel@#1}} - {\blx@err@invopt{babel=#1}{}}} -\def\blx@opt@babel@none{% - \undef\blx@thelangenv - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\def\blx@opt@babel@hyphen{% - \def\blx@thelangenv{hyphenrules}% - \let\blx@hook@initlang\@empty - \let\blx@hook@endlang\@empty} -\csdef{blx@opt@babel@other*}{% - \def\blx@thelangenv{otherlanguage*}% - \def\blx@hook@initlang{\@quotereset\@ne}% - \def\blx@hook@endlang{\blx@postpunct}} -\def\blx@opt@babel@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@gobal - \let\blx@ibidreset\blx@ibidreset@gobal - \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@gobal - \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@gobal - \let\blx@idemreset\blx@idemreset@gobal - \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@gobal - \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@gobal - \let\blx@opcitreset\blx@opcitreset@gobal - \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@gobal - \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@gobal - \let\blx@loccitreset\blx@loccitreset@gobal - \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@gobal - \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{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{labelyear}[true]{% - \settoggle{blx@labelyear}{#1}} -\DeclareTypeOption{labelyear}[true]{% - \settoggle{blx@labelyear}{#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@skiplos}{#1}} -\DeclareEntryOption{skiplos}[true]{% - \settoggle{blx@skiplos}{#1}} - -\DeclareTypeOption{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption{skiplab}[true]{% - \settoggle{blx@skiplab}{#1}} - -\DeclareTypeOption{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skiplos}{#1}% - \settoggle{blx@skiplab}{#1}} -\DeclareEntryOption{dataonly}[true]{% - \settoggle{blx@skipbib}{#1}% - \settoggle{blx@skiplos}{#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=auto,clearlang=true,babel=none, - date=comp,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.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@firstinits} - {\ifnumequal\blx@uniquename\blx@opt@uniquename@full - {\blx@warn@conflopt{% - 'firstinits' conflicts with 'uniquename=full'.\MessageBreak - Setting 'uniquename=init'}% - \setkeys{blx@opt@pre}{uniquename=init}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull - {\blx@warn@conflopt{% - 'firstinits' conflicts with 'uniquename=allfull'.\MessageBreak - Setting 'uniquename=allinit}% - \setkeys{blx@opt@pre}{uniquename=allinit}} - {}% - \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull - {\blx@warn@conflopt{% - 'firstinits' conflicts with 'uniquename=minfull'.\MessageBreak - Setting 'uniquename=mininit}% - \setkeys{blx@opt@pre}{uniquename=mininit}} - {}} - {}% - \nottoggle{blx@labelyear} - {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear - {\blx@warn@conflopt{% - 'uniquelist=minyear' requires 'labelyear'.\MessageBreak - Setting 'uniquelist=true'}% - \setkeys{blx@opt@pre}{uniquelist}} - {}} - {}} + \PassOptionsToPackage{\CurrentOption}{biblatex1}% + \PassOptionsToPackage{\CurrentOption}{biblatex2}% +} + +% Default to the Biber backend +\blx@load@version@onefalse +\ProcessOptions\relax + +\ifblx@load@backend@seen +\else + \PackageWarningNoLine{biblatex} + {% + No "backend" specified, using Biber backend.\MessageBreak + To use BibTeX, load biblatex with \MessageBreak + the "backend=bibtex" option% + } +\fi -\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}} - {\ifnumequal\blx@backend\blx@backend@biber - {\blx@info@noline{% - Data encoding '\blx@bibencoding' specified.\MessageBreak - Backend will reencode on the fly}% - \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}}}}% - \ifboolexpr{% - togl {blx@safeinputenc} - and test {\ifnumequal\blx@backend\blx@backend@biber} - and ( test {\@ifpackageloaded{inputenc}} - or - test {\@ifpackageloaded{inputenx}} ) +% Now do the loading: avoid any awkward stuff with the conditional by +% expanding first +\ifblx@load@version@one + \expandafter\@firstoftwo +\else + \expandafter\@secondoftwo +\fi + {% + % A few things not defined by v1, but defined in biblatex.def so has to be handled + \protected\long\def\DeclareDefaultSourcemap[#1]#2{}% + \protected\long\def\DeclareLabelalphaTemplate#1{}% + \protected\long\def\DeclareLabeltitle#1{}% + \RequirePackage{biblatex1}% } - {\def\blx@texencoding{ascii}% - \blx@info@noline{% - Input encoding '\blx@texencoding' forced by\MessageBreak - 'safeinputenc' option}} - {}% -} - -% Deferred last minute setup - -\AtBeginDocument{% - \blx@checkbackend{style}% - \blx@checkencoding - \if@filesw - \ifnum\blx@backend=\blx@backend@biber - \blx@ifsigned{\jobname}{bcf} - {\blx@ctrlwrite@biber} - {}% - \else - \blx@auxinit@bibtex\blx@bibfiles - \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib} - {\blx@ctrlwrite@bibtex} - {}% - \fi - \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 + {\RequirePackage{biblatex2}} + +%% Copyright (C) 2006-2011 Philipp Lehman +%% 2012 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. diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex1.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex1.sty new file mode 100644 index 00000000000..e672b64d927 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex1.sty @@ -0,0 +1,10517 @@ +% $Id: biblatex.sty,v 1.7 2011/11/13 19:09:07 lehman stable $ + +% Copyright (c) 2006-2011 Philipp Lehman. +% +% 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{biblatex1} +[\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}% + \@ifpackageloaded{babel} + {\iftoggle{blx@autolang} + {\blx@mkbabel} + {\blx@mknobabel}} + {\blx@mknobabel}% + \csuse{abx@extras@\blx@languagename}% + \csuse{abx@strings@\blx@languagename}% + \undef\blx@mkbabel + \undef\blx@mknobabel + \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 + \@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' 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@debug} +\newtoggle{blx@sortcase} +\newtoggle{blx@sortupper} +\newtoggle{blx@autolang} +\newtoggle{blx@clearlang} +\newtoggle{blx@defernumbers} +\newtoggle{blx@omitnumbers} +\newtoggle{blx@footnote} +\newtoggle{blx@labelalpha} +\newtoggle{blx@labelnumber} +\newtoggle{blx@labelyear} +\newtoggle{blx@natbib} +\newtoggle{blx@mcite} +\newtoggle{blx@loadfiles} +\newtoggle{blx@singletitle} +\newtoggle{blx@terseinits}% BibTeX only +\newtoggle{blx@firstinits} +\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@skiplos} +\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<\string;}% + \edef>{\string>\string;}% + \edef&{\string&\string;}% + \edef"{\string"\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#1{% + \begingroup + \blx@safe@actives + \PackageWarning{biblatex}{#1\blx@noline}% + \endgroup} +\protected\def\blx@warning@noline#1{% + \begingroup + \blx@safe@actives + \PackageWarningNoLine{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#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\blx@noline}% + \endgroup} +\def\blx@info@noline#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\@gobble}% + \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}} + {}} +\@onlypreamble\RequireBiber +\let\blx@reqbiber\z@ + +\def\blx@checkbackend#1{% + \ifnumequal\blx@backend\blx@backend@biber + {} + {\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 + \ifnum\blx@backend=\blx@backend@biber + \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@runbtx}{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} + }} + {} + }% + \else + \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 + \fi + \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{% + \ifnum\blx@backend=\blx@backend@biber + \else + \xifinlist{\blx@auxfile@bibtex}{\blx@list@active} + {} + {\listxadd\blx@list@active{\blx@auxfile@bibtex}}% + \fi + \ifblank{#1} + {} + {\@latex@warning{#1}}% + \blx@rerun@latex + \blx@rerun@bibtex} + +\def\blx@logreq@inactive{% + \ifnum\blx@backend=\blx@backend@biber + \else + \xifinlist{\blx@auxfile@bibtex}{\blx@list@inactive} + {} + {\listxadd\blx@list@inactive{\blx@auxfile@bibtex}}% + \fi} + +\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 + \ifnum\blx@backend=\blx@backend@biber + \edef\blx@tempa{% + Please (re)run Biber on the file:\MessageBreak + \jobname}% + \else + \edef\blx@tempa{Please (re)run BibTeX on the file(s):}% + \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% + \dolistloop\blx@list@active + \fi + \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@apo=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 +} + +\def\blx@namecodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\'=\blx@sf@apo +} + +\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\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@apo + \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% + \else + \ifnum\the\sfcode`#1>\blx@sf@apo + \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 + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareBibliographyOption}[1]{% + \@ifnextchar[%] + {\blx@defbibopt{#1}} + {\blx@defbibopt{#1}[]}} + +\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}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareTypeOption}[1]{% + \@ifnextchar[%] + {\blx@deftypeopt{#1}} + {\blx@deftypeopt{#1}[]}} + +\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}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareEntryOption}[1]{% + \@ifnextchar[%] + {\blx@defentryopt{#1}} + {\blx@defentryopt{#1}[]}} + +\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}[1]{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@error + {Bibliography macro '\detokenize{#1}' undefined} + {Use '\string\newbibmacro' to define this macro}} + {\csuse{abx@macro@\detokenize{#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}} + {}} + +% {<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}}} + +% {<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{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@global + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + +\protected\def\blx@ifciteseen@context{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@context + \expandafter{\abx@field@entrykey}} + {\@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{% + \ifinlistcs{#1}{blx@bsee@\the\c@refsection}} + +\def\blx@ifseen@context#1{% + \iftoggle{blx@footnote} + {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} + {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} + +% {<true>}{<false>} + +\def\blx@ifciteibid@global{% + \blx@imc@iffieldequals{entrykey}\blx@lastkey@text} + +\def\blx@ifciteibid@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + +\def\blx@ifciteibid@strict{% + \blx@ifcitesingle + {\blx@ifciteibid@global} + {\@secondoftwo}}% + +\def\blx@ifciteibid@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + {\@secondoftwo}}% + +% {<true>}{<false>} + +\def\blx@ifciteidem@global{% + \blx@imc@iffieldequals{fullhash}\blx@lasthash@text} + +\def\blx@ifciteidem@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +\let\blx@ifciteidem@strict\blx@ifciteidem@global + +\def\blx@ifciteidem@constrict{% + \iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +% {<true>}{<false>} + +\def\blx@ifopcit@global{% + \blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} + +\def\blx@ifopcit@context{% + \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}}}} + +\def\blx@ifopcit@strict{% + \blx@ifcitesingle + {\blx@ifopcit@global} + {\@secondoftwo}}% + +\def\blx@ifopcit@constrict{% + \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}}% + +% {<true>}{<false>} + +\def\blx@ifloccit@global{% + \blx@loccit@check{text}} + +\def\blx@ifloccit@context{% + \iftoggle{blx@footnote} + {\blx@loccit@check{foot}} + {\blx@loccit@check{text}}} + +\def\blx@ifloccit@strict{% + \blx@ifcitesingle + {\blx@loccit@numcheck{text}} + {\@secondoftwo}}% + +\def\blx@ifloccit@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@loccit@numcheck{foot}} + {\@secondoftwo}} + {\blx@loccit@numcheck{text}}} + {\@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{% + \iftoggle{blx@footnote} + {\blx@iffirstonpage{fnpage}} + {\blx@iffirstonpage{page}}} + +\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{% + \ifcsundef{blx@page@\number\numexpr#1} + {\ifcsundef{blx@fnpage@\number\numexpr#1} + {\@secondoftwo} + {\blx@ifsamepage{#1}{#2}{fnpage}}} + {\blx@ifsamepage{#1}{#2}{page}}} + +\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% + \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% + \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} + +% <*>[<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@beglang + \blx@driver{#2}% + \blx@endlang + \endgroup} + +% Punctuation + +\protected\def\blx@initunit{% + \global\togglefalse{blx@block}% + \global\togglefalse{blx@unit}% + \global\togglefalse{blx@insert}% + \global\togglefalse{blx@lastins}% + \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{% + \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{% + \long\gdef\blx@unitpunct{#1}% + \global\toggletrue{blx@unit}}% + +\def\blx@setunit@i{% + \iftoggle{blx@lastins} + {\blx@setunit} + {\@gobble}} + +\protected\def\blx@imc@finentry{% + \unspace\finentrypunct + \blx@postpunct + \blx@initunit} + +\protected\def\blx@finentry@usedrv{% + \unspace\blx@initunit +} + +\protected\def\blx@finentry@inset{% + \blx@setunit\entrysetpunct + \global\toggletrue{blx@block}} + +\blx@regimcs{% + \ifdriver \thefield \strfield \thelist \thename \clearfield \clearlist + \clearname \restorefield \restorelist \restorename + \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword + \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit + \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype + \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal + \iffieldundef \iffieldxref \iflistequalcs \iflistequals + \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems + \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 \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\iffirstinits{\iftoggle{blx@firstinits}}% + \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@hyphenation + {\xifinlist\abx@field@hyphenation\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{% + \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>]{<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}% + \ifnumequal\blx@backend\blx@backend@biber + {} + {\let~\bibnamedelima}% BibTeX only + \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@beglang#3\blx@endlang + \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@imc@entrydata{#1}{% + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}} + \blx@entryset@postcode}} + +\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{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{doi}% + \do{url}% + \do{urlseen}% + \do{file}% + \do{inpreparation}% + \do{submitted}% + \do{inpress}% + \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{langcroatian}% + \do{langdanish}% + \do{langdutch}% + \do{langenglish}% + \do{langfinnish}% + \do{langfrench}% + \do{langgerman}% + \do{langgreek}% + \do{langitalian}% + \do{langlatin}% + \do{langnorwegian}% + \do{langportuguese}% + \do{langrussian}% + \do{langspanish}% + \do{langswedish}% + \do{fromamerican}% + \do{frombrazilian}% + \do{fromcroatian}% + \do{fromdanish}% + \do{fromdutch}% + \do{fromenglish}% + \do{fromfinnish}% + \do{fromfrench}% + \do{fromgerman}% + \do{fromgreek}% + \do{fromitalian}% + \do{fromlatin}% + \do{fromnorwegian}% + \do{fromportuguese}% + \do{fromrussian}% + \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\losname{\abx@str @shorthands}} + {\let\losname\@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}}}}}}} + +\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*{\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@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 \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 interface + +\def\blx@beglang{\blx@clearlang\begingroup} +\def\blx@endlang{\endgroup} +\let\blx@hook@endlang\@empty +\let\blx@hook@initlang\@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@mkbabel{% + \pretocmd\select@language{\blx@langsetup{#1}} + {\ifdef\blx@thelangenv + {\def\blx@beglang{% + \blx@clearlang + \begingroup + \blx@imc@iffieldundef{hyphenation} + {} + {\blx@hook@initlang + \def\blx@endlang{% + \blx@hook@endlang + \csname end\blx@thelangenv\endcsname + \endgroup}% + \csname\blx@thelangenv\expandafter\endcsname + \expandafter{\abx@field@hyphenation}}}} + {}% + \blx@langsetup\bbl@main@language} + {\blx@err@patch{'babel' package}% + \blx@mknobabel}} +\endgroup + +\def\blx@mknobabel{% + \blx@lbxinput{\blx@languagename} + {} + {\blx@err@nolang{\blx@languagename}}} + +\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{hyphenation}% + \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{extraalpha}% + \do{labelnumber}% + \do{labeltitle}% + \do{labelyear}% + \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}% +} + +\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{% + \ifnum\blx@backend=\blx@backend@biber + Biber + \else + BibTeX + \fi + 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@countdef#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}} + +\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@skiplos}% + \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@skiplos} + {\blx@bbl@shorthand} + {}% + \nottoggle{blx@skiplab} + {\iftoggle{blx@labelnumber} + {\blx@bbl@labelnumber} + {}% + \iftoggle{blx@labelalpha} + {\blx@bbl@labelalpha} + {}% + \iftoggle{blx@labelyear} + {\blx@bbl@labelyear} + {}% + \blx@bbl@prefixnumber} + {}% + \ifnumless\blx@backend\blx@backend@biber + {\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@labelyear{% + \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\count\blx@bbl@countdef + \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{\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 + \ifnumequal\blx@backend\blx@backend@biber + {\blx@bblfile@biber} + {\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{shorthands} + {\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@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@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}% + \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@beglang + \bibsentence + \blx@pagetracker + \blx@driver\abx@field@entrytype + \blx@postpunct + \blx@endlang}% + \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 + +% 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{shorthands}% + \def\blx@theenv{shorthands}% + \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@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@beglang + \bibsentence + \blx@pagetracker + \blx@driver{shorthands}% + \blx@postpunct + \blx@endlang}% + \endgroup} + {}} + +\DeclareBibliographyDriver{shorthands}{% + \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}% + \ifnum\blx@backend=\blx@backend@biber + \blx@refsection@biber + \else + \blx@refsection@bibtex + \fi + \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 + \ifnum\blx@backend=\blx@backend@biber + \blx@endrefsection@biber + \else + \blx@endrefsection@bibtex + \fi + \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@refsegment'}% + \label{refsegment:\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} +\@onlypreamble\AtEveryCite +\@onlypreamble\AtEveryCitekey + +\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} + +% {<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} + {\ifnumless\blx@backend\blx@backend@biber % BibTeX only + {\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}}}} + {\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{% + \ifnum\blx@backend=\blx@backend@biber + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + \blx@auxwrite\blx@auxout{}{\blx@xml@citekey{\blx@tempa}}% + \endgroup + \else + \blx@auxwrite\blx@auxout@bibtex{}{\string\citation{#1}}% + \fi} + +% {<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{% + \ifnum\blx@backend=\blx@backend@biber + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + \blx@xmlsanitizeafter{\def\blx@tempb}{#2}% + \blx@auxwrite\blx@auxout{}{\blx@xml@citeset{\blx@tempa}{\blx@tempb}}% + \endgroup + \fi} + +% {<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@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 + \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@gobal{% + \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@gobal} + {\blx@ibidreset@gobal}}% + +\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@gobal{% + \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@gobal{% + \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@gobal + +\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@gobal{% + \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@gobal{% + \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@gobal} + {\blx@opcitreset@gobal}}% + +\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@gobal{% + \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@gobal{% + \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@gobal{% + \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{% + \blx@tempa{\blx@postpunct}} +\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2{% + \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 + \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 + \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\ifciteseen{\blx@TE\blx@imc@ifciteseen}% + \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}% + \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\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\iffirstinits{\blx@TE{\iftoggle{blx@firstinits}}}% + \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}} + +\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 + \blx@usqcheck@i\blx@tempb + \fi + \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} + +\def\blx@usqcheck@i#1#2&{\fi#1} + +\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} + +\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} + +\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold} + +\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} + +\newrobustcmd*{\volcitecmd}[1]{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \@ifstar + {\appto\blx@tempa{*}% + \blx@volcitecmd@i} + {\blx@volcitecmd@i}} + +\def\blx@volcitecmd@i{% + \@ifnextchar[%] + {\blx@volcitecmd@ii} + {\blx@volcitecmd@ii[]}} + +\def\blx@volcitecmd@ii[#1]#2{% + \appto\blx@tempa{[#1]}% + \blx@getformat\blx@tempb{ffd}{}{volcitevolume}% + \@ifnextchar[%] + {\blx@volcitecmd@iii{#2}} + {\edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#2}}}]}% + \blx@tempa}} + +\def\blx@volcitecmd@iii#1[#2]{% + \blx@getformat\blx@tempc{ffd}{}{volcitepages}% + \edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#1}}% + \noexpand\volcitedelim + \expandonce{\blx@tempc{#2}}}]}% + \blx@tempa} + +%% 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{labelyear}% + \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% + \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{labelyear}% + \blx@xml@mvalue{labelyearspec}{% + \ifcsdef{blx@bcf@labelyearspec@#1} + {\csuse{blx@bcf@labelyearspec@#1}} + {\blx@bcf@labelyearspec}}% + \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@labelyear}{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}} + +%% Customization + +% [<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}{}}} + +% [<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*{\DeclareSortingScheme}[2]{% + \begingroup + \let\sort\blx@sortdef@sort + \let\name\blx@sortdef@list + \let\list\blx@sortdef@list + \let\field\blx@sortdef@field + \let\literal\blx@sortdef@literal + \def\citeorder{\blx@sortdef@field{citeorder}}% + \blx@tempcnta\z@ + \let\blx@tempa\@empty + #2% + \global\cslet{blx@biber@sorting@#1}\blx@tempa + \endgroup} +\@onlypreamble\DeclareSortingScheme + +\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}{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"}}} + +\def\blx@sortdef@list#1{% + \advance\blx@tempcntb\@ne + \edef\blx@tempd{order="\the\blx@tempcntb"}% + \eappto\blx@tempb{% + \blx@xml@sortitem{\blx@tempd}{#1}}} + +\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 + +\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}} + +\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][]{% + \blx@defmvalue{labelnamespec}{#1}{#2}} +\@onlypreamble\DeclareLabelname + +\newrobustcmd*{\DeclareLabelyear}[2][]{% + \blx@defmvalue{labelyearspec}{#1}{#2}} +\@onlypreamble\Declarelabelyear + +\def\blx@defmvalue#1#2#3{% + \ifblank{#2} + {\expandafter\blx@defmvalue@ii\csname blx@bcf@#1\endcsname{#3}} + {\forcsvlist{\blx@defmvalue@i{#1}{#3}}{#2}}} + +\def\blx@defmvalue@i#1#2#3{% + \blx@addtypeopt{#3}% + \expandafter\blx@defmvalue@ii\csname blx@bcf@#1@#3\endcsname{#2}} + +\def\blx@defmvalue@ii#1#2{% + \begingroup + \global\let#1\@empty + \blx@tempcnta\z@ + \def\do##1{% + \advance\blx@tempcnta\@ne + \xappto#1{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{##1}}}% + \docsvlist{#2}% + \endgroup} + +% experimental + +\newrobustcmd*{\DeclareDisplaymode}[2][global]{% + \begingroup + \blx@tempcnta\z@ + \def\blx@tempa{\blx@xml@dtarget{*}}% + \forcsvlist\blx@defdisplaymode{#2}% + \csxdef{blx@biber@displaymodes@#1}{% + \blx@xml@displaymode{\blx@tempa}}% + \endgroup} + +\def\blx@defdisplaymode#1{% + \advance\blx@tempcnta\@ne + \edef\blx@tempa{% + \blx@tempa + \blx@xml@dmode{\the\blx@tempcnta}{#1}}} + +\DeclareDisplaymode{original,romanised,uniform,translated} + +%% 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 +\chardef\blx@backend@biber=3 +\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{% + \ifnum\blx@backend=\blx@backend@biber + \ifcsdef{blx@biber@sorting@\blx@sorting} + {} + {\blx@err@invopt{sorting=\blx@sorting}{}% + \def\blx@sorting{nty}}% + \else + \ifcsdef{blx@bibtex@sorting@\blx@sorting} + {} + {\blx@err@invopt{sorting=\blx@sorting}{}% + \def\blx@sorting{nty}}% + \fi} + +\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@minbibnames{#1}} +\DeclareTypeOption{maxcitenames}{% + \numdef\blx@maxcitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareTypeOption{mincitenames}{% + \numdef\blx@minbibnames@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}% BibTeX only + \renewrobustcmd*{\bibinitperiod}{} + \renewrobustcmd*{\bibinitdelim}{} + \renewrobustcmd*{\bibinithyphendelim}{}} + {\togglefalse{blx@terseinits}% BibTeX only + \renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinitdelim}{\addnbspace} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} + +\DeclareBibliographyOption{firstinits}[true]{% + \settoggle{blx@firstinits}{#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}{% + \ifstrequal{#1}{auto} + {\toggletrue{blx@autolang}% + \def\blx@languagename{english}} + {\IfFileExists{#1.lbx} + {\togglefalse{blx@autolang}% + \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}{% + \ifcsdef{blx@opt@babel@#1} + {\csuse{blx@opt@babel@#1}} + {\blx@err@invopt{babel=#1}{}}} +\def\blx@opt@babel@none{% + \undef\blx@thelangenv + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\def\blx@opt@babel@hyphen{% + \def\blx@thelangenv{hyphenrules}% + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\csdef{blx@opt@babel@other*}{% + \def\blx@thelangenv{otherlanguage*}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} +\def\blx@opt@babel@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@gobal + \let\blx@ibidreset\blx@ibidreset@gobal + \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@gobal + \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@gobal + \let\blx@idemreset\blx@idemreset@gobal + \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@gobal + \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@gobal + \let\blx@opcitreset\blx@opcitreset@gobal + \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@gobal + \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@gobal + \let\blx@loccitreset\blx@loccitreset@gobal + \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@gobal + \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{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{labelyear}[true]{% + \settoggle{blx@labelyear}{#1}} +\DeclareTypeOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#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@skiplos}{#1}} +\DeclareEntryOption{skiplos}[true]{% + \settoggle{blx@skiplos}{#1}} + +\DeclareTypeOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} + +\DeclareTypeOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#1}% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#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=auto,clearlang=true,babel=none, + date=comp,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.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@firstinits} + {\ifnumequal\blx@uniquename\blx@opt@uniquename@full + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=full'.\MessageBreak + Setting 'uniquename=init'}% + \setkeys{blx@opt@pre}{uniquename=init}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=allfull'.\MessageBreak + Setting 'uniquename=allinit}% + \setkeys{blx@opt@pre}{uniquename=allinit}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=minfull'.\MessageBreak + Setting 'uniquename=mininit}% + \setkeys{blx@opt@pre}{uniquename=mininit}} + {}} + {}% + \nottoggle{blx@labelyear} + {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear + {\blx@warn@conflopt{% + 'uniquelist=minyear' requires 'labelyear'.\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}} + {\ifnumequal\blx@backend\blx@backend@biber + {\blx@info@noline{% + Data encoding '\blx@bibencoding' specified.\MessageBreak + Backend will reencode on the fly}% + \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}}}}% + \ifboolexpr{% + togl {blx@safeinputenc} + and test {\ifnumequal\blx@backend\blx@backend@biber} + 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@checkbackend{style}% + \blx@checkencoding + \if@filesw + \ifnum\blx@backend=\blx@backend@biber + \blx@ifsigned{\jobname}{bcf} + {\blx@ctrlwrite@biber} + {}% + \blx@bblinput + \else + \blx@auxinit@bibtex\blx@bibfiles + \blx@ifsigned{\blx@ctrlfile@bibtex\blxauxsuffix}{bib} + {\blx@ctrlwrite@bibtex} + {}% + \ifnumless\blx@reqbiber\thr@@ + {\blx@bblinput} + {}% + \fi + \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/biblatex2.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty new file mode 100644 index 00000000000..079897b93e1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex2.sty @@ -0,0 +1,10362 @@ +% Copyright (c) 2006-2011 Philipp Lehman. +% +% 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{biblatex2} +[\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} + +\@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}% + \@ifpackageloaded{babel} + {\iftoggle{blx@autolang} + {\blx@mkbabel} + {\blx@mknobabel}} + {\blx@mknobabel}% + \csuse{abx@extras@\blx@languagename}% + \csuse{abx@strings@\blx@languagename}% + \undef\blx@mkbabel + \undef\blx@mknobabel + \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 + \@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' 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{\shorthandwidth} +\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@debug} +\newtoggle{blx@sortcase} +\newtoggle{blx@sortupper} +\newtoggle{blx@autolang} +\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@labelyear} +\newtoggle{blx@natbib} +\newtoggle{blx@mcite} +\newtoggle{blx@loadfiles} +\newtoggle{blx@singletitle} +\newtoggle{blx@firstinits} +\newtoggle{blx@sortfirstinits} +\newtoggle{blx@useauthor} +\newtoggle{blx@useeditor} +\newtoggle{blx@usetranslator} +\newtoggle{blx@useprefix} +\newtoggle{blx@setonly} +\newtoggle{blx@dataonly} +\newtoggle{blx@skipbib} +\newtoggle{blx@skiplos} +\newtoggle{blx@skiplab} +\newtoggle{blx@citation} +\newtoggle{blx@bibliography} +\newtoggle{blx@reencode} +\newtoggle{blx@citeindex} +\newtoggle{blx@bibindex} + +\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} + +\newcommand*{\labelalphaothers}{+} +\newcommand*{\sortalphaothers}{\labelalphaothers} + +\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 + \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<\string;}% + \edef>{\string>\string;}% + \edef&{\string&\string;}% + \edef"{\string"\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' 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@bcfin + \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#1{% + \begingroup + \blx@safe@actives + \PackageWarning{biblatex}{#1\blx@noline}% + \endgroup} +\protected\def\blx@warning@noline#1{% + \begingroup + \blx@safe@actives + \PackageWarningNoLine{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#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\blx@noline}% + \endgroup} +\def\blx@info@noline#1{% + \begingroup + \blx@safe@actives + \PackageInfo{biblatex}{#1\@gobble}% + \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@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} + +% Dummy as biblatex 2 is biber only. Some style may still use this 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 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@apo=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 +} + +\def\blx@namecodes{% + \ifnum\sfcode`\A=\@m + \else + \blx@setazcodes + \fi + \sfcode`\'=\blx@sf@apo +} + +\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\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@apo + \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% + \else + \ifnum\the\sfcode`#1>\blx@sf@apo + \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 + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareBibliographyOption}[1]{% + \@ifnextchar[%] + {\blx@defbibopt{#1}} + {\blx@defbibopt{#1}[]}} + +\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}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareTypeOption}[1]{% + \@ifnextchar[%] + {\blx@deftypeopt{#1}} + {\blx@deftypeopt{#1}[]}} + +\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}}} + +% {<key>}[<value>]{<code>} + +\newrobustcmd*{\DeclareEntryOption}[1]{% + \@ifnextchar[%] + {\blx@defentryopt{#1}} + {\blx@defentryopt{#1}[]}} + +\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}[1]{% + \ifcsundef{abx@macro@\detokenize{#1}} + {\blx@error + {Bibliography macro '\detokenize{#1}' undefined} + {Use '\string\newbibmacro' to define this macro}} + {\csuse{abx@macro@\detokenize{#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}} + {}} + +% {<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}}} + +% {<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{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@global + \expandafter{\abx@field@entrykey}} + {\@secondoftwo}} + +\protected\def\blx@ifciteseen@context{% + \ifdef\abx@field@entrykey + {\expandafter\blx@ifseen@context + \expandafter{\abx@field@entrykey}} + {\@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{% + \ifinlistcs{#1}{blx@bsee@\the\c@refsection}} + +\def\blx@ifseen@context#1{% + \iftoggle{blx@footnote} + {\ifinlistcs{#1}{blx@fsee@\the\c@refsection}} + {\ifinlistcs{#1}{blx@bsee@\the\c@refsection}}} + +% {<true>}{<false>} + +\def\blx@ifciteibid@global{% + \blx@imc@iffieldequals{entrykey}\blx@lastkey@text} + +\def\blx@ifciteibid@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + +\def\blx@ifciteibid@strict{% + \blx@ifcitesingle + {\blx@ifciteibid@global} + {\@secondoftwo}}% + +\def\blx@ifciteibid@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{entrykey}\blx@lastkey@text}} + {\@secondoftwo}}% + +% {<true>}{<false>} + +\def\blx@ifciteidem@global{% + \blx@imc@iffieldequals{fullhash}\blx@lasthash@text} + +\def\blx@ifciteidem@context{% + \iftoggle{blx@footnote} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +\let\blx@ifciteidem@strict\blx@ifciteidem@global + +\def\blx@ifciteidem@constrict{% + \iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} + {\@secondoftwo}} + {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} + +% {<true>}{<false>} + +\def\blx@ifopcit@global{% + \blx@imc@iffieldundef{namehash} + {\@secondoftwo} + {\blx@imc@iffieldequalcs{entrykey}{blx@lastkey@text@\abx@field@namehash}}} + +\def\blx@ifopcit@context{% + \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}}}} + +\def\blx@ifopcit@strict{% + \blx@ifcitesingle + {\blx@ifopcit@global} + {\@secondoftwo}}% + +\def\blx@ifopcit@constrict{% + \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}}% + +% {<true>}{<false>} + +\def\blx@ifloccit@global{% + \blx@loccit@check{text}} + +\def\blx@ifloccit@context{% + \iftoggle{blx@footnote} + {\blx@loccit@check{foot}} + {\blx@loccit@check{text}}} + +\def\blx@ifloccit@strict{% + \blx@ifcitesingle + {\blx@loccit@numcheck{text}} + {\@secondoftwo}}% + +\def\blx@ifloccit@constrict{% + \blx@ifcitesingle + {\iftoggle{blx@footnote} + {\blx@ifmpfncheck + {\blx@loccit@numcheck{foot}} + {\@secondoftwo}} + {\blx@loccit@numcheck{text}}} + {\@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{% + \iftoggle{blx@footnote} + {\blx@iffirstonpage{fnpage}} + {\blx@iffirstonpage{page}}} + +\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{% + \ifcsundef{blx@page@\number\numexpr#1} + {\ifcsundef{blx@fnpage@\number\numexpr#1} + {\@secondoftwo} + {\blx@ifsamepage{#1}{#2}{fnpage}}} + {\blx@ifsamepage{#1}{#2}{page}}} + +\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% + \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% + \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} + +% <*>[<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@sep#1\bibrangessep&} + +\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@beglang + \blx@driver{#2}% + \blx@endlang + \endgroup} + +% Punctuation + +\protected\def\blx@initunit{% + \global\togglefalse{blx@block}% + \global\togglefalse{blx@unit}% + \global\togglefalse{blx@insert}% + \global\togglefalse{blx@lastins}% + \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{% + \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{% + \long\gdef\blx@unitpunct{#1}% + \global\toggletrue{blx@unit}}% + +\def\blx@setunit@i{% + \iftoggle{blx@lastins} + {\blx@setunit} + {\@gobble}} + +\protected\def\blx@imc@finentry{% + \unspace\finentrypunct + \blx@postpunct + \blx@initunit} + +\protected\def\blx@finentry@usedrv{% + \unspace\blx@initunit +} + +\protected\def\blx@finentry@inset{% + \blx@setunit\entrysetpunct + \global\toggletrue{blx@block}} + +\blx@regimcs{% + \ifdriver \thefield \strfield \thelist \thename \clearfield \clearlist + \clearname \restorefield \restorelist \restorename + \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword + \ifciteseen \ifentryseen \ifciteibid \ifciteidem \ifopcit \ifloccit + \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype + \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal + \iffieldundef \iffieldxref \iflistequalcs \iflistequals + \iflistsequal \iflistundef \iflistxref \ifmorenames \ifmoreitems + \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 \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\iffirstinits{\iftoggle{blx@firstinits}}% + \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@hyphenation + {\xifinlist\abx@field@hyphenation\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{% + \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 + \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>]{<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}% + \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@beglang#3\blx@endlang + \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@imc@entrydata{#1}{% + \blx@entryset@precode + \blx@driver{\blx@imc@thefield{entrytype}} + \blx@entryset@postcode}} + +\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{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{doi}% + \do{url}% + \do{urlseen}% + \do{file}% + \do{inpreparation}% + \do{submitted}% + \do{inpress}% + \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{langcroatian}% + \do{langdanish}% + \do{langdutch}% + \do{langenglish}% + \do{langfinnish}% + \do{langfrench}% + \do{langgerman}% + \do{langgreek}% + \do{langitalian}% + \do{langlatin}% + \do{langnorwegian}% + \do{langportuguese}% + \do{langrussian}% + \do{langspanish}% + \do{langswedish}% + \do{fromamerican}% + \do{frombrazilian}% + \do{fromcroatian}% + \do{fromdanish}% + \do{fromdutch}% + \do{fromenglish}% + \do{fromfinnish}% + \do{fromfrench}% + \do{fromgerman}% + \do{fromgreek}% + \do{fromitalian}% + \do{fromlatin}% + \do{fromnorwegian}% + \do{fromportuguese}% + \do{fromrussian}% + \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\losname{\abx@str @shorthands}} + {\let\losname\@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}}}}}}} + +\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*{\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@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 \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 interface + +\def\blx@beglang{\blx@clearlang\begingroup} +\def\blx@endlang{\endgroup} +\let\blx@hook@endlang\@empty +\let\blx@hook@initlang\@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@mkbabel{% + \pretocmd\select@language{\blx@langsetup{#1}} + {\ifdef\blx@thelangenv + {\def\blx@beglang{% + \blx@clearlang + \begingroup + \blx@imc@iffieldundef{hyphenation} + {} + {\blx@hook@initlang + \def\blx@endlang{% + \blx@hook@endlang + \csname end\blx@thelangenv\endcsname + \endgroup}% + \csname\blx@thelangenv\expandafter\endcsname + \expandafter{\abx@field@hyphenation}}}} + {}% + \blx@langsetup\bbl@main@language} + {\blx@err@patch{'babel' package}% + \blx@mknobabel}} +\endgroup + +\def\blx@mknobabel{% + \blx@lbxinput{\blx@languagename} + {} + {\blx@err@nolang{\blx@languagename}}} + +\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}} + {}} + +% 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 in the style 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 +% This has to be done before the real options processing so we need to +% pick out just these two options to look at. You can't do this with keyval, +% you have to use kvoptions. So, pick out these two, 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} +\DeclareDefaultOption{} +\ProcessLocalKeyvalOptions{blx@opt@eldt} +\ifx\blx@opt@eldt@datamodel\@empty + \blx@inputonce{\blx@opt@eldt@style.dbx}{biblatex style data model}{}{}{}{} +\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}{}{}{}{} + +% 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{entrykey}% + \do{entryset}% + \do{entrysetcount}% + \do{entrytype}% + \do{extraalpha}% + \do{extratitle}% + \do{extratitleyear}% + \do{extrayear}% + \do{fullhash}% + \do{labelalpha}% + \do{labelnumber}% + \do{labeltitle}% + \do{labeltitleyear}% + \do{labelyear}% + \do{localnumber}% + \do{namehash}% + \do{prefixnumber}% + \do{sortinit}% +} + +\def\abx@dobooleans{% + \do{singletitle}% +} +\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}}} +\dolistcsloop{blx@biber@datamodel@names}\do{labelname}% +\dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% +\def\do#1{\newtoggle{abx@bool@#1}} +\abx@dobooleans + +\protected\def\blx@resetdata{% + \let\blx@saved@do\do + \let\do\blx@imc@clearname + \dolistcsloop{blx@biber@datamodel@names}\do{labelname}% + \let\do\blx@imc@clearlist + \dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% + \let\do\blx@imc@clearfield + \dolistcsloop{blx@biber@datamodel@fields}\do{options}% + \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 + \dolistcsloop{blx@biber@datamodel@names}\do{labelname}% + \let\do\blx@savelist + \dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% + \let\do\blx@savefield + \dolistcsloop{blx@biber@datamodel@fields}\do{options}% + \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>}{<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@countdef#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}}} + +% {<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@slistsbib@<section>@<sectiontype>@<sectionname> all entries in +% bibliography of a type sorted +% in a particular way +% section -> keys [internal list] +% sectiontype -> "shorthand" or "entry" +% sectionname -> sort scheme name +% \blx@slists@<section>@<sectiontype>@<sectionname> all entries of a type sorted +% in a particular way +% section -> keys [internal list] +% sectiontype -> "shorthand" or "entry" +% sectionname -> sort scheme name +% \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] + +\def\blx@ifdata#1{% + \ifcsdef{blx@data@\the\c@refsection @#1}} + +\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}} + +\protected\def\blx@bbl@keyalias#1#2{% + \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}} + +% {<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@slists@\the\c@refsection @entry@\blx@slist@name}{\abx@field@entrykey}} + {\toggletrue{blx@skipbib}% + \toggletrue{blx@skiplos}% + \toggletrue{blx@skiplab}}% + \nottoggle{blx@skipbib} + {\listcsxadd{blx@slistsbib@\the\c@refsection @entry@\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@skiplos} + {\blx@bbl@shorthand} + {}% + \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@labelyear} + {\blx@bbl@labelyear} + {}% + \blx@bbl@prefixnumber} + {}% + \blx@bbl@titles + \blx@bbl@hooks + \endgroup} + +\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@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@labelyear{% + \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\strng\blx@bbl@stringdef + \let\count\blx@bbl@countdef + \let\true\blx@bbl@booltrue + \let\false\blx@bbl@boolfalse + \let\verb\blx@bbl@verbdef + \let\endverb\blx@bbl@verbend} + +\def\blx@bblend{} + +% {<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{\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@slist#1#2{% + \begingroup + \def\blx@slist@name{#2}% + % This macro (\key) will only be called in shorthand lists + \def\key##1{\listcsxadd{blx@slistsbib@\the\c@refsection @shorthand@#2}{\detokenize{##1}}}} +\let\blx@bbl@endslist\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@biber + \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@reencode{% + \begingroup + \abx@hook@reencode + \let\protect\@unexpandable@protect + \def\do##1{\cslet{abx@name@##1}\relax}% + \dolistcsloop{blx@biber@datamodel@names}\do{labelname}% + \def\do##1{\cslet{abx@list@##1}\relax}% + \dolistcsloop{blx@biber@datamodel@lists}\do{pageref}% + \def\do##1{\cslet{abx@field@##1}\relax}% + \dolistcsloop{blx@biber@datamodel@fields}\do{options}% + \abx@dointernalfields + \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@slists@\the\c@refsection @entry@\blx@sorting}% + \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{shorthands} + {\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 +% We need a 2-pass structure for options in \printbibliography and +% \printshorthands because section and/or sorting have to be set before any +% other options and these also determine 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@los1}{segment}{} +\define@key{blx@los1}{type}{} +\define@key{blx@los1}{nottype}{} +\define@key{blx@los1}{subtype}{} +\define@key{blx@los1}{notsubtype}{} +\define@key{blx@los1}{keyword}{} +\define@key{blx@los1}{notkeyword}{} +\define@key{blx@los1}{category}{} +\define@key{blx@los1}{notcategory}{} +\define@key{blx@los1}{filter}{} +\define@key{blx@los1}{check}{} +\define@key{blx@los1}{heading}{} +\define@key{blx@los1}{env}{} +\define@key{blx@los1}{title}{} +\define@key{blx@los1}{prenote}{} +\define@key{blx@los1}{postnote}{} + +\define@key{blx@los2}{section}{} +\define@key{blx@los2}{sorting}{} + +\define@key{blx@bib1}{sorting}{% + \ifcsundef{blx@biber@sorting@#1} + {\blx@err@invopt{sorting=#1}{}}% + {\blx@printbibchecks + \def\blx@tempc{#1}% + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@#1}}}}} + +\define@key{blx@los1}{sorting}{% + \ifcsundef{blx@biber@sorting@#1} + {\blx@err@invopt{sorting=#1}{}}% + {\blx@printbibchecks + \def\blx@tempc{#1}% + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@#1}}}}} + +\define@key{blx@bib1}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \def\blx@tempe{#1}}} + +\define@key{blx@los1}{section}{% + \ifcsundef{blx@sections@#1} + {\blx@err@nosec{#1}} + {\c@refsection#1\relax + \def\blx@tempe{#1}}} + +\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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{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@los2}{title}{\def\blx@thetitle{#1}} + +\define@key{blx@bib2}{prenote}{\blx@key@prenote{#1}} +\define@key{blx@los2}{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@los2}{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]{% + \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@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}{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@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 + \let\blx@tempc\blx@sorting% sorting scheme name from "sorting" option + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@\blx@sorting}}}% sorting scheme from "sorting" option + \edef\blx@tempe{\the\c@refsection}% default refsection is current + \blx@safe@actives + \setkeys{blx@bib1}{#1}% Set sorting and section only, if present ... + \blx@rest@actives + \ifcsvoid{blx@slistsbib@\blx@tempe @entry@\blx@tempc} + {} + {\letcs\blx@tempa{blx@slistsbib@\blx@tempe @entry@\blx@tempc}}% + {\ifcsvoid{blx@sbib@\blx@tempe} + {} + {\letcs\blx@tempa{blx@sbib@\blx@tempe}}}% + \blx@safe@actives + \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options + \blx@rest@actives + \csxappto{blx@xml@slistsbib}{\blx@xml@slist{entry}{\blx@tempe}{\blx@tempc}{\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@slistsbib@\the\c@refsection @entry@\blx@sorting} + {} + {\toggletrue{blx@tempa}% + \begingroup + \expandafter\blx@bibliography\csname blx@slistsbib@\the\c@refsection @entry@\blx@sorting\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@slistsbib@\the\c@refsection @entry@\blx@sorting} + {} + {\letcs\blx@tempa{blx@slistsbib@\the\c@refsection @entry@\blx@sorting}}% + \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@slistsbib@\the\c@refsection @entry@\blx@sorting} + {} + {\letcs\blx@tempa{blx@slistsbib@\the\c@refsection @entry@\blx@sorting}}% + \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@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}% + \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@beglang + \bibsentence + \blx@pagetracker + \blx@driver\abx@field@entrytype + \blx@postpunct + \blx@endlang}% + \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 + +% 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}% + \def\blx@theheading{shorthands}% + \def\blx@theenv{shorthands}% + \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 + \def\blx@tempc{shorthand}% sorting scheme name from "sorting" option + \edef\blx@tempd{% + \blx@xml@sorting{% + \csuse{blx@biber@sorting@shorthand}}}% sorting scheme from "sorting" option + \let\blx@printbibchecks\relax + \edef\blx@tempe{\the\c@refsection}% default refsection is current + \blx@safe@actives + \setkeys{blx@los1}{#1}% Set sorting and section only, if present ... + \blx@rest@actives + \ifcsvoid{blx@slistsbib@\blx@tempe @shorthand@\blx@tempc} + {} + {\letcs\blx@tempa{blx@slistsbib@\blx@tempe @shorthand@\blx@tempc}}% + \blx@safe@actives + \setkeys{blx@los2}{#1}% ... now we have correct \blx@tempa, set rest of options + \blx@rest@actives + \csxappto{blx@xml@slistsbib}{\blx@xml@slistlos{shorthand}{\blx@tempe}{\blx@tempc}{\blx@tempd}}% + \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@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@beglang + \bibsentence + \blx@pagetracker + \blx@driver{shorthands}% + \blx@postpunct + \blx@endlang}% + \endgroup} + {}} + +\DeclareBibliographyDriver{shorthands}{% + \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 + \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 + \blx@xsanitizeafter{\forcsvlist\blx@refsection@addfile}{#1}% + \forlistloop{\listadd\blx@bibfiles}\blx@bibfiles@global}% + \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{% + \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{% + \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{% + \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} +\@onlypreamble\AtEveryCite +\@onlypreamble\AtEveryCitekey + +\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} + +% {<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} + {\blx@citation@entry{#1}{#2}} + {}} + +\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@all{% + \ifbool{citerequest} + {\blx@bibreq{*}% + \global\csletcs + {blx@segm@\the\c@refsection @\the\c@refsegment} + {blx@slists@\the\c@refsection @entry@\blx@sorting}% + \ifcsvoid{blx@slists@\the\c@refsection @entry@\blx@sorting} + {\blx@logreq@active{}} + {}} + {}} + +\protected\def\blx@bibreq#1{% + \begingroup + \blx@xmlsanitizeafter{\def\blx@tempa}{#1}% + % citeall is always order "0" - this make 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 + \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@slists@\the\c@refsection @entry@\blx@sorting}% + \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}} + +% {<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@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 + \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@gobal{% + \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@gobal} + {\blx@ibidreset@gobal}}% + +\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@gobal{% + \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@gobal{% + \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@gobal + +\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@gobal{% + \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@gobal{% + \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@gobal} + {\blx@opcitreset@gobal}}% + +\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@gobal{% + \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@gobal{% + \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@gobal{% + \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{% + \blx@tempa{\blx@postpunct}} +\def\blx@checkpunct@iv#1\blx@checkpunct@ii#2{% + \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 + \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 + \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\ifciteseen{\blx@TE\blx@imc@ifciteseen}% + \def\ifentryseen{\blx@TE\blx@imc@ifentryseen}% + \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\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\iffirstinits{\blx@TE{\iftoggle{blx@firstinits}}}% + \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}} + +\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 + \blx@usqcheck@i\blx@tempb + \fi + \expandafter\blx@usqcheck@ii\blx@quotepunct\relax&} + +\def\blx@usqcheck@i#1#2&{\fi#1} + +\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} + +\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} + +\blx@regimcs{\mkbibquote \mkbibemph \mkbibbold} + +\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} + +\newrobustcmd*{\volcitecmd}[1]{% + \begingroup + \def\blx@tempa{\endgroup#1}% + \@ifstar + {\appto\blx@tempa{*}% + \blx@volcitecmd@i} + {\blx@volcitecmd@i}} + +\def\blx@volcitecmd@i{% + \@ifnextchar[%] + {\blx@volcitecmd@ii} + {\blx@volcitecmd@ii[]}} + +\def\blx@volcitecmd@ii[#1]#2{% + \appto\blx@tempa{[#1]}% + \blx@getformat\blx@tempb{ffd}{}{volcitevolume}% + \@ifnextchar[%] + {\blx@volcitecmd@iii{#2}} + {\edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#2}}}]}% + \blx@tempa}} + +\def\blx@volcitecmd@iii#1[#2]{% + \blx@getformat\blx@tempc{ffd}{}{volcitepages}% + \edef\blx@tempa{\expandonce\blx@tempa[{% + \expandonce{\blx@tempb{#1}}% + \noexpand\volcitedelim + \expandonce{\blx@tempc{#2}}}]}% + \blx@tempa} + +%% 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{% + ~~~~~~<bcf:value order="#1">#2</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_datasource>#1</bcf:per_datasource>\blx@nl} +\xdef\blx@xml@sourcemap@pertype#1{% + ~~~~~~~~<bcf:per_type>#1</bcf:per_type>\blx@nl} +\xdef\blx@xml@sourcemap@step#1{% + ~~~~~~~~<bcf:map_step#1/>\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@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@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@slist#1#2#3#4{% + ~~<bcf:sortlist section="#2" type="#1" label="#3">\blx@nl + #4% + ~~</bcf:sortlist>\blx@nl} +\xdef\blx@xml@slistlos#1#2#3#4{% + ~~<bcf:sortlist section="#2" type="#1" label="#3">\blx@nl + ~~~~<bcf:filter type="field">shorthand</bcf:filter>\blx@nl + #4% + ~~</bcf:sortlist>\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}}} +\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{labelyear}% + \blx@xml@mvalue{labelyearspec}{\blx@bcf@labelyearspec}% + \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{sortscheme}{\blx@sorting}% + \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{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{labelyear}% + \blx@xml@mvalue{labelyearspec}{% + \ifcsdef{blx@bcf@labelyearspec@#1} + {\csuse{blx@bcf@labelyearspec@#1}} + {\blx@bcf@labelyearspec}}% + \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}% + }% +} + +\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}% + \blx@xml@toggle{sortfirstinits}% + \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}% + }% + }% + % 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@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}% + }% + }} + {}% + % nosort + \ifcsdef{blx@biber@nosort} + {\eappto\blx@tempa{% + \blx@xml@comment{NOSORT}% + \blx@xml@nosorts{% + \csuse{blx@biber@nosort}% + }% + }} + {}% + % 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@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@xml@slistsbib}% + \blx@xml@endfile}% + \immediate\closeout\blx@bcfout}} + +%% Customisation + +% 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@sourcemap@maps + \let\blx@tempa\@empty + #1% + \csxdef{blx@biber@sourcemap@user}{\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareSourcemap + +\newrobustcmd*{\DeclareDefaultSourcemap}[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, defaults=true}} + {\setkeys{blx@sourcemap@maps}{#1, defaults=true}}% + \eappto\blx@tempa{% + \blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}% + \csxdef{blx@biber@sourcemap@defaults@\blx@tempd}{\blx@tempa}% + \endgroup} +\@onlypreamble\DeclareDefaultSourcemap + +\newcommand*{\blx@sourcemap@maps}[2][]{% + \let\blx@tempb\@empty + \let\blx@tempc\@empty + \let\map\blx@sourcemap@map + \ifblank{#1} + {} + {\setkeys{blx@sourcemap@maps}{#1}}% + #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}{defaults}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempb{ driver\string_defaults="1"}} + {}} + +\newcommand*{\blx@sourcemap@map}[2][]{% + \let\blx@tempd\@empty + \let\blx@tempe\@empty + \let\perdatasource\blx@sourcemap@perdatasource + \let\pertype\blx@sourcemap@pertype + \let\step\blx@sourcemap@step + \ifblank{#1} + {} + {\setkeys{blx@sourcemap@map}{#1}}% + #2% + \eappto\blx@tempc{% + \blx@xml@sourcemap@map{\blx@tempd}{\blx@tempe}}} + +\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempd{ map\string_overwrite="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@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"}} +\define@key{blx@sourcemap@step}{fieldvalue}{% characters + \eappto\blx@tempf{ map\string_field\string_value="#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}{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}{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 + +\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]{% + \eappto\blx@tempb{% + \blx@xml@labelalpha@part{}{#1}}} + +\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}{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}[false]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempc{ substring\string_compound="1"}} + {}} +\define@key{blx@latem@field}{ifnames}{% + \eappto\blx@tempc{ ifnamecount="#1"}} +\define@key{blx@latem@field}{names}{% + \eappto\blx@tempc{ namecount="#1"}} + +% [<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}{}}} + +% [<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*{\DeclareSortingScheme}[2]{% + \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 + #2% + \global\cslet{blx@biber@sorting@#1}\blx@tempa + \endgroup} +\@onlypreamble\DeclareSortingScheme + +\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}{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 + +\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}} + +\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][]{% + \blx@defmvalue{labelnamespec}{#1}{#2}} +\@onlypreamble\DeclareLabelname + +\newrobustcmd*{\DeclareLabeltitle}[2][]{% + \blx@defmvalue{labeltitlespec}{#1}{#2}} +\@onlypreamble\DeclareLabeltitle + +\newrobustcmd*{\DeclareLabelyear}[2][]{% + \blx@defmvalue{labelyearspec}{#1}{#2}} +\@onlypreamble\DeclareLabelyear + +\def\blx@defmvalue#1#2#3{% + \ifblank{#2} + {\expandafter\blx@defmvalue@ii\csname blx@bcf@#1\endcsname{#3}} + {\forcsvlist{\blx@defmvalue@i{#1}{#3}}{#2}}} + +\def\blx@defmvalue@i#1#2#3{% + \blx@addtypeopt{#3}% + \expandafter\blx@defmvalue@ii\csname blx@bcf@#1@#3\endcsname{#2}} + +\def\blx@defmvalue@ii#1#2{% + \begingroup + \global\let#1\@empty + \blx@tempcnta\z@ + \def\do##1{% + \advance\blx@tempcnta\@ne + \xappto#1{\noexpand\blx@xml@ordered{\the\blx@tempcnta}{##1}}}% + \docsvlist{#2}% + \endgroup} + +% experimental + +\newrobustcmd*{\DeclareDisplaymode}[2][global]{% + \begingroup + \blx@tempcnta\z@ + \def\blx@tempa{\blx@xml@dtarget{*}}% + \forcsvlist\blx@defdisplaymode{#2}% + \csxdef{blx@biber@displaymodes@#1}{% + \blx@xml@displaymode{\blx@tempa}}% + \endgroup} + +\def\blx@defdisplaymode#1{% + \advance\blx@tempcnta\@ne + \edef\blx@tempa{% + \blx@tempa + \blx@xml@dmode{\the\blx@tempcnta}{#1}}} + +\DeclareDisplaymode{original,romanised,uniform,translated} + +%% 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 + +% 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{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{debug}[true]{% + \settoggle{blx@debug}{#1}} + +\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}} + +\AtEndPreamble{% + \ifcsdef{blx@biber@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}{% + \blx@warning@noline{% + sortlos option is deprecated, use 'sorting' option to \string\printshorthands}} + +\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@minbibnames{#1}} +\DeclareTypeOption{maxcitenames}{% + \numdef\blx@maxcitenames@type{#1}% + \iftoggle{blx@bibliography} + {} + {\c@maxnames#1\relax}} +\DeclareTypeOption{mincitenames}{% + \numdef\blx@minbibnames@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{terseinits}[true]{% + \ifstrequal{#1}{true} + {\renewrobustcmd*{\bibinitperiod}{} + \renewrobustcmd*{\bibinitdelim}{} + \renewrobustcmd*{\bibinithyphendelim}{}} + {\renewrobustcmd*{\bibinitperiod}{\adddot} + \renewrobustcmd*{\bibinitdelim}{\addnbspace} + \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}} + +\DeclareBibliographyOption{firstinits}[true]{% + \settoggle{blx@firstinits}{#1}} + +\DeclareBibliographyOption{sortfirstinits}[true]{% + \settoggle{blx@sortfirstinits}{#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}{% + \ifstrequal{#1}{auto} + {\toggletrue{blx@autolang}% + \def\blx@languagename{english}} + {\IfFileExists{#1.lbx} + {\togglefalse{blx@autolang}% + \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}{% + \ifcsdef{blx@opt@babel@#1} + {\csuse{blx@opt@babel@#1}} + {\blx@err@invopt{babel=#1}{}}} +\def\blx@opt@babel@none{% + \undef\blx@thelangenv + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\def\blx@opt@babel@hyphen{% + \def\blx@thelangenv{hyphenrules}% + \let\blx@hook@initlang\@empty + \let\blx@hook@endlang\@empty} +\csdef{blx@opt@babel@other*}{% + \def\blx@thelangenv{otherlanguage*}% + \def\blx@hook@initlang{\@quotereset\@ne}% + \def\blx@hook@endlang{\blx@postpunct}} +\def\blx@opt@babel@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@gobal + \let\blx@ibidreset\blx@ibidreset@gobal + \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@gobal + \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@gobal + \let\blx@idemreset\blx@idemreset@gobal + \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@gobal + \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@gobal + \let\blx@opcitreset\blx@opcitreset@gobal + \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@gobal + \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@gobal + \let\blx@loccitreset\blx@loccitreset@gobal + \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@gobal + \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{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{labeltitle}[true]{% + \settoggle{blx@labeltitle}{#1}} +\DeclareTypeOption{labeltitle}[true]{% + \settoggle{blx@labeltitle}{#1}} + +\DeclareBibliographyOption{labeltitleyear}[true]{% + \settoggle{blx@labeltitleyear}{#1}} +\DeclareTypeOption{labeltitleyear}[true]{% + \settoggle{blx@labeltitleyear}{#1}} + +\DeclareBibliographyOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#1}} +\DeclareTypeOption{labelyear}[true]{% + \settoggle{blx@labelyear}{#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@skiplos}{#1}} +\DeclareEntryOption{skiplos}[true]{% + \settoggle{blx@skiplos}{#1}} + +\DeclareTypeOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{skiplab}[true]{% + \settoggle{blx@skiplab}{#1}} + +\DeclareTypeOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#1}% + \settoggle{blx@skiplab}{#1}} +\DeclareEntryOption{dataonly}[true]{% + \settoggle{blx@skipbib}{#1}% + \settoggle{blx@skiplos}{#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,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=auto,clearlang=true,babel=none, + date=comp,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@firstinits} + {\ifnumequal\blx@uniquename\blx@opt@uniquename@full + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=full'.\MessageBreak + Setting 'uniquename=init'}% + \setkeys{blx@opt@pre}{uniquename=init}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@allfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=allfull'.\MessageBreak + Setting 'uniquename=allinit}% + \setkeys{blx@opt@pre}{uniquename=allinit}} + {}% + \ifnumequal\blx@uniquename\blx@opt@uniquename@minfull + {\blx@warn@conflopt{% + 'firstinits' conflicts with 'uniquename=minfull'.\MessageBreak + Setting 'uniquename=mininit}% + \setkeys{blx@opt@pre}{uniquename=mininit}} + {}} + {}% + \nottoggle{blx@labelyear} + {\ifnumequal\blx@uniquelist\blx@opt@uniquelist@minyear + {\blx@warn@conflopt{% + 'uniquelist=minyear' requires 'labelyear'.\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 + Backend will reencode on the fly}% + \togglefalse{blx@reencode}}}}} + {\def\blx@bibencoding{ascii}% + \blx@info@noline{% + Data encoding not specified.\MessageBreak + Assuming '\blx@bibencoding'}% + \togglefalse{blx@reencode}}% + \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@checkencoding + \if@filesw + \blx@ifsigned{\jobname}{bcf} + {\blx@ctrlwrite@biber} + {}% + \blx@bblinput + \blx@maxsection\z@ + \fi + \csuse{abx@preamble}% + \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-compat.def b/Master/texmf-dist/tex/latex/biblatex/blx-compat.def index 2e0a9fbfec2..45aeb955f98 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-compat.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-compat.def @@ -1,8 +1,5 @@ -% $Id: blx-compat.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{blx-compat.def} -[\abx@rcsid $Id: blx-compat.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - biblatex generic compatibility] +[\abx@cptid] % LaTeX diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-dm.def b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def new file mode 100644 index 00000000000..0da6bc8e7cd --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/blx-dm.def @@ -0,0 +1,1561 @@ +% -*- mode: LaTeX -*- + +\newbool{dmskipout}% + +% Data model .bcf output macros +\xdef\blx@xml@datamodel#1{% + ~~<bcf:datamodel>\blx@nl + #1% + ~~</bcf:datamodel>\blx@nl} +\xdef\blx@xml@datamodel@entrytypes#1{% + ~~~~<bcf:entrytypes>\blx@nl + #1% + ~~~~</bcf:entrytypes>\blx@nl} +\xdef\blx@xml@datamodel@entrytype#1{% + ~~~~~~<bcf:entrytype>#1</bcf:entrytype>\blx@nl} +\xdef\blx@xml@datamodel@fields#1{% + ~~~~<bcf:fields>\blx@nl + #1% + ~~~~</bcf:fields>\blx@nl} +\xdef\blx@xml@datamodel@field#1#2{% + ~~~~~~<bcf:field#1>#2</bcf:field>\blx@nl} +\xdef\blx@xml@datamodel@entryfields#1{% + ~~~~<bcf:entryfields>\blx@nl + #1% + ~~~~</bcf:entryfields>\blx@nl} +\xdef\blx@xml@datamodel@entryfield@type#1{% + ~~~~~~<bcf:entrytype>#1</bcf:entrytype>\blx@nl} +\xdef\blx@xml@datamodel@entryfield@field#1{% + ~~~~~~<bcf:field>#1</bcf:field>\blx@nl} +\xdef\blx@xml@datamodel@constraints#1{% + ~~~~<bcf:constraints>\blx@nl + #1% + ~~~~</bcf:constraints>\blx@nl} +\xdef\blx@xml@datamodel@constraints@type#1{% + ~~~~~~<bcf:entrytype>#1</bcf:entrytype>\blx@nl} +\xdef\blx@xml@datamodel@constraint#1#2{% + ~~~~~~<bcf:constraint#1>\blx@nl + #2% + ~~~~~~</bcf:constraint>\blx@nl} +\xdef\blx@xml@datamodel@constraintfieldsxor#1{% + ~~~~~~~~<bcf:fieldxor>\blx@nl + #1% + ~~~~~~~~</bcf:fieldxor>\blx@nl} +\xdef\blx@xml@datamodel@constraintfieldsor#1{% + ~~~~~~~~<bcf:fieldor>\blx@nl + #1% + ~~~~~~~~</bcf:fieldor>\blx@nl} +\xdef\blx@xml@datamodel@constraint@antecedent#1#2{% + ~~~~~~~~<bcf:antecedent#1>\blx@nl + #2% + ~~~~~~~~</bcf:antecedent>\blx@nl} +\xdef\blx@xml@datamodel@constraint@consequent#1#2{% + ~~~~~~~~<bcf:consequent#1>\blx@nl + #2% + ~~~~~~~~</bcf:consequent>\blx@nl} +\xdef\blx@xml@datamodel@constraintfield#1{% + ~~~~~~~~<bcf:field>#1</bcf:field>\blx@nl} +\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} + +\newrobustcmd*{\ResetDatamodelFields}{% + \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} + +\newrobustcmd*{\ResetDatamodelEntryfields}{% + \global\cslet{blx@bcf@datamodel@entryfields}\@empty} + +\newrobustcmd*{\ResetDatamodelConstraints}{% + \global\cslet{blx@bcf@datamodel@constraints}\@empty} + +\newrobustcmd*{\DeclareDatamodelEntrytypes}[1]{% + \def\do##1{% + \ifinlistcs{##1}{blx@biber@datamodel@entrytypes} + {} + {\listcsgadd{blx@biber@datamodel@entrytypes}{##1}}% + \xappto\blx@bcf@datamodel@entrytypes{% + \blx@xml@datamodel@entrytype{##1}}}% + \docsvlist{#1}} + +\newrobustcmd*{\DeclareDatamodelFields}[2][]{% + \begingroup + \let\blx@dm@type\@empty + \let\blx@dm@datatype\@empty + \boolfalse{dmskipout}% + \let\blx@tempa\@empty + \setkeys{blx@datamodel@field}{#1}% + \def\do##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}} + {}% + \ifboolexpr{% add to list of lists if it is a list which appears in .bbl + not bool {dmskipout} + test {\ifcsstring{blx@dm@type}{list}} + and + ( test {\ifcsstring{blx@dm@datatype}{literal}} + or + test {\ifcsstring{blx@dm@datatype}{key}} + ) + and + not test {\ifinlistcs{##1}{blx@biber@datamodel@lists}}} + {\listcsgadd{blx@biber@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}} + and + test {\ifcsstring{blx@dm@datatype}{literal}} + ) + or + ( test {\ifcsstring{blx@dm@type}{field}} + and + test {\ifcsstring{blx@dm@datatype}{code}} + ) + or + ( test {\ifcsstring{blx@dm@type}{list}} + and + test {\ifcsstring{blx@dm@datatype}{key}} + ) + or + test {\ifinlistcs{##1}{blx@biber@datamodel@fields}}} + {} + {\listcsgadd{blx@biber@datamodel@fields}{##1}}% + \xappto\blx@bcf@datamodel@fields{% + \blx@xml@datamodel@field{\blx@tempa}{##1}}}% + \docsvlist{#2} + \endgroup} + +\define@key{blx@datamodel@field}{type}{% characters + \eappto\blx@tempa{ fieldtype="#1"}% + \def\blx@dm@type{#1}} +\define@key{blx@datamodel@field}{datatype}{% characters + \eappto\blx@tempa{ datatype="#1"}% + \def\blx@dm@datatype{#1}} +\define@key{blx@datamodel@field}{nullok}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempa{ nullok="true"}} + {}} +\define@key{blx@datamodel@field}{skipout}[true]{% true|false + \ifstrequal{#1}{true} + {\appto\blx@tempa{ skip\string_output="true"}% + \booltrue{dmskipout}} + {}} + +\newrobustcmd*{\DeclareDatamodelEntryfields}[2][]{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \ifblank{#1} + {} + {\def\do##1{% + \eappto\blx@tempa{\blx@xml@datamodel@entryfield@type{##1}}}% + \docsvlist{#1}}% + \def\do##1{% + \eappto\blx@tempb{\blx@xml@datamodel@entryfield@field{##1}}}% + \docsvlist{#2}% + \xappto\blx@bcf@datamodel@entryfields{\blx@xml@datamodel@entryfields{\blx@tempa\blx@tempb}}% + \endgroup} + +\newrobustcmd*{\DeclareDatamodelConstraints}[2][]{% + \begingroup + \let\blx@tempa\@empty + \let\blx@tempb\@empty + \let\constraint\blx@datamodel@constraint + \ifblank{#1} + {} + {\def\do##1{% + \eappto\blx@tempa{\blx@xml@datamodel@constraints@type{##1}}}% + \docsvlist{#1}}% + #2% + \xappto\blx@bcf@datamodel@constraints{\blx@xml@datamodel@constraints{\blx@tempa\blx@tempb}}% + \endgroup} + +\newcommand*{\blx@datamodel@constraint}[2][]{% + \let\blx@tempc\@empty + \let\blx@tempd\@empty + \setkeys{blx@datamodel@constraint}{#1}% + \let\constraintfieldsxor\blx@datamodel@constraintfieldsxor + \let\constraintfieldsor\blx@datamodel@constraintfieldsor + \let\constraintfield\blx@datamodel@constraintfield + \let\antecedent\blx@datamodel@constraint@antecedent + \let\consequent\blx@datamodel@constraint@consequent + #2% + \eappto\blx@tempb{\blx@xml@datamodel@constraint{\blx@tempc}{\blx@tempd}}} + +\define@key{blx@datamodel@constraint}{type}{% characters + \eappto\blx@tempc{ type="#1"}} +\define@key{blx@datamodel@constraint}{datatype}{% characters + \eappto\blx@tempc{ datatype="#1"}} +\define@key{blx@datamodel@constraint}{rangemin}{% integer + \eappto\blx@tempc{ rangemin="#1"}} +\define@key{blx@datamodel@constraint}{rangemax}{% integer + \eappto\blx@tempc{ rangemax="#1"}} +\define@key{blx@datamodel@constraint}{pattern}{% regexp + \eappto\blx@tempc{ pattern="#1"}} + +\newcommand*{\blx@datamodel@constraint@antecedent}[2][]{% + \let\blx@tempe\@empty + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + \setkeys{blx@datamodel@constraint@quant}{#1}% + #2% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraint@antecedent{\blx@tempe}{\blx@temph}}} + +\newcommand*{\blx@datamodel@constraint@consequent}[2][]{% + \let\blx@tempe\@empty + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + \setkeys{blx@datamodel@constraint@quant}{#1}% + #2% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraint@consequent{\blx@tempe}{\blx@temph}}} + +\define@key{blx@datamodel@constraint@quant}{quantifier}{% characters + \eappto\blx@tempe{ quant="#1"}} + +\newcommand*{\blx@datamodel@constraintfieldsxor}[1]{% + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + #1% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraintfieldsxor{\blx@temph}}} + +\newcommand*{\blx@datamodel@constraintfieldsor}[1]{% + \let\blx@temph\@empty + \let\constraintfield\blx@datamodel@constraintfieldsub + #1% + \let\constraintfield\blx@datamodel@constraintfield% back to default + \eappto\blx@tempd{\blx@xml@datamodel@constraintfieldsor{\blx@temph}}} + +\newcommand*{\blx@datamodel@constraintfield}[1]{% + \eappto\blx@tempd{\blx@xml@datamodel@constraintfield{#1}}} + +\newcommand*{\blx@datamodel@constraintfieldsub}[1]{% + \eappto\blx@temph{\blx@xml@datamodel@constraintfieldsub{#1}}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Data model specification + + +\DeclareDatamodelEntrytypes{ + article, + artwork, + audio, + bibnote, + book, + bookinbook, + booklet, + collection, + commentary, + customa, + customb, + customc, + customd, + custome, + customf, + inbook, + incollection, + inproceedings, + inreference, + image, + jurisdiction, + legal, + legislation, + letter, + manual, + misc, + movie, + music, + mvcollection, + mvbook, + online, + patent, + performance, + periodical, + proceedings, + reference, + report, + review, + set, + software, + standard, + suppbook, + suppcollection, + thesis, + unpublished, + video, + xdata} + +\DeclareDatamodelFields[type=field, datatype=integer]{ + 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, + annotation, + booksubtitle, + booktitle, + booktitleaddon, + chapter, + edition, + eid, + entrysubtype, + eprintclass, + eprinttype, + eventtitle, + gender, + howpublished, + hyphenation, + indexsorttitle, + indextitle, + isan, + isbn, + ismn, + isrn, + issn, + issue, + issuesubtitle, + issuetitle, + iswc, + journalsubtitle, + journaltitle, + label, + library, + mainsubtitle, + maintitle, + maintitleaddon, + month, + nameaddon, + note, + number, + origtitle, + pagetotal, + part, + related, + relatedtype, + relatedstring, + reprinttitle, + series, + shorthand, + shorthandintro, + shortjournal, + shortseries, + shorttitle, + subtitle, + title, + titleaddon, + usera, + userb, + userc, + userd, + usere, + userf, + venue, + version, + volume, + volumes, + year} + +\DeclareDatamodelFields[type=field, datatype=integer, nullok]{ + urlendyear, + endyear, + eventendyear, + origendyear} + +\DeclareDatamodelFields[type=field, datatype=literal, skipout]{ + sorttitle, + sortshorthand, + sortyear, + sortkey, + presort, + entryset} + +\DeclareDatamodelFields[type=list, datatype=literal]{ + institution, + lista, + listb, + listc, + listd, + liste, + listf, + location, + organization, + origlocation, + origpublisher, + publisher} + +\DeclareDatamodelFields[type=list, datatype=name]{ + afterword, + annotator, + author, + bookauthor, + commentator, + editor, + editora, + editorb, + editorc, + foreword, + holder, + introduction, + namea, + nameb, + namec, + shortauthor, + shorteditor, + translator} + +\DeclareDatamodelFields[type=list, datatype=name, skipout]{sortname} + +\DeclareDatamodelFields[type=field, datatype=key]{ + authortype, + editoratype, + editorbtype, + editorctype, + editortype, + bookpagination, + nameatype, + namebtype, + namectype, + origlanguage, + pagination, + pubstate, + type} + +\DeclareDatamodelFields[type=list, datatype=key]{language} + +\DeclareDatamodelFields[type=field, datatype=entrykey]{ + crossref, + xref} + +\DeclareDatamodelFields[type=list, datatype=entrykey, skipout]{xdata, ids} + +\DeclareDatamodelFields[type=field, datatype=date, skipout]{ + date, + eventdate, + origdate, + urldate} + +\DeclareDatamodelFields[type=field, datatype=verbatim]{ + doi, + eprint, + file, + url, + verba, + verbb, + verbc} + +\DeclareDatamodelFields[type=field, datatype=csv]{keywords} +\DeclareDatamodelFields[type=field, datatype=csv, skipout]{options} +\DeclareDatamodelFields[type=field, datatype=range]{pages} +\DeclareDatamodelFields[type=field, datatype=code]{execute} + +\DeclareDatamodelEntryfields{ + abstract, + annotation, + authortype, + bookpagination, + crossref, + entryset, + entrysubtype, + execute, + file, + gender, + hyphenation, + ids, + indextitle, + indexsorttitle, + isan, + ismn, + iswc, + keywords, + label, + library, + lista, + listb, + listc, + listd, + liste, + listf, + nameaddon, + options, + origday, + origendday, + origendmonth, + origendyear, + origmonth, + origyear, + origlocation, + origpublisher, + origtitle, + pagination, + presort, + related, + relatedtype, + relatedstring, + shortauthor, + shorteditor, + shorthand, + shorthandintro, + shortjournal, + shortseries, + shorttitle, + sortkey, + sortname, + sortshorthand, + sorttitle, + sortyear, + usera, + userb, + userc, + userd, + usere, + userf, + verba, + verbb, + verbc, + xdata, + xref} + +\DeclareDatamodelEntryfields[set]{ + entryset, + crossref} + +\DeclareDatamodelEntryfields[article]{ + author, + journaltitle, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + annotator, + commentator, + doi, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eid, + eprint, + eprintclass, + eprinttype, + issn, + issue, + issuetitle, + issuesubtitle, + journalsubtitle, + language, + note, + number, + origlanguage, + pages, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version, + volume} + +\DeclareDatamodelEntryfields[bibnote]{note} + +\DeclareDatamodelEntryfields[book]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + chapter, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + maintitle, + maintitleaddon, + mainsubtitle, + note, + number, + origlanguage, + pages, + pagetotal, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[mvbook]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + note, + number, + origlanguage, + publisher, + pubstate, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[inbook,bookinbook,suppbook]{ + author, + title, + booktitle, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + bookauthor, + booksubtitle, + booktitleaddon, + chapter, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + origlanguage, + part, + publisher, + pages, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[booklet]{ + author, + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + howpublished, + language, + location, + note, + pages, + pagetotal, + pubstate, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear} + +\DeclareDatamodelEntryfields[collection,reference]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + chapter, + commentator, + doi, + edition, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + origlanguage, + pages, + pagetotal, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[mvcollection,mvreference]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + commentator, + doi, + edition, + editor, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + note, + number, + origlanguage, + publisher, + pubstate, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[incollection,suppcollection,inreference]{ + author, + editor, + title, + booktitle, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + afterword, + annotator, + booksubtitle, + booktitleaddon, + chapter, + commentator, + doi, + edition, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + foreword, + introduction, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + origlanguage, + pages, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + translator, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume, + volumes} + +\DeclareDatamodelEntryfields[manual]{ + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + author, + chapter, + doi, + edition, + editor, + eprint, + eprintclass, + eprinttype, + isbn, + language, + location, + note, + number, + organization, + pages, + pagetotal, + publisher, + pubstate, + series, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[misc]{ + title, + day, + endday, + endmonth, + endyear, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + author, + doi, + editor, + eprint, + eprintclass, + eprinttype, + howpublished, + language, + location, + note, + organization, + pubstate, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[online]{ + title, + url, + addendum, + author, + editor, + language, + month, + note, + organization, + pubstate, + subtitle, + titleaddon, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version, + year} + +\DeclareDatamodelEntryfields[patent]{ + author, + title, + number, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + doi, + eprint, + eprintclass, + eprinttype, + holder, + location, + note, + pubstate, + subtitle, + titleaddon, + type, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[periodical]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + doi, + editora, + editorb, + editorc, + editoratype, + editorbtype, + editorctype, + eprint, + eprintclass, + eprinttype, + issn, + issue, + issuesubtitle, + issuetitle, + language, + note, + number, + pubstate, + series, + subtitle, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + volume} + +\DeclareDatamodelEntryfields[mvproceedings]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + doi, + eprint, + eprintclass, + eprinttype, + eventday, + eventendday, + eventendmonth, + eventendyear, + eventmonth, + eventyear, + eventtitle, + isbn, + language, + location, + note, + number, + organization, + pagetotal, + publisher, + pubstate, + series, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + venue, + volumes} + +\DeclareDatamodelEntryfields[proceedings]{ + editor, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + eventday, + eventendday, + eventendmonth, + eventendyear, + eventmonth, + eventyear, + eventtitle, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + organization, + pages, + pagetotal, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + venue, + volume, + volumes} + +\DeclareDatamodelEntryfields[inproceedings]{ + author, + editor, + title, + booktitle, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + booksubtitle, + booktitleaddon, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + eventday, + eventendday, + eventendmonth, + eventendyear, + eventmonth, + eventyear, + eventtitle, + isbn, + language, + location, + mainsubtitle, + maintitle, + maintitleaddon, + note, + number, + organization, + pages, + part, + publisher, + pubstate, + series, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + venue, + volume, + volumes} + +\DeclareDatamodelEntryfields[report]{ + author, + title, + type, + institution, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + isrn, + language, + location, + note, + number, + pages, + pagetotal, + pubstate, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear, + version} + +\DeclareDatamodelEntryfields[thesis]{ + author, + title, + type, + institution, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + chapter, + doi, + eprint, + eprintclass, + eprinttype, + language, + location, + note, + pages, + pagetotal, + pubstate, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear} + +\DeclareDatamodelEntryfields[unpublished]{ + author, + title, + day, + endday, + endmonth, + endyear, + month, + year, + addendum, + howpublished, + language, + location, + note, + pubstate, + subtitle, + titleaddon, + url, + urlday, + urlendday, + urlendmonth, + urlendyear, + urlmonth, + urlyear} + +\DeclareDatamodelConstraints[ + article, + book, + inbook, + bookinbook, + suppbook, + booklet, + collection, + incollection, + suppcollection, + manual, + misc, + mvbook, + mvcollection, + online, + patent, + periodical, + suppperiodical, + proceedings, + inproceedings, + reference, + inreference, + report, + set, + thesis, + unpublished]{ + \constraint[type=mandatory]{ + \constraintfieldsxor{ + \constraintfield{date} + \constraintfield{year} + } + } + } + +\DeclareDatamodelConstraints[set]{ + \constraint[type=mandatory]{ + \constraintfield{entryset} + \constraintfield{crossref} + } +} + +\DeclareDatamodelConstraints[article]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{journaltitle} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[book,mvbook,mvcollection,mvreference]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[inbook,bookinbook,suppbook]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{booktitle} + } +} + +\DeclareDatamodelConstraints[booklet]{ + \constraint[type=mandatory]{ + \constraintfieldsor{ + \constraintfield{author} + \constraintfield{editor} + } + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[collection,reference]{ + \constraint[type=mandatory]{ + \constraintfield{editor} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[incollection,suppcollection,inreference]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{editor} + \constraintfield{title} + \constraintfield{booktitle} + } +} + +\DeclareDatamodelConstraints[manual]{ + \constraint[type=mandatory]{ + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[misc]{ + \constraint[type=mandatory]{ + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[online]{ + \constraint[type=mandatory]{ + \constraintfield{title} + \constraintfield{url} + } +} + +\DeclareDatamodelConstraints[patent]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{number} + } +} + +\DeclareDatamodelConstraints[periodical]{ + \constraint[type=mandatory]{ + \constraintfield{editor} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[proceedings,mvproceedings]{ + \constraint[type=mandatory]{ + \constraintfield{editor} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints[inproceedings]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{editor} + \constraintfield{title} + \constraintfield{booktitle} + } +} + +\DeclareDatamodelConstraints[report]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{type} + \constraintfield{institution} + } +} + +\DeclareDatamodelConstraints[thesis]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + \constraintfield{type} + \constraintfield{institution} + } +} + +\DeclareDatamodelConstraints[unpublished]{ + \constraint[type=mandatory]{ + \constraintfield{author} + \constraintfield{title} + } +} + +\DeclareDatamodelConstraints{ + \constraint[type=data, datatype=isbn]{ + \constraintfield{isbn} + } + \constraint[type=data, datatype=issn]{ + \constraintfield{issn} + } + \constraint[type=data, datatype=ismn]{ + \constraintfield{ismn} + } + \constraint[type=data, datatype=date]{ + \constraintfield{date} + \constraintfield{eventdate} + \constraintfield{origdate} + \constraintfield{urldate} + } + \constraint[type=data, datatype=pattern, pattern=\regexp{(?:sf|sm|sn|pf|pm|pn|pp)}]{ + \constraintfield{gender} + } +} + diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def b/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def index b2260b1b716..7057a4185ad 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-mcite.def @@ -1,8 +1,5 @@ -% $Id: blx-mcite.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{blx-mcite.def} -[\abx@rcsid $Id: blx-mcite.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - mcite-like citation commands] +[\abx@cptid] \newrobustcmd*{\mcite}{\mcitelike\cite} \newrobustcmd*{\Mcite}{\mcitelike\Cite} diff --git a/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def b/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def index fcc5b0ef9a8..bb002ab5077 100644 --- a/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def +++ b/Master/texmf-dist/tex/latex/biblatex/blx-natbib.def @@ -1,8 +1,5 @@ -% $Id: blx-natbib.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{blx-natbib.def} -[\abx@rcsid $Id: blx-natbib.def,v 1.7 2011/11/13 19:09:07 lehman stable $ - biblatex natbib compatibility] +[\abx@cptid] \renewcommand*{\nameyeardelim}{\addcomma\space} 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 55e0451e907..1a590085e28 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic-verb.cbx @@ -1,7 +1,5 @@ -% $Id: alphabetic-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic-verb.cbx} -[\abx@cbxid $Id: alphabetic-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelalpha,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx index d21640becc8..590d77eee9b 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/alphabetic.cbx @@ -1,7 +1,5 @@ -% $Id: alphabetic.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{alphabetic.cbx} -[\abx@cbxid $Id: alphabetic.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelalpha,autocite=inline} 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 34e38583808..185499b12ba 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-comp.cbx} -[\abx@cbxid $Id: authortitle-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,sortcites,autocite=footnote} \newbool{cbx:parens} 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 b1a72767f23..8068079eafd 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ibid.cbx} -[\abx@cbxid $Id: authortitle-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,ibidtracker=constrict,pagetracker,autocite=footnote} \providecommand*{\mkibid}[1]{#1} 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 5e39e58d019..faec6bea6af 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-icomp.cbx} -[\abx@cbxid $Id: authortitle-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,ibidtracker=constrict, pagetracker,sortcites,autocite=footnote} 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 c92f8599bbf..2764d3031cf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-tcomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-tcomp.cbx} -[\abx@cbxid $Id: authortitle-tcomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle-comp} \ExecuteBibliographyOptions{singletitle,uniquename,uniquelist,autocite=inline} 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 ebfb2f0be3c..2e3015ef651 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-terse.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-terse.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-terse.cbx} -[\abx@cbxid $Id: authortitle-terse.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle} \ExecuteBibliographyOptions{singletitle,uniquename,uniquelist,autocite=inline} 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 25b255ff919..28bfa4e699d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle-ticomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle-ticomp.cbx} -[\abx@cbxid $Id: authortitle-ticomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle-icomp} \ExecuteBibliographyOptions{singletitle,uniquename,uniquelist,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx index f010f7f9298..4bdb2a94230 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx @@ -1,7 +1,5 @@ -% $Id: authortitle.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authortitle.cbx} -[\abx@cbxid $Id: authortitle.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{uniquename,uniquelist,autocite=footnote} \newbool{cbx:parens} 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 21a2e9abf5d..b579d1c9efd 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-comp.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-comp.cbx} -[\abx@cbxid $Id: authoryear-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,sortcites,autocite=inline} \newbool{cbx:parens} 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 6119852780c..56dc3f27d86 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-ibid.cbx} -[\abx@cbxid $Id: authoryear-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,pagetracker, ibidtracker=constrict,autocite=inline} 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 de084dc3c54..afa46ee3677 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-icomp.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear-icomp.cbx} -[\abx@cbxid $Id: authoryear-icomp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,ibidtracker=constrict, pagetracker,sortcites,autocite=inline} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx index 9d2f8155964..c8fb2f891ad 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx @@ -1,7 +1,5 @@ -% $Id: authoryear.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{authoryear.cbx} -[\abx@cbxid $Id: authoryear.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelyear,uniquename,uniquelist,autocite=inline} \newbool{cbx:parens} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx index f428806df22..dc3405dd7f3 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/debug.cbx @@ -1,7 +1,5 @@ -% $Id: debug.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{debug.cbx} -[\abx@cbxid $Id: debug.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{autocite=plain} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx index a2a1a488ec4..af32a89c6e6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx @@ -1,7 +1,5 @@ -% $Id: draft.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{draft.cbx} -[\abx@cbxid $Id: draft.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{autocite=plain} 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 19f7aaed7cc..9f5a434b38b 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-comp.cbx @@ -1,7 +1,5 @@ -% $Id: numeric-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-comp.cbx} -[\abx@cbxid $Id: numeric-comp.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelnumber,sortcites,autocite=inline} \renewcommand*{\multicitedelim}{\addcomma\space} 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 e7c2ddf6f84..8242120b64d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric-verb.cbx @@ -1,7 +1,5 @@ -% $Id: numeric-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric-verb.cbx} -[\abx@cbxid $Id: numeric-verb.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelnumber,autocite=inline} \renewcommand*{\multicitedelim}{\addcomma\space} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx index 15dc0eb3616..4f431473601 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/numeric.cbx @@ -1,7 +1,5 @@ -% $Id: numeric.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{numeric.cbx} -[\abx@cbxid $Id: numeric.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \ExecuteBibliographyOptions{labelnumber,autocite=inline} \renewcommand*{\multicitedelim}{\addcomma\space} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx index 5834a6f3a97..b9c47701d20 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/reading.cbx @@ -1,7 +1,5 @@ -% $Id: reading.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{reading.cbx} -[\abx@cbxid $Id: reading.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \RequireCitationStyle{authortitle} 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 af78b9ee90c..dff768ed174 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx @@ -1,7 +1,5 @@ -% $Id: verbose-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-ibid.cbx} -[\abx@cbxid $Id: verbose-ibid.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} \DeclareFieldFormat{bibhyperlink}{% 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 492ea42667d..fc416ef3ba6 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx @@ -1,7 +1,5 @@ -% $Id: verbose-inote.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-inote.cbx} -[\abx@cbxid $Id: verbose-inote.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \DeclareFieldFormat{bibhyperlink}{% \bibhyperlink{\thefield{entrykey}:\csuse{cbx@\iffootnote{f}{t}@\thefield{entrykey}}}{#1}} 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 347f291afa6..70d697cfeb2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx @@ -1,7 +1,5 @@ -% $Id: verbose-note.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-note.cbx} -[\abx@cbxid $Id: verbose-note.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \DeclareFieldFormat{bibhyperlink}{% \bibhyperlink{\thefield{entrykey}:\csuse{cbx@\iffootnote{f}{t}@\thefield{entrykey}}}{#1}} 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 3f53294ef64..14d863c0b51 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx @@ -1,8 +1,12 @@ -% $Id: verbose-trad1.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad1.cbx} -[\abx@cbxid $Id: verbose-trad1.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] - +[\abx@cbxid] + +\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} +\DeclareFieldFormat{bibhyperlink}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\DeclareFieldFormat{bibhypertarget}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\newcommand*{\cbx@resetcount}{0} \providecommand*{\mkibid}[1]{#1} \newtoggle{cbx:ibidpage} \newtoggle{cbx:loccit} 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 7227d0ebb43..c87aa5f6623 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx @@ -1,8 +1,12 @@ -% $Id: verbose-trad2.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad2.cbx} -[\abx@cbxid $Id: verbose-trad2.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] - +[\abx@cbxid] + +\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} +\DeclareFieldFormat{bibhyperlink}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\DeclareFieldFormat{bibhypertarget}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\newcommand*{\cbx@resetcount}{0} \providecommand*{\mkibid}[1]{#1} \newtoggle{cbx:fullcite} \newtoggle{cbx:loccit} 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 e451e8285ca..0f7cdb4a949 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx @@ -1,8 +1,12 @@ -% $Id: verbose-trad3.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose-trad3.cbx} -[\abx@cbxid $Id: verbose-trad3.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] - +[\abx@cbxid] + +\InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} +\DeclareFieldFormat{bibhyperlink}{% + \bibhyperlink{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\DeclareFieldFormat{bibhypertarget}{% + \bibhypertarget{\iffootnote{f}{t}:\cbx@resetcount:\thefield{entrykey}}{#1}} +\newcommand*{\cbx@resetcount}{0} \providecommand*{\mkibid}[1]{#1} \newtoggle{cbx:loccit} diff --git a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx index eecfc6a26d4..f219fb6d4d8 100644 --- a/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx +++ b/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx @@ -1,7 +1,5 @@ -% $Id: verbose.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{verbose.cbx} -[\abx@cbxid $Id: verbose.cbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@cbxid] \InitializeCitationStyle{\numgdef{\cbx@resetcount}{\cbx@resetcount+1}} \DeclareFieldFormat{bibhyperlink}{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx index 2b1e0b591a6..87b20b85e09 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/UKenglish.lbx @@ -1,7 +1,5 @@ -% $Id: UKenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{UKenglish.lbx} -[\abx@lbxid $Id: UKenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{british} \InheritBibliographyStrings{british} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx index dd1ab54b14e..62f02a3a9d2 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/USenglish.lbx @@ -1,7 +1,5 @@ -% $Id: USenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{USenglish.lbx} -[\abx@lbxid $Id: USenglish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{american} \InheritBibliographyStrings{american} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx index 28a8bfc53e1..91ebe2f4490 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/american.lbx @@ -1,7 +1,5 @@ -% $Id: american.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{american.lbx} -[\abx@lbxid $Id: american.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{english} \DeclareBibliographyExtras{\uspunctuation} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx index 0b9176e48d1..44dc3408647 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/australian.lbx @@ -1,7 +1,5 @@ -% $Id: australian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{australian.lbx} -[\abx@lbxid $Id: australian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{british} \DeclareBibliographyExtras{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx index cce27921a31..39ee155aa64 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/austrian.lbx @@ -1,7 +1,5 @@ -% $Id: austrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{austrian.lbx} -[\abx@lbxid $Id: austrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{german} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx index bed339c3770..5da4cbe39d7 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/brazil.lbx @@ -1,7 +1,5 @@ -% $Id: brazil.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{brazil.lbx} -[\abx@lbxid $Id: brazil.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{brazilian} \InheritBibliographyStrings{brazilian} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx index 6fb1a37b265..dc08a17d6f9 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/brazilian.lbx @@ -1,7 +1,5 @@ -% $Id: brazilian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{brazilian.lbx} -[\abx@lbxid $Id: brazilian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{brazilian}{brazil,portuges} @@ -217,6 +215,7 @@ bycompiler = {{compilado por}{comp\adddotspace por}}, byredactor = {{redigido por}{red\adddotspace por}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{fundado por}{fund\adddotspace por}}, bycontinuator = {{continuado por}{cont\adddotspace por}}, bycollaborator = {{em colabora\c{a}\~o com}{em col\adddotspace com}}, @@ -301,6 +300,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumes}{vols\adddot}}, + involumes = {{em}{em}}, jourvol = {{volume}{vol\adddot}}, jourser = {{s\'erie}{s\'er\adddot}}, % book = {{}{}}, % FIXME: missing @@ -312,6 +312,15 @@ reprint = {{reimpress\~ao}{reimpr\adddot}}, reprintof = {{reimpress\~ao de}{reimpr\adddotspace de}}, reprintas = {{reimpresso como}{reimpr\adddotspace como}}, + reprintfrom = {{reimpresso}{reimpr\adddot}}, % FIXME: check + translationof = {{tradu\c{c}\~ao de}{trans\adddotspace de}}, % FIXME: check + translationas = {{traduzido como}{trans\adddotspace como}}, % FIXME: check + translationfrom = {{traduzido do}{trans\adddotspace do}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{originalmente publicado como}{orig\adddotspace pub\adddotspace como}}, % FIXME: check + origpubin = {{originalmente publicado em}{orig\adddotspace pub\adddotspace em}}, % FIXME: check + astitle = {{como}{como}}, % FIXME: check + bypublisher = {{por}{por}}, % FIXME: check page = {{p\'agina}{p\adddot}}, pages = {{p\'aginas}{pp\adddot}}, column = {{coluna}{col\adddot}}, @@ -331,6 +340,7 @@ chapter = {{cap\'\i tulo}{cap\adddot}}, mathesis = {{disserta\c{c}\~ao de mestrado}{diss\adddot\ de mestrado}}, phdthesis = {{tese de doutorado}{tese de doutorado}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{relat\'orio de pesquisa}{rel\adddotspace de pesquisa}}, techreport = {{relat\'orio t\'ecnico}{rel\adddotspace t\'ec\adddot}}, software = {{software}{software}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx index 4213e3103df..f2ce1a735d0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/british.lbx @@ -1,7 +1,5 @@ -% $Id: british.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{british.lbx} -[\abx@lbxid $Id: british.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareBibliographyExtras{% \protected\def\bibrangedash{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx index 992f72b191b..67b2dfc2cdf 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/canadian.lbx @@ -1,7 +1,5 @@ -% $Id: canadian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{canadian.lbx} -[\abx@lbxid $Id: canadian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{english}% correct? these are the US standards \InheritBibliographyStrings{english} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx index 9fb9c611d45..9fd7c10b7bb 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx @@ -1,7 +1,5 @@ -% $Id: danish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{danish.lbx} -[\abx@lbxid $Id: danish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{danish}{danish} @@ -147,6 +145,7 @@ bycompiler = {{kompileret af}{komp\adddotspace af}}, byredactor = {{bearbejdet af}{bearb\adddotspace af}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -234,6 +233,7 @@ andmore = {{med flere}{m.fl\adddot}}, volume = {{bind}{bd\adddot}}, volumes = {{bind}{bd\adddot}}, + involumes = {{i}{i}}, jourvol = {{\aa rgang}{\aa g\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -254,6 +254,15 @@ % alternative translation: % reprintas = {{genoptrykt i}{genoptrykt i}}, % reprintas = {{genoptrykt som}{genoptrykt som}}, + reprintfrom = {{eftertryk fra}{eftertryk fra}}, % FIXME: check + translationof = {{overs\ae ttelse af}{overs\ae ttelse af}}, % FIXME: check + translationas = {{oversat som}{oversat som}}, % FIXME: check + translationfrom = {{oversat fra}{oversat fra}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{oprindelig udgivet som}{oprindelig udgivet som}}, % FIXME: check + origpubin = {{oprindeligt udgivet i}{oprindeligt udgivet i}}, % FIXME: check + astitle = {{i}{i}}, % FIXME: check + bypublisher = {{af}{af}}, % FIXME: check page = {{side}{s\adddot}}, pages = {{sider}{s\adddot}}, column = {{spalte}{sp\adddot}}, @@ -274,10 +283,9 @@ ofseries = {{af r\ae kken}{af r\ae kken}}, number = {{nummer}{nr\adddot}}, chapter = {{kapitel}{kap\adddot}}, - mathesis = {{kandidatafhandling}{kandidatafh\adddot}}, -% alternative translation: -% mathesis = {{speciale}{speciale}}, + mathesis = {{speciale}{speciale}}, % FIXME: check phdthesis = {{ph.d.-afhandling}{ph.d.-afh\adddot}}, + candthesis = {{kandidatafhandling}{kandidatafh\adddot}}, % FIXME: check resreport = {{forskningsrapport}{forskningsrap\adddot}}, techreport = {{teknisk rapport}{tek\adddot\ rap\adddot}}, software = {{software}{software}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx index 08833c3b5bf..66d8e787507 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/dutch.lbx @@ -1,7 +1,5 @@ -% $Id: dutch.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{dutch.lbx} -[\abx@lbxid $Id: dutch.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2010-10-31 Update by Alexander van Loon @@ -223,6 +221,7 @@ bycontinuator = {{opgevolgd door}{opgev\adddot\addabbrvspace door}}, byredactor = {{geredigeerd door}{red\adddot\ door}}, byreviser = {{nagekeken door}{nagek\adddot\addabbrvspace door}}, +% byreviewer = {{}{}}, % FIXME: missing bycollaborator = {{met medewerking van}{m\adddot m\adddot v}}, bytranslator = {{vertaald \lbx@lfromlang\ door}{vert\adddot\ \lbx@lfromlang\ door}}, bycommentator = {{becommentarieerd door}{comm\adddot\ door}}, @@ -324,6 +323,15 @@ reprint = {{herdruk}{herdr\adddot}}, reprintof = {{herdruk van}{herdr\adddotspace van}}, reprintas = {{herdrukt als}{herdr\adddotspace als}}, + reprintfrom = {{herdrukt uit}{herdr\adddotspace uit}}, % FIXME: check + translationof = {{translation of}{trans\adddotspace of}}, % FIXME: check + translationas = {{translated as}{trans\adddotspace as}}, % FIXME: check + translationfrom = {{vertaald van}{vert\adddotspace van}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{}{}}, % FIXME: missing + origpubin = {{}{}}, % FIXME: missing + astitle = {{als}{als}}, % FIXME: check + bypublisher = {{door}{door}}, % FIXME: check inpreparation = {{in voorbereiding}{in voorbereiding}}, submitted = {{ingediend}{ingedied}}, % forthcoming = {{}{}}, % FIXME: missing diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx index 26a9105f581..e4e1ec50117 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx @@ -1,7 +1,5 @@ -% $Id: english.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{english.lbx} -[\abx@lbxid $Id: english.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{english,american}{english,american,british, canadian,australian,newzealand,USenglish,UKenglish} @@ -238,6 +236,7 @@ canadian,australian,newzealand,USenglish,UKenglish} bycompiler = {{compiled by}{comp\adddotspace by}}, byredactor = {{redacted by}{red\adddotspace by}}, byreviser = {{revised by}{rev\adddotspace by}}, + byreviewer = {{reviewed by}{rev\adddotspace by}}, byfounder = {{founded by}{found\adddotspace by}}, bycontinuator = {{continued by}{cont\adddotspace by}}, bycollaborator = {{in collaboration with}{in collab\adddotspace with}}, % FIXME: unsure @@ -322,6 +321,7 @@ canadian,australian,newzealand,USenglish,UKenglish} andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumes}{vols\adddot}}, + involumes = {{in}{in}}, jourvol = {{volume}{vol\adddot}}, jourser = {{series}{ser\adddot}}, book = {{book}{book}}, @@ -333,6 +333,15 @@ canadian,australian,newzealand,USenglish,UKenglish} reprint = {{reprint}{repr\adddot}}, reprintof = {{reprint of}{repr\adddotspace of}}, reprintas = {{reprinted as}{rpt\adddotspace as}}, + reprintfrom = {{reprinted from}{repr\adddotspace from}}, + reviewof = {{review of}{rev\adddotspace of}}, + translationof = {{translation of}{trans\adddotspace of}}, + translationas = {{translated as}{trans\adddotspace as}}, + translationfrom = {{translated from}{trans\adddotspace from}}, + origpubas = {{originally published as}{orig\adddotspace pub\adddotspace as}}, + origpubin = {{originally published in}{orig\adddotspace pub\adddotspace in}}, + astitle = {{as}{as}}, + bypublisher = {{by}{by}}, page = {{page}{p\adddot}}, pages = {{pages}{pp\adddot}}, column = {{column}{col\adddot}}, @@ -352,6 +361,7 @@ canadian,australian,newzealand,USenglish,UKenglish} chapter = {{chapter}{chap\adddot}}, mathesis = {{Master's thesis}{MA\addabbrvspace thesis}}, phdthesis = {{PhD\addabbrvspace thesis}{PhD\addabbrvspace thesis}}, + candthesis = {{Candidate thesis}{Cand\adddotspace thesis}}, resreport = {{research report}{research rep\adddot}}, techreport = {{technical report}{tech\adddotspace rep\adddot}}, software = {{computer software}{comp\adddotspace software}}, @@ -460,7 +470,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetrunc@long#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% @@ -478,7 +488,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetrunc@short#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% @@ -492,7 +502,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetruncextra@long#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% @@ -512,7 +522,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \protected\gdef\lbx@us@mkbibrangetruncextra@short#1#2{% \iffieldundef{#2year} {} - {\printtext{% + {\printtext[#2date]{% \iffieldsequal{#2year}{#2endyear} {\csuse{mkbibdate#1}{}{#2month}{#2day}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx index 5b9c83a4bc7..499bbaf4afc 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/finnish.lbx @@ -1,7 +1,5 @@ -% $Id: finnish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{finnish.lbx} -[\abx@lbxid $Id: finnish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Translator's notes: % @@ -237,6 +235,7 @@ bycompiler = {{koontanut}{koontanut}}, byredactor = {{toimittanut}{toim\adddot}}, % FIXME: unsure. % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -321,6 +320,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volyymi}{vol\adddot}}, volumes = {{volyymit}{vol\adddot}}, + involumes = {{tilavuusosaan}{tilavuusosaan}}, % FIXME: unsure. jourvol = {{volyymi}{vol\adddot}}, jourser = {{sarja}{sarja}}, % book = {{}{}}, % FIXME: missing @@ -332,6 +332,15 @@ reprint = {{j\"alkipainos}{j\"alkipainos}}, reprintof = {{julkaistu aiemmin nimell\"a}{julkaistu aiemmin nimell\"a}}, reprintas = {{julkaistu uudelleen nimell\"a}{julkaistu uudelleen nimell\"a}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{sivu}{s\adddot}}, pages = {{sivut}{s\adddot}}, column = {{palsta}{palsta}}, % Here "sarake" is wrong! @@ -351,6 +360,7 @@ chapter = {{luku}{luku}}, mathesis = {{tutkielma}{tutkielma}}, % FIXME: unsure. phdthesis = {{tohtorinv\"ait\"oskirja}{tohtorinv\"ait\"oskirja}}, + candthesis = {{kandidat}{kandidat}}, % FIXME: unsure. resreport = {{tutkimusraportti}{tutkimusraportti}}, techreport = {{tekninen raportti}{tekninen raportti}}, software = {{ohjelmisto}{ohjelmisto}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx index 2d71cfdc745..903bd0e636d 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx @@ -1,7 +1,5 @@ -% $Id: french.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{french.lbx} -[\abx@lbxid $Id: french.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Translations by non-native speaker: this file needs an overhaul! @@ -173,6 +171,7 @@ bycompiler = {{compil\'e par}{comp\adddotspace par}}, byredactor = {{r\'edig\'e par}{r\'ed\adddotspace par}}, % byreviser = {{}{}}, % FIXME: missing + byreviewer = {{examin\'e par}{ex\adddotspace par}}, % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -183,7 +182,7 @@ withannotator = {{avec des annotations par}{avec des annot\adddot\ par}}, withintroduction = {{avec une introduction par}{avec une introd\adddot\ par}}, withforeword = {{avec une pr\'eface par}{avec une pr\'ef\adddot\ par}}, - withafterword = {{avec un postface par}{avec un postf\adddot\ par}}, + withafterword = {{avec une postface par}{avec une postf\adddot\ par}}, byeditortr = {{\'edition \'etablie et traduite \lbx@lfromlang\ par}% {\'ed\adddotspace \'etablie et trad\adddot\ \lbx@sfromlang\ par}}, byeditorco = {{\'edition \'etablie et comment\'ee par}% @@ -257,6 +256,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{tome}{t\adddot}}, volumes = {{tomes}{t\adddot}}, + involumes = {{en}{en}}, jourvol = {{tome}{t\adddot}}, jourser = {{s\'erie}{s\'er\adddot}}, book = {{livre}{livre}}, @@ -266,8 +266,17 @@ oldseries = {{ancienne s\'erie}{anc\adddot\ s\'er\adddot}}, edition = {{\'edition}{\'ed\adddot}}, reprint = {{r\'eimpression}{r\'eimpr\adddot}}, - reprintof = {{r\'eimpression de}{r\'eimpr\adddot de}}, - reprintas = {{r\'eimpression sous le titre}{r\'eimpr\adddot sous le titre}}, + reprintof = {{r\'eimpression de}{r\'eimpr\adddotspace de}}, + reprintas = {{r\'eimpression sous le titre}{r\'eimpr\adddotspace sous le titre}}, + reprintfrom = {{tir\'e \`a part de}{tir\'e \`a part de}}, + translationof = {{traduction de}{trad\adddotspace de}}, + translationas = {{traduit sous le titre}{trad\adddotspace sous le titre}}, + translationfrom = {{traduit de}{trad\adddotspace de}}, + reviewof = {{critique de}{crit.\adddotspace de}}, + origpubas = {{publi\'e \`a l'origine sous le titre}{pub\adddotspace \`a l'orig\adddotspace sous le titre}}, + origpubin = {{publi\'e \`a l'origine en}{pub\adddotspace \`a l'orig\adddotspace en}}, + astitle = {{sous le titre}{sous le titre}}, + bypublisher = {{par}{par}}, page = {{page}{p\adddot}}, pages = {{pages}{p\adddot}}, column = {{colonne}{col\adddot}}, @@ -287,6 +296,7 @@ chapter = {{chapitre}{chap\adddot}}, mathesis = {{m\'emoire de ma\^{\i}trise}{m\'em\adddot de ma\^{\i}tr\adddot}}, phdthesis = {{th\`ese de doctorat}{th\`ese de doct\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{rapport scientifique}{rap\adddot\ scient\adddot}}, techreport = {{rapport technique}{rap\adddot\ tech\adddot}}, software = {{logiciel}{logiciel}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx index 5dec0129a62..a6785385041 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx @@ -1,7 +1,5 @@ -% $Id: german.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{german.lbx} -[\abx@lbxid $Id: german.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{german}{german,ngerman,austrian,naustrian} @@ -224,6 +222,7 @@ bycompiler = {{kompiliert von}{komp\adddotspace von}}, byredactor = {{bearbeitet von}{bearb\adddotspace von}}, byreviser = {{\"uberarbeitet von}{\"uberarb\adddotspace von}}, +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{begr\"undet von}{begr\adddotspace von}}, bycontinuator = {{fortgef\"urt von}{fortgef\adddotspace von}}, bycollaborator = {{unter Mitarbeit von}{unter Mitarb\adddotspace von}}, @@ -308,6 +307,7 @@ andmore = {{u.\,a\adddot}{u.\,a\adddot}}, volume = {{Band}{Bd\adddot}}, volumes = {{B\"ande}{Bde\adddot}}, + involumes = {{in}{in}}, % FIXME: unsure jourvol = {{Jahrgang}{Jg\adddot}}, jourser = {{Serie}{Ser\adddot}}, book = {{Buch}{Buch}}, @@ -319,6 +319,15 @@ reprint = {{Nachdruck}{Nachdr\adddot}}, reprintof = {{Nachdruck von}{Nachdr\adddotspace von}}, reprintas = {{Nachdruck unter dem Titel}{Nachdr\adddotspace unter dem Titel}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{Seite}{S\adddot}}, pages = {{Seiten}{S\adddot}}, column = {{Spalte}{Sp\adddot}}, @@ -338,6 +347,7 @@ chapter = {{Kapitel}{Kap\adddot}}, mathesis = {{Magisterarbeit}{Magisterarb\adddot}}, phdthesis = {{Dissertation}{Diss\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{Forschungsbericht}{Forschungsber\adddot}}, techreport = {{Technischer Bericht}{Techn\adddotspace Ber\adddot}}, software = {{Com\-pu\-ter-Soft\-ware}{Soft\-ware}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx index b2682dfaaf3..6d3164c5fa0 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/greek.lbx @@ -1,7 +1,5 @@ -% $Id: greek.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{greek.lbx} -[\abx@lbxid $Id: greek.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Translator's notes: % @@ -23,7 +21,7 @@ greek.lbx now.}% \endinput} -\NewBibliographyString{% +\NewBibliographyString{% Used only Greek for month checks datejanuary, datefebruary, datemarch, @@ -255,6 +253,7 @@ bycompiler = {{σύνταξη υπό}{σύνταξη υπό}} byredactor = {{σύνταξη υπό}{σύναταξη υπό}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{αρχική δημιουργία από}{αρχική δημιουργία από}} bycontinuator = {{συνέχεια από}{συνέχεια από}} bycollaborator = {{συνεργασία από}{συνεργασία από}} @@ -305,6 +304,7 @@ andmore = {{κ.ά\adddot}{κ.ά\adddot}}, volume = {{τόμος}{τόμ\adddot}}, volumes = {{τόμοι}{τόμοι}}, + involumes = {{σε}{σε}}, % FIXME: check jourvol = {{τόμος}{τόμ\adddot}}, jourser = {{σειρά}{σειρά}}, % book = {{}{}}, % FIXME: missing @@ -316,6 +316,15 @@ reprint = {{ανατύπωση}{ανατύπωση}}, reprintof = {{ανατύπωση του}{ανατύπωση του}}, reprintas = {{ανατύπωση ως}{ανατύπωση ως}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing + bypublisher = {{υπό}{υπό}}, % FIXME: check page = {{σελίδα}{σ\adddot}}, pages = {{σελίδες}{σσ\adddot}}, column = {{στήλη}{στ\adddot}}, @@ -337,6 +346,7 @@ {Μεταπτ/κή διπλ\adddot\ εργασ\adddot}}, phdthesis = {{Διδακτορική διατριβή} {Διδακτορική διατρ\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{αδημοσίευτη ερευνητική εργασία} {αδημοσίευτη ερευνητική εργασία}}, techreport = {{αδημοσίευτη ερευνητική εργασία} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx new file mode 100644 index 00000000000..8209165695e --- /dev/null +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/icelandic.lbx @@ -0,0 +1,403 @@ +% icelandic.lbx, originally based on danish.lbx. +% Baldur Kristinsson, June 2012. + +% STATUS OF THIS FILE +% - Translated by a native speaker (Baldur Kristinsson). +% - Many bibstrings remain untranslated. +% - Needs fine tuning, since grammatical peculiarities of Icelandic +% make straight translations difficult. +% - Last worked on: 2012-06-15 + +\ProvidesFile{icelandic.lbx} + +\DeclareRedundantLanguages{icelandic}{icelandic} + +% The beginning of this is the same as for Danish, since conventions are similar +\DeclareBibliographyExtras{% + \protected\def\bibrangedash{% + \textendash\penalty\hyphenpenalty}% breakable dash + \protected\def\bibdatedash{\bibrangedash}% + \let\finalandcomma=\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}{}{\nobreakspace}}% + \iffieldundef{#2} + {} + {\mkbibmonth{\thefield{#2}}% + \iffieldundef{#1}{}{\space}}% + \stripzeros{\thefield{#1}}}% + \protected\def\mkbibdateshort#1#2#3{% + \iffieldundef{#3} + {} + {\mkdatezeros{\thefield{#3}}\adddot}% + \iffieldundef{#2} + {} + {\mkdatezeros{\thefield{#2}}% + \iffieldundef{#1}{}{\adddot}}% + \mkdatezeros{\thefield{#1}}}% + % Later, it would be more elegant to reverse the order of the name and the localized + % bibstrings, in order to avoid problems with regard to declension. This has to be done + % in a coordinated manner, however, and a lot of macros would have to be redefined + % at the same time. The below, inactive code shows the general idea. + % + % \savebibmacro{bytranslator}% + %\renewbibmacro{bytranslator}{% + % \ifnameundef{translator} + % {} + % {\printnames[bytranslator]{translator}% + % \setunit{\addspace}% + % \bibstring{bytranslator}% + % }}% +} + +%\UndeclareBibliographyExtras{% +% \restorebibmacro{bytranslator} +%} + +\DeclareBibliographyStrings{% + bibliography = {{Heimildaskr\'a}{Heimildaskr\'a}}, + references = {{Heimildir}{Heimildir}}, + shorthands = {{Listi yfir skammstafanir}{Skammstafanir}}, + editor = {{ristj\adddot}{ritstj\adddot}}, + editors = {{ritstj\adddot}{ritstj\adddot}}, + compiler = {{samantekt}{samantekt}}, + compilers = {{samantekt}{samantekt}}, +% FIXME: redactor and editor are the same string; +% is that acceptable? + redactor = {{ritstj\adddot}{ritstj\adddot}}, + redactors = {{ritstj\adddot}{ritstj\adddot}}, + reviser = {{endursk\adddot}{endursk\adddot}}, + revisers = {{endursk\adddot}{endursk\adddot}}, +% founder = {{}{}}, % FIXME: missing +% founders = {{}{}}, % FIXME: missing +% continuator = {{}{}}, % FIXME: missing +% continuators = {{}{}}, % FIXME: missing +% collaborator = {{}{}}, % FIXME: missing +% collaborators = {{}{}}, % FIXME: missing +% +% FIXME: A great deal of conflation here, as well as simplifications in order +% to avoid problems associated with declension: + translator = {{\'y\adddot}{\'y\adddot}}, + translators = {{\'y\adddot}{\'y\adddot}}, + commentator = {{sk\'yringar:}{sk\'yr\adddot}}, + commentators = {{sk\'yringar:}{sk\'yr\adddot}}, + annotator = {{t\'ulkun:}{t\'ulk\adddot}}, + annotators = {{t\'ulkun:}{t\'ulk\adddot}}, + commentary = {{sk\'yringar:}{sk\'yr\adddot}}, + annotations = {{sk\'yringar:}{sk\'yr\adddot}}, + introduction = {{inngangur}{inng\adddot}}, + foreword = {{form\'ali:}{form\'ali:}}, + afterword = {{eftirm\'ali:}{eftirm\'ali:}}, +% editortr = {{}{}}, % FIXME: missing +% editorstr = {{}{}}, % FIXME: missing +% editorco = {{}{}}, % FIXME: missing +% editorsco = {{}{}}, % FIXME: missing +% editoran = {{}{}}, % FIXME: missing +% editorsan = {{}{}}, % FIXME: missing +% editorin = {{}{}}, % FIXME: missing +% editorsin = {{}{}}, % FIXME: missing +% editorfo = {{}{}}, % FIXME: missing +% editorsfo = {{}{}}, % FIXME: missing +% editoraf = {{}{}}, % FIXME: missing +% editorsaf = {{}{}}, % FIXME: missing +% editortrco = {{}{}}, % FIXME: missing +% editorstrco = {{}{}}, % FIXME: missing +% editortran = {{}{}}, % FIXME: missing +% editorstran = {{}{}}, % FIXME: missing +% editortrin = {{}{}}, % FIXME: missing +% editorstrin = {{}{}}, % FIXME: missing +% editortrfo = {{}{}}, % FIXME: missing +% editorstrfo = {{}{}}, % FIXME: missing +% editortraf = {{}{}}, % FIXME: missing +% editorstraf = {{}{}}, % FIXME: missing +% editorcoin = {{}{}}, % FIXME: missing +% editorscoin = {{}{}}, % FIXME: missing +% editorcofo = {{}{}}, % FIXME: missing +% editorscofo = {{}{}}, % FIXME: missing +% editorcoaf = {{}{}}, % FIXME: missing +% editorscoaf = {{}{}}, % FIXME: missing +% editoranin = {{}{}}, % FIXME: missing +% editorsanin = {{}{}}, % FIXME: missing +% editoranfo = {{}{}}, % FIXME: missing +% editorsanfo = {{}{}}, % FIXME: missing +% editoranaf = {{}{}}, % FIXME: missing +% editorsanaf = {{}{}}, % FIXME: missing +% editortrcoin = {{}{}}, % FIXME: missing +% editorstrcoin = {{}{}}, % FIXME: missing +% editortrcofo = {{}{}}, % FIXME: missing +% editorstrcofo = {{}{}}, % FIXME: missing +% editortrcoaf = {{}{}}, % FIXME: missing +% editorstrcoaf = {{}{}}, % FIXME: missing +% editortranin = {{}{}}, % FIXME: missing +% editorstranin = {{}{}}, % FIXME: missing +% editortranfo = {{}{}}, % FIXME: missing +% editorstranfo = {{}{}}, % FIXME: missing +% editortranaf = {{}{}}, % FIXME: missing +% editorstranaf = {{}{}}, % FIXME: missing +% translatorco = {{}{}}, % FIXME: missing +% translatorsco = {{}{}}, % FIXME: missing +% translatoran = {{}{}}, % FIXME: missing +% translatorsan = {{}{}}, % FIXME: missing +% translatorin = {{}{}}, % FIXME: missing +% translatorsin = {{}{}}, % FIXME: missing +% translatorfo = {{}{}}, % FIXME: missing +% translatorsfo = {{}{}}, % FIXME: missing +% translatoraf = {{}{}}, % FIXME: missing +% translatorsaf = {{}{}}, % FIXME: missing +% translatorcoin = {{}{}}, % FIXME: missing +% translatorscoin = {{}{}}, % FIXME: missing +% translatorcofo = {{}{}}, % FIXME: missing +% translatorscofo = {{}{}}, % FIXME: missing +% translatorcoaf = {{}{}}, % FIXME: missing +% translatorscoaf = {{}{}}, % FIXME: missing +% translatoranin = {{}{}}, % FIXME: missing +% translatorsanin = {{}{}}, % FIXME: missing +% translatoranfo = {{}{}}, % FIXME: missing +% translatorsanfo = {{}{}}, % FIXME: missing +% translatoranaf = {{}{}}, % FIXME: missing +% translatorsanaf = {{}{}}, % FIXME: missing + byauthor = {{h\"of.:}{h\"of.:}}, + byeditor = {{gefi \'ut af}{gefi \'ut af}}, + bycompiler = {{teki saman af}{teki saman af}}, + byredactor = {{endurskoa af}{endurskoa af}}, +% byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing +% byfounder = {{}{}}, % FIXME: missing +% bycontinuator = {{}{}}, % FIXME: missing +% bycollaborator = {{}{}}, % FIXME: missing +% +% FIXME: For most of the keys below, the better way would be to postpend +% rather than prepend the localized bibstrings. That would however require a +% redefinition of many macros. Later, perhaps... + bytranslator = {{\'y\adddot \lbx@lfromlang}{\'y\adddot \lbx@sfromlang}}, + bycommentator = {{sk\'yringar:}{sk\'yringar:}}, + byannotator = {{sk\'yringar:}{sk\'yringar:}}, + withcommentator = {{sk\'yringar:}{sk\'yringar:}}, + withannotator = {{sk\'yringar:}{sk\'yringar:}}, + withintroduction = {{inng\adddot}{inng\adddot}}, + withforeword = {{form\'ali:}{form\'ali:}}, + withafterword = {{eftirm\'ali:}{eftirm\'ali:}}, + byeditortr = {{\'utg.~og \'y\adddot \lbx@lfromlang}% + {\'utg.~og \'y\adddot}}, + byeditorco = {{\'utg.~og sk\'yringar:}% + {\'utg.~og sk\'yringar:}}, + byeditoran = {{\'utg.~og sk\'yringar:}% + {\'utg. og sk\'yringar:}}, + byeditorin = {{\'utg. og inng\adddot:}% + {\'utg. og inng\adddot:}}, + byeditorfo = {{\'utg. og form\'ali:}% + {\'utg. og form\'ali:}}, + byeditoraf = {{\'utg. og eftirm\'ali:}% + {\'utg. og eftirm\'ali:}}, + byeditortrco = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}}, + byeditortran = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar:}}, + byeditortrin = {{\'utg., \'y\adddot \lbx@sfromlang\ og inng\adddot:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og inng\adddot:}}, + byeditortrfo = {{\'utg., \'y\adddot \lbx@sfromlang\ og form\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og form\'ali:}}, + byeditortraf = {{\'utg., \'y\adddot \lbx@sfromlang\ og eftirm\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og eftirm\'ali:}}, + byeditorcoin = {{\'utg., sk\'yringar og inng\adddot:}% + {\'utg., sk\'yringar og inng\adddot:}}, + byeditorcofo = {{\'utg., sk\'yringar og form\'ali:}% + {\'utg., sk\'yringar og form\'ali:}}, + byeditorcoaf = {{\'utg., sk\'yringar og eftirm\'ali:}% + {\'utg., sk\'yringar og eftirm\'ali:}}, + byeditoranin = {{\'utg., sk\'yringar og inng\adddot:}% + {\'utg., sk\'yringar og inng\adddot:}}, + byeditoranfo = {{\'utg., sk\'yringar og form\'ali:}% + {\'utg., sk\'yringar og form\'ali:}}, + byeditoranaf = {{\'utg., sk\'yringar og eftirm\'ali:}% + {\'utg., sk\'yringar og eftirm\'ali:}}, + byeditortrcoin = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}}, + byeditortrcofo = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}}, + byeditortrcoaf = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}}, + byeditortranin = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og inng\adddot:}}, + byeditortranfo = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og form\'ali:}}, + byeditortranaf = {{\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}% + {\'utg., \'y\adddot \lbx@sfromlang\ og sk\'yringar og eftirm\'ali:}}, + bytranslatorco = {{\'y\adddot \lbx@lfromlang\ og sk\'yringar:}% + {\'y\adddot \lbx@lfromlang\ og sk\'yringar:}}, + bytranslatoran = {{\'y\adddot \lbx@lfromlang\ og sk\'yringar:}% + {\'y\adddot \lbx@lfromlang\ og sk\'yringar:}}, + bytranslatorin = {{\'y\adddot \lbx@lfromlang\ og inng\adddot:}% + {\'y\adddot \lbx@lfromlang\ og inng\adddot:}}, + bytranslatorfo = {{\'y\adddot \lbx@lfromlang\ og form\'ali:}% + {\'y\adddot \lbx@lfromlang\ og form\'ali:}}, + bytranslatoraf = {{\'y\adddot \lbx@lfromlang\ og eftirm\'ali:}% + {\'y\adddot \lbx@lfromlang\ og eftirm\'ali:}}, + bytranslatorcoin = {{\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}}, + bytranslatorcofo = {{\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}}, + bytranslatorcoaf = {{\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}}, + bytranslatoranin = {{\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og inng\adddot:}}, + bytranslatoranfo = {{\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og form\'ali:}}, + bytranslatoranaf = {{\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}% + {\'y\adddot \lbx@lfromlang, sk\'yringar og eftirm\'ali:}}, + and = {{og}{og}}, + andothers = {{o\adddot fl\adddot}{o\adddot fl\adddot}}, + andmore = {{o\adddot fl\adddot}{o\adddot fl\adddot}}, + volume = {{bindi}{bindi}}, + volumes = {{bindi}{bindi}}, +% involumes = {{}{}}, % FIXME: missing + jourvol = {{\'argangur}{\'arg\adddot}}, + jourser = {{r\"o}{r\"o}}, + book = {{b\'ok}{b\'ok}}, + part = {{hluti}{hluti}}, + issue = {{hefti}{hefti}}, + newseries = {{n\'y ritr\"o}{n\'y ritr\"o}}, + oldseries = {{g\"omul ritr\"o}{g\"omul ritr\"o}}, + edition = {{\'utg\'afa}{\'utg\adddot}}, + reprint = {{endurprentun}{endurprentun}}, + reprintof = {{endurprentun \'a}{endurprentun \'a}}, + reprintas = {{endurprenta sem}{endurprenta sem}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing + page = {{bls\adddot}{bls\adddot}}, + pages = {{bls\adddot}{bls\adddot}}, + column = {{d\'alkur}{dlk\adddot}}, + columns = {{d\'alkar}{dlk\adddot}}, + line = {{l\'{\i}na}{l\adddot}}, + lines = {{l\'{\i}nur}{l\adddot}}, + verse = {{erindi}{er\adddot}}, + verses = {{erindi}{er\adddot}}, + section = {{grein}{\S}}, + sections = {{grein}{\S\S}}, + paragraph = {{m\'alsgrein}{mgr\adddot}}, + paragraphs = {{m\'alsgreinar}{mgr\adddot}}, + in = {{\'{\i}}{\'{\i}}}, + inseries = {{ritr\"oin}{ritr\"oin}}, + ofseries = {{\'ur ritr\"oinni}{\'ur ritr\"oinni}}, + number = {{n\'umer}{nr\adddot}}, + chapter = {{kafli}{k\adddot}}, + mathesis = {{meistarapr\'ofsritger}{meistararitg\adddot}}, + phdthesis = {{doktorsritger}{doktorsritg\adddot}}, +% candthesis = {{}{}}, % FIXME: missing + resreport = {{ranns\'oknarsk\'yrsla}{ranns\'oknarsk\'yrsla}}, + techreport = {{t\ae{}knileg sk\'yrsla}{t\ae{}knileg sk\'yrsla}}, + software = {{hugb\'unaur}{hugb\'unaur}}, + datacd = {{gagnadiskur}{gagnadiskur}}, + audiocd = {{hlj\'odiskur}{hlj\'odiskur}}, + version = {{\'utg\'afa}{\'utg\adddot}}, + url = {{vefsl\'o}{vefsl\'o}}, + urlseen = {{skoa}{skoa}}, + inpreparation = {{\'{\i} vinnslu}{\'{\i} vinnslu}}, + submitted = {{afhent til birtingar}{afhent til birtingar}}, + forthcoming = {{mun birtast}{mun birtast}}, + inpress = {{\'{\i} prentun}{\'{\i} prentun}}, + citedas = {{h\'er eftir skammstafa}{h\'er eftir skst\adddot}}, + seenote = {{sj\'a athugasemd}{sj\'a aths\adddot}}, + quotedin = {{tilvitnun samkv\ae{}mt}{tilvitnun skv\adddot}}, + idem = {{sama heimild}{s\adddot h\adddot}}, + idemsf = {{sama heimild}{s\adddot h\adddot}}, + idemsm = {{sama heimild}{s\adddot h\adddot}}, + idemsn = {{sama heimild}{s\adddot h\adddot}}, + idempf = {{sama heimild}{s\adddot h\adddot}}, + idempm = {{sama heimild}{s\adddot h\adddot}}, + idempn = {{sama heimild}{s\adddot h\adddot}}, + idempp = {{sama heimild}{s\adddot h\adddot}}, + ibidem = {{sama heimild}{s\adddot h\adddot}}, + opcit = {{sama rit}{sama rit}}, + loccit = {{sami staur}{s\adddot st\adddot}}, + confer = {{sbr\adddot}{sbr\adddot}}, + sequens = {{o\adddot \'afr\adddot}{o\adddot \'afr\adddot}}, + sequentes = {{o\adddot \'afr\adddot}{o\adddot \'afr\adddot}}, + passim = {{v\'{\i}a}{v\'{\i}a}}, + see = {{sj\'a}{sj\'a}}, + seealso = {{sj\'a einnig}{sj\'a einnig}}, + backrefpage = {{sj\'a blas\'{\i}u}{sj\'a bls\adddot}}, + backrefpages = {{sj\'a blas\'{\i}ur}{sj\'a bls\adddot}}, + january = {{jan\'uar}{jan\adddot}}, + february = {{febr\'uar}{feb\adddot}}, + march = {{mars}{mar\adddot}}, + april = {{apr\'{\i}l}{apr\adddot}}, + may = {{ma\'{\i}}{ma\'{\i}}}, + june = {{j\'un\'{\i}}{j\'un\adddot}}, + july = {{j\'ul\'{\i}}{j\'ul\adddot}}, + august = {{\'ag\'ust}{\'ag\'u\adddot}}, + september = {{september}{sep\adddot}}, + october = {{okt\'ober}{okt\adddot}}, + november = {{n\'ovember}{n\'ov\adddot}}, + december = {{desember}{des\adddot}}, + langamerican = {{bandar\'{\i}ska}{bandar\'{\i}ska}}, +% langbrazilian = {{}{}}, % FIXME: missing +% langcroatian = {{}{}}, % FIXME: missing +% langdanish = {{}{}}, % FIXME: missing +% langdutch = {{}{}}, % FIXME: missing + langenglish = {{enska}{enska}}, +% langfinnish = {{}{}}, % FIXME: missing + langfrench = {{franska}{franska}}, + langgerman = {{\'yska}{\'yska}}, + langgreek = {{gr\'{\i}ska}{gr\'{\i}ska}}, + langitalian = {{\'{\i}talska}{\'{\i}talska}}, + langlatin = {{lat\'{\i}na}{lat\'{\i}na}}, + langnorwegian = {{norska}{norska}}, +% langportuguese = {{}{}}, % FIXME: missing +% langrussian = {{}{}}, % FIXME: missing + langspanish = {{sp\ae{}nska}{sp\ae{}nska}}, +% langswedish = {{}{}}, % FIXME: missing + fromamerican = {{\'ur bandar\'{\i}sku}{\'ur bandar\'{\i}sku}}, +% frombrazilian = {{}{}}, % FIXME: missing +% fromcroatian = {{}{}}, % FIXME: missing +% fromdanish = {{}{}}, % FIXME: missing +% fromdutch = {{}{}}, % FIXME: missing + fromenglish = {{\'ur ensku}{\'ur ensku}}, +% fromfinnish = {{}{}}, % FIXME: missing + fromfrench = {{\'ur fr\"onsku}{\'ur fr\"onsku}}, + fromgerman = {{\'ur \'ysku}{\'ur \'ysku}}, + fromgreek = {{\'ur gr\'{\i}sku}{\'ur gr\'{\i}sku}}, + fromitalian = {{\'ur \'{\i}t\"olsku}{\'ur \'{\i}t\"olsku}}, + fromlatin = {{\'ur lat\'{\i}nu}{\'ur lat\'{\i}nu}}, + fromnorwegian = {{\'ur norsku}{\'ur norsku}}, +% fromportuguese = {{}{}}, % FIXME: missing +% fromrussian = {{}{}}, % FIXME: missing + fromspanish = {{\'ur sp\ae{}nsku}{\'ur sp\ae{}nsku}}, +% fromswedish = {{}{}}, % FIXME: missing + countryde = {{\'yskaland}{DE}}, + countryeu = {{Evr\'opusambandi}{EU}}, + countryep = {{Evr\'opusambandi}{EP}}, + countryfr = {{Frakkland}{FR}}, + countryuk = {{Bretland}{GB}}, + countryus = {{Bandar\'{\i}kin}{US}}, + patent = {{einkaleyfi}{einkaleyfi}}, + patentde = {{\'yskt einkaleyfi}{\'yskt einkaleyfi}}, + patenteu = {{evr\'opskt einkaleyfi}{evr\'opskt einkaleyfi}}, + patentfr = {{franskt einkaleyfi}{franskt einkaleyfi}}, + patentuk = {{breskt einkaleyfi}{breskt einkaleyfi}}, + patentus = {{bandar\'{\i}skt einkaleyfi}{bandar\'{\i}skt einkaleyfi}}, + patreq = {{ums\'okn um einkaleyfi}{ums\'okn um einkaleyfi}}, + patreqde = {{ums\'okn um \'yskt einkaleyfi}{ums\'okn um \'yskt einkaleyfi}}, + patreqeu = {{ums\'okn um evr\'opskt einkaleyfi}{ums\'okn um evr\'opskt einkaleyfi}}, + patreqfr = {{ums\'okn um franskt einkaleyfi}{ums\'okn um franskt einkaleyfi}}, + patrequk = {{ums\'okn um breskt einkaleyfi}{ums\'okn um breskt einkaleyfi}}, + patrequs = {{ums\'okn um bandar\'{\i}skt einkaleyfi}{ums\'okn um bandar\'{\i}skt einkaleyfi}}, + file = {{skr\'a}{skr\'a}}, + library = {{safn}{safn}}, + abstract = {{\'utdr\'attur}{\'utdr\'attur}}, + annotation = {{athugagrein}{athugagrein}}, +} + +\endinput diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx index 8c293199215..048c1fcf099 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/italian.lbx @@ -1,7 +1,5 @@ -% $Id: italian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{italian.lbx} -[\abx@lbxid $Id: italian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2010-11-10 Update by Andrea Marchitelli @@ -152,6 +150,7 @@ bycompiler = {{compilato da}{comp\adddotspace da}}, byredactor = {{redatto da}{red\adddotspace da}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -236,6 +235,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumi}{voll\adddot}}, + involumes = {{in}{in}}, % FIXME: unsure jourvol = {{volume}{vol\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -247,6 +247,15 @@ reprint = {{ristampa}{rist\adddotspace}}, reprintof = {{ristampa di}{rist\adddotspace di}}, % reprintas = {{}{}}, % FIXME: missing +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{pagina}{p\adddot}}, pages = {{pagine}{pp\adddot}}, column = {{colonna}{col\adddot}}, @@ -266,6 +275,7 @@ chapter = {{capitolo}{cap\adddot}}, mathesis = {{tesi di laurea magistrale}{tesi di laurea mag\adddot}}, phdthesis = {{tesi di dottorato}{tesi di dott\adddot}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{rapporto di ricerca}{rapporto di ricerca}}, techreport = {{rapporto tecnico}{rapp\adddotspace tecn\adddot}}, % software = {{}{}}, % FIXME: missing diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx index 11710a37497..fbf1a7f542e 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/naustrian.lbx @@ -1,7 +1,5 @@ -% $Id: naustrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{naustrian.lbx} -[\abx@lbxid $Id: naustrian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{german} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx index c07f950c106..31aefee0c3e 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/newzealand.lbx @@ -1,7 +1,5 @@ -% $Id: newzealand.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{newzealand.lbx} -[\abx@lbxid $Id: newzealand.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{british} \DeclareBibliographyExtras{% diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx index 9c13c6b1e0f..459b92acb67 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/ngerman.lbx @@ -1,7 +1,5 @@ -% $Id: ngerman.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{ngerman.lbx} -[\abx@lbxid $Id: ngerman.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{german} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx index e1da25c5388..adfadba47f9 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/norsk.lbx @@ -1,7 +1,5 @@ -% $Id: norsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{norsk.lbx} -[\abx@lbxid $Id: norsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Status: % - 'norsk' and 'nynorsk' use the same translations, correct? diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx index 0e9f8b44ed3..a313bc49401 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/norwegian.lbx @@ -1,7 +1,5 @@ -% $Id: norwegian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{norwegian.lbx} -[\abx@lbxid $Id: norwegian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{norwegian}{norsk,nynorsk} @@ -137,6 +135,7 @@ bycompiler = {{sammenstillet av}{sammenst\adddotspace av}}, byredactor = {{bearbeidet av}{bearb\adddotspace av}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -221,6 +220,7 @@ andmore = {{og mer}{og mer}}, volume = {{bind}{bd\adddot}}, volumes = {{bind}{bd\adddot}}, + involumes = {{i}{i}}, % FIXME: unsure jourvol = {{\aa rgang}{\aa g\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -232,6 +232,15 @@ reprint = {{gjenopptrykk}{gjenopptrykk}}, reprintof = {{gjenopptrykk av}{gjenopptrykk av}}, reprintas = {{gjenopptrykk som}{gjenopptrykk som}}, +% reprintfrom = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{opprinnelig publisert som}{oppr\adddot\ pub\adddot\ som}}, % FIXME: check + origpubin = {{opprinnelig utgitt i}{oppr\adddot\ utgitt i}}, % FIXME: check +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{side}{s\adddot}}, pages = {{sider}{s\adddot}}, column = {{spalte}{sp\adddot}}, @@ -251,6 +260,7 @@ chapter = {{kapittel}{kap\adddot}}, mathesis = {{masteroppgave}{masteropp\adddot}}, phdthesis = {{PhD avhandling}{PhD avh\adddot}}, + candthesis = {{cand\adddot\ avhandling}{cand\adddot\ avh\adddot}}, % FIXME: unsure resreport = {{forskningsrapport}{forskningsrapport}}, techreport = {{teknisk rapport}{tek\adddot\ rap\adddot}}, software = {{programvare}{programvare}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx index d24ae383604..40535b9fde4 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/nynorsk.lbx @@ -1,7 +1,5 @@ -% $Id: nynorsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{nynorsk.lbx} -[\abx@lbxid $Id: nynorsk.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Status: % - 'norsk' and 'nynorsk' use the same translations, correct? diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx index d0cb720965e..8e19b107015 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/portuges.lbx @@ -1,7 +1,5 @@ -% $Id: portuges.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{portuges.lbx} -[\abx@lbxid $Id: portuges.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \InheritBibliographyExtras{portuguese} \InheritBibliographyStrings{portuguese} diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx index e0a9ad8a872..b67cd53037f 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/portuguese.lbx @@ -1,7 +1,5 @@ -% $Id: portuguese.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{portuguese.lbx} -[\abx@lbxid $Id: portuguese.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2010-11-21 Update by Jos\'e Carlos Santos @@ -227,6 +225,7 @@ bycompiler = {{compilado por}{comp\adddotspace por}}, byredactor = {{redigido por}{red\adddotspace por}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing byfounder = {{fundado por}{fund\adddotspace por}}, bycontinuator = {{continuado por}{cont\adddotspace por}}, bycollaborator = {{em colabora\c{a}\~o com}{em col\adddotspace com}}, @@ -311,6 +310,7 @@ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}}, volume = {{volume}{vol\adddot}}, volumes = {{volumes}{vols\adddot}}, + involumes = {{em}{em}}, jourvol = {{volume}{vol\adddot}}, jourser = {{s\'erie}{s\'er\adddot}}, % book = {{}{}}, % FIXME: missing @@ -322,6 +322,15 @@ reprint = {{reimpress\~ao}{reimpr\adddot}}, reprintof = {{reimpress\~ao de}{reimpr\adddotspace de}}, reprintas = {{reimpresso como}{reimpr\adddotspace como}}, + reprintfrom = {{reimpresso}{reimpr\adddot}}, % FIXME: check + translationof = {{tradu\c{c}\~ao de}{trans\adddotspace de}}, % FIXME: check + translationas = {{traduzido como}{trans\adddotspace como}}, % FIXME: check + translationfrom = {{traduzido do}{trans\adddotspace do}}, % FIXME: check +% reviewof = {{}{}}, % FIXME: missing + origpubas = {{originalmente publicado como}{orig\adddotspace pub\adddotspace como}}, % FIXME: check + origpubin = {{originalmente publicado em}{orig\adddotspace pub\adddotspace em}}, % FIXME: check + astitle = {{como}{como}}, % FIXME: check + bypublisher = {{por}{por}}, % FIXME: check page = {{p\'agina}{p\adddot}}, pages = {{p\'aginas}{pp\adddot}}, column = {{coluna}{col\adddot}}, @@ -341,6 +350,7 @@ chapter = {{cap\'\i tulo}{cap\adddot}}, mathesis = {{tese de mestrado}{tese de mestrado}}, phdthesis = {{tese de doutoramento}{tese de doutoramento}}, +% candthesis = {{}{}}, % FIXME: missing resreport = {{relat\'orio de pesquisa}{rel\adddotspace de pesquisa}}, techreport = {{relat\'orio t\'ecnico}{rel\adddotspace t\'ec\adddot}}, software = {{software}{software}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx index bf85e0b5d23..6125e498ed5 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/russian.lbx @@ -1,7 +1,5 @@ -% $Id: russian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{russian.lbx} -[\abx@lbxid $Id: russian.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{russian}{russian} @@ -17,9 +15,7 @@ russian.lbx now.}% \endinput} -\NewBibliographyString{% - involumes, - candthesis, +\NewBibliographyString{% Used only Russian for month checks datejanuary, datefebruary, datemarch, @@ -36,10 +32,9 @@ \DeclareBibliographyExtras{% \protected\def\bibrangedash{% - \textendash\penalty\hyphenpenalty}% breakable dash + \textemdash\penalty\hyphenpenalty}% breakable dash \protected\def\bibdatedash{% - \addnbthinspace\textendash\addthinspace - \penalty\hyphenpenalty}% breakable dash + \textemdash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty \protected\def\mkbibordinal#1{\mkbibmascord}% \protected\def\mkbibmascord#1{#1-й}% @@ -100,8 +95,8 @@ translators = {{переводчики}{пер\adddot}}, commentator = {{комментатор}{комм\adddot}}, commentators = {{комментаторы}{комм\adddot}}, - annotator = {{составитель примечаний}{сост. прим\adddot}}, - annotators = {{составитель примечаний}{сост. прим\adddot}}, + annotator = {{примечания}{прим\adddot}}, + annotators = {{примечания}{прим\adddot}}, commentary = {{комментарий}{комм\adddot}}, annotations = {{примечания}{прим\adddot}}, introduction = {{введение}{введ\adddot}}, @@ -248,17 +243,18 @@ bycompiler = {{составлено}{сост\adddot}}, byredactor = {{под редакцией}{под\addabbrvspace ред\adddot}}, byreviser = {{исправлено}{испр\adddot}}, + byreviewer = {{рецензия}{рец\adddot}}, byfounder = {{учреждено}{учр\adddot}},% FIXME: unsure bycontinuator = {{продолжение}{продолж\adddot}},% FIXME: unsure bycollaborator = {{при участии}{при\addabbrvspace уч\adddot}}, bytranslator = {{перевод \lbx@lfromlang}{пер. \lbx@sfromlang}}, bycommentator = {{комментарии}{комм\adddot}}, byannotator = {{примечания}{прим\adddot}}, - withcommentator = {{с комментариями}{с\addabbrvspace комм\adddot}}, - withannotator = {{с примечаниями}{с\addabbrvspace прим\adddot}}, - withintroduction = {{с введением}{с\addabbrvspace введ\adddot}}, - withforeword = {{с предисловием}{с\addabbrvspace предисл\adddot}}, - withafterword = {{с послесловием}{с\addabbrvspace послесл\adddot}}, + withcommentator = {{комментарии}{комм\adddot}}, + withannotator = {{примечания}{прим\adddot}}, + withintroduction = {{введение}{введ\adddot}}, + withforeword = {{предисловие}{предисл\adddot}}, + withafterword = {{послесловие}{послесл\adddot}}, byeditortr = {{перевод \lbx@lfromlang, под редакцией}% {пер. \lbx@sfromlang, под\addabbrvspace ред\adddotspace}}, byeditorco = {{под редакцией и с комментариями}% @@ -333,19 +329,28 @@ volume = {{том}{т\adddot}}, volumes = {{томах}{т\adddot}}, involumes = {{в}{в}}, - book = {{книга}{кн\adddot}}, - part = {{часть}{ч\adddot}}, jourvol = {{том}{т\adddot}}, jourser = {{серия}{сер\adddot}}, -% book = {{}{}}, % FIXME: missing -% part = {{}{}}, % FIXME: missing -% issue = {{}{}}, % FIXME: missing + book = {{книга}{кн\adddot}}, + part = {{часть}{ч\adddot}}, + issue = {{выпуск}{вып\adddot}}, newseries = {{новая серия}{нов\addabbrvspace сер\adddot}}, oldseries = {{старая серия}{стар\addabbrvspace сер\adddot}}, edition = {{издание}{изд\adddot}}, reprint = {{переиздание}{переизд\adddot}}, reprintof = {{переиздание}{переизд\adddot}}, reprintas = {{переиздано как}{переизд. как}}, + reprintfrom = {{переиздано с}{переизд\addabbrvspace с}}, + translationof = {{перевод}{пер\addabbrvspace}}, + translationas = {{перевод как}{пер\addabbrvspace как}}, + translationfrom = {{перевод с}{пер\addabbrvspace с}}, + reviewof = {{рецензия на:}{рец\addabbrvspace на:}},% FIXME: unsure + origpubas = {{первоначально опубликовано как}% + {перв\addabbrvspace опубл\addabbrvspace как}}, + origpubin = {{первоначально опубликовано в}% + {перв\addabbrvspace опубл\addabbrvspace в}}, + astitle = {{под названием}{под назв\adddot}},% FIXME: unsure + bypublisher = {{опубликовано}{опубл\adddot}},% FIXME: unsure page = {{страница}{с\adddot}}, pages = {{страницы}{с\adddot}}, column = {{колонка}{кол\adddot}}, @@ -362,7 +367,6 @@ inseries = {{в}{в}}, ofseries = {{из}{из}}, number = {{номер}{№}}, - issue = {{выпуск}{вып\adddot}}, chapter = {{глава}{гл\adddot}}, mathesis = {{магистерская диссертация}{маг\adddotspace дисс\adddot}}, phdthesis = {{докторская диссертация}{докт\adddotspace дисс\adddot}}, @@ -377,9 +381,9 @@ urlseen = {{дата обращения}{дата\addabbrvspace обр\adddot}}, inpreparation = {{в\addabbrvspace подготовке}{в подг\adddot}}, submitted = {{представлено}{предст\adddot}}, -% forthcoming = {{}{}}, % FIXME: missing + forthcoming = {{в печати}{в печ\adddot}}, inpress = {{в\addabbrvspace печати}{в печ\adddot}}, - citedas = {{далее цитируется как}{далее цит\adddot}}, + citedas = {{далее цитируется как}{далее цит\addabbrvspace как}}, thiscite = {{здесь}{здесь}}, seenote = {{смотри сноску}{см\adddotspace сн\adddot}}, quotedin = {{цитируется по}{цит\adddotspace по}}, @@ -392,8 +396,8 @@ idempn = {{они\addabbrvspace же}{они\addabbrvspace же}}, idempp = {{они\addabbrvspace же}{они\addabbrvspace же}}, ibidem = {{там\addabbrvspace же}{там\addabbrvspace же}}, - opcit = {{цит\adddotspace соч\adddot}{цит\adddotspace соч\adddot}}, - loccit = {{цит\adddotspace мест\adddot}{цит\adddotspace мест\adddot}}, + opcit = {{указ\adddotspace соч\adddot}{указ\adddotspace соч\adddot}}, + loccit = {{указ\adddotspace место}{указ\adddotspace место}}, confer = {{сравни}{ср\adddot}}, sequens = {{и следующая}{и\addabbrvspace сл\adddot}}, sequentes = {{и следующие}{и\addabbrvspace сл\adddot}}, @@ -428,11 +432,11 @@ datedecember = {{декабря}{дек\adddot}}, langamerican = {{американский}{американский}}, langbrazilian = {{бразильский}{бразильский}}, -% langcroatian = {{}{}}, % FIXME: missing + langcroatian = {{хорватский}{хорватский}}, langdanish = {{датский}{датский}}, langdutch = {{голландский}{голландский}}, langenglish = {{английский}{английский}}, -% langfinnish = {{}{}}, % FIXME: missing + langfinnish = {{финский}{финский}}, langfrench = {{французский}{французский}}, langgerman = {{немецкий}{немецкий}}, langgreek = {{греческий}{греческий}}, @@ -445,11 +449,11 @@ langswedish = {{шведский}{шведский}}, fromamerican = {{с американского}{с\addabbrvspace амер\adddot}}, frombrazilian = {{с бразильского}{с\addabbrvspace браз\adddot}}, -% fromcroatian = {{}{}}, % FIXME: missing + fromcroatian = {{с хорватского}{с\addabbrvspace хорв\adddot}}, fromdanish = {{с датского}{с\addabbrvspace дат\adddot}}, fromdutch = {{с нидерландского}{с\addabbrvspace нидерл\adddot}}, fromenglish = {{с английского}{с\addabbrvspace англ\adddot}}, -% fromfinnish = {{}{}}, % FIXME: missing + fromfinnish = {{с финского}{с\addabbrvspace фин\adddot}}, fromfrench = {{с французского}{с\addabbrvspace фр\adddot}}, fromgerman = {{с немецкого}{с\addabbrvspace нем\adddot}}, fromgreek = {{с греческого}{с\addabbrvspace греч\adddot}}, @@ -457,7 +461,7 @@ fromlatin = {{с латинского}{с\addabbrvspace лат\adddot}}, fromnorwegian = {{с норвежского}{с\addabbrvspace норв\adddot}}, fromportuguese = {{с португальского}{с\addabbrvspace порт\adddot}}, - fromrussian = {{с русского}{с\addabbrvspace русс\adddot}}, + fromrussian = {{с русского}{с\addabbrvspace рус\adddot}}, fromspanish = {{с испанского}{с\addabbrvspace исп\adddot}}, fromswedish = {{со шведского}{со\addabbrvspace швед\adddot}}, countryde = {{Германия}{DE}}, diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx index 4da696155fe..bab99bc453c 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/spanish.lbx @@ -1,7 +1,5 @@ -% $Id: spanish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{spanish.lbx} -[\abx@lbxid $Id: spanish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] \DeclareRedundantLanguages{spanish}{spanish} @@ -162,6 +160,7 @@ % bycompiler = {{}{}}, % FIXME: missing byredactor = {{revisado por}{rev\adddotspace por}}, byreviser = {{revisado por}{rev\adddotspace por}}, +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -246,6 +245,7 @@ % andmore = {{}{}}, % FIXME: missing volume = {{volumen}{vol\adddot}}, volumes = {{vol\'umenes}{vols\adddot}}, + involumes = {{en}{en}}, jourvol = {{volumen}{vol\adddot}}, jourser = {{\'epoca}{\'ep\adddot}}, % book = {{}{}}, % FIXME: missing @@ -257,6 +257,15 @@ % reprint = {{}{}}, % FIXME: missing % reprintof = {{}{}}, % FIXME: missing % reprintas = {{}{}}, % FIXME: missing +% reprintfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing + origpubas = {{originalmente publicado como}{orig\adddotspace pub\adddotspace como}}, % FIXME: check + origpubin = {{publicado originalmente en}{pub\adddot\ orig\adddot\ en}}, % FIXME: check +% astitle = {{}{}}, % FIXME: missing +% bypublisher = {{}{}}, % FIXME: missing page = {{p\'agina}{p\'ag\adddot}}, pages = {{p\'aginas}{p\'ags\adddot}}, column = {{columna}{col\adddot}}, @@ -276,6 +285,7 @@ chapter = {{cap\'itulo}{cap\adddot}}, mathesis = {{Tesis de licenciatura}{Tesis de lic\adddot}}, phdthesis = {{Tesis doctoral}{Tesis doct\adddot}}, +% candthesis = {{}{}}, % FIXME: missing % resreport = {{}{}}, % FIXME: missing techreport = {{informe t\'ecnico}{inf\adddotspace t\'ec\adddot}}, % software = {{}{}}, % FIXME: missing diff --git a/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx b/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx index 142add75a02..0015404cca8 100644 --- a/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx +++ b/Master/texmf-dist/tex/latex/biblatex/lbx/swedish.lbx @@ -1,7 +1,5 @@ -% $Id: swedish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $ - \ProvidesFile{swedish.lbx} -[\abx@lbxid $Id: swedish.lbx,v 1.7 2011/11/13 19:09:07 lehman stable $] +[\abx@lbxid] % Changes: % 2009-03-02 Update by Per Starb\"ack @@ -186,6 +184,7 @@ bycompiler = {{sammanst\"alld av}{sammanst\adddotspace av}}, byredactor = {{bearbetad av}{bearb\adddotspace av}}, % byreviser = {{}{}}, % FIXME: missing +% byreviewer = {{}{}}, % FIXME: missing % byfounder = {{}{}}, % FIXME: missing % bycontinuator = {{}{}}, % FIXME: missing % bycollaborator = {{}{}}, % FIXME: missing @@ -271,6 +270,7 @@ andmore = {{m.\,fl\adddot}{m.\,fl\adddot}}, volume = {{volym}{vol\adddot}}, volumes = {{volymer}{vol\adddot}}, + involumes = {{i}{i}}, % FIXME: unsure jourvol = {{\aa rg\aa ng}{\aa rg\adddot}}, jourser = {{serie}{ser\adddot}}, % book = {{}{}}, % FIXME: missing @@ -287,6 +287,15 @@ reprint = {{nytryck}{nytr\adddot}}, reprintof = {{nytryck av}{nytr\adddotspace av}}, reprintas = {{nytryckt som}{nytr\adddotspace som}}, + reprintfrom = {{nytryckt fr\aa n}{nytryckt fr\aa n}}, % FIXME: check +% translationof = {{}{}}, % FIXME: missing +% translationas = {{}{}}, % FIXME: missing +% translationfrom = {{}{}}, % FIXME: missing +% reviewof = {{}{}}, % FIXME: missing +% origpubas = {{}{}}, % FIXME: missing +% origpubin = {{}{}}, % FIXME: missing +% astitle = {{}{}}, % FIXME: missing + bypublisher = {{av}{av}}, % FIXME: check page = {{sidan}{s\adddot}}, pages = {{sidorna}{s\adddot}}, column = {{spalt}{sp\adddot}}, @@ -308,6 +317,7 @@ chapter = {{kapitel}{kap\adddot}}, mathesis = {{examensarbete}{examensarb\adddot}}, phdthesis = {{doktorsavhandling}{diss\adddot}}, + candthesis = {{kandidatavhandling}{kand.avh}}, % FIXME: unsure resreport = {{forskningsrapport}{forskn.rapport}}, techreport = {{teknisk rapport}{tekn\adddotspace rapport}}, % Hedberg (p. 57) uses "Datafil" and adds that it's possible to |