\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 - e.g. \namepartfamily % \nameparti - e.g. \namepartfamilyi \def\do#1{% \csdef{mkbibname#1}##1{##1}% \define@key{blx@opt@namepart}{#1}{\csdef{namepart#1}{##1}}% \define@key{blx@opt@namepart}{#1i}{\csdef{namepart#1i}{##1}}% \define@key{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*{\compcitedelim}{\addcomma\space} \newcommand*{\supercitedelim}{\addcomma} \newcommand*{\prenotedelim}{\addspace} \newcommand*{\postnotedelim}{\addcomma\space} \newcommand*{\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{}{}, a % test that should expand if the next non-compact citation delimiter % is the last one in the citation list printed by \textcite or \textcites. \newcommand*{\iffinalcitedelim}{\@secondoftwo} % Expand if the citation labels in the citation list printed by \textcite % or \textcites contains the serial comma \finalandcomma \newcommand*{\iftextcitepunct}{% \ifboolexpr{ not test {\ifdefempty{\finalandsemicolon}} and test {\ifnumgreater{\value{textcitemaxnames}}{2}} }} % Counters for the number of citation labels separated by non-compact delimiters % in the citation list printed by \textcite or \textcites. Counter values should % be managed by the citation style. \newcounter{textcitecount} \newcounter{textcitetotal} \setcounter{textcitecount}{0} \setcounter{textcitetotal}{0} % Counters for the maximum number of names among citation labels in the citation % list printed by \textcite or \textcites. Counter value should be managed by % the citation style. \newcounter{textcitemaxnames} \setcounter{textcitemaxnames}{0} % Used in the bibliography and bibliography lists \newcommand*{\newunitpunct}{\addperiod\space} \newcommand*{\entrysetpunct}{\addsemicolon\space} \newcommand*{\finentrypunct}{\addperiod} \newcommand*{\labelnamepunct}{\newunitpunct} \newcommand*{\subtitlepunct}{\newunitpunct} \newcommand*{\intitlepunct}{\addcolon\space} \newcommand*{\bibpagespunct}{\addcomma\space} \newcommand*{\bibpagerefpunct}{\addspace} \newcommand*{\revsdnamepunct}{\addcomma} \newcommand*{\bibnamedash}{% \ifdimless{\leftmargin}{0.75em} {\mbox{\textemdash\space}} {\makebox[\leftmargin][l]{% \ifdimless{\leftmargin}{1.25em} {\textendash} {\textemdash}}}} \newcommand*{\relatedpunct}{\addspace} \newcommand*{\relateddelim}{\adddot\par\nobreak} \newcommand{\mkrelatedstring}{\mainlang} % Used for indexing \newcommand*{\bibindexnamedelima}{ } \newcommand*{\bibindexnamedelimb}{ } \newcommand*{\bibindexnamedelimc}{ } \newcommand*{\bibindexnamedelimd}{ } \newcommand*{\bibindexnamedelimi}{ } \newcommand*{\bibindexinitperiod}{.} \newcommand*{\bibindexinitdelim}{ } \newcommand*{\bibindexinithyphendelim}{.-} % \bibsetup is a generic hook controlling the (low-level) layout of % the bibliography and bibliography lists. The default % definition should work fine in most cases. \newcommand*{\bibsetup}{% \interlinepenalty=5000\relax \widowpenalty=10000\relax \clubpenalty=10000\relax \raggedbottom \frenchspacing \biburlsetup} % The penalties above are not specific to biblatex. These are % low-level TeX features. \interlinepenalty is the penalty assigned % to page breaks within a paragraph (i.e., in this case, a % bibliography entry); \clubpenalty is an additional penalty % assigned to page breaks after the first line of a paragraph; % \widowpenalty is an additional penalty assigned to page breaks % before the last line of a paragraph. Note that the value 10000 % means 'infinite' as far as TeX is concerned. Setting a penalty to % 10000 will unconditionally suppress the respective breakpoint. % % The net effect of the above settings is as follows. Breaking a % bibliography entry across pages is discouraged, but not suppressed % altogether. If a bibliography entry spans less than four lines, % TeX will always keep it on one page. If it spans four or more % lines, it may be broken across pages, provided that there are at % least two lines on the page before and after the break. % % These penalties should normally be used in conjunction with % \raggedbottom. If you don't like that and remove \raggedbottom % from the definition of \bibsetup, make sure to provide some % stretchability between bibliography entries by setting \bibitemsep % to a suitable value, e.g.: % % \setlength{\bibitemsep}{0.5\baselineskip plus 0.5\baselineskip} % % Using \frenchspacing in the bibliography is recommended. If you % want more visual separation, try the package option 'block=space'. % This will yield better results than \nonfrenchspacing. % \citesetup is a generic hook for citations. \newcommand*{\citesetup}{% \biburlsetup} % Local setup for \url; see comments in url.sty for details. \newcounter{biburlnumpenalty} \newcounter{biburlucpenalty} \newcounter{biburllcpenalty} \newcommand*{\biburlsetup}{% \Urlmuskip=0mu plus 3mu\relax \mathchardef\UrlBigBreakPenalty=100\relax \mathchardef\UrlBreakPenalty=200\relax \def\UrlBigBreaks{\do\:\do\-}% \def\UrlBreaks{% \do\.\do\@\do\/\do\\\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\}% \do\,\do\?\do\'\do\+\do\=\do\#\do\$\do\&\do\*\do\^\do\"}% \ifnumgreater{\value{biburlnumpenalty}}{0} {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlnumpenalty}}}}% \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0} {}% \ifnumgreater{\value{biburlucpenalty}}{0} {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlucpenalty}}}}% \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J \do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T \do\U\do\V\do\W\do\X\do\Y\do\Z} {}% \ifnumgreater{\value{biburllcpenalty}}{0} {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburllcpenalty}}}}% \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t \do\u\do\v\do\w\do\x\do\y\do\z} {}% \let\do=\noexpand} % The above code allows linebreaks before numbers and letters. % This is often the only way to break DOIs. It also allows breaks % after hyphens and adjusts \Urlmuskip to add some stretchability % to URLs. % The default font of the bibliography and the bibliography lists. % We simply reset the current font to the global defaults. \newcommand*{\bibfont}{\normalfont\normalsize} % Some length registers which may be used to fine-tune the % (high-level) layout of the bibliography. % Default \bibhang to 1em if \parindent is 0 for some reason \setlength{\bibhang}{\ifnumequal{\parindent}{0}{1em}{\parindent}} \setlength{\biblabelsep}{2\labelsep} \setlength{\bibitemsep}{\itemsep} \setlength{\bibnamesep}{0pt} \setlength{\bibinitsep}{0pt} \setlength{\bibparsep}{0pt} % Miscellaneous facilities % ------------------------------------------------------------------ % The counter 'abbrvpenalty' holds the penalty used in short or % abbreviated bibliography strings. For example, a linebreak in % expressions such as "et al." or "ed. by" is unfortunate, but should % still be possible to prevent overfull boxes. We use TeX's % \hyphenpenalty (normally 50) as the default value. The idea is % making TeX treat the whole expression as if it were a single, % hyphenatable word as far as line-breaking is concerned. If you % dislike such linebreaks, use a higher value. If you do not mind % them at all, set this counter to zero. If you want to suppress them % unconditionally, set it to 10000. \defcounter{abbrvpenalty}{\hyphenpenalty} % The counter 'highnamepenalty' also holds a penalty affecting the % line-breaking of names. This penalty is inserted between smaller % chunks of a name, for example between the first and the middle % name. The default value is \hyphenpenalty. If you dislike such % linebreaks, use a higher value. If you do not mind them at all, % set this counter to zero. If you prefer the traditional BibTeX % behavior, set it to 10000. \defcounter{highnamepenalty}{\hyphenpenalty} % The counter 'lownamepenalty' holds a penalty which affects the % line-breaking of names. This penalty is inserted between larger % chunks of a name, for example between the chunk consisting of all % first names and the last name. The default value is half the % \hyphenpenalty. If you dislike such linebreaks, use a higher % value. If you do not mind them at all, set this counter to zero. \defcounter{lownamepenalty}{\hyphenpenalty/2} % Note that default values assigned to the above counters are % deliberately very low to prevent overfull boxes. This implies that % you will hardly notice any effect on line-breaking if the text is % set justified. If you set these counters to 10000 to suppress the % respective breakpoints, you will notice their effect but you may % also be confronted with overfull boxes. Keep in mind that % line-breaking in the bibliography is often more difficult than in % the body text and that you can not resort to rephrasing a % sentence. In some cases it may be preferable to set the entire % bibliography \raggedright (by modifying \bibsetup) to prevent % suboptimal linebreaks. In this case, even the very low default % penalties will make a visible difference. % File name prefixes for external abstracts and annotations \newcommand*{\bibabstractprefix}{bibabstract-} \newcommand*{\bibannotationprefix}{bibannotation-} % Print acronyms in small caps if possible \newcommand*{\mkbibacro}[1]{% \ifcsundef{\f@encoding/\f@family/\f@series/sc} {#1} {\textsc{\MakeLowercase{#1}}}} % 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]{#1}} \DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1} \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}} \DeclareFieldFormat{volcitenote}{\mkvolcitenote#1} \newrobustcmd*{\mkvolcitenote}[2]{% \printtext[volcitevolume]{#1}% \ifblank{#2}{}{\volcitedelim\printtext[volcitepages]{#2}}} % multicite commands \DeclareFieldFormat{multiprenote}{#1\isdot} \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}} % Used by \citeurl \DeclareFieldFormat{citeurl}{\url{#1}} % Used in the bibliography and bibliography lists \DeclareFieldFormat{doi}{% \mkbibacro{DOI}\addcolon\space \ifhyperref {\href{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{http://arxiv.org/\abx@arxivpath/#1}{% \nolinkurl{#1}% \iffieldundef{eprintclass} {} {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}} {\nolinkurl{#1}% \iffieldundef{eprintclass} {} {\addspace\texttt{\mkbibbrackets{\thefield{eprintclass}}}}}} \DeclareFieldAlias{eprint:arXiv}{eprint:arxiv} \DeclareFieldFormat{eprint:jstor}{% JSTOR\addcolon\space \ifhyperref {\href{http://www.jstor.org/stable/#1}{\nolinkurl{#1}}} {\nolinkurl{#1}}} \DeclareFieldAlias{eprint:JSTOR}{eprint:jstor} \DeclareFieldFormat{eprint:pubmed}{% PMID\addcolon\space \ifhyperref {\href{http://www.ncbi.nlm.nih.gov/pubmed/#1}{\nolinkurl{#1}}} {\nolinkurl{#1}}} \DeclareFieldAlias{eprint:PubMed}{eprint:pubmed} \DeclareFieldFormat{eprint:googlebooks}{% Google Books\addcolon\space \ifhyperref {\href{http://books.google.com/books?id=#1}{\nolinkurl{#1}}} {\nolinkurl{#1}}} \DeclareFieldAlias{eprint:Google Books}{eprint:googlebooks} \DeclareFieldFormat{file}{\url{#1}} \DeclareFieldFormat{isbn}{\mkbibacro{ISBN}\addcolon\space #1} \DeclareFieldFormat{isrn}{\mkbibacro{ISRN}\addcolon\space #1} \DeclareFieldFormat{issn}{\mkbibacro{ISSN}\addcolon\space #1} \DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} \DeclareFieldFormat{issuetitle}{\mkbibemph{#1}} \DeclareFieldFormat{maintitle}{\mkbibemph{#1}} \DeclareFieldFormat{booktitle}{\mkbibemph{#1}} \DeclareFieldFormat{chapter}{\bibstring{chapter}~#1} \DeclareFieldFormat{month}{\mkbibmonth{#1}} \DeclareFieldFormat{note}{#1\isdot} \DeclareFieldFormat{number}{#1}% number in a series \DeclareFieldFormat[article,periodical]{number}{#1}% number of a journal \DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}} \DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1}} \DeclareFieldFormat{part}{.#1}% physical part of a logical volume \DeclareFieldFormat{series}{#1}% publication series \DeclareFieldFormat[article,periodical]{series}{% series of a journal \ifinteger{#1} {\mkbibordseries{#1}~\bibstring{jourser}} {\ifbibstring{#1}{\bibstring{#1}}{#1}}} \DeclareFieldFormat{pubstate}{\ifbibstring{#1}{\bibstring{#1}}{#1}} \DeclareFieldFormat{title}{\mkbibemph{#1}} \DeclareFieldFormat [article,inbook,incollection,inproceedings,patent,thesis,unpublished] {title}{\mkbibquote{#1\isdot}} \DeclareFieldFormat [suppbook,suppcollection,suppperiodical] {title}{#1} \DeclareFieldFormat{type}{\ifbibstring{#1}{\bibstring{#1}}{#1}} \DeclareFieldFormat{url}{\mkbibacro{URL}\addcolon\space\url{#1}} \DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\space#1}} \DeclareFieldFormat{version}{\bibstring{version}~#1} \DeclareFieldFormat{volume}{\bibstring{volume}~#1}% volume of a book \DeclareFieldFormat[article,periodical]{volume}{#1}% volume of a journal \DeclareFieldFormat{volumes}{#1~\bibstring{volumes}} \DeclareFieldFormat{related}{#1} \DeclareFieldFormat{related:multivolume}{\par\nobreak#1} \DeclareFieldFormat{related:origpubin}{\mkbibparens{#1}} \DeclareFieldFormat{related:origpubas}{\mkbibparens{#1}} \DeclareFieldFormat{relatedstring:default}{#1\printunit{\relatedpunct}} \DeclareFieldFormat{relatedstring:reprintfrom}{#1\addspace} % Generic formats for \printtext and \printfield \DeclareFieldFormat{emph}{\mkbibemph{#1}} \DeclareFieldFormat{bold}{\textbf{#1}} \DeclareFieldFormat{smallcaps}{\textsc{#1}} \DeclareFieldFormat{parens}{\mkbibparens{#1}} \DeclareFieldFormat{brackets}{\mkbibbrackets{#1}} \DeclareFieldFormat{bibhyperref}{\bibhyperref{#1}} \DeclareFieldFormat{bibhyperlink}{\bibhyperlink{\thefield{entrykey}}{#1}} \DeclareFieldFormat{bibhypertarget}{\bibhypertarget{\thefield{entrykey}}{#1}} \DeclareFieldFormat{titlecase}{#1} \DeclareFieldFormat{noformat}{#1} % ------------------------------------------------------------------ % LITERAL LIST FORMATS (#1 is the current item) % ------------------------------------------------------------------ % Formatting directives for literal lists % ------------------------------------------------------------------ % The fallback used by \printlist \DeclareListFormat{default}{% \usebibmacro{list:delim}{#1}% #1\isdot \usebibmacro{list:andothers}} % The default used by \citelist \DeclareListAlias{citelist}{default} % Used in the bibliography \DeclareListFormat{publisher}{% \usebibmacro{list:delim}{#1}% #1\isdot \usebibmacro{list:andothers}} \DeclareListFormat{language}{% \usebibmacro{list:delim}{% \ifbibstring{#1} {\bibxstring{#1}} {\ifbibstring{lang#1} {\bibxstring{lang#1}} {#1}}}% \ifbibstring{#1} {\bibstring{#1}} {\ifbibstring{lang#1} {\bibstring{lang#1}} {#1}}% \usebibmacro{list:andothers}} \DeclareListFormat{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} % 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 % ------------------------------------------------------------------ \DeclareNameAlias{first-last}{given-family}% legacy alias \DeclareNameFormat{given-family}{% \ifgiveninits {\usebibmacro{name:given-family} {\namepartfamily} {\namepartgiveni} {\namepartprefix} {\namepartsuffix}} {\usebibmacro{name:given-family} {\namepartfamily} {\namepartgiven} {\namepartprefix} {\namepartsuffix}}% \usebibmacro{name:andothers}} \DeclareNameAlias{last-first}{family-given}% legacy alias \DeclareNameFormat{family-given}{% \ifgiveninits {\usebibmacro{name:family-given} {\namepartfamily} {\namepartgiveni} {\namepartprefix} {\namepartsuffix}} {\usebibmacro{name:family-given} {\namepartfamily} {\namepartgiven} {\namepartprefix} {\namepartsuffix}}% \usebibmacro{name:andothers}} \DeclareNameAlias{last-first/first-last}{family-given/given-family}% legacy alias \DeclareNameFormat{family-given/given-family}{% \ifnumequal{\value{listcount}}{1} {\ifgiveninits {\usebibmacro{name:family-given} {\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}} \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} % 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} \DeclareFieldFormat{authortype}{#1} \DeclareFieldFormat{editortype}{#1} \DeclareFieldFormat{translatortype}{#1} % Auxiliary macros for name formatting directives % ------------------------------------------------------------------ \newbibmacro*{name:family}[4]{% \ifuseprefix {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \ifdefvoid{#3} {} {\ifcapital {\mkbibnameprefix{\MakeCapital{#3}}\isdot} {\mkbibnameprefix{#3}\isdot}% \ifprefchar{}{\bibnamedelimc}}} {\usebibmacro{name:delim}{#1}% \usebibmacro{name:hook}{#1}}% \mkbibnamefamily{#1}\isdot}% \newbibmacro*{name:last}[4]{% legacy alias \blx@warning@noline{% 'name:last' is deprecated, please use 'name:family'}% \usebibmacro{name:family}{#1}{#2}{#3}{#4}} \newbibmacro*{name:given-family}[4]{% \usebibmacro{name:delim}{#2#3#1}% \usebibmacro{name:hook}{#2#3#1}% \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}} \newbibmacro*{name:family-given}[4]{% \ifuseprefix {\usebibmacro{name:delim}{#3#1}% \usebibmacro{name:hook}{#3#1}% \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}% \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 preceeding the \actualoperator % delimiter for sorting. The part after the delimiter is used as the % index is printed. Note that this is not specific to biblatex, see % the makeindex documentation for details. \newcommand*{\actualoperator}{@} \newcommand*{\subentryoperator}{!} \newbibmacro*{index:name}[5]{% \usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}} % {}{}{}{} \newcommand*{\mkbibindexname}[4]{% \ifuseprefix {\ifdefvoid{#3}{}{#3 }% \@firstofone #1% remove spurious braces \ifdefvoid{#4}{}{ #4}% \ifdefvoid{#2}{}{, #2}% \actualoperator \ifdefvoid{#3}{}{\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}}} % {}{} \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} } } \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} } % ------------------------------------------------------------------ % SORTING % ------------------------------------------------------------------ \DeclareSortingNamekeyTemplate{ \keypart{ \namepart[use=true]{prefix} } \keypart{ \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} } \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{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{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{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{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{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{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} } } % ------------------------------------------------------------------ % 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} \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} \AtEndPreamble{% \ifcsundef{MakeMarkcase}{}{\def\abx@MakeMarkcase{\MakeMarkcase}}% \providecommand*{\@mkdouble}[1]{\@mkboth{#1}{#1}}% \providecommand*{\@mkright}{% \begingroup \ifx\@mkboth\markboth \aftergroup\markright \else \ifx\@mkboth\@gobbletwo \aftergroup\@gobble \else \def\@gobbletwo##1##2{}% \ifx \@mkboth\@gobbletwo \aftergroup\@gobble \else \PackageWarning{biblatex}{% changed for biblatex package incompatibility detected!\MessageBreak \string\@mkboth it neither \string\markboth nor any\MessageBreak kind of two arguments gobbling,\MessageBreak e.g., \string\@gobbletwo.\MessageBreak So I don't known, what to do\MessageBreak with \string\@mkright.\MessageBreak Nevertheless, \string\markright\space will be\MessageBreak used% }% \aftergroup\markright \fi \fi \fi \endgroup }} \ifcase\abx@classtype\relax % article \defbibheading{bibliography}[\refname]{% \section*{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblist}[\biblistname]{% \section*{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibintoc}[\refname]{% \section*{#1}% \addcontentsline{toc}{section}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblistintoc}[\biblistname]{% \section*{#1}% \addcontentsline{toc}{section}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibnumbered}[\refname]{% \section{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{biblistnumbered}[\biblistname]{% \section{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{subbibliography}[\refname]{% \subsection*{#1}} \defbibheading{subbibintoc}[\refname]{% \subsection*{#1}% \addcontentsline{toc}{subsection}{#1}} \defbibheading{subbibnumbered}[\refname]{% \subsection{#1}} \or % book/report \defbibheading{bibliography}[\bibname]{% \chapter*{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblist}[\biblistname]{% \chapter*{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibintoc}[\bibname]{% \chapter*{#1}% \addcontentsline{toc}{chapter}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblistintoc}[\biblistname]{% \chapter*{#1}% \addcontentsline{toc}{chapter}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibnumbered}[\bibname]{% \chapter{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{biblistnumbered}[\biblistname]{% \chapter{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \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}% \@mkdouble{\abx@MakeMarkcase{\sectionmarkformat#1}}} {\ifkomabibtotoc {\addsec{#1}} {\section*{#1}}% \@mkdouble{\abx@MakeMarkcase{#1}}}} {\bibliography@heading{#1}}} \defbibheading{biblist}[\biblistname]{% \ifcsundef{bibliography@heading} {\ifkomabibtotocnumbered {\section{#1}% \@mkdouble{\abx@MakeMarkcase{\sectionmarkformat#1}}} {\ifkomabibtotoc {\addsec{#1}} {\section*{#1}}% \@mkdouble{\abx@MakeMarkcase{#1}}}} {\bibliography@heading{#1}}} \defbibheading{bibintoc}[\refname]{% \addsec{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblistintoc}[\biblistname]{% \addsec{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibnumbered}[\refname]{% \section{#1}% \@mkdouble{\abx@MakeMarkcase{\sectionmarkformat#1}}} \defbibheading{biblistnumbered}[\biblistname]{% \section{#1}% \@mkdouble{\abx@MakeMarkcase{\sectionmarkformat#1}}} \defbibheading{subbibliography}[\refname]{% \subsection*{#1}% \@mkright{\abx@MakeMarkcase{#1}}} \defbibheading{subbibintoc}[\refname]{% \subsection*{#1}% \addcontentsline{toc}{subsection}{#1}% \@mkright{\abx@MakeMarkcase{#1}}} \defbibheading{subbibnumbered}[\refname]{% \subsection{#1}} \or % scrbook/scrreprt \defbibheading{bibliography}[\bibname]{% \ifcsundef{bibliography@heading} {\ifkomabibtotocnumbered {\chapter{#1}% \@mkdouble{\abx@MakeMarkcase{\chaptermarkformat#1}}} {\ifkomabibtotoc {\addchap{#1}} {\chapter*{#1}}% \@mkdouble{\abx@MakeMarkcase{#1}}}} {\bibliography@heading{#1}}} \defbibheading{biblist}[\biblistname]{% \ifcsundef{bibliography@heading} {\ifkomabibtotocnumbered {\chapter{#1}% \@mkdouble{\abx@MakeMarkcase{\chaptermarkformat#1}}} {\ifkomabibtotoc {\addchap{#1}} {\chapter*{#1}}% \@mkdouble{\abx@MakeMarkcase{#1}}}} {\bibliography@heading{#1}}} \defbibheading{bibintoc}[\bibname]{% \addchap{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblistintoc}[\biblistname]{% \addchap{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibnumbered}[\bibname]{% \chapter{#1}% \@mkdouble{\abx@MakeMarkcase{\chaptermarkformat#1}}} \defbibheading{biblistnumbered}[\biblistname]{% \chapter{#1}% \@mkdouble{\abx@MakeMarkcase{\chaptermarkformat#1}}} \defbibheading{subbibliography}[\refname]{% \section*{#1}% \@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}% \ifmemoirbibintoc {\phantomsection \addcontentsline{toc}{chapter}{#1}} {}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblist}[\biblistname]{% \chapter*{#1}% \ifmemoirbibintoc {\phantomsection \addcontentsline{toc}{chapter}{#1}} {}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibintoc}[\refname]{% \chapter*{#1}% \phantomsection \addcontentsline{toc}{chapter}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblistintoc}[\biblistname]{% \chapter*{#1}% \phantomsection \addcontentsline{toc}{chapter}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibnumbered}[\refname]{% \chapter{#1}} \defbibheading{biblistnumbered}[\biblistname]{% \chapter{#1}} \defbibheading{subbibliography}[\refname]{% \section*{#1}% \ifmemoirbibintoc {\phantomsection \addcontentsline{toc}{section}{#1}} {}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{subbibintoc}[\refname]{% \section*{#1}% \phantomsection \addcontentsline{toc}{section}{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{subbibnumbered}[\refname]{% \section{#1}} \or % memoir (book) \ifcsundef{memUChead}{}{\def\abx@MakeMarkcase{\memUChead}}% \defbibheading{bibliography}[\bibname]{% \chapter*{#1}% \ifmemoirbibintoc {\phantomsection \addcontentsline{toc}{chapter}{#1}} {}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblist}[\biblistname]{% \chapter*{#1}% \ifmemoirbibintoc {\phantomsection \addcontentsline{toc}{chapter}{#1}} {}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibintoc}[\bibname]{% \chapter*{#1}% \phantomsection \addcontentsline{toc}{chapter}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{biblistintoc}[\biblistname]{% \chapter*{#1}% \phantomsection \addcontentsline{toc}{chapter}{#1}% \@mkdouble{\abx@MakeMarkcase{#1}}} \defbibheading{bibnumbered}[\bibname]{% \chapter{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{biblistnumbered}[\biblistname]{% \chapter{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{subbibliography}[\refname]{% \section*{#1}% \ifmemoirbibintoc {\phantomsection \addcontentsline{toc}{section}{#1}} {}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{subbibintoc}[\refname]{% \section*{#1}% \phantomsection \addcontentsline{toc}{section}{#1}% \if@twoside\markright{\abx@MakeMarkcase{#1}}\fi} \defbibheading{subbibnumbered}[\refname]{% \section{#1}} \fi % ------------------------------------------------------------------ % GENERIC CITATION COMMANDS % ------------------------------------------------------------------ \DeclareCiteCommand{\fullcite} {\usebibmacro{prenote}} {\usedriver {\DeclareNameAlias{sortname}{default}} {\thefield{entrytype}}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand{\footfullcite}[\mkbibfootnote] {\usebibmacro{prenote}} {\usedriver {\DeclareNameAlias{sortname}{default}} {\thefield{entrytype}}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand{\citeauthor} {\boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\ifciteindex {\indexnames{labelname}} {}% \printnames{labelname}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand*{\citeauthor} {\boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\ifciteindex {\indexnames{labelname}} {}% \printnames[][1-1]{labelname}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand{\citetitle} {\boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\ifciteindex {\indexfield{indextitle}} {}% \printfield[citetitle]{labeltitle}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand*{\citetitle} {\boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\ifciteindex {\indexfield{indextitle}} {}% \printfield[citetitle]{title}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand{\citeyear} {\boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\printfield{year}} {\multicitedelim} {\usebibmacro{postnote}} \DeclareCiteCommand*{\citeyear} {\boolfalse{citetracker}% \boolfalse{pagetracker}% \usebibmacro{prenote}} {\printfield{year}\printfield{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*{\prenotedelim}} {\nocite{\thefield{entrykey}}} {} {\printfield{postnote}} \DeclareCiteCommand{\pnotecite}[\mkbibparens] {\printfield{prenote}% \setunit*{\prenotedelim}} {\nocite{\thefield{entrykey}}} {} {\printfield{postnote}} \DeclareCiteCommand{\fnotecite}[\mkbibfootnote] {\printfield{prenote}% \setunit*{\prenotedelim}} {\nocite{\thefield{entrykey}}} {} {\printfield{postnote}} \newrobustcmd*{\volcite}{\volcitecmd\cite} \newrobustcmd*{\pvolcite}{\volcitecmd\parencite} \newrobustcmd*{\fvolcite}{\volcitecmd\footcite} \newrobustcmd*{\ftvolcite}{\volcitecmd\footcitetext} \newrobustcmd*{\svolcite}{\volcitecmd\smartcite} \newrobustcmd*{\tvolcite}{\volcitecmd\textcite} \newrobustcmd*{\avolcite}{\volcitecmd\autocite} \newrobustcmd*{\volcites}{\multivolcitecmd\cites} \newrobustcmd*{\pvolcites}{\multivolcitecmd\parencites} \newrobustcmd*{\fvolcites}{\multivolcitecmd\footcites} \newrobustcmd*{\ftvolcites}{\multivolcitecmd\footcitetexts} \newrobustcmd*{\svolcites}{\multivolcitecmd\smartcites} \newrobustcmd*{\tvolcites}{\multivolcitecmd\textcites} \newrobustcmd*{\avolcites}{\multivolcitecmd\autocites} \newrobustcmd*{\Cite}{\bibsentence\cite} \newrobustcmd*{\Parencite}{\bibsentence\parencite} \newrobustcmd*{\Footcite}{\footcite} \newrobustcmd*{\Footcitetext}{\footcitetext} \newrobustcmd*{\Smartcite}{\bibsentence\smartcite} \newrobustcmd*{\Textcite}{\bibsentence\textcite} \newrobustcmd*{\Citeauthor}{% \@ifstar{\bibsentence\citeauthor*}{\bibsentence\citeauthor}} \newrobustcmd*{\Citetitle}{\bibsentence\citetitle} \newrobustcmd*{\Volcite}{\volcitecmd\Cite} \newrobustcmd*{\Pvolcite}{\volcitecmd\Parencite} \newrobustcmd*{\Fvolcite}{\volcitecmd\Footcite} \newrobustcmd*{\Ftvolcite}{\volcitecmd\Footcitetext} \newrobustcmd*{\Svolcite}{\volcitecmd\Smartcite} \newrobustcmd*{\Tvolcite}{\volcitecmd\Textcite} \newrobustcmd*{\Avolcite}{\volcitecmd\Autocite} \newrobustcmd*{\Volcites}{\multivolcitecmd\Cites} \newrobustcmd*{\Pvolcites}{\multivolcitecmd\Parencites} \newrobustcmd*{\Fvolcites}{\multivolcitecmd\Footcites} \newrobustcmd*{\Ftvolcites}{\multivolcitecmd\Footcitetext} \newrobustcmd*{\Svolcites}{\multivolcitecmd\Smartcites} \newrobustcmd*{\Tvolcites}{\multivolcitecmd\Textcites} \newrobustcmd*{\Avolcites}{\multivolcitecmd\Autocites} \newrobustcmd*{\Notecite}{\bibsentence\notecite} \newrobustcmd*{\Pnotecite}{\bibsentence\pnotecite} \newrobustcmd*{\Fnotecite}{\fnotecite} \DeclareMultiCiteCommand{\cites}{\cite}{\multicitedelim} \DeclareMultiCiteCommand{\parencites}[\mkbibparens]{\parencite}{\multicitedelim} \DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]{\footcite}{\multicitedelim} \DeclareMultiCiteCommand{\footcitetexts}[\mkbibfootnotetext] {\footcitetext}{\multicitedelim} \DeclareMultiCiteCommand{\smartcites}[\iffootnote\mkbibparens\mkbibfootnote] {\smartcite}{\multicitedelim} \DeclareMultiCiteCommand{\supercites}[\mkbibsuperscript] {\supercite}{\supercitedelim} \DeclareMultiCiteCommand{\textcites}{\textcite}{\multicitedelim} \newrobustcmd*{\Cites}{\bibsentence\cites} \newrobustcmd*{\Parencites}{\bibsentence\parencites} \newrobustcmd*{\Footcites}{\footcites} \newrobustcmd*{\Footcitetexts}{\footcitetexts} \newrobustcmd*{\Smartcites}{\bibsentence\smartcites} \newrobustcmd*{\Textcites}{\bibsentence\textcites} \DeclareAutoCiteCommand{plain}{\cite}{\cites} \DeclareAutoCiteCommand{inline}{\parencite}{\parencites} %\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites} \DeclareAutoCiteCommand{footnote}[f]{\smartcite}{\smartcites} \DeclareAutoCiteCommand{superscript}[l]{\supercite}{\supercites} \newrobustcmd*{\Autocite}{\bibsentence\autocite} \newrobustcmd*{\Autocites}{\bibsentence\autocites} % ------------------------------------------------------------------ % GENERIC CITATION MACROS % ------------------------------------------------------------------ \newbibmacro*{citeindex}{% \ifciteindex {\indexnames{labelname}% \indexfield{indextitle}} {}} \newbibmacro*{shorthandintro}{% \iffieldundef{shorthandintro} {\iffieldundef{shorthand} {} {\setunit{\addspace}% \printtext[parens]{% \bibstring{citedas}\space \printfield{shorthand}}}} {\setunit{\addspace}% \printtext[parens]{\printfield{shorthandintro}}}} % citation commands \newbibmacro*{prenote}{% \iffieldundef{prenote} {} {\printfield{prenote}% \setunit{\prenotedelim}}} \newbibmacro*{postnote}{% \iffieldundef{postnote} {} {\setunit{\postnotedelim}% \printfield{postnote}}} % multicite commands \newbibmacro*{multiprenote}{% \iffieldundef{multiprenote} {} {\printfield{multiprenote}% \prenotedelim}} \newbibmacro*{multipostnote}{% \iffieldundef{multipostnote} {} {\postnotedelim \printfield{multipostnote}}} % ------------------------------------------------------------------ % GENERIC BIBLIOGRAPHY MACROS % ------------------------------------------------------------------ \newbibmacro*{bibindex}{% \ifbibindex {\indexnames{labelname}% \indexfield{indextitle}} {}} \newbibmacro*{author/editor}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{author}} {\usebibmacro{editor}}} \newbibmacro*{author/editor+others}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{author}} {\usebibmacro{editor+others}}} \newbibmacro*{author/translator}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{author}} {\usebibmacro{translator}}} \newbibmacro*{author/translator+others}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{author}} {\usebibmacro{translator+others}}} \newbibmacro*{author/editor/translator}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{author}} {\ifboolexpr{ test \ifuseeditor and not test {\ifnameundef{editor}} } {\usebibmacro{editor}} {\usebibmacro{translator}}}} \newbibmacro*{author/editor+others/translator+others}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\usebibmacro{author}} {\ifboolexpr{ test \ifuseeditor and not test {\ifnameundef{editor}} } {\usebibmacro{editor+others}} {\usebibmacro{translator+others}}}} \newbibmacro*{author}{% \ifboolexpr{ test \ifuseauthor and not test {\ifnameundef{author}} } {\printnames{author}% \iffieldundef{authortype} {} {\setunit{\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}} \newbibmacro*{journal}{% \ifboolexpr{ test {\iffieldundef{journaltitle}} and test {\iffieldundef{journalsubtitle}} } {} {\printtext[journaltitle]{% \printfield[titlecase]{journaltitle}% \setunit{\subtitlepunct}% \printfield[titlecase]{journalsubtitle}}}} \newbibmacro*{periodical}{% \ifboolexpr{ test {\iffieldundef{title}} and test {\iffieldundef{subtitle}} } {} {\printtext[title]{% \printfield[titlecase]{title}% \setunit{\subtitlepunct}% \printfield[titlecase]{subtitle}}}} \newbibmacro*{issue}{% \ifboolexpr{ test {\iffieldundef{issuetitle}} and test {\iffieldundef{issuesubtitle}} } {} {\printtext[issuetitle]{% \printfield[titlecase]{issuetitle}% \setunit{\subtitlepunct}% \printfield[titlecase]{issuesubtitle}}}} \newbibmacro*{in:}{% \printtext{% \bibstring{in}\intitlepunct}} \newbibmacro*{date}{\printdate} \newbibmacro*{url+urldate}{% \usebibmacro{url}% \iffieldundef{urlyear} {} {\setunit*{\addspace}% \usebibmacro{urldate}}} \newbibmacro*{url}{\printfield{url}} \newbibmacro*{urldate}{\printurldate} \newbibmacro*{pageref}{% \iflistundef{pageref} {} {\printtext[parens]{% \ifnumgreater{\value{pageref}}{1} {\bibstring{backrefpages}\ppspace} {\bibstring{backrefpage}\ppspace}% \printlist[pageref][-\value{listtotal}]{pageref}}}} \newbibmacro*{setpageref}{% \iflistundef{pageref} {} {\printtext{% \ifnumgreater{\value{pageref}}{1} {\bibstring{backrefpages}\ppspace} {\bibstring{backrefpage}\ppspace}% \printlist[pageref][-\value{listtotal}]{pageref}}}} \newbibmacro*{eprint}{% \iffieldundef{eprinttype} {\printfield{eprint}} {\printfield[eprint:\strfield{eprinttype}]{eprint}}} \newbibmacro*{annotation}{% \iffieldundef{annotation} {\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}} {\printfield{annotation}}} \newbibmacro*{abstract}{% \iffieldundef{abstract} {\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}} {\printfield{abstract}}} \newbibmacro*{related:default}[1]{% \entrydata*{#1}{% \usedriver {\ifnameundef{savedauthor} {\ifnameundef{savededitor} {} {\ifnamesequal{editor}{savededitor} {\clearname{editor}} {}}} {\ifnamesequal{author}{savedauthor} {\clearname{author}} {}}% \renewbibmacro*{related:init}{}% \DeclareNameAlias{sortname}{default}% \ifbibmacroundef{date+extradate} {} {\renewbibmacro*{date+extradate}{}% \renewbibmacro*{date}{\printdate}}% \renewbibmacro*{pageref}{}} {\thefield{entrytype}}}} \newbibmacro*{related:bytranslator}[1]{% \entrydata{#1}{% \renewbibmacro*{name:hook}[1]{% \ifnumequal{\value{listcount}}{1} {\begingroup \mkrelatedstring% \lbx@initnamehook{#1}% \endgroup} {}}% \printnames[bytranslator]{translator}% \setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}% \usebibmacro{title}% \setunit{\addspace}% \printtext[parens]{% \printlist{location}% \iflistundef{publisher} {\setunit*{\addcomma\space}} {\setunit*{\addcolon\space}}% \printlist{publisher}% \setunit*{\addcomma\space}% \printdate}}} \newbibmacro*{related:multivolume}[1]{% \entrydata*{#1}{% \printtext{% \printfield{volume}% \printfield{part}}% \setunit*{\addcolon\space}% \usebibmacro{title}% \ifboolexpr{ test {\ifnamesequal{author}{savedauthor}} or test {\ifnameundef{author}} } {} {\usebibmacro{bytypestrg}{author}{author}% \setunit{\addspace}% \printnames[byauthor]{author} \newunit\newblock}% \ifboolexpr{ test {\ifnamesequal{editor}{savededitor}} or test {\ifnameundef{editor}} } {} {\usebibmacro{byeditor+others}% \newunit\newblock}% \printdate}} \newbibmacro*{related:origpubin}[1]{% \entrydata*{#1}{% \printfield{year}% \ifboolexpr{ test {\iflistsequal{publisher}{savedpublisher}} or test {\iflistundef{publisher}} } {} {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}% \printlist{publisher}% \setunit{\addcomma\space}% \iflistsequal{location}{savedlocation} {} {\printlist{location}}}}} \newbibmacro*{related:origpubas}[1]{% \entrydata*{#1}{% \usebibmacro{title}% \ifboolexpr{ test {\iflistsequal{publisher}{savedpublisher}} or test {\iflistundef{publisher}} } {} {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}% \printlist{publisher}% \setunit{\addcomma\space}% \iflistsequal{location}{savedlocation} {} {\printlist{location}}}}} \DeclareFieldFormat{title:hook}{% \begingroup \mkrelatedstring% \lbx@inittitlehook{#1}% \endgroup \mkbibemph{#1}} \newbibmacro*{related:reprintfrom}[1]{% \entrydata*{#1}{% \iffieldundef{journaltitle} {\iffieldundef{maintitle} {\printfield[title:hook]{booktitle}} {\printfield[title:hook]{maintitle}}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \printfield{edition}% \newunit \iffieldundef{volume} {} {\printfield{volume}% \printfield{part}} \newunit\newblock \usebibmacro{series+number}% \newunit\newblock \printfield{note}% \newunit\newblock \usebibmacro{publisher+location+date}% \newunit\newblock \usebibmacro{chapter+pages}} {\printfield[title:hook]{journaltitle}% \newunit\newblock \usebibmacro{byeditor+others}% \newunit\newblock \usebibmacro{note+pages}}}} \endinput