diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex/biblatex.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/biblatex/biblatex.sty | 1453 |
1 files changed, 582 insertions, 871 deletions
diff --git a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty index 4d72ad97533..8cac4f17a05 100644 --- a/Master/texmf-dist/tex/latex/biblatex/biblatex.sty +++ b/Master/texmf-dist/tex/latex/biblatex/biblatex.sty @@ -1,5 +1,5 @@ % Copyright (c) 2006-2011 Philipp Lehman. -% 2012-2017 Philip Kime, Audrey Boruvka, Joseph Wright +% 2012-2016 Philip Kime, Audrey Boruvka, Joseph Wright % % Permission is granted to copy, distribute and/or modify this % software under the terms of the LaTeX Project Public License @@ -11,8 +11,8 @@ % particular purpose. % Set up the version strings here -\def\abx@date{2017/11/04} -\def\abx@version{3.8} +\def\abx@date{2016/12/05} +\def\abx@version{3.7} \def\abx@bbxid{\abx@date\space v\abx@version\space biblatex bibliography style (PK/JW/AB)} \def\abx@cbxid{\abx@date\space v\abx@version\space biblatex citation style (PK/JW/AB)} \def\abx@lbxid{\abx@date\space v\abx@version\space biblatex localization (PK/JW/AB)} @@ -21,12 +21,12 @@ % This is not updated by build script as the control file version % does not necessarily change with the package version. % This is used when writing the .bcf -\def\blx@bcfversion{3.4} +\def\blx@bcfversion{3.3} % This is not updated by build script as the bbl version % does not necessarily change with the package version. % This is used when checking the .bbl -\def\blx@bblversion{2.9} +\def\blx@bblversion{2.8} \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{biblatex} @@ -52,31 +52,6 @@ This is a fatal error. I'm aborting now.}% \endinput} -\@ifpackagelater{xstring}{2013/10/13} - {} - {\PackageError{biblatex} - {Outdated 'xstring' package} - {Upgrade to xstring v1.7c (2013/10/13) or later.\MessageBreak - I found: '\csuse{xstringversion}'.\MessageBreak - This is a fatal error. I'm aborting now.}% - \endinput} - -% polyglossia pretends to be babel, so we need to make sure -% we are definitely talking to babel here. -\AtEndPreamble{% - \@ifpackageloaded{polyglossia} - {} - {\@ifpackageloaded{babel} - {\@ifpackagelater{babel}{2016/04/23} - {} - {\PackageError{biblatex} - {Outdated 'babel' package} - {Upgrade to babel 3.9r (2016/04/23) or later.\MessageBreak - I found: '\csuse{ver@babel.sty}'.\MessageBreak - This is a fatal error. I'm aborting now.}% - \endinput}} - {}}} - %% Category codes \def\blx@docatcodes{% @@ -100,26 +75,6 @@ %% Compatibility -\begingroup -\catcode`\#=12 -\gdef\blx@patchbidifootnotes{% - \patchcmd\@footnotetext - {#1} - {\toggletrue{blx@footnote}#1} - {\togglefalse{blx@tempa}} - {}% - \patchcmd\@LTRfootnotetext - {#1} - {\toggletrue{blx@footnote}#1} - {\togglefalse{blx@tempa}} - {}% - \patchcmd\@RTLfootnotetext - {#1} - {\toggletrue{blx@footnote}#1} - {\togglefalse{blx@tempa}} - {}} -\endgroup - \AtEndPreamble{% \def\do#1{% \@ifpackageloaded{#1} @@ -130,7 +85,7 @@ \docsvlist{% amsrefs,apacite,babelbib,backref,bibtopic,bibunits,chapterbib, cite,citeref,drftcite,footbib,inlinebib,jurabib,mcite,mciteplus, - mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs,etextools}% + mlbib,multibbl,multibib,natbib,opcit,overcite,splitbib,ucs}% \def\blx@langstrings{}% % Set up sortlocale defaults and default language if babel/polyglossia is not loaded \ifdefstring\blx@sortlocale{auto} @@ -144,7 +99,7 @@ \ifundef\xpg@loaded {\let\xpg@loaded\@empty \let\xpg@vloaded\@empty - \PackageWarningNoLine{biblatex}{Upgrade package 'polyglossia' to > v1.42.0 recommended}} + \PackageWarningNoLine{biblatex}{Upgrade package 'polyglossia' to >v1.42.0 recommended}} {}% \def\do#1{\blx@langsetup{#1}}% \expandafter\docsvlist\expandafter{\xpg@loaded}% @@ -183,24 +138,21 @@ \undef\blx@mkautolangbabel \undef\blx@mkautolangpoly \undef\blx@mknoautolang - \ifnum\blx@hyperref=\thr@@ + \ifnum\blx@hyperref=\z@ + \blx@mknohyperref \else - \ifnum\blx@hyperref=\z@ - \blx@mknohyperref - \else - \@ifpackageloaded{hyperref} - {\blx@mkhyperref} - {\ifnum\blx@hyperref=\@ne - \blx@warning@noline{% - Missing 'hyperref' package.\MessageBreak - Setting 'hyperref=false'}% - \fi - \blx@mknohyperref}% - \fi - \undef\blx@mkhyperref - \undef\blx@mknohyperref + \@ifpackageloaded{hyperref} + {\blx@mkhyperref} + {\ifnum\blx@hyperref=\@ne + \blx@warning@noline{% + Missing 'hyperref' package.\MessageBreak + Setting hyperref=false}% + \fi + \blx@mknohyperref}% \fi \providecommand*{\nolinkurl}{\url}% + \undef\blx@mkhyperref + \undef\blx@mknohyperref \ifundef\TE@hook {\let\TE@hook\@empty \toggletrue{blx@tempa}% @@ -243,9 +195,6 @@ {\togglefalse{blx@tempa}} {}} {}% - \@ifpackageloaded{bidi}% bidi - {\blx@patchbidifootnotes} - {}% \@ifclassloaded{memoir} {\def\do#1{% \patchcmd#1% @@ -459,8 +408,8 @@ \def\themaxextratitle{\the\c@maxextratitle} \newcounter{maxextratitleyear} \def\themaxextratitleyear{\the\c@maxextratitleyear} -\newcounter{maxextradate} -\def\themaxextradate{\the\c@maxextradate} +\newcounter{maxextrayear} +\def\themaxextrayear{\the\c@maxextrayear} \newcounter{maxextraalpha} \def\themaxextraalpha{\the\c@maxextraalpha} \newcounter{abbrvpenalty} @@ -552,7 +501,6 @@ \newtoggle{blx@mcite} \newtoggle{blx@loadfiles} \newtoggle{blx@singletitle} -\newtoggle{blx@sortsets} \newtoggle{blx@crossrefsource} \newtoggle{blx@xrefsource} \newtoggle{blx@uniqueprimaryauthor} @@ -573,7 +521,6 @@ \newtoggle{blx@bibindex} \newtoggle{blx@localnumber} \newtoggle{blx@refcontext} -\newtoggle{blx@nosuffrecurse} % Nice command from etextools which causes too many problems if you load % the whole package @@ -599,29 +546,18 @@ \listadd\blx@allrefsections{0} % Used to track sorting name key specifications -\global\let\blx@sortingnamekeytemplates\@empty - -% Used to track uniquename templates -\global\let\blx@untemplatespecs\@empty - -% Used to track labelalphaname templates -\global\let\blx@lantemplatespecs\@empty +\global\let\blx@sortingnamekeyspecs\@empty % Used to track transliterations \global\let\blx@translits\@empty -% Use to track every entry found in .bbl -% Used to issue defernumbers warning about missing keys because this causes -% defernumbers labelling to fail. -\global\let\blx@entries\@empty - -% Initialise some lists which track changing citations/sortingtemplates +% Initialise some lists which track changing citations/sortschemes % etc. between runs \global\let\blx@cites\@empty \global\let\blx@refcontexts\@empty \global\let\blx@lastrefcontexts\@empty -\global\let\blx@sortingtemplatenames\@empty -\global\let\blx@dlistnames\@empty +\global\let\blx@sortschemes\@empty +\global\let\blx@lastsortschemes\@empty \global\let\blx@biblists\@empty \global\let\blx@lastbiblists\@empty \global\let\blx@lastcites\@empty @@ -640,57 +576,18 @@ % Deprecations \newrobustcmd*{\DeprecateField}[2]{% \csdef{abx@field@#1}{% - \ifcsundef{abx@field@legacy@warning@#1}{\blx@warning@noline{Field '#1' is deprecated. #2}}{}% + \ifcsundef{abx@field@legacy@warning@#1}{\blx@warning@noline{Field '#1' deprecated. #2}}{}% \global\csdef{abx@field@legacy@warning@#1}{}}}% \newrobustcmd*{\DeprecateList}[2]{% \csdef{abx@list@#1}{% - \ifcsundef{abx@list@legacy@warning@#1}{\blx@warning@noline{List '#1' is deprecated. #2}}{}% + \ifcsundef{abx@list@legacy@warning@#1}{\blx@warning@noline{List '#1' deprecated. #2}}{}% \global\csdef{abx@list@legacy@warning@#1}{}}}% \newrobustcmd*{\DeprecateName}[2]{% \csdef{abx@name@#1}{% - \ifcsundef{abx@name@legacy@warning@#1}{\blx@warning@noline{Name '#1' is deprecated. #2}}{}% + \ifcsundef{abx@name@legacy@warning@#1}{\blx@warning@noline{Name '#1' deprecated. #2}}{}% \global\csdef{abx@name@legacy@warning@#1}{}}}% -\let\blx@aliasfields\@empty - -\newrobustcmd*{\DeprecateFieldWithReplacement}[2]{% - \appto\blx@aliasfields{% - \ifcsundef{abx@field@#2} - {} - {\csdef{abx@field@#1}{% - \csuse{abx@field@#2}% - \ifcsundef{abx@field@legacy@warning@#1} - {\blx@warning@noline{Field '#1' is deprecated.\MessageBreak - Please use '#2' instead.\MessageBreak - Using '#2' now.}} - {}% - \global\csdef{abx@field@legacy@warning@#1}{}}}}} - -\newrobustcmd*{\DeprecateListWithReplacement}[2]{% - \appto\blx@aliasfields{% - \ifcsundef{abx@list@#2} - {} - {\csdef{abx@list@#1}{% - \csuse{abx@list@#2}% - \ifcsundef{abx@list@legacy@warning@#1} - {\blx@warning@noline{List '#1' is deprecated.\MessageBreak - Please use '#2' instead.\MessageBreak - Using '#2' now.}} - {}% - \global\csdef{abx@list@legacy@warning@#1}{}}}}} - -\newrobustcmd*{\DeprecateNameWithReplacement}[2]{% - \appto\blx@aliasfields{% - \ifcsundef{abx@name@#2} - {} - {\csdef{abx@name@#1}{% - \csuse{abx@name@#2}% - \ifcsundef{abx@name@legacy@warning@#1} - {\blx@warning@noline{Name '#1' is deprecated.\MessageBreak - Please use '#2' instead.\MessageBreak - Using '#2' now.}} - {}% - \global\csdef{abx@name@legacy@warning@#1}{}}}}} +\DeprecateField{prefixnumber}{Please use 'labelprefix' instead} %% Initialisation \def\blx@blxinit{% @@ -1042,8 +939,8 @@ \def\blx@err@nosort#1{% \blx@error - {Sorting template '#1' not found} - {The sorting template '#1' does not seem to have been defined anywhere}} + {Sorting scheme '#1' not found} + {The sorting scheme '#1' does not seem to have been defined anywhere}} \def\blx@err@secfirst{% \blx@error @@ -1133,8 +1030,8 @@ \def\blx@inf@refsec{% \blx@info{Reference section=\the\c@refsection}}% -\def\blx@inf@delimdeclare#1#2{% - \blx@info{Delimiter '#1' in context '#2' already defined, overwriting}} +\def\blx@warn@delimdeclare#1#2{% + \blx@warning{Delimiter '#1' in context '#2' already defined, overwriting}} \def\blx@warn@delimuse#1#2{% \blx@warning{Delimiter '#1' in context '#2' undefined}} @@ -1413,7 +1310,7 @@ {\blx@defprefchars} {\let\blx@prefchars\@empty \blx@defprefchars}} -\DeclarePrefChars{'’-} +\DeclarePrefChars{'} \protected\def\blx@imc@ifprefchar{% \ifhmode @@ -1995,22 +1892,6 @@ \def\blx@defbibmacro#1#2{% \expandafter#1\csname abx@macro@\detokenize{#2}\endcsname} -% {<alias>}{<name>} -\newrobustcmd*{\letbibmacro}{% - \@ifstar - {\blx@letbibmacro@i} - {\blx@letbibmacro}} - -\def\blx@letbibmacro#1#2{% - \blx@letbibmacro@i{\detokenize{#1}}{\detokenize{#2}}} - -\def\blx@letbibmacro@i#1#2{% - \ifcsundef{abx@macro@#2} - {\blx@error - {Bibliography macro '#2' undefined} - {Use '\string\newbibmacro' to define this macro}} - {\csletcs{abx@macro@#1}{abx@macro@#2}}} - % {<name>} \newrobustcmd*{\usebibmacro}{% \@ifstar @@ -2282,7 +2163,7 @@ \begingroup \letcs\blx@tempa{abx@field@#2}% \letcs\blx@tempb{abx@field@#1}% - \blx@resetdata + \csundef{abx@field@#1}% \blx@getdata{\blx@tempa}% \blx@imc@iffieldequals{#1}\blx@tempb {\aftergroup\@firstoftwo} @@ -2308,7 +2189,7 @@ \begingroup \letcs\blx@tempa{abx@field@#2}% \letcs\blx@tempb{abx@list@#1}% - \blx@resetdata + \csundef{abx@list@#1}% \blx@getdata{\blx@tempa}% \blx@imc@iflistequals{#1}\blx@tempb {\aftergroup\@firstoftwo} @@ -2327,7 +2208,7 @@ \begingroup \letcs\blx@tempa{abx@field@#2}% \letcs\blx@tempb{abx@name@#1}% - \blx@resetdata + \csundef{abx@name@#1}% \blx@getdata{\blx@tempa}% \blx@imc@ifnameequals{#1}\blx@tempb {\aftergroup\@firstoftwo} @@ -2918,15 +2799,15 @@ % [<pagination>][<postpro>]{<string>} \newrobustcmd*{\blx@imc@mkpagetotal}[1][bookpagination]{% \begingroup - \def\blx@tempa{\blx@mkpagetotal{pagetotal}}% + \def\blx@tempa{\blx@mkpagetotal{page}}% \iffieldundef{#1} {} {\iffieldequalstr{#1}{none} {\def\blx@tempa{\blx@mkpagetotal@i}} - {\iffieldbibstring{#1total} - {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1total}}}} + {\iffieldbibstring{#1} + {\edef\blx@tempa{\blx@mkpagetotal{\thefield{#1}}}} {\blx@warning@entry{% - Unknown pagination type '\strfield{#1total}'}}}}% + Unknown pagination type '\strfield{#1}'}}}}% \@ifnextchar[%] {\blx@tempa} {\blx@tempa[\@firstofone]}} @@ -2963,6 +2844,8 @@ {\csuse{abx@range@#1}} {}} +\let\frangelen\rangelen % Legacy name for \rangelen + % <*>[<postpro>]{<string>} \newrobustcmd*{\mkcomprange}{% \begingroup @@ -3210,46 +3093,19 @@ {\blx@declaredelim@i{}{}{#2}{#3}} {\def\do##1{% \listcsgadd{blx@declaredelimcontexts@#2}{##1}% - \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}}% + \blx@declaredelim@i{blx@printdelim@##1@}{##1}{#2}{#3}} \docsvlist{#1}}}% \def\blx@declaredelim@i#1#2#3#4{% \begingroup \def\do##1{% \ifcsdef{#1##1} - {\blx@inf@delimdeclare{##1}{#2}} + {\blx@warn@delimdeclare{##1}{#2}} {}% \csgdef{#1##1}{#4}}% - \docsvlist{#3}% + \docsvlist{#3} \endgroup} -% *[<contextname, ...>]{<alias>}{<delim>} -\newrobustcmd*{\DeclareDelimAlias}{% - \@ifstar - {\blx@declaredelimalias} - {\blx@declaredelimaliasauto}} - -\newrobustcmd*{\blx@declaredelimalias}[3][]{% - \ifblank{#1} - {\blx@declaredelimalias@i{}{#2}{#3}} - {\def\do##1{% - \blx@declaredelimalias@i{blx@printdelim@##1@}{#2}{#3}}% - \docsvlist{#1}}} - -\newrobustcmd*{\blx@declaredelimaliasauto}[2]{% - \blx@declaredelimalias@i{}{#1}{#2}% - \ifcsvoid{blx@declaredelimcontexts@#2} - {} - {\def\do##1{% - \blx@declaredelimalias@i{blx@printdelim@##1@}{#1}{#2}}% - \dolistcsloop{blx@declaredelimcontexts@#2}}} - -\def\blx@declaredelimalias@i#1#2#3{% - \ifcsdef{#1#2} - {\blx@inf@delimdeclare{#2}{#1}} - {}% - \global\csletcs{#1#2}{#1#3}} - \def\blx@delimcontext{none} \newcommand*{\printdelim}[2][]{% \ifblank{#1} @@ -3273,25 +3129,13 @@ \newcommand*{\DeclareDelimcontextAlias}[2]{% \csgdef{blx@delimcontextalias@#1}{#2}} -\newrobustcmd*{\AtUsedriver}{% - \@ifstar - {\global\undef\blx@hook@usedriver - \gappto\blx@hook@usedriver} - {\gappto\blx@hook@usedriver}} -\@onlypreamble\AtUsedriver -\def\blx@imc@UseUsedriverHook{\csuse{blx@hook@usedriver}} -\blx@regimcs{\UseUsedriverHook} - -\AtUsedriver{% - \let\finentry\blx@finentry@usedrv - \let\newblock\relax - \let\abx@macro@bibindex\@empty - \let\abx@macro@pageref\@empty} - % {<init>}{<entrytype>} \protected\def\blx@imc@usedriver#1#2{% \begingroup - \csuse{blx@hook@usedriver}% + \let\finentry\blx@finentry@usedrv + \let\newblock\relax + \let\abx@macro@bibindex\@empty + \let\abx@macro@pageref\@empty \csuse{blx@hook@bbxinit}#1% \delimcontext{bib}% \blx@beglangbib @@ -3401,44 +3245,11 @@ \blx@setunit\entrysetpunct \global\toggletrue{blx@block}} -\def\ifentryseen{\blx@imc@ifentryseen} -\def\ifentryinbib{\blx@imc@ifentryinbib} -\def\ifentrycategory{\blx@imc@ifentrycategory} -\def\ifentrykeyword{\blx@imc@ifentrykeyword} - -\def\blx@imc@iflabeldateisdate{% - \ifboolexpr{% - togl {blx@labeldateparts} - and not test {\iffieldundef{labeldatesource}} - and - (test {\iffieldequalstr{labeldatesource}{}} - or test {\iffieldequalstr{labeldatesource}{year}})}} - -\def\blx@imc@ifdatehasyearonlyprecision#1{% - \ifboolexpr{not test {\iffieldundef{#1year}} - and (test {\ifcsstring{blx@dateformat@#1date}{year}} - or (test {\iffieldundef{#1month}} - and test {\iffieldundef{#1season}}))}} - -\def\blx@imc@ifdatehastime#1{% - \ifboolexpr{togl {blx@#1dateusetime} - and not test {\iffieldundef{#1hour}}}} - -\def\blx@imc@ifdateshavedifferentprecision#1#2{% - \ifboolexpr{ (test {\ifdatehasyearonlyprecision{#1}} - and not test {\ifdatehasyearonlyprecision{#2}}) - or (not test {\ifdatehasyearonlyprecision{#1}} - and test {\ifdatehasyearonlyprecision{#2}}) - or (test {\ifdatehastime{#1}} - and not test {\ifdatehastime{#2}}) - or (not test {\ifdatehastime{#1}} - and test {\ifdatehastime{#2}})}} - \blx@regimcs{% \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist \thename \strname \clearfield \clearlist \clearname \restorefield \restorelist \restorename - \ifcategory \ifkeyword - \ifciteseen \ifciteibid \ifciteidem \ifopcit \ifloccit + \ifcategory \ifentrycategory \ifkeyword \ifentrykeyword + \ifciteseen \ifentryseen \ifentryinbib \ifciteibid \ifciteidem \ifopcit \ifloccit \ifcurrentfield \ifcurrentlist \ifcurrentname \ifentrytype \iffieldequalcs \iffieldequals \iffieldequalstr \iffieldsequal \ifbibmacroundef \iffieldundef \iffieldxref \iflistequalcs \iflistequals @@ -3449,8 +3260,6 @@ \savelistcs \savename \savenamecs \usedriver \ifinteger \ifnumeral \ifnumerals \ifpages \iffieldint \iffieldnum \iffieldnums \iffieldpages - \iflabeldateisdate \ifdatehasyearonlyprecision \ifdatehastime - \ifdateshavedifferentprecision \mkpageprefix \mkpagetotal \newblock \newunit \setunit \printunit \finentry} @@ -3668,15 +3477,7 @@ \long\def\blx@mksc@ingroup#1{% \if\noexpand\@let@token\relax - \ifx\@let@token\blx@mkcp@sgl - \blx@mksc@nocase{{#2}}% - \else - \ifx\@let@token\blx@mkcp@dbl - \blx@mksc@nocase{{#2}}% - \else - \blx@mksc@locase{{#2}}% - \fi - \fi + \blx@mksc@locase{{#2}}% \else \blx@mksc@nocase{{#2}}% \fi} @@ -3767,7 +3568,7 @@ {\xifinlist{#1}\blx@cmksc@lang}} %% Main formatting commands -% They work by creating a \let alias: +% The work by creating a \let alias: % \abx@<class>@<entrytype>@<formatname> -> \blx@defformat@d % for later use in \print* % Then, \blx@defformat@d is defined by calling @@ -4033,25 +3834,16 @@ {\setkeys{blx@opt@namelist}{#1}}% \def\blx@thedata{#2}} -% These are options in the .bbl that biber makes explicit as they are needed in biblatex -% for various reasons. Not all namelist/name scope options are necessary in the .bbl as -% some are used by biber only and are not needed by biblatex after biber has finished -% generating the .bbl % Per-namelist options \define@key{blx@opt@namelist}{uniquelist}{\c@uniquelist#1\relax} \define@key{blx@opt@namelist}{useprefix}{\settoggle{blx@useprefix}{#1}} -\define@key{blx@opt@namelist}{sortingnamekeytemplatename}{\def\blx@refcontext@sortingnamekeytemplatename{#1}} -\define@key{blx@opt@namelist}{uniquenametemplatename}{\def\blx@refcontext@uniquenametemplatename{#1}} -\define@key{blx@opt@namelist}{labelalphanametemplatename}{\def\blx@refcontext@labelalphanametemplatename{#1}} +\define@key{blx@opt@namelist}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}} % Per-name options \define@key{blx@opt@name}{uniquename}{\c@uniquename#1\relax} -\define@key{blx@opt@name}{uniquepart}{\def\abx@field@uniquepart{#1}} \define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}} \define@key{blx@opt@name}{useprefix}{\settoggle{blx@useprefix}{#1}} -\define@key{blx@opt@name}{sortingnamekeytemplatename}{\def\blx@refcontext@sortingnamekeytemplatename{#1}} -\define@key{blx@opt@name}{uniquenametemplatename}{\def\blx@refcontext@uniquenametemplatename{#1}} -\define@key{blx@opt@name}{labelalphanametemplatename}{\def\blx@refcontext@labelalphanametemplatename{#1}} +\define@key{blx@opt@name}{sortnamekeyscheme}{\def\blx@refcontext@sortingnamekey{#1}} \newrobustcmd*{\bibinitperiod}{\adddot} \newrobustcmd*{\bibinitdelim}{\addnbspace} @@ -4236,7 +4028,6 @@ \blx@getdata{#1}% \blx@setoptions@type\abx@field@entrytype \def\abx@field@entrysetcount{1}% - \blx@anchor \blx@entryset@precode \blx@driver{\blx@imc@thefield{entrytype}}% \blx@entryset@postcode @@ -4254,9 +4045,8 @@ \blx@setoptions@entry \addtocounter{instcount}\@ne \blx@execute - \blx@begunit - \blx@anchor \blx@beglangbib + \blx@begunit \blx@entryset@precode \blx@driver{\blx@imc@thefield{entrytype}} \blx@entryset@postcode @@ -4281,20 +4071,12 @@ \newrobustcmd*{\blx@imc@bibsstring}[2][\@firstofone]{% \blx@bibstring{#1}{abx@sstr}{#2}} -\def\blx@bibstringsimple{% - \let\bibstring\blx@imc@bibxstring - \let\biblstring\blx@imc@bibxlstring - \let\bibsstring\blx@imc@bibxsstring} - -\def\blx@bibstringnormal{% - \let\bibstring\blx@imc@bibstring - \let\biblstring\blx@imc@biblstring - \let\bibsstring\blx@imc@bibsstring} - \protected\def\blx@bibstring#1#2#3{% \blx@begunit \blx@hyphenreset - \blx@bibstringsimple + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring \lowercase{\edef\blx@tempa{#3}}% \ifcsundef{#2@\blx@tempa} {\blx@warn@nostring\blx@tempa @@ -4317,7 +4099,9 @@ \protected\def\blx@bibcpstring#1#2#3{% \blx@begunit \blx@hyphenreset - \blx@bibstringsimple + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring \lowercase{\edef\blx@tempa{#3}}% \ifcsundef{#2@\blx@tempa} {\blx@warn@nostring\blx@tempa @@ -4338,7 +4122,9 @@ \protected\def\blx@biblcstring#1#2#3{% \blx@begunit \blx@hyphenreset - \blx@bibstringsimple + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring \lowercase{\edef\blx@tempa{#3}}% \ifcsundef{#2@\blx@tempa} {\blx@warn@nostring\blx@tempa @@ -4359,7 +4145,9 @@ \protected\def\blx@bibucstring#1#2#3{% \blx@begunit \blx@hyphenreset - \blx@bibstringsimple + \let\bibstring\blx@imc@bibxstring + \let\biblstring\blx@imc@bibxlstring + \let\bibsstring\blx@imc@bibxsstring \lowercase{\edef\blx@tempa{#3}}% \ifcsundef{#2@\blx@tempa} {\blx@warn@nostring\blx@tempa @@ -4589,9 +4377,6 @@ \do{withintroduction}% \do{withforeword}% \do{withafterword}% - \do{organizer}% - \do{organizers}% - \do{byorganizer}% \do{byeditortr}% \do{byeditorco}% \do{byeditoran}% @@ -4650,31 +4435,19 @@ \do{origpubin}% \do{astitle}% \do{bypublisher}% - \do{nodate}% \do{page}% \do{pages}% \do{column}% \do{columns}% \do{line}% \do{lines}% + \do{nodate}% \do{verse}% \do{verses}% \do{section}% \do{sections}% \do{paragraph}% \do{paragraphs}% - \do{pagetotal}% - \do{pagetotals}% - \do{columntotal}% - \do{columntotals}% - \do{linetotal}% - \do{linetotals}% - \do{versetotal}% - \do{versetotals}% - \do{sectiontotal}% - \do{sectiontotals}% - \do{paragraphtotal}% - \do{paragraphtotals}% \do{in}% \do{inseries}% \do{ofseries}% @@ -4740,7 +4513,6 @@ \do{december}% \do{langamerican}% \do{langbrazilian}% - \do{langbulgarian}% \do{langcatalan}% \do{langcroatian}% \do{langczech}% @@ -4750,7 +4522,6 @@ \do{langestonian}% \do{langfinnish}% \do{langfrench}% - \do{langgalician}% \do{langgerman}% \do{langgreek}% \do{langitalian}% @@ -4764,10 +4535,8 @@ \do{langslovene}% \do{langspanish}% \do{langswedish}% - \do{langukrainian}% \do{fromamerican}% \do{frombrazilian}% - \do{frombulgarian}% \do{fromcatalan}% \do{fromcroatian}% \do{fromczech}% @@ -4777,7 +4546,6 @@ \do{fromestonian}% \do{fromfinnish}% \do{fromfrench}% - \do{fromgalician}% \do{fromgerman}% \do{fromgreek}% \do{fromitalian}% @@ -4791,7 +4559,6 @@ \do{fromslovene}% \do{fromspanish}% \do{fromswedish}% - \do{fromukrainian}% \do{countryde}% \do{countryep}% \do{countryeu}% @@ -4840,7 +4607,6 @@ % in *.cbx/bbx/tex: (implicit) % in *.lbx: inherit = {<language>}, \define@key{blx@lbx}{inherit}{% - \global\toggletrue{blx@nosuffrecurse}% \blx@lbxinput{#1}{}{\blx@err@nolang{#1}}% \csuse{abx@strings@#1}} @@ -4884,7 +4650,6 @@ % {<language>}{<language>} \def\blx@letbibextras#1#2{% - \global\toggletrue{blx@nosuffrecurse}% \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% \global\csletcs{abx@extras@#1}{abx@extras@#2} \global\csletcs{abx@noextras@#1}{abx@noextras@#2}}% @@ -4929,7 +4694,6 @@ % {<language>}{<language>} \def\blx@letbibstrings#1#2{% - \global\toggletrue{blx@nosuffrecurse}% \blx@lbxinput{#2}{}{\blx@err@nolang{#2}}% \global\csletcs{abx@strings@#1}{abx@strings@#2}}% @@ -4949,30 +4713,13 @@ \hyphenation{#2}% \endgroup}} -% {<mapping suffix>} -\newrobustcmd*{\DeclareLanguageMappingSuffix}[1]{% - \gdef\blx@lng@suff{#1}} -\@onlypreamble\DeclareLanguageMappingSuffix -\let\blx@lng@suff\@empty - % {<language>}{<mapping>} \newrobustcmd*{\DeclareLanguageMapping}[2]{% - \csgdef{blx@lng@#1}{#2}% - \csgdef{blx@lng@explicit@#1}{#2}} + \csgdef{blx@lng@#1}{#2}} \@onlypreamble\DeclareLanguageMapping % {<language>}{<success>}{<failure>} \def\blx@lbxinput#1{% - \ifdefempty\blx@lng@suff - {} - {\ifcsdef{blx@lng@explicit@#1}% \DeclareLanguageMapping overrides \DeclareLanguageMappingSuffix - {} - {\nottoggle{blx@nosuffrecurse} - {\csgdef{blx@lng@#1}{#1\blx@lng@suff}} - {}}}% - \blx@lbxinput@0{#1}} - -\def\blx@lbxinput@0#1{% \ifcsdef{blx@lng@#1} {\expandafter\expandafter\expandafter\blx@lbxinput@i \expandafter\expandafter\expandafter{% @@ -4984,19 +4731,12 @@ \global\csundef{blx@lng@#2}% \IfFileExists{#1.lbx} {\blx@lbxinput@ii{#2}{#1}{language '#2' -> '#1'}} - {\ifcsdef{blx@suffmaptried@#2} - {} - {\blx@warning@noline{% - File '#1.lbx' not found!\MessageBreak - Ignoring mapping '#2' -> '#1'}% - \cslet{blx@suffmaptried@#2}\@empty}% - \blx@lbxinput@0{#2}}} + {\blx@warning@noline{% + File '#1.lbx' not found!\MessageBreak + Ignoring mapping '#2' -> '#1'}% + \blx@lbxinput{#2}}} % {<language>}{<lbxfile>}{<message>} -% toggle 'blx@nosuffrecurse' is set to true at the places where recursion into here -% can occur when loading a .lbx otherwise, when using \DeclareLanguageMappingSuffix -% it is possible to get into infinite loops. We only want to apply the suffix to explicitly -% loaded languages, not those loaded by recursion. \def\blx@lbxinput@ii#1#2#3{% \begingroup \setbox\@tempboxa=\hbox\bgroup @@ -5007,7 +4747,7 @@ \global\cslet{abx@noextras@#1}\@empty \blx@maplang{#1}{#1}% \def\InheritBibliographyStrings{% - \blx@letbibstrings{#1}}% + \blx@letbibstrings{#1}}% \def\DeclareBibliographyStrings####1{% \begingroup \let\blx@defstring\blx@lbx@defstring @@ -5028,8 +4768,7 @@ \csuse{blx@hook@noextras@#1}% \csuse{blx@hook@noextras@#2}% \csuse{blx@hook@hyph@#1}% - \csuse{blx@hook@hyph@#2}% - \global\togglefalse{blx@nosuffrecurse}} + \csuse{blx@hook@hyph@#2}} {\aftergroup\@firstoftwo} {\aftergroup\@secondoftwo}% \egroup} @@ -5211,9 +4950,9 @@ \dateuncertainprint \dateeraprint{#2year}% \iffieldundef{#2endyear} - {\printfield{extradate}} + {\printfield{extrayear}} {\iffieldequalstr{#2endyear}{} - {\printfield{extradate}% + {\printfield{extrayear}% \printtext{\mbox{\bibdaterangesep}}} {\printtext{% \bibdaterangesep @@ -5223,7 +4962,7 @@ % Optionally print the time after the date \blx@printtime{#2}{end}} {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}% - \printfield{extradate}% + \printfield{extrayear}% \enddateuncertainprint \dateeraprint{#2endyear}}}}}}} @@ -5246,14 +4985,14 @@ {\dateeraprint{#2year}}}} {\iffieldsequal{#2year}{#2endyear} {\csuse{mkbibseasondate#1}{}{#2season}} - {\csuse{mkbibseasondate#1}{#2year}{#2season}% + {\csuse{mkbibseasondate#1}{#2year}{#2season} \iffieldsequal{#2dateera}{#2enddateera}{} {\dateeraprint{#2year}}}}% \dateuncertainprint \iffieldundef{#2endyear} - {\printfield{extradate}} + {\printfield{extrayear}} {\iffieldequalstr{#2endyear}{} - {\printfield{extradate}% + {\printfield{extrayear}% \printtext{\mbox{\bibdaterangesep}}} {\printtext{% \bibdaterangesep @@ -5261,25 +5000,17 @@ \iffieldundef{#2season} {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}} {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}% - \printfield{extradate}% + \printfield{extrayear}% \enddateuncertainprint \dateeraprint{#2endyear}}}}}}} \newrobustcmd*{\mkdaterangeyear}[1]{% - \blx@imc@clearfield{#1season}% \blx@imc@clearfield{#1month}% \blx@imc@clearfield{#1day}% - \blx@imc@clearfield{#1hour}% - \blx@imc@clearfield{#1minute}% - \blx@imc@clearfield{#1second}% - \blx@imc@clearfield{#1timezone}% - \blx@imc@clearfield{#1endseason}% + \blx@imc@clearfield{#1season}% \blx@imc@clearfield{#1endmonth}% \blx@imc@clearfield{#1endday}% - \blx@imc@clearfield{#1endhour}% - \blx@imc@clearfield{#1endminute}% - \blx@imc@clearfield{#1endsecond}% - \blx@imc@clearfield{#1endtimezone}% + \blx@imc@clearfield{#1endseason}% \iffieldsequal{#1year}{#1endyear} {\blx@imc@clearfield{#1endyear}} {}% @@ -5325,7 +5056,7 @@ % Such a season component can only come from an EDTF 5.1.5 season which replaces % a normal month so if it exists, we know that a normal date print is ruled out \iffieldundef{#1season} - {\blx@ymddate[extradate]{#1}{}% + {\blx@ymddate[extrayear]{#1}{}% % Optionally print the time after the date \blx@printtime{#1}{}} {\csuse{mkbibseasondateshort}{#1year}{#1season}}% @@ -5346,7 +5077,7 @@ \enddateuncertainprint \dateeraprint{#1endyear}}}}}} -% [extradate]{<datetype>}{''|end} +% [extrayear]{<datetype>}{''|end} \newrobustcmd*{\blx@ymddate}[3][]{% \dateeraprintpre{#2#3year}% \mkyearzeros{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% @@ -5354,20 +5085,12 @@ \iffieldundef{#2#3day}{}{\bibdatesep\mkdayzeros{\thefield{#2#3day}}}} \newrobustcmd*{\mkdaterangeyearextra}[1]{% - \blx@imc@clearfield{#1season}% \blx@imc@clearfield{#1month}% \blx@imc@clearfield{#1day}% - \blx@imc@clearfield{#1hour}% - \blx@imc@clearfield{#1minute}% - \blx@imc@clearfield{#1second}% - \blx@imc@clearfield{#1timezone}% - \blx@imc@clearfield{#1endseason}% + \blx@imc@clearfield{#1season}% \blx@imc@clearfield{#1endmonth}% \blx@imc@clearfield{#1endday}% - \blx@imc@clearfield{#1endhour}% - \blx@imc@clearfield{#1endminute}% - \blx@imc@clearfield{#1endsecond}% - \blx@imc@clearfield{#1endtimezone}% + \blx@imc@clearfield{#1endseason}% \iffieldsequal{#1year}{#1endyear} {\blx@imc@clearfield{#1endyear}} {}% @@ -5385,7 +5108,7 @@ {}} \newrobustcmd*{\mkdaterangeedtf}[1]{% - \blx@metadateinfo{#1}% + \blx@metadateinfo{#1}% \def\bibdatetimesep{T}% \iffieldundef{#1year} {} @@ -5413,6 +5136,7 @@ {}% \enddateuncertainprint \enddatecircaprintedtf}}}} +\cslet{mkdaterangeiso8601}\mkdaterangeedtf% Legacy option support \newrobustcmd*{\mkdaterangeedtfextra}[1]{% \blx@metadateinfo{#1}% @@ -5420,7 +5144,7 @@ \iffieldundef{#1year} {} {\printtext[#1date]{% - \blx@edtfdate[extradate]{#1}{}% + \blx@edtfdate[extrayear]{#1}{}% \ifboolexpr{% togl {blx@#1dateusetime} and @@ -5443,8 +5167,9 @@ {}% \enddateuncertainprint \enddatecircaprintedtf}}} +\cslet{mkdaterangeiso8601extra}\mkdaterangeedtfextra% Legacy option support -% [extradate]{<datetype>}{''|end} +% [extrayear]{<datetype>}{''|end} \newrobustcmd*{\blx@edtfdate}[3][]{% \dateeraprintpre{#2#3year}% \blx@imc@forcezerosy{\thefield{#2#3year}}\ifblank{#1}{}{\printfield{#1}}% @@ -5482,6 +5207,7 @@ \newrobustcmd*{\bibdateeraendprefix}{\,\bibdateeraprefix} \newrobustcmd*{\bibdatesep}{\hyphen} \newrobustcmd*{\bibdaterangesep}{\bibrangedash} +\newrobustcmd*{\bibdatedash}{\bibrangedash}%LEGACY(<3.5) % date+times \newrobustcmd*{\bibdatetimesep}{\space} % ranges @@ -5568,6 +5294,23 @@ \blx@regimcs{\printlabeldate \printlabeltime \printlabeldateextra \stripzeros \forcezerosy \forcezerosmdt \mkyearzeros \mkmonthzeros \mkdayzeros \mktimezeros} +\protected\def\mkdatezeros{% + \blx@warning@noline{% + '\string\mkdatezeros' is deprecated, please use '\string\mkyearzeros',\MessageBreak + '\string\mkmonthzeros' or '\string\mkdayzeros' as appropriate. \MessageBreak + falling back to '\string\mkmonthzeros'}% + \mkmonthzeros} + +\protected\def\printdatelabel{% + \blx@warning@noline{% + '\string\printdatelabel' is deprecated, please use '\string\printlabeldate'}% + \blx@imc@printlabeldate} + +\protected\def\printdatelabelextra{% + \blx@warning@noline{% + '\string\printdatelabelextra' is deprecated, please use '\string\printlabeldateextra'}% + \blx@imc@printlabeldateextra} + % User macro for retrieving currrent language \def\currentlang{\blx@languagename} @@ -5608,8 +5351,8 @@ \gdef\blx@mkautolangbabel{% \ifundef\bbl@main@language {\blx@error - {No default 'babel' language defined} - {You must define a default language for 'babel'}} + {No default babel language defined} + {You must define a default language for babel}} {}% \pretocmd\select@language{\blx@langsetup{#1}} {\ifdef\blx@thelangenv @@ -5653,10 +5396,9 @@ \gdef\blx@mkautolangpoly{% \ifundef\bbl@main@language {\blx@error - {No default 'polyglossia' language defined} - {You must define a default language for 'polyglossia'}} + {No default polyglossia language defined} + {You must define a default language for polyglossia}} {}% - \edef\blx@saved@underscore@catcode{\the\catcode`\_}% \catcode`\_=11% polyglossia uses "_" as a letter \pretocmd\select@language{\blx@langsetup{#1}} {\ifdef\blx@thelangenv @@ -5696,11 +5438,9 @@ {\csname\abx@field@langid\endcsname}} {\csname\blx@thelangenv\expandafter\endcsname\expandafter{\abx@field@langid}}% % These lines are equal to \blx@maplang - \ifcsstring{blx@thelangenv}{hyphenrules} - {} - {\blx@resetpunct - \csuse{abx@extras@\abx@field@langid}% - \csuse{abx@strings@\abx@field@langid}}}} + \blx@resetpunct + \csuse{abx@extras@\abx@field@langid}% + \csuse{abx@strings@\abx@field@langid}}} {}}} {}% % polyglossia needs this - it doesn't get the @@ -5717,7 +5457,7 @@ \blx@langsetup\bbl@main@language} {\blx@err@patch{'polyglossia' package}% \blx@mknoautolang}% - \catcode`\_=\blx@saved@underscore@catcode\relax} + \catcode`\_=8} \endgroup \def\blx@mknoautolang{% @@ -5870,7 +5610,7 @@ \abx@dodates % main date field has an empty prefix (''date) which can't be added to a list % and so do it explicity -% This is one of the few (only?) hard-coded datamodel assumptions but it is +% This is one of the few (only?) hard-coded datamodel assumptions but it is % very unlikely that anyone would *remove* the main date field in a custom application ... \def\abx@dodatetypes{\do{}\dolistloop\blx@datetypes} @@ -5881,22 +5621,9 @@ \blx@collectopts{boolean}{blx@namelistopts}{useprefix}% for passing to bcf \blx@collectopts{boolean}{blx@nameopts}{useprefix}% for passing to the .bcf -% nametemplates meta-option entry/namelist/name scope -\blx@collectopts{string}{blx@entryopts}{nametemplates} -\blx@collectopts{string}{blx@namelistopts}{nametemplates}% for passing to bcf -\blx@collectopts{string}{blx@nameopts}{nametemplates}% for passing to the .bcf - -% sortingnamekeytemplate namelist/name scope -\blx@collectopts{string}{blx@namelistopts}{sortingnamekeytemplatename}% for passing to bcf -\blx@collectopts{string}{blx@nameopts}{sortingnamekeytemplatename}% for passing to the .bcf - -% uniquenametemplate namelist/name scope -\blx@collectopts{string}{blx@namelistopts}{uniquenametemplatename}% for passing to bcf -\blx@collectopts{string}{blx@nameopts}{uniquenametemplatename}% for passing to the .bcf - -% labelalphanametemplate namelist/name scope -\blx@collectopts{string}{blx@namelistopts}{labelalphanametemplatename}% for passing to bcf -\blx@collectopts{string}{blx@nameopts}{labelalphanametemplatename}% for passing to the .bcf +% sortnamekeyscheme namelist/name scope +\blx@collectopts{string}{blx@namelistopts}{sortnamekeyscheme}% for passing to bcf +\blx@collectopts{string}{blx@nameopts}{sortnamekeyscheme}% for passing to the .bcf % Misc globalopts \blx@collectopts{xml}{blx@globalopts}{datamodel}% for passing to the .bcf @@ -6023,8 +5750,7 @@ \def\do#1{% \listxadd\blx@namepartmetafields{#1namehash}% - \listxadd\blx@namepartmetafields{#1fullhash}% - \listxadd\blx@namepartmetafields{#1bibnamehash}} + \listxadd\blx@namepartmetafields{#1fullhash}} \abx@donameparts \def\do#1{% @@ -6032,6 +5758,7 @@ \abx@dodateparts \def\abx@dointernalfields{% + \do{childentrykey}% \do{clonesourcekey}% \do{labeldate}% \do{labeldatesource}% @@ -6044,7 +5771,7 @@ \do{extraalpha}% \do{extratitle}% \do{extratitleyear}% - \do{extradate}% + \do{extrayear}% \do{fullhash}% \do{labelalpha}% \do{labelnumber}% @@ -6052,7 +5779,6 @@ \do{labeltitleyear}% \do{localnumber}% \do{namehash}% - \do{bibnamehash}% \do{options}% \do{sortinit}% \do{sortinithash}% @@ -6157,76 +5883,76 @@ {}}}% \iftoggle{blx@labeldateparts} {\def\iflabeldateera#1{% start era - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\ifcsstring{abx@field@\abx@field@labeldatesource dateera}{#1}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabeldateera#1{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\ifcsstring{abx@field@\abx@field@labeldatesource dateera}{#1}}} - {\@secondoftwo}}}% - % end era - \def\iflabelenddateera#1{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\ifcsstring{abx@field@\abx@field@labeldatesource enddateera}{#1}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabelenddateera#1{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\ifcsstring{abx@field@\abx@field@labeldatesource enddateera}{#1}}} - {\@secondoftwo}}}% - % start circa - \def\iflabeldatecirca{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\iftoggle{abx@bool@\abx@field@labeldatesource datecirca}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabeldatecirca{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource datecirca}}} - {\@secondoftwo}}}% - % end circa - \def\iflabelenddatecirca{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\iftoggle{abx@bool@\abx@field@labeldatesource enddatecirca}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabelenddatecirca{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource enddatecirca}}} - {\@secondoftwo}}}% - % start julian - \def\iflabeldatejulian{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\iftoggle{abx@bool@\abx@field@labeldatesource datejulian}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabeldatejulian{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource datejulian}}} - {\@secondoftwo}}}% - % end julian - \def\iflabelenddatejulian{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\iftoggle{abx@bool@\abx@field@labeldatesource enddatejulian}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabelenddatejulian{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource enddatejulian}}} - {\@secondoftwo}}}% - % start uncertain - \def\iflabeldateuncertain{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\iftoggle{abx@bool@\abx@field@labeldatesource dateuncertain}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabeldateuncertain{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource dateuncertain}}} - {\@secondoftwo}}}% - % end uncertain - \def\iflabelenddateuncertain{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\iftoggle{abx@bool@\abx@field@labeldatesource enddateuncertain}} - {\@secondoftwo}}% - \appto\blx@TE@hook{\def\iflabelenddateuncertain{% - \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates - {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource enddateuncertain}}} - {\@secondoftwo}}}}% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\ifcsstring{abx@field@\abx@field@labeldatesource dateera}{#1}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabeldateera#1{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\ifcsstring{abx@field@\abx@field@labeldatesource dateera}{#1}}} + {\@secondoftwo}}}% + % end era + \def\iflabelenddateera#1{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\ifcsstring{abx@field@\abx@field@labeldatesource enddateera}{#1}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabelenddateera#1{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\ifcsstring{abx@field@\abx@field@labeldatesource enddateera}{#1}}} + {\@secondoftwo}}}% + % start circa + \def\iflabeldatecirca{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\iftoggle{abx@bool@\abx@field@labeldatesource datecirca}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabeldatecirca{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource datecirca}}} + {\@secondoftwo}}}% + % end circa + \def\iflabelenddatecirca{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\iftoggle{abx@bool@\abx@field@labeldatesource enddatecirca}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabelenddatecirca{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource enddatecirca}}} + {\@secondoftwo}}}% + % start julian + \def\iflabeldatejulian{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\iftoggle{abx@bool@\abx@field@labeldatesource datejulian}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabeldatejulian{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource datejulian}}} + {\@secondoftwo}}}% + % end julian + \def\iflabelenddatejulian{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\iftoggle{abx@bool@\abx@field@labeldatesource enddatejulian}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabelenddatejulian{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource enddatejulian}}} + {\@secondoftwo}}}% + % start uncertain + \def\iflabeldateuncertain{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\iftoggle{abx@bool@\abx@field@labeldatesource dateuncertain}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabeldateuncertain{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource dateuncertain}}} + {\@secondoftwo}}}% + % end uncertain + \def\iflabelenddateuncertain{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\iftoggle{abx@bool@\abx@field@labeldatesource enddateuncertain}} + {\@secondoftwo}}% + \appto\blx@TE@hook{\def\iflabelenddateuncertain{% + \xifinlist{\abx@field@labeldatesource date}\blx@datamodel@dates + {\blx@TE{\iftoggle{abx@bool@\abx@field@labeldatesource enddateuncertain}}} + {\@secondoftwo}}}}% {}} % Name toggles like \ifauthor etc. need to be dynamically created for all @@ -6248,6 +5974,12 @@ \settoggle{abx@bool@#1inits}{##1}}} \abx@donameparts +%LEGACY(<3.3) legacy name for \ifgiveninits which is autogenerated now +\def\iffirstinits{ + \blx@warning@noline{% + '\string\iffirstinits' is deprecated, use '\string\ifgiveninits'}% + \iftoggle{abx@bool@giveninits}} + \def\do#1{% % Define use<name> options scope for biber \blx@collectopts{boolean}{blx@globalopts}{use#1}% @@ -6664,7 +6396,6 @@ \csuse{blx@data@\the\c@refsection @\blx@refcontext@context @#1}% \blx@adjustyears \blx@getlabeldata - \blx@aliasfields \blx@setcitecounter} \def\blx@adjustyears{% @@ -6801,39 +6532,20 @@ {\edef\abx@field@labelendseason{\csuse{abx@field@\abx@field@labeldatesource endseason}}} {}}}} -% This gets the entry data for a citation \def\blx@getdata@cite#1{% - \blx@getdata{#1}% - % Inject the relevant set parent fields like labelnumber/labelprefix into child \ifcsdef{blx@setc@\the\c@refsection @#1} - {\blx@ifdata{#1} - {\def\abx@field@childentrykey{#1}%LEGACY(<3.8) - \edef\abx@field@childentrytype{\abx@field@entrytype}%LEGACY(<3.8) + {\expandafter\expandafter\expandafter\blx@getdata + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}% + \blx@ifdata{#1} + {\def\abx@field@childentrykey{#1}% \begingroup - \expandafter\expandafter\expandafter\blx@getdata\expandafter\expandafter\expandafter{% - \csname blx@setc@\the\c@refsection @#1\endcsname}% - \let\blx@tempa\@empty - % Inject labelnumber if it exists - \ifdef\abx@field@labelnumber - {\appto\blx@tempa{\def\noexpand\abx@field@labelnumber{\abx@field@labelnumber}}} - {}% - % Inject labelprefix if it exists - \ifdef\abx@field@labelprefix - {\appto\blx@tempa{\def\noexpand\abx@field@labelprefix{\abx@field@labelprefix}}} - {}% - % Inject labelalpha if it exists - \ifdef\abx@field@labelalpha - {\appto\blx@tempa{\def\noexpand\abx@field@labelalpha{\abx@field@labelalpha}}} - {}% - % Inject extraalpha if it exists - \ifdef\abx@field@extraalpha - {\appto\blx@tempa{\def\noexpand\abx@field@extraalpha{\abx@field@extraalpha}}} - {}% - % Perform the injection - \edef\blx@tempb{\endgroup\blx@tempa}% - \blx@tempb} + \blx@getdata{#1}% + \edef\blx@tempa{\endgroup + \def\noexpand\abx@field@childentrytype{\abx@field@entrytype}}% + \blx@tempa} {}} - {}% + {\blx@getdata{#1}}% \ifcsdef{blx@seti@\the\c@refsection @#1} {\letcs\abx@field@entrysetcount{blx@seti@\the\c@refsection @#1}} {}} @@ -6903,13 +6615,13 @@ \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}% \listcsgadd{blx@keyaliases@\the\c@refsection}{#1}} -% blx@dlist@list@<section>@<refcontext> - a list of list items in a refcontext in a +% blx@slist@list@<section>@<scheme> - a list of list items in a scheme in a % section (for tracking bibliography lists, % obeys skipbiblist) -% blx@dlist@entry@<section>@<list> - a list of normal entries in a list in a +% blx@slist@entry@<section>@<scheme> - a list of normal entries in a scheme in a % section (for tracking bibliographies, % obeys skipbib) -% blx@dlist@centry@<section>@<list> - a list of normal entries in a list in a +% blx@slist@centry@<section>@<scheme> - a list of normal entries in a scheme in a % section (for tracking citations, % obeys skipbib). Same as @entry@ but % with added set children @@ -6921,10 +6633,9 @@ \blx@setoptions@type{#2}% \blx@bbl@options{#3}% \blx@setoptions@entry - \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@dlist@name @\abx@field@entrykey}% + \edef\blx@bbl@data{blx@data@\the\c@refsection @\blx@slist@name @\abx@field@entrykey}% \csuse\blx@bbl@data \blx@bbl@addfield{entrykey}{\abx@field@entrykey}% - \listxadd\blx@entries{\abx@field@entrykey}% \blx@bbl@addfield{entrytype}{#2}% \blx@imc@iffieldundef{options} {} @@ -6942,9 +6653,9 @@ \toggletrue{blx@skipbiblist}% \toggletrue{blx@skiplab}}% \nottoggle{blx@skipbib} - {\expandafter\ifstrequal\expandafter{\blx@dlist@type}{entry} - {\listcsxadd{blx@dlist@entry@\the\c@refsection @\blx@dlist@name}{\abx@field@entrykey}% - \listcsxadd{blx@dlist@centry@\the\c@refsection @\blx@dlist@name}{\abx@field@entrykey}% + {\expandafter\ifstrequal\expandafter{\blx@slist@type}{entry} + {\listcsxadd{blx@slist@entry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}% + \listcsxadd{blx@slist@centry@\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}% \listcsxadd{blx@type@\the\c@refsection @\abx@field@entrytype}{\abx@field@entrykey}% \ifdef\abx@field@entrysubtype {\listcsxadd{blx@subt@\the\c@refsection @\abx@field@entrysubtype}{\abx@field@entrykey}} @@ -6952,9 +6663,9 @@ {}}% {}% \nottoggle{blx@skipbiblist} - {\expandafter\ifstrequal\expandafter{\blx@dlist@type}{list} + {\expandafter\ifstrequal\expandafter{\blx@slist@type}{list} {\blx@bbl@labelfields - \listcsxadd{blx@dlist@\blx@dlist@type @\the\c@refsection @\blx@dlist@name}{\abx@field@entrykey}} + \listcsxadd{blx@slist@\blx@slist@type @\the\c@refsection @\blx@slist@name}{\abx@field@entrykey}} {}}% {}% \nottoggle{blx@skiplab} @@ -6987,15 +6698,13 @@ % available in the current context sortlist. \def\blx@addset{% \begingroup - \ifcsdef{blx@dlist@centry@\the\c@refsection @\blx@refcontext@context} - {\letcs\blx@tempa{blx@dlist@centry@\the\c@refsection @\blx@refcontext@context}% - \global\cslet{blx@dlist@centry@\the\c@refsection @\blx@refcontext@context}\@empty - \forlistloop\blx@addset@i\blx@tempa} - {\PackageWarningNoLine{biblatex}{Sorting template has changed}}% + \letcs\blx@tempa{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}% + \global\cslet{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}\@empty + \forlistloop\blx@addset@i\blx@tempa \endgroup} \def\blx@addset@i#1{% - \listcsgadd{blx@dlist@centry@\the\c@refsection @\blx@refcontext@context}{#1}% + \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}% \ifcsdef{blx@setp@\the\c@refsection @#1} {\expandafter\expandafter\expandafter\forcsvlist \expandafter\expandafter\expandafter\blx@addset@ii @@ -7004,7 +6713,7 @@ {}} \def\blx@addset@ii#1{% - \listcsgadd{blx@dlist@centry@\the\c@refsection @\blx@refcontext@context}{#1}} + \listcsgadd{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}{#1}} \def\blx@bbl@labelfields{% \def\do##1{% @@ -7097,10 +6806,10 @@ \fi}} \def\blx@bbl@labeldate{% - \ifundef\abx@field@extradate + \ifundef\abx@field@extrayear {} - {\ifnum\abx@field@extradate>\c@maxextradate - \global\c@maxextradate\abx@field@extradate\relax + {\ifnum\abx@field@extrayear>\c@maxextrayear + \global\c@maxextrayear\abx@field@extrayear\relax \fi}} \def\blx@bbl@titles{% @@ -7143,8 +6852,8 @@ \let\endentry\blx@bbl@endentry \let\missing\blx@bbl@missing \let\keyalias\blx@bbl@keyalias - \let\datalist\blx@bbl@dlist - \let\enddatalist\blx@bbl@enddlist + \let\sortlist\blx@bbl@slist + \let\endsortlist\blx@bbl@endslist \let\set\blx@bbl@set \let\inset\blx@bbl@inset \let\xref\blx@bbl@xref % A No-op for Biber @@ -7163,28 +6872,25 @@ \let\endlverb\blx@bbl@verblend \let\annotation\blx@bbl@annotationdef} -\def\blx@bblend{% - % Special warning for defernumbers when a citation cannot be found - \iftoggle{blx@defernumbers} - {\def\do##1{\ifinlist{##1}\blx@entries - {} - {\blx@warning@noline{% - citation '##1' was not found at all in the .bbl, bibliography labels cannot be generated, please correct the citation}}}% - \dolistloop\blx@lastcites} - {}} +\def\blx@bblend{} % {<entrykey>} % Get the saved information on which citations were mentioned last run \protected\def\abx@aux@cite#1{% \listxadd\blx@lastcites{\detokenize{#1}}} +% {<sortschemename>} +% Get the saved information on which sorting schemes were mentioned last run +\protected\def\abx@aux@sortscheme#1{% + \listgadd\blx@lastsortschemes{#1}} + % {<refcontext>} % Get the saved information on which refcontexts were mentioned last run \protected\def\abx@aux@refcontext#1{% \listgadd\blx@lastrefcontexts{#1}} -% {<sortingtemplatename>} -% Get the saved information on which shorthand sorting templates were mentioned last run +% {<sortschemename>} +% Get the saved information on which shorthand sorting schemes were mentioned last run \protected\def\abx@aux@biblist#1{% \listgadd\blx@lastbiblists{#1}} @@ -7203,7 +6909,7 @@ \AtEndDocument{% % Here we run some tests to decide if we need to issue re-run % messages in certain circumstances. In general, if we add/remove - % any citations or add/remove any sorting templates, we need to re-run + % any citations or add/remove any sorting schemes, we need to re-run % biber. Also, if we have to re-run biber, we need to defer writing % the defernumbers .aux information because it will not yet be correct. @@ -7215,15 +6921,15 @@ \begingroup \def\do#1{\ifinlist{#1}\blx@cites{}{\blx@logreq@active{}}\relax}% \dolistloop\blx@lastcites - % Special case - if we are using sortingtemplate "none" anywhere, then changes + % Special case - if we are using sortscheme "none" anywhere, then changes % in citation order matter and we need to re-run biber. So a special test % to see if the cites from last run are identical in order. We have % already tested for more or less cites between runs by now, we are % testing here for exactly the same cites by treating the cite and % lastcite lists as strings and comparing them. This doesn't apply - % to biblist sortingtemplates as nobody wants to sort biblists with + % to biblist sortschemes as nobody wants to sort biblists with % "none", since it makes no sense - \ifinlist{none}\blx@sortingtemplatenames + \ifinlist{none}\blx@sortschemes {\ifdefstrequal{\blx@cites}{\blx@lastcites} {} {\blx@logreq@active{}}} @@ -7296,31 +7002,29 @@ % regenerates localnumber requiring another run but then % the pagebreaks change back again ... etc. \ifcsundef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey} - {\ifundef\abx@field@localnumber - {} - {\listxadd\blx@localnumaux{% - \string\abx@aux@number% - {\the\c@instcount}% - {\abx@field@entrykey}% - {\the\c@refsection}% - {\blx@refcontext@context}% - {\abx@field@localnumber}}% - % record that we have already generated and output localnum - % for this key in this refsection/refcontext - \csgdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}{}}} + {\listxadd\blx@localnumaux{% + \string\abx@aux@number% + {\the\c@instcount}% + {\abx@field@entrykey}% + {\the\c@refsection}% + {\blx@refcontext@context}% + {\abx@field@localnumber}}% + % record that we have already generated and output localnum + % for this key in this refsection/refcontext + \csgdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}{}} {}} {}}% {}} {}% \endgroup} -% {<datalistname>} -\def\blx@bbl@dlist[#1]#2{% +% {<sortlistname>} +\def\blx@bbl@slist[#1]#2{% \begingroup - \def\blx@dlist@type{#1}% - \def\blx@dlist@name{#2}} + \def\blx@slist@type{#1}% + \def\blx@slist@name{#2}} -\def\blx@bbl@enddlist{% +\def\blx@bbl@endslist{% \csnumgdef{blx@labelnumber@\the\c@refsection}{0}% \endgroup} @@ -7490,8 +7194,9 @@ \define@key{blx@bib1}{prenote}{} \define@key{blx@bib1}{postnote}{} \define@key{blx@bib1}{omitnumbers}[]{} +\define@key{blx@bib1}{prefixnumbers}{}%LEGACY(<3.4) legacy name for labelprefix % Here we are using the first pass to see if there is an explicit setting for resetnumbers -% If there isn't we will use the default behaviour where if there is a labelprefix, +% If there isn't we will use the default behaviour where if there is a labelprefix, % resetnumbers will default to "true" \define@key{blx@bib1}{resetnumbers}[true]{% \toggletrue{blx@resetnumsexplicit}} @@ -7519,6 +7224,10 @@ \define@key{blx@biblist2}{section}{} \define@key{blx@biblist2}{sorting}{} +\define@key{blx@bib1}{sorting}{% + \blx@warning@noline{% + sorting option to \string\printbibliography\space is no longer supported, use 'sorting' option to \string\newrefcontext}} + \define@key{blx@bib1}{section}{% \ifcsundef{blx@sections@#1} {\blx@err@nosec{#1}} @@ -7531,6 +7240,10 @@ {\c@refsection#1\relax \def\blx@tempe{#1}}} +\define@key{blx@biblist1}{sorting}{% + \blx@warning@noline{% + sorting option to \string\printbiblist\space is no longer supported, use 'sorting' option to \string\newrefcontext}} + \define@key{blx@bbg}{section}{% \ifcsundef{blx@sections@#1} {\blx@err@nosec{#1}} @@ -7749,6 +7462,10 @@ Ignoring 'omitnumbers=true'}}} {}} +\define@key{blx@bib2}{prefixnumbers}{% + \blx@warning@noline{% + prefixnumbers option to \string\printbibliography\space is no longer supported, use 'labelprefix' option to \string\newrefcontext}} + % [<options>] \newrobustcmd*{\printbibheading}{% \begingroup @@ -7791,8 +7508,21 @@ \let\blx@thetitle\@empty % defaults \let\blx@tempa\@empty% before there is a .bbl, this must not be undef + \edef\blx@tempd{% + \blx@xml@sorting{% + \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting} + { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"} + {}}{% + \csuse{blx@sorting@\blx@refcontext@sorting}}}% default to context \edef\blx@tempe{\the\c@refsection}% default refsection is current \blx@safe@actives + \edef\blx@tempd{% + \blx@xml@sorting{% + \ifcsdef{blx@sortdef@locale@\blx@refcontext@sorting} + { locale="\csuse{blx@sortdef@locale@\blx@refcontext@sorting}"} + {}}{% + \csuse{blx@sorting@\blx@refcontext@sorting}}}% + % \togglefalse{blx@resetnumsexplicit}% \setkeys{blx@bib1}{#1}% First pass options keys - section and resetnumbers % Is there a user-specified option for resetnumbers? If so, this overrides the default @@ -7803,9 +7533,9 @@ {} {\setkeys{blx@bib2}{resetnumbers}}}% \blx@rest@actives - \ifcsvoid{blx@dlist@entry@\blx@tempe @\blx@refcontext@context} + \ifcsvoid{blx@slist@entry@\blx@tempe @\blx@refcontext@context} {} - {\letcs\blx@tempa{blx@dlist@entry@\blx@tempe @\blx@refcontext@context}}% + {\letcs\blx@tempa{blx@slist@entry@\blx@tempe @\blx@refcontext@context}}% \blx@safe@actives % Must reset omitnumbers as it's a global macro and if we don't, any % \printbibliography following one with this set will inherit any @@ -7813,12 +7543,8 @@ \togglefalse{blx@omitnumbers}% \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options \blx@rest@actives - % Add datalist to list of seen datalists to prevent duplicates - \xifinlist{\blx@refcontext@context @entry}\blx@dlistnames - {} - {\listxadd\blx@dlistnames{\blx@refcontext@context @entry}% - \csxappto{blx@dlists}{% - \blx@xml@dlist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@xml@dlist@refcontext{\blx@refcontext@sortingtemplatename}{\blx@refcontext@sortingnamekeytemplatename}{\blx@refcontext@labelprefix}{\blx@refcontext@uniquenametemplatename}{\blx@refcontext@labelalphanametemplatename}}{}}}% + \csxappto{blx@slists}{% + \blx@xml@slist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@refcontext@sorting}{\blx@refcontext@sortingnamekey}{\blx@refcontext@labelprefix}{\blx@tempd}{}}% \ifdefvoid\blx@tempa {\blx@warn@bibempty\endgroup} {\blx@bibliography\blx@tempa}} @@ -7849,11 +7575,11 @@ \blx@refsections} \def\blx@refsections{% - \ifcsvoid{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context} + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} {} {\toggletrue{blx@tempa}% \begingroup - \expandafter\blx@bibliography\csname blx@dlist@entry@\the\c@refsection @\blx@refcontext@context\endcsname}% + \expandafter\blx@bibliography\csname blx@slist@entry@\the\c@refsection @\blx@refcontext@context\endcsname}% \ifnum\c@refsection<\blx@maxsection \advance\c@refsection\@ne \expandafter\blx@refsections @@ -7893,9 +7619,9 @@ {\toggletrue{blx@tempa}% \begingroup \let\blx@tempa\@empty - \ifcsvoid{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context} + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} {} - {\letcs\blx@tempa{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}% + {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}% \blx@filter\blx@tempa{blx@segm@\the\c@refsection @\the\c@refsegment}% \blx@bibliography\blx@tempa}% \ifnum\c@refsegment<\csname blx@maxsegment@\the\c@refsection\endcsname @@ -7939,9 +7665,9 @@ \begingroup \blx@key@heading{#1}% \let\blx@tempa\@empty - \ifcsvoid{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context} + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} {} - {\letcs\blx@tempa{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}% + {\letcs\blx@tempa{blx@slist@entry@\the\c@refsection @\blx@refcontext@context}}% \blx@filter\blx@tempa{blx@catg@#1}% \blx@bibliography\blx@tempa}}% @@ -8175,6 +7901,14 @@ \appto\blx@mknohyperref{\let\blx@anchor\relax} +% Legacy alias for \printshorthands +\def\printshorthands{% + \@ifnextchar[%] + {\blx@printshorthands} + {\blx@printshorthands[]}} + +\def\blx@printshorthands[#1]{\printbiblist[#1]{shorthand}} + % Custom bibliography list % [<otions>]{biblistname} \newrobustcmd*{\printbiblist}[2][]{% @@ -8191,33 +7925,42 @@ \let\blx@thetitle\@empty % defaults \let\blx@tempa\@empty% before there is a .bbl, this must not be undef - % default sorting template and template name for list is same name as list + % default sorting scheme and scheme name for list is same name as list % name, then current context if not found \edef\blx@tempc{% - \ifcsdef{blx@sortingtemplate@#2} + \ifcsdef{blx@sorting@#2} {#2} - {\blx@refcontext@sortingtemplatename}}% - % locally define this since we want to fetch data from the datalist named + {\blx@refcontext@sorting}}% + % locally define this since we want to fetch data from the slist named % after the list we are printing rather than the data in refcontext list - \edef\blx@refcontext@context{\blx@tempc/\blx@refcontext@sortingnamekeytemplatename/\blx@refcontext@labelprefix/\blx@refcontext@uniquenametemplatename/\blx@refcontext@labelalphanametemplatename}% - \xifinlist\blx@tempc\blx@sortingtemplatenames - {} - {\listxadd\blx@sortingtemplatenames\blx@tempc}% + \edef\blx@refcontext@context{\blx@tempc/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}% + \edef\blx@tempd{% + \blx@xml@sorting + {\ifcsdef{blx@sortdef@locale@#2} + { locale="\csuse{blx@sortdef@locale@#2}"} + {}} + {\csuse{blx@sorting@\blx@tempc}}}% \let\blx@printbibchecks\relax \edef\blx@tempe{\the\c@refsection}% default refsection is current \blx@safe@actives \blx@printbibchecks - % Add the sortingtemplate to the list of sortingtemplates for this biblist + % Add the sortscheme to the list of sortschemes for this biblist % so we can compare on next run \xifinlist\blx@tempc\blx@biblists {} {\listxadd\blx@biblists\blx@tempc \blx@auxwrite\@mainaux{}{\string\abx@aux@biblist{\blx@tempc}}}% + \edef\blx@tempd{% + \blx@xml@sorting{% + \ifcsdef{blx@sortdef@locale@\blx@tempc} + { locale="\csuse{blx@sortdef@locale@\blx@tempc}"} + {}}{% + \csuse{blx@sorting@\blx@tempc}}}% \setkeys{blx@biblist1}{#1}% Set section only, if present ... \blx@rest@actives - \ifcsvoid{blx@dlist@list@\blx@tempe @\blx@refcontext@context} + \ifcsvoid{blx@slist@list@\blx@tempe @\blx@refcontext@context} {} - {\letcs\blx@tempa{blx@dlist@list@\blx@tempe @\blx@refcontext@context}}% + {\letcs\blx@tempa{blx@slist@list@\blx@tempe @\blx@refcontext@context}}% \blx@safe@actives \setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options \ifundef\blx@bibcheck @@ -8226,12 +7969,8 @@ {}} {}% \blx@rest@actives - % Add datalist to list of seen datalists to prevent duplicates - \xifinlist{\blx@refcontext@context @list}\blx@dlistnames - {} - {\listxadd\blx@dlistnames{\blx@refcontext@context @list}% - \csxappto{blx@dlists}{% - \blx@xml@dlist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@xml@dlist@refcontext{\blx@tempc}{\blx@refcontext@sortingnamekeytemplatename}{\blx@refcontext@labelprefix}{\blx@refcontext@uniquenametemplatename}{\blx@refcontext@labelalphanametemplatename}}{\csuse{blx@biblistfilters@#2}}}}% + \csxappto{blx@slists}{% + \blx@xml@slist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@tempc}{\blx@refcontext@sortingnamekey}{\blx@refcontext@labelprefix}{\blx@tempd}{\csuse{blx@biblistfilters@#2}}}% \ifdefvoid\blx@tempa {\blx@warn@biblistempty{#2}\endgroup} {\blx@biblist\blx@tempa}} @@ -8272,6 +8011,12 @@ \endgroup \if@restonecol\twocolumn\fi} +% Legacy aliases +\def\AtBeginShorthands{\AtBeginBiblist{shorthand}} +\def\AtEveryLositem{\AtEveryBiblistitem{shorthand}} +\@onlypreamble\AtBeginShorthands +\@onlypreamble\AtEveryLositem + % {<biblistname>} \newrobustcmd*{\AtBeginBiblist}[1]{\csgappto{blx@hook@biblistinit@#1}} \newrobustcmd*{\AtEveryBiblistitem}[1]{\csgappto{blx@hook@biblistitem@#1}} @@ -8341,50 +8086,35 @@ {\edef\z{\noexpand\setkeys{blx@refcontext}{\csuse{blx@refcontext@name@#2}}}\z}% % Override with explicit refcontext keyvals, if given \setkeys{blx@refcontext}{#1}% - % Add the sortingtemplate to the list of sortingtemplates so we can track + % Add the sortscheme to the list of sortschemes so we can track % special cases like sorting=none which need cite order change detection - \xifinlist\blx@refcontext@sortingtemplatename\blx@sortingtemplatenames + \xifinlist\blx@refcontext@sorting\blx@sortschemes {} - {\listxadd\blx@sortingtemplatenames\blx@refcontext@sortingtemplatename}% - \xdef\blx@refcontext@context{\blx@refcontext@sortingtemplatename/\blx@refcontext@sortingnamekeytemplatename/\blx@refcontext@labelprefix/\blx@refcontext@uniquenametemplatename/\blx@refcontext@labelalphanametemplatename}% + {\listxadd\blx@sortschemes\blx@refcontext@sorting + \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@refcontext@sorting}}}% + \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}% % Add the refcontext to the list of refcontexts so we can compare on next run \xifinlist\blx@refcontext@context\blx@refcontexts {} {\listxadd\blx@refcontexts\blx@refcontext@context \blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}}}% - \ifcsundef{blx@sortingtemplate@\blx@refcontext@sortingtemplatename} - {\blx@err@invopt{sorting=\blx@refcontext@sortingtemplatename}{}} - {}% - \ifcsundef{blx@sortingnamekeytemplate@\blx@refcontext@sortingnamekeytemplatename} - {\blx@err@invopt{sortingnamekeytemplate=\blx@refcontext@sortingnamekeytemplatename}{}} + \ifcsundef{blx@sorting@\blx@refcontext@sorting} + {\blx@err@invopt{sorting=\blx@refcontext@sorting}{}} {}% - \ifcsundef{blx@uniquenametemplate@\blx@refcontext@uniquenametemplatename} - {\blx@err@invopt{uniquenametemplate=\blx@refcontext@uniquenametemplatename}{}} - {}% - \ifcsundef{blx@labelalphanametemplate@\blx@refcontext@labelalphanametemplatename} - {\blx@err@invopt{labelalphanametemplate=\blx@refcontext@labelalphanametemplatename}{}} + \ifcsundef{blx@sortingnamekey@\blx@refcontext@sortingnamekey} + {\blx@err@invopt{sortingnamekeyscheme=\blx@refcontext@sortingnamekey}{}} {}}} % Reset to global sorting etc. when we leave a ref context (since they can't be nested) \protected\def\endrefcontext{% \togglefalse{blx@refcontext}% \global\let\blx@refcontext@labelprefix\@empty - \xdef\blx@refcontext@sortingtemplatename{\blx@sorting}% - \gdef\blx@refcontext@sortingnamekeytemplatename{global}% - \gdef\blx@refcontext@uniquenametemplatename{global}% - \gdef\blx@refcontext@labelalphanametemplatename{global}% - \xdef\blx@refcontext@context{\blx@refcontext@sortingtemplatename/\blx@refcontext@sortingnamekeytemplatename//\blx@refcontext@uniquenametemplatename/\blx@refcontext@labelalphanametemplatename}} - -% Meta option to set all name template options -\define@key{blx@refcontext}{nametemplates}{% - \gdef\blx@refcontext@sortingnamekeytemplatename{#1}% - \gdef\blx@refcontext@uniquenametemplatename{#1}% - \gdef\blx@refcontext@labelalphanametemplatename{#1}} - -\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sortingtemplatename{#1}} -\define@key{blx@refcontext}{sortingnamekeytemplatename}{\gdef\blx@refcontext@sortingnamekeytemplatename{#1}} -\define@key{blx@refcontext}{uniquenametemplatename}{\gdef\blx@refcontext@uniquenametemplatename{#1}} -\define@key{blx@refcontext}{labelalphanametemplatename}{\gdef\blx@refcontext@labelalphanametemplatename{#1}} + \xdef\blx@refcontext@sorting{\blx@sorting}% + \gdef\blx@refcontext@sortingnamekey{global}% + \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/}} + +\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sorting{#1}} +\define@key{blx@refcontext}{sortingnamekeyscheme}{\gdef\blx@refcontext@sortingnamekey{#1}} \define@key{blx@refcontext}{labelprefix}{% \gdef\blx@refcontext@labelprefix{#1}% \iftoggle{blx@defernumbers} @@ -8394,6 +8124,11 @@ Option 'labelprefix' requires global\MessageBreak 'defernumbers=true'}} {}}} +\define@key{blx@refcontext}{prefixnumbers}{%LEGACY(<3.3) + \blx@warning@noline{% + prefixnumbers option to \string\newrefcontext\space has been renamed, + use 'labelprefix' option instead}% + \setkeys{blx@refcontext}{labelprefix=#1}} % [refcontext keys]{<keyword1>,<keyword2>,...} \newcommand*{\assignrefcontextkeyws}{% @@ -8405,12 +8140,10 @@ \edef\blx@tempa{\blx@sorting}% \def\blx@tempb{global}% \let\blx@tempc\@empty% - \def\blx@tempd{global}% - \def\blx@tempe{global}% \setkeys{blx@assignrefcontext}{#2}% \def\do##1{% \listxadd\blx@assignedrefcontextkeywlist{##1}% - \csxdef{blx@assignedrefcontextkeyws#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}} + \csxdef{blx@assignedrefcontextkeyws#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}} \docsvlist{#3}} % [refcontext keys]{<category1>,<category2>,...} @@ -8423,12 +8156,10 @@ \edef\blx@tempa{\blx@sorting}% \def\blx@tempb{global}% \let\blx@tempc\@empty% - \def\blx@tempd{global}% - \def\blx@tempe{global}% \setkeys{blx@assignrefcontext}{#2}% \def\do##1{% \listxadd\blx@assignedrefcontextcatlist{##1}% - \csxdef{blx@assignedrefcontextcats#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}} + \csxdef{blx@assignedrefcontextcats#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}} \docsvlist{#3}} % [refcontext keys]{<entrykey1>,<entrykey2>,...} @@ -8441,24 +8172,14 @@ \edef\blx@tempa{\blx@sorting}% \def\blx@tempb{global}% \let\blx@tempc\@empty% - \def\blx@tempd{global}% - \def\blx@tempe{global}% \setkeys{blx@assignrefcontext}{#2}% \def\do##1{% - \csxdef{blx@assignedrefcontextkeys#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}}% + \csxdef{blx@assignedrefcontextkeys#1@\the\c@refsection @##1}{\blx@tempa/\blx@tempb/\blx@tempc}}% \docsvlist{#3}} -% Meta option to set all name template options -\define@key{blx@assignrefcontext}{nametemplates}{% - \def\blx@tempb{#1}% - \def\blx@tempd{#1}% - \def\blx@tempe{#1}} - \define@key{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}} -\define@key{blx@assignrefcontext}{sortingnamekeytemplatename}{\def\blx@tempb{#1}} +\define@key{blx@assignrefcontext}{sortingnamekeyscheme}{\def\blx@tempb{#1}} \define@key{blx@assignrefcontext}{labelprefix}{\def\blx@tempc{#1}} -\define@key{blx@assignrefcontext}{uniquenametemplatename}{\def\blx@tempd{#1}} -\define@key{blx@assignrefcontext}{labelalphanametemplatename}{\def\blx@tempe{#1}} % Reference sections \newrobustcmd*{\newrefsection}{% @@ -8923,13 +8644,33 @@ \protected\def\abx@aux@segm#1#2#3{% \listcsxadd{blx@segm@#1@#2}{\detokenize{#3}}} +\def\blx@citation@set#1#2{% + \blx@citation@entry{#1}{#2}% + \begingroup + \def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}% + \expandafter\expandafter\expandafter\docsvlist + \expandafter\expandafter\expandafter{% + \csname blx@setp@\the\c@refsection @#1\endcsname}% + \endgroup} + +\def\blx@citation@inset#1#2{% + \blx@citation@entry{#1}{#2}% + \expandafter\expandafter\expandafter\blx@citation@inset@i + \expandafter\expandafter\expandafter{% + \csname blx@setc@\the\c@refsection @#1\endcsname}\blx@msg@cundef} + +\def\blx@citation@inset@i#1{% + \ifcsdef{blx@setp@\the\c@refsection @#1} + {\blx@citation@set{#1}} + {\blx@citation@entry{#1}}} + \def\blx@citation@all{% \ifbool{citerequest} {\blx@bibreq{*}% \global\csletcs {blx@segm@\the\c@refsection @\the\c@refsegment} - {blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}% - \ifcsvoid{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context} + {blx@slist@entry@\the\c@refsection @\blx@refcontext@context}% + \ifcsvoid{blx@slist@entry@\the\c@refsection @\blx@refcontext@context} {\blx@logreq@active{}} {}} {}} @@ -8986,8 +8727,6 @@ % {<entrykey>,...} \protected\def\blx@citeloop#1{% \begingroup - % This must be here and not after \blx@citeadd as this changes the refcontext - \letcs\blx@tempb{blx@dlist@centry@\the\c@refsection @\blx@refcontext@context}% % Make sure this counter exists. Sometimes it might not when using, e.g: % refsection=chapter and \includeonly to put in the chapters or when % inserting citations into table of contents @@ -9004,9 +8743,8 @@ \ifnum\blx@tempcntb>\z@ \multicitedelim \fi - \else - \blx@postpunct@saved \fi + \letcs\blx@tempb{blx@slist@centry@\the\c@refsection @\blx@refcontext@context}% % \blx@tempb is a sorted list of all cites, \blx@tempa is the list of cites to % sort using this list \blx@thecitesort @@ -9061,7 +8799,7 @@ % refcontext defined \ifcsdef{blx@assignedrefcontextbib@\the\c@refsection @#1} {\letcs\blx@refcontext@context{blx@assignedrefcontextbib@\the\c@refsection @#1}} - {\edef\blx@refcontext@context{\blx@sorting/global//global/global}}% + {\edef\blx@refcontext@context{\blx@sorting/global/}}% % assignment via keyword list \ifdef\blx@assignedrefcontextkeywlist {\def\do##1{% @@ -9149,7 +8887,6 @@ \ifnum\c@citecount=\c@citetotal \def\blx@thecheckpunct{\blx@err@nestcite\@gobble}% \blx@postcode - \blx@postpunct@saved \fi \blx@endlangcite \endgroup @@ -9807,8 +9544,7 @@ \def\blx@precode{\delimcontext{#1}#2}% \def\blx@loopcode{#3}% \def\blx@dlimcode{#4}% - \def\blx@postcode{#5}% - \def\blx@postpunct@saved{##4}% + \def\blx@postcode{#5##4}% \blx@citeloop{##3}% \endgroup}} @@ -10070,10 +9806,9 @@ \abx@missing{#5}} {\printnames[#4]{#5}}}% \def\blx@dlimcode{\multicitedelim}% - \def\blx@postpunct@saved{#6}% \ifblank{#2} - {\let\blx@postcode\@empty} - {\def\blx@postcode{\usebibmacro{postnote}}}% + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% \boolfalse{citetracker}% \boolfalse{pagetracker}% \blx@citeloop{#3}% @@ -10098,10 +9833,9 @@ \abx@missing{#5}} {\printlist[#4]{#5}}}% \def\blx@dlimcode{\multicitedelim}% - \def\blx@postpunct@saved{#6}% \ifblank{#2} - {\let\blx@postcode\@empty} - {\def\blx@postcode{\usebibmacro{postnote}}}% + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% \boolfalse{citetracker}% \boolfalse{pagetracker}% \blx@citeloop{#3}% @@ -10127,10 +9861,9 @@ \abx@missing{#5}} {\printfield[#4]{#5}}}% \def\blx@dlimcode{\multicitedelim}% - \def\blx@postpunct@saved{#6}% \ifblank{#2} - {\let\blx@postcode\@empty} - {\def\blx@postcode{\usebibmacro{postnote}}}% + {\def\blx@postcode{#6}} + {\def\blx@postcode{\usebibmacro{postnote}#6}}% \boolfalse{citetracker}% \boolfalse{pagetracker}% \blx@citeloop{#3}% @@ -10224,13 +9957,7 @@ \def\ifuniquebaretitle{\blx@TE{\iftoggle{abx@bool@uniquebaretitle}}}% \def\ifuniquework{\blx@TE{\iftoggle{abx@bool@uniquework}}}% \def\ifuniqueprimaryauthor{\blx@TE{\iftoggle{abx@bool@uniqueprimaryauthor}}}% - \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}% - \def\iflabeldateisdate{\blx@TE\blx@imc@iflabeldateisdate}% - \def\ifdatehasyearonlyprecision#1{% - \blx@TE{\blx@imc@ifdatehasyearonlyprecision{#1}}}% - \def\ifdatehastime#1{\blx@TE{\blx@imc@ifdatehastime{#1}}}% - \def\ifdateshavedifferentprecision#1#2{% - \blx@TE{\blx@imc@ifdateshavedifferentprecision{#1}{#2}}}}} + \def\ifandothers#1{\blx@TE{\iftoggle{abx@bool@more#1}}}}} % {<listmacro>}{<filtercsname>} => matches in <listmacro> \protected\def\blx@bibfilter#1#2{% @@ -10649,7 +10376,7 @@ ~~~~~~~~<bcf:map\string_step#1/>\blx@nl} \xdef\blx@xml@labelalphanametemplate#1#2{% - ~~<bcf:labelalphanametemplate name="#1">\blx@nl + ~~<bcf:labelalphanametemplate type="#1">\blx@nl #2% ~~</bcf:labelalphanametemplate>\blx@nl} \xdef\blx@xml@labelalphanametemplatenamepart#1#2#3{% @@ -10666,17 +10393,6 @@ \xdef\blx@xml@labelalpha@part#1#2{% ~~~~~~<bcf:labelpart#1>#2</bcf:labelpart>\blx@nl} -\xdef\blx@xml@extradate#1{% - ~~<bcf:extradatespec>\blx@nl - #1% - ~~</bcf:extradatespec>\blx@nl} -\xdef\blx@xml@extradatescope#1{% - ~~~~<bcf:scope>\blx@nl - #1% - ~~~~</bcf:scope>\blx@nl} -\xdef\blx@xml@edordered#1#2{% - ~~~~~~<bcf:field order="#1">#2</bcf:field>\blx@nl} - \xdef\blx@xml@inheritance#1{% ~~<bcf:inheritance>\blx@nl #1% @@ -10724,18 +10440,18 @@ \xdef\blx@xml@nolabelwidthcount#1{% ~~~~<bcf:nolabelwidthcount value="#1"/>\blx@nl} -\xdef\blx@xml@uniquenametemplate#1#2{% - ~~<bcf:uniquenametemplate name="#1">\blx@nl% - #2% +\xdef\blx@xml@uniquenametemplate#1{% + ~~<bcf:uniquenametemplate>\blx@nl% + #1% ~~</bcf:uniquenametemplate>\blx@nl} \xdef\blx@xml@uniquenametemplatenamepart#1#2#3{% ~~~~<bcf:namepart #1#2>#3</bcf:namepart>\blx@nl} -\xdef\blx@xml@sortingnamekeytemplate#1#2{% - ~~<bcf:sortingnamekeytemplate name="#1">\blx@nl% +\xdef\blx@xml@sortingnamekey#1#2{% + ~~<bcf:sortingnamekey keyscheme="#1">\blx@nl% #2% - ~~</bcf:sortingnamekeytemplate>\blx@nl} + ~~</bcf:sortingnamekey>\blx@nl} \xdef\blx@xml@sortingnamekeykeypart#1#2{% ~~~~<bcf:keypart#1>\blx@nl @@ -10748,26 +10464,26 @@ \xdef\blx@xml@sortingnamekeyliteral#1#2{% ~~~~~~<bcf:part type="literal"#1>#2</bcf:part>\blx@nl} -\xdef\blx@xml@sortingtemplate#1#2#3{% - ~~<bcf:sortingtemplate name="#1"#2>\blx@nl% - #3% - ~~</bcf:sortingtemplate>\blx@nl} +\xdef\blx@xml@sorting#1#2{% + ~~<bcf:sorting#1>\blx@nl% + #2% + ~~</bcf:sorting>\blx@nl} \xdef\blx@xml@presort#1#2{% - ~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% + ~~~~<bcf:presort\noexpand\ifblank{#1}{}{ type="#1"}>% #2</bcf:presort>\blx@nl} \xdef\blx@xml@sortexclude#1#2{% - ~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl + ~~~~<bcf:sortexclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl #2% - ~~</bcf:sortexclusion>\blx@nl} + ~~~~</bcf:sortexclusion>\blx@nl} \xdef\blx@xml@exclude#1{% - ~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} + ~~~~~~<bcf:exclusion>#1</bcf:exclusion>\blx@nl} \xdef\blx@xml@sortinclude#1#2{% - ~~<bcf:sortinclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl + ~~~~<bcf:sortinclusion\noexpand\ifblank{#1}{}{ type="#1"}>\blx@nl #2% - ~~</bcf:sortinclusion>\blx@nl} + ~~~~</bcf:sortinclusion>\blx@nl} \xdef\blx@xml@include#1{% - ~~~~<bcf:inclusion>#1</bcf:inclusion>\blx@nl} + ~~~~~~<bcf:inclusion>#1</bcf:inclusion>\blx@nl} \xdef\blx@xml@sort#1#2{% ~~~~<bcf:sort #1>\blx@nl #2% @@ -10779,24 +10495,17 @@ \xdef\blx@xml@endsection{% ~~</bcf:section>} -\xdef\blx@xml@dlist@refcontext#1#2#3#4#5{% - ~~~~~~~~~~~~~~~~sortingtemplatename="#1"\blx@nl - ~~~~~~~~~~~~~~~~sortingnamekeytemplatename="#2"\blx@nl - ~~~~~~~~~~~~~~~~labelprefix="#3"\blx@nl - ~~~~~~~~~~~~~~~~uniquenametemplatename="#4"\blx@nl - ~~~~~~~~~~~~~~~~labelalphanametemplatename="#5"} -\xdef\blx@xml@dlist#1#2#3#4#5{% - ~~<bcf:datalist section="#3"\blx@nl - ~~~~~~~~~~~~~~~~name="#1"\blx@nl - ~~~~~~~~~~~~~~~~type="#2"\blx@nl - #4>\blx@nl - #5% - ~~</bcf:datalist>\blx@nl} -\xdef\blx@xml@dlistfilterorbegin{% +\xdef\blx@xml@slist#1#2#3#4#5#6#7#8{% + ~~<bcf:sortlist section="#3" name="#1" type="#2" sortscheme="#4" + sortnamekeyscheme="#5" labelprefix="#6">\blx@nl + #8% + #7% + ~~</bcf:sortlist>\blx@nl} +\xdef\blx@xml@slistfilterorbegin{% ~~~~<bcf:filteror>\blx@nl} -\xdef\blx@xml@dlistfilterorend{% +\xdef\blx@xml@slistfilterorend{% ~~~~</bcf:filteror>\blx@nl} -\xdef\blx@xml@dlistfilter#1#2{% +\xdef\blx@xml@slistfilter#1#2{% ~~~~<bcf:filter type="#1">#2</bcf:filter>\blx@nl} \xdef\blx@xml@bibdata#1#2{% @@ -10851,8 +10560,7 @@ \blx@xml@toggle{singletitle}% \blx@xml@svalue{sortalphaothers}{\sortalphaothers}% \blx@xml@svalue{sortlocale}{\blx@sortlocale}% - \blx@xml@svalue{sortingtemplatename}{\blx@sorting}% - \blx@xml@toggle{sortsets}% + \blx@xml@svalue{sortscheme}{\blx@sorting}% \blx@xml@svalue{uniquelist}{\blx@uniquelist}% \blx@xml@svalue{uniquename}{\blx@uniquename}% \blx@xml@toggle{uniqueprimaryauthor}% @@ -11021,56 +10729,68 @@ {}}}} {}% % labelalpha name template - \eappto\blx@tempa{\blx@xml@comment{LABELALPHA NAME TEMPLATE}}% + \eappto\blx@tempa{% + \blx@xml@comment{LABELALPHA NAME TEMPLATE}}% \def\do##1{% \eappto\blx@tempa{% - \blx@xml@labelalphanametemplate{##1}{\csuse{blx@labelalphanametemplate@##1}}}}% - \dolistloop\blx@lantemplatespecs + \blx@xml@labelalphanametemplate{##1}{% + \csuse{blx@labelalphanametemplate@##1}}% + }% + }% + \dolistloop\blx@lantem@type % labelalpha template \eappto\blx@tempa{% \blx@xml@comment{LABELALPHA TEMPLATE}}% \def\do##1{% \eappto\blx@tempa{% \blx@xml@labelalphatemplate{##1}{% - \csuse{blx@labelalphatemplate@##1}}}}% + \csuse{blx@labelalphatemplate@##1}}% + }% + }% \dolistloop\blx@latem@type - % extradate specification - \eappto\blx@tempa{% - \blx@xml@comment{EXTRADATE}% - \blx@xml@extradate{\csuse{blx@bcf@extradatespec}}}% % data inheritance \eappto\blx@tempa{% \blx@xml@comment{INHERITANCE}% \blx@xml@inheritance{% \csuse{blx@inherit@default}% - \csuse{blx@inherit@data}}}% + \csuse{blx@inherit@data}% + }% + }% % noinit \ifcsdef{blx@noinit} {\eappto\blx@tempa{% \blx@xml@comment{NOINIT}% \blx@xml@noinits{% - \csuse{blx@noinit}}}}% + \csuse{blx@noinit}% + }% + }} {}% % nolabel \ifcsdef{blx@nolabel} {\eappto\blx@tempa{% \blx@xml@comment{NOLABEL}% \blx@xml@nolabels{% - \csuse{blx@nolabel}}}}% + \csuse{blx@nolabel}% + }% + }} {}% % nolabel \ifcsdef{blx@nolabelwidthcount} {\eappto\blx@tempa{% \blx@xml@comment{NOLABELWIDTHCOUNT}% \blx@xml@nolabelwidthcounts{% - \csuse{blx@nolabelwidthcount}}}}% + \csuse{blx@nolabelwidthcount}% + }% + }} {}% % nosort \ifcsdef{blx@nosort} {\eappto\blx@tempa{% \blx@xml@comment{NOSORT}% \blx@xml@nosorts{% - \csuse{blx@nosort}}}}% + \csuse{blx@nosort}% + }% + }} {}% % transliteration \ifdefempty\blx@translits @@ -11080,18 +10800,16 @@ \eappto\blx@tempa{\blx@xml@transliteration{##1}{\csuse{blx@translit@##1}}}}% \dolistloop\blx@translits}% % uniquenametemplate - \eappto\blx@tempa{\blx@xml@comment{UNIQUENAME TEMPLATES}}% - \def\do##1{% - \eappto\blx@tempa{% - \blx@xml@uniquenametemplate{##1}{\csuse{blx@uniquenametemplate@##1}}}}% - \dolistloop\blx@untemplatespecs - % sortingnamekeytemplate - \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY TEMPLATES}}% + \eappto\blx@tempa{\blx@xml@comment{UNIQUENAME TEMPLATE}}% + \eappto\blx@tempa{\blx@xml@uniquenametemplate{\blx@uniquenametemplate}}% + % sortingnamekey + \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY}}% \def\do##1{% \eappto\blx@tempa{% - \blx@xml@sortingnamekeytemplate{##1}{\csuse{blx@sortingnamekeytemplate@##1}}}}% - \dolistloop\blx@sortingnamekeytemplates - % presort/sorting excludes/sorting includes + \blx@xml@sortingnamekey{##1}{% + \csuse{blx@sortingnamekey@##1}}}}% + \dolistloop\blx@sortingnamekeyspecs + % sorting \def\do##1{% \eappto\blx@bcf@presort{\csuse{blx@bcf@presort@##1}}% \eappto\blx@bcf@exclude{\csuse{blx@bcf@exclude@##1}}% @@ -11099,9 +10817,14 @@ \abx@doentrytypes \do{*}% entrytype wildcard \eappto\blx@tempa{% - \blx@bcf@presort - \blx@bcf@exclude - \blx@bcf@include}% + \blx@xml@comment{SORTING}% + \blx@xml@sorting{}{% + \blx@bcf@presort + \blx@bcf@exclude + \blx@bcf@include + \csuse{blx@sorting@\blx@sorting}% + }% + }% % datamodel \eappto\blx@tempa{% \blx@xml@comment{DATA MODEL}% @@ -11133,18 +10856,9 @@ \global\undef\blx@tempa \endgroup \AfterEndDocument{% - \def\do##1{% - \csxappto{blx@sortingtemplates}{% - \blx@xml@sortingtemplate{##1} - {\ifcsdef{blx@sortdef@locale@##1}{ locale="\csuse{blx@sortdef@locale@##1}"}{}} - {\csuse{blx@sortingtemplate@##1}}}}% - \dolistloop\blx@sortingtemplatenames \blx@auxwrite\blx@bcfout{}{% \blx@xml@endsection\blx@nl - \blx@xml@comment{SORTING TEMPLATES}% - \csuse{blx@sortingtemplates}% - \blx@xml@comment{DATALISTS}% - \csuse{blx@dlists}% + \csuse{blx@slists}% \blx@xml@endfile}% \immediate\closeout\blx@bcfout}} @@ -11433,25 +11147,29 @@ \define@key{blx@sourcemap@step}{replace}{% characters \eappto\blx@tempf{ map\string_replace="#1"}} -% [<specname>]{<spec>} +% [<entrytype>]{<spec>} \newrobustcmd*{\DeclareLabelalphaNameTemplate}[2][]{% + \ifblank{#1} + {\blx@lantem{#2}{global}} + {\forcsvlist{\blx@lantem{#2}}{#1}}} +\@onlypreamble\DeclareLabelalphaNameTemplate +\blx@collectopts{xml}{blx@globalopts}{labelalphanametemplate}% for passing to the .bcf +\blx@collectopts{xml}{blx@typeopts}{labelalphanametemplate}% for passing to the .bcf + +\def\blx@lantem#1#2{% \begingroup - \ifblank{#1} - {\def\blx@lantname{global}}% default - {\def\blx@lantname{#1}}% \let\namepart\blx@lantem@namepart \let\blx@tempa\@empty \blx@tempcnta\z@ - #2% - \global\cslet{blx@labelalphanametemplate@\blx@lantname}\blx@tempa - \xifinlist\blx@lantname\blx@lantemplatespecs - {} - {\listxadd\blx@lantemplatespecs\blx@lantname}% + #1% + \ifdef\blx@lantem@type + {\ifinlist{#2}\blx@lantem@type + {\global\cslet{blx@labelalphanametemplate@#2}\blx@tempa} + {\listgadd\blx@lantem@type{#2}% + \global\cslet{blx@labelalphanametemplate@#2}\blx@tempa}} + {\listgadd\blx@lantem@type{#2}% + \global\cslet{blx@labelalphanametemplate@#2}\blx@tempa}% \endgroup} -\@onlypreamble\DeclareLabelalphaNameTemplate -\blx@collectopts{xml}{blx@globalopts}{labelalphanametemplate}% for passing to the .bcf -\DeclareEntryOption[string]{labelalphanametemplatename}{% - \def\blx@refcontext@labelalphanametemplatename{#1}} \newcommand*{\blx@lantem@namepart}[2][]{% \advance\blx@tempcntb\@ne @@ -11532,6 +11250,23 @@ \eappto\blx@tempb{% \blx@xml@labelalpha@part{\blx@tempc}{#2}}} +% Legacy options moved to \namepart in \DeclareLabelalphaNameTemplate +\define@key{blx@latem@field}{compound}{% deprecated + \blx@warning@noline{% + Ignored 'compound' option to \string\field\space in \string\DeclareLabelalphaNameTemplate\MessageBreak + This is now the 'compound' option of \string\namepart\space in\MessageBreak + \string\DeclareLabelalphaNameTemplate}} +\define@key{blx@latem@field}{pcompound}{% deprecated + \blx@warning@noline{% + Ignored 'pcompound' option to \string\field\space in \string\DeclareLabelalphaNameTemplate\MessageBreak + This is now the 'compound' option of \string\namepart\space in\MessageBreak + \string\DeclareLabelalphaNameTemplate}} +\define@key{blx@latem@field}{pstrwidth}{% deprecated + \blx@warning@noline{% + Ignored 'pstrwidth' option to \string\field\space in \string\DeclareLabelalphaNameTemplate\MessageBreak + This is now the 'strwidth' option of \string\namepart\space in\MessageBreak + \string\DeclareLabelalphaNameTemplate}} + \define@key{blx@latem@field}{uppercase}[true]{% true|false \ifstrequal{#1}{true} {\appto\blx@tempc{ uppercase="1"}} @@ -11691,16 +11426,16 @@ \@onlypreamble\DeclareBiblistFilter \newcommand*{\blx@biblistfilteror}[1]{% - \eappto\blx@tempa{\blx@xml@dlistfilterorbegin}% + \eappto\blx@tempa{\blx@xml@slistfilterorbegin}% #1% - \eappto\blx@tempa{\blx@xml@dlistfilterorend}} + \eappto\blx@tempa{\blx@xml@slistfilterorend}} \newcommand*{\blx@biblistfilter}[1][2]{% \let\blx@tempc\@empty \let\blx@tempd\@empty \setkeys{blx@biblistfilter@filter}{#1}% \eappto\blx@tempa{% - \blx@xml@dlistfilter{\blx@tempc}{\blx@tempd}}} + \blx@xml@slistfilter{\blx@tempc}{\blx@tempd}}} \define@key{blx@biblistfilter@filter}{type}{% \def\blx@tempc{#1}} @@ -11733,25 +11468,17 @@ \eappto\blx@tempb{% \blx@xml@translit{#1}{#2}{#3}}} -% [<specname>]{<spec>} -\newrobustcmd*{\DeclareUniquenameTemplate}[2][]{% +% {<spec>} +\newrobustcmd*{\DeclareUniquenameTemplate}[1]{% \begingroup - \ifblank{#1} - {\def\blx@untname{global}}% default - {\def\blx@untname{#1}}% \let\namepart\blx@untemp@namepart \let\blx@tempa\@empty \blx@tempcnta\z@ - #2% - \global\cslet{blx@uniquenametemplate@\blx@untname}\blx@tempa - \xifinlist\blx@untname\blx@untemplatespecs - {} - {\listxadd\blx@untemplatespecs\blx@untname}% + #1% + \global\let\blx@uniquenametemplate\blx@tempa \endgroup} \@onlypreamble\DeclareUniquenameTemplate \blx@collectopts{xml}{blx@globalopts}{uniquenametemplate}% for passing to the .bcf -\DeclareEntryOption[string]{uniquenametemplatename}{% - \def\blx@refcontext@uniquenametemplatename{#1}} \newcommand*{\blx@untemp@namepart}[2][]{% \advance\blx@tempcntb\@ne @@ -11773,11 +11500,8 @@ {\appto\blx@tempc{ base="1"}} {}} -\define@key{blx@untemp@namepart}{disambiguation}{% disambiguation option for namepart none|inits|full|fullonly - \appto\blx@tempc{ disambiguation="#1"}} - -% [<templatename>]{<template>} -\newrobustcmd*{\DeclareSortingNamekeyTemplate}[2][]{% +% [<specname>]{<spec>} +\newrobustcmd*{\DeclareSortingNamekeyScheme}[2][]{% \begingroup \ifblank{#1} {\def\blx@snkname{global}}% default @@ -11788,23 +11512,19 @@ \let\blx@tempa\@empty \blx@tempcnta\z@ #2% - \global\cslet{blx@sortingnamekeytemplate@\blx@snkname}\blx@tempa - \xifinlist\blx@snkname\blx@sortingnamekeytemplates + \global\cslet{blx@sortingnamekey@\blx@snkname}\blx@tempa + \xifinlist\blx@snkname\blx@sortingnamekeyspecs {} - {\listxadd\blx@sortingnamekeytemplates\blx@snkname}% + {\listxadd\blx@sortingnamekeyspecs\blx@snkname}% \endgroup} -\@onlypreamble\DeclareSortingNamekeyTemplate -\blx@collectopts{xml}{blx@globalopts}{sortingnamekeytemplate}% for passing to the .bcf -\DeclareEntryOption[string]{sortingnamekeytemplatename}{% - \def\blx@refcontext@sortingnamekeytemplatename{#1}} - -% User-mode macro for checking sorting name template options -\def\ifuniquenametemplatename#1{% - \expandafter\ifstrequal\expandafter{\blx@refcontext@uniquenametemplatename}{#1}} -\def\iflabelalphanametemplatename#1{% - \expandafter\ifstrequal\expandafter{\blx@refcontext@labelalphanametemplatename}{#1}} -\def\ifsortingnamekeytemplatename#1{% - \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekeytemplatename}{#1}} +\@onlypreamble\DeclareSortingNamekeyScheme +\blx@collectopts{xml}{blx@globalopts}{sortingnamekey}% for passing to the .bcf +\DeclareEntryOption[string]{sortnamekeyscheme}{% + \def\blx@refcontext@sortingnamekey{#1}} + +% User-mode macro for checking sorting name key scheme +\def\ifsortnamekeyscheme#1{% + \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekey}{#1}} \newcommand*{\blx@sortnk@keypart}[1]{% \advance\blx@tempcnta\@ne @@ -11842,8 +11562,8 @@ {\appto\blx@tempc{ inits="1"}} {\appto\blx@tempc{ inits="0"}}} -% [options]{<templatename>}{<template>} -\newrobustcmd*{\DeclareSortingTemplate}[3][]{% +% {<name>}{<spec>} +\newrobustcmd*{\DeclareSortingScheme}[3][]{% \ifblank{#1} {} {\setkeys{blx@sortdef@sorting}{#1}% @@ -11864,10 +11584,10 @@ \blx@tempcnta\z@ \let\blx@tempa\@empty #3% - \global\cslet{blx@sortingtemplate@#2}\blx@tempa + \global\cslet{blx@sorting@#2}\blx@tempa \endgroup} -\@onlypreamble\DeclareSortingTemplate -\blx@collectopts{xml}{blx@globalopts}{sortingtemplate}% for passing to the .bcf +\@onlypreamble\DeclareSortingScheme +\blx@collectopts{xml}{blx@globalopts}{sortscheme}% for passing to the .bcf \define@key{blx@sortdef@sorting}{locale}{% locale name \def\blx@templ{#1}} @@ -11936,6 +11656,7 @@ \blx@xml@sortitem{order="\the\blx@tempcntb"}{\blx@tempe}}} % [<type,type,...>]{<string>} + \newrobustcmd*{\DeclarePresort}[2][]{% \begingroup \blx@xmlsanitizeafter{\def\blx@tempa}{#2}% @@ -11993,29 +11714,6 @@ \def\blx@sortinclude@i#1{% \appto\blx@tempa{\blx@xml@include{#1}}} -% {<field,field,...>} -\newrobustcmd*{\DeclareExtradate}[1]{% - \begingroup - \let\blx@tempa\@empty - \let\scope\blx@extradate@scope - #1% - \global\let\blx@bcf@extradatespec\blx@tempa - \endgroup} -\@onlypreamble\DeclareExtradate -\blx@collectopts{xml}{blx@globalopts}{extradatespec}% for passing to the .bcf - -\newrobustcmd*{\blx@extradate@scope}[1]{% - \let\blx@tempb\@empty - \let\field\blx@ordereded@field - #1% - \csxappto{blx@tempa}{% - \noexpand\blx@xml@extradatescope{\blx@tempb}}} - -\newcommand*{\blx@ordereded@field}[1]{% - \advance\blx@tempcnta\@ne - \csxappto{blx@tempb}{% - \noexpand\blx@xml@edordered{\the\blx@tempcnta}{#1}}} - % [<type,type,...>]{<field,field,...>} \newrobustcmd*{\DeclareLabelname}[2][]{% \begingroup @@ -12049,6 +11747,10 @@ \blx@collectopts{xml}{blx@globalopts}{labeltitlespec}% for passing to the .bcf \blx@collectopts{xml}{blx@typeopts}{labeltitlespec}% for passing to the .bcf +\newrobustcmd*{\DeclareLabelyear}[2][]{% + \blx@warning@noline{% + 'DeclareLabelyear' is deprecated, please use 'DeclareLabeldate'}} + \newrobustcmd*{\DeclareLabeldate}[2][]{% \begingroup \let\blx@tempa\@empty @@ -12212,29 +11914,21 @@ \settoggle{blx@safeinputenc}{#1}} \newtoggle{blx@safeinputenc} -% global "sorting" option becomes "sortingtemplatename" in the .bcf and so -% don't use \DeclareBibliographyOption. This is a legacy naming issue -% unlikely to be corrected as "sorting" is an obvious name for biblatex users -% "sorting" is used in the .bcf for the actual sorting template definitions and is -% an XML format option -\define@key{blx@opt@pre}{sorting}{% +\DeclareBibliographyOption[string]{sorting}{% \def\blx@sorting{#1}% - \def\blx@refcontext@sortingtemplatename{#1}} -\blx@collectopts{string}{blx@globalopts}{sortingtemplatename}% for passing to the .bcf + \def\blx@refcontext@sorting{#1}} \AtEndPreamble{% - \ifcsdef{blx@sortingtemplate@\blx@sorting} + \ifcsdef{blx@sorting@\blx@sorting} {} {\blx@err@invopt{sorting=\blx@sorting}{}% \def\blx@sorting{nty}% - \def\blx@refcontext@sortingtemplatename{nty}}% - \listxadd\blx@sortingtemplatenames\blx@sorting - \def\blx@refcontext@sortingnamekeytemplatename{global}% - \let\blx@refcontext@labelprefix\@empty - \def\blx@refcontext@uniquenametemplatename{global}% - \def\blx@refcontext@labelalphanametemplatename{global}% - \xdef\blx@refcontext@context{\blx@refcontext@sortingtemplatename/\blx@refcontext@sortingnamekeytemplatename/\blx@refcontext@labelprefix/\blx@refcontext@uniquenametemplatename/\blx@refcontext@labelalphanametemplatename}% - \listxadd\blx@refcontexts\blx@refcontext@context} + \def\blx@refcontext@sorting{nty}}% + \listxadd\blx@sortschemes\blx@sorting + \def\blx@refcontext@sortingnamekey{global}% + \let\blx@refcontext@labelprefix\@empty + \xdef\blx@refcontext@context{\blx@refcontext@sorting/\blx@refcontext@sortingnamekey/\blx@refcontext@labelprefix}% + \listxadd\blx@refcontexts\blx@refcontext@context} \DeclareBibliographyOption[boolean]{sortcase}[true]{% \settoggle{blx@sortcase}{#1}} @@ -12242,6 +11936,10 @@ \DeclareBibliographyOption[boolean]{sortupper}[true]{% \settoggle{blx@sortupper}{#1}} +\DeclareBibliographyOption[string]{sortlos}{% + \blx@warning@noline{% + sortlos option is deprecated, use 'sorting' option to \string\printbiblist}} + \DeclareBibliographyOption[integer]{maxnames}{% \numdef\blx@maxcitenames{#1}% \numdef\blx@maxbibnames{#1}} @@ -12384,6 +12082,22 @@ #3=#4} {}} +% Legacy for giveninits +\DeclareBibliographyOption[boolean]{firstinits}[true]{% + \blx@warning@noline{% + 'firstinits' option is deprecated, use 'giveninits' instead}% + \settoggle{abx@bool@giveninits}{#1}} + +% Legacy for sortfirstinits/sortgiveninits +\DeclareBibliographyOption[boolean]{sortfirstinits}[true]{% + \blx@warning@noline{% + 'sortfirstinits' option is deprecated, use 'inits' option\MessageBreak + to \string\namepart\space in \string\DeclareSortingNamekeyScheme}} +\DeclareBibliographyOption[boolean]{sortgiveninits}{% + \blx@warning@noline{% + 'sortgiveninits' option is deprecated, use 'inits' option\MessageBreak + to \string\namepart\space in \string\DeclareSortingNamekeyScheme}} + \DeclareBibliographyOption[boolean]{terseinits}[true]{% \ifstrequal{#1}{true} {\toggletrue{blx@terseinits} @@ -12445,6 +12159,11 @@ \DeclareBibliographyOption[boolean]{clearlang}[true]{% \settoggle{blx@clearlang}{#1}} +\DeclareBibliographyOption[string]{babel}{% + \blx@warning@noline{% + 'babel' option is deprecated, use 'autolang' instead}% + \blx@autolang@i{#1}} + \DeclareBibliographyOption[string]{autolang}{% \blx@autolang@i{#1}} @@ -12507,9 +12226,6 @@ {\let\blx@thecitesort\blx@citenosort \let\blx@thenotecheck\relax}} -\DeclareBibliographyOption[boolean]{sortsets}[true]{% - \settoggle{blx@sortsets}{#1}} - \DeclareBibliographyOption[boolean]{hyperref}[true]{% \ifcsdef{blx@opt@hyperref@#1} {\letcs\blx@hyperref{blx@opt@hyperref@#1}} @@ -12517,35 +12233,6 @@ \def\blx@opt@hyperref@false{0} \def\blx@opt@hyperref@true{1} \def\blx@opt@hyperref@auto{2} -\def\blx@opt@hyperref@manual{3} - -\def\blx@warn@usedmanualhyperrefs#1{% - \blx@warning@noline{The command '\string#1' can\MessageBreak - only be used with 'hyperref=manual'}} -\def\blx@warn@multiplemanualhyperrefs{% - \blx@warning@noline{You must call either '\string\BiblatexManualHyperrefOn'\MessageBreak - or '\string\BiblatexManualHyperrefOff' exactly once.\MessageBreak - Subsequent calls to either command will be ignored}} -\def\BiblatexManualHyperrefOn{% - \ifnum\blx@hyperref=\thr@@ - \blx@mkhyperref - \global\undef\blx@mkhyperref - \global\undef\blx@mknohyperref - \global\let\BiblatexManualHyperrefOn\blx@warn@multiplemanualhyperrefs - \global\let\BiblatexManualHyperrefOff\blx@warn@multiplemanualhyperrefs - \else - \blx@warn@usedmanualhyperrefs{\BiblatexManualHyperrefOn}% - \fi} -\def\BiblatexManualHyperrefOff{% - \ifnum\blx@hyperref=\thr@@ - \blx@mknohyperref - \global\undef\blx@mkhyperref - \global\undef\blx@mknohyperref - \global\let\BiblatexManualHyperrefOn\blx@warn@multiplemanualhyperrefs - \global\let\BiblatexManualHyperrefOff\blx@warn@multiplemanualhyperrefs - \else - \blx@warn@usedmanualhyperrefs{\BiblatexManualHyperrefOff}% - \fi} \DeclareBibliographyOption[boolean]{backref}[true]{% \ifstrequal{#1}{true} @@ -12839,7 +12526,7 @@ test {\ifstrequal{#1}{false}}} {\blx@warning@noline{% 'labeldate' option used to determine whether to provide label date fields and\MessageBreak - extradate field is renamed to 'labeldateparts', setting this instead. This option is + extrayear field is renamed to 'labeldateparts', setting this instead. This option is now used to set the format of the labeldate}% \settoggle{blx@labeldateparts}{#1}} {\ifstrequal{#1}{iso8601} @@ -12864,6 +12551,11 @@ \protected\def\blx@imc@printlabeldateextra{\csuse{mkbibrange#1extra}{label}}} {\blx@err@invopt{labeldate=#1}{}}}}} +\DeclareBibliographyOption[string]{datelabel}{% + \blx@warning@noline{% + 'datelabel' option is deprecated, use 'labeldate' instead}% + \setkeys{blx@opt@pre}{labeldate=#1}} + \DeclareBibliographyOption[string]{labeltime}{% \ifcsdef{mktimerange#1} {\def\blx@timeformat@labeltime{#1}% @@ -13079,6 +12771,15 @@ \DeclareTypeOption[boolean]{labeldateparts}[true]{% \settoggle{blx@labeldateparts}{#1}} +\DeclareBibliographyOption[boolean]{labelyear}[true]{% + \blx@warning@noline{% + 'labelyear' option is deprecated, use 'labeldateparts' instead}% + \settoggle{blx@labeldateparts}{#1}} +\DeclareTypeOption[boolean]{labelyear}[true]{% + \blx@warning@noline{% + 'labelyear' option is deprecated, use 'labeldateparts' instead}% + \settoggle{blx@labeldateparts}{#1}} + \DeclareBibliographyOption[boolean]{uniquelist}[true]{% \ifcsdef{blx@opt@uniquelist@#1} {\letcs\blx@uniquelist{blx@opt@uniquelist@#1}} @@ -13252,6 +12953,15 @@ \DeclareEntryOption[boolean]{skipbib}[true]{% \settoggle{blx@skipbib}{#1}} +\DeclareTypeOption[boolean]{skiplos}{% + \blx@warning@noline{% + skiplos option is deprecated, use 'skipbiblist' instead}% + \settoggle{blx@skipbiblist}{#1}} +\DeclareEntryOption[boolean]{skiplos}{% + \blx@warning@noline{% + skiplos option is deprecated, use 'skipbiblist' instead}% + \settoggle{blx@skipbiblist}{#1}} + \DeclareTypeOption[boolean]{skipbiblist}[true]{% \settoggle{blx@skipbiblist}{#1}} \DeclareEntryOption[boolean]{skipbiblist}[true]{% @@ -13482,6 +13192,7 @@ % Deferred last minute setup \AtBeginDocument{% + \blx@auxwrite\@mainaux{}{\string\abx@aux@sortscheme{\blx@sorting}}% \blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}} \blx@checkencoding \if@filesw |