summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/biblatex/biblatex.sty')
-rw-r--r--Master/texmf-dist/tex/latex/biblatex/biblatex.sty1453
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&#2{%
\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