% $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} \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} % {} => \do{}\do{}... \def\blx@imc@docsvfield#1{% \blx@imc@iffieldundef{#1} {} {\expandafter\expandafter\expandafter\docsvlist \expandafter\expandafter\expandafter{% \csname abx@field@#1\endcsname}}} % {}{} => {}{}... \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} % {|} \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} % {}{} => matches in \protected\def\blx@filter#1#2{% \def\do##1{% \ifinlistcs{##1}{#2} {\listadd#1{##1}} {}}% \blx@runfilter#1} % {}{} => neg. matches in \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} % {}{} => {} \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} % {}{} => {} \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 % {}{}{}{}{}{} \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}} % {}{}{} \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}}} % {}{}{}{} \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{}} \edef\blx@ver@bcf{% \detokenize{}} \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} % {}{} \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@ 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} % {} \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} % {} \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} % {}{} \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 % {}{}{} \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} % {}{} \protected\def\blx@imc@ifterm{% \ifhmode \expandafter\blx@imc@ifcapital \else \expandafter\@secondoftwo \fi} % {}{} \protected\def\blx@imc@ifcapital{% \ifcsdef{blx@cap@\blx@spacefactor}} % {}{} \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} % {} \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 % {} \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 % {} \newrobustcmd*{\InitializeBibliographyStyle}{\appto\blx@hook@bbxinit} \@onlypreamble\InitializeBibliographyStyle % {}{} \newrobustcmd*{\DeclareBibliographyDriver}[1]{% \long\csdef{blx@bbx@#1}} \@onlypreamble\DeclareBibliographyDriver % {} \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}}}} % {}{}{} \def\blx@imc@ifdriver#1{\ifcsdef{blx@bbx@#1}} % {}{} \newrobustcmd*{\DeclareBibliographyAlias}[2]{% \csedef{blx@bbx@#1}{% \expandafter\noexpand\csname blx@bbx@#2\endcsname}} \@onlypreamble\DeclareBibliographyAlias % {}[]{} \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}}} % {}[]{} \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}}} % {}[]{} \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}}} {}} % {} \newrobustcmd*{\savebibmacro}[1]{% \blx@save{abx@macro@\detokenize{#1}}} \newrobustcmd*{\restorebibmacro}[1]{% \blx@restore{abx@macro@\detokenize{#1}}} % {}[][]{} \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} % {} \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}}}} % {} \def\blx@imc@thefield#1{\csuse{abx@field@#1}} \def\blx@imc@strfield#1{% \ifcsdef{abx@field@#1} {\detokenize\expandafter\expandafter\expandafter {\csname abx@field@#1\endcsname}} {}} % {} \def\blx@imc@thelist#1{\csuse{abx@list@#1}} % {} \def\blx@imc@thename#1{\csuse{abx@name@#1}} % {} \protected\def\blx@imc@clearfield#1{% \csundef{abx@field@#1}} % {} \protected\def\blx@imc@clearlist#1{% \ifcsundef{abx@list@#1} {} {\togglefalse{abx@bool@more#1}% \csundef{abx@list@#1}% \csname c@#1\endcsname\z@}} % {} \protected\def\blx@imc@clearname#1{% \ifcsundef{abx@name@#1} {} {\togglefalse{abx@bool@more#1}% \csundef{abx@name@#1}% \csname c@#1\endcsname\z@}} % {}{} \protected\def\blx@imc@restorefield#1{\cslet{abx@field@#1}} % {}{} \protected\def\blx@imc@restorelist#1{\cslet{abx@list@#1}} % {}{} \protected\def\blx@imc@restorename#1{\cslet{abx@name@#1}} % {}{} \protected\def\blx@imc@savefield{% \@ifstar{\blx@savedata{field}}{\global\blx@savedata{field}}} \def\blx@savedata#1#2#3{\letcs#3{abx@#1@#2}} % {}{} \protected\def\blx@imc@savelist{% \@ifstar{\blx@savedata{list}}{\global\blx@savedata{list}}} % {}{} \protected\def\blx@imc@savename{% \@ifstar{\blx@savedata{name}}{\global\blx@savedata{name}}} % {}{} \protected\def\blx@imc@savefieldcs{% \@ifstar{\blx@savedatacs{field}}{\global\blx@savedatacs{field}}} \def\blx@savedatacs#1#2#3{\csletcs{#3}{abx@#1@#2}} % {}{} \protected\def\blx@imc@savelistcs{% \@ifstar{\blx@savedatacs{list}}{\global\blx@savedatacs{list}}} % {}{} \protected\def\blx@imc@savenamecs{% \@ifstar{\blx@savedatacs{name}}{\global\blx@savedatacs{name}}} % {}{}{} \def\blx@imc@iffieldundef#1{% \ifcsundef{abx@field@#1}} % {}{}{} \def\blx@imc@iflistundef#1{% \ifcsundef{abx@list@#1}} % {}{}{} \def\blx@imc@ifnameundef#1{% \ifcsundef{abx@name@#1}} % {}{}{}{} \def\blx@imc@iffieldsequal#1#2{% \ifcsequal{abx@field@#1}{abx@field@#2}} % {}{}{}{} \def\blx@imc@iflistsequal#1#2{% \ifcsequal{abx@list@#1}{abx@list@#2}} % {}{}{}{} \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}}}}} % {}{}{}{} \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}}} % {}{}{}{} \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}}} % {}{}{}{} \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}}} % {}{}{}{} \def\blx@imc@iffieldequalcs#1{% \ifcsequal{abx@field@#1}} % {}{}{}{} \def\blx@imc@iflistequalcs#1{% \ifcsequal{abx@list@#1}} % {}{}{}{} \def\blx@imc@ifnameequalcs#1{% FIXME \ifcsequal{abx@name@#1}} % {}{}{}{} \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}}} % {}{}{} \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}}} % {}{}{} \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} % {}{}{} \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} % {}{}{} \protected\def\blx@imc@ifcurrentfield#1{% \begingroup \def\blx@tempa{#1}% \ifx\currentfield\blx@tempa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi \endgroup} % {}{}{} \protected\def\blx@imc@ifcurrentlist#1{% \begingroup \def\blx@tempa{#1}% \ifx\currentlist\blx@tempa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi \endgroup} % {}{}{} \protected\def\blx@imc@ifcurrentname#1{% \begingroup \def\blx@tempa{#1}% \ifx\currentname\blx@tempa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi \endgroup} % {}{}{} \protected\def\blx@imc@ifentrytype#1{% \begingroup \def\blx@tempa{#1}% \ifx\abx@field@entrytype\blx@tempa \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi \endgroup} % {}{} \def\blx@imc@ifmorenames{% \ifundef\currentname {\@secondoftwo} {\iftoggle{abx@bool@more\currentname} {\@firstoftwo} {\ifnum\c@listtotal>\c@liststop \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi}}} % {}{} \def\blx@imc@ifmoreitems{% \ifundef\currentlist {\@secondoftwo} {\iftoggle{abx@bool@more\currentlist} {\@firstoftwo} {\ifnum\c@listtotal>\c@liststop \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi}}} % {}{}{} \protected\def\blx@imc@ifcategory{% \ifdef\abx@field@entrykey {\blx@imc@ifentrycategory\abx@field@entrykey} {\expandafter\@secondoftwo\@gobble}} % {}{}{}{} \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}} % {}{}{} \protected\def\blx@imc@ifkeyword{% \ifdef\abx@field@entrykey {\blx@imc@ifentrykeyword\abx@field@entrykey} {\expandafter\@secondoftwo\@gobble}} % {}{}{}{} \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}} % {}{} \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}} % {}{}{} \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}}} % {}{} \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}}% % {}{} \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}} % {}{} \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}}% % {}{} \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}}} % {}{} \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 % {}{} \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}} % {}{}{}{} \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} % {}{}{} \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} % {}{}{} \protected\def\blx@imc@iffieldint#1{% \blx@imc@iffieldundef{#1} {\@secondoftwo} {\expandafter\expandafter \expandafter\ifinteger \expandafter\expandafter \expandafter{\csname abx@field@#1\endcsname}}} % {}{}{} \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} % {}{}{} \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}}} % {} \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}} % {} \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} % {} \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} % {} \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} % *{} \newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum} \newcommand*{\NumcheckSetup}{\NumCheckSetup} % [][]{} \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} % [][]{} \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} % <*>[]{} \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&} {}} % <*>[]{} \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}{} % {}{} \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 % {} \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} % {} \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} % {} \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 % []{}{} \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}{}}} % {}{}{<*>} \def\blx@defformat#1#2#3{% \@ifnextchar[%] {\blx@defformat@i{#1}{#2}{#3}} {\blx@defformat@i{#1}{#2}{#3}[*]}} % {}{}{<*>}[]{} \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}} {}} % {}{} \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}}} % {}{}{}{} \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}}} % []{} \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}} % []{}[]{} \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}} % []{} \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}}} % []{} \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}}} % []{} \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}}} % []{} \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}} % {}[][-] % => {}{}{} \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}} % [][-]{} \protected\def\blx@imc@printnames{% \blx@listargs\blx@printnames} % {}{}{}{} \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} % [][-]{} \protected\def\blx@imc@indexnames{% \blx@listargs\blx@indexnames} % {}{}{}{} \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} % {}{}{...} \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&{} % [][-]{} \protected\def\blx@imc@printlist{% \blx@listargs\blx@printlist} % {}{}{}{} \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}} % [][-]{} \protected\def\blx@imc@indexlist{% \blx@listargs\blx@indexlist} % {}{}{}{} \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}}} % {}{}{...} \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&{} % <*>{}{} \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 % []{} \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}} % []{} \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}} % []{} \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}} % []{} \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}} % {} \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}}} % {}{}{} \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}} % {}{}{} \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: = {}, % in *.lbx: = {{}{}}, \def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}} \abx@dostrings % in *.cbx/bbx/tex: (implicit) % in *.lbx: inherit = {}, \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}} % {} \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}}}} % {}{} \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}} % {}{} \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}}% % {}{} \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}} % {}{} \def\blx@letbibstrings#1#2{% \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% \global\csletcs{abx@strings@#1}{abx@strings@#2}}% % {}{} \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}} % {}{} \newrobustcmd*{\DeclareLanguageMapping}[2]{% \csgdef{blx@lng@#1}{#2}} \@onlypreamble\DeclareLanguageMapping % {}{}{} \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'}}} % {}{} \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}}} % {}{}{} \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} % {} \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 % {} \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}} % {}{} \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} % {}{} \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}} % {} \protected\long\def\blx@bbl@preamble#1{% \gappto\abx@preamble{#1}} % {} \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} % {}{} \newrobustcmd{\DeclareFieldInputHandler}[2]{% \ifblank{#2} {\csundef{blx@fih@#1}} {\long\csdef{blx@fih@#1}##1{#2}}} \@onlypreamble\DeclareFieldInputHandler % {}{} \newrobustcmd*{\DeclareListInputHandler}[2]{% \ifblank{#2} {\csundef{blx@lih@#1}} {\csdef{blx@lih@#1}##1{#2}}} \@onlypreamble\DeclareListInputHandler % {}{} \newrobustcmd*{\DeclareNameInputHandler}[2]{% \ifblank{#2} {\csundef{blx@nih@#1}} {\csdef{blx@nih@#1}##1{#2}}} \@onlypreamble\DeclareNameInputHandler % {}{}{}{} \long\def\blx@bbl@addentryfield#1#2#3#4{% \csxappto{blx@data@#2@#1}{% \def\expandafter\noexpand\csname abx@field@#3\endcsname{#4}}} % {}{} \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} % {} \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 % {}{} \protected\long\def\blx@bbl@countdef#1#2{% \csxappto\blx@bbl@data{% \csname c@#1\endcsname#2\relax}} % {} \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}}} % {}{} \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}}}} % {}{}{} \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}}}}} % {,...} \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}} % {} \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}}} % {} \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}} % {,...} \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}} % {} \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@
@ data hook % key -> data % \blx@miss@
missing entries (blacklist) % section -> keys [internal list] % \blx@sort@
all entries, sorted % section -> keys [internal list] % \blx@sbib@
all entries in bibliography, sorted % section -> keys [internal list] % \blx@bsee@
seen citations, document body % section -> keys [internal list] % \blx@fsee@
seen citations, footnotes % section -> keys [internal list] % \blx@type@
@ type hash % type -> keys [internal list] % \blx@subt@
@ subtype hash % subtype -> keys [internal list] % \blx@segm@
@ segment hash % segment -> keys [internal list] % \blx@keyw@
@ keyword hash % keyword -> keys [internal list] % \blx@losh@
shorthand hash % section -> keys [internal list] % \blx@catg@ category hash, global % category -> keys [internal list] % \blx@set@
@ parent -> child mapping (dynamic entry sets) % key -> key,key,... [csv list] % \blx@setp@
@ parent -> child mapping (entry sets) % key -> key,key,... [csv list] % \blx@setc@
@ child -> parent mapping (entry sets) % key -> key % \blx@seti@
@ child -> index mapping (entry sets) % key -> index % \blx@pref@
@ pageref hook, temporary % key -> pages [internal list] % \blx@refs@
xref hash, temporary % section -> parents [internal list] % (BibTeX only) % \blx@refp@
@ parent -> child mapping (xrefs), temporary % key -> keys [internal list] % (BibTeX only) % \blx@refc@
@ 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}} {}} {}} % {
} \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}{}} % {} \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@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}} {}} % {}{}{}{} \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}}} {}} {}} {}} % {}{}{} \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 % {}{}[]{} \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} % {}[]{} \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]} % {}{} \newrobustcmd*{\defbibnote}[1]{% \long\csdef{blx@note@#1}} % {}{} \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}}} % {}{} \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'}} {}}} % [] \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} % [] \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}} % [] \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} % [] \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} % [] \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} % {,...} \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}} % {} \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}}} {}} {}} % {}{} \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}}} % {,...} \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 % {} \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 % {} \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 % {}{,...} \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}}}} % {}{,...} \def\blx@addtocategory#1#2{% \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}% \abx@aux@category{#1}{#2}} % {}{,...} \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} % []{,...} \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} % []{,...} \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 -> type % \blx@res@data@ resource -> datatype % \blx@res@loca@ resource -> datatype % \blx@res@labl@ 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} % {