\ProvidesFile{biblatex.def}
[\abx@cptid]

% ------------------------------------------------------------------
% FORMATTING COMMANDS
% ------------------------------------------------------------------

% Generic formatting commands and hooks
% ------------------------------------------------------------------

% Used in citations, bibliography and bibliography lists

% legacy - no longer needed could be removed one day when no-one is using it.
\def\nameparts#1{}

% Define namepart keys from datamodel constant list
% \namepart<namepart>  - e.g. \namepartfamily
% \namepart<namepart>i - e.g. \namepartfamilyi
\def\do#1{%
  \csdef{mkbibname#1}##1{##1}%
  \blx@kv@defkey{blx@opt@namepart}{#1}{\csdef{namepart#1}{##1}}%
  \blx@kv@defkey{blx@opt@namepart}{#1i}{\csdef{namepart#1i}{##1}}%
  \blx@kv@defkey{blx@opt@namepart}{#1un}{\csdef{namepart#1un}{##1}}}
\expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}

% legacy aliases
% set empty defaults so we can check if they have been redefined
\let\mkbibnamefirst\@empty
\let\mkbibnamelast\@empty
\let\mkbibnameaffix\@empty

\AtEndPreamble{%
  \ifdefempty\mkbibnamelast
    {\let\@mkbibnamelastsaved\mkbibnamefamily}% not redefined by user
    {\blx@warning@noline{%
       Attempt to redefine deprecated '\string\mkbibnamelast'.\MessageBreak
       Please use '\string\mkbibnamefamily' instead.\MessageBreak
       Using '\string\mkbibnamefamily'}%
     \let\@mkbibnamelastsaved\mkbibnamelast
     \let\mkbibnamefamily\@mkbibnamelastsaved}%
  % Now redefine it in case it's used
  \def\mkbibnamelast{%
    \blx@warning@noline{%
      '\string\mkbibnamelast' is deprecated.\MessageBreak
       Please use '\string\mkbibnamefamily'.\MessageBreak
       Using '\string\mkbibnamefamily'}%
    \@mkbibnamelastsaved}

  \ifdefempty\mkbibnamefirst
    {\let\@mkbibnamefirstsaved\mkbibnamegiven}% not redefined by user
    {\blx@warning@noline{%
       Attempt to redefine deprecated '\string\mkbibnamefirst'.\MessageBreak
       Please use '\string\mkbibnamegiven' instead.\MessageBreak
       Using '\string\mkbibnamegiven'}%
     \let\@mkbibnamefirstsaved\mkbibnamefirst
     \let\mkbibnamegiven\@mkbibnamefirstsaved}%
  % Now redefine it in case it's used
  \def\mkbibnamefirst{%
    \blx@warning@noline{%
      '\string\mkbibnamefirst' is deprecated.\MessageBreak
       Please use '\string\mkbibnamegiven'.\MessageBreak
       Using '\string\mkbibnamegiven'}%
    \@mkbibnamefirstsaved}

  \ifdefempty\mkbibnameaffix
    {\let\@mkbibnameaffixsaved\mkbibnamesuffix}% not redefined by user
    {\blx@warning@noline{%
       Attempt to redefine deprecated '\string\mkbibnameaffix'.\MessageBreak
       Please use '\string\mkbibnamesuffix' instead.\MessageBreak
       Using '\string\mkbibnamesuffix'}%
     \let\@mkbibnameaffixsaved\mkbibnameaffix
     \let\mkbibnamesuffix\@mkbibnameaffixsaved}%
  % Now redefine it in case it's used
  \def\mkbibnameaffix{%
    \blx@warning@noline{%
      '\string\mkbibnameaffix' is deprecated.\MessageBreak
       Please use '\string\mkbibnamesuffix'.\MessageBreak
       Using \string\mkbibnamesuffix}%
    \@mkbibnameaffixsaved}}

\newcommand*{\bibellipsis}{[\textellipsis\unkern]\midsentence}

% Delimiters used in citations, bibliography and bibliography lists
\DeclareDelimFormat{multinamedelim}{\addcomma\space}
\DeclareDelimFormat{finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\space}
\DeclareDelimFormat{revsdnamedelim}{}
\DeclareDelimFormat{andothersdelim}{\addspace}

\DeclareDelimFormat{multilistdelim}{\addcomma\space}
\DeclareDelimFormat{finallistdelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\space}
\DeclareDelimFormat{andmoredelim}{\addspace}

\newcommand*{\multicitedelim}{\addsemicolon\space}
\newcommand*{\multicitesubentrydelim}{\addcomma}
\newcommand*{\multiciterangedelim}{\bibrangedash}
\newcommand*{\multicitesubentryrangedelim}{\multiciterangedelim}

\newcommand*{\compcitedelim}{\addcomma\space}

\newcommand*{\supercitedelim}{\addcomma}
\newcommand*{\supercitesubentrydelim}{\supercitedelim}
\newcommand*{\superciterangedelim}{\bibrangedash}
\newcommand*{\supercitesubentryrangedelim}{\superciterangedelim}

\DeclareDelimFormat{prenotedelim}{\addspace}
\DeclareDelimFormat{postnotedelim}{\addcomma\space}
\DeclareDelimAlias{multiprenotedelim}{prenotedelim}
\DeclareDelimAlias{multipostnotedelim}{postnotedelim}
\DeclareDelimFormat{extpostnotedelim}{\addspace}
\newcommand*{\volcitedelim}{\addcomma\space}
\newcommand*{\textcitedelim}{%
  \iffinalcitedelim
    {\ifnumgreater{\value{textcitetotal}}{2}
       {\iftextcitepunct{\finalandsemicolon}{\finalandcomma}}{}%
     \addspace\bibstring{and}}
    {\iftextcitepunct{\addsemicolon}{\addcomma}}%
  \space}


% context-sensitive delimiters
% retain compatibility with \labelnamepunct et al.
% The seemingly redundant definitions are needed because
% hard-coded punctuation was replaced by context-sensitive
% delimiters, changes to here need to be made explicitly
% to avoid unwanted effects of redefining the global delimiter.
\DeclareDelimFormat{authortypedelim}{\addcomma\space}
\DeclareDelimFormat{editortypedelim}{\addcomma\space}
\DeclareDelimFormat{translatortypedelim}{\addcomma\space}
\DeclareDelimFormat{namelabeldelim}{\addspace}
\DeclareDelimFormat{nametitledelim}{\addcomma\space}
\DeclareDelimFormat[bib,biblist]{nametitledelim}{\labelnamepunct}
\DeclareDelimFormat[textcite]{nametitledelim}{\addspace}
\DeclareDelimFormat{nameyeardelim}{\addspace}
\DeclareDelimFormat[textcite]{nameyeardelim}{\addspace}
\DeclareDelimFormat[bib,biblist]{nameyeardelim}{\addspace}
\DeclareDelimFormat{nonameyeardelim}{\addspace}
\DeclareDelimFormat[textcite]{nonameyeardelim}{\addspace}
\DeclareDelimFormat[bib,biblist]{nonameyeardelim}{\addspace}
\DeclareDelimFormat{dateeradelim}{\addspace}
\DeclareDelimFormat{datecircadelim}{\addspace}

% This is a provisional definition for \iffinalcitedelim{<true>}{<false>}, a
% test that should expand <true> if the next non-compact citation delimiter
% is the last one in the citation list printed by \textcite or \textcites.
\newcommand*{\iffinalcitedelim}{\@secondoftwo}

% Expand <true> if the citation labels in the citation list printed by \textcite
% or \textcites contains the serial comma \finalandcomma
\newcommand*{\iftextcitepunct}{%
  \ifboolexpr{ not test {\ifdefempty{\finalandsemicolon}}
    and test {\ifnumgreater{\value{textcitemaxnames}}{2}} }}

% Counters for the number of citation labels separated by non-compact delimiters
% in the citation list printed by \textcite or \textcites. Counter values should
% be managed by the citation style.
\newcounter{textcitecount}
\newcounter{textcitetotal}
\setcounter{textcitecount}{0}
\setcounter{textcitetotal}{0}

% Counters for the maximum number of names among citation labels in the citation
% list printed by \textcite or \textcites. Counter value should be managed by
% the citation style.
\newcounter{textcitemaxnames}
\setcounter{textcitemaxnames}{0}

% Used in the bibliography and bibliography lists

\newcommand*{\newunitpunct}{\addperiod\space}
\newcommand*{\entrysetpunct}{\addsemicolon\space}
\newcommand*{\finentrypunct}{\addperiod}
\newcommand*{\labelnamepunct}{\newunitpunct}
\newcommand*{\subtitlepunct}{\newunitpunct}
\newcommand*{\intitlepunct}{\addcolon\space}
\newcommand*{\bibpagespunct}{\addcomma\space}
\newcommand*{\bibeidpunct}{\addcomma\space}
\newcommand*{\bibpagerefpunct}{\addspace}
\newcommand*{\revsdnamepunct}{\addcomma}
\newcommand*{\bibnamedash}{%
  \ifdimless{\leftmargin}{0.75em}
    {\mbox{\textemdash\space}}
    {\makebox[\leftmargin][l]{%
       \ifdimless{\leftmargin}{1.25em}
         {\textendash}
         {\textemdash}}}}
\newcommand*{\relatedpunct}{\addspace}
\newcommand*{\relateddelim}{\adddot\par\nobreak}
\newcommand*{\begrelateddelim}{\newunitpunct}
\newcommand*{\begrelateddelimmultivolume}{\newunitpunct\par\nobreak}
% Examples of use, uncommenting these would break backwards compatibility
%\newcommand*{\begrelateddelimorigpubin}{\addspace}
%\newcommand*{\begrelateddelimorigpubas}{\addspace}
\newcommand{\mkrelatedstringtext}{\textmainlang}

% Used for indexing

\newcommand*{\bibindexnamedelima}{ }
\newcommand*{\bibindexnamedelimb}{ }
\newcommand*{\bibindexnamedelimc}{ }
\newcommand*{\bibindexnamedelimd}{ }
\newcommand*{\bibindexnamedelimi}{ }
\newcommand*{\bibindexinitperiod}{.}
\newcommand*{\bibindexinitdelim}{ }
\newcommand*{\bibindexinithyphendelim}{.-}

% \bibsetup is a generic hook controlling the (low-level) layout of
% the bibliography and bibliography lists. The default
% definition should work fine in most cases.
% There are a few other penalties and parameters that could be adjusted
% here, but we don't do that by default for backwards compatibility
% reasons.
% * \finalhyphendemerits can be set to 0 to allow hyphenation
%   in the penultimate line

\newcommand*{\bibsetup}{%
  \interlinepenalty=5000\relax
  \widowpenalty=10000\relax
  \clubpenalty=10000\relax
  \raggedbottom
  \frenchspacing
  \biburlsetup}

% The penalties above are not specific to biblatex. These are
% low-level TeX features. \interlinepenalty is the penalty assigned
% to page breaks within a paragraph (i.e., in this case, a
% bibliography entry); \clubpenalty is an additional penalty
% assigned to page breaks after the first line of a paragraph;
% \widowpenalty is an additional penalty assigned to page breaks
% before the last line of a paragraph. Note that the value 10000
% means 'infinite' as far as TeX is concerned. Setting a penalty to
% 10000 will unconditionally suppress the respective breakpoint.
%
% The net effect of the above settings is as follows. Breaking a
% bibliography entry across pages is discouraged, but not suppressed
% altogether. If a bibliography entry spans less than four lines,
% TeX will always keep it on one page. If it spans four or more
% lines, it may be broken across pages, provided that there are at
% least two lines on the page before and after the break.
%
% These penalties should normally be used in conjunction with
% \raggedbottom. If you don't like that and remove \raggedbottom
% from the definition of \bibsetup, make sure to provide some
% stretchability between bibliography entries by setting \bibitemsep
% to a suitable value, e.g.:
%
% \setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip}
%
% Using \frenchspacing in the bibliography is recommended. If you
% want more visual separation, try the package option 'block=space'.
% This will yield better results than \nonfrenchspacing.

% If \frenchspacing is removed here, it may also have to be removed
% from \blx@beglang@spacefactors, for example with
% \let\blx@beglang@spacefactors\@empty

% \citesetup is a generic hook for citations.

\newcommand*{\citesetup}{%
  \biburlsetup}

% Local setup for \url; see comments in url.sty for details.

\newcounter{biburlbigbreakpenalty}
\newcounter{biburlbreakpenalty}
\newcounter{biburlnumpenalty}
\newcounter{biburlucpenalty}
\newcounter{biburllcpenalty}

\setcounter{biburlbigbreakpenalty}{100}
\setcounter{biburlbreakpenalty}{200}

\newmuskip\biburlbigskip
\newmuskip\biburlnumskip
\newmuskip\biburlucskip
\newmuskip\biburllcskip

% I'd have preferred \setlength here, but calc does not support
% muglue (yet?).
% https://github.com/plk/biblatex/issues/889
% See also https://tex.stackexchange.com/q/188215/
\biburlbigskip=0mu plus 3mu\relax
\biburlnumskip=0mu\relax
\biburlucskip=0mu\relax
\biburllcskip=0mu\relax

\newcommand*{\biburlsetup}{%
  \Urlmuskip\biburlbigskip
  \mathchardef\UrlBigBreakPenalty=\value{biburlbigbreakpenalty}\relax
  \mathchardef\UrlBreakPenalty=\value{biburlbreakpenalty}\relax
  \def\UrlBigBreaks{\do\:\do\-}%
  \def\UrlBreaks{%
    \do\.\do\@\do\/\do\\\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\}%
    \do\,\do\?\do\'\do\+\do\=\do\#\do\$\do\&\do\*\do\^\do\"}%
  \ifnumgreater{\value{biburlnumpenalty}}{0}
    {\def\do##1{%
       \appto\UrlSpecials{%
         \do##1{%
           \mathchar`##1
           \mskip\biburlnumskip
           \penalty\value{biburlnumpenalty}}}}%
     \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
    {}%
  \ifnumgreater{\value{biburlucpenalty}}{0}
    {\def\do##1{%
       \appto\UrlSpecials{%
         \do##1{%
           \mathchar`##1
           \mskip\biburlucskip
           \penalty\value{biburlucpenalty}}}}%
     \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J
     \do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T
     \do\U\do\V\do\W\do\X\do\Y\do\Z}
    {}%
  \ifnumgreater{\value{biburllcpenalty}}{0}
    {\def\do##1{%
       \appto\UrlSpecials{%
         \do##1{%
           \mathchar`##1
           \mskip\biburllcskip
           \penalty\value{biburllcpenalty}}}}%
     \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
     \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t
     \do\u\do\v\do\w\do\x\do\y\do\z}
    {}%
  \let\do=\noexpand}

% The above code allows linebreaks before numbers and letters.
% This is often the only way to break DOIs. It also allows breaks
% after hyphens and adjusts \Urlmuskip to add some stretchability
% to URLs.

% The default font of the bibliography and the bibliography lists.
% We simply reset the current font to the global defaults.

\newcommand*{\bibfont}{\normalfont\normalsize}

% Some length registers which may be used to fine-tune the
% (high-level) layout of the bibliography.

% Default \bibhang to 1em if \parindent is 0 for some reason
\setlength{\bibhang}{\ifnumequal{\parindent}{0}{1em}{\parindent}}
\setlength{\biblabelsep}{2\labelsep}
\setlength{\bibitemsep}{\itemsep}
\setlength{\bibnamesep}{0pt}
\setlength{\bibinitsep}{0pt}
\setlength{\bibparsep}{0pt}

% Miscellaneous facilities
% ------------------------------------------------------------------

% The counter 'abbrvpenalty' holds the penalty used in short or
% abbreviated bibliography strings. For example, a linebreak in
% expressions such as "et al." or "ed. by" is unfortunate, but should
% still be possible to prevent overfull boxes. We use TeX's
% \hyphenpenalty (normally 50) as the default value. The idea is
% making TeX treat the whole expression as if it were a single,
% hyphenatable word as far as line-breaking is concerned. If you
% dislike such linebreaks, use a higher value. If you do not mind
% them at all, set this counter to zero. If you want to suppress them
% unconditionally, set it to 10000.
\defcounter{abbrvpenalty}{\hyphenpenalty}

% The counter 'highnamepenalty' also holds a penalty affecting the
% line-breaking of names. This penalty is inserted between smaller
% chunks of a name, for example between the first and the middle
% name. The default value is \hyphenpenalty. If you dislike such
% linebreaks, use a higher value. If you do not mind them at all,
% set this counter to zero. If you prefer the traditional BibTeX
% behavior, set it to 10000.
\defcounter{highnamepenalty}{\hyphenpenalty}

% The counter 'lownamepenalty' holds a penalty which affects the
% line-breaking of names. This penalty is inserted between larger
% chunks of a name, for example between the chunk consisting of all
% first names and the last name. The default value is half the
% \hyphenpenalty. If you dislike such linebreaks, use a higher
% value. If you do not mind them at all, set this counter to zero.
\defcounter{lownamepenalty}{\hyphenpenalty/2}

% Note that default values assigned to the above counters are
% deliberately very low to prevent overfull boxes. This implies that
% you will hardly notice any effect on line-breaking if the text is
% set justified. If you set these counters to 10000 to suppress the
% respective breakpoints, you will notice their effect but you may
% also be confronted with overfull boxes. Keep in mind that
% line-breaking in the bibliography is often more difficult than in
% the body text and that you can not resort to rephrasing a
% sentence. In some cases it may be preferable to set the entire
% bibliography \raggedright (by modifying \bibsetup) to prevent
% suboptimal linebreaks. In this case, even the very low default
% penalties will make a visible difference.

% File name prefixes for external abstracts and annotations
\newcommand*{\bibabstractprefix}{bibabstract-}
\newcommand*{\bibannotationprefix}{bibannotation-}

% Print acronyms in small caps if possible
\newcommand*{\mkbibacro}[1]{%
  \ifcsundef{\f@encoding/\f@family/\f@series/sc}
    {#1}
    {\textsc{\MakeLowercase{#1}}}}

% Convert HH to hh for time formatting
\newcommand*{\mktimehh}[1]{%
  \ifnumless{#1}{13}
    {#1}
    {\number\numexpr#1-12\relax}}

% ------------------------------------------------------------------
% ADDITIONAL PACKAGE OPTIONS
% ------------------------------------------------------------------

% Style of compressed page ranges in back references

\DeclareBibliographyOption[string]{backrefstyle}{%
  \ifcsdef{abx@opt@pagerefstyle@#1}
    {\letcs\abx@pagerefstyle{abx@opt@pagerefstyle@#1}}
    {\PackageError{biblatex}
       {Option 'backrefstyle=#1' invalid}
       {The option you have supplied is invalid.\MessageBreak
        See the biblatex manual for valid option keys
        and possible values}}}
\newcommand*{\abx@pagerefstyle}{1}
\csdef{abx@opt@pagerefstyle@none}{-1}
\csdef{abx@opt@pagerefstyle@two}{0}
\csdef{abx@opt@pagerefstyle@three}{1}
\csdef{abx@opt@pagerefstyle@two+}{2}
\csdef{abx@opt@pagerefstyle@three+}{3}
\csdef{abx@opt@pagerefstyle@all+}{4}

% arXiv path/format selector
%
% abs    = abstract page
% ps     = PostScript version
% pdf    = PDF version
% format = format selector

\DeclareBibliographyOption[string]{arxiv}{\def\abx@arxivpath{#1}}
\newcommand*{\abx@arxivpath}{abs}

% ------------------------------------------------------------------
% FIELD FORMATS (#1 is the value of the field)
% ------------------------------------------------------------------

% The fallback used by \printfield

\DeclareFieldFormat{default}{#1}

% The default used by \citefield

\DeclareFieldFormat{citefield}{#1}

% Used in citations

\DeclareFieldFormat{citetitle}{\mkbibemph{#1}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {citetitle}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat
  [suppbook,suppcollection,suppperiodical]
  {citetitle}{#1}
% label{end}year can be a localisation string to allow for "no date" etc.
\DeclareFieldFormat{labelyear}{% = the '1995' part in 'Jones 1995a'
  \ifbibstring{#1}{\bibstring{#1}}{\mkyearzeros{#1}}}
\DeclareFieldFormat{labelendyear}{% = the '1995' part in 'Jones 1995a'
  \ifbibstring{#1}{\bibstring{#1}}{\mkyearzeros{#1}}}
\DeclareFieldFormat{extradate}{%
  \iffieldnums{labelyear}
    {\mknumalph{#1}}
    {\mkbibparens{\mknumalph{#1}}}}
\DeclareFieldFormat{labelalpha}{#1}%
\DeclareFieldFormat{extraalpha}{\mknumalph{#1}}%
\DeclareFieldFormat{shorthand}{#1\isdot}
\DeclareFieldFormat{shorthandintro}{%
  \ifcapital{\MakeCapital{#1}}{#1}\isdot}
% citation commands
\DeclareFieldFormat{prenote}{#1\isdot}
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mkautorange]{#1}}
\DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1}
\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mkautorange]{#1}}
\DeclareFieldFormat{volcitenote}{\mkvolcitenote#1}
\newrobustcmd*{\mkvolcitenote}[2]{%
  \printtext[volcitevolume]{#1}%
  \ifblank{#2}{}{\volcitedelim\printtext[volcitepages]{#2}}}

% multicite commands
\DeclareFieldAlias{multiprenote}{prenote}
\DeclareFieldAlias{multipostnote}{postnote}

% Used by \citeurl

\DeclareFieldFormat{citeurl}{\url{#1}}

% Used in the bibliography and bibliography lists

\DeclareFieldFormat{doi}{%
  \mkbibacro{DOI}\addcolon\space
  \ifhyperref
    {\href{https://doi.org/#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldFormat{edition}{%
  \ifinteger{#1}
    {\mkbibordedition{#1}~\bibstring{edition}}
    {#1\isdot}}
\DeclareFieldFormat{eprint}{%
  \iffieldundef{eprinttype}
    {eprint}
    {\thefield{eprinttype}}%
  \addcolon\space
  \ifhyperref
    {\url{#1}}
    {\nolinkurl{#1}}%
  \iffieldundef{eprintclass}
    {}
    {\addspace\mkbibparens{\thefield{eprintclass}}}}
\DeclareFieldFormat{eprint:hdl}{%
  HDL\addcolon\space
  \ifhyperref
    {\href{http://hdl.handle.net/#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldAlias{eprint:HDL}{eprint:hdl}
\DeclareFieldFormat{eprint:arxiv}{%
  arXiv\addcolon\space
  \ifhyperref
    {\href{https://arxiv.org/\abx@arxivpath/#1}{%
       \nolinkurl{#1}%
       \iffieldundef{eprintclass}
         {}
         {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}}
    {\nolinkurl{#1}%
     \iffieldundef{eprintclass}
       {}
       {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}}
\DeclareFieldAlias{eprint:arXiv}{eprint:arxiv}
\DeclareFieldFormat{eprint:jstor}{%
  JSTOR\addcolon\space
  \ifhyperref
    {\href{http://www.jstor.org/stable/#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldAlias{eprint:JSTOR}{eprint:jstor}
\DeclareFieldFormat{eprint:pubmed}{%
  PMID\addcolon\space
  \ifhyperref
    {\href{http://www.ncbi.nlm.nih.gov/pubmed/#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldAlias{eprint:PubMed}{eprint:pubmed}
\DeclareFieldFormat{eprint:googlebooks}{%
  Google Books\addcolon\space
  \ifhyperref
    {\href{http://books.google.com/books?id=#1}{\nolinkurl{#1}}}
    {\nolinkurl{#1}}}
\DeclareFieldAlias{eprint:Google Books}{eprint:googlebooks}
\DeclareFieldFormat{file}{\url{#1}}
\DeclareFieldFormat{isbn}{\mkbibacro{ISBN}\addcolon\space #1}
\DeclareFieldFormat{isrn}{\mkbibacro{ISRN}\addcolon\space #1}
\DeclareFieldFormat{issn}{\mkbibacro{ISSN}\addcolon\space #1}
\DeclareFieldFormat{journaltitle}{\mkbibemph{#1\isdot}}
\DeclareFieldFormat{issuetitle}{\mkbibemph{#1}}
\DeclareFieldFormat{maintitle}{\mkbibemph{#1}}
\DeclareFieldFormat{booktitle}{\mkbibemph{#1}}
\DeclareFieldFormat{chapter}{\bibstring{chapter}~#1}
\DeclareFieldFormat{month}{\mkbibmonth{#1}}
\DeclareFieldFormat{note}{#1\isdot}
\DeclareFieldFormat{number}{#1}% number in a series
\DeclareFieldFormat[article,periodical]{number}{#1}% number of a journal
\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}
\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1}}
\DeclareFieldFormat{part}{.#1}% physical part of a logical volume
\DeclareFieldFormat{series}{#1}% publication series
\DeclareFieldFormat[article,periodical]{series}{% series of a journal
  \ifinteger{#1}
    {\mkbibordseries{#1}~\bibstring{jourser}}
    {\ifbibstring{#1}{\bibstring{#1}}{#1}}}
\DeclareFieldFormat{pubstate}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
\DeclareFieldFormat{title}{\mkbibemph{#1}}
\DeclareFieldFormat
  [article,inbook,incollection,inproceedings,patent,thesis,unpublished]
  {title}{\mkbibquote{#1\isdot}}
\DeclareFieldFormat
  [suppbook,suppcollection,suppperiodical]
  {title}{#1}
\DeclareFieldFormat{type}{\ifbibstring{#1}{\bibstring{#1}}{#1}}
\DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}}
\DeclareFieldFormat{version}{\bibstring{version}~#1}
\DeclareFieldFormat{volume}{\bibstring{volume}~#1}% volume of a book
\DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal
\DeclareFieldFormat{volumes}{#1~\bibstring{volumes}}
\DeclareFieldFormat{related}{#1}
\DeclareFieldFormat{related:multivolume}{#1}
\DeclareFieldFormat{related:origpubin}{\mkbibparens{#1}}
\DeclareFieldFormat{related:origpubas}{\mkbibparens{#1}}
\DeclareFieldFormat{relatedstring:default}{#1\printunit{\relatedpunct}}
\DeclareFieldFormat{relatedstring:reprintfrom}{#1\addspace}

% Generic formats for \printtext and \printfield

\DeclareFieldFormat{emph}{\mkbibemph{#1}}
\DeclareFieldFormat{bold}{\mkbibbold{#1}}
\DeclareFieldFormat{smallcaps}{\textsc{#1}}
\DeclareFieldFormat{parens}{\mkbibparens{#1}}
\DeclareFieldFormat{brackets}{\mkbibbrackets{#1}}
\DeclareFieldFormat{bibhyperref}{\bibhyperref{#1}}
\DeclareFieldFormat{bibhyperlink}{\bibhyperlink{\thefield{entrykey}}{#1}}
\DeclareFieldFormat{bibhypertarget}{\bibhypertarget{\thefield{entrykey}}{#1}}
\DeclareFieldFormat{titlecase}{#1}
\DeclareFieldFormat{noformat}{#1}

% ------------------------------------------------------------------
% LITERAL LIST FORMATS (#1 is the current item)
% ------------------------------------------------------------------

% Formatting directives for literal lists
% ------------------------------------------------------------------

\DeclareListWrapperFormat{default}{#1}

% The fallback used by \printlist

\DeclareListFormat{default}{%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

% The default used by \citelist

\DeclareListAlias{citelist}{default}
\DeclareListWrapperAlias{citelist}{default}

% Used in the bibliography

\DeclareListFormat{publisher}{%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

\DeclareListFormat{language}{%
  \usebibmacro{list:delim}{%
    \ifbibstring{#1}
      {\bibxstring{#1}}
      {\ifbibstring{lang#1}
         {\bibxstring{lang#1}}
         {#1}}}%
  \ifbibstring{#1}
    {\bibstring{#1}}
    {\ifbibstring{lang#1}
       {\bibstring{lang#1}}
       {#1}}%
  \usebibmacro{list:andothers}}

\DeclareListFormat{origlanguage}{%
  \usebibmacro{list:delim}{%
    \ifbibstring{#1}
      {\bibxstring{#1}}
      {\ifbibstring{lang#1}
         {\bibxstring{lang#1}}
         {#1}}}%
  \ifbibstring{#1}
    {\bibstring{#1}}
    {\ifbibstring{lang#1}
       {\bibstring{lang#1}}
       {#1}}%
  \usebibmacro{list:andothers}}


\DeclareListFormat{lfromoriglanguage}{%
  \begingroup
  \blx@bibstringnormal
  \usebibmacro{list:delim}{%
    \ifbibstring{from#1}
      {\bibxlstring{from#1}}
      {\ifbibstring{lang#1}
         {\bibxlstring{lang#1}}
         {#1}}}%
  \ifbibstring{from#1}
    {\bibstring{from#1}}
    {\ifbibstring{lang#1}
       {\biblstring{lang#1}}
       {#1}}%
 \usebibmacro{list:andothers}%
 \endgroup}

\DeclareListFormat{sfromoriglanguage}{%
  \begingroup
  \blx@bibstringnormal
  \usebibmacro{list:delim}{%
    \ifbibstring{from#1}
      {\bibxsstring{from#1}}
      {\ifbibstring{lang#1}
         {\bibxsstring{lang#1}}
         {#1}}}%
  \ifbibstring{from#1}
    {\bibstring{from#1}}
    {\ifbibstring{lang#1}
       {\bibsstring{lang#1}}
       {#1}}%
 \usebibmacro{list:andothers}%
 \endgroup}

\DeclareListFormat{location}{%
  \usebibmacro{list:delim}{#1}%
  #1\isdot
  \usebibmacro{list:andothers}}

\DeclareListFormat[patent]{location}{%
  \usebibmacro{list:plain}%
  \ifbibstring{#1}{\bibstring{#1}}{#1\isdot}%
  \usebibmacro{list:andothers}}

\DeclareListFormat{pageref}{%
  \ifnumless{\abx@pagerefstyle}{0}
    {\usebibmacro{list:plain}%
     \ifhyperref
       {\hyperlink{page.#1}{#1}}
       {#1}}
    {\ifnumequal{\value{listcount}}{1}
       {\usebibmacro{pageref:init}}
       {}%
     \usebibmacro{pageref:comp}{#1}%
     \ifnumequal{\value{listcount}}{\value{liststop}}
       {\usebibmacro{pageref:dump}}
       {}}}

\DeclareListAlias{origlocation}{location}
\DeclareListAlias{origpublisher}{publisher}
\DeclareListAlias{institution}{default}
\DeclareListAlias{organization}{default}

\DeclareListWrapperAlias{origlocation}{location}
\DeclareListWrapperAlias{origpublisher}{publisher}
\DeclareListWrapperAlias{institution}{default}
\DeclareListWrapperAlias{organization}{default}

% Auxiliary macros for list formatting directives
% ------------------------------------------------------------------

\newbibmacro*{list:delim}[1]{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\ifboolexpr{
       test {\ifnumless{\value{listcount}}{\value{liststop}}}
       or
       test \ifmoreitems
     }
       {\printdelim{multilistdelim}}
       {\lbx@finallistdelim{#1}}}
    {}}

\newbibmacro*{list:plain}{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\printdelim{multilistdelim}}
    {}}

\newbibmacro*{list:andothers}{%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmoreitems
  }
    {\ifnumgreater{\value{liststop}}{1}
       {\finalandcomma}
       {}%
     \printdelim{andmoredelim}\bibstring{andmore}}
    {}}

\newbibmacro*{pageref:init}{%
  \let\abx@range@hold=\empty
  \def\abx@range@diff{0}%
  \def\abx@range@prev{-1}%
  \def\abx@range@this{0}%
  \def\abx@range@last{-1}}

\newbibmacro*{pageref:comp}[1]{%
  \numdef\abx@range@prev{\abx@range@prev+1}%
  \ifinteger{#1}
    {\def\abx@range@num{#1}%
     \def\abx@range@this{1}%
     \ifnumequal{\abx@range@this}{\abx@range@last}
       {}
       {\def\abx@range@prev{-1}}}
    {\ifrmnum{#1}
       {\numdef\abx@range@num{\rmntonum{#1}}%
        \def\abx@range@this{2}%
        \ifnumequal{\abx@range@this}{\abx@range@last}
          {}
          {\def\abx@range@prev{-1}}}
       {\undef\abx@range@num
        \def\abx@range@this{0}%
        \def\abx@range@prev{-1}}}%
  \ifdef\abx@range@num
    {\ifnumequal{\abx@range@num}{\abx@range@prev}
       {\def\abx@range@hold{#1}%
        \numdef\abx@range@diff{\abx@range@diff+1}}
       {\usebibmacro{pageref:dump}%
        \ifnumgreater{\abx@range@last}{-1}
          {\printdelim{multilistdelim}}
          {}%
        \ifhyperref
          {\hyperlink{page.#1}{#1}}
          {#1}}%
     \edef\abx@range@prev{\abx@range@num}}
    {\usebibmacro{pageref:dump}%
     \ifnumgreater{\abx@range@last}{-1}
       {\printdelim{multilistdelim}}
       {}%
     \ifhyperref
       {\hyperlink{page.#1}{#1}}
       {#1}%
     \def\abx@range@prev{-1}}%
  \edef\abx@range@last{\abx@range@this}}

\newbibmacro*{pageref:dump}{%
  \ifnumgreater{\abx@range@diff}{0}
    {\ifcase\abx@pagerefstyle\relax % two
       \bibrangedash
       \ifhyperref
         {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
         {\abx@range@hold}%
     \or % three
       \ifnumless{\abx@range@diff}{2}
         {\printdelim{multilistdelim}}
         {\bibrangedash}%
       \ifhyperref
         {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
         {\abx@range@hold}%
     \or % two+
       \ifnumless{\abx@range@diff}{2}
         {\sqspace
          \ifhyperref
            {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
            {\bibstring{sequens}}}
         {\bibrangedash
          \ifhyperref
            {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
            {\abx@range@hold}}%
     \or % three+
       \ifnumless{\abx@range@diff}{2}
         {\sqspace
          \ifhyperref
            {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
            {\bibstring{sequens}}}
         {\ifnumless{\abx@range@diff}{3}
            {\sqspace
             \ifhyperref
               {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}}
               {\bibstring{sequentes}}}
            {\bibrangedash
             \ifhyperref
               {\hyperlink{page.\abx@range@hold}{\abx@range@hold}}
               {\abx@range@hold}}}%
     \else % all+
       \ifnumless{\abx@range@diff}{2}
         {\sqspace
          \ifhyperref
            {\hyperlink{page.\abx@range@hold}{\bibstring{sequens}}}
            {\bibstring{sequens}}}
         {\sqspace
          \ifhyperref
            {\hyperlink{page.\abx@range@hold}{\bibstring{sequentes}}}
            {\bibstring{sequentes}}}%
     \fi
     \def\abx@range@diff{0}}
    {}}

% ------------------------------------------------------------------
% NAME LIST FORMATS
% ------------------------------------------------------------------

% Formatting directives for name lists
% ------------------------------------------------------------------

\DeclareNameWrapperFormat{default}{#1}

\DeclareNameFormat{given-family}{%
  \ifgiveninits
    {\usebibmacro{name:given-family}
      {\namepartfamily}
      {\namepartgiveni}
      {\namepartprefix}
      {\namepartsuffix}}
    {\usebibmacro{name:given-family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}}%
  \usebibmacro{name:andothers}}

\DeprecateNameFormatWithReplacement{first-last}{given-family}

\DeclareNameFormat{family-given}{%
  \ifgiveninits
    {\usebibmacro{name:family-given}
      {\namepartfamily}
      {\namepartgiveni}
      {\namepartprefix}
      {\namepartsuffix}}
    {\usebibmacro{name:family-given}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}}%
  \usebibmacro{name:andothers}}

\DeprecateNameFormatWithReplacement{last-first}{family-given}


\DeclareNameFormat{family-given/given-family}{%
  \ifnumequal{\value{listcount}}{1}
    {\ifgiveninits
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:family-given}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}%
     \ifboolexpe{%
       test {\ifdefvoid\namepartgiven}
       and
       test {\ifdefvoid\namepartprefix}}
       {}
       {\usebibmacro{name:revsdelim}}}
    {\ifgiveninits
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiveni}
         {\namepartprefix}
         {\namepartsuffix}}
       {\usebibmacro{name:given-family}
         {\namepartfamily}
         {\namepartgiven}
         {\namepartprefix}
         {\namepartsuffix}}}%
  \usebibmacro{name:andothers}}

\DeprecateNameFormatWithReplacement{last-first/first-last}{family-given/given-family}

\DeclareNameFormat{initsonly}{%
  \usebibmacro{name:given-family}
    {\namepartfamilyi}
    {\namepartgiveni}
    {\namepartprefixi}
    {\namepartsuffixi}%
  \usebibmacro{name:andothers}}

% Fallback used by \printnames
\DeclareNameAlias{default}{given-family}

% Default used by \citename
\DeclareNameAlias{citename}{default}
\DeclareNameWrapperAlias{citename}{default}

% Used in some citations
\DeclareNameFormat{labelname}{%
  \ifcase\value{uniquename}%
    \usebibmacro{name:family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \or
    \ifuseprefix
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefix}
        {\namepartsuffixi}}
      {\usebibmacro{name:given-family}
        {\namepartfamily}
        {\namepartgiveni}
        {\namepartprefixi}
        {\namepartsuffixi}}%
  \or
    \usebibmacro{name:given-family}
      {\namepartfamily}
      {\namepartgiven}
      {\namepartprefix}
      {\namepartsuffix}%
  \fi
  \usebibmacro{name:andothers}}

% Used in the bibliography
\DeclareNameAlias{sortname}{family-given/given-family}

\DeclareNameAlias{author}{default}
\DeclareNameAlias{bookauthor}{author}
\DeclareNameAlias{editor}{default}
\DeclareNameAlias{editora}{editor}
\DeclareNameAlias{editorb}{editor}
\DeclareNameAlias{editorc}{editor}
\DeclareNameAlias{translator}{default}

\DeclareNameAlias{byauthor}{default}
\DeclareNameAlias{bybookauthor}{byauthor}
\DeclareNameAlias{byeditor}{default}
\DeclareNameAlias{byeditora}{byeditor}
\DeclareNameAlias{byeditorb}{byeditor}
\DeclareNameAlias{byeditorc}{byeditor}
\DeclareNameAlias{bytranslator}{default}

\DeclareNameAlias{withcommentator}{default}
\DeclareNameAlias{withannotator}{default}
\DeclareNameAlias{withintroduction}{default}
\DeclareNameAlias{withforeword}{default}
\DeclareNameAlias{withafterword}{default}

\DeclareNameWrapperAlias{author}{default}
\DeclareNameWrapperAlias{bookauthor}{author}
\DeclareNameWrapperAlias{editor}{default}
\DeclareNameWrapperAlias{editora}{editor}
\DeclareNameWrapperAlias{editorb}{editor}
\DeclareNameWrapperAlias{editorc}{editor}
\DeclareNameWrapperAlias{translator}{default}

\DeclareNameWrapperAlias{byauthor}{default}
\DeclareNameWrapperAlias{bybookauthor}{byauthor}
\DeclareNameWrapperAlias{byeditor}{default}
\DeclareNameWrapperAlias{byeditora}{byeditor}
\DeclareNameWrapperAlias{byeditorb}{byeditor}
\DeclareNameWrapperAlias{byeditorc}{byeditor}
\DeclareNameWrapperAlias{bytranslator}{default}

\DeclareNameWrapperAlias{withcommentator}{default}
\DeclareNameWrapperAlias{withannotator}{default}
\DeclareNameWrapperAlias{withintroduction}{default}
\DeclareNameWrapperAlias{withforeword}{default}
\DeclareNameWrapperAlias{withafterword}{default}

\DeclareFieldFormat{authortype}{#1}
\DeclareFieldFormat{editortype}{#1}
\DeclareFieldFormat{translatortype}{#1}

% Auxiliary macros for name formatting directives
% ------------------------------------------------------------------

\newcommand{\mkbibcompletename}[1]{#1}

\newcommand{\mkbibcompletenamefamily}{\mkbibcompletename}

\newbibmacro*{name:family}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \mkbibcompletenamefamily{%
       \ifdefvoid{#3}
         {}
         {\ifcapital
            {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
            {\mkbibnameprefix{#3}\isdot}%
          \ifprefchar{}{\bibnamedelimc}}%
       \mkbibnamefamily{#1}\isdot}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibcompletenamefamily{%
       \mkbibnamefamily{#1}\isdot}}}%
\newbibmacro*{name:last}[4]{% legacy alias
  \blx@warning@noline{%
    'name:last' is deprecated, please use 'name:family'}%
  \usebibmacro{name:family}{#1}{#2}{#3}{#4}}

\newcommand{\mkbibcompletenamegivenfamily}{\mkbibcompletename}

\newbibmacro*{name:given-family}[4]{%
  \usebibmacro{name:delim}{#2#3#1}%
  \usebibmacro{name:hook}{#2#3#1}%
  \mkbibcompletenamegivenfamily{%
    \ifdefvoid{#2}
      {}
      {\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
    \ifdefvoid{#3}
      {}
      {\mkbibnameprefix{#3}\isdot
       \ifprefchar
         {}
         {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
    \mkbibnamefamily{#1}\isdot
    \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}}
\newbibmacro*{name:first-last}[4]{% legacy alias
  \blx@warning@noline{%
    'name:first-last' is deprecated, please use 'name:given-family'}%
  \usebibmacro{name:given-family}{#1}{#2}{#3}{#4}}

\newcommand{\mkbibcompletenamefamilygiven}{\mkbibcompletename}

\newbibmacro*{name:family-given}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \mkbibcompletenamefamilygiven{%
       \ifdefvoid{#3}
         {}
         {\ifcapital
            {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
            {\mkbibnameprefix{#3}\isdot}%
          \ifprefchar{}{\bibnamedelimc}}%
       \mkbibnamefamily{#1}\isdot
       \ifdefvoid{#4}
         {}
         {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
       \ifdefvoid{#2}
         {}
         {\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibcompletenamefamilygiven{%
       \mkbibnamefamily{#1}\isdot
       \ifdefvoid{#4}
         {}
         {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
       \ifboolexpe{%
         test {\ifdefvoid{#2}}
         and
         test {\ifdefvoid{#3}}}
         {}
         {\revsdnamepunct}%
       \ifdefvoid{#2}
         {}
         {\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
       \ifdefvoid{#3}
         {}
         {\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}}
\newbibmacro*{name:last-first}[4]{% legacy alias
  \blx@warning@noline{%
    'name:last-first' is deprecated, please use 'name:family-given'}%
  \usebibmacro{name:family-given}{#1}{#2}{#3}{#4}}

\newbibmacro*{name:hook}[1]{%
  \ifnumequal{\value{listcount}}{1}
    {\lbx@initnamehook{#1}}
    {}}

\newbibmacro*{name:delim}[1]{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\ifboolexpr{
       test {\ifnumless{\value{listcount}}{\value{liststop}}}
       or
       test \ifmorenames
     }
       {\printdelim{multinamedelim}}
       {\lbx@finalnamedelim{#1}}}
    {}}

\newbibmacro*{name:revsdelim}{%
  \ifboolexpr{
    (
      test {\ifnumequal{\value{liststop}}{1}}
      and
      test \ifmorenames
    )
    or
    test {\ifnumequal{\value{liststop}}{2}}
  }
    {\printdelim{revsdnamedelim}}
    {}}

\newbibmacro*{name:andothers}{%
  \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\ifnumgreater{\value{liststop}}{1}
       {\finalandcomma}
       {}%
     \printdelim{andothersdelim}\bibstring{andothers}}
    {}}

% ------------------------------------------------------------------
% INDEX FORMATS FOR FIELDS (#1 is the value of the field)
% ------------------------------------------------------------------

% There is no need to test if a field to be indexed is empty because
% \indexfield performs this test implicitly.

% The fallback used by \indexfield

\DeclareIndexFieldFormat{default}{\index{#1}}

% Used in the bibliography and in citations

\DeclareIndexFieldFormat{indextitle}{%
  \usebibmacro{index:title}{\index}{#1}}

\newbibmacro*{index:title}[2]{%
  \usebibmacro{index:field}{#1}{\thefield{indexsorttitle}}{\emph{#2}}}

\newbibmacro*{index:field}[3]{%
  \usebibmacro{index:entry}{#1}{\mkbibindexfield{#2}{#3}}}

% Auxiliary macros for field indexing directives
% ------------------------------------------------------------------

\newbibmacro*{index:entry}[2]{%
  \begingroup
  \protected@edef\theindexentry{\unexpanded{#1}{#2}}%
  \theindexentry
  \endgroup}

\newcommand*{\mkbibindexfield}[2]{\mkbibindexentry{#1}{\unexpanded{#2}}}
\newcommand*{\mkbibindexentry}[2]{#1\actualoperator#2}

% ------------------------------------------------------------------
% INDEX FORMATS FOR LITERAL LISTS (#1 is the current item)
% ------------------------------------------------------------------

% The fallback used by \indexlist

\DeclareIndexListFormat{default}{\index{#1}}

% ------------------------------------------------------------------
% INDEX FORMATS FOR NAME LISTS
% ------------------------------------------------------------------

% Indexing directives for name lists
% ------------------------------------------------------------------

% The fallback used by \indexnames

\DeclareIndexNameFormat{default}{%
  \usebibmacro{index:name}
    {\index}
    {\namepartfamily}
    {\namepartgiven}
    {\namepartprefix}
    {\namepartsuffix}}

% Used in citations

\DeclareIndexNameAlias{labelname}{default}

% Used in the bibliography

\DeclareIndexNameAlias{author}{default}
\DeclareIndexNameAlias{editor}{default}
\DeclareIndexNameAlias{bookauthor}{default}

% Auxiliary macros for name indexing directives
% ------------------------------------------------------------------

% When generating an index entry, we need to test which parts of a
% name are actually available to prevent spurious punctuation and
% spaces.
%
% Note that the standard LaTeX \index command simply writes its
% argument to the .idx file without preventing expansion. This means
% that all \ifblank etc. tests are expanded on the way and will not end
% up in the index. The index package, however, prevents expansion.
% This would lead to \ifblank etc. ending up in the .idx file. To avoid
% that, we preprocess the index entry inside an \edef. We use
% \unexpanded to protect the \index command and the actual data from
% expansion. This definition will work with both index.sty and the
% standard indexing facilities.
%
% We also use \ifuseprefix to ensure that the name prefix is handled
% properly. \actualoperator is the so-called actual operator, as
% defined by the 'actual' specifier in the .ist file. The makeindex
% program will use the part preceding the \actualoperator
% delimiter for sorting. The part after the delimiter is used as the
% index is printed. Note that this is not specific to biblatex, see
% the makeindex documentation for details.

\newcommand*{\actualoperator}{@}
\newcommand*{\subentryoperator}{!}

\newbibmacro*{index:name}[5]{%
  \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}}

% {<family name>}{<given name>}{<prefix>}{<suffix>}
\newcommand*{\mkbibindexname}[4]{%
  \ifuseprefix
    {\ifdefvoid{#3}{}{#3 }%
     \@firstofone #1% remove spurious braces
     \ifdefvoid{#4}{}{ #4}%
     \ifdefvoid{#2}{}{, #2}%
     \ifdefvoid{#3}{}{%
       \actualoperator
       \MakeCapital{#3} %
       #1%
       \ifdefvoid{#4}{}{ #4}%
       \ifdefvoid{#2}{}{, #2}}}
    {\@firstofone #1% remove spurious braces
     \ifdefvoid{#4}{}{ #4}%
     \ifboolexpe{%
       test {\ifdefvoid{#2}}
       and
       test {\ifdefvoid{#3}}}
       {}
       {,}%
     \ifdefvoid{#2}{}{ #2}%
     \ifdefvoid{#3}{}{ #3}}}

% {<control sequence>}{<control sequence>}
\newcommand*{\mkbibindexsubentry}[2]{%
  \ifblank{#1}{}{\subentryoperator#1\actualoperator#2}}

% Additional macros with subentries

\newbibmacro*{index:name:field}[6]{%
  \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5}
    {\thefield{#6}}{\csfield{#6}}}

\newbibmacro*{index:name:title}[5]{%
  \usebibmacro{index:name:subentry}{#1}{#2}{#3}{#4}{#5}
    {\thefield{indexsorttitle}}{\emph{\csfield{indextitle}}}}

\newbibmacro*{index:name:subentry}[7]{%
  \usebibmacro{index:entry}{#1}{%
    \mkbibindexname{#2}{#3}{#4}{#5}\mkbibindexsubentry{#6}{#7}}}

% ------------------------------------------------------------------
% datafieldsets
% ------------------------------------------------------------------

% Some defaults for backwards compat for the biber nosort option
\DeclareDatafieldSet{setnames}{
  \member[datatype=name, fieldtype=list]
}

\DeclareDatafieldSet{settitles}{
  \member[field=title]
  \member[field=booktitle]
  \member[field=eventtitle]
  \member[field=issuetitle]
  \member[field=journaltitle]
  \member[field=maintitle]
  \member[field=origtitle]
}

% ------------------------------------------------------------------
% Driver sourcemaps
% ------------------------------------------------------------------

\DeclareDriverSourcemap[datatype=bibtex]{
  \map{
    \step[fieldset=day, null]
  }
  \map{
    \step[typesource=conference, typetarget=inproceedings]
    \step[typesource=electronic, typetarget=online]
    \step[typesource=www,        typetarget=online]
  }
  \map{
    \step[typesource=mastersthesis, typetarget=thesis, final]
    \step[fieldset=type,            fieldvalue=mathesis]
  }
  \map{
    \step[typesource=phdthesis, typetarget=thesis, final]
    \step[fieldset=type,        fieldvalue=phdthesis]
  }
  \map{
    \step[typesource=techreport, typetarget=report, final]
    \step[fieldset=type,         fieldvalue=techreport]
  }
  \map{
    \step[fieldsource=hyphenation,   fieldtarget=langid]
    \step[fieldsource=address,       fieldtarget=location]
    \step[fieldsource=school,        fieldtarget=institution]
    \step[fieldsource=annote,        fieldtarget=annotation]
    \step[fieldsource=archiveprefix, fieldtarget=eprinttype]
    \step[fieldsource=journal,       fieldtarget=journaltitle]
    \step[fieldsource=primaryclass,  fieldtarget=eprintclass]
    \step[fieldsource=key,           fieldtarget=sortkey]
    \step[fieldsource=pdf,           fieldtarget=file]
  }
}

% ------------------------------------------------------------------
% META-FIELDS
% ------------------------------------------------------------------

\DeclareLabelname{%
  \field{shortauthor}
  \field{author}
  \field{shorteditor}
  \field{editor}
  \field{translator}
}

\DeclareLabeldate{%
  \field{date}
  \field{year}
  \field{eventdate}
  \field{origdate}
  \field{urldate}
  \literal{nodate}
}

\DeclareExtradate{%
  \scope{
    \field{labelyear}
    \field{year}
  }
}

\DeclareExtradateContext{%
  \field{labelname}
  \field{labeltitle}
}

\DeclareLabeltitle{%
  \field{shorttitle}
  \field{title}
  \field{maintitle}
}

% ------------------------------------------------------------------
% LABELALPHA TEMPLATE
% ------------------------------------------------------------------

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=3,strside=left,ifnames=1]{labelname}
    \field[strwidth=1,strside=left]{labelname}
  }
  \labelelement{
    \field[strwidth=2,strside=right]{year}
  }
}

% ------------------------------------------------------------------
% LABELALPHA NAME TEMPLATE
% ------------------------------------------------------------------

\DeclareLabelalphaNameTemplate{
  \namepart[use=true, pre=true, strwidth=1, compound=true]{prefix}
  \namepart{family}
}

% ------------------------------------------------------------------
% UNIQUENAME TEMPLATE
% ------------------------------------------------------------------

\DeclareUniquenameTemplate{
  \namepart[use=true, base=true]{prefix}
  \namepart[base=true]{family}
  \namepart{given}
}

% ------------------------------------------------------------------
% NAMEHASH TEMPLATE
% ------------------------------------------------------------------

\DeclareNamehashTemplate{
  \namepart[hashscope=full]{family}
  \namepart[hashscope=full]{given}
  \namepart[hashscope=full]{prefix}
  \namepart[hashscope=full]{suffix}
}

% ------------------------------------------------------------------
% SORTING
% ------------------------------------------------------------------

\DeclareSortingNamekeyTemplate{
  \keypart{
    \namepart[use=true]{prefix}
    \namepart{family}
  }
  \keypart{
    \namepart{given}
  }
  \keypart{
    \namepart{suffix}
  }
  \keypart{
    \namepart[use=false]{prefix}
  }
}

\DeclarePresort{mm}

\DeclareSortingTemplate{shorthand}{
  \sort[final]{
    \field{sortshorthand}
  }
  \sort{
    \field{shorthand}
  }
}

\DeclareSortingTemplate{none}{
  \sort{\citeorder}
  \sort{\intciteorder}
}

\DeclareSortingTemplate{count}{
  \sort[direction=descending]{\citecount}
}

\DeclareSortingTemplate{debug}{
  \sort{
    \field{entrykey}
  }
}

\DeclareSortingTemplate{nty}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\DeclareSortingTemplate{ntd}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{day}
  }
  \sort{
    \field{hour}
  }
  \sort{
    \field{minute}
  }
  \sort{
    \field{second}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\DeclareSortingTemplate{nyt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\DeclareSortingTemplate{ndt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{day}
  }
  \sort{
    \field{hour}
  }
  \sort{
    \field{minute}
  }
  \sort{
    \field{second}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\DeclareSortingTemplate{nyvt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{ndvt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{day}
  }
  \sort{
    \field{hour}
  }
  \sort{
    \field{minute}
  }
  \sort{
    \field{second}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{anyt}{
  \sort{
    \field{presort}
  }
  \sort{
    \field{labelalpha}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\DeclareSortingTemplate{andt}{
  \sort{
    \field{presort}
  }
  \sort{
    \field{labelalpha}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{day}
  }
  \sort{
    \field{hour}
  }
  \sort{
    \field{minute}
  }
  \sort{
    \field{second}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
}

\DeclareSortingTemplate{anyvt}{
  \sort{
    \field{presort}
  }
  \sort{
    \field{labelalpha}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{andvt}{
  \sort{
    \field{presort}
  }
  \sort{
    \field{labelalpha}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sortyear}
    \field{year}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{day}
  }
  \sort{
    \field{hour}
  }
  \sort{
    \field{minute}
  }
  \sort{
    \field{second}
  }
  \sort{
    \field{volume}
    \literal{0}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{ynt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortyear}
    \field{year}
    \literal{9999}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{dnt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort{
    \field{sortyear}
    \field{year}
    \literal{9999}
  }
  \sort{
    \field{month}
  }
  \sort{
    \field{day}
  }
  \sort{
    \field{hour}
  }
  \sort{
    \field{minute}
  }
  \sort{
    \field{second}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{ydnt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort[direction=descending]{
    \field{sortyear}
    \field{year}
    \literal{9999}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

\DeclareSortingTemplate{ddnt}{
  \sort{
    \field{presort}
  }
  \sort[final]{
    \field{sortkey}
  }
  \sort[direction=descending]{
    \field{sortyear}
    \field{year}
    \literal{9999}
  }
  \sort[direction=descending]{
    \field{month}
  }
  \sort[direction=descending]{
    \field{day}
  }
  \sort[direction=descending]{
    \field{hour}
  }
  \sort[direction=descending]{
    \field{minute}
  }
  \sort[direction=descending]{
    \field{second}
  }
  \sort{
    \field{sortname}
    \field{author}
    \field{editor}
    \field{translator}
    \field{sorttitle}
    \field{title}
  }
  \sort{
    \field{sorttitle}
    \field{title}
  }
}

% ------------------------------------------------------------------
% DATA INHERITANCE (CROSSREF)
% ------------------------------------------------------------------

\DefaultInheritance{all=true,override=false}

\DeclareDataInheritance{mvbook,book}{inbook,bookinbook,suppbook}{%
  \inherit{author}{author}
  \inherit{author}{bookauthor}
}

\DeclareDataInheritance{mvbook}{book,inbook,bookinbook,suppbook}{%
  \inherit{title}{maintitle}
  \inherit{subtitle}{mainsubtitle}
  \inherit{titleaddon}{maintitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{mvcollection,mvreference}
{collection,reference,incollection,inreference,suppcollection}{%
  \inherit{title}{maintitle}
  \inherit{subtitle}{mainsubtitle}
  \inherit{titleaddon}{maintitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{mvproceedings}{proceedings,inproceedings}{%
  \inherit{title}{maintitle}
  \inherit{subtitle}{mainsubtitle}
  \inherit{titleaddon}{maintitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{book}{inbook,bookinbook,suppbook}{%
  \inherit{title}{booktitle}
  \inherit{subtitle}{booksubtitle}
  \inherit{titleaddon}{booktitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{collection,reference}
{incollection,inreference,suppcollection}{%
  \inherit{title}{booktitle}
  \inherit{subtitle}{booksubtitle}
  \inherit{titleaddon}{booktitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{proceedings}{inproceedings}{%
  \inherit{title}{booktitle}
  \inherit{subtitle}{booksubtitle}
  \inherit{titleaddon}{booktitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{periodical}{article,suppperiodical}{%
  \inherit{title}{journaltitle}
  \inherit{subtitle}{journalsubtitle}
  \inherit{titleaddon}{journaltitleaddon}
  \noinherit{shorttitle}
  \noinherit{sorttitle}
  \noinherit{indextitle}
  \noinherit{indexsorttitle}
}

\DeclareDataInheritance{*}{*}{%
  \noinherit{ids}
  \noinherit{crossref}
  \noinherit{xref}
  \noinherit{entryset}
  \noinherit{entrysubtype}
  \noinherit{execute}
  \noinherit{label}
  \noinherit{options}
  \noinherit{presort}
  \noinherit{related}
  \noinherit{relatedoptions}
  \noinherit{relatedstring}
  \noinherit{relatedtype}
  \noinherit{shorthand}
  \noinherit{shorthandintro}
  \noinherit{sortkey}
}

% ------------------------------------------------------------------
% MACROS FOR LBX FILES
% ------------------------------------------------------------------

\newcommand*{\lbx@initnamehook}[1]{}
\newcommand*{\lbx@inittitlehook}[1]{}
\newcommand*{\lbx@finalnamedelim}[1]{\printdelim{finalnamedelim}}
\newcommand*{\lbx@finallistdelim}[1]{\printdelim{finallistdelim}}

\newcommand*{\lbx@lfromlang}{%
  \iflistundef{origlanguage}
    {\unspace}
    {\printlist[lfromoriglanguage]{origlanguage}}}

\newcommand*{\lbx@sfromlang}{%
  \iflistundef{origlanguage}
    {\unspace}
    {\printlist[sfromoriglanguage]{origlanguage}}}

% ------------------------------------------------------------------
% MISCELLANEOUS
% ------------------------------------------------------------------

% ordinals

\newcommand*{\mkbibordedition}{\mkbibordinal}
\newcommand*{\mkbibordseries}{\mkbibordinal}

% american

\newrobustcmd*{\uspunctuation}{%
  \DeclareQuotePunctuation{.,}%
  \DeclarePunctuationPairs{comma}{*}}
\newrobustcmd*{\stdpunctuation}{%
  \DeclareQuotePunctuation{}%
  \DeclarePunctuationPairs{comma}{*!?}}

% catalan and french

\newtoggle{smartof}
\newrobustcmd*{\smartof}{\global\toggletrue{smartof}}
\newrobustcmd*{\forceD}[1]{#1}
\newrobustcmd*{\forceDE}[1]{#1}

\AtBeginDocument{%
  \@ifpackageloaded{babel}
    {\ifdef\AutoSpaceBeforeFDP
       {\newrobustcmd*{\EnsureAutoSpaceBeforeFDP}{%
          \iflanguage{french}
            {\AutoSpaceBeforeFDP}
            {}}%
        \appto\bibsetup{\EnsureAutoSpaceBeforeFDP}%
        \appto\citesetup{\EnsureAutoSpaceBeforeFDP}}
       {}}
    {}}

% spanish

\newcounter{smartand}
\defcounter{smartand}{1}
\newrobustcmd*{\forceY}[1]{#1}
\newrobustcmd*{\forceE}[1]{#1}

% ------------------------------------------------------------------
% PREDEFINED HEADINGS
% ------------------------------------------------------------------

\newcommand*{\abx@classtype}{0}
\@ifclassloaded{article}
 {}
 {\@ifclassloaded{book}
   {\def\abx@classtype{1}}
   {\@ifclassloaded{report}
     {\def\abx@classtype{1}}
     {\@ifclassloaded{scrartcl}
        {\def\abx@classtype{2}}
        {\@ifclassloaded{scrbook}
           {\def\abx@classtype{3}}
           {\@ifclassloaded{scrreprt}
              {\def\abx@classtype{3}}
              {\@ifclassloaded{memoir}
                {\ifbool{artopt}
                   {\def\abx@classtype{4}}
                   {\def\abx@classtype{5}}}
                {\ifundef\chapter
                   {}
                   {\def\abx@classtype{1}}}}}}}}}

\defbibheading{none}{}

\def\abx@MakeMarkcase{\MakeUppercase}
\AtBeginDocument{%
  \ifcsundef{MakeMarkcase}{}{\def\abx@MakeMarkcase{\MakeMarkcase}}}

\ifcase\abx@classtype\relax % article
  \defbibheading{bibliography}[\refname]{%
    \section*{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{biblist}[\biblistname]{%
    \section*{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{bibintoc}[\refname]{%
    \section*{#1}%
    \addcontentsline{toc}{section}{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{biblistintoc}[\biblistname]{%
    \section*{#1}%
    \addcontentsline{toc}{section}{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{bibnumbered}[\refname]{%
    \section{#1}}
  \defbibheading{biblistnumbered}[\biblistname]{%
    \section{#1}}
  \defbibheading{subbibliography}[\refname]{%
    \subsection*{#1}}
  \defbibheading{subbibintoc}[\refname]{%
    \subsection*{#1}%
    \addcontentsline{toc}{subsection}{#1}}
  \defbibheading{subbibnumbered}[\refname]{%
    \subsection{#1}}

\or % book/report
  \defbibheading{bibliography}[\bibname]{%
    \chapter*{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{biblist}[\biblistname]{%
    \chapter*{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{bibintoc}[\bibname]{%
    \chapter*{#1}%
    \addcontentsline{toc}{chapter}{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{biblistintoc}[\biblistname]{%
    \chapter*{#1}%
    \addcontentsline{toc}{chapter}{#1}%
    \@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
  \defbibheading{bibnumbered}[\bibname]{%
    \chapter{#1}}
  \defbibheading{biblistnumbered}[\biblistname]{%
    \chapter{#1}}
  \defbibheading{subbibliography}[\refname]{%
    \section*{#1}%
    \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi}
  \defbibheading{subbibintoc}[\refname]{%
    \section*{#1}%
    \addcontentsline{toc}{section}{#1}%
    \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi}
  \defbibheading{subbibnumbered}[\refname]{%
    \section{#1}}

\or % scrartcl
  \defbibheading{bibliography}[\refname]{%
    \ifcsundef{bibliography@heading}
      {\ifkomabibtotocnumbered
         {\section{#1}}
         {\ifkomabibtotoc
            {\addsec{#1}}
            {\section*{#1}%
             \ifcsundef{@mkdouble}
               {\@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
               {\@mkdouble{\abx@MakeMarkcase{#1}}}}}}
      {\bibliography@heading{#1}}}
  \defbibheading{biblist}[\biblistname]{%
    \ifcsundef{bibliography@heading}
      {\ifkomabibtotocnumbered
         {\section{#1}}
         {\ifkomabibtotoc
            {\addsec{#1}}
            {\section*{#1}%
             \ifcsundef{@mkdouble}
               {\@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
               {\@mkdouble{\abx@MakeMarkcase{#1}}}}}}
      {\bibliography@heading{#1}}}
  \defbibheading{bibintoc}[\refname]{%
    \addsec{#1}}
  \defbibheading{biblistintoc}[\biblistname]{%
    \addsec{#1}}
  \defbibheading{bibnumbered}[\refname]{%
    \section{#1}}
  \defbibheading{biblistnumbered}[\biblistname]{%
    \section{#1}}
  \defbibheading{subbibliography}[\refname]{%
    \subsection*{#1}%
    \ifcsundef{@mkright}
      {\ifx\@mkboth\@gobbletwo\else\markright{\abx@MakeMarkcase{#1}}\fi}
      {\@mkright{\abx@MakeMarkcase{#1}}}}
  \defbibheading{subbibintoc}[\refname]{%
    \subsection*{#1}%
    \addcontentsline{toc}{subsection}{#1}%
    \ifcsundef{@mkright}
      {\ifx\@mkboth\@gobbletwo\else\markright{\abx@MakeMarkcase{#1}}\fi}
      {\@mkright{\abx@MakeMarkcase{#1}}}}
  \defbibheading{subbibnumbered}[\refname]{%
    \subsection{#1}}

\or % scrbook/scrreprt
  \defbibheading{bibliography}[\bibname]{%
    \ifcsundef{bibliography@heading}
      {\ifkomabibtotocnumbered
         {\chapter{#1}}
         {\ifkomabibtotoc
            {\addchap{#1}}
            {\chapter*{#1}
             \ifcsundef{@mkdouble}
               {\@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
               {\@mkdouble{\abx@MakeMarkcase{#1}}}}}}
      {\bibliography@heading{#1}}}
  \defbibheading{biblist}[\biblistname]{%
    \ifcsundef{bibliography@heading}
      {\ifkomabibtotocnumbered
         {\chapter{#1}}
         {\ifkomabibtotoc
            {\addchap{#1}}
            {\chapter*{#1}
             \ifcsundef{@mkdouble}
               {\@mkboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}}
               {\@mkdouble{\abx@MakeMarkcase{#1}}}}}}
      {\bibliography@heading{#1}}}
  \defbibheading{bibintoc}[\bibname]{%
    \addchap{#1}}
  \defbibheading{biblistintoc}[\biblistname]{%
    \addchap{#1}}
  \defbibheading{bibnumbered}[\bibname]{%
    \chapter{#1}}
  \defbibheading{biblistnumbered}[\biblistname]{%
    \chapter{#1}}
  \defbibheading{subbibliography}[\refname]{%
    \section*{#1}%
    \ifcsundef{@mkright}
      {\ifx\@mkboth\@gobbletwo\else\markright{\abx@MakeMarkcase{#1}}\fi}
      {\@mkright{\abx@MakeMarkcase{#1}}}}
  \defbibheading{subbibintoc}[\refname]{%
    \addsec{#1}}
  \defbibheading{subbibnumbered}[\refname]{%
    \section{#1}}

\or % memoir (article)
  \ifcsundef{memUChead}{}{\def\abx@MakeMarkcase{\memUChead}}%
  \defbibheading{bibliography}[\refname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \ifmemoirbibintoc
      {\phantomsection
       \addcontentsline{toc}{chapter}{#1}}
      {}}
  \defbibheading{biblist}[\biblistname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \ifmemoirbibintoc
      {\phantomsection
       \addcontentsline{toc}{chapter}{#1}}
      {}}
  \defbibheading{bibintoc}[\refname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \phantomsection
    \addcontentsline{toc}{chapter}{#1}}
  \defbibheading{biblistintoc}[\biblistname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \phantomsection
    \addcontentsline{toc}{chapter}{#1}}
  \defbibheading{bibnumbered}[\refname]{%
    \chapter{#1}}
  \defbibheading{biblistnumbered}[\biblistname]{%
    \chapter{#1}}
  \defbibheading{subbibliography}[\refname]{%
    \section*{#1}%
    \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi
    \ifmemoirbibintoc
      {\phantomsection
       \addcontentsline{toc}{section}{#1}}
      {}}
  \defbibheading{subbibintoc}[\refname]{%
    \section*{#1}%
    \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi
    \phantomsection
    \addcontentsline{toc}{section}{#1}}
  \defbibheading{subbibnumbered}[\refname]{%
    \section{#1}}

\or % memoir (book)
  \ifcsundef{memUChead}{}{\def\abx@MakeMarkcase{\memUChead}}%
  \defbibheading{bibliography}[\bibname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \ifmemoirbibintoc
      {\phantomsection
       \addcontentsline{toc}{chapter}{#1}}
      {}}
  \defbibheading{biblist}[\biblistname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \ifmemoirbibintoc
      {\phantomsection
       \addcontentsline{toc}{chapter}{#1}}
      {}}
  \defbibheading{bibintoc}[\bibname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \phantomsection
    \addcontentsline{toc}{chapter}{#1}}
  \defbibheading{biblistintoc}[\biblistname]{%
    \chapter*{#1}%
    \if@twoside
      \markboth{\abx@MakeMarkcase{#1}}{\abx@MakeMarkcase{#1}}%
    \else
      \markright{\abx@MakeMarkcase{#1}}%
    \fi
    \phantomsection
    \addcontentsline{toc}{chapter}{#1}}
  \defbibheading{bibnumbered}[\bibname]{%
    \chapter{#1}}
  \defbibheading{biblistnumbered}[\biblistname]{%
    \chapter{#1}}
  \defbibheading{subbibliography}[\refname]{%
    \section*{#1}%
    \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi
    \ifmemoirbibintoc
      {\phantomsection
       \addcontentsline{toc}{section}{#1}}
      {}}
  \defbibheading{subbibintoc}[\refname]{%
    \section*{#1}%
    \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi
    \phantomsection
    \addcontentsline{toc}{section}{#1}}
  \defbibheading{subbibnumbered}[\refname]{%
    \section{#1}}

\fi

% ------------------------------------------------------------------
% GENERIC CITATION COMMANDS
% ------------------------------------------------------------------

\DeclareCiteCommand{\fullcite}
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{default}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\footfullcite}[\mkbibfootnote]
  {\usebibmacro{prenote}}
  {\usedriver
     {\DeclareNameAlias{sortname}{default}}
     {\thefield{entrytype}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\citeauthor}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \printnames{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\citeauthor}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexnames{labelname}}
     {}%
   \printnames[][1-1]{labelname}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\citetitle}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexfield{indextitle}}
     {}%
   \printfield[citetitle]{labeltitle}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\citetitle}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\ifciteindex
     {\indexfield{indextitle}}
     {}%
   \printfield[citetitle]{title}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\citeyear}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printfield{year}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\citeyear}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printfield{year}\printfield{extradate}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\citedate}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printdate}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand*{\citedate}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printdateextra}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\citeurl}
  {\boolfalse{citetracker}%
   \boolfalse{pagetracker}%
   \usebibmacro{prenote}}
  {\printfield[citeurl]{url}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\DeclareCiteCommand{\notecite}
  {\printfield{prenote}%
   \setunit*{\printdelim{prenotedelim}}}
  {}
  {}
  {\printfield{postnote}}

\DeclareCiteCommand{\pnotecite}[\mkbibparens]
  {\printfield{prenote}%
   \setunit*{\printdelim{prenotedelim}}}
  {}
  {}
  {\printfield{postnote}}

\DeclareCiteCommand{\fnotecite}[\mkbibfootnote]
  {\printfield{prenote}%
   \setunit*{\printdelim{prenotedelim}}}
  {}
  {}
  {\printfield{postnote}}

\newrobustcmd*{\volcite}{\volcitecmd\cite}
\newrobustcmd*{\pvolcite}{\volcitecmd\parencite}
\newrobustcmd*{\fvolcite}{\volcitecmd\footcite}
\newrobustcmd*{\ftvolcite}{\volcitecmd\footcitetext}
\newrobustcmd*{\svolcite}{\volcitecmd\smartcite}
\newrobustcmd*{\tvolcite}{\volcitecmd\textcite}
\newrobustcmd*{\avolcite}{\volcitecmd\autocite}

\newrobustcmd*{\volcites}{\multivolcitecmd\cites}
\newrobustcmd*{\pvolcites}{\multivolcitecmd\parencites}
\newrobustcmd*{\fvolcites}{\multivolcitecmd\footcites}
\newrobustcmd*{\ftvolcites}{\multivolcitecmd\footcitetexts}
\newrobustcmd*{\svolcites}{\multivolcitecmd\smartcites}
\newrobustcmd*{\tvolcites}{\multivolcitecmd\textcites}
\newrobustcmd*{\avolcites}{\multivolcitecmd\autocites}

\newrobustcmd*{\Cite}{\bibsentence\cite}
\newrobustcmd*{\Parencite}{\bibsentence\parencite}
\newrobustcmd*{\Footcite}{\footcite}
\newrobustcmd*{\Footcitetext}{\footcitetext}
\newrobustcmd*{\Smartcite}{\bibsentence\smartcite}
\newrobustcmd*{\Textcite}{\bibsentence\textcite}
\newrobustcmd*{\Citeauthor}{%
  \@ifstar{\bibsentence\citeauthor*}{\bibsentence\citeauthor}}
\newrobustcmd*{\Citetitle}{\bibsentence\citetitle}

\newrobustcmd*{\Volcite}{\volcitecmd\Cite}
\newrobustcmd*{\Pvolcite}{\volcitecmd\Parencite}
\newrobustcmd*{\Fvolcite}{\volcitecmd\Footcite}
\newrobustcmd*{\Ftvolcite}{\volcitecmd\Footcitetext}
\newrobustcmd*{\Svolcite}{\volcitecmd\Smartcite}
\newrobustcmd*{\Tvolcite}{\volcitecmd\Textcite}
\newrobustcmd*{\Avolcite}{\volcitecmd\Autocite}

\newrobustcmd*{\Volcites}{\multivolcitecmd\Cites}
\newrobustcmd*{\Pvolcites}{\multivolcitecmd\Parencites}
\newrobustcmd*{\Fvolcites}{\multivolcitecmd\Footcites}
\newrobustcmd*{\Ftvolcites}{\multivolcitecmd\Footcitetexts}
\newrobustcmd*{\Svolcites}{\multivolcitecmd\Smartcites}
\newrobustcmd*{\Tvolcites}{\multivolcitecmd\Textcites}
\newrobustcmd*{\Avolcites}{\multivolcitecmd\Autocites}

\newrobustcmd*{\Notecite}{\bibsentence\notecite}
\newrobustcmd*{\Pnotecite}{\bibsentence\pnotecite}
\newrobustcmd*{\Fnotecite}{\fnotecite}

\DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim}
\DeclareMultiCiteCommand{\parencites}[\mkbibparens]{\parencite}{\multicitedelim}
\DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]{\footcite}{\multicitedelim}
\DeclareMultiCiteCommand{\footcitetexts}[\mkbibfootnotetext]
  {\footcitetext}{\multicitedelim}
\DeclareMultiCiteCommand{\smartcites}[\iffootnote\mkbibparens\mkbibfootnote]
  {\smartcite}{\multicitedelim}
\DeclareMultiCiteCommand{\supercites}[\mkbibsuperscript]
  {\supercite}{\supercitedelim}
\DeclareMultiCiteCommand{\textcites}{\textcite}{\multicitedelim}

\newrobustcmd*{\Cites}{\bibsentence\cites}
\newrobustcmd*{\Parencites}{\bibsentence\parencites}
\newrobustcmd*{\Footcites}{\footcites}
\newrobustcmd*{\Footcitetexts}{\footcitetexts}
\newrobustcmd*{\Smartcites}{\bibsentence\smartcites}
\newrobustcmd*{\Textcites}{\bibsentence\textcites}

\DeclareAutoCiteCommand{plain}{\cite}{\cites}
\DeclareAutoCiteCommand{inline}{\parencite}{\parencites}
%\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites}
\DeclareAutoCiteCommand{footnote}[f]{\smartcite}{\smartcites}
\DeclareAutoCiteCommand{superscript}[l]{\supercite}{\supercites}

\newrobustcmd*{\Autocite}{\bibsentence\autocite}
\newrobustcmd*{\Autocites}{\bibsentence\autocites}

% ------------------------------------------------------------------
% GENERIC CITATION MACROS
% ------------------------------------------------------------------

\newbibmacro*{citeindex}{%
  \ifciteindex
    {\indexnames{labelname}%
     \indexfield{indextitle}}
    {}}

\newbibmacro*{shorthandintro}{%
  \iffieldundef{shorthandintro}
    {\iffieldundef{shorthand}
       {}
       {\setunit{\addspace}%
        \printtext[parens]{%
          \bibstring{citedas}\space
          \printfield{shorthand}}}}
    {\setunit{\addspace}%
     \printtext[parens]{\printfield{shorthandintro}}}}

% citation commands

\newbibmacro*{prenote}{%
  \iffieldundef{prenote}
    {}
    {\printfield{prenote}%
     \setunit{\printdelim{prenotedelim}}}}

\newbibmacro*{postnote}{%
  \iffieldundef{postnote}
    {}
    {\setunit{\printdelim{postnotedelim}}%
     \printfield{postnote}}}

% multicite commands

\newbibmacro*{multiprenote}{%
  \iffieldundef{multiprenote}
    {}
    {\printfield{multiprenote}%
     \printdelim{multiprenotedelim}}}

\newbibmacro*{multipostnote}{%
  \iffieldundef{multipostnote}
    {}
    {\printdelim{multipostnotedelim}%
     \printfield{multipostnote}}}

% ------------------------------------------------------------------
% GENERIC BIBLIOGRAPHY MACROS
% ------------------------------------------------------------------

\newbibmacro*{bibindex}{%
  \ifbibindex
    {\indexnames{labelname}%
     \indexfield{indextitle}}
    {}}

\newbibmacro*{author/editor}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\usebibmacro{editor}}}

\newbibmacro*{author/editor+others}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\usebibmacro{editor+others}}}

\newbibmacro*{author/translator}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\usebibmacro{translator}}}

\newbibmacro*{author/translator+others}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\usebibmacro{translator+others}}}

\newbibmacro*{author/editor/translator}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\ifboolexpr{
       test \ifuseeditor
       and
       not test {\ifnameundef{editor}}
     }
       {\usebibmacro{editor}}
       {\usebibmacro{translator}}}}

\newbibmacro*{author/editor+others/translator+others}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\ifboolexpr{
       test \ifuseeditor
       and
       not test {\ifnameundef{editor}}
     }
       {\usebibmacro{editor+others}}
       {\usebibmacro{translator+others}}}}

\newbibmacro*{author}{%
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\printnames{author}%
     \iffieldundef{authortype}
       {}
       {\setunit{\printdelim{authortypedelim}}%
        \usebibmacro{authorstrg}}}
    {}}

\newbibmacro*{editor}{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{editorstrg}%
     \clearname{editor}}
    {}}

\newbibmacro*{editor+others}{%
  \ifboolexpr{
    test \ifuseeditor
    and
    not test {\ifnameundef{editor}}
  }
    {\printnames{editor}%
     \setunit{\printdelim{editortypedelim}}%
     \usebibmacro{editor+othersstrg}%
     \clearname{editor}}
    {}}

\newbibmacro*{translator}{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\printdelim{translatortypedelim}}%
     \usebibmacro{translatorstrg}%
     \clearname{translator}}
    {}}

\newbibmacro*{translator+others}{%
  \ifboolexpr{
    test \ifusetranslator
    and
    not test {\ifnameundef{translator}}
  }
    {\printnames{translator}%
     \setunit{\printdelim{translatortypedelim}}%
     \usebibmacro{translator+othersstrg}%
     \clearname{translator}}
    {}}

\newbibmacro*{authorstrg}{%
  \iffieldundef{authortype}
    {}
    {\printtext[authortype]{%
       \ifbibxstring{\thefield{authortype}}
         {\ifboolexpr{
            test {\ifnumgreater{\value{author}}{1}}
            or
            test {\ifandothers{author}}
          }
            {\bibstring{\thefield{authortype}s}}
            {\bibstring{\thefield{authortype}}}}
         {\thefield{authortype}}}}}

\newbibmacro*{editorstrg}{%
  \printtext[editortype]{%
    \iffieldundef{editortype}
      {\ifboolexpr{
         test {\ifnumgreater{\value{editor}}{1}}
         or
         test {\ifandothers{editor}}
       }
         {\bibstring{editors}}
         {\bibstring{editor}}}
      {\ifbibxstring{\thefield{editortype}}
         {\ifboolexpr{
            test {\ifnumgreater{\value{editor}}{1}}
            or
            test {\ifandothers{editor}}
          }
            {\bibstring{\thefield{editortype}s}}
            {\bibstring{\thefield{editortype}}}}
         {\thefield{editortype}}}}}

\newbibmacro*{editor+othersstrg}{%
  \iffieldundef{editortype}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\def\abx@tempa{editors}}
       {\def\abx@tempa{editor}}}
    {\ifboolexpr{
       test {\ifnumgreater{\value{editor}}{1}}
       or
       test {\ifandothers{editor}}
     }
       {\edef\abx@tempa{\thefield{editortype}s}}
       {\edef\abx@tempa{\thefield{editortype}}}}%
  \let\abx@tempb=\empty
  \ifnamesequal{editor}{translator}
    {\appto\abx@tempa{tr}%
     \appto\abx@tempb{\clearname{translator}}}
    {}%
  \ifnamesequal{editor}{commentator}
    {\appto\abx@tempa{co}%
     \appto\abx@tempb{\clearname{commentator}}}
    {\ifnamesequal{editor}{annotator}
       {\appto\abx@tempa{an}%
        \appto\abx@tempb{\clearname{annotator}}}
       {}}%
  \ifnamesequal{editor}{introduction}
    {\appto\abx@tempa{in}%
     \appto\abx@tempb{\clearname{introduction}}}
    {\ifnamesequal{editor}{foreword}
       {\appto\abx@tempa{fo}%
        \appto\abx@tempb{\clearname{foreword}}}
       {\ifnamesequal{editor}{afterword}
          {\appto\abx@tempa{af}%
           \appto\abx@tempb{\clearname{afterword}}}
          {}}}%
  \ifbibxstring{\abx@tempa}
    {\printtext[editortype]{\bibstring{\abx@tempa}}\abx@tempb}
    {\usebibmacro{editorstrg}}}

\newbibmacro*{translatorstrg}{%
  \printtext[translatortype]{%
    \ifboolexpr{
      test {\ifnumgreater{\value{translator}}{1}}
      or
      test {\ifandothers{translator}}
    }
      {\bibstring{translators}}
      {\bibstring{translator}}}}

\newbibmacro*{translator+othersstrg}{%
  \ifboolexpr{
    test {\ifnumgreater{\value{translator}}{1}}
    or
    test {\ifandothers{translator}}
  }
    {\def\abx@tempa{translators}}
    {\def\abx@tempa{translator}}%
  \ifnamesequal{translator}{commentator}
    {\appto\abx@tempa{co}%
     \clearname{commentator}}
    {\ifnamesequal{translator}{annotator}
       {\appto\abx@tempa{an}%
        \clearname{annotator}}
       {}}%
  \ifnamesequal{translator}{introduction}
    {\appto\abx@tempa{in}%
     \clearname{introduction}}
    {\ifnamesequal{translator}{foreword}
       {\appto\abx@tempa{fo}%
        \clearname{foreword}}
       {\ifnamesequal{translator}{afterword}
          {\appto\abx@tempa{af}%
           \clearname{afterword}}
          {}}}%
  \printtext[translatortype]{\bibstring{\abx@tempa}}}

\newbibmacro*{byauthor}{%
  \ifboolexpr{
    test \ifuseauthor
    or
    test {\ifnameundef{author}}
  }
    {}
    {\usebibmacro{bytypestrg}{author}{author}%
     \setunit{\addspace}%
     \printnames[byauthor]{author}}}

\newbibmacro*{bybookauthor}{%
  \ifnamesequal{author}{bookauthor}
    {}
    {\printnames{bookauthor}}}

\newbibmacro*{byeditor}{%
  \ifnameundef{editor}
    {}
    {\usebibmacro{bytypestrg}{editor}{editor}%
     \setunit{\addspace}%
     \printnames[byeditor]{editor}%
     \newunit}%
  \usebibmacro{byeditorx}}

\newbibmacro*{byeditorx}{%
  \ifnameundef{editora}
    {}
    {\usebibmacro{bytypestrg}{editora}{editor}%
     \setunit{\addspace}%
     \printnames[byeditora]{editora}%
     \newunit}%
  \ifnameundef{editorb}
    {}
    {\usebibmacro{bytypestrg}{editorb}{editor}%
     \setunit{\addspace}%
     \printnames[byeditorb]{editorb}%
     \newunit}%
  \ifnameundef{editorc}
    {}
    {\usebibmacro{bytypestrg}{editorc}{editor}%
     \setunit{\addspace}%
     \printnames[byeditorc]{editorc}%
     \newunit}}

\newbibmacro*{bytranslator}{%
  \ifnameundef{translator}
    {}
    {\bibstring{bytranslator}%
     \setunit{\addspace}%
     \printnames[bytranslator]{translator}}}

\newbibmacro*{byholder}{%
  \printnames{holder}}

\newbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {\usebibmacro{byeditor+othersstrg}%
     \setunit{\addspace}%
     \printnames[byeditor]{editor}%
     \clearname{editor}%
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}

\newbibmacro*{bytranslator+others}{%
  \ifnameundef{translator}
    {}
    {\usebibmacro{bytranslator+othersstrg}%
     \setunit{\addspace}%
     \printnames[bytranslator]{translator}%
     \clearname{translator}%
     \newunit}%
  \usebibmacro{withothers}}

\newbibmacro*{bytypestrg}[2]{%
  \iffieldundef{#1type}
    {\bibstring{by#2}}
    {\ifbibxstring{by\thefield{#1type}}
       {\bibstring{by\thefield{#1type}}}
       {\printtext{\thefield{#1type}}}}}

\newbibmacro*{byeditor+othersstrg}{%
  \iffieldundef{editortype}
    {\def\abx@tempa{byeditor}}
    {\edef\abx@tempa{by\thefield{editortype}}}%
  \let\abx@tempb=\empty
  \ifnamesequal{editor}{translator}
    {\appto\abx@tempa{tr}%
     \appto\abx@tempb{\clearname{translator}}}
    {}%
  \ifnamesequal{editor}{commentator}
    {\appto\abx@tempa{co}%
     \appto\abx@tempb{\clearname{commentator}}}
    {\ifnamesequal{editor}{annotator}
       {\appto\abx@tempa{an}%
        \appto\abx@tempb{\clearname{annotator}}}
       {}}%
  \ifnamesequal{editor}{introduction}
    {\appto\abx@tempa{in}%
     \appto\abx@tempb{\clearname{introduction}}}
    {\ifnamesequal{editor}{foreword}
       {\appto\abx@tempa{fo}%
        \appto\abx@tempb{\clearname{foreword}}}
       {\ifnamesequal{editor}{afterword}
          {\appto\abx@tempa{af}%
           \appto\abx@tempb{\clearname{afterword}}}
          {}}}%
  \ifbibxstring{\abx@tempa}
    {\printtext{\bibstring{\abx@tempa}}\abx@tempb}
    {\usebibmacro{bytypestrg}{editor}{editor}}}

\newbibmacro*{bytranslator+othersstrg}{%
  \def\abx@tempa{bytranslator}%
  \ifnamesequal{translator}{commentator}
    {\appto\abx@tempa{co}%
     \clearname{commentator}}
    {\ifnamesequal{translator}{annotator}
       {\appto\abx@tempa{an}%
        \clearname{annotator}}
       {}}%
  \ifnamesequal{translator}{introduction}
    {\appto\abx@tempa{in}%
     \clearname{introduction}}
    {\ifnamesequal{translator}{foreword}
       {\appto\abx@tempa{fo}%
        \clearname{foreword}}
       {\ifnamesequal{translator}{afterword}
          {\appto\abx@tempa{af}%
           \clearname{afterword}}
          {}}}%
  \bibstring{\abx@tempa}}

\newbibmacro*{withcommentator}{%
  \ifnameundef{commentator}
    {}
    {\bibstring{withcommentator}%
     \setunit{\addspace}%
     \printnames[withcommentator]{commentator}}}

\newbibmacro*{withannotator}{%
  \ifnameundef{annotator}
    {}
    {\bibstring{withannotator}%
     \setunit{\addspace}%
     \printnames[withannotator]{annotator}}}

\newbibmacro*{withintroduction}{%
  \ifnameundef{introduction}
    {}
    {\bibstring{withintroduction}%
     \setunit{\addspace}%
     \printnames[withintroduction]{introduction}}}

\newbibmacro*{withforeword}{%
  \ifnameundef{foreword}
    {}
    {\bibstring{withforeword}%
     \setunit{\addspace}%
     \printnames[withforeword]{foreword}}}

\newbibmacro*{withafterword}{%
  \ifnameundef{afterword}
    {}
    {\bibstring{withafterword}%
     \setunit{\addspace}%
     \printnames[withafterword]{afterword}}}

\newbibmacro*{withothers}{%
  \usebibmacro{withcommentator}%
  \clearname{commentator}%
  \newunit
  \usebibmacro{withannotator}%
  \clearname{annotator}%
  \newunit
  \usebibmacro{withintroduction}%
  \clearname{introduction}%
  \newunit
  \usebibmacro{withforeword}%
  \clearname{foreword}%
  \newunit
  \usebibmacro{withafterword}%
  \clearname{afterword}}

\newbibmacro*{title}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \newunit}%
  \printfield{titleaddon}}

\newbibmacro*{booktitle}{%
  \ifboolexpr{
    test {\iffieldundef{booktitle}}
    and
    test {\iffieldundef{booksubtitle}}
  }
    {}
    {\printtext[booktitle]{%
       \printfield[titlecase]{booktitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{booksubtitle}}%
     \newunit}%
  \printfield{booktitleaddon}}

\newbibmacro*{maintitle}{%
  \ifboolexpr{
    test {\iffieldundef{maintitle}}
    and
    test {\iffieldundef{mainsubtitle}}
  }
    {}
    {\printtext[maintitle]{%
       \printfield[titlecase]{maintitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{mainsubtitle}}%
     \newunit}%
  \printfield{maintitleaddon}}

% The \iffieldundef{journaltitleaddon} is usually not necessary.
% We need it to ensure that a \setunit* after this macro does the right thing
% for backwards compatibility.
\newbibmacro*{journal}{%
  \ifboolexpr{
    test {\iffieldundef{journaltitle}}
    and
    test {\iffieldundef{journalsubtitle}}
  }
    {}
    {\printtext[journaltitle]{%
       \printfield[titlecase]{journaltitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{journalsubtitle}}%
     \newunit}%
  \iffieldundef{journaltitleaddon}
    {}
    {\printfield{journaltitleaddon}}}

% Re \iffieldundef{titleaddon} see the comment about
% \iffieldundef{journaltitleaddon} above.
\newbibmacro*{periodical}{%
  \ifboolexpr{
    test {\iffieldundef{title}}
    and
    test {\iffieldundef{subtitle}}
  }
    {}
    {\printtext[title]{%
       \printfield[titlecase]{title}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{subtitle}}%
     \newunit}%
  \iffieldundef{titleaddon}
    {}
    {\printfield{titleaddon}}}

\newbibmacro*{issue}{%
  \ifboolexpr{
    test {\iffieldundef{issuetitle}}
    and
    test {\iffieldundef{issuesubtitle}}
  }
    {}
    {\printtext[issuetitle]{%
       \printfield[titlecase]{issuetitle}%
       \setunit{\subtitlepunct}%
       \printfield[titlecase]{issuesubtitle}}%
     \newunit}%
  \printfield{issuetitleaddon}}

\newbibmacro*{in:}{%
  \bibstring{in}%
  \printunit{\intitlepunct}}

\newbibmacro*{date}{\printdate}

\newbibmacro*{url+urldate}{%
  \usebibmacro{url}%
  \iffieldundef{urlyear}
    {}
    {\setunit*{\addspace}%
     \usebibmacro{urldate}}}

\newbibmacro*{url}{\printfield{url}}
\newbibmacro*{urldate}{\printurldate}

\newbibmacro*{pageref}{%
  \iflistundef{pageref}
    {}
    {\printtext[parens]{%
       \ifnumgreater{\value{pageref}}{1}
         {\bibstring{backrefpages}\ppspace}
         {\bibstring{backrefpage}\ppspace}%
       \printlist[pageref][-\value{listtotal}]{pageref}}}}

\newbibmacro*{setpageref}{%
  \iflistundef{pageref}
    {}
    {\printtext{%
       \ifnumgreater{\value{pageref}}{1}
         {\bibstring{backrefpages}\ppspace}
         {\bibstring{backrefpage}\ppspace}%
       \printlist[pageref][-\value{listtotal}]{pageref}}}}

\newbibmacro*{eprint}{%
  \iffieldundef{eprinttype}
    {\printfield{eprint}}
    {\printfield[eprint:\strfield{eprinttype}]{eprint}}}

\newbibmacro*{annotation}{%
  \begingroup
  \togglefalse{blx@bibliography}%
  \iffieldundef{annotation}
    {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}
    {\printfield{annotation}}%
  \endgroup}

\newbibmacro*{abstract}{%
  \iffieldundef{abstract}
    {\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}}
    {\printfield{abstract}}}

\newbibmacro*{related:default}[1]{%
  \entrydata*{#1}{%
    \usedriver
      {\ifnameundef{savedauthor}
         {\ifnameundef{savededitor}
            {}
            {\ifnamesequal{editor}{savededitor}
               {\clearname{editor}}
               {}}}
         {\ifnamesequal{author}{savedauthor}
            {\clearname{author}}
            {}}%
       \DeclareNameAlias{sortname}{default}%
       % from authortitle and authoryear
       \ifbibmacroundef{bbx:dashcheck}
         {}
         {\renewbibmacro*{bbx:dashcheck}[2]{##2}}%
       % authoryear
       \ifbibmacroundef{labeltitle}
         {}
         {\renewbibmacro*{labeltitle}{}}%
       \ifbibmacroundef{date+extradate}
         {}
         {\renewbibmacro*{date+extradate}{}%
          \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}}%
       \renewbibmacro*{pageref}{}%
       \renewbibmacro*{related:init}{}}
      {\thefield{entrytype}}}}

\newbibmacro*{related:bytranslator}[1]{%
  \entrydata{#1}{%
    \renewbibmacro*{name:hook}[1]{%
      \ifnumequal{\value{listcount}}{1}
        {\mkrelatedstringtext{\lbx@initnamehook{##1}}}
        {}}%
    \printnames[bytranslator]{translator}%
    \setunit*{\addspace\bibstring[\mkrelatedstringtext]{astitle}\space}%
    \usebibmacro{title}%
    \setunit{\addspace}%
    \printtext[parens]{%
      \printlist{location}%
      \iflistundef{publisher}
        {\setunit*{\addcomma\space}}
        {\setunit*{\addcolon\space}}%
      \printlist{publisher}%
      \setunit*{\addcomma\space}%
      \printdate}}}

\newbibmacro*{related:multivolume}[1]{%
  \entrydata*{#1}{%
    \printtext{%
      \printfield{volume}%
      \printfield{part}}%
    \setunit*{\addcolon\space}%
    \usebibmacro{title}%
    \ifboolexpr{
      test {\ifnamesequal{author}{savedauthor}}
      or
      test {\ifnameundef{author}}
    }
      {}
      {\usebibmacro{bytypestrg}{author}{author}%
       \setunit{\addspace}%
       \printnames[byauthor]{author}
       \newunit\newblock}%
    \ifboolexpr{
      test {\ifnamesequal{editor}{savededitor}}
      or
      test {\ifnameundef{editor}}
    }
      {}
      {\usebibmacro{byeditor+others}%
       \newunit\newblock}%
  \printdate}}

\newbibmacro*{related:origpubin}[1]{%
  \entrydata*{#1}{%
    \printfield{year}%
    \ifboolexpr{
      test {\iflistsequal{publisher}{savedpublisher}}
      or
      test {\iflistundef{publisher}}
    }
      {}
      {\setunit{\addspace\bibstring[\mkrelatedstringtext]{bypublisher}\space}%
       \printlist{publisher}%
       \setunit{\addcomma\space}%
       \iflistsequal{location}{savedlocation}
         {}
         {\printlist{location}}}}}

\newbibmacro*{related:origpubas}[1]{%
  \entrydata*{#1}{%
    \usebibmacro{title}%
    \ifboolexpr{
      test {\iflistsequal{publisher}{savedpublisher}}
      or
      test {\iflistundef{publisher}}
    }
      {}
      {\setunit{\addspace\bibstring[\mkrelatedstringtext]{bypublisher}\space}%
       \printlist{publisher}%
       \setunit{\addcomma\space}%
       \iflistsequal{location}{savedlocation}
         {}
         {\printlist{location}}}}}

\DeclareFieldFormat{title:hook}{%
  \mkrelatedstringtext{\lbx@inittitlehook{#1}}%
  \mkbibemph{#1}}

\newbibmacro*{related:reprintfrom}[1]{%
  \entrydata*{#1}{%
    \iffieldundef{journaltitle}
      {\iffieldundef{maintitle}
         {\printfield[title:hook]{booktitle}}
         {\printfield[title:hook]{maintitle}}%
       \newunit\newblock
       \usebibmacro{byeditor+others}%
       \newunit\newblock
       \printfield{edition}%
       \newunit
       \iffieldundef{volume}
         {}
         {\printfield{volume}%
          \printfield{part}}
       \newunit\newblock
       \usebibmacro{series+number}%
       \newunit\newblock
       \printfield{note}%
       \newunit\newblock
       \usebibmacro{publisher+location+date}%
       \newunit\newblock
       \usebibmacro{chapter+pages}}
      {\renewbibmacro*{journal}{%
         \printfield[title:hook]{journaltitle}}%
       \usebibmacro{journal+issuetitle}%
       \newunit\newblock
       \usebibmacro{byeditor+others}%
       \newunit\newblock
       \usebibmacro{note+pages}}}}

\endinput
