% $Id: biblatex.sty,v 0.9a 2010/03/19 19:52:15 lehman beta $ % Copyright (c) 2006-2010 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} \ProvidesPackage{biblatex} [\abx@rcsid $Id: biblatex.sty,v 0.9a 2010/03/19 19:52:15 lehman beta $ programmable bibliographies] \def\blx@version$#1: #2 ${#2} \edef\blx@version{\blx@version$Revision: 0.9 $} %% Compatibility and requirements \RequirePackage{etoolbox} \RequirePackage{keyval} \RequirePackage{ifthen} \RequirePackage{url} \@ifpackagelater{etoolbox}{2009/08/06} {} {\PackageError{biblatex} {Outdated 'etoolbox' package} {Upgrade to etoolbox v1.8 (2009/08/06) or later.\MessageBreak I found: '\csuse{ver@etoolbox.sty}'.\MessageBreak This is a fatal error. I'm aborting now.}% \endinput} \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}% \@ifpackageloaded{babel} {\iftoggle{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 \scr@saved@footnotetext,% koma-script 3.x \l@dold@footnotetext,% ledmac \l@doldold@footnotetext,% ledmac \@fntORI}% frenchle \@ifclassloaded{memoir}% memoir {\togglefalse{blx@tempa}% \def\do#1{% \patchcmd#1% {\color@begingroup} {\color@begingroup\toggletrue{blx@footnote}} {} {\toggletrue{blx@tempa}}}% \docsvlist{% \m@mold@footnotetext,% \@twocolfootnotetext,% \@threecolfootnotetext,% \@parafootnotetext}} {}% \iftoggle{blx@tempa} {\blx@warning@noline{% Patching footnotes failed.\MessageBreak Will try to fork \string\@footnotetext}% \let\blx@org@footnotetext\@footnotetext \long\def\@footnotetext#1{% \toggletrue{blx@footnote}% \blx@org@footnotetext{#1}% \togglefalse{blx@footnote}}} {}% \@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@ {\ifundef\SK@cite % = 'notcite' disabled {\AtEveryBibitem{\SK@\SK@@label{\thefield{entrykey}}}% \AtEveryLositem{\SK@\SK@@label{\thefield{entrykey}}}% \AtEveryCitekey{\SK@\SK@@ref{\thefield{entrykey}}}} {}} {}} {}% \@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}'}}% \@ifpackagelater{csquotes}{2009/08/27} {\appto\@blockquote@prehook{\abx@savetrackers}% \appto\@blockquote@posthook{\abx@resttrackers\abx@cleartrackers}} {\BlockquoteDisable{\let\blx@thecheckpunct\@gobble}}} {\@ifpackageloaded{babel} {\blx@warning@noline{% 'babel' detected but 'csquotes' missing.\MessageBreak Loading 'csquotes' is strongly recommended}} {}% \newcommand*{\@quotelevel}{}% \newcount\@quotelevel \newcommand*{\@setquotesfcodes}{}% \let\@setquotesfcodes\relax \newcommand*{\@ifquotemarker}{}% \let\@ifquotemarker\@secondoftwo \newrobustcmd*{\initoquote}{\@quotelevel\@ne}% \newrobustcmd*{\initiquote}{\@quotelevel\tw@}% \newcommand*{\textooquote}{``}% \newcommand*{\textcoquote}{''}% \newcommand*{\textoiquote}{`}% \newcommand*{\textciquote}{'}% \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@}}% \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'}}} {}% \addtocontents{toc}{% \string\boolfalse{citerequest}% \string\boolfalse{citetracker}% \string\boolfalse{pagetracker}}% \addtocontents{lof}{% \string\boolfalse{citerequest}% \string\boolfalse{citetracker}% \string\boolfalse{pagetracker}}% \addtocontents{lot}{% \string\boolfalse{citerequest}% \string\boolfalse{citetracker}% \string\boolfalse{pagetracker}}% \let\do\noexpand} \begingroup \@makeother\# \AtEndPreamble{% \patchcmd\addtocontents {\string\@writefile} {\string\@writefile{#1}{\string\defcounter{refsection}{\the\c@refsection}}\blx@nl \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 %% Category codes \def\blx@docatcodes{% \do\=\do\<\do\>\do\-\do\"\do\'\do\`\do\.% \do\,\do\;\do\:\do\!\do\?\do\/} \def\do#1{\noexpand\do\noexpand#1{\the\catcode`#1}} \edef\blx@catcodes{\blx@docatcodes\do\^\do\~\do\&\do\|} \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} %% Allocation \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{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@maxsection \newcount\blx@maxsegment \newcount\blx@notetype \newcount\blx@parenlevel@text \newcount\blx@parenlevel@foot \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{citerequest} \booltrue{citerequest} \newtoggle{blx@tempa} \newtoggle{blx@tempb} \newtoggle{blx@block} \newtoggle{blx@unit} \newtoggle{blx@insert} \newtoggle{blx@lastins} \newtoggle{blx@debug} \newtoggle{autolang} \newtoggle{blx@defernums} \newtoggle{blx@footnote} \newtoggle{blx@labelalpha} \newtoggle{blx@labelnumber} \newtoggle{blx@labelyear} \newtoggle{blx@natbib} \newtoggle{blx@loadfiles} \newtoggle{blx@singletitle} \newtoggle{blx@terseinits} \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@recode} \newtoggle{blx@citeindex} \newtoggle{blx@bibindex} \def\blx@backend{0} \def\blx@uniquename{0} \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{\jobname} \let\blx@theauxout\@mainaux \newcommand*{\labelalphaothers}{+} \newcommand*{\blxauxsuffix}{-blx} \begingroup \def\blx@tempa#1"#2{% #1\ifx#2\@empty\else \expandafter\blx@tempa \fi#2} \edef\blx@ctrlfile{% \noexpand\blx@tempa \expandafter\blx@tempa\jobname"\@empty \space\noexpand\@empty} \def\blx@tempa#1 #2{% #1\ifx#2\@empty\else \string_\expandafter\blx@tempa \fi#2} \xdef\blx@ctrlfile{\blx@ctrlfile} \endgroup \def\blx@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}}} \blx@regimc\docsvfield % {|} \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@sanitizekeys#1#2{% \begingroup \blx@safe@actives \let\protect\string \edef\blx@tempa{#2}% \edef\blx@tempa{% \endgroup\unexpanded{#1}{% \detokenize\expandafter{\blx@tempa}}}% \blx@tempa} % {}{}{}{}{}{} \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}% #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{% \if@filesw \begingroup \blx@safe@actives \let\protect\string \immediate\write#1{#2}% \endgroup \fi} \def\blx@auxinit#1{% \blx@auxwrite\blx@theauxout{% \ifx\blx@theauxout\@mainaux \else \blx@msg@aux \fi \ifnum\blx@backend=\blx@backend@biber \expandafter\ifblank\expandafter{#1} {} {\string\bibdata{#1}}% \else \string\bibstyle{biblatex}\blx@nl \string\bibdata{% \blx@ctrlfile\blxauxsuffix \expandafter\ifblank\expandafter{#1} {} {,#1}}\blx@nl \string\citation{biblatex-control} \fi}} % {}{}{}{} \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\MessageBreak by wrong version of biblatex}% \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@version\space $}} \edef\blx@sig@aux{\@percentchar\space $ biblatex auxiliary file $} \edef\blx@ver@aux{\@percentchar\space$ biblatex version \blx@version\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 the above lines!\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 the above lines!\blx@nl\blx@nl This is an auxiliary file used by the 'biblatex' package.\blx@nl This file may safely be deleted. It will be recreated as\blx@nl required.\blx@nl\blx@nl} %% User feedback \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 \def\blx@missing#1{% \mbox{\reset@font\bfseries#1}} \protected\def\blx@errormark{% \rule[0.25ex]{1.25ex}{1.25ex}} \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 {Failed to hook into \@backslashchar#1} {There are two possible reasons for this error. Either\MessageBreak the document class does not support chapters or the\MessageBreak implementation is not compatible with biblatex}} \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@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}% \blx@missing{#1}} \def\blx@warn@conflopt#1{% \blx@warning{Conflicting options.\MessageBreak#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 \thepage\space undefined} \let\blx@auxlist\@empty \def\blx@logreq#1{% \xifinlist{\blx@auxfile.aux}{\blx@auxlist} {} {\listxadd\blx@auxlist{\blx@auxfile.aux}% \blx@logreq@bibtex{\blx@auxfile}}% \ifblank{#1} {} {\@latex@warning{#1}}% \blx@reruntrue} \def\blx@logreq@latex{\typeout{REQ:1:latex:REQ}} \def\blx@logreq@bibtex#1{% \begingroup \edef\blx@tempa{\endgroup \noexpand\typeout{REQ:2:bibtex:\blx@nl \ifcase\blx@backend binary=bibtex\blx@nl \or binary=bibtex8\blx@nl option=--mwizfuns 10000\blx@nl \or binary=biber\blx@nl \fi \ifundef\blx@mincrossrefs {} {\ifcase\blx@backend option=-min-crossrefs=\blx@mincrossrefs\blx@nl \or option=--min\string_crossrefs \blx@mincrossrefs\blx@nl \fi}% \ifdef\blx@bibencoding {\ifnum\blx@backend=\csuse{blx@backend@bibtex8}% option=--csfile \blx@bibencoding.csf\blx@nl \fi} {}% infile=#1\blx@nl:REQ}}% \blx@tempa} \def\blx@warn@rerun{% \blx@warning@noline{Please rerun LaTeX}} \def\blx@warn@auxlist{% \begingroup \edef\blx@tempa{% Please (re)run \ifnum\blx@backend=\blx@backend@biber Biber \else BibTeX \fi on the file(s):}% \def\do##1{\appto\blx@tempa{\MessageBreak##1}}% \dolistloop\blx@auxlist \blx@warning@noline{% \blx@tempa\MessageBreak and rerun LaTeX afterwards}% \endgroup} \def\blx@reruntrue{% \G@refundefinedtrue \blx@logreq@latex \global\let\blx@reruntrue\relax} \protected\def\blx@checksum{% \blx@tempcnta\z@ \ifx\blx@checksum@old\blx@checksum@new \else \advance\blx@tempcnta\@ne \blx@reruntrue \fi \ifx\blx@auxlist\@empty \else \advance\blx@tempcnta\tw@ \blx@reruntrue \fi \csuse{blx@rerun}% \ifcase\blx@tempcnta \or \blx@warn@rerun \else \blx@warn@auxlist \fi} \let\blx@checksum@old\@empty \let\blx@checksum@new\@empty \let\abx@aux@checksum\relax \def\blx@addchecksum#1{% \xdef\blx@checksum@old{\blx@checksum@old#1}} \AtEndDocument{% \def\blx@addchecksum#1{% \xdef\blx@checksum@new{\blx@checksum@new#1}}} \AfterEndDocument{\blx@checksum} %% Punctuation and capitalization % 1001 apostrophe (\printnames only) % 1002 abbreviation 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 \csedef{blx@sf@1250}{\the\blx@sf@comma} \csedef{blx@sf@1500}{\the\blx@sf@semicolon} \csedef{blx@sf@2000}{\the\blx@sf@colon} \csedef{blx@sf@3000}{\the\blx@sf@period} \csedef{blx@sf@3001}{\the\blx@sf@exclam} \csedef{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/\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{% \ifcsundef{blx@bbx@#1} {\ifcsundef{blx@bbx@*} {\blx@warning{% No driver for entry type '\abx@field@entrytype'}} {\csuse{blx@bbx@*}}} {\csuse{blx@bbx@#1}}} % {}{}{} \def\blx@ifdriver#1{% \ifcsundef{blx@bbx@#1} {\ifcsundef{blx@bbx@*} {\@secondoftwo} {\@firstoftwo}} {\@firstoftwo}} % {}{} \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@defbibmacro\new@command}} \newrobustcmd*{\renewbibmacro}{% \@star@or@long{\blx@defbibmacro\renew@command}} \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{% \ifcsequal{abx@name@#1}{abx@name@#2}} % {}{}{}{} \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{% \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{% \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@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@sanitizekeys\blx@ifseen@global} \protected\def\blx@ifentryseen@context{% \blx@sanitizekeys\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}} \def\blx@ifciteidem@strict{% \blx@ifcitesingle {\blx@ifciteidem@global} {\@secondoftwo}}% \def\blx@ifciteidem@constrict{% \blx@ifcitesingle {\iftoggle{blx@footnote} {\blx@ifmpfncheck {\blx@imc@iffieldequals{fullhash}\blx@lasthash@foot} {\@secondoftwo}} {\blx@imc@iffieldequals{fullhash}\blx@lasthash@text}} {\@secondoftwo}}% % {}{} \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{% \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{% \iffieldundef{#1} {\@secondoftwo} {\expandafter\expandafter \expandafter\ifnumeral \expandafter\expandafter \expandafter{\csname abx@field@#1\endcsname}}} \protected\def\blx@imc@iffieldnums#1{% \iffieldundef{#1} {\@secondoftwo} {\expandafter\expandafter \expandafter\ifnumerals \expandafter\expandafter \expandafter{\csname abx@field@#1\endcsname}}} \protected\def\blx@imc@iffieldpages#1{% \iffieldundef{#1} {\@secondoftwo} {\expandafter\expandafter \expandafter\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]{% \iffieldequalstr{#1}{none} {\@firstofone} {\begingroup \def\blx@tempa{page}% \iffieldundef{#1} {} {\iffieldbibstring{#1} {\edef\blx@tempa{\thefield{#1}}} {\blx@warning@entry{% Unknown pagination type '\thefield{#1}'}}}% \expandafter\endgroup \expandafter\blx@mkpageprefix \expandafter{\blx@tempa}}} \long\def\blx@mkpageprefix#1#2{% \ifnumeral{#2} {\bibstring{#1}\ppspace#2} {\ifnumerals{#2} {\bibstring{#1s}\ppspace#2} {\begingroup \def\pno{\bibstring{#1}}% \def\ppno{\bibstring{#1s}}% #2\endgroup}}} % []{} \newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% \begingroup \def\blx@tempa{page}% \iffieldundef{#1} {} {\iffieldequalstr{#1}{none} {} {\iffieldbibstring{#1} {\edef\blx@tempa{\thefield{#1}}} {\blx@warning@entry{% Unknown pagination type '\thefield{#1}'}}}}% \expandafter\endgroup \expandafter\blx@mkpagetotal \expandafter{\blx@tempa}} \long\def\blx@mkpagetotal#1#2{% \begingroup \ifnumeral{#2} {\setbox\@tempboxa=\hbox{% \blx@tempcnta0#2\relax \ifnum\blx@tempcnta=\@ne \aftergroup\@firstoftwo \else \aftergroup\@secondoftwo \fi}% {#2\ppspace\bibstring{#1}} {#2\ppspace\bibstring{#1s}}} {\def\pno{\bibstring{#1}}% \def\ppno{\bibstring{#1s}}% #2}% \endgroup} % []{} \protected\def\blx@imc@mkpagefirst{% \@ifstar\blx@pagefirst@i\blx@pagefirst@ii} \long\def\blx@pagefirst@i#1{% \blx@pagefirst@iii#1\bibrangedash&} \newcommand{\blx@pagefirst@ii}[2][pagination]{% \begingroup \edef\blx@tempa{\endgroup \noexpand\mkpageprefix[#1]{% \blx@pagefirst@iii#2\bibrangedash&}}% \blx@tempa} \long\def\blx@pagefirst@iii#1\bibrangedash#2&{% \blx@pagefirst@iv#1\textendash&} \long\def\blx@pagefirst@iv#1\textendash#2&{% \blx@pagefirst@v#1\textemdash&} \long\def\blx@pagefirst@v#1\textemdash#2&{% \blx@pagefirst@vi#1-&} \long\def\blx@pagefirst@vi#1-#2&{#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@nounit{% \global\togglefalse{blx@lastins}} \def\blx@unitmark{23sp} \def\blx@begunit{% \toggletrue{blx@tempa}% \iftoggle{blx@insert} {\iftoggle{blx@unit} {\begingroup \let\blx@begunit\@empty \let\blx@endunit\@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 \newblockpunct \endgroup \global\togglefalse{blx@block}% \togglefalse{blx@tempa}} {}} {}% \blx@postpunct \blx@imc@resetpunctfont \iftoggle{blx@tempa} {} {\global\togglefalse{blx@insert}}% \blx@leavevmode \@ifquotemarker {} {\penalty\@M \hskip-\blx@unitmark\relax \hskip\blx@unitmark\relax}% \begingroup} \def\blx@endunit{% \endgroup \ifdim\lastskip=\blx@unitmark \unskip\unskip\unpenalty \global\togglefalse{blx@lastins}% \else \global\toggletrue{blx@insert}% \global\toggletrue{blx@lastins}% \fi} \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{% \thefield \strfield \thelist \thename \clearfield \clearlist \clearname \restorefield \restorelist \restorename \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 % {} \newcommand{\MakeCapital}{} \begingroup \catcode`\"=\active \protected\long\gdef\MakeCapital#1{% \begingroup \def\do##1{\def##1{\blx@mkcp@single##1}}% \abx@dosingleaccents \def\do##1{\def##1{\blx@mkcp@double##1}}% \abx@dodoubleaccents \def\IeC{\blx@mkcp@single\IeC}% \def\@tabacckludge##1{% \expandafter\blx@mkcp@single\csname\string##1\endcsname}% \ifnum\catcode`\"=\active \def"##1{\blx@mkcp@single"\noexpand##1}% \fi \def\blx@mkcp@single{\noexpand\blx@mkcp@single\noexpand}% \def\blx@mkcp@double{\noexpand\blx@mkcp@double\noexpand}% \protected@edef\blx@tempa{% \noexpand\ifblank{#1} {\endgroup\unexpanded{#1}} {\noexpand\blx@mkcp@parse#1}}% \blx@tempa} \endgroup \long\def\blx@mkcp@parse#1{% \begingroup \expandafter\def\expandafter\blx@tempa\expandafter{#1}% \ifx\blx@tempa\IeC \aftergroup\blx@mkcp@iec \else\ifx\blx@tempa\blx@mkcp@single \aftergroup\blx@mkcp@two \else\ifx\blx@tempa\blx@mkcp@double \aftergroup\blx@mkcp@three \else \aftergroup\blx@mkcp@case \fi\fi\fi \endgroup{#1}} \long\def\blx@mkcp@case#1{% \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{#1}}% \expandafter\endgroup\blx@tempa} \def\blx@mkcp@iec#1#2{\blx@mkcp@case{#1#2}} \def\blx@mkcp@two#1#2#3{\blx@mkcp@case{#2#3}} \def\blx@mkcp@three#1#2#3#4{\blx@mkcp@case{#2#3#4}} \let\blx@mkcp@single\@empty \let\blx@mkcp@double\@empty \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 \def\blx@tempa{\endgroup}% \let\blx@tempb\@empty \def\blx@tempc{\MakeCapital}% \@tempswatrue \blx@mksc@parse#1\blx@mksc@end} \def\blx@mksc@parse{% \futurelet\@let@token\blx@mksc@eval} \def\blx@mksc@eval{% \ifx\@let@token\blx@mksc@end \blx@mksc@end \fi \ifx\@let@token\bgroup \blx@mksc@group \fi \ifx\@let@token\@sptoken \if@tempswa\blx@mksc@eject\fi \blx@mksc@space \fi \if\relax\noexpand\@let@token \blx@mksc@cs \fi \if-\noexpand\@let@token \if@tempswa\blx@mksc@eject\fi \fi \blx@mksc@other&} \def\blx@mksc@end#1\blx@mksc@end{\fi \blx@mksc@eject \blx@tempa} \long\def\blx@mksc@group#1{\fi \futurelet\@let@token\blx@mksc@ingroup#2&{#2}% \blx@mksc@parse} \long\def\blx@mksc@ingroup#1{% \if\relax\noexpand\@let@token \blx@mksc@locase{{#2}}% \else \blx@mksc@nocase{{#2}}% \fi} \def\blx@mksc@space{\def\blx@mksc@space##1&} \@nameuse{blx@mksc@space} {\fi \blx@mksc@anycase{ }% \blx@mksc@parse} \long\def\blx@mksc@cs#1{\fi \ifcat\noexpand~\noexpand#2% \blx@mksc@locase{#2}% \else \blx@mksc@nocase{#2}% \fi \blx@mksc@parse} \long\def\blx@mksc@other{% \blx@mksc@locase{#1}% \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{% \expandonce\blx@tempc{\expandonce\blx@tempb}}% \let\blx@tempb\@empty \fi \if@tempswa \def\blx@tempc{\MakeLowercase}% \@tempswafalse \fi} % {} \newrobustcmd*{\DeclareCaseLangs}{% \@ifstar {\blx@defcaselangs} {\global\let\blx@cmksc@lang\@empty \blx@defcaselangs}} \def\blx@defcaselangs#1{% \ifblank{#1} {} {\begingroup \def\do##1{\listgadd\blx@cmksc@lang{##1}} \docsvlist{#1}% \endgroup}} \DeclareCaseLangs{% american,british,canadian, english,USenglish,UKenglish, australian,newzealand} %% Main formatting commands % {}{} \def\blx@defformat#1{% \blx@safe@actives \afterassignment\blx@rest@actives \long\csdef{#1}} % {}{} \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*{\DeclareNameFormat}[2][*]{% \blx@defformat{abx@nfd@#1@#2}##1##2##3##4##5##6##7##8} \newrobustcmd*{\DeclareIndexNameFormat}[2][*]{% \blx@defformat{abx@nid@#1@#2}##1##2##3##4##5##6##7##8} \newrobustcmd*{\DeclareListFormat}[2][*]{% \blx@defformat{abx@lfd@#1@#2}##1} \newrobustcmd*{\DeclareIndexListFormat}[2][*]{% \blx@defformat{abx@lid@#1@#2}##1} \newrobustcmd*{\DeclareFieldFormat}[2][*]{% \blx@defformat{abx@ffd@#1@#2}##1} \newrobustcmd*{\DeclareIndexFieldFormat}[2][*]{% \blx@defformat{abx@fid@#1@#2}##1} % []{}[]{} \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} {\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{% \c@listcount\@ne \expandafter\c@listtotal\csname c@#3\endcsname \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@maxnames \ifnum\c@listtotal>\c@minnames \c@liststop\c@minnames \fi \fi} {\ifnum#2>\c@listtotal \c@liststop\c@listtotal \else \ifnum#2<\@ne \c@liststop\@ne \else \c@liststop#2\relax \fi \fi}% \def\currentname{#3}% \letcs\blx@thedata{abx@name@#3}% \let~\abx@btxnbspacefix \blx@namecodes} \protected\def\abx@btxnbspacefix{% \leavevmode\penalty\value{highnamepenalty}\space} % [][-]{} \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}% \expandafter\blx@nameparser\blx@thedata{}&% \endgroup}}} % {}{}{...} \long\def\blx@nameparser#1{% \ifblank{#1} {\blx@namebreak} {\ifnum\c@listcount<\c@liststart \else \blx@theformat#1% \fi \advance\c@listcount\@ne \ifnum\c@listcount>\c@liststop \expandafter\blx@namebreak \fi \blx@nameparser}} \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{% \c@listcount\@ne \expandafter\c@listtotal\csname c@#3\endcsname \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 \ifnum\c@listtotal>\c@minitems \c@liststop\c@minitems \fi \fi} {\ifnum#2>\c@listtotal \c@liststop\c@listtotal \else \ifnum#2<\@ne \c@liststop\@ne \else \c@liststop#2\relax \fi \fi}% \def\currentlist{#3}% \letcs\blx@thedata{abx@list@#3}} % [][-]{} \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\long\def\blx@imc@entrydata#1{% \blx@sanitizekeys\blx@imc@entrydata@i{#1}} \protected\long\def\blx@imc@entrydata@i#1#2{% \blx@ifdata{#1} {\begingroup \blx@resetdata \blx@getdata{#1}% \blx@entrysetcount \blx@setoptions@type\abx@field@entrytype \blx@setoptions@entry \addtocounter{instcount}\@ne \blx@execute \blx@beglang#2\blx@endlang \endgroup} {}} \protected\def\blx@imc@entryset#1#2{% \blx@imc@iffieldundef{entrykey} {} {\begingroup \long\def\blx@set@precode{#1}% \long\def\blx@set@postcode{#2}% \let\finentry\blx@finentry@inset \let\do\blx@entryset \blx@imc@docsvfield{entryset}% \endgroup}} \def\blx@entryset#1{% \blx@ifdata{#1} {\begingroup \begingroup \blx@getdata{#1}% \edef\blx@tempa{\endgroup \def\noexpand\abx@field@entrytype{\abx@field@entrytype}}% \blx@tempa \def\abx@field@entrysetcount{1}% \blx@set@precode \blx@driver{\blx@imc@thefield{entrytype}}% \blx@set@postcode \endgroup} {}% \let\do\blx@entryset@i} \def\blx@entryset@i#1{% \blx@imc@entrydata{#1}{% \blx@set@precode \blx@driver{\blx@imc@thefield{entrytype}} \blx@set@postcode}} \blx@regimcs{% \printtext \printfield \printlist \printnames \printfile \indexfield \indexlist \indexnames \entrydata \entryset} %% Localization % []{} \newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{% \blx@begunit \blx@hyphenreset \let\bibstring\blx@imc@bibxstring \lowercase{\edef\blx@tempa{#2}}% \ifcsundef{abx@str@\blx@tempa} {\blx@warn@nostring{\blx@tempa}} {\blx@imc@ifcapital {#1{\MakeCapital{\csuse{abx@str@\blx@tempa}}}} {#1{\csuse{abx@str@\blx@tempa}}}}% \blx@endunit} % []{} \newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{% \blx@begunit \blx@hyphenreset \let\bibstring\blx@imc@bibxstring \lowercase{\edef\blx@tempa{#2}}% \ifcsundef{abx@str@\blx@tempa} {\blx@warn@nostring{\blx@tempa}} {#1{\MakeCapital{\csuse{abx@str@\blx@tempa}}}}% \blx@endunit} % []{} \newrobustcmd*{\blx@imc@biblcstring}[2][\@firstofone]{% \blx@begunit \blx@hyphenreset \let\bibstring\blx@imc@bibxstring \lowercase{\edef\blx@tempa{#2}}% \ifcsundef{abx@str@\blx@tempa} {\blx@warn@nostring{\blx@tempa}} {#1{\MakeLowercase{\csuse{abx@str@\blx@tempa}}}}% \blx@endunit} % []{} \newrobustcmd*{\blx@imc@bibucstring}[2][\@firstofone]{% \blx@begunit \blx@hyphenreset \let\bibstring\blx@imc@bibxstring \lowercase{\edef\blx@tempa{#2}}% \ifcsundef{abx@str@\blx@tempa} {\blx@warn@nostring{\blx@tempa}} {#1{\MakeUppercase{\csuse{abx@str@\blx@tempa}}}}% \blx@endunit} % {} \def\blx@imc@bibxstring#1{% \ifcsundef{abx@str@#1} {\protect\blx@warn@nostring{#1}} {\csuse{abx@str@#1}}} % {}{}{} \def\blx@imc@ifbibstring#1{% \ifcsundef{abx@str@\detokenize{#1}} {\@secondoftwo} {\@firstoftwo}} \def\blx@imc@ifbibxstring#1{% \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 \bibxstring \bibcpstring \biblcstring \bibucstring \ifbibstring \ifbibxstring \iffieldbibstring} \appto\blx@blxinit{% \appto\@uclclist{% \bibstring\bibucstring \biblcstring\bibstring \bibcpstring\bibucstring \biblcstring\bibcpstring \biblcstring\bibucstring}} \def\abx@dostrings{% \do{bibliography}% \do{references}% \do{shorthands}% \do{editor}% \do{editors}% \do{compiler}% \do{compilers}% \do{redactor}% \do{redactors}% \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{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{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{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{inpress}% \do{submitted}% \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{langdanish}% \do{langdutch}% \do{langenglish}% \do{langfrench}% \do{langgerman}% \do{langgreek}% \do{langitalian}% \do{langlatin}% \do{langnorwegian}% \do{langportuguese}% \do{langspanish}% \do{langswedish}% \do{fromamerican}% \do{frombrazilian}% \do{fromdanish}% \do{fromdutch}% \do{fromenglish}% \do{fromfrench}% \do{fromgerman}% \do{fromgreek}% \do{fromitalian}% \do{fromlatin}% \do{fromnorwegian}% \do{fromportuguese}% \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]{% \begingroup \let\do\blx@newstring \docsvlist{#1}% \endgroup} \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{\csdef{abx@str@#1}} \def\blx@lbx@defstring#1#2{% \expandafter\blx@lbx@thedef\csname abx@str@#1\endcsname#2} \def\blx@lbx@longdef#1#2#3{\def#1{#2}} \def\blx@lbx@shortdef#1#2#3{\def#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@str@##1}}% \abx@dostrings \csuse{abx@strings@#1}% \setkeys{blx@lbx}{#2}% \global\cslet{abx@strings@#1}\@empty \def\do##1{% \ifcsundef{abx@str@##1} {\csxappto{abx@strings@#1}{% \undef\expandafter\noexpand\csname abx@str@##1\endcsname}} {\csxappto{abx@strings@#1}{% \def\expandafter\noexpand\csname abx@str@##1\endcsname{% \csexpandonce{abx@str@##1}}}}}% \abx@dostrings \csgappto{abx@strings@#1}{% \let\bibname\abx@str@bibliography \let\refname\abx@str@references \let\losname\abx@str@shorthands}} % {}{} \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.lbx}{language '#1'}}} % {}{} \def\blx@lbxinput@i#1#2{% \global\csundef{blx@lng@#2}% \IfFileExists{#1.lbx} {\blx@lbxinput@ii{#2}{#1.lbx}{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}{#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 \blx@lbxinput@iii{strings}{#1}% \blx@lbxinput@iii{extras}{#1}% \blx@lbxinput@iii{noextras}{#1}% \blx@lbxinput@iii{hyph}{#1}} {\aftergroup\@firstoftwo} {\aftergroup\@secondoftwo}% \egroup} \def\blx@lbxinput@iii#1#2{% \ifcsdef{blx@hook@#1@#2} {\csuse{blx@hook@#1@#2}% \global\csundef{blx@hook@#1@#2}} {}} % {} \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]{% \printtext{% \csuse{mkbibdate#1}{#2year}{#2month}{#2day}% \iffieldundef{#2endyear} {} {\iffieldequalstr{#2endyear}{} {\mbox{\bibdatedash}} {\bibdatedash \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}}} \newrobustcmd*{\mkbibrangetrunc}[2]{% \printtext{% \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]{% \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]{% \printtext{% \iffieldsequal{#2year}{#2endyear} {\iffieldsequal{#2month}{#2endmonth} {\csuse{mkbibdate#1}{}{}{#2day}} {\csuse{mkbibdate#1}{}{#2month}{#2day}}} {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}}}% \iffieldundef{#2endyear} {\printfield{extrayear}} {\iffieldequalstr{#2endyear}{} {\printfield{extrayear}% \printtext{\mbox{\bibdatedash}}} {\printtext{% \bibdatedash \csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}% \printfield{extrayear}}}}} \newrobustcmd*{\mkbibdatelong}[3]{} \newrobustcmd*{\mkbibdateshort}[3]{} \newrobustcmd*{\bibrangedash}{\textendash} \newrobustcmd*{\bibdatedash}{\bibrangedash} \newrobustcmd*{\finalandcomma}{} \newrobustcmd*{\mkbibordinal}[1]{#1} \newrobustcmd*{\mkbibmascord}{\mkbibordinal} \newrobustcmd*{\mkbibfemord}{\mkbibordinal} \newrobustcmd*{\mkbibmonth}[1]{% \ifcase0#1\relax 0\blx@warning@entry{Month out of range}% \or\bibstring{january}% \or\bibstring{february}% \or\bibstring{march}% \or\bibstring{april}% \or\bibstring{may}% \or\bibstring{june}% \or\bibstring{july}% \or\bibstring{august}% \or\bibstring{september}% \or\bibstring{october}% \or\bibstring{november}% \or\bibstring{december}% \else #1\blx@warning@entry{Month out of range}% \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{} \def\blx@imc@stripzeros#1{\number\numexpr0#1\relax} \def\blx@imc@mkdatezeros#1{#1} \blx@regimcs{% \printdate \printdateextra \printurldate \printeventdate \printorigdate \stripzeros \mkdatezeros} % {}{} \def\blx@maplang#1#2{% \csxappto{captions#1}{% \expandafter\noexpand\csname abx@strings@#2\endcsname}% \csxappto{extras#1}{% \noexpand\blx@resetpunct \expandafter\noexpand\csname abx@extras@#2\endcsname}% \csxappto{noextras#1}{% \noexpand\blx@resetpunct \expandafter\noexpand\csname abx@noextras@#2\endcsname}} %% Babel interface \let\blx@beglang\begingroup \let\blx@endlang\endgroup \let\blx@hook@endlang\@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} \def\blx@mkbabel{% \patchcmd\bbl@set@language {\select@language} {\blx@langsetup\languagename\select@language}% {\ifundef\blx@thelangenv {} {\def\blx@beglang{% \begingroup \blx@imc@iffieldundef{hyphenation} {} {\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}} \def\blx@mknobabel{% \blx@lbxinput{\blx@languagename} {} {\blx@err@nolang{\blx@languagename}}} %% Bibtex data interface \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{entrykey}% \do{childentrykey}% \do{entrytype}% \do{entrysubtype}% \do{entryset}% \do{entrysetcount}% \do{crossref}% \do{xref}% \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{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{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}% \csedef{the#1}{\noexpand\the\expandonce{\csname c@#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@savedo\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 \c@uniquename\z@ \let\do\blx@savedo} % {} \protected\long\def\blx@bbl@preamble#1{% \gappto\abx@preamble{#1}#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} % {}{} \protected\long\def\blx@bbl@fielddef#1#2{% \csxappto\blx@bbl@data{% \def\expandonce{\csname abx@field@#1\endcsname}% {\unexpanded{#2}}}} \protected\long\def\blx@bbl@fieldedef#1#2{% \csxappto\blx@bbl@data{% \def\expandonce{\csname abx@field@#1\endcsname}{#2}}} \protected\long\def\blx@bbl@stringdef#1#2{% \csxappto\blx@bbl@data{% \def\expandonce{\csname abx@field@#1\endcsname}% {\detokenize{#2}}}} % {} \protected\def\blx@bbl@verbdef#1{% \begingroup \let\verb\blx@bbl@verbadd \def\blx@tempa{#1}% \let\blx@tempb\@empty} \protected\def\blx@bbl@verbend{% \csxappto\blx@bbl@data{% \def\expandonce{\csname abx@field@\blx@tempa\endcsname}% {\blx@tempb}}% \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\blx@tempb{\blx@tempb\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{% \csxappto\blx@bbl@data{% \csname c@#1\endcsname#2\relax \def\expandonce{\csname abx@list@#1\endcsname}% {\unexpanded{#3}}}} % {}{}{} \protected\def\blx@bbl@namedef#1#2#3{% \csxappto\blx@bbl@data{% \csname c@#1\endcsname#2\relax \def\expandonce{\csname abx@name@#1\endcsname}% {\unexpanded{#3}}}} % {,...} \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@ \let\do\blx@bbl@set@i \expandafter\docsvlist\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{% \ifcsdef{blx@refp@\the\c@refsection @#1} {} {\listcsgadd{blx@refs@\the\c@refsection}{#1}}% \listcsxadd{blx@refp@\the\c@refsection @#1}{\abx@field@entrykey}% \csxdef{blx@refc@\the\c@refsection @\abx@field@entrykey}{#1}} \def\blx@addxref#1{% \blx@ifdata{#1} {\begingroup \def\do##1{% \csgappto{blx@data@\the\c@refsection @##1}{% \def\abx@field@xref{#1}}}% \dolistcsloop{blx@refp@\the\c@refsection @#1}% \endgroup} {}% \global\csundef{blx@refp@\the\c@refsection @#1}} % {,...} \protected\def\blx@bbl@keyw#1{% \iftoggle{blx@skipbib} {} {\def\do{\blx@addkeyword{\abx@field@entrykey}}% \docsvlist{#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 \let\do\blx@bbl@options@i \docsvlist{#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@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@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] % \blx@refp@
@ parent -> child mapping (xrefs), temporary % key -> keys [internal list] % \blx@refc@
@ child -> parent mapping (xrefs) % key -> key [internal list] \def\blx@ifdata#1{% \ifcsdef{blx@data@\the\c@refsection @#1}} \def\blx@getdata#1{% \csuse{blx@data@\the\c@refsection @#1}} \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}} \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@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}} {}} {}} % {}{}{} \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@fieldedef{entrykey}{\abx@field@entrykey}% \blx@bbl@fielddef{entrytype}{#2}% \blx@imc@iffieldundef{options} {} {\blx@bbl@fieldedef{options}{\expandonce\abx@field@options}}} \protected\def\blx@bbl@endentry{% \csuse\blx@bbl@data \iftoggle{blx@setonly} {\global\toggletrue{blx@addset}% \toggletrue{blx@skipbib}% \toggletrue{blx@skiplos}% \toggletrue{blx@skiplab}} {\listcsxadd{blx@sort@\the\c@refsection}{\abx@field@entrykey}}% \iftoggle{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}} {}% \ifcsundef{blx@pref@\the\c@refsection @\abx@field@entrykey} {} {\blx@addpageref{\abx@field@entrykey}}}% \iftoggle{blx@skiplos} {} {\blx@bbl@shorthand}% \iftoggle{blx@skiplab} {} {\iftoggle{blx@labelnumber} {\blx@bbl@labelnumber} {}% \iftoggle{blx@labelalpha} {\blx@bbl@labelalpha} {}% \iftoggle{blx@labelyear} {\blx@bbl@labelyear} {}}% \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 \let\do\blx@addset@i \dolistloop\blx@tempa \endgroup} \def\blx@addset@i#1{% \listcsgadd{blx@sort@\the\c@refsection}{#1}% \ifcsdef{blx@setp@\the\c@refsection @#1} {\begingroup \let\do\blx@addset@ii \expandafter\expandafter\expandafter\docsvlist \expandafter\expandafter\expandafter{% \csname blx@setp@\the\c@refsection @#1\endcsname}% \endgroup} {}} \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{% \ifundef\abx@field@shorthand {\ifundef\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}{\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@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}{% \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{% \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\entry\blx@bbl@entry \let\endentry\blx@bbl@endentry \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 \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} {\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{% \begingroup \edef\blx@bbl@data{blx@data@#3@\detokenize{#2}}% \blx@bbl@fielddef{localnumber}{#4}% \csgdef{blx@labelnumber@\the\c@refsection}{#4}% \blx@addchecksum{\the\numexpr#1+#4}% \endgroup} \AtEndDocument{% \def\abx@aux@number#1#2#3#4{\blx@addchecksum{\the\numexpr#1+#4}}} \def\blx@addlabelnumber{% \iftoggle{blx@skiplab} {} {\begingroup \ifundef\abx@field@shorthand {\ifundef\abx@field@localnumber {\csnumgdef{blx@labelnumber@\the\c@refsection}{% \csuse{blx@labelnumber@\the\c@refsection}+1}% \blx@auxwrite\@mainaux{% \string\abx@aux@number{\the\c@instcount}{\abx@field@entrykey}% {\the\c@refsection}{\csuse{blx@labelnumber@\the\c@refsection}}}% \edef\blx@bbl@data{blx@data@\the\c@refsection @\abx@field@entrykey}% \blx@bbl@fieldedef{localnumber}{\csuse{blx@labelnumber@\the\c@refsection}}} {}} {}% \endgroup}} \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@recode} {\ifdef\inpenc@prehook % inputenc 2006/05/05 v1.1b {\inpenc@prehook{}% \inpenc@posthook{}} {}% \inputencoding\blx@bibencoding} {}% \blx@info@noline{Trying to load bibliographic data..}% \blx@blxinit \blx@bblfile \blx@bblsecs \endgroup \iftoggle{blx@recode} {\ifdef\@enablequotes {\@enablequotes} {}} {}} \def\blx@bblfile{% \blx@secinit \begingroup \blx@bblstart \ifnum\c@refsection>\z@ \edef\blx@auxfile{\jobname\the\c@refsection\blxauxsuffix}% \else \edef\blx@auxfile{\jobname}% \fi \blx@ifsigned{\blx@auxfile}{bbl} {\InputIfFileExists{\blx@auxfile.bbl} {\blx@info@noline{... file '\blx@auxfile.bbl' found}} {\blx@info@noline{... file '\blx@auxfile.bbl' not found}% \typeout{No file \blx@auxfile.bbl.}}} {}% \blx@bblend \endgroup \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% \iftoggle{blx@recode}{\blx@recode}{}} \def\blx@bblsecs{% \advance\c@refsection\@ne \ifnum\c@refsection>\blx@maxsection \else \blx@bblfile \expandafter\blx@bblsecs \fi} \def\blx@recode{% \begingroup \abx@hook@recode \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@recode{% \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]{% \ifblank{#2} {\blx@error {Invalid filter} {The specified filter code is invalid}} {\long\csdef{blx@filter@#1}{#2}}} % 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{% Entry type '#1' not found.\MessageBreak Skipping this type filter}} {\blx@printbibchecks \iftoggle{blx@tempb} {\togglefalse{blx@tempb}% \blx@filter\blx@tempa{blx@type@\the\c@refsection @#1}} {\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{% Entry subtype '#1' not found.\MessageBreak Skipping this subtype filter}} {\blx@printbibchecks \iftoggle{blx@tempb} {\togglefalse{blx@tempb}% \blx@filter\blx@tempa{blx@subt@\the\c@refsection @#1}} {\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.\MessageBreak Skipping this keyword filter}} {\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@#1} {\blx@warning{% Category '#1' not found.\MessageBreak Skipping this category filter}} {\blx@printbibchecks \blx@filter\blx@tempa{blx@catg@#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{% \ifcsundef{blx@filter@#1} {\blx@warning{% Custom filter '#1' not found.\MessageBreak Skipping this custom filter}} {\blx@printbibchecks \blx@bibfilter\blx@tempa{blx@filter@#1}}} \define@key{blx@bib}{maxnames}{\blx@key@maxnames{#1}} \define@key{blx@los}{maxnames}{\blx@key@maxnames{#1}} \define@key{blx@bbs}{maxnames}{\blx@key@maxnames{#1}} \define@key{blx@bbg}{maxnames}{\blx@key@maxnames{#1}} \define@key{blx@bbc}{maxnames}{\blx@key@maxnames{#1}} \def\blx@key@maxnames#1{% \ifnum#1<\c@maxnames \blx@err@confopt{maxnames}{% The value may not be smaller than the global 'maxnames' (=\the\c@maxnames)}% \else \blx@setmaxnames{#1}% \fi} \define@key{blx@bib}{minnames}{\blx@key@minnames{#1}} \define@key{blx@los}{minnames}{\blx@key@minnames{#1}} \define@key{blx@bbs}{minnames}{\blx@key@minnames{#1}} \define@key{blx@bbg}{minnames}{\blx@key@minnames{#1}} \define@key{blx@bbc}{minnames}{\blx@key@minnames{#1}} \def\blx@key@minnames#1{% \ifnum#1<\c@minnames \blx@err@confopt{minnames}{% The value may not be smaller than the global 'minnames' (=\the\c@minnames)}% \else \blx@setminnames{#1}% \fi} \define@key{blx@bib}{maxitems}{\blx@setmaxitems{#1}} \define@key{blx@los}{maxitems}{\blx@setmaxitems{#1}} \define@key{blx@bbs}{maxitems}{\blx@setmaxitems{#1}} \define@key{blx@bbg}{maxitems}{\blx@setmaxitems{#1}} \define@key{blx@bbc}{maxitems}{\blx@setmaxitems{#1}} \define@key{blx@bib}{minitems}{\blx@setminitems{#1}} \define@key{blx@los}{minitems}{\blx@setminitems{#1}} \define@key{blx@bbs}{minitems}{\blx@setminitems{#1}} \define@key{blx@bbg}{minitems}{\blx@setminitems{#1}} \define@key{blx@bbc}{minitems}{\blx@setminitems{#1}} \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' undefined} {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' undefined} {Use \string\defbibenvironment\space to define it}} {\def\blx@theenv{#1}}} \define@key{blx@bhd}{title}{\long\def\blx@thetitle{#1}} \define@key{blx@bib}{title}{\long\def\blx@thetitle{#1}} \define@key{blx@los}{title}{\long\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' undefined} {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' undefined} {Use \string\defbibnote\space to define it}} {\def\blx@thepostnote{#1}}} % [] \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 \edef\blx@tempa{\endgroup \noexpand\blx@bibheading {\expandonce\blx@theheading} {\expandonce\blx@thetitle}}% \blx@tempa} % [] \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\@ne \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}% \let\do\blx@bibcategory \dolistloop\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}% \par\nobreak \blx@noitem \endgroup \blx@bibnote\blx@thepostnote \endgroup} \def\blx@bibheading#1#2{% \let\newrefsection\relax \let\newrefsegment\relax \expandafter\ifblank \expandafter{#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 \csuse{blx@hook@bbxinit}% \bibsetup\bibfont \blx@setsfcodes \csuse{blx@bibsetup}} % {} \def\blx@bibitem#1{% \blx@ifdata{#1} {\let\blx@noitem\@empty \begingroup \blx@getdata{#1}% \blx@ifdriver{\abx@field@entrytype} {\blx@setoptions@type\abx@field@entrytype \blx@setoptions@entry \blx@thelabelnumber \addtocounter{instcount}\@ne \csuse{blx@item@\blx@theenv}\relax \blx@initsep \blx@namesep \csuse{blx@hook@bibitem}% \blx@execute \blx@initunit \blx@anchor \blx@beglang \bibsentence \blx@pagetracker \blx@driver{\abx@field@entrytype}% \blx@postpunct \blx@endlang} {\blx@warning{% No driver for entry type '\abx@field@entrytype'.\MessageBreak Skipping entry '\abx@field@entrykey'}}% \endgroup} {}} \def\blx@initsep{% \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@addchecksum{\the\numexpr#1+0#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@addchecksum{\the\numexpr#1+0#2}} \protected\def\blx@aux@fnpage#1#2{% \csgdef{blx@fnpage@#1}{#2}% \blx@addchecksum{\the\numexpr#1+0#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@addchecksum{\the\numexpr#1+0#2}} \AtEndDocument{% \def\abx@aux@page#1#2{\blx@addchecksum{\the\numexpr#1+0#2}}% \def\abx@aux@fnpage#1#2{\blx@addchecksum{\the\numexpr#1+0#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@defernums} {\global\let\blx@printbibchecks\relax} {\iftoggle{blx@labelnumber} {\blx@warning{Setting 'defernums=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}% \par\nobreak \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} {\let\blx@noitem\@empty \begingroup \blx@getdata{#1}% \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[\blx@bibfiles]}} \def\blx@refsection[#1]{% \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}}% \xdef\blx@auxfile{\jobname\the\c@refsection\blxauxsuffix}% \blx@ifsigned{\blx@auxfile}{aux} {\immediate\openout\blx@auxout \blx@auxfile.aux\relax \global\let\blx@theauxout\blx@auxout \blx@auxinit{#1}} {}% \fi \blx@info{Setting label 'refsection:\the\c@refsection'}% \label{refsection:\the\c@refsection}% \endgroup} \protected\def\endrefsection{% \blx@endrefsection \blx@inf@refsec} \def\blx@endrefsection{% \blx@endrefsegment \ifx\blx@theauxout\blx@auxout \immediate\closeout\blx@auxout \fi \global\let\blx@theauxout\@mainaux \xdef\blx@auxfile{\jobname}% \ifnum\c@refsection>\z@ \global\c@refsection\z@ \fi} \AtEndDocument{% \blx@endrefsection \def\abx@aux@refsection#1{\blx@addchecksum{[#1]}}} \protected\def\abx@aux@refsection#1{% \ifnum#1>\blx@maxsection \global\blx@maxsection#1\relax \fi \blx@addchecksum{[#1]}} % 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@} % 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{% \def\do{\blx@addtocategory{#1}}% \blx@sanitizekeys\docsvlist{#2}% \let\do\noexpand}}} % {}{,...} \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} % Database \renewrobustcmd*{\bibliography}[1]{% \ifx\blx@bibfiles\@empty \gdef\blx@bibfiles{#1}% \else \gappto\blx@bibfiles{,#1}% \fi} \let\blx@bibfiles\@empty %% 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} % {