texlive[57272] Master/texmf-dist: biblatex (31dec20)

commits+karl at tug.org commits+karl at tug.org
Thu Dec 31 22:50:01 CET 2020


Revision: 57272
          http://tug.org/svn/texlive?view=revision&revision=57272
Author:   karl
Date:     2020-12-31 22:50:01 +0100 (Thu, 31 Dec 2020)
Log Message:
-----------
biblatex (31dec20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst
    trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
    trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations.tex
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def
    trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.sty
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/basque.lbx

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def

Modified: trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst	2020-12-31 21:50:01 UTC (rev 57272)
@@ -184,7 +184,7 @@
            last.name last.hash last.year last.extra }
 
 FUNCTION {initialize} {
-  "$Revision: 3.15 $"
+  "$Revision: 3.16 $"
   #12 entry.max$ substring$
   #-3 entry.max$ substring$
   "Biblatex version: " swap$ * top$

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,3 +1,23 @@
+# RELEASE NOTES FOR VERSION 3.16
+- Fixed an infinite loop caused by excessive aliasing of the `volcitepages`
+  format.
+  Reverted the alias `\DeclareFieldAlias{volcitepages}{postnote}`
+  and again define
+  ```
+  \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
+  ```
+  explicitly.
+- Fixed `.lbx` file loading behaviour. All `.lbx` files are now loaded
+  `\AtBeginDocument`. Languages that were not requested explicitly by packages
+  are recorded in the `.aux` file and loaded on the next run.
+  This may require a further LaTeX run in some situations, but now we can be
+  sure when `.lbx` files are read.
+- Added `label` option to `\printbibliography`.
+- Added more name wrapper aliases to make name aliasing smoother.
+- Deprecate `\mainlang` switch in favour of the text macro `\textmainlang`.
+- Deprecate `\mkrelatedstring` (which is defined as `\mainlang`)
+  in favour of `\mkrelatestringtext` (defined as `\textmainlang`).
+
 # RELEASE NOTES FOR VERSION 3.15a
 - Fixed bug with long argument for `\DeclareFieldFormat` and friends.
 
@@ -35,6 +55,10 @@
   \DeclareFieldFormat{multiprenote}{#1\isdot}
   \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
   ```
+  
+  **NB** The definition of `volcitepages` caused an infinite loop and was
+  reverted in v3.15b.
+  This means that only `multiprenote` and `multipostnote` are aliased.
 - Unified DOI, eprint and URL printing across all entry types.
   The fields `doi`, `eprint`, `eprintclass`, `eprinttype` and `url`
   are now valid for all entry types.
@@ -453,7 +477,7 @@
   Since `\mknormrange` acts only on page ranges as detected by
   `\ifpages`, this does not affect text other than page ranges.
   Hyphens and dashes in page ranges will be transformed to
-  `\bibrangedash`, commas and semi-colons to `\bibrangesep`.
+  `\bibrangedash`, commas and semicolons to `\bibrangesep`.
   This is analogous to Biber's treatment of page-like fields.
   If you always separated page ranges with `--` or `\bibrangedash`
   anyway, this should not change the output you get.

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -64,7 +64,7 @@
   url={\biblatexhome},
   author={Philip Kime, Moritz Wemheuer, Philipp Lehman},
   email={},
-  revision={3.15a},
+  revision={3.16},
   date={\today}}
 
 \hypersetup{%
@@ -200,6 +200,7 @@
 2012 and following years.
 
 The language modules of this package are made possible thanks to the following contributors:\\
+Ander Zarketa-Astigarraga (Basque);
 Augusto Ritter Stoffel, Mateus Araújo, Gustavo Barros (Brazilian);
 Kaloyan Ganev (Bulgarian);
 Sebastià Vila-Marta (Catalan);
@@ -1252,6 +1253,7 @@
 \multicolumn{1}{@{}H}{Region/Dialect} &
 \multicolumn{1}{@{}H}{Identifiers} \\
 \cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule{3-3}
+Basque       & France, Spain  & \opt{basque} \\
 Bulgarian    & Bulgaria       & \opt{bulgarian} \\
 Catalan      & Spain, France, Andorra, Italy & \opt{catalan} \\
 Croatian     & Croatia, Bosnia and Herzegovina, Serbia & \opt{croatian} \\
@@ -2076,7 +2078,7 @@
 
 \optitem[auto]{casechanger}{\opt{auto}, \opt{latex2e}, \opt{expl3}}
 
-This option selects the implementation of \biblatex's case changing functions, most prominently \cmd{MakeSentenceCase*}. \opt{expl3} selects the new implementation based on the \latex3 module \sty{l3text}. \opt{latex2e} selects the original implementation, which has tricky brace protection behaviour and some shortcomings when dealing with non-ASCII characters. The default \opt{auto} selects the case changing code based on the available \sty{expl3} version (\opt{expl3} is selected if \sty{expl3} is at least version 2020-04-06).
+This option selects the implementation of \biblatex's case changing functions, most prominently \cmd{MakeSentenceCase*}. \opt{expl3} selects the new implementation based on the \latex3 module \sty{l3text}. Note that the \sty{l3text} module assumes \utf input and that your \sty{expl3} version should be new enough (at least version 2020-04-06). \opt{latex2e} selects the original implementation, which has tricky brace protection behaviour and some shortcomings when dealing with non-ASCII characters. The default \opt{auto} selects the case changing code based on the available \sty{expl3} version and detected document encoding (\opt{expl3} is selected if \sty{expl3} is at least version 2020-04-06 and the document encoding is detected as \utf).
 
 \end{optionlist}
 
@@ -3098,7 +3100,7 @@
 \end{itemize}
 %
 For example, if this option is enabled, \biblatex precedes the family name with the prefix---Ludwig van Beethoven would be cited as «van Beethoven» and alphabetized as «Van Beethoven, Ludwig». If this option is disabled (the default), he is cited as «Beethoven» and alphabetized as «Beethoven, Ludwig van» instead.
-This option is also settable on a per-type scope. With \biblatexml datasources and the \bibtex extended name format supported by \biber, this is also settable on per-namelist and per-name scopes.
+This option is also settable on a per-type scope. With \biblatexml datasources and the \bibtex extended name format supported by \biber (see \secref{use:enf}), this is also settable on per-namelist and per-name scopes.
 
 \optitem{indexing}{\opt{true}, \opt{false}, \opt{cite}, \opt{bib}}
 
@@ -3309,6 +3311,64 @@
 
 \end{marglist}
 
+\subsection{Extended Name Format}
+\label{use:enf}
+The parsing rules for \bibtex names are rather archaic and not suited to
+many international name formats. \biber supports an extended name format
+which allows explicit specification of the parts of names. This allows the
+use of custom name parts apart from the four standard \bibtex parts. Extended
+name formats are supported in all name fields and can be used along with
+the usual \bibtex name format. Recognition of extended name format can be
+disabled with the \biber option \opt{--noxname} in case you do not need the
+extended format and the auto-detection causes problems with normal name
+parsing. The separator \verb+=+ which comes between the namepart names and
+values is customisable with the \biber option \opt{--xnamesep}. Here is an
+example:
+
+\begin{lstlisting}[style=bibtex]{}
+AUTHOR = {Hans Harman and Simon de Beumont}
+AUTHOR = {given=Hans, family=Harman and given=Simon, prefix=de, family=Beumont}
+\end{lstlisting}
+% 
+These two name specifications are equivalent but the extended format
+explicitly names the parts. The supported parts are those specified by the
+\biblatex data mode constant \opt{nameparts}, see \secref{aut:bbx:drv}. As
+with traditional \bibtex name parsing, initials are automatically generated
+but it is also possible to specify these explicitly:
+
+\begin{lstlisting}[style=bibtex]{}
+AUTHOR = {given=Jean, prefix=de la, prefix-i=d, family=Rousse}
+AUTHOR = {given={Jean Pierre Simon}, given-i=JPS}
+\end{lstlisting}
+% 
+Initials are specified by adding the suffix \verb+-i+ to the namepart name.
+Compound parts may be protected with braces:
+
+\begin{lstlisting}[style=bibtex]{}
+AUTHOR = {given={Jean Pierre}}
+\end{lstlisting}
+% 
+If a namepart contains a comma, the whole namepart should be protected with
+quotes:
+
+\begin{lstlisting}[style=bibtex]{}
+AUTHOR = {"family={Robert and Sons, Inc.}"}
+\end{lstlisting}
+% 
+Traditional \bibtex name formats and the extended form may be used together:
+
+\begin{lstlisting}[style=bibtex]{}
+AUTHOR = {Hans Harman and given=Simon, prefix=de, family=Beumont}
+\end{lstlisting}
+% 
+Per-namelist and per-name options may be specified in the extended name
+format, see \secref{use:opt:bib:hyb}:
+
+\begin{lstlisting}[style=bibtex]{}
+AUTHOR = {nosortothers=true and Hans Harman and
+          given=Simon, family=Beumont, prefix=de, useprefix=true}
+\end{lstlisting}
+      
 \subsection{Related Entries}
 \label{use:rel}
 
@@ -3444,7 +3504,7 @@
 <annotation>      ::= ["] (string) ["]
 \end{lstlisting}
 %
-That is, one or more specifications separated by semi-colons. Each specification is an equals sign followed by a comma"=separated list of annotation keywords or a string enclosed in double-quotes (a <literal> annotation, see below). To annotate a specific item in a list, put the number of the list item before the equals sign (lists start at 1). If you need to annotate a specific part of the list item, give its name after the list item number, preceded by a colon. Name part names are defined in the data model, see \secref{aut:bbx:drv}. Some further examples:
+That is, one or more specifications separated by semicolons. Each specification is an equals sign followed by a comma"=separated list of annotation keywords or a string enclosed in double-quotes (a <literal> annotation, see below). To annotate a specific item in a list, put the number of the list item before the equals sign (lists start at 1). If you need to annotate a specific part of the list item, give its name after the list item number, preceded by a colon. Name part names are defined in the data model, see \secref{aut:bbx:drv}. Some further examples:
 
 \begin{lstlisting}[style=bibtex]{}
 AUTHOR      = {Last1, First1 and Last2, First2 and Last3, First3},
@@ -3616,7 +3676,7 @@
 \addbibresource[glob]{bibfiles/bibfile*.bib}
 \addbibresource[glob]{bibfile-num?.bib}
 \addbibresource[glob]{bibfile{1,2,3}.bib}
-\addbibresource[location=remote]{http://www.citeulike.org/bibtex/group/9517}
+\addbibresource[location=remote]{https://raw.githubusercontent.com/plk/biblatex/master/bibtex/bib/biblatex/biblatex-examples.bib}
 \addbibresource[location=remote,label=lan]{ftp://192.168.1.57/~user/file.bib}
 \end{ltxexample}
 %
@@ -3696,6 +3756,10 @@
 
 This option overrides the default title provided by the heading selected with the \opt{heading} option, if supported by the heading definition. See \secref{use:bib:hdg} for details.
 
+\valitem{label}{label}
+
+If \prm{label} is nonempty, issue \texttt{\textbackslash label\{\prm{label}\}} after typesetting the heading. No sanity checking is done whether or not it is useful to set a label after the heading (\eg if the heading is not numbered a \texttt{\textbackslash ref} to the label might not result in useful output).
+
 \optitem[\normalfont\emph{global setting} (\opt{none})]{block}{\opt{none}, \opt{space}, \opt{par}, \opt{nbpar}, \opt{ragged}}
 
 This option overrides the global \opt{block} option (see \secref{use:opt:pre:gen}, the meaning of the settings is explained there as well).
@@ -3786,7 +3850,7 @@
 
 \cmditem{printbibheading}[key=value, \dots]
 
-This command prints a bibliography heading defined with \cmd{defbibheading}. It takes one optional argument, which is a list of options given in \keyval notation. The options are a small subset of those supported by \cmd{printbibliography}. Valid options are \opt{heading} and \opt{title}. By default, this command uses the heading \texttt{bibliography}. See \secref{use:bib:hdg} for details. Also see \secref{use:use:mlt,use:use:div} for usage examples.
+This command prints a bibliography heading defined with \cmd{defbibheading}. It takes one optional argument, which is a list of options given in \keyval notation. The options are a small subset of those supported by \cmd{printbibliography}. Valid options are \opt{heading}, \opt{title} and \opt{label}. By default, this command uses the heading \texttt{bibliography}. See \secref{use:bib:hdg} for details. Also see \secref{use:use:mlt,use:use:div} for usage examples.
 
 \cmditem{DeclarePrintbibliographyDefaults}{key=value, \dots}
 
@@ -4330,7 +4394,7 @@
 \cmditem{assignrefcontextentries*}[key=value, \dots]{*}
 
 \end{ltxsyntax}
-These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext}. The default behaviour is that the data for a citation is drawn from the refcontext of the most recently processed bibliography in which it was printed\footnote{This does not always mean what one might think. In a document containing multiple bibliographies, the last bibliography will be the context for any citations \emph{before} the first bibliography because all bibliographies are processed when the \file{.bbl} is read.}. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular refcontext specified by the \prm{refcontext key/values} which are parsed as the per the corresponding \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. \cmd{assignrefcontextentries} accepts a single asterisk instead of a list of entrykeys which allows the assignment of all keys in a refsection to a refcontext with having to explicitly list them. An example:
+These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext} with the addition of the \kvopt{name}{refcontextname} option which sets all options from those defined for the named refcontext \prm{refcontextname}. Use \kvopt{name}{default} to use the global default refcontext options. The specific \keyval options override those set by any named \prm{refcontextname}. The default behaviour is that the data for a citation is drawn from the refcontext of the most recently processed bibliography in which it was printed\footnote{This does not always mean what one might think. In a document containing multiple bibliographies, the last bibliography will be the context for any citations \emph{before} the first bibliography because all bibliographies are processed when the \file{.bbl} is read.}. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular named refcontext and/or specified \prm{refcontext key/values}. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. \cmd{assignrefcontextentries} accepts a single asterisk instead of a list of entrykeys which allows the as!
 signment of all keys in a refsection to a refcontext with having to explicitly list them. An example:
 
 \begin{ltxexample}[style=latex]
 \assignrefcontextentries[labelprefix=A]{key2}
@@ -4353,6 +4417,28 @@
 %
 the data for the citation of \bibfield{key2} will be drawn from refcontext \opt{labelprefix=B}. Note that these commands are rarely necessary unless you have multiple bibliographies in which the same citations occur and \biblatex\ cannot by default tell which bibliography list a citation should refer to. See the example file \file{94-labelprefix.tex} for more details.
 
+\begin{ltxexample}[style=latex]
+\DeclareRefcontext{testrc}{labelprefix=A}
+\assignrefcontextentries[name=testrc]{key2}
+\cite{key1}
+\begin{refcontext}[labelprefix=B]
+\cite{key2}
+\end{refcontext}
+\end{ltxexample}
+%
+Here, the data for the citation of \bibfield{key2} will be drawn from the refcontext named <testrc> which has \opt{labelprefix=A} and not \opt{labelprefix=B} (resulting in a label with prefix <A> and not <B>).
+
+\begin{ltxexample}[style=latex]
+\DeclareRefcontext{testrc}{labelprefix=A}
+\assignrefcontextentries[name=testrc,labelprefix=C]{key2}
+\cite{key1}
+\begin{refcontext}[labelprefix=B]
+\cite{key2}
+\end{refcontext}
+\end{ltxexample}
+%
+Here, the data for the citation of \bibfield{key2} will be drawn from refcontext with \opt{labelprefix=C} and not \opt{labelprefix=A} since the explicit options override the named refcontext (resulting in a label with prefix <C> and not <A> or <B>).
+
 \subsubsection{Dynamic Entry Sets}
 \label{use:bib:set}
 
@@ -4727,7 +4813,7 @@
 
 \cmditem{pnfmt}{text}
 
-This command formats is argument \prm{text} in the same format as \bibfield{postnote}. The command can be used to format a page range while adding additional text in the postnote argument of a cite command.
+This command formats its argument \prm{text} in the same format as \bibfield{postnote}. The command can be used to format a page range while adding additional text in the postnote argument of a cite command.
 
 \begin{ltxexample}
 \autocite[\pnfmt{378-381, 383} and more]{sigfridsson}
@@ -6732,7 +6818,7 @@
                                     {prefix,family,suffix,given}
 \end{ltxexample}
 %
-This can be customised to add more name parts to deal with things like patronymics (see the example file \file{93-nameparts.tex}). This needs an extended name format for data sources since the standard \bibtex name format is very limited. \biblatexml (\secref{apx:biblatexml}) handles this natively and there is an extended name format which can handle custom nameparts when using \biber (see \biber documentation).
+This can be customised to add more name parts to deal with things like patronymics (see the example file \file{93-nameparts.tex}). This needs an extended name format for data sources since the standard \bibtex name format is very limited. \biblatexml (\secref{apx:biblatexml}) handles this natively and there is an extended name format which can handle custom nameparts when using \biber (see \secref{use:enf}).
 
 Inside name formats, the <nameparts> constant declaration makes available two or three macros for each name part defined in the datamodel:
 
@@ -9355,7 +9441,7 @@
 \end{lstlisting}
 %
 or just a single name by passing the option as part of the extended name information
-format which \biber supports (see \biber doc):
+format which \biber supports (see \secref{use:enf}):
 
 \begin{lstlisting}[style=bibtex]{}
 @BOOK{key,
@@ -10811,7 +10897,7 @@
 \cmditem{mkcomprange}[postpro][itempostpro]{text}
 \cmditem*{mkcomprange*}[postpro][itempostpro]{text}
 
-This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, «125--129» may be formatted as «125--9». You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows:
+This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, «125--129» may be formatted as «125--9». You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semicolons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows:
 
 \begin{ltxexample}
 \DeclareFieldFormat{postnote}{\mkcomprange[<<{>>\mkpageprefix[pagination]<<}>>]{#1}}
@@ -10836,7 +10922,7 @@
 \cmditem{mknormrange}[postpro][itempostpro]{text}
 \cmditem*{mknormrange*}[postpro][itempostpro]{text}
 
-This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and will normalise them. The command is similar to \cmd{mkcomprange} except that the page ranges will not be compressed. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. The second optional argument \prm{itempostpro} is used to post-process each individual number item in the formatted list. It can be used to convert numbers from cardinals to ordinals. If only one optional argument is present, it is treated as \prm{postpro}.
+This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and will normalise them. The command is similar to \cmd{mkcomprange} except that the page ranges will not be compressed. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semicolons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. The second optional argument \prm{itempostpro} is used to post-process each individual number item in the formatted list. It can be used to convert numbers from cardinals to ordinals. If only one optional argument is present, it is treated as \prm{postpro}.
 
 \cmditem{mkfirstpage}[postpro][itempostpro]{text}
 \cmditem*{mkfirstpage*}[postpro][itempostpro]{text}
@@ -11361,10 +11447,14 @@
 
 Similar to \cmd{bibxstring} but always uses the short string, ignoring the \opt{abbreviate} option.
 
-\cmditem{mainlang}
+\cmditem{mainlang}\DeprecatedMark
 
-Switches from the current language to the main document language. This can be used the \prm{wrapper} argument in the localisation string commands above.
+Switches from the current language to the main document language. This command is deprecated. Use the text-macro \cmd{textmainlang} instead. With \sty{babel} this command will need to be wrapped into \emph{two} groups to have purely local effect.
 
+\cmditem{textmainlang}{text}
+
+Locally switches from the current language to the main document language to typeset \prm{text}. This can be used the \prm{wrapper} argument in the localisation string commands above.
+
 \end{ltxsyntax}
 
 \subsection{Localization Modules}
@@ -11944,6 +12034,7 @@
 
 \begin{keymarglist}
 \item[langamerican] The language <American> or <American English>.
+\item[langbasque] The language <Basque>.
 \item[langbrazilian] The language <Brazilian> or <Brazilian Portuguese>.
 \item[langbulgarian] The language <Bulgarian>.
 \item[langcatalan] The language <Catalan>.
@@ -11980,6 +12071,7 @@
 
 \begin{keymarglist}
 \item[fromamerican] The expression <from [the] American> or <from [the] American English>.
+\item[frombasque] The expression <from [the] Basque>.
 \item[frombrazilian] The expression <from [the] Brazilian> or <from [the] Brazilian Portuguese>.
 \item[frombulgarian] The expression <from [the] Bulgarian>.
 \item[fromcatalan] The expression <from [the] Catalan>.
@@ -14428,6 +14520,14 @@
 This revision history is a list of changes relevant to users of this package. Changes of a more technical nature which do not affect the user interface or the behavior of the package are not included in the list. More technical details are to be found in the \file{CHANGES.md} file. The numbers on the right indicate the relevant section of this manual.
 
 \begin{changelog}
+\begin{release}{3.16}{2020-12}
+\item Added named refcontext support to \cmd{assignrefcontext*}\see{use:bib:context}
+\item Fixed infinite loop with \bibfield{volcitepages} field format
+\item Added Extended Name Format documentation\see{use:enf}
+\item Added \opt{label} option to \cmd{printbibliography}\see{use:bib:bib}
+\item Deprecate \cmd{mainlang} in favour of \cmd{textmainlang}\see{aut:str}
+\item Added Basque localisation (Ander Zarketa-Astigarraga)
+\end{release}
 \begin{release}{3.15a}{2020-08-23}
 \item Fixed bug with long arguments in \cmd{DeclareFieldFormat} and friends
 \end{release}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -584,6 +584,7 @@
 
 \begin{keylist}
 \keyitem{langamerican} The language <American> or <American English>.
+\keyitem{langbasque} The language <Basque>.
 \keyitem{langbrazilian} The language <Brazilian> or <Brazilian Portuguese>.
 \keyitem{langbulgarian} The language <Bulgarian>.
 \keyitem{langcatalan} The language <Catalan>.
@@ -620,6 +621,7 @@
 
 \begin{keylist}
 \keyitem{fromamerican} The expression <from [the] American> or <from [the] American English>.
+\keyitem{frombasque} The expression <from [the] Basque>.
 \keyitem{frombrazilian} The expression <from [the] Brazilian> or <from [the] Brazilian Portuguese>.
 \keyitem{frombulgarian} The expression <from [the] Bulgarian>.
 \keyitem{fromcatalan} The expression <from [the] Catalan>.

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,53 +0,0 @@
-%
-% This file demonstrates how to configure biblatex to prefix
-% numerical citations with a letter or a string. This will work with
-% all numerical styles which ship with biblatex. Note that you must
-% set defernumbers=true globally when using prefixes.
-%
-% Since the prefixes are assigned as the bibliography is generated,
-% you may use any filter supported by biblatex to subdivide the
-% references (by type, by category, by keyword, etc.).
-%
-\documentclass[a4paper,oneside]{article}
-\usepackage[T1]{fontenc}
-\usepackage[american]{babel}
-\usepackage{csquotes}
-% When using prefixed numerical labels, the labels must be assigned
-% as the bibliography is generated. That's why we set
-% defernumbers=true here:
-\usepackage[style=numeric,defernumbers,backend=bibtex]{biblatex}
-\usepackage{hyperref}
-\usepackage{nameref}
-\addbibresource{biblatex-examples.bib}
-% A catch-all filter for all items which are not assigned to a
-% dedicated sub-bibliography:
-\defbibfilter{other}{
-  not type=article
-  and
-  not type=book
-  and
-  not type=collection
-}
-
-\begin{document}
-
-\section*{Prefixed numerical citations}
-
-% Some citations:
-\cite{angenendt, kastenholz, augustine, companion, jaffe, ctan}
-
-\nocite{*}
-
-% Let's print the overall heading of the bibliography first:
-\printbibheading
-
-% And now the sub-bibliographies: we use three of them (based on the
-% entry type). Each sub-bibliography assigns a different prefix:
-\printbibliography[heading=subbibliography,title={Articles},type=article, prefixnumbers={A}]
-\printbibliography[heading=subbibliography,title={Books},type=book, prefixnumbers={B}]
-\printbibliography[heading=subbibliography,title={Collections},type=collection, prefixnumbers={C}]
-
-% The catch-all sub-bibliography for all remaining types:
-\printbibliography[heading=subbibliography,title={Other Sources},filter=other, prefixnumbers={O}]
-
-\end{document}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,40 +0,0 @@
-%
-% This example is almost the same as the previous one except that
-% the catch-all sub-bibliography does not assign any prefix.
-%
-\documentclass[a4paper,oneside]{article}
-\usepackage[T1]{fontenc}
-\usepackage[american]{babel}
-\usepackage{csquotes}
-\usepackage[style=numeric,defernumbers,backend=bibtex]{biblatex}
-\usepackage{hyperref}
-\usepackage{nameref}
-\addbibresource{biblatex-examples.bib}
-\defbibfilter{other}{
-  not type=article
-  and
-  not type=book
-  and
-  not type=collection
-}
-\begin{document}
-
-\section*{Prefixed numerical citations}
-
-% Some citations:
-\cite{angenendt, kastenholz, augustine, companion, jaffe, ctan}
-
-\nocite{*}
-
-\printbibheading
-
-\printbibliography[heading=subbibliography,title={Articles},type=article, prefixnumbers={A}]
-\printbibliography[heading=subbibliography,title={Books},type=book, prefixnumbers={A}]
-\printbibliography[heading=subbibliography,title={Collections},type=collection, prefixnumbers={C}]
-
-% The catch-all sub-bibliography for all remaining types. We don't
-% use a prefix but we still need to set resetnumbers=true to restart
-% the item numbering:
-\printbibliography[heading=subbibliography,title={Other Sources},filter=other,resetnumbers]
-
-\end{document}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,44 +0,0 @@
-%
-% Prefixes also work with alphabetic the styles.
-%
-\documentclass[a4paper,oneside]{article}
-\usepackage[T1]{fontenc}
-\usepackage[american]{babel}
-\usepackage{csquotes}
-\usepackage[style=alphabetic,backend=bibtex]{biblatex}
-\usepackage{hyperref}
-\usepackage{nameref}
-\addbibresource{biblatex-examples.bib}
-% A catch-all filter for all items which are not assigned to a
-% dedicated sub-bibliography:
-\defbibfilter{other}{
-  not type=article
-  and
-  not type=book
-  and
-  not type=collection
-}
-\begin{document}
-
-\section*{Prefixed alphabetic citations}
-
-% Some citations:
-\cite{angenendt, kastenholz, augustine, companion, jaffe, ctan}
-
-\nocite{*}
-
-% Let's print the overall heading of the bibliography first:
-\printbibheading
-
-% And now the sub-bibliographies: we use three of them (based on the
-% entry type). Each sub-bibliography assigns a different prefix. The
-% option is called 'prefixnumbers' because it was originally intended
-% for numeric citations only. It also works with alphabetic labels:
-\printbibliography[heading=subbibliography,title={Articles},type=article,prefixnumbers={A-}]
-\printbibliography[heading=subbibliography,title={Books},type=book,prefixnumbers={B-}]
-\printbibliography[heading=subbibliography,title={Collections},type=collection,prefixnumbers={C-}]
-
-% The catch-all sub-bibliography for all remaining types:
-\printbibliography[heading=subbibliography,title={Other Sources},filter=other,prefixnumbers={O-}]
-
-\end{document}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,15 +1,10 @@
 \documentclass[a4paper]{article}
 \usepackage{fontspec}
-\setmainfont{Linux Libertine O}
-\setsansfont{Linux Biolinum O}
+\usepackage{libertine}
 \usepackage[fallback]{xeCJK}
-%\setCJKmainfont{Malgun Gothic}
-\setCJKmainfont{PingFang TC}% OSX
-
 \usepackage[british]{babel}
 \usepackage{csquotes}
-\usepackage{filecontents}
-\begin{filecontents}{\jobname.bib}
+\begin{filecontents}[force]{\jobname.bib}
 @book{tolstoy,
   author = {given=Лев, patronymic=Николаевич, family=Толстой, nametemplates=russian},
   title  = {Война и мир},
@@ -84,14 +79,6 @@
   publisher  = {Shangwu Yinshuguan},
   date       = {2016},
 }
- at book{zhangh,
-  title      = {Sŏmyŏng},
-  titleaddon = {書名},
-  author     = {family=Zhang, cjk=장학성, given=Haksŏng, nametemplates=cjk},
-  location   = {Shanghai},
-  publisher  = {Shangwu Yinshuguan},
-  date       = {2016},
-}
 
 @book{bronte:c,
   author     = {Charlotte Brontë},
@@ -433,7 +420,7 @@
 
 \textcite{bronte:c,bronte:e,austen:jane,austen:john}
 
-\textcite{zhangx1,zhangx2,zhangh}
+\textcite{zhangx1,zhangx2}
 
 \printbibliography
 \end{document}

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -6,8 +6,7 @@
 \usepackage{fontspec}
 \usepackage[american]{babel}
 \usepackage{csquotes}
-\usepackage{filecontents}
-\begin{filecontents}{\jobname.bib}
+\begin{filecontents}[force]{\jobname.bib}
 @misc{date1,
   note      = {Years with implicit era},
   author    = {Author1},

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations.tex	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations.tex	2020-12-31 21:50:01 UTC (rev 57272)
@@ -5,8 +5,7 @@
 \usepackage{fontspec}
 \usepackage[american]{babel}
 \usepackage{csquotes}
-\usepackage{filecontents}
-\begin{filecontents}{\jobname.bib}
+\begin{filecontents}[force]{\jobname.bib}
 @MISC{ann1,
   AUTHOR           = {Last1, First1 and Last2, First2 and Last3, First3},
   AUTHOR+an        = {1:family=student;2=corresponding},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/draft.bbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -8,6 +8,10 @@
 \DeclareNameAlias{editor}{default}
 \DeclareNameAlias{translator}{default}
 
+\DeclareNameWrapperAlias{author}{default}
+\DeclareNameWrapperAlias{editor}{default}
+\DeclareNameWrapperAlias{translator}{default}
+
 \DeclareFieldFormat{shorthandwidth}{#1}
 
 \defbibenvironment{bibliography}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -13,6 +13,10 @@
 \DeclareNameAlias{editor}{default}
 \DeclareNameAlias{translator}{default}
 
+\DeclareNameWrapperAlias{author}{default}
+\DeclareNameWrapperAlias{editor}{default}
+\DeclareNameWrapperAlias{translator}{default}
+
 \DeclareFieldFormat{bibentrysetcount}{\mkbibparens{\mknumalph{#1}}}
 \DeclareFieldFormat{labelnumberwidth}{\mkbibbrackets{#1}}
 \DeclareFieldFormat{shorthandwidth}{\mkbibbrackets{#1}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -7,6 +7,10 @@
 \DeclareNameAlias{editor}{default}
 \DeclareNameAlias{translator}{default}
 
+\DeclareNameWrapperAlias{author}{default}
+\DeclareNameWrapperAlias{editor}{default}
+\DeclareNameWrapperAlias{translator}{default}
+
 \DeclareFieldFormat{entrykey}{\mbox{\bfseries#1}}
 \DeclareFieldFormat{annotation}{\bibstring{annotation}\addcolon\space #1}
 \DeclareFieldFormat{abstract}{\bibstring{abstract}\addcolon\space #1}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -983,14 +983,14 @@
                test {\ifbibxstring{\thefield{relatedtype}s}}
              }
                {\printtext[\bbx at tempb]{%
-                  \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}}
+                  \bibstring[\mkrelatedstringtext]{\thefield{relatedtype}s}}}
                {\iffieldbibstring{relatedtype}
                   {\printtext[\bbx at tempb]{%
-                     \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}}
+                     \bibstring[\mkrelatedstringtext]{\thefield{relatedtype}}}}
                   {}}}
             {\iffieldbibstring{relatedstring}
                {\printtext[\bbx at tempb]{%
-                  \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}}
+                  \bibstring[\mkrelatedstringtext]{\thefield{relatedstring}}}}
                {\printfield[\bbx at tempb]{relatedstring}}}%
           \docsvfield{related}%
           \usebibmacro{endrelatedloop}}}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -194,7 +194,7 @@
 % Examples of use, uncommenting these would break backwards compatibility
 %\newcommand*{\begrelateddelimorigpubin}{\addspace}
 %\newcommand*{\begrelateddelimorigpubas}{\addspace}
-\newcommand{\mkrelatedstring}{\mainlang}
+\newcommand{\mkrelatedstringtext}{\textmainlang}
 
 % Used for indexing
 
@@ -476,7 +476,7 @@
 \DeclareFieldFormat{prenote}{#1\isdot}
 \DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
 \DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1}
-\DeclareFieldAlias{volcitepages}{postnote}
+\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
 \DeclareFieldFormat{volcitenote}{\mkvolcitenote#1}
 \newrobustcmd*{\mkvolcitenote}[2]{%
   \printtext[volcitevolume]{#1}%
@@ -624,6 +624,7 @@
 % The default used by \citelist
 
 \DeclareListAlias{citelist}{default}
+\DeclareListWrapperAlias{citelist}{default}
 
 % Used in the bibliography
 
@@ -724,6 +725,11 @@
 \DeclareListAlias{institution}{default}
 \DeclareListAlias{organization}{default}
 
+\DeclareListWrapperAlias{origlocation}{location}
+\DeclareListWrapperAlias{origpublisher}{publisher}
+\DeclareListWrapperAlias{institution}{default}
+\DeclareListWrapperAlias{organization}{default}
+
 % Auxiliary macros for list formatting directives
 % ------------------------------------------------------------------
 
@@ -943,6 +949,7 @@
 
 % Default used by \citename
 \DeclareNameAlias{citename}{default}
+\DeclareNameWrapperAlias{citename}{default}
 
 % Used in some citations
 \DeclareNameFormat{labelname}{%
@@ -998,6 +1005,28 @@
 \DeclareNameAlias{withforeword}{default}
 \DeclareNameAlias{withafterword}{default}
 
+\DeclareNameWrapperAlias{author}{default}
+\DeclareNameWrapperAlias{bookauthor}{author}
+\DeclareNameWrapperAlias{editor}{default}
+\DeclareNameWrapperAlias{editora}{editor}
+\DeclareNameWrapperAlias{editorb}{editor}
+\DeclareNameWrapperAlias{editorc}{editor}
+\DeclareNameWrapperAlias{translator}{default}
+
+\DeclareNameWrapperAlias{byauthor}{default}
+\DeclareNameWrapperAlias{bybookauthor}{byauthor}
+\DeclareNameWrapperAlias{byeditor}{default}
+\DeclareNameWrapperAlias{byeditora}{byeditor}
+\DeclareNameWrapperAlias{byeditorb}{byeditor}
+\DeclareNameWrapperAlias{byeditorc}{byeditor}
+\DeclareNameWrapperAlias{bytranslator}{default}
+
+\DeclareNameWrapperAlias{withcommentator}{default}
+\DeclareNameWrapperAlias{withannotator}{default}
+\DeclareNameWrapperAlias{withintroduction}{default}
+\DeclareNameWrapperAlias{withforeword}{default}
+\DeclareNameWrapperAlias{withafterword}{default}
+
 \DeclareFieldFormat{authortype}{#1}
 \DeclareFieldFormat{editortype}{#1}
 \DeclareFieldFormat{translatortype}{#1}
@@ -2963,13 +2992,10 @@
   \entrydata{#1}{%
     \renewbibmacro*{name:hook}[1]{%
       \ifnumequal{\value{listcount}}{1}
-        {\begingroup
-         \mkrelatedstring%
-         \lbx at initnamehook{#1}%
-         \endgroup}
+        {\mkrelatedstringtext{\lbx at initnamehook{##1}}}
         {}}%
     \printnames[bytranslator]{translator}%
-    \setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}%
+    \setunit*{\addspace\bibstring[\mkrelatedstringtext]{astitle}\space}%
     \usebibmacro{title}%
     \setunit{\addspace}%
     \printtext[parens]{%
@@ -3017,7 +3043,7 @@
       test {\iflistundef{publisher}}
     }
       {}
-      {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}%
+      {\setunit{\addspace\bibstring[\mkrelatedstringtext]{bypublisher}\space}%
        \printlist{publisher}%
        \setunit{\addcomma\space}%
        \iflistsequal{location}{savedlocation}
@@ -3033,7 +3059,7 @@
       test {\iflistundef{publisher}}
     }
       {}
-      {\setunit{\addspace\bibstring[\mkrelatedstring]{bypublisher}\space}%
+      {\setunit{\addspace\bibstring[\mkrelatedstringtext]{bypublisher}\space}%
        \printlist{publisher}%
        \setunit{\addcomma\space}%
        \iflistsequal{location}{savedlocation}
@@ -3041,10 +3067,7 @@
          {\printlist{location}}}}}
 
 \DeclareFieldFormat{title:hook}{%
-  \begingroup
-  \mkrelatedstring%
-  \lbx at inittitlehook{#1}%
-  \endgroup
+  \mkrelatedstringtext{\lbx at inittitlehook{#1}}%
   \mkbibemph{#1}}
 
 \newbibmacro*{related:reprintfrom}[1]{%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty	2020-12-31 21:50:01 UTC (rev 57272)
@@ -12,8 +12,8 @@
 % particular purpose.
 
 % Set up the version strings here
-\def\abx at date{2020/08/23}
-\def\abx at version{3.15a}
+\def\abx at date{2020/12/31}
+\def\abx at version{3.16}
 \def\abx at bbxid{\abx at date\space v\abx at version\space biblatex bibliography style (PK/MW)}
 \def\abx at cbxid{\abx at date\space v\abx at version\space biblatex citation style (PK/MW)}
 \def\abx at lbxid{\abx at date\space v\abx at version\space biblatex localization (PK/MW)}
@@ -52,6 +52,20 @@
       This is a fatal error. I'm aborting now}%
    \endinput}
 
+% The new hook management system in LaTeX 2020-10-01 and above
+% no longer guarantees that \AtBeginDocument/AfterPreamble
+% are executed in order of use.
+% Instead each use of those commands gets a 'label'
+% and code for the same label is chunked together.
+% We give our \AfterPreamble invocations a new label and set up a rule to
+% have it executed after all normal biblatex \AtBeginDocument stuff.
+% Note that begindocument is a one-time hook, so we are guaranteed
+% immediate execution when inside \begin{document}...\end{document}.
+\providecommand\IfFormatAtLeastTF{\@ifl at t@r\fmtversion}
+\IfFormatAtLeastTF{2020/10/01}
+  {\def\blx at AfterPreamble{\AddToHook{begindocument}[biblatex/afterpreamble]}%
+   \DeclareHookRule{begindocument}{biblatex/afterpreamble}{after}{biblatex}}
+  {\def\blx at AfterPreamble{\AfterPreamble}}
 
 % generalised keyval interface
 % define a new key (possibly with a default value)
@@ -509,8 +523,10 @@
           {\let\xpg at bloaded\xpg at loaded}}
        {}%
      \global\let\blx at maplang\blx at maplang@polyglossia
-     \def\do#1{\blx at langsetup{#1}}%
+     \def\do#1{\blx at langsetup@from at pkglist{#1}}%
      \expandafter\docsvlist\expandafter{\xpg at bloaded}%
+     \def\do#1{\blx at langsetup@from at auxlist{#1}}%
+     \dolistloop\blx at lbx@auxloadlist
      \ifboolexpr{
       not togl {blx at autolangbib}
       and
@@ -521,8 +537,10 @@
     {\global\let\blx at maplang\blx at maplang@babel
      \@ifpackageloaded{babel}
        {% This is required for languages which are never explicitly selected
-        \def\do#1{\blx at langsetup{#1}}%
+        \def\do#1{\blx at langsetup@from at pkglist{#1}}%
         \expandafter\docsvlist\expandafter{\bbl at loaded}%
+        \def\do#1{\blx at langsetup@from at auxlist{#1}}%
+        \dolistloop\blx at lbx@auxloadlist
         \ifboolexpr{
           not togl {blx at autolangbib}
           and
@@ -545,7 +563,10 @@
   % babel/polyglossia has loaded the (main document) language already,
   % so we need to explicitly enable our captions (abx at strings@)
   % and extras (abx at extras@) now
-  \toggletrue{blx at lang@captions@\blx at languagename}%
+  \ifdefstring{\blx at langhook}{captions}
+    {\blx at etb@inittoggle{blx at lang@captions@\blx at languagename}%
+     \toggletrue{blx at lang@captions@\blx at languagename}}
+    {}%
   \csuse{abx at extras@\blx at languagename}%
   \csuse{abx at strings@\blx at languagename}%
   % avoid accidental re-initialization
@@ -637,6 +658,7 @@
      in recent versions of pdfTeX, LuaTeX and XeTeX}}
   {\let\blx at mdfivesum\pdf at mdfivesum}
 
+\newtoggle{blx at bbl@rerun at requested}
 
 \ifundef\pdf at filemdfivesum
   {\blx at warning@noline{Command '\string\pdf at filemdfivesum' undefined.\MessageBreak
@@ -643,20 +665,24 @@
      Biber rerun detection may not work as expected.\MessageBreak
      The command is available (via 'pdftexcmds')\MessageBreak
      in recent versions of pdfTeX, LuaTeX and XeTeX}%
-   \let\blx at generate@bbl at mdfivesum@found\relax
+   \let\blx at generate@bbl at mdfivesum@found\@gobble
    \let\blx at generate@bbl at mdfivesum@notfound\relax
-   \let\blx at aux@read at bbl@mdfivesum\@gobble
+   \let\abx at aux@read at bblrerun\relax
+   \let\abx at aux@read at bbl@mdfivesum\@gobble
    \let\blx at aux@write at bbl@mdfivesum\relax
    \let\blx at check@bbl at rerun@mdfivesum\relax}
   {\let\blx at filemdfivesum\pdf at filemdfivesum
 
-   \def\blx at generate@bbl at mdfivesum@found{%
-     \xdef\blx at bbl@mdfivesum at new{\blx at filemdfivesum{\jobname.bbl}}}
+   \def\blx at generate@bbl at mdfivesum@found#1{%
+     \xdef\blx at bbl@mdfivesum at new{\blx at filemdfivesum{#1}}}
 
+   % 'nobblfile' can never be equal to any md5 hash
    \def\blx at generate@bbl at mdfivesum@notfound{%
      \gdef\blx at bbl@mdfivesum at new{nobblfile}}
 
-   \def\blx at aux@read at bbl@mdfivesum{%
+   \def\abx at aux@read at bblrerun{\global\toggletrue{blx at bbl@rerun at requested}}
+
+   \def\abx at aux@read at bbl@mdfivesum{%
      \gdef\blx at bbl@mdfivesum at old}
 
    % If we need Biber to rerun, save the hash of the current .bbl.
@@ -663,9 +689,13 @@
    % That way we can detect if the Biber rerun really happened when
    % we run LaTeX the next time.
    \def\blx at aux@write at bbl@mdfivesum{%
+     \blx at auxwrite\@mainaux{}{%
+       \string\abx at aux@read at bbl@mdfivesum{%
+         \ifundef\blx at bbl@mdfivesum at old
+           {nohash}
+           {\blx at bbl@mdfivesum at new}}}%
      \iftoggle{blx at runbiber}
-       {\blx at auxwrite\@mainaux{}{%
-          \string\blx at aux@read at bbl@mdfivesum{\blx at bbl@mdfivesum at new}}}
+       {\blx at auxwrite\@mainaux{}{\string\abx at aux@read at bblrerun}}
        {}}
 
    % There was a Biber rerun request last time (\blx at bbl@mdfivesum at old),
@@ -673,9 +703,11 @@
    % that means *no* Biber rerun happened.
    % So we need to re-request a rerun.
    \def\blx at check@bbl at rerun@mdfivesum{%
-     \ifdefstrequal\blx at bbl@mdfivesum at old\blx at bbl@mdfivesum at new
-       {\blx at logreq@active{}}
-       {}}}
+     \iftoggle{blx at bbl@rerun at requested}
+       {\ifdefstrequal\blx at bbl@mdfivesum at old\blx at bbl@mdfivesum at new}
+       {\@secondoftwo}
+     {\blx at logreq@active{}}
+     {}}}
 
 
 % xstring replacements
@@ -923,6 +955,9 @@
 \cslet{blx at defaultrefcontexts@0}\@empty
 \listadd\blx at allrefsections{0}
 
+% Used to track defernumbers from .aux
+\global\let\blx at localnumbers\@empty
+
 % Used to track sorting name key specifications
 \global\let\blx at sortingnamekeytemplates\@empty
 
@@ -2164,15 +2199,15 @@
 \providerobustcmd*{\nohyphenation}{%
   \language\blx at langwohyphens}
 
-% work around odd XeTeX/babel-french behaviour
+% First part of workaround for odd XeTeX/babel-french behaviour
 % https://github.com/plk/biblatex/issues/979
 % fix by Ulrike Fischer
-% https://tex.stackexchange.com/a/544914/
+% https://tex.stackexchange.com/a/544914/.
+% The second bit lives in blx-unicode.def.
 \ifundef\XeTeXrevision
   {\providerobustcmd*{\textnohyphenation}[1]{%
      \bgroup\nohyphenation#1\egroup}}
-  {\providerobustcmd*{\textnohyphenation}[1]{%
-     \bgroup\nohyphenation#1\egroup^^^^200b}}
+  {}
 
 \blx at regimcs{%
   \setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark
@@ -5203,6 +5238,7 @@
   \do{november}%
   \do{december}%
   \do{langamerican}%
+  \do{langbasque}%
   \do{langbrazilian}%
   \do{langbulgarian}%
   \do{langcatalan}%
@@ -5235,6 +5271,7 @@
   \do{langturkish}%
   \do{langukrainian}%
   \do{fromamerican}%
+  \do{frombasque}%
   \do{frombrazilian}%
   \do{frombulgarian}%
   \do{fromcatalan}%
@@ -5499,7 +5536,9 @@
   \IfFileExists{#1}
     {\blx at info@noline{... file '#1' found}%
      \csuse{blx at lbxfilehook@simple at preload@#1}%
-     #3\@@input\@filef at und#4%
+     #3%
+     \@@input\@filef at und
+     #4%
      \csuse{blx at lbxfilehook@simple at postload@#1}%
      #5%
      \ifcsundef{blx at file@lbx at simple@#1}
@@ -5518,7 +5557,9 @@
      \IfFileExists{#1}
        {\blx at info@noline{... file '#1' found}%
         \csuse{blx at lbxfilehook@once at preload@#1}%
-        #3\@@input\@filef at und#4%
+        #3%
+        \@@input\@filef at und
+        #4%
         \csuse{blx at lbxfilehook@once at postload@#1}%
         #5%
         \ifcsundef{blx at file@lbx at simple@#1}
@@ -5588,7 +5629,7 @@
   \endgroup}
 
 % {<language>}
-\def\blx at langsetup#1{%
+\protected\def\blx at langsetup#1{%
   \blx at lbxinput{#1}
     {\edef\blx at languagename{#1}}
     {\blx at warning
@@ -5595,6 +5636,42 @@
        {Language '#1' not supported.\MessageBreak
         Using dummy definitions}}}
 
+\protected\def\blx at langsetup@from at pkglist#1{%
+  \global\cslet{blx at lbx@loaded at from@pkglist@#1}\@empty
+  \blx at langsetup{#1}}
+
+\protected\def\blx at langsetup@from at auxlist#1{%
+  \global\cslet{blx at lbx@loaded at from@auxlist@#1}\@empty
+  \blx at langsetup{#1}}
+
+\newcommand*{\blx at lbx@loadlist}{}
+
+\protected\def\blx at langsetup@indoc#1{%
+  \ifcsundef{blx at lbx@loaded at from@pkglist@#1}
+    {\xifinlist{#1}\blx at lbx@loadlist
+       {}
+       {\listxadd\blx at lbx@loadlist{#1}}%
+     \ifcsundef{blx at lbx@loaded at from@auxlist@#1}
+       {\ifcsundef{blx at lbx@loaded at nolistload@#1}
+          {\blx at warning@noline{%
+             No localisation for language '#1' loaded.\MessageBreak
+             Please rerun LaTeX to ensure languages can\MessageBreak
+             be requested properly}%
+           \global\cslet{blx at lbx@loaded at nolistload@#1}\@empty}
+          {}}
+       {\edef\blx at languagename{#1}}}
+    {\edef\blx at languagename{#1}}%
+}
+
+\newcommand*{\blx at lbx@auxloadlist}{}
+
+\def\abx at aux@lbx at loadrequest{%
+  \listgadd\blx at lbx@auxloadlist}
+
+\protected\def\blx at lbx@writeloaderequest#1{%
+  \blx at auxwrite\@mainaux{}{%
+    \string\abx at aux@lbx at loadrequest{#1}}}
+
 % auxiliary macros
 
 % {<field base name>}
@@ -6377,6 +6454,7 @@
 \let\blx at hook@endlang\@empty
 \let\blx at hook@initlang\@empty
 \let\blx at imc@mainlang\@empty
+\let\blx at imc@textmainlang\@firstofone
 \def\blx at hyphenreset{%
   \blx at ifhyphenationundef{\blx at languagename}
     {}
@@ -6403,7 +6481,7 @@
   % afterreset was added in 3.9i (~2014-03-16)
   % way before 3.9r (2016-04-23), which we require
   \AddBabelHook{biblatex at langsetup}{afterreset}{%
-    \expandafter\blx at langsetup\expandafter{\languagename}}%
+    \expandafter\blx at langsetup@indoc\expandafter{\languagename}}%
   \ifdef\blx at thelangenv
     {\def\blx at beglang{%
        \blx at clearlang
@@ -6437,8 +6515,20 @@
            {}}}
     {}%
   \def\blx at imc@mainlang{%
+    \ifundef\blx at warn@mainlang
+      {\blx at warning@noline{%
+         '\string\mainlang' is deprecated in favour of\MessageBreak
+         '\string\textmainlang'.%
+         \MessageBreak
+         Please consider using the new command,\MessageBreak
+         but note that the syntax is different.\MessageBreak
+         Using the old, problematic definition}%
+       \global\let\blx at warn@mainlang\@empty}
+      {}%
     \expandafter\selectlanguage\expandafter{\blx at main@language}}%
-  \expandafter\blx at langsetup\expandafter{\blx at main@language}%
+  \def\blx at imc@textmainlang##1{%
+    {{\expandafter\selectlanguage\expandafter{\blx at main@language}##1}}}%
+  \expandafter\blx at langsetup@from at pkglist\expandafter{\blx at main@language}%
 }
 
 \def\blx at beglang@spacefactors{\frenchspacing}
@@ -6453,12 +6543,12 @@
     {\let\blx at main@language\mainbabelname}%
   \ifundef\polyglossia at language@switched
     {\apptocmd\select at language
-       {\expandafter\blx at langsetup\expandafter{\babelname}}
+       {\expandafter\blx at langsetup@indoc\expandafter{\babelname}}
        {}
        {\blx at err@patch{'polyglossia' package}%
         \blx at mknoautolang}}
     {\appto\polyglossia at language@switched{%
-       \expandafter\blx at langsetup\expandafter{\babelname}}}%
+       \expandafter\blx at langsetup@indoc\expandafter{\babelname}}}%
   \ifdef\blx at thelangenv
      {\def\blx at beglang{%
         \blx at clearlang
@@ -6500,8 +6590,20 @@
               \blx at beglang@spacefactors}}
           {}}}
        {}%
-  \def\blx at imc@mainlang{\select at language{\blx at main@language}}%
-  \expandafter\blx at langsetup\expandafter{\blx at main@language}}
+  \def\blx at imc@mainlang{%
+    \ifundef\blx at warn@mainlang
+      {\blx at warning@noline{%
+         '\string\mainlang' is deprecated in favour of\MessageBreak
+         '\string\textmainlang'.%
+         \MessageBreak
+         Please consider using the new command,\MessageBreak
+         but note that the syntax is different.\MessageBreak
+         Using the old, problematic definition}%
+       \global\let\blx at warn@mainlang\@empty}
+      {}%
+    \select at language{\blx at main@language}}%
+  \def\blx at imc@textmainlang##1{{{\select at language{\blx at main@language}##1}}}%
+  \expandafter\blx at langsetup@from at pkglist\expandafter{\blx at main@language}}
 
 \def\blx at mknoautolang{%
   \blx at lbxinput{\blx at languagename}
@@ -6508,7 +6610,7 @@
     {}
     {\blx at err@nolang{\blx at languagename}}}
 
-\blx at regimcs{\mainlang}
+\blx at regimcs{\mainlang \textmainlang}
 
 \newrobustcmd*{\DeclareRedundantLanguages}[2]{%
   \begingroup
@@ -8302,14 +8404,14 @@
   \abx at flfw@getfieldformat{abx at flfw@labelnumberwidth}{labelnumberwidth}{}%
   \abx at flfw@getfieldformat{abx at flfw@labelprefix}{labelprefix}{}%
   \abx at flfw@getfieldformat{abx at flfw@labelnumber}{labelnumber}{}%
-    \iftoggle{blx at defernumbers}
-      {\ifundef\abx at field@localnumber
-        {\numdef\abx at field@localnumber{0}}%
-        {}}
-      {\ifundef\abx at field@localnumber
-         {\edef\abx at field@localnumber{%
-            \csuse{blx at labelnumber@\the\c at refsection}}}
-          {}}%
+  \iftoggle{blx at defernumbers}
+    {\ifundef\abx at field@localnumber
+      {\numdef\abx at field@localnumber{0}}%
+      {}}
+    {\ifundef\abx at field@localnumber
+      {\edef\abx at field@localnumber{%
+          \csuse{blx at labelnumber@\the\c at refsection}}}
+      {}}%
   \blx at setlabwidth{\csname #1labelnumberwidth\endcsname}{%
     \csuse{abx at flfw@labelnumberwidth}{%
       \ifdef\abx at field@labelprefix
@@ -8549,13 +8651,18 @@
   % any citations or add/remove any sorting templates, 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.
-
+  \begingroup
+  % Test to see if there are any .aux entries with defernums (localnum)
+  % information which are no longer in the .bbl. This is to catch
+  % when .bib entries are removed when using \nocite{*}. In this case,
+  % We need another run to remove the .aux localnumber info
+  \def\do#1{\xifinlist{#1}\blx at entries{}{\blx at rerun@latex}}%
+  \dolistloop\blx at localnumbers
   % Test to see if we *removed* any citations since last run
   % (adding citations is dealt with naturally in \blx at citation@entry)
   % If so, give a rerun biber message. This also sets the
   % rerun biber toggle so defernums doesn't consume the localnumbers
   % in the .aux but instead, re-writes them, which is what we need.
-  \begingroup
   \def\do#1{\ifinlist{#1}\blx at cites{}{\blx at logreq@active{}}\relax}%
   \dolistloop\blx at lastcites
   % Special case - if we are using sortingtemplate with \citeorder anywhere,
@@ -8603,9 +8710,16 @@
       {\def\do#1{\blx at auxwrite\@mainaux{}{#1}}
        \dolistloop\blx at localnumaux}}
     {}%
-  % Wite md5 hash of .bbl to .aux if we need a Biber rerun.
+  % Write out missing languages we still need to load
+  \forlistloop{\blx at lbx@writeloaderequest}{\blx at lbx@loadlist}%
+  % Issue rerun warning if we need to load a language babel/polyglossia
+  % hasn't told us about and that we are not loading it already from previous
+  % runs.
+  \def\do#1{\xifinlist{#1}{\blx at lbx@auxloadlist}{}{\blx at rerun@latex\listbreak}}%
+  \dolistloop\blx at lbx@loadlist
+  % Write md5 hash of .bbl to .aux if we need a Biber rerun.
   % This needs to happen here and not in \blx at check@rerun together with
-  % the other rerun stuff, because \AfterEndBibliography would be too
+  % the other rerun stuff, because \AfterEndDocument would be too
   % late for .aux file writing.
   \blx at aux@write at bbl@mdfivesum
   \endgroup}
@@ -8614,6 +8728,8 @@
 \protected\def\blx at aux@number#1#2#3#4#5{%
   \blx at bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}%
   \blx at bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}%
+  \csgdef{blx at localnumber@#3@\detokenize{#2}}{#5}%
+  \xifinlist{\detokenize{#2}}\blx at localnumbers{}{\listxadd\blx at localnumbers{\detokenize{#2}}}%
   \global\toggletrue{blx at localnumber}%
   \ifblank{#5}
     {}
@@ -8632,9 +8748,14 @@
          % Also, don't want to regenerate localnumber for any key in a
          % refsection which we've already seen because this has the nasty
          % side-effect of incrementing the localnum counter
-         {\ifboolexpr { not togl {blx at localnumber}
-                        and
-                        not test {\ifcsdef{blx at defer@\the\c at refsection @\blx at refcontext@context @\abx at field@entrykey}} }
+         % Also, have to create localnumber again if \nocite{*} as items
+         % could have been added to the .bib file without changing the cite
+         % information in the .tex
+         {\ifboolexpr { (not togl {blx at localnumber}
+                         or
+                         test {\ifinlist{*}\blx at nocites})
+                         and
+                         not test {\ifcsdef{blx at defer@\the\c at refsection @\blx at refcontext@context @\abx at field@entrykey}} }
             {\iftoggle{blx at omitnumbers}
                {\let\abx at field@localnumber\@empty}
                {\csnumgdef{blx at labelnumber@\the\c at refsection}{%
@@ -8642,8 +8763,18 @@
                 \edef\abx at field@localnumber{%
                   \csuse{blx at labelnumber@\the\c at refsection}}%
                 \blx at bbl@addentryfield{\abx at field@entrykey}{\the\c at refsection}%
-                    {localnumber}{\blx at refcontext@context}{\abx at field@localnumber}}}
+                {localnumber}{\blx at refcontext@context}{\abx at field@localnumber}}}
             {}%
+          % Issue re-run message if there was no localnumber in the .aux and
+          % \nocite{*} was used because this means that an entry was added to the .bib
+          % and was not yet recorded in the .aux. We will have generated a localnumber
+          % for such a case above and now we need to re-run to make sure it's in the .aux
+          % for the next run
+          \ifboolexpr { test {\ifinlist{*}\blx at nocites}
+                        and
+                        not test {\ifcsdef{blx at localnumber@\the\c at refsection @\abx at field@entrykey}} }
+            {\blx at rerun@latex}
+            {}%
           % If localnumbers were already in the .aux, add them
           % again from the .aux. This prevents some cycling
           % problems where pagebreaks change after localnumber
@@ -8653,8 +8784,8 @@
           \ifcsundef{blx at defer@\the\c at refsection @\blx at refcontext@context @\abx at field@entrykey}
             {\ifundef\abx at field@localnumber
                {}
-                {\listxadd\blx at localnumaux{%
-                   \string\abx at aux@number%
+               {\listxadd\blx at localnumaux{%
+                  \string\abx at aux@number%
                      {\the\c at instcount}%
                      {\abx at field@entrykey}%
                      {\the\c at refsection}%
@@ -8707,10 +8838,9 @@
     {\InputIfFileExists{\jobname.bbl}
        {\blx at info@noline{... file '\jobname.bbl' found}%
         \global\toggletrue{blx at bbldone}%
-        \blx at generate@bbl at mdfivesum@found}
+        \blx at generate@bbl at mdfivesum@found{\jobname.bbl}}
        {\blx at info@noline{... file '\jobname.bbl' not found}%
         \typeout{No file \jobname.bbl.}%
-        % 'nobblfile' can never be equal to any mdfivehash
         \blx at generate@bbl at mdfivesum@notfound}}
     {\blx at generate@bbl at mdfivesum@notfound}%
   \blx at bblend
@@ -8848,6 +8978,7 @@
 \blx at kv@defkey{blx at bib1}{heading}{}
 \blx at kv@defkey{blx at bib1}{env}{}
 \blx at kv@defkey{blx at bib1}{title}{}
+\blx at kv@defkey{blx at bib1}{label}{}
 \blx at kv@defkey{blx at bib1}{prenote}{}
 \blx at kv@defkey{blx at bib1}{postnote}{}
 \blx at kv@defkey{blx at bib1}{omitnumbers}[]{}
@@ -8874,6 +9005,7 @@
 \blx at kv@defkey{blx at biblist1}{heading}{}
 \blx at kv@defkey{blx at biblist1}{env}{}
 \blx at kv@defkey{blx at biblist1}{title}{}
+\blx at kv@defkey{blx at biblist1}{label}{}
 \blx at kv@defkey{blx at biblist1}{prenote}{}
 \blx at kv@defkey{blx at biblist1}{postnote}{}
 
@@ -9079,6 +9211,10 @@
 \blx at kv@defkey{blx at bib2}{title}{\def\blx at thetitle{#1}}
 \blx at kv@defkey{blx at biblist2}{title}{\def\blx at thetitle{#1}}
 
+\blx at kv@defkey{blx at bhd}{label}{\def\blx at thelabel{#1}}
+\blx at kv@defkey{blx at bib2}{label}{\def\blx at thelabel{#1}}
+\blx at kv@defkey{blx at biblist2}{label}{\def\blx at thelabel{#1}}
+
 \cslet{blx at note@}\@empty
 \def\blx at key@bibnote#1#2{%
   \ifcsundef{blx at note@#2}
@@ -9168,10 +9304,12 @@
 \def\blx at printbibheading[#1]{%
   \let\blx at theheading\blx at default@theheading
   \let\blx at thetitle\blx at default@thetitle
+  \undef\blx at thelabel
   \blx at safe@actives
   \blx at kv@setkeys{blx at bhd}{#1}%
   \blx at rest@actives
   \blx at bibheading\blx at theheading\blx at thetitle
+  \blx at biblabel\blx at thelabel
   \endgroup}
 
 % We use this to determine whether an explicit value for resetnumbers is passed to
@@ -9196,6 +9334,7 @@
   \let\blx at theprenote\blx at default@theprenote
   \let\blx at thepostnote\blx at default@thepostnote
   \let\blx at thetitle\blx at default@thetitle
+  \undef\blx at thelabel
   % defaults
   \let\blx at tempa\@empty% before there is a .bbl, this must not be undef
   \edef\blx at tempe{\the\c at refsection}% default refsection is current
@@ -9250,6 +9389,7 @@
   \let\blx at theprenote\blx at default@theprenote
   \let\blx at thepostnote\blx at default@thepostnote
   \let\blx at thetitle\blx at default@thetitle
+  \undef\blx at thelabel
   \c at refsection\z@
   \blx at safe@actives
   \blx at kv@setkeys{blx at bbs}{#1}%
@@ -9289,6 +9429,7 @@
   \let\blx at theprenote\blx at default@theprenote
   \let\blx at thepostnote\blx at default@thepostnote
   \let\blx at thetitle\blx at default@thetitle
+  \undef\blx at thelabel
   \c at refsegment\@ne
   \blx at safe@actives
   \blx at kv@setkeys{blx at bbg}{#1}%
@@ -9333,6 +9474,7 @@
   \let\blx at theprenote\blx at default@theprenote
   \let\blx at thepostnote\blx at default@thepostnote
   \let\blx at thetitle\blx at default@thetitle
+  \undef\blx at thelabel
   \c at refsection\z@
   \blx at safe@actives
   \blx at kv@setkeys{blx at bbc}{#1}%
@@ -9361,6 +9503,7 @@
 % {<entrykey>,...}
 \def\blx at bibliography{%
   \blx at bibheading\blx at theheading\blx at thetitle
+  \blx at biblabel\blx at thelabel
   \blx at bibnote\blx at theprenote
   \begingroup
   \blx at bibinit
@@ -9403,6 +9546,11 @@
   \let\newrefsection\blx at newrefsection
   \let\newrefsegment\blx at newrefsegment}
 
+\def\blx at biblabel#1{%
+  \ifdefvoid#1
+    {}
+    {\expandafter\label\expandafter{#1}}}
+
 \def\blx at bibnote#1{%
   \ifdefempty#1
     {}
@@ -9631,6 +9779,7 @@
   \let\blx at theprenote\@empty
   \let\blx at thepostnote\@empty
   \let\blx at thetitle\@empty
+  \undef\blx at thelabel
   % defaults
   \let\blx at 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
@@ -9713,6 +9862,7 @@
     \@restonecolfalse
   \fi
   \blx at bibheading\blx at theheading\blx at thetitle
+  \blx at biblabel\blx at thelabel
   \blx at bibnote\blx at theprenote
   \begingroup
   \blx at bibinit
@@ -9900,6 +10050,7 @@
   \let\blx at tempc\@empty%
   \def\blx at tempd{global}%
   \def\blx at tempe{global}%
+  \blx at kv@setkeys{blx at assignrefcontextmeta}{#2}%
   \blx at kv@setkeys{blx at assignrefcontext}{#2}%
   \def\do##1{%
     \listxadd\blx at assignedrefcontextkeywlist{##1}%
@@ -9919,6 +10070,7 @@
   \let\blx at tempc\@empty%
   \def\blx at tempd{global}%
   \def\blx at tempe{global}%
+  \blx at kv@setkeys{blx at assignrefcontextmeta}{#2}%
   \blx at kv@setkeys{blx at assignrefcontext}{#2}%
   \def\do##1{%
     \listxadd\blx at assignedrefcontextcatlist{##1}%
@@ -9938,6 +10090,7 @@
   \let\blx at tempc\@empty%
   \def\blx at tempd{global}%
   \def\blx at tempe{global}%
+  \blx at kv@setkeys{blx at assignrefcontextmeta}{#2}%
   \blx at kv@setkeys{blx at assignrefcontext}{#2}%
   \def\do##1{%
     \csxdef{blx at assignedrefcontextkeys#1@\the\c at refsection @##1}%
@@ -9944,16 +10097,31 @@
       {\blx at tempa/\blx at tempb/\blx at tempc/\blx at tempd/\blx at tempe}}%
   \docsvlist{#3}}
 
+% This makes sure that named refcontexts set options first
+% Note that the docs say that "name=default" selects the global default
+% refcontext and this is because this won't set anything and the defaults
+% in the above macros will take effect.
+\blx at kv@defkey{blx at assignrefcontextmeta}{name}{%
+  \begingroup
+  \edef\blx at tempf{\endgroup%
+  \noexpand\blx at kv@setkeys{blx at assignrefcontext}{\csuse{blx at refcontext@name@#1}}}%
+  \blx at tempf}
+\blx at kv@defkey{blx at assignrefcontextmeta}{nametemplates}{}
+\blx at kv@defkey{blx at assignrefcontextmeta}{sorting}{}
+\blx at kv@defkey{blx at assignrefcontextmeta}{sortingnamekeytemplatename}{}
+\blx at kv@defkey{blx at assignrefcontextmeta}{labelprefix}{}
+\blx at kv@defkey{blx at assignrefcontextmeta}{uniquenametemplatename}{}
+\blx at kv@defkey{blx at assignrefcontextmeta}{labelalphanametemplatename}{}
+
 % Meta option to set all name template options
+\blx at kv@defkey{blx at assignrefcontext}{name}{}
 \blx at kv@defkey{blx at assignrefcontext}{nametemplates}{%
   \def\blx at tempb{#1}%
   \def\blx at tempd{#1}%
   \def\blx at tempe{#1}}
-
 \blx at kv@defkey{blx at assignrefcontext}{sorting}{\def\blx at tempa{#1}}
 \blx at kv@defkey{blx at assignrefcontext}{sortingnamekeytemplatename}{\def\blx at tempb{#1}}
-\blx at kv@defkey{blx at assignrefcontext}{labelprefix}{%
-  \edef\blx at tempc{\blx at mdfivesum{#1}}}
+\blx at kv@defkey{blx at assignrefcontext}{labelprefix}{\edef\blx at tempc{\blx at mdfivesum{#1}}}
 \blx at kv@defkey{blx at assignrefcontext}{uniquenametemplatename}{\def\blx at tempd{#1}}
 \blx at kv@defkey{blx at assignrefcontext}{labelalphanametemplatename}{\def\blx at tempe{#1}}
 
@@ -10408,7 +10576,7 @@
     {\blx at error
        {Category '#1' not declared}
        {Use \string\DeclareBibliographyCategory\space to declare}}
-    {\AfterPreamble{%
+    {\blx at AfterPreamble{%
        \blx at xsanitizeafter{\forcsvlist{\blx at addtocategory{#1}}}{#2}}}}
 
 % {<category>}{<entrykey>,...}
@@ -10692,6 +10860,7 @@
   \blx at citation@all}
 
 \def\blx at citation@all{%
+  \blx at auxwrite\@mainaux{}{\string\abx at aux@nociteall}%
   \ifbool{citerequest}
     {\blx at bibreq{*}%
      \global\csletcs
@@ -10702,6 +10871,9 @@
        {}}
     {}}
 
+\def\abx at aux@nociteall{%
+  \listgadd\blx at nocites{*}}
+
 \protected\def\blx at bibreq#1{%
   \begingroup
   \blx at xmlsanitizeafter{\def\blx at tempa}{#1}%
@@ -10746,7 +10918,7 @@
            I'm ignoring the new definition}}}
     {\global\cslet{blx at set@\the\c at refsection @\blx at tempa}\blx at tempb
      \edef\blx at tempa{%
-       \AfterPreamble{\blx at setreq{\blx at tempa}{\blx at tempb}}}%
+       \blx at AfterPreamble{\blx at setreq{\blx at tempa}{\blx at tempb}}}%
      \blx at tempa}%
   \endgroup
   \@esphack}
@@ -11468,7 +11640,7 @@
 
 \def\blx at nocite#1{%
   \@bsphack
-  \AfterPreamble{%
+  \blx at AfterPreamble{%
     \ifstrequal{*}{#1}
       {\blx at nocitation@all}
       {\blx at xsanitizeafter{\forcsvlist\blx at nocite@do}{#1}}}%
@@ -15272,34 +15444,75 @@
 
 
 \csdef{blx at opt@casechanger at auto}{%
-  \RequirePackage{expl3}[2020/04/06]%
-  \@ifpackagelater{expl3}{2020/04/06}
-    {\blx at info{expl3\MessageBreak\csuse{ver at expl3.sty}\MessageBreak
-       is new enough (at least 2020/04/06),\MessageBreak
-       setting 'casechanger=expl3'}%
-     \csuse{blx at opt@casechanger at expl3}}
-    {\blx at info{expl3\MessageBreak\csuse{ver at expl3.sty}\MessageBreak
-       is too old (older than 2020/04/06),\MessageBreak
-       setting 'casechanger=latex2e'}%
+  \ifdefstring{\blx at texencoding}{utf8}
+    {\blx at info@noline{Document encoding is UTF8 ...}%
+     \RequirePackage{expl3}[2020/04/06]%
+     \@ifpackagelater{expl3}{2020/04/06}
+       {\blx at info@noline{... and expl3\MessageBreak\csuse{ver at expl3.sty}\MessageBreak
+          is new enough (at least 2020/04/06),\MessageBreak
+          setting 'casechanger=expl3'}%
+        \csuse{blx at opt@casechanger at expl3}}
+       {\blx at info@noline{... but expl3\MessageBreak\csuse{ver at expl3.sty}\MessageBreak
+          is too old (older than 2020/04/06),\MessageBreak
+          setting 'casechanger=latex2e'}%
+        \csuse{blx at opt@casechanger at latex2e}}}
+    {\blx at info@noline{%
+       Document encoding not detected as UTF8.\MessageBreak
+       Setting 'casechanger=latex2e'}%
      \csuse{blx at opt@casechanger at latex2e}}}
 
 \csdef{blx at opt@casechanger at latex2e}{%
-  \blx at inputonce{blx-case-latex2e.def}
-    {LaTeX2e (legacy) case changing code}
-    {}{}{}{}}
+  \RequirePackage{blx-case-latex2e}}
 \csletcs{blx at opt@casechanger at 2e}{blx at opt@casechanger at latex2e}
 
-% Apparently neither \input nor \blx at inputonce ever pops the
-% \ExplSyntaxOff from \ProvidesExplFile, so we do that ourselves.
 \csdef{blx at opt@casechanger at expl3}{%
-  \blx at inputonce{blx-case-expl3.def}
-    {expl3 case changing code}
-    {}{\ExplSyntaxOff}{}{}}
+  \ifdefstring{\blx at texencoding}{utf8}
+    {}
+    {\blx at warning@noline{%
+       The expl3 case changer code should only be used\MessageBreak
+       with UTF-8 encoding.\MessageBreak
+       But the document encoding was detected as
+       '\blx at texencoding'.\MessageBreak
+       Case changing macros may break\MessageBreak
+       if used with non-ASCII characters}}%
+  \RequirePackage{blx-case-expl3}}
 \csletcs{blx at opt@casechanger at 3}{blx at opt@casechanger at expl3}
 
 % default to auto
 \csletcs{blx at deferoption@casechanger}{blx at opt@casechanger at auto}
 
+% This is a bit unfortunate, but we need some more definitions after
+% loading the case changing code.
+\def\blx at casechange@postload{%
+  % Language fallback, in order:
+  % * explicit option language=<lang>, which overrides everything
+  % * langid field of entry
+  % * babel/polyglossia lang
+  % * main document lang (we should never reach this)
+  % * <empty> (we should *definitely* never reach this)
+  % Everything here is expandable so that
+  % \blx at mksc@lang expands to the language name.
+  \def\blx at mksc@lang{%
+    \ifundef\blx at forcelanguagename
+      {\ifundef\abx at field@langid
+        {\ifundef\blx at languagename
+          {\ifundef\blx at main@language
+             {}
+             {\blx at main@language}}
+          {\blx at languagename}}
+        {\abx at field@langid}}
+      {\blx at forcelanguagename}}%
+  %
+  \DeclareCaseLangs{%
+    american,british,canadian,
+    english,USenglish,UKenglish,
+    australian,newzealand}%
+  % Textcase defines \NoCaseChange as \let\NoCaseChange\@firstofone
+  \ifundef\NoCaseChange
+    {\let\NoCaseChange\@firstofone}
+    {}}
+% That's it for the case change code
+
 % Set defaults
 \blx at kv@setkeys{blx at opt@ldt}{style=numeric}
 \blx at kv@setkeys{blx at opt@pre}{%
@@ -15340,44 +15553,7 @@
 % Process load-time options
 \ProcessOptions*
 
-% this ultimately loads either
-% blx-case-expl3.def or blx-case-latex2e.def
-\blx at deferoption@casechanger
 
-% This is a bit unfortunate, but we need some more definitions here.
-
-% Language fallback, in order:
-% * explicit option language=<lang>, which overrides everything
-% * langid field of entry
-% * babel/polyglossia lang
-% * main document lang (we should never reach this)
-% * <empty> (we should *definitely* never reach this)
-% Everything here is expandable so that
-% \blx at mksc@lang expands to the language name.
-\def\blx at mksc@lang{%
-  \ifundef\blx at forcelanguagename
-    {\ifundef\abx at field@langid
-      {\ifundef\blx at languagename
-        {\ifundef\blx at main@language
-           {}
-           {\blx at main@language}}
-        {\blx at languagename}}
-      {\abx at field@langid}}
-    {\blx at forcelanguagename}}
-
-\DeclareCaseLangs{%
-  american,british,canadian,
-  english,USenglish,UKenglish,
-  australian,newzealand}
-
-
-% Textcase defines \NoCaseChange as \let\NoCaseChange\@firstofone
-\ifundef\NoCaseChange
-  {\let\NoCaseChange\@firstofone}
-  {}
-
-% That's it for the case change code
-
 % Switch to BibTeX support if requested
 \iftoggle{blx at bibtex}
   {\blx at inputonce{blx-bibtex.def}{BibTeX backend compatibility}{}{}{}{}}
@@ -15542,6 +15718,10 @@
 \AtBeginDocument{%
   \blx at auxwrite\@mainaux{}{\string\abx at aux@refcontext{\blx at refcontext@context}}
   \blx at checkencoding
+  % this ultimately loads either
+  % blx-case-expl3.def or blx-case-latex2e.def
+  \blx at deferoption@casechanger
+  \blx at casechange@postload
   \if at filesw
     \blx at ctrlwrite
   \fi

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -215,6 +215,7 @@
 
 \patchcmd{\blx at bblinput}{\blx at bblfile}{\blx at bblfile\blx at bblsecs}{}{}
 
+
 \def\blx at bblfile{%
   \blx at secinit
   \begingroup
@@ -227,13 +228,18 @@
   \blx at ifsigned{\blx at auxfile}{bbl}
     {\InputIfFileExists{\blx at auxfile.bbl}
        {\blx at info@noline{... file '\blx at auxfile.bbl' found}%
-        \global\toggletrue{blx at bbldone}}
+        \global\toggletrue{blx at bbldone}%
+        \blx at generate@bbl at mdfivesum@found{\blx at auxfile.bbl}}
        {\blx at info@noline{... file '\blx at auxfile.bbl' not found}%
         \typeout{No file \blx at auxfile.bbl.}%
-        \global\togglefalse{blx at bbldone}}}
+        \global\togglefalse{blx at bbldone}%
+        \blx at generate@bbl at mdfivesum@notfound}}
     {}%
   \blx at bblend
   \endgroup
+  % Check if Biber rerun was not carried out.
+  % If so, ask for it again.
+  \blx at check@bbl at rerun@mdfivesum
   \csnumgdef{blx at labelnumber@\the\c at refsection}{0}}
 
 \def\blx at bblsecs{%

Deleted: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,271 +0,0 @@
-\RequirePackage{expl3}[2020/04/06]
-\RequirePackage{xparse}
-\ProvidesExplFile {blx-case-expl3} {\abx at date} {\abx at version}
-  {expl3 case changing code for biblatex}
-
-% Map for babel/polyglossia names
-% to BCP-47-like l3text names.
-% We only need maps for l3text names that do something
-% as of 2020/04/06 those names are
-% az, de-alt, el, lt, nl, tr.
-% biblatex currently only supports dutch, greek and turkish
-% so we only map those.
-% de-alt is optional and still unusual, so *we* don't map it,
-% but a user could map it themselves.
-
-\prop_new:N \l__biblatex_babel_to_pseudobcp_prop
-
-\cs_generate_variant:Nn \msg_info:nnnnn  { nnnxn }
-
-\cs_new_protected:Npn \biblatex_maplang_babel_to_pseudobcp:nn #1 #2
-  {
-    \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
-      {
-        \msg_info:nnnxn { biblatex }
-          { overwrite-babel-to-pseudobcp-map }
-          {#1}
-          {\prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}}
-          {#2}
-      }
-    \prop_put:Nnn \l__biblatex_babel_to_pseudobcp_prop {#1} {#2}
-  }
-
-\NewDocumentCommand \DeclareBabelToExplLanguageMapping {mm}
-  {
-    \biblatex_maplang_babel_to_pseudobcp:nn {#1} {#2}
-  }
-
-\cs_generate_variant:Nn \msg_info:nnnn  { nnnx }
-
-\cs_new_protected:Npn \biblatex_unmaplang_babel_to_pseudobcp:n #1
-  {
-    \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
-      {
-        \msg_info:nnnx { biblatex }
-          { remove-babel-to-pseudobcp-map }
-          {#1}
-          { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1} }
-      }
-    \prop_remove:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}
-  }
-
-\NewDocumentCommand \UndeclareBabelToExplLanguageMapping {m}
-  {
-    \str_if_eq:nnTF {#1} {*}
-      { \prop_clear:N  \l__biblatex_babel_to_pseudobcp_prop }
-      { \biblatex_unmaplang_babel_to_pseudobcp:n {#1} }
-  }
-
-% Don't put this into biblatex.sty, since
-% \DeclareBabelToExplLanguageMapping has no equivalent in the LaTeX2e
-% code.
-\DeclareBabelToExplLanguageMapping{dutch}{nl}
-\DeclareBabelToExplLanguageMapping{greek}{el}
-\DeclareBabelToExplLanguageMapping{turkish}{tr}
-
-% Our copy of \l_text_titlecase_check_letter_bool
-\bool_new:N \l_biblatex_titlecase_check_letter_bool
-% Just to be clear: unlike l3text our default is "false"
-\bool_set_false:N \l_biblatex_titlecase_check_letter_bool
-
-% Helper macro to avoid unnecessary repetition of the same structure
-% {<case [lowercase|uppercase|titlecase|titlecase_first]>}
-% {<babel language>}{<text>}
-% We use that \prop_item:Nn is empty if the item is not present
-% and that \text_...:nn becomes \text_...:n if the first argument
-% is empty.
-\cs_new_protected:Npn \__biblatex_text_makeconverter:nnn #1 #2 #3
-  {
-    \group_begin:
-      \bool_if_exist:NTF \l_text_titlecase_check_letter_bool
-        {
-          \bool_set_eq:NN \l_text_titlecase_check_letter_bool
-                          \l_biblatex_titlecase_check_letter_bool
-        }
-        {
-          % should we raise an error or at least issue a warning here?
-        }
-      \use:c { text_#1:nn }
-        { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#2} } {#3}
-    \group_end:
-  }
-
-
-\cs_new:Npn \biblatex_text_lowercase:nn #1 #2
-  {
-    \__biblatex_text_makeconverter:nnn {lowercase} {#1} {#2}
-  }
-
-\cs_generate_variant:Nn \biblatex_text_lowercase:nn { Vn }
-
-\cs_new:Npn \biblatex_text_lowercase:n #1
-  {
-    \biblatex_text_lowercase:Vn \blx at languagename {#1}
-  }
-
-\cs_set_eq:NN \blx at maketext@lowercase \biblatex_text_lowercase:n
-
-
-\cs_new:Npn \biblatex_text_uppercase:nn #1 #2
-  {
-    \__biblatex_text_makeconverter:nnn {uppercase} {#1} {#2}
-  }
-
-\cs_generate_variant:Nn \biblatex_text_uppercase:nn { Vn }
-
-\cs_new:Npn \biblatex_text_uppercase:n #1
-  {
-    \biblatex_text_uppercase:Vn \blx at languagename {#1}
-  }
-
-\cs_set_eq:NN \blx at maketext@uppercase \biblatex_text_uppercase:n
-
-
-\cs_new:Npn \biblatex_text_makecapital:nn #1 #2
-  {
-    \__biblatex_text_makeconverter:nnn {titlecase_first} {#1} {#2}
-  }
-
-\cs_generate_variant:Nn \biblatex_text_makecapital:nn { Vn }
-
-\cs_new:Npn \biblatex_text_makecapital:n #1
-  {
-    \biblatex_text_makecapital:Vn \blx at languagename {#1}
-  }
-
-\cs_set_eq:NN \blx at maketext@makecapital \biblatex_text_makecapital:n
-
-\NewDocumentCommand \MakeCapital {m}
-  {
-    \biblatex_text_makecapital:n {#1}
-  }
-
-
-
-% BibTeX to expl3 case protection code by Joseph Wright
-% https://github.com/plk/biblatex/issues/960#issuecomment-578435859
-% and Bruno Le Floch
-% https://github.com/moewew/biblatex/commit/c485f1b8079d56497b17343d7883b8fcd42f961a#r39225533
-\tl_put_right:Nn \l_text_expand_exclude_tl { \NoCaseChange }
-
-\tl_put_right:Nn \l_text_case_exclude_arg_tl { \NoCaseChange }
-
-\cs_new:Npn \biblatex_text_bibtex_to_expl:n #1
-  {
-    \__biblatex_text_bibtex_loop:w #1
-    { \q_recursion_tail } \q_recursion_stop
-  }
-
-\cs_new:Npn \__biblatex_text_bibtex_loop:w #1 #
-  {
-    \exp_not:n {#1}
-    \__biblatex_text_bibtex_group:n
-  }
-
-\cs_new:Npn \__biblatex_text_bibtex_group:n #1
-  {
-    \quark_if_recursion_tail_stop:n {#1}
-    {
-      \bool_lazy_and:nnTF
-        { \tl_if_head_is_N_type_p:n {#1} }
-        { \exp_after:wN \token_if_cs_p:N \tl_head:w #1 \q_stop }
-        { \exp_not:n {#1} }
-        { \exp_not:n { \NoCaseChange {#1} } }
-      }
-    \__biblatex_text_bibtex_loop:w
-  }
-
-\cs_new_eq:NN \biblatex_text_sentencecase_preprocess:n
-              \biblatex_text_bibtex_to_expl:n
-
-
-% By default we emulate BibTeX's brace case protection rules
-% but the user can turn that off for a more sane behaviour
-% that only relies on \NoCaseChange.
-\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
-  \str_case:nnF {#1}
-    {
-      { true }
-      {
-        \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
-                      \biblatex_text_bibtex_to_expl:n
-      }
-      { false }
-      {
-        \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
-                      \use:n
-      }
-    }
-    {
-      \msg_error:nnn { biblatex } { invalid-value-bibtexcaseprotection }
-                     {#1}
-    }
-}
-
-
-\cs_new:Npn \biblatex_text_sentencecase:nn #1 #2
-  {
-    \__biblatex_text_makeconverter:nnn {titlecase} {#1} {#2}
-  }
-
-
-\cs_generate_variant:Nn \clist_if_in:NnTF { NxTF }
-
-\cs_generate_variant:Nn \biblatex_text_sentencecase:nn { Vo, xo }
-
-% If \DeclareCaseLangs says we should apply sentence casing,
-% we go for it and pass the language along to the sentence casing macro.
-% Preprocess is either the BibTeX-to-expl3 brace translator
-% or \@firstofone (do nothing),
-% we need to expand once to get rid of the latter.
-\NewDocumentCommand \MakeSentenceCase {sm}
-  {
-    \IfBooleanTF {#1}
-      {
-        \clist_if_in:NxTF
-          \l__biblatex_caselangs_clist { \blx at mksc@lang }
-          {
-            \biblatex_text_sentencecase:xo { \blx at mksc@lang }
-              { \biblatex_text_sentencecase_preprocess:n {#2} }
-          }
-          {#2}
-      }
-      {
-        \biblatex_text_sentencecase:Vo \blx at languagename
-          { \biblatex_text_sentencecase_preprocess:n {#2} }
-      }
-  }
-
-
-\clist_new:N \l__biblatex_caselangs_clist
-
-% {<language,language,...>}
-\NewDocumentCommand \DeclareCaseLangs {sm}
-  {
-    \IfBooleanF {#1}
-      { \clist_clear:N \l__biblatex_caselangs_clist }
-    \clist_put_left:Nn \l__biblatex_caselangs_clist {#2}
-  }
-
-% \DeclareCaseLangs invocation is in biblatex.sty
-
-
-\NewDocumentCommand \ifcaselang {O{\blx at languagename}}
-  {
-    \clist_if_in:NxTF \l__biblatex_caselangs_clist {#1}
-  }
-
-
-
-\msg_new:nnnn { biblatex } { invalid-value-bibtexcaseprotection }
-  { Invalid~value~'#1'~for~option~'bibtexcaseprotection'. }
-  { Valid~values~for~'bibtexcaseprotection'~are~'true'~and~'false'. }
-
-\msg_new:nnn { biblatex } { remove-babel-to-pseudobcp-map }
-  { Removing~babel->l3text~language~mapping~for~'#1'~to~'#2'. }
-
-\msg_new:nnn { biblatex } { overwrite-babel-to-pseudobcp-map }
-  { Overwriting~babel->l3text~language~mapping~for~'#1'~from~
-    '#2'~to~'#3'. }
-
-\endinput

Added: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty	2020-12-31 21:50:01 UTC (rev 57272)
@@ -0,0 +1,289 @@
+\RequirePackage{expl3}[2020/04/06]
+\RequirePackage{xparse}
+\ProvidesExplPackage {blx-case-expl3} {\abx at date} {\abx at version}
+  {expl3 case changing code for biblatex}
+
+
+% helper macros to work around babel \languagename catcode weirdness
+\cs_new:Npn \__biblatex_clist_put_detokenized_left:Nn #1 #2
+  {
+    \clist_put_left:No #1 { \detokenize{#2} }
+  }
+
+\cs_generate_variant:Nn \__biblatex_clist_put_detokenized_left:Nn { Ne }
+
+
+\prg_new_conditional:Npnn \__biblatex_clist_if_detokenized_in:Nn #1#2 { TF }
+  {
+    \clist_if_in:NoTF #1 { \detokenize{#2} }
+      {\prg_return_true:}
+      {\prg_return_false:}
+  }
+
+\prg_generate_conditional_variant:Nnn \__biblatex_clist_if_detokenized_in:Nn {Ne} {TF}
+
+
+
+% Map for babel/polyglossia names
+% to BCP-47-like l3text names.
+% We only need maps for l3text names that do something
+% as of 2020/04/06 those names are
+% az, de-alt, el, lt, nl, tr.
+% biblatex currently only supports dutch, greek and turkish
+% so we only map those.
+% de-alt is optional and still unusual, so *we* don't map it,
+% but a user could map it themselves.
+
+\prop_new:N \l__biblatex_babel_to_pseudobcp_prop
+
+\cs_generate_variant:Nn \msg_info:nnnnn  { nnnxn }
+
+\cs_new_protected:Npn \biblatex_maplang_babel_to_pseudobcp:nn #1 #2
+  {
+    \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
+      {
+        \msg_info:nnnxn { biblatex }
+          { overwrite-babel-to-pseudobcp-map }
+          {#1}
+          {\prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}}
+          {#2}
+      }
+    \prop_put:Nnn \l__biblatex_babel_to_pseudobcp_prop {#1} {#2}
+  }
+
+\NewDocumentCommand \DeclareBabelToExplLanguageMapping {mm}
+  {
+    \biblatex_maplang_babel_to_pseudobcp:nn {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \msg_info:nnnn  { nnnx }
+
+\cs_new_protected:Npn \biblatex_unmaplang_babel_to_pseudobcp:n #1
+  {
+    \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
+      {
+        \msg_info:nnnx { biblatex }
+          { remove-babel-to-pseudobcp-map }
+          {#1}
+          { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1} }
+      }
+    \prop_remove:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}
+  }
+
+\NewDocumentCommand \UndeclareBabelToExplLanguageMapping {m}
+  {
+    \str_if_eq:nnTF {#1} {*}
+      { \prop_clear:N  \l__biblatex_babel_to_pseudobcp_prop }
+      { \biblatex_unmaplang_babel_to_pseudobcp:n {#1} }
+  }
+
+% Don't put this into biblatex.sty, since
+% \DeclareBabelToExplLanguageMapping has no equivalent in the LaTeX2e
+% code.
+\DeclareBabelToExplLanguageMapping{dutch}{nl}
+\DeclareBabelToExplLanguageMapping{greek}{el}
+\DeclareBabelToExplLanguageMapping{turkish}{tr}
+
+% Our copy of \l_text_titlecase_check_letter_bool
+\bool_new:N \l_biblatex_titlecase_check_letter_bool
+% Just to be clear: unlike l3text our default is "false"
+\bool_set_false:N \l_biblatex_titlecase_check_letter_bool
+
+% Helper macro to avoid unnecessary repetition of the same structure
+% {<case [lowercase|uppercase|titlecase|titlecase_first]>}
+% {<babel language>}{<text>}
+% We use that \prop_item:Nn is empty if the item is not present
+% and that \text_...:nn becomes \text_...:n if the first argument
+% is empty.
+\cs_new_protected:Npn \__biblatex_text_makeconverter:nnn #1 #2 #3
+  {
+    \group_begin:
+      \bool_if_exist:NTF \l_text_titlecase_check_letter_bool
+        {
+          \bool_set_eq:NN \l_text_titlecase_check_letter_bool
+                          \l_biblatex_titlecase_check_letter_bool
+        }
+        {
+          % should we raise an error or at least issue a warning here?
+        }
+      \use:c { text_#1:nn }
+        { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#2} } {#3}
+    \group_end:
+  }
+
+
+\cs_new:Npn \biblatex_text_lowercase:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {lowercase} {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \biblatex_text_lowercase:nn { Vn }
+
+\cs_new:Npn \biblatex_text_lowercase:n #1
+  {
+    \biblatex_text_lowercase:Vn \blx at languagename {#1}
+  }
+
+\cs_set_eq:NN \blx at maketext@lowercase \biblatex_text_lowercase:n
+
+
+\cs_new:Npn \biblatex_text_uppercase:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {uppercase} {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \biblatex_text_uppercase:nn { Vn }
+
+\cs_new:Npn \biblatex_text_uppercase:n #1
+  {
+    \biblatex_text_uppercase:Vn \blx at languagename {#1}
+  }
+
+\cs_set_eq:NN \blx at maketext@uppercase \biblatex_text_uppercase:n
+
+
+\cs_new:Npn \biblatex_text_makecapital:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {titlecase_first} {#1} {#2}
+  }
+
+\cs_generate_variant:Nn \biblatex_text_makecapital:nn { Vn }
+
+\cs_new:Npn \biblatex_text_makecapital:n #1
+  {
+    \biblatex_text_makecapital:Vn \blx at languagename {#1}
+  }
+
+\cs_set_eq:NN \blx at maketext@makecapital \biblatex_text_makecapital:n
+
+\NewDocumentCommand \MakeCapital {m}
+  {
+    \biblatex_text_makecapital:n {#1}
+  }
+
+
+
+% BibTeX to expl3 case protection code by Joseph Wright
+% https://github.com/plk/biblatex/issues/960#issuecomment-578435859
+% and Bruno Le Floch
+% https://github.com/moewew/biblatex/commit/c485f1b8079d56497b17343d7883b8fcd42f961a#r39225533
+\tl_put_right:Nn \l_text_expand_exclude_tl { \NoCaseChange }
+
+\tl_put_right:Nn \l_text_case_exclude_arg_tl { \NoCaseChange }
+
+\cs_new:Npn \biblatex_text_bibtex_to_expl:n #1
+  {
+    \__biblatex_text_bibtex_loop:w #1
+    { \q_recursion_tail } \q_recursion_stop
+  }
+
+\cs_new:Npn \__biblatex_text_bibtex_loop:w #1 #
+  {
+    \exp_not:n {#1}
+    \__biblatex_text_bibtex_group:n
+  }
+
+\cs_new:Npn \__biblatex_text_bibtex_group:n #1
+  {
+    \quark_if_recursion_tail_stop:n {#1}
+    {
+      \bool_lazy_and:nnTF
+        { \tl_if_head_is_N_type_p:n {#1} }
+        { \exp_after:wN \token_if_cs_p:N \tl_head:w #1 \q_stop }
+        { \exp_not:n {#1} }
+        { \exp_not:n { \NoCaseChange {#1} } }
+      }
+    \__biblatex_text_bibtex_loop:w
+  }
+
+\cs_new_eq:NN \biblatex_text_sentencecase_preprocess:n
+              \biblatex_text_bibtex_to_expl:n
+
+
+% By default we emulate BibTeX's brace case protection rules
+% but the user can turn that off for a more sane behaviour
+% that only relies on \NoCaseChange.
+\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
+  \str_case:nnF {#1}
+    {
+      { true }
+      {
+        \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
+                      \biblatex_text_bibtex_to_expl:n
+      }
+      { false }
+      {
+        \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
+                      \use:n
+      }
+    }
+    {
+      \msg_error:nnn { biblatex } { invalid-value-bibtexcaseprotection }
+                     {#1}
+    }
+}
+
+
+\cs_new:Npn \biblatex_text_sentencecase:nn #1 #2
+  {
+    \__biblatex_text_makeconverter:nnn {titlecase} {#1} {#2}
+  }
+
+
+\cs_generate_variant:Nn \biblatex_text_sentencecase:nn { Vo, xo }
+
+% If \DeclareCaseLangs says we should apply sentence casing,
+% we go for it and pass the language along to the sentence casing macro.
+% Preprocess is either the BibTeX-to-expl3 brace translator
+% or \@firstofone (do nothing),
+% we need to expand once to get rid of the latter.
+\NewDocumentCommand \MakeSentenceCase {sm}
+  {
+    \IfBooleanTF {#1}
+      {
+        \__biblatex_clist_if_detokenized_in:NeTF
+          \l__biblatex_caselangs_clist { \blx at mksc@lang }
+          {
+            \biblatex_text_sentencecase:xo { \blx at mksc@lang }
+              { \biblatex_text_sentencecase_preprocess:n {#2} }
+          }
+          {#2}
+      }
+      {
+        \biblatex_text_sentencecase:Vo \blx at languagename
+          { \biblatex_text_sentencecase_preprocess:n {#2} }
+      }
+  }
+
+
+\clist_new:N \l__biblatex_caselangs_clist
+
+% {<language,language,...>}
+\NewDocumentCommand \DeclareCaseLangs {sm}
+  {
+    \IfBooleanF {#1}
+      { \clist_clear:N \l__biblatex_caselangs_clist }
+    \__biblatex_clist_put_detokenized_left:Ne
+      \l__biblatex_caselangs_clist {#2}
+  }
+
+% \DeclareCaseLangs invocation is in biblatex.sty
+
+\NewDocumentCommand \ifcaselang {O{\blx at languagename}}
+  {
+    \__biblatex_clist_if_detokenized_in:NeTF \l__biblatex_caselangs_clist {#1}
+  }
+
+
+\msg_new:nnnn { biblatex } { invalid-value-bibtexcaseprotection }
+  { Invalid~value~'#1'~for~option~'bibtexcaseprotection'. }
+  { Valid~values~for~'bibtexcaseprotection'~are~'true'~and~'false'. }
+
+\msg_new:nnn { biblatex } { remove-babel-to-pseudobcp-map }
+  { Removing~babel->l3text~language~mapping~for~'#1'~to~'#2'. }
+
+\msg_new:nnn { biblatex } { overwrite-babel-to-pseudobcp-map }
+  { Overwriting~babel->l3text~language~mapping~for~'#1'~from~
+    '#2'~to~'#3'. }
+
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-expl3.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1,290 +0,0 @@
-\ProvidesFile{blx-case-latex2e.def}
-[\abx at cptid]
-
-% we don't have l3text's (pseudo)BCP47 language codes here
-\newrobustcmd*{\DeclareBabelToExplLanguageMapping}[2]{%
-  \blx at warning{The command '\string\DeclareBabelToExplLanguageMapping'%
-    \MessageBreak
-    is only available with the expl3 case changing\MessageBreak
-    implementation ('casechanger=expl3').\MessageBreak
-    Ignoring}}
-
-\newrobustcmd*{\UndeclareBabelToExplLanguageMapping}[1]{%
-  \blx at warning{The command '\string\UndeclareBabelToExplLanguageMapping'%
-    \MessageBreak
-    is only available with the expl3 case changing\MessageBreak
-    implementation ('casechanger=expl3').\MessageBreak
-    Ignoring}}
-
-\def\blx at maketext@lowercase{\MakeLowercase}
-
-\def\blx at maketext@uppercase{\MakeUppercase}
-
-\def\blx at maketext@makecapital{\MakeCapital}
-
-% {<text>}
-\newrobustcmd{\MakeCapital}[1]{%
-  \begingroup
-  \blx at mkcp@init
-  \protected at edef\blx at tempa{#1}%
-  \expandafter\blx at mkcp@parse\blx at tempa\@empty\blx at mkcp@end}
-
-\def\blx at mkcp@init{%
-  \def\blx at mkcp@iec{\noexpand\blx at mkcp@iec\noexpand}%
-  \def\blx at mkcp@bbl{\noexpand\blx at mkcp@bbl\noexpand}%
-  \def\blx at mkcp@sgl{\noexpand\blx at mkcp@sgl\noexpand}%
-  \def\blx at mkcp@dbl{\noexpand\blx at mkcp@dbl\noexpand}%
-  \def\do##1{\def##1{\blx at mkcp@sgl##1}}\abx at dosingleaccents
-  \def\do##1{\def##1{\blx at mkcp@dbl##1}}\abx at dodoubleaccents
-  \def\IeC##1{\blx at mkcp@iec\IeC{##1}}%
-  \def\@tabacckludge##1{%
-    \expandafter\blx at mkcp@sgl\csname\string##1\endcsname}}
-
-\begingroup
-\catcode`\"=\active
-\gappto\blx at mkcp@init{%
-  \ifnum\catcode`\"=\active
-    \def"#1{\blx at mkcp@bbl"\noexpand#1}%
-  \fi}
-\endgroup
-
-\def\blx at mkcp@parse{%
-  \futurelet\@let at token\blx at mkcp@eval}
-
-\long\def\blx at mkcp@eval{%
-  \ifx\@let at token\blx at mkcp@iec
-    \expandafter\blx at mkcp@getiec
-  \fi
-  \ifx\@let at token\blx at mkcp@bbl
-    \expandafter\blx at mkcp@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@sgl
-    \expandafter\blx at mkcp@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@dbl
-    \expandafter\blx at mkcp@getthree
-  \fi
-  \blx at mkcp@case}
-
-\def\blx at mkcp@getiec#1\blx at mkcp@case#2#3#4{%
-  \blx at mkcp@case{#2#3{#4}}}
-
-\def\blx at mkcp@gettwo#1\blx at mkcp@case#2#3#4{%
-  \blx at mkcp@case{#2#3#4}}
-
-\def\blx at mkcp@getthree#1\blx at mkcp@case#2#3#4#5{%
-  \blx at mkcp@case{#2#3#4#5}}
-
-\long\def\blx at mkcp@case#1{%
-  \begingroup
-  \def\i{I}\def\j{J}%
-  \def\do##1##2{\let##1##2\do}%
-  \expandafter\do\@uclclist\relax{\relax\@gobble}%
-  \uppercase{\protected at edef\blx at tempa{\endgroup\blx at mkcp@end#1}}%
-  \blx at tempa}
-
-\protected\long\def\blx at mkcp@end#1\blx at mkcp@end{%
-  \let\blx at mkcp@iec\noexpand
-  \let\blx at mkcp@bbl\noexpand
-  \let\blx at mkcp@sgl\noexpand
-  \let\blx at mkcp@dbl\noexpand
-  \protected at edef\blx at tempa{\endgroup#1}%
-  \blx at tempa}
-
-
-\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
-  \ifstrequal{#1}{true}
-    {}
-    {\ifstrequal{#1}{false}
-       {\blx at warning
-          {The option 'bibtexcaseprotection=false' is only\MessageBreak
-           available with expl3}}
-       {\blx at err@invopt{bibtexcaseprotection=#1}
-          {Valid values for 'bibtexcaseprotection' are 'true' and
-           'false'\MessageBreak
-           (but 'false' only works with expl3 code)}}}}
-
-% {<text>}
-\newrobustcmd*{\MakeSentenceCase}{%
-  \@ifstar\blx at mksc@i\blx at mksc@ii}
-
-% \blx at cmksc@lang is defined in biblatex.sty
-% it expands to the applicable language for the title field
-\def\blx at mksc@i{%
-  \xifinlist\blx at mksc@lang\blx at cmksc@lang
-    {\blx at mksc@ii}
-    {\@firstofone}}
-
-\long\def\blx at mksc@ii#1{%
-  \begingroup
-  \let\blx at tempa\@empty
-  \let\blx at tempb\@empty
-  \blx at mksc@init
-  \protected at edef\@tempa{#1}%
-  \expandafter\blx at mksc@parse\@tempa\blx at mksc@end}
-
-\def\blx at mksc@init{%
-  \blx at mkcp@init
-  \def\blx at mkcp@nil{\noexpand\blx at mkcp@nil\noexpand}%
-  \def\i{\blx at mkcp@nil\i}\def\j{\blx at mkcp@nil\j}%
-  \def\do##1{%
-    \ifx##1\relax
-    \else
-      \def##1{\blx at mkcp@nil##1}%
-      \expandafter\do
-    \fi}%
-  \expandafter\do\@uclclist\relax}
-
-\def\blx at mksc@parse{%
-  \futurelet\@let at token\blx at mksc@eval}
-
-\let\blx at asttoken=*
-
-\def\blx at mksc@eval{%
-  \ifx\@let at token\blx at mksc@end
-    \expandafter\blx at mksc@end
-  \fi
-  \ifx\@let at token\bgroup
-    \expandafter\blx at mksc@group
-  \fi
-  \ifx\@let at token\@sptoken
-    \expandafter\blx at mksc@space
-  \fi
-  \ifx\@let at token\blx at mkcp@nil
-    \expandafter\blx at mksc@getone
-  \fi
-  \ifx\@let at token\blx at mkcp@iec
-    \expandafter\blx at mksc@getiec
-  \fi
-  \ifx\@let at token\blx at mkcp@bbl
-    \expandafter\blx at mksc@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@sgl
-    \expandafter\blx at mksc@gettwo
-  \fi
-  \ifx\@let at token\blx at mkcp@dbl
-    \expandafter\blx at mksc@getthree
-  \fi
-  \ifx\@let at token\blx at asttoken
-    \expandafter\blx at mksc@cs
-  \fi
-  \if\noexpand\@let at token\relax
-    \expandafter\blx at mksc@cs
-  \fi
-  \blx at mksc@other}
-
-\def\blx at mksc@end#1\blx at mksc@end{%
-  \blx at mksc@eject
-  \let\blx at mkcp@nil\noexpand
-  \let\blx at mkcp@iec\noexpand
-  \let\blx at mkcp@bbl\noexpand
-  \let\blx at mkcp@sgl\noexpand
-  \let\blx at mkcp@dbl\noexpand
-  \let\MakeUppercase\relax
-  \let\MakeLowercase\relax
-  \protected at edef\blx at tempa{\endgroup\blx at tempa}%
-  \blx at tempa}
-
-\long\def\blx at mksc@group#1\blx at mksc@other#2{%
-  \futurelet\@let at token\blx at mksc@ingroup#2&{#2}%
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\long\def\blx at mksc@ingroup#1&#2{%
-  \if\noexpand\@let at token\relax
-    \ifx\@let at token\blx at mkcp@sgl
-      \blx at mksc@nocase{{#2}}%
-    \else
-      \ifx\@let at token\blx at mkcp@dbl
-        \blx at mksc@nocase{{#2}}%
-      \else
-        \blx at mksc@locase{{#2}}%
-      \fi
-    \fi
-  \else
-    \blx at mksc@nocase{{#2}}%
-  \fi}
-
-\def\blx at mksc@space{\def\blx at mksc@space##1\blx at mksc@other}
-\csuse{blx at mksc@space} {%
-  \blx at mksc@anycase{ }%
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\long\def\blx at mksc@cs#1\blx at mksc@other#2{%
-  \ifcat\noexpand~\noexpand#2%
-    \blx at mksc@locase{#2}%
-  \else
-    \blx at mksc@nocase{#2}%
-  \fi
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\def\blx at mksc@getiec#1\blx at mksc@other#2#3#4{%
-  \blx at mksc@other{#2#3{#4}}}
-
-\def\blx at mksc@getone#1\blx at mksc@other#2#3{%
-  \blx at mksc@other{#2#3}}
-
-\def\blx at mksc@gettwo#1\blx at mksc@other#2#3#4{%
-  \blx at mksc@other{#2#3#4}}
-
-\def\blx at mksc@getthree#1\blx at mksc@other#2#3#4#5{%
-  \blx at mksc@other{#2#3#4#5}}
-
-\long\def\blx at mksc@other#1{%
-  \blx at mksc@locase{#1}%
-  \blx at mksc@endhead
-  \blx at mksc@parse}
-
-\def\blx at mksc@locase{%
-  \appto\blx at tempb}
-
-\def\blx at mksc@nocase{%
-  \blx at mksc@eject
-  \appto\blx at tempa}
-
-\def\blx at mksc@anycase{%
-  \ifx\blx at tempb\@empty
-    \expandafter\appto
-    \expandafter\blx at tempa
-  \else
-    \expandafter\appto
-    \expandafter\blx at tempb
-  \fi}
-
-\def\blx at mksc@eject{%
-  \ifx\blx at tempb\@empty
-  \else
-    \eappto\blx at tempa{\noexpand\MakeLowercase{\expandonce\blx at tempb}}%
-    \let\blx at tempb\@empty
-  \fi}
-
-\def\blx at mksc@endhead{%
-  \ifx\blx at tempb\@empty
-  \else
-    \eappto\blx at tempa{\noexpand\MakeCapital{\expandonce\blx at tempb}}%
-    \let\blx at tempb\@empty
-  \fi
-  \let\blx at mksc@endhead\relax}
-
-
-
-% {<language,language,...>}
-\newrobustcmd*{\DeclareCaseLangs}{%
-  \@ifstar
-    {\blx at defcaselangs}
-    {\global\let\blx at cmksc@lang\@empty
-     \blx at defcaselangs}}
-
-\def\blx at defcaselangs#1{%
-  \ifblank{#1}
-    {}
-    {\forcsvlist{\listgadd\blx at cmksc@lang}{#1}}}
-
-% \DeclareCaseLangs invocation is in biblatex.sty
-
-\newrobustcmd*{\ifcaselang}[1][\blx at languagename]{%
-  \xifinlist{#1}\blx at cmksc@lang}
-
-\endinput

Added: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.sty	2020-12-31 21:50:01 UTC (rev 57272)
@@ -0,0 +1,326 @@
+\ProvidesPackage{blx-case-latex2e}
+[\abx at cptid]
+
+% auxiliary macros
+% babel's \languagename has weird catcodes,
+% so we \detokenize our language names
+
+\def\blx at listgadd@switched#1#2{\listgadd{#2}{#1}}
+
+\ifundef\expanded
+  {\protected\def\blx at deifinlist#1{%
+     \begingroup
+     \edef\blx at tempa{\endgroup
+       \blx at deifinlist@i{#1}}%
+     \blx at tempa}%
+   \protected\def\blx at deifinlist@i#1{%
+     \expandafter\ifinlist\expandafter{\detokenize{#1}}}%
+   %
+   \protected\def\blx at listdxadd@switched#1{%
+     \begingroup
+     \edef\blx at tempa{\endgroup
+       \blx at listdxadd@switched at i{#1}}%
+     \blx at tempa}%
+   \protected\def\blx at listdxadd@switched at i#1{%
+     \expandafter\blx at listgadd@switched\expandafter{\detokenize{#1}}}}
+  {\def\blx at deifinlist#1{%
+     \expandafter\expandafter\expandafter\ifinlist
+     \expandafter\expandafter\expandafter{%
+       \expandafter\detokenize\expandafter{\expanded{#1}}}}%
+   %
+   \def\blx at listdxadd@switched#1{%
+     \expandafter\expandafter\expandafter\blx at listgadd@switched
+     \expandafter\expandafter\expandafter{%
+       \expandafter\detokenize\expandafter{\expanded{#1}}}}}
+
+\def\blx at listdxadd#1#2{\blx at listdxadd@switched{#2}{#1}}
+
+
+% we don't have l3text's (pseudo)BCP47 language codes here
+\newrobustcmd*{\DeclareBabelToExplLanguageMapping}[2]{%
+  \blx at warning{The command '\string\DeclareBabelToExplLanguageMapping'%
+    \MessageBreak
+    is only available with the expl3 case changing\MessageBreak
+    implementation ('casechanger=expl3').\MessageBreak
+    Ignoring}}
+
+\newrobustcmd*{\UndeclareBabelToExplLanguageMapping}[1]{%
+  \blx at warning{The command '\string\UndeclareBabelToExplLanguageMapping'%
+    \MessageBreak
+    is only available with the expl3 case changing\MessageBreak
+    implementation ('casechanger=expl3').\MessageBreak
+    Ignoring}}
+
+\def\blx at maketext@lowercase{\MakeLowercase}
+
+\def\blx at maketext@uppercase{\MakeUppercase}
+
+\def\blx at maketext@makecapital{\MakeCapital}
+
+% {<text>}
+\newrobustcmd{\MakeCapital}[1]{%
+  \begingroup
+  \blx at mkcp@init
+  \protected at edef\blx at tempa{#1}%
+  \expandafter\blx at mkcp@parse\blx at tempa\@empty\blx at mkcp@end}
+
+\def\blx at mkcp@init{%
+  \def\blx at mkcp@iec{\noexpand\blx at mkcp@iec\noexpand}%
+  \def\blx at mkcp@bbl{\noexpand\blx at mkcp@bbl\noexpand}%
+  \def\blx at mkcp@sgl{\noexpand\blx at mkcp@sgl\noexpand}%
+  \def\blx at mkcp@dbl{\noexpand\blx at mkcp@dbl\noexpand}%
+  \def\do##1{\def##1{\blx at mkcp@sgl##1}}\abx at dosingleaccents
+  \def\do##1{\def##1{\blx at mkcp@dbl##1}}\abx at dodoubleaccents
+  \def\IeC##1{\blx at mkcp@iec\IeC{##1}}%
+  \def\@tabacckludge##1{%
+    \expandafter\blx at mkcp@sgl\csname\string##1\endcsname}}
+
+\begingroup
+\catcode`\"=\active
+\gappto\blx at mkcp@init{%
+  \ifnum\catcode`\"=\active
+    \def"#1{\blx at mkcp@bbl"\noexpand#1}%
+  \fi}
+\endgroup
+
+\def\blx at mkcp@parse{%
+  \futurelet\@let at token\blx at mkcp@eval}
+
+\long\def\blx at mkcp@eval{%
+  \ifx\@let at token\blx at mkcp@iec
+    \expandafter\blx at mkcp@getiec
+  \fi
+  \ifx\@let at token\blx at mkcp@bbl
+    \expandafter\blx at mkcp@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@sgl
+    \expandafter\blx at mkcp@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@dbl
+    \expandafter\blx at mkcp@getthree
+  \fi
+  \blx at mkcp@case}
+
+\def\blx at mkcp@getiec#1\blx at mkcp@case#2#3#4{%
+  \blx at mkcp@case{#2#3{#4}}}
+
+\def\blx at mkcp@gettwo#1\blx at mkcp@case#2#3#4{%
+  \blx at mkcp@case{#2#3#4}}
+
+\def\blx at mkcp@getthree#1\blx at mkcp@case#2#3#4#5{%
+  \blx at mkcp@case{#2#3#4#5}}
+
+\long\def\blx at mkcp@case#1{%
+  \begingroup
+  \def\i{I}\def\j{J}%
+  \def\do##1##2{\let##1##2\do}%
+  \expandafter\do\@uclclist\relax{\relax\@gobble}%
+  \uppercase{\protected at edef\blx at tempa{\endgroup\blx at mkcp@end#1}}%
+  \blx at tempa}
+
+\protected\long\def\blx at mkcp@end#1\blx at mkcp@end{%
+  \let\blx at mkcp@iec\noexpand
+  \let\blx at mkcp@bbl\noexpand
+  \let\blx at mkcp@sgl\noexpand
+  \let\blx at mkcp@dbl\noexpand
+  \protected at edef\blx at tempa{\endgroup#1}%
+  \blx at tempa}
+
+
+\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
+  \ifstrequal{#1}{true}
+    {}
+    {\ifstrequal{#1}{false}
+       {\blx at warning
+          {The option 'bibtexcaseprotection=false' is only\MessageBreak
+           available with expl3}}
+       {\blx at err@invopt{bibtexcaseprotection=#1}
+          {Valid values for 'bibtexcaseprotection' are 'true' and
+           'false'\MessageBreak
+           (but 'false' only works with expl3 code)}}}}
+
+% {<text>}
+\newrobustcmd*{\MakeSentenceCase}{%
+  \@ifstar\blx at mksc@i\blx at mksc@ii}
+
+
+% \blx at cmksc@lang is defined in biblatex.sty
+% it expands to the applicable language for the title field
+\def\blx at mksc@i{%
+  \blx at deifinlist\blx at mksc@lang\blx at cmksc@lang
+    {\blx at mksc@ii}
+    {\@firstofone}}
+
+\long\def\blx at mksc@ii#1{%
+  \begingroup
+  \let\blx at tempa\@empty
+  \let\blx at tempb\@empty
+  \blx at mksc@init
+  \protected at edef\@tempa{#1}%
+  \expandafter\blx at mksc@parse\@tempa\blx at mksc@end}
+
+\def\blx at mksc@init{%
+  \blx at mkcp@init
+  \def\blx at mkcp@nil{\noexpand\blx at mkcp@nil\noexpand}%
+  \def\i{\blx at mkcp@nil\i}\def\j{\blx at mkcp@nil\j}%
+  \def\do##1{%
+    \ifx##1\relax
+    \else
+      \def##1{\blx at mkcp@nil##1}%
+      \expandafter\do
+    \fi}%
+  \expandafter\do\@uclclist\relax}
+
+\def\blx at mksc@parse{%
+  \futurelet\@let at token\blx at mksc@eval}
+
+\let\blx at asttoken=*
+
+\def\blx at mksc@eval{%
+  \ifx\@let at token\blx at mksc@end
+    \expandafter\blx at mksc@end
+  \fi
+  \ifx\@let at token\bgroup
+    \expandafter\blx at mksc@group
+  \fi
+  \ifx\@let at token\@sptoken
+    \expandafter\blx at mksc@space
+  \fi
+  \ifx\@let at token\blx at mkcp@nil
+    \expandafter\blx at mksc@getone
+  \fi
+  \ifx\@let at token\blx at mkcp@iec
+    \expandafter\blx at mksc@getiec
+  \fi
+  \ifx\@let at token\blx at mkcp@bbl
+    \expandafter\blx at mksc@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@sgl
+    \expandafter\blx at mksc@gettwo
+  \fi
+  \ifx\@let at token\blx at mkcp@dbl
+    \expandafter\blx at mksc@getthree
+  \fi
+  \ifx\@let at token\blx at asttoken
+    \expandafter\blx at mksc@cs
+  \fi
+  \if\noexpand\@let at token\relax
+    \expandafter\blx at mksc@cs
+  \fi
+  \blx at mksc@other}
+
+\def\blx at mksc@end#1\blx at mksc@end{%
+  \blx at mksc@eject
+  \let\blx at mkcp@nil\noexpand
+  \let\blx at mkcp@iec\noexpand
+  \let\blx at mkcp@bbl\noexpand
+  \let\blx at mkcp@sgl\noexpand
+  \let\blx at mkcp@dbl\noexpand
+  \let\MakeUppercase\relax
+  \let\MakeLowercase\relax
+  \protected at edef\blx at tempa{\endgroup\blx at tempa}%
+  \blx at tempa}
+
+\long\def\blx at mksc@group#1\blx at mksc@other#2{%
+  \futurelet\@let at token\blx at mksc@ingroup#2&{#2}%
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\long\def\blx at mksc@ingroup#1&#2{%
+  \if\noexpand\@let at token\relax
+    \ifx\@let at token\blx at mkcp@sgl
+      \blx at mksc@nocase{{#2}}%
+    \else
+      \ifx\@let at token\blx at mkcp@dbl
+        \blx at mksc@nocase{{#2}}%
+      \else
+        \blx at mksc@locase{{#2}}%
+      \fi
+    \fi
+  \else
+    \blx at mksc@nocase{{#2}}%
+  \fi}
+
+\def\blx at mksc@space{\def\blx at mksc@space##1\blx at mksc@other}
+\csuse{blx at mksc@space} {%
+  \blx at mksc@anycase{ }%
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\long\def\blx at mksc@cs#1\blx at mksc@other#2{%
+  \ifcat\noexpand~\noexpand#2%
+    \blx at mksc@locase{#2}%
+  \else
+    \blx at mksc@nocase{#2}%
+  \fi
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\def\blx at mksc@getiec#1\blx at mksc@other#2#3#4{%
+  \blx at mksc@other{#2#3{#4}}}
+
+\def\blx at mksc@getone#1\blx at mksc@other#2#3{%
+  \blx at mksc@other{#2#3}}
+
+\def\blx at mksc@gettwo#1\blx at mksc@other#2#3#4{%
+  \blx at mksc@other{#2#3#4}}
+
+\def\blx at mksc@getthree#1\blx at mksc@other#2#3#4#5{%
+  \blx at mksc@other{#2#3#4#5}}
+
+\long\def\blx at mksc@other#1{%
+  \blx at mksc@locase{#1}%
+  \blx at mksc@endhead
+  \blx at mksc@parse}
+
+\def\blx at mksc@locase{%
+  \appto\blx at tempb}
+
+\def\blx at mksc@nocase{%
+  \blx at mksc@eject
+  \appto\blx at tempa}
+
+\def\blx at mksc@anycase{%
+  \ifx\blx at tempb\@empty
+    \expandafter\appto
+    \expandafter\blx at tempa
+  \else
+    \expandafter\appto
+    \expandafter\blx at tempb
+  \fi}
+
+\def\blx at mksc@eject{%
+  \ifx\blx at tempb\@empty
+  \else
+    \eappto\blx at tempa{\noexpand\MakeLowercase{\expandonce\blx at tempb}}%
+    \let\blx at tempb\@empty
+  \fi}
+
+\def\blx at mksc@endhead{%
+  \ifx\blx at tempb\@empty
+  \else
+    \eappto\blx at tempa{\noexpand\MakeCapital{\expandonce\blx at tempb}}%
+    \let\blx at tempb\@empty
+  \fi
+  \let\blx at mksc@endhead\relax}
+
+
+
+% {<language,language,...>}
+\newrobustcmd*{\DeclareCaseLangs}{%
+  \@ifstar
+    {\blx at defcaselangs}
+    {\global\let\blx at cmksc@lang\@empty
+     \blx at defcaselangs}}
+
+\def\blx at defcaselangs#1{%
+  \ifblank{#1}
+    {}
+    {\forcsvlist{\blx at listdxadd\blx at cmksc@lang}{#1}}}
+
+% \DeclareCaseLangs invocation is in biblatex.sty
+
+\newrobustcmd*{\ifcaselang}[1][\blx at languagename]{%
+  \blx at deifinlist{#1}\blx at cmksc@lang}
+
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/latex/biblatex/blx-case-latex2e.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -351,5 +351,9 @@
     Please use '\string\mkdaterangeisoextra'}%
   \mkdaterangeisoextra}
 
+% 3.16
+% deprecate \mainlang for \textmainlang
+% and \mkrelatedstring for \mkrelatedstringtext
+\newcommand{\mkrelatedstring}{\mainlang}
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -1464,7 +1464,7 @@
   }
 }
 
-\DeclareDatamodelConstraints[book,mvbook,mvcollection,mvreference]{
+\DeclareDatamodelConstraints[book,mvbook]{
   \constraint[type=mandatory]{
     \constraintfield{author}
     \constraintfield{title}
@@ -1489,7 +1489,7 @@
   }
 }
 
-\DeclareDatamodelConstraints[collection,reference]{
+\DeclareDatamodelConstraints[collection,reference,mvcollection,mvreference]{
   \constraint[type=mandatory]{
     \constraintfield{editor}
     \constraintfield{title}
@@ -1598,12 +1598,6 @@
   \constraint[type=data, datatype=ismn]{
     \constraintfield{ismn}
   }
-  \constraint[type=data, datatype=date]{
-    \constraintfield{date}
-    \constraintfield{eventdate}
-    \constraintfield{origdate}
-    \constraintfield{urldate}
-  }
   \constraint[type=data, datatype=pattern, pattern=\regexp{(?:sf|sm|sn|pf|pm|pn|pp)}]{
     \constraintfield{gender}
   }

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def	2020-12-31 21:50:01 UTC (rev 57272)
@@ -32,6 +32,20 @@
 \closein\blx at bcfin
 \endgroup
 
+% Second part of workaround for odd XeTeX/babel-french behaviour
+% https://github.com/plk/biblatex/issues/979
+% fix by Ulrike Fischer
+% https://tex.stackexchange.com/a/544914/.
+% The first bit lives in biblatex.sty.
+% At some point we may want to consider providing a
+% blx-unicode-xetex and a blx-unicode-lualatex
+% both loading a blx-unicode-generic.
+% For now this test is enough.
+\ifundef\XeTeXrevision
+  {}
+  {\providerobustcmd*{\textnohyphenation}[1]{%
+     \bgroup\nohyphenation#1\egroup^^^^200b}}
+
 \appto\blx at setfrcodes{%
   % … should probably have dot spacefactor, but pdfLaTeX
   % makes it a period, so we have this here for consistency

Added: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/basque.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/basque.lbx	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/basque.lbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -0,0 +1,480 @@
+\ProvidesFile{basque.lbx}
+[\abx at lbxid]
+
+\DeclareRedundantLanguages{basque}{basque}
+
+\DeclareBibliographyExtras{%
+  \protected\def\bibrangedash{\mbox{-}}% non-breaking hyphen
+  \let\finalandcomma=\empty
+  \let\finalandsemicolon=\empty
+  \def\mkbibordinal{\mkbibmascord}%
+  \providecommand*{\sptext}{\textsuperscript}% \sptext -> spanish.ldf (babel)
+  %\protected\def\mkbibmascord#1{\stripzeros{#1}\sptext{o}}%
+  \protected\def\mkbibmascord#1{\stripzeros{#1}\adddot}%
+  %\protected\def\mkbibfemord#1{\stripzeros{#1}\sptext{a}}%
+  \protected\def\mkbibfemord#1{\stripzeros{#1}\adddot}%
+  \protected\def\mkbibneutord{\mkbibmascord}%
+  \protected\def\mkbibdatelong#1#2#3{%
+    \iffieldundef{#3}
+      {}
+      {\stripzeros{\thefield{#3}}%
+       \iffieldundef{#2}{}{\nobreakspace de\space}}%
+    \iffieldundef{#2}
+      {}
+      {\mkbibmonth{\thefield{#2}}%
+       \iffieldundef{#1}{}{\nobreakspace de\space}}%
+    \iffieldbibstring{#1}
+      {\bibstring{\thefield{#1}}}
+      {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
+  \protected\def\mkbibdateshort#1#2#3{%
+    \iffieldundef{#1}
+      {}
+      {\mkdayzeros{\thefield{#1}}%
+       \iffieldundef{#2}{}{\mbox{-}}}%
+    \iffieldundef{#2}
+      {}
+      {\mkmonthzeros{\thefield{#2}}%
+       \iffieldundef{#1}{}{\mbox{-}}}%
+    \iffieldbibstring{#3}
+      {\bibstring{\thefield{#3}}}
+      \stripzeros{\thefield{#3}}}%
+  \savecommand\mkdaterangeterse
+  \protected\def\mkdaterangeterse{%
+    \BibliographyWarning{%
+      Date format 'terse' not applicable to\MessageBreak
+      Spanish dates. Using format 'short' instead}%
+    \mkdaterangefull{short}}%
+  \savecommand\mkbibordedition
+  \savecommand\mkbibordseries
+  \def\mkbibordedition{\mkbibfemord}%
+  \def\mkbibordseries{\mkbibfemord}%
+  \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+      \iffieldundef{#1}{}
+        {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
+      \iffieldundef{#2}{}
+        {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
+      \iffieldundef{#3}{}
+        {\printtext{\mktimezeros{\thefield{#3}}}}%
+      \setunit{}%
+      \iffieldundef{#4}{}
+        {\bibtimezonesep
+         \mkbibtimezone{\thefield{#4}}}}%
+  \expandafter\protected\expandafter\def\csname mkbibtime12h\endcsname#1#2#3#4{%
+      \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep
+      \forcezerosmdt{\thefield{#2}}%
+      \iffieldundef{#3}{}
+        {\bibtimesep
+         \forcezerosmdt{\thefield{#3}}}%
+       \space
+       \ifnumless{\thefield{#1}}{12}
+         {\bibstring{am}}
+         {\bibstring{pm}}%
+      \iffieldundef{#4}{}
+       {\space\bibtimezonesep
+        \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+  \protected\def\mkbibseasondateshort#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}%
+  \protected\def\mkbibseasondatelong#1#2{%
+    \mkbibseason{\thefield{#2}}%
+    \iffieldundef{#1}{}{\space}%
+    \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}%
+}
+
+\UndeclareBibliographyExtras{%
+  \restorecommand\mkdaterangeterse
+  \restorecommand\lbx at finalnamedelim
+  \restorecommand\lbx at finallistdelim
+  \restorecommand\mkbibordedition
+  \restorecommand\mkbibordseries
+}
+
+\DeclareBibliographyStrings{%
+  bibliography     = {{Bibliografia}{Bibliografia}},%
+  references       = {{Erreferentziak}{Erreferentziak}},%
+  shorthands       = {{Laburduren zerrenda}{Laburdurak}},%
+  editor           = {{editorea}{ed\adddot}},%
+  editors          = {{editoreak}{edk\adddot}},%
+  compiler         = {{biltzailea}{biltz\adddot}},%
+  compilers        = {{biltzaileak}{biltzk\adddot}},%
+  redactor         = {{erredaktorea}{err\adddot}},%
+  redactors        = {{erredakotreak}{errk\adddot}},%
+  reviser          = {{orraztailea}{orr\adddot}},%
+  revisers         = {{orraztaileak}{orrk\adddot}},%
+  founder          = {{sortzailea}{sor\adddot}},%
+  founders         = {{sortzaileak}{sork\adddot}},%
+  continuator      = {{jarraitzailea}{jarr\adddot}},%
+  continuators     = {{jarraitzaileak}{jarrk\adddot}},%
+  collaborator     = {{kolaboratzailea}{kolab\adddot}},%
+  collaborators    = {{kolaboratzaileak}{kolabk\adddot}},%
+  translator       = {{itzulpena}{itz\adddot}},%
+  translators      = {{itzulpena}{itz\adddot}},%
+  commentator      = {{iruzkingilea}{irzgl\adddot}},%
+  commentators     = {{iruzkingileak}{irzglk\adddot}},%
+  annotator        = {{ohargilea}{ohr\adddot}},%
+  annotators       = {{ohargileak}{ohrk\adddot}},%
+  commentary       = {{iruzkina}{ir\adddot}},%
+  annotations      = {{oharrak}{ohk\adddot}},%
+  introduction     = {{sarrera}{sar\adddot}},%
+  foreword         = {{hitzaurrea}{hitzaur\adddot}},%
+  afterword        = {{hitzatzea}{hitzatz\adddot}},%
+  editortr         = {{edizioa eta \lbx at sfromlang\ itzulpena}{ed\adddotspace eta \lbx at sfromlang\ itz\adddot}},%
+  editorstr        = {{edizioa eta \lbx at sfromlang\ itzulpena}{ed\adddotspace eta \lbx at sfromlang\ itz\adddot}},%
+  editorco         = {{edizioa eta iruzkinak}{ed\adddotspace eta irk\adddot}},%
+  editorsco        = {{edizioa eta iruzkinak}{ed\adddotspace eta irk\adddot}},%
+  editoran         = {{edizioa eta oharrak}{ed\adddotspace eta ohk\adddot}},%
+  editorsan        = {{edizioa eta oharrak}{ed\adddotspace eta ohk\adddot}},%
+  editorin         = {{edizioa eta sarrera}{ed\adddotspace eta sar\adddot}},%
+  editorsin        = {{edizioa eta sarrera}{ed\adddotspace eta sar\adddot}},%
+  editorfo         = {{edizioa eta hitzaurrea}{ed\adddotspace eta hitzaur\adddot}},%
+  editorsfo        = {{edizioa eta hitzaurrea}{ed\adddotspace eta hitzaur\adddot}},%
+  editoraf         = {{edizioa eta hitzatzea}{ed\adddotspace eta hitzatz\adddot}},%
+  editorsaf        = {{edizioa eta hitzatzea}{ed\adddotspace eta hitzatz\adddot}},%
+  editortrco       = {{edizioa, \lbx at sfromlang\ itzulpena eta iruzkinak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta irzk\adddot}},%
+  editorstrco      = {{edizioa, \lbx at sfromlang\ itzulpena eta iruzkinak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta irzk\adddot}},%
+  editortran       = {{edizioa, \lbx at sfromlang\ itzulpena eta oharrak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta ohk\adddot}},%
+  editorstran      = {{edizioa, \lbx at sfromlang\ itzulpena eta oharrak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta ohk\adddot}},%
+  editortrin       = {{edizioa, \lbx at sfromlang\ itzulpena eta sarrera}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta sar\adddot}},%
+  editorstrin      = {{edizioa, \lbx at sfromlang\ itzulpena eta sarrera}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta sar\adddot}},%
+  editortrfo       = {{edizioa, \lbx at sfromlang\ itzulpena eta hitzaurrea}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta hitzaur\adddot}},%
+  editorstrfo      = {{edizioak, \lbx at sfromlang\ itzulpenak eta hitzaurrea}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddotspace eta hitzaur\adddot}},%
+  editortraf       = {{edizioa, \lbx at sfromlang\ itzulpena eta hitzatzea}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddotspace eta hitzatz\adddot}},%
+  editorstraf      = {{edizioak, \lbx at sfromlang\ itzulpenak eta hitzatzea}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddotspace eta hitzatz\adddot}},%
+  editorcoin       = {{edizioa, iruzkinak eta sarrera}{ed.,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+  editorscoin      = {{edizioak, iruzkinak eta sarrera}{edk.,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+  editorcofo       = {{edizioa, iruzkinak eta hitzaurrea}{ed.,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+  editorscofo      = {{edizioak, iruzkinak eta hitzaurrea}{edk.,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+  editorcoaf       = {{edizioa, iruzkinak eta hitzatzea}{ed.,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+  editorscoaf      = {{edizioak, iruzkinak eta hitzatzea}{edk.,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+  editoranin       = {{edizioa, oharrak eta sarrera}{ed.,\addabbrvspace ohk\adddotspace eta sar\adddot}},%
+  editorsanin      = {{edizioak, oharrak eta sarrera}{edk.,\addabbrvspace ohk\adddotspace eta sar\adddot}},%
+  editoranfo       = {{edizioa, oharrak eta hitzaurrea}{ed.,\addabbrvspace ohk\adddotspace eta hitzatz\adddot}},%
+  editorsanfo      = {{edizioak, oharrak eta hitzaurrea}{edk.,\addabbrvspace ohk\adddotspace eta hitzatz\adddot}},%
+  editoranaf       = {{edizioa, oharrak eta hitzatzea}{ed.,\addabbrvspace ohk\adddotspace eta hitzatz\adddot}},%
+  editorsanaf      = {{edizioak, oharrak eta hitzatzea}{edk.,\addabbrvspace ohk\adddotspace eta hitzatz\adddot}},%
+  editortrcoin     = {{edizioa, \lbx at sfromlang\ itzulpena, iruzkinak eta sarrera}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+  editorstrcoin    = {{edizioak, \lbx at sfromlang\ itzulpenak, iruzkinak eta sarrera}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddot,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+  editortrcofo     = {{edizioa, \lbx at sfromlang\ itzulpena, iruzkinak eta hitzaurrea}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+  editorstrcofo    = {{edizioak, \lbx at sfromlang\ itzulpenak, iruzkinak eta hitzaurrea}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddot,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+  editortrcoaf     = {{edizioa, \lbx at sfromlang\ itzulpena, iruzkinak eta hitzatzea}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+  editorstrcoaf    = {{edizioak, \lbx at sfromlang\ itzulpenak, iruzkinak eta hitzatzea}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddot,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+  editortranin     = {{edizioa, \lbx at sfromlang\ itzulpena, sarrera eta oharrak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot,\addabbrvspace sar\adddotspace eta ohk\adddot}},%
+  editorstranin    = {{edizioak, \lbx at sfromlang\ itzulpenak, sarrera eta oharrak}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddot,\addabbrvspace sar\adddotspace eta ohk\adddot}},%
+  editortranfo     = {{edizioa, \lbx at sfromlang\ itzulpena, hitzaurrea eta oharrak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot,\addabbrvspace hitzaur\adddotspace eta ohk\adddot}},%
+  editorstranfo    = {{edizioak, \lbx at sfromlang\ itzulpenak, hitzaurrea eta oharrak}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddot,\addabbrvspace hitzaur\adddotspace eta ohk\adddot}},%
+  editortranaf     = {{edizioa, \lbx at sfromlang\ itzulpena, hitzatzea eta oharrak}{ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot,\addabbrvspace hitzatz\adddotspace eta ohk\adddot}},%
+  editorstranaf    = {{edizioak, \lbx at sfromlang\ itzulpenak, hitzatzea eta oharrak}{edk.,\addabbrvspace \lbx at sfromlang\ itzk\adddot,\addabbrvspace hitzatz\adddotspace eta ohk\adddot}},%
+  translatorco     = {{\lbx at sfromlang\ itzulpena eta iruzkinak}{\lbx at sfromlang\ itz\adddot\ eta irzk\adddot}},%
+  translatorsco    = {{\lbx at sfromlang\ itzulpenak eta iruzkinak}{\lbx at sfromlang\ itzk\adddot\ eta irzk\adddot}},%
+  translatoran     = {{\lbx at sfromlang\ itzulpena eta oharrak}{\lbx at sfromlang\ itz\adddot\ eta ohk\adddot}},%
+  translatorsan    = {{\lbx at sfromlang\ itzulpenak eta oharrak}{\lbx at sfromlang\ itzk\adddot\ eta ohks\adddot}},%
+  translatorin     = {{\lbx at sfromlang\ itzulpena eta sarrera}{\lbx at sfromlang\ itz\adddot\ eta sar\adddot}},%
+  translatorsin    = {{\lbx at sfromlang\ itzulpenak eta sarrera}{\lbx at sfromlang\ itzk\adddot\ eta sar\adddot}},%
+  translatorfo     = {{\lbx at sfromlang\ itzulpena eta hitzaurrea}{\lbx at sfromlang\ itz\adddot\ eta hitzaur\adddot}},%
+  translatorsfo    = {{\lbx at sfromlang\ itzulpenak eta hitzaurrea}{\lbx at sfromlang\ itzk\adddot\ eta hitzaur\adddot}},%
+  translatoraf     = {{\lbx at sfromlang\ itzulpena eta hitzatzea}{\lbx at sfromlang\ itz\adddot\ eta hitzatz\adddot}},%
+  translatorsaf    = {{\lbx at sfromlang\ itzulpenak eta hitzatzea}{\lbx at sfromlang\ itzk\adddot\ eta hitzatz\adddot}},%
+  translatorcoin   = {{\lbx at sfromlang\ itzulpena, sarrera eta iruzkinak}{\lbx at sfromlang\ itz\adddot, sar\adddotspace eta irzk\adddot}},%
+  translatorscoin  = {{\lbx at sfromlang\ itzulpenak, sarrera eta iruzkinak}{\lbx at sfromlang\ itzk\adddot, sar\adddotspace eta irzk\adddot}},%
+  translatorcofo   = {{\lbx at sfromlang\ itzulpena, hitzaurrea eta iruzkinak}{\lbx at sfromlang\ itz\adddot, hitzaur\adddotspace eta irzk\adddot}},%
+  translatorscofo  = {{\lbx at sfromlang\ itzulpenak, hitzaurrea eta iruzkinak}{\lbx at sfromlang\ itzk\adddot, hitzaur\adddotspace eta irzk\adddot}},%
+  translatorcoaf   = {{\lbx at sfromlang\ itzulpena, hitzatzea eta iruzkinak}{\lbx at sfromlang\ itz\adddot, hitzatz\adddotspace eta irzk\adddot}},%
+  translatorscoaf  = {{\lbx at sfromlang\ itzulpenak, hitzatzea eta iruzkinak}{\lbx at sfromlang\ itzk\adddot, hitzatz\adddotspace eta irzk\adddot}},%
+  translatoranin   = {{\lbx at sfromlang\ itzulpena, sarrera eta oharrak}{\lbx at sfromlang\ itz\adddot, sar\adddotspace eta ohk\adddot}},%
+  translatorsanin  = {{\lbx at sfromlang\ itzulpenak, sarrera eta oharrak}{\lbx at sfromlang\ itzk\adddot, sar\adddotspace eta ohk\adddot}},%
+  translatoranfo   = {{\lbx at sfromlang\ itzulpena, hitzaurrea eta oharrak}{\lbx at sfromlang\ itz\adddot, hitzaur\adddotspace eta ohk\adddot}},%
+  translatorsanfo  = {{\lbx at sfromlang\ itzulpenak, hitzaurrea eta oharrak}{\lbx at sfromlang\ itzk\adddot, hitzaur\adddotspace eta ohk\adddot}},%
+  translatoranaf   = {{\lbx at sfromlang\ itzulpena, hitzatzea eta oharrak}{\lbx at sfromlang\ itz\adddot, hitzatz\adddotspace eta ohk\adddot}},%
+  translatorsanaf  = {{\lbx at sfromlang\ itzulpenak, hitzatzea eta oharrak}{\lbx at sfromlang\ itzk\adddot, hitzatz\adddotspace eta ohk\adddot}},%
+  organizer        = {{antolatzailea(k)}{antltz(k)\adddot}},%
+  organizers       = {{antolatzailea(k)}{antltz(k)\adddot}},%
+  byorganizer      = {{antolatzailea(k)}{antltz(k)\adddot}},%
+  byauthor         = {{egilea(k)}{eg(k)}},%
+  byeditor         = {{editorea(k)}{ed(k)}},%
+  bycompiler       = {{biltzailea(k)}{biltz(k)}},%
+  byredactor       = {{erredaktorea(k)}{err(k)}},%
+  byreviser        = {{orraztailea(k)}{orrz(k)}},%
+  byreviewer       = {{berrikustzailea(k)}{berr(k)}},%
+  byfounder        = {{sortzailea(k)}{sortz(k)}},%
+  bycontinuator    = {{jarraitzailea(k)}{jarr(k)}},%
+  bycollaborator   = {{kolaboratzailea(k)}{kolab(k)}},%
+  bytranslator     = {{\lbx at lfromlang\ itzulpena}{\lbx at sfromlang\ itz\adddot}},%
+  bycommentator    = {{iruzkinak}{irzk\adddotspace}},%
+  byannotator      = {{oharrak}{ohk\adddot}},%
+  withcommentator  = {{iruzkinak}{irzk\adddot}},%
+  withannotator    = {{oharrak}{ohk\adddot}},%
+  withintroduction = {{sarrera}{sar\adddot}},%
+  withforeword     = {{hitzaurrea}{hitzaur\adddot}},%
+  withafterword    = {{hitzatzea}{hitzatz\adddot}},%
+  byeditortr       = {{edizioa eta \lbx at lfromlang\ itzulpena}%
+                      {ed\adddotspace eta \lbx at sfromlang\ itz\adddot}},%
+  byeditorco       = {{edizioa eta iruzkinak}%
+                      {ed\adddotspace eta irzk\adddot}},%
+  byeditoran       = {{edizioa eta oharrak}%
+                      {ed\adddotspace eta ohk\adddot}},%
+  byeditorin       = {{edizioa eta sarrera}%
+                      {ed\adddotspace eta sar\adddot}},%
+  byeditorfo       = {{edizioa eta hitzaurrea}%
+                      {ed\adddotspace eta hitzaur\adddot}},%
+  byeditoraf       = {{edizioa eta hitzatzea}%
+                      {ed\adddotspace eta hitzatz\adddot}},%
+  byeditortrco     = {{edizioa, \lbx at lfromlang\ itzulpena eta iruzkinak}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot\ eta irzk\adddot}},%
+  byeditortran     = {{edizioa, \lbx at lfromlang\ itzulpena eta oharrak}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot\ eta ohk\adddot}},%
+  byeditortrin     = {{edizioa, \lbx at lfromlang\ itzulpena eta sarrera}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot\ eta sar\adddot}},%
+  byeditortrfo     = {{edizioa, \lbx at lfromlang\ itzulpena eta hitzaurrea}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot\ eta hitzaur\adddot}},%
+  byeditortraf     = {{edizioa, \lbx at lfromlang\ itzulpena eta hitzatzea}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot\ eta hitzatz\adddot}},%
+  byeditorcoin     = {{edizioa, iruzkinak eta sarrera}%
+                      {ed.,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+  byeditorcofo     = {{edizioa, iruzkinak eta hitzaurrea}%
+                      {ed.,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+  byeditorcoaf     = {{edizioa, iruzkinak eta hitzatzea}%
+                      {ed.,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+  byeditoranin     = {{edizioa, oharrak eta sarrera}%
+                      {ed.,\addabbrvspace ohk\adddotspace eta sar\adddot}},%
+  byeditoranfo     = {{edizioa, oharrak eta hitzaurrea}%
+                      {ed.,\addabbrvspace ohk\adddotspace eta hitzaur\adddot}},%
+  byeditoranaf     = {{edizioa, oharrak eta hitzatzea}%
+                      {ed.,\addabbrvspace ohk\adddotspace eta hitzatz\adddot}},%
+  byeditortrcoin   = {{edizioa, \lbx at lfromlang itzulpena, iruzkinak eta sarrera}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot, irzk\adddotspace eta sar\adddot}},%
+  byeditortrcofo   = {{edizioa, \lbx at lfromlang itzulpena, iruzkinak eta hitzaurrea}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot, irzk\adddotspace eta hitzaur\adddot}},%
+  byeditortrcoaf   = {{edizioa, \lbx at lfromlang itzulpena, iruzkinak eta hitzatzea}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot, irzk\adddotspace eta hitzatz\adddot}},%
+  byeditortranin   = {{edizioa, \lbx at lfromlang itzulpena, oharrak eta sarrera}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot, ohk\adddotspace eta sar\adddot}},%
+  byeditortranfo   = {{edizioa, \lbx at lfromlang itzulpena, oharrak eta hitzaurrea}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot, ohk\adddotspace eta hitzaur\adddot}},%
+  byeditortranaf   = {{edizioa, \lbx at lfromlang itzulpena, oharrak eta hitzatzea}%
+                      {ed.,\addabbrvspace \lbx at sfromlang\ itz\adddot, ohk\adddotspace eta hitzatz\adddot}},%
+  bytranslatorco   = {{\lbx at lfromlang\ itzulpena eta iruzkinak}%
+                      {\lbx at sfromlang\ itz\adddot\ eta irzk\adddot}},%
+  bytranslatoran   = {{\lbx at lfromlang\ itzulpena eta oharrak}%
+                      {\lbx at sfromlang\ itz\adddot\ eta ohk\adddot}},%
+  bytranslatorin   = {{\lbx at lfromlang\ itzulpena eta sarrera}%
+                      {\lbx at sfromlang\ itz\adddot\ eta sarod\adddot}},%
+  bytranslatorfo   = {{\lbx at lfromlang\ itzulpena eta hitzaurrea}%
+                      {\lbx at sfromlang\ itz\adddot\ eta hitzaur\adddot}},%
+  bytranslatoraf   = {{\lbx at lfromlang\ itzulpena eta hitzatzea}%
+                      {\lbx at sfromlang\ itz\adddot\ eta hitzatz\adddot}},%
+  bytranslatorcoin = {{\lbx at lfromlang itzulpena, iruzkinak eta sarrera}%
+                      {\lbx at sfromlang itz\adddot, irzk\adddotspace eta sar\adddot}},%
+  bytranslatorcofo = {{\lbx at lfromlang itzulpena, iruzkinak eta hitzaurrea}%
+                      {\lbx at sfromlang itz\adddot, irzk\adddotspace eta pr\'ol\adddot}},%
+  bytranslatorcoaf = {{\lbx at lfromlang itzulpena, iruzkinak eta hitzatzea}%
+                      {\lbx at sfromlang itz\adddot, irzk\adddotspace eta hitzatz\adddot}},%
+  bytranslatoranin = {{\lbx at lfromlang itzulpena, oharrak eta sarrera}%
+                      {\lbx at sfromlang itz\adddot, ohk\adddotspace eta sar\adddot}},%
+  bytranslatoranfo = {{\lbx at lfromlang itzulpena, oharrak eta hitzaurrea}%
+                      {\lbx at sfromlang itz\adddot, ohk\adddotspace eta pr\'ol\adddot}},%
+  bytranslatoranaf = {{\lbx at lfromlang itzulpena, oharrak eta hitzatzea}%
+                      {\lbx at sfromlang itz\adddot, ohk\adddotspace eta hitzatz\adddot}},%
+  and              = {{eta}{eta}},%
+  andothers        = {{et\adddotspace al\adddot}{et\adddotspace al\adddot}},%
+  andmore          = {{et\adddotspace al\adddot}{et\adddotspace al\adddot}},%
+  volume           = {{bolumena}{bol\adddot}},%
+  volumes          = {{bolumeank}{bolk\adddot}},%
+  involumes        = {{non}{non}},%
+  jourvol          = {{bolumena}{bol\adddot}},%
+  jourser          = {{serie-zenbaki}{ser-zb\adddot}},%
+  book             = {{liburua}{liburua}},%
+  part             = {{atala}{atala}},%
+  issue            = {{zenbakia}{zk\adddot}},%
+  newseries        = {{serie-zenbaki berria}{ser-zb ber\adddot}},%
+  oldseries        = {{serie-zenbaki zaharra}{ser-zb zah\adddot}},%
+  edition          = {{edizioa}{ed\adddot}},%
+  reprint          = {{berrinprimatzea}{berrinp\adddot}},%
+  reprintof        = {{berrinprimatzea}{berrinp\adddot}},%
+  reprintas        = {{berrinprimitua}{berrinp\adddot}},%
+  reprintfrom      = {{berrinprimitua}{berrinp\adddot}},%
+  reviewof         = {{erreseina}{erres\adddot}},%
+  translationof    = {{itzulpena}{itz\adddot}},%
+  translationas    = {{zein hizkuntzara itzulia}{zein hizk\adddot -ra itz\adddot}},%
+  translationfrom  = {{zein hizkuntzatik itzulia}{zein hizk\adddotspace itz\adddot}},%
+  origpubas        = {{originalki argitaratua}{orig\adddotspace argit\adddotspace}},%
+  origpubin        = {{originalki argitaratua}{orig\adddot argit\adddot}},%
+  astitle          = {{izenburua}{izenb\adddot}},%
+  bypublisher      = {{argitaletxea}{argit\adddot}},%
+  nodate           = {{datarik gabe}{dat\adddot gabe}},%
+  page             = {{orria}{orr\adddot}},%
+  pages            = {{orriak}{orrk\adddot}},%
+  column           = {{zutabea}{ztb\adddot}},%
+  columns          = {{zutabeak}{ztbk\adddot}},%
+  line             = {{lerroa}{lerr\adddot}},%
+  lines            = {{lerroak}{lerrk\adddot}},%
+  verse            = {{lerroa}{lerr\adddot}},%
+  verses           = {{lerroak}{lerrk\adddot}},%
+  section          = {{atala}{at\adddot}},%
+  sections         = {{atalak}{atk\adddot}},%
+  paragraph        = {{parrafoa}{parr\adddot}},%
+  paragraphs       = {{parrafoak}{parrk\adddot}},%
+  pagetotal        = {{orria}{orr\adddot}},%
+  pagetotals       = {{orriak}{orrk\adddot}},%
+  columntotal      = {{zutabea}{ztb\adddot}},%
+  columntotals     = {{zutabeak}{ztbk\adddot}},%
+  linetotal        = {{lerroa}{lerr\adddot}},%
+  linetotals       = {{lerroak}{lerrk\adddot}},%
+  versetotal       = {{verso}{v\adddot}},
+  versetotals      = {{versos}{vv\adddot}},
+  sectiontotal     = {{atala}{at\adddot}},%
+  sectiontotals    = {{atalak}{atk\adddot}},%
+  paragraphtotal   = {{parrafoa}{parr\adddot}},%
+  paragraphtotals  = {{parrafoak}{parrk\adddot}},%
+  in               = {{non}{non}},%
+  inseries         = {{non}{non}},%
+  ofseries         = {{nongo}{nongo}},%
+  number           = {{zenbakia}{zb\adddot}},%
+  chapter          = {{kapitulua}{kap\adddot}},%
+  bathesis         = {{Lizentziatura tesia}{Liz\adddotspace tesia}},%
+  mathesis         = {{Maisutza tesia}{Mais\adddotspace tesia}},%
+  phdthesis        = {{Tesi doktorala}{Tesi dokt\adddot}},%
+  candthesis       = {{Doktoretzarako hautagaitza tesia}{Dokt\adddotspace haut\adddotspace tesia}},%
+  resreport        = {{ikerketa txostena}{ik\adddotspace txos\adddot}},%
+  techreport       = {{txosten teknikoa}{txos\adddotspace tek\adddot}},%
+  software         = {{programa}{prog\adddot}},%
+  datacd           = {{datu CD-a}{datu CD-a}},%
+  audiocd          = {{audio CD-a}{audio CD-a}},%
+  version          = {{bertsioa}{ber\adddot}},%
+  url              = {{esteka}{esteka}},%
+  urlfrom          = {{noiztik erabilgarri}{erabilg\adddot}},%
+  urlseen          = {{azkenekoz ikusia}{azkenekoz ikusia}},%
+  inpreparation    = {{prestaketa prozesuan}{prest\adddot proz\adddot}},%
+  submitted        = {{bidalia}{bidalia}},%
+  forthcoming      = {{laster}{laster}},%
+  inpress          = {{inprentan}{inprentan}},%
+  prepublished     = {{aurrez argitaratua}{aur\adddot argit\adddot}},%
+  citedas          = {{aurrerantzean aipatua}{aur\adddot aip\adddot}},%
+  thiscite         = {{bereziki}{berez\adddot}},%
+  seenote          = {{ikus oharra}{ik\adddot oh\adddot}},%
+  quotedin         = {{aipatua}{aip\adddot}},%
+  idem             = {{idem}{id\adddot}},%
+  idemsf           = {{idem}{id\adddot}},%
+  idemsm           = {{idem}{id\adddot}},%
+  idemsn           = {{idem}{id\adddot}},%
+  idempf           = {{idem}{id\adddot}},%
+  idempm           = {{idem}{id\adddot}},%
+  idempn           = {{idem}{id\adddot}},%
+  idempp           = {{idem}{id\adddot}},%
+  ibidem           = {{ibidem}{ibid\adddot}},%
+  opcit            = {{op\adddotspace cit\adddot}{o\adddot cit\adddot}},%
+  loccit           = {{loc\adddotspace cit\adddot}{loc\adddot cit\adddot}},%
+  confer           = {{cf\adddot}{cf\adddot}},%
+  sequens          = {{hurr\adddot}{hurr\adddot}},%
+  sequentes        = {{hurrk\adddot}{hurrk\adddot}},%
+  passim           = {{passim}{passim}},%
+  see              = {{ikus}{ik\adddot}},%
+  seealso          = {{ikus ere}{ik\adddotspace ere}},%
+  backrefpage      = {{ikus orria}{ik\adddotspace orr\adddot}},%
+  backrefpages     = {{ikus orriak}{ik\adddotspace orrk\adddot}},%
+  january          = {{urtarrila}{urt\adddot}},%
+  february         = {{otsaila}{ots\adddot}},%
+  march            = {{martxoa}{mar\adddot}},%
+  april            = {{apirila}{ap\adddot}},%
+  may              = {{maiatza}{mai\adddot}},%
+  june             = {{ekaina}{ek\adddot}},%
+  july             = {{uztaila}{uz\adddot}},%
+  august           = {{abuztua}{abu\adddot}},%
+  september        = {{iraila}{ir\adddot}},%
+  october          = {{urria}{urr\adddot}},%
+  november         = {{azaroa}{az\adddot}},%
+  december         = {{abendua}{abe\adddot}},%
+  langamerican     = {{ingleles amerikarra}{ingeles amerikarra}},%
+  langbrazilian    = {{portugesa}{portugesa}},%
+  langbulgarian    = {{bulgariera}{bulgariera}},%
+  langcatalan      = {{katalana}{katalana}},%
+  langcroatian     = {{kroaziera}{kroaziera}},%
+  langczech        = {{txekiera}{txekiera}},%
+  langdanish       = {{daniera}{daniera}},%
+  langdutch        = {{nederlandera}{nederlandera}},%
+  langenglish      = {{ingelesa}{ingelesa}},%
+  langestonian     = {{estoniera}{estoniera}},%
+  langfinnish      = {{finlandiera}{finlandiera}},%
+  langfrench       = {{frantsesa}{frantsesa}},%
+  langgalician     = {{galiziera}{galiziera}},%
+  langgerman       = {{alemana}{alemana}},%
+  langgreek        = {{greziera}{greziera}},%
+  langhungarian    = {{hungariera}{hungariera}},%
+  langitalian      = {{italiera}{italiera}},%
+  langjapanese     = {{japoniera}{japoniera}},%
+  langlatin        = {{latina}{latina}},%
+  langlatvian      = {{lituaniera}{lituaniera}},%
+  langnorwegian    = {{norvegiera}{norvegiera}},%
+  langpolish       = {{poloniera}{poloniera}},%
+  langportuguese   = {{portugesa}{portugesa}},%
+  langrussian      = {{errusiera}{errusiera}},%
+  langslovak       = {{eslovakiera}{eslovakiera}},%
+  langslovene      = {{esloveniera}{esloveniera}},%
+  langspanish      = {{gaztelera}{gaztelera}},%
+  langswedish      = {{suediera}{suediera}},%
+  langukrainian    = {{ukrainera}{ukrainera}},%
+  fromamerican     = {{ingeles amerikarretik}{ingeles amerikarretik}},%
+  frombrazilian    = {{portugesetik}{portugesetik}},%
+  frombulgarian    = {{bulgarieratik}{bulgarieratik}},%
+  fromcatalan      = {{katalanetik}{katalanetik}},%
+  fromcroatian     = {{kroazieratik}{kroazieratik}},%
+  fromczech        = {{txekieratik}{txekieratik}},%
+  fromdanish       = {{danieratik}{danieratik}},%
+  fromdutch        = {{nederlanderatik}{nederlanderatik}},%
+  fromenglish      = {{ingelesetik}{ingelesetik}},%
+  fromestonian     = {{estonieratik}{estonieratik}},%
+  fromfinnish      = {{finlandieratik}{finlandieratik}},%
+  fromfrench       = {{frantsesetik}{frantsesetik}},%
+  fromgalician     = {{galizieratik}{galizieratik}},%
+  fromgerman       = {{alemanetik}{alemanetik}},%
+  fromgreek        = {{grezieratik}{grezieratik}},%
+  fromhungarian    = {{hungarieratik}{hungarieratik}},%
+  fromitalian      = {{italieratik}{italieratik}},%
+  fromjapanese     = {{japonieratik}{japonieratik}},%
+  fromlatin        = {{latinetik}{latinetik}},%
+  fromlatvian      = {{lituanieratik}{lituanieratik}},%
+  fromnorwegian    = {{norvegieratik}{norvegieratik}},%
+  frompolish       = {{polonieratik}{polonieratik}},%
+  fromportuguese   = {{portugesetik}{portugesetik}},%
+  fromrussian      = {{errusieratik}{errusieratik}},%
+  fromslovak       = {{eslovakieratik}{eslovakieratik}},%
+  fromslovene      = {{eslovenieratik}{eslovenieratik}},%
+  fromspanish      = {{gazteleratik}{gazteleratik}},%
+  fromswedish      = {{suedieratik}{suedieratik}},%
+  fromukrainian    = {{ukraineratik}{ukraineratik}},%
+  countryde        = {{Alemania}{DE}},%
+  countryeu        = {{Europar Batasuna}{EU}},%
+  countryep        = {{Europar Batasuna}{EP}},%
+  countryfr        = {{Frantzia}{FR}},%
+  countryuk        = {{Britainia Handia}{GB}},%
+  countryus        = {{Ameriketako Estatu Batuak}{US}},%
+  patent           = {{patentea}{pat\adddot}},%
+  patentde         = {{patente alemana}{pat\adddotspace alemana}},%
+  patenteu         = {{patente europarra}{pat\adddotspace europarra}},%
+  patentfr         = {{patente frantsesa}{pat\adddotspace frantsesa}},%
+  patentuk         = {{patente britainiarra}{pat\adddotspace britainiarra}},%
+  patentus         = {{patente estatubatuarra}{pat\adddotspace estatubatuarra}},%
+  patreq           = {{patente eskakizuna}{pat\adddotspace esk\adddot}},%
+  patreqde         = {{patente alemanaaren eskakizuna}{pat\adddotspace alem\adddotspace esk\adddot}},%
+  patreqeu         = {{patente europarraren eskakizuna}{pat\adddotspace europ\adddotspace esk\adddot}},%
+  patreqfr         = {{patente frantsesaren eskakizuna}{pat\adddotspace frants\adddotspace esk\adddot}},%
+  patrequk         = {{patente britainiarraren eskakizuna}{pat\adddotspace brit\adddotspace esk\adddot}},%
+  patrequs         = {{patente estatubatuarraren eskakizuna}{pat\adddotspace estat\adddotspace esk\adddot}},%
+  file             = {{fitxategia}{fitxategia}},%
+  library          = {{biblioteka}{bibl\adddot}},%
+  abstract         = {{laburpena}{laburpena}},%
+  annotation       = {{oharra}{oh\adddot}},%
+  commonera        = {{oraingo aroa}{o\adddotspace a\adddot}},%
+  beforecommonera  = {{oraingo aroaren aurretik}{o\adddotspace a\adddotspace a\adddot}},%
+  annodomini       = {{Kristo ondoren}{K\adddotspace o\adddot}},%
+  beforechrist     = {{Kristo aurretik}{K\adddotspace a\adddot}},%
+  circa            = {{circa}{ca\adddot}},%
+  spring           = {{udaberria}{udab\adddot}},%
+  summer           = {{uda}{uda}},%
+  autumn           = {{udazkena}{udaz\adddot}},%
+  winter           = {{negua}{neg\adddot}},%
+  am               = {{a\adddotspace m\adddot}{a\adddot m\adddot}},%
+  pm               = {{p\adddotspace m\adddot}{p\adddot m\adddot}},%
+}
+
+\endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/catalan.lbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -274,90 +274,90 @@
   organizers       = {{organitzadors}{org\adddot}},
   byorganizer      = {{organitzat per}{org\adddotspace per}},
   byauthor         = {{per}{per}},
-  byeditor         = {{edici\'o a cura \smartof}{ed\adddotspace\smartof}},
-  bycompiler       = {{compilaci\'o a cura \smartof}{comp\adddotspace\smartof}},
-  byredactor       = {{redacci\'o a cura \smartof}{red\adddotspace\smartof}},
-  byreviser        = {{revisi\'o a cura \smartof}{rev\adddotspace\smartof}},
-  byreviewer       = {{ressenya a cura \smartof}{ress\adddotspace\smartof}},
+  byeditor         = {{edici\'o a cura\smartof}{ed\adddot\smartof}},
+  bycompiler       = {{compilaci\'o a cura\smartof}{comp\adddot\smartof}},
+  byredactor       = {{redacci\'o a cura\smartof}{red\adddot\smartof}},
+  byreviser        = {{revisi\'o a cura\smartof}{rev\adddot\smartof}},
+  byreviewer       = {{ressenya a cura\smartof}{ress\adddot\smartof}},
   byfounder        = {{fundat per}{fund\adddotspace per}},
   bycontinuator    = {{continuat per}{cont\adddotspace per}},
-  bycollaborator   = {{amb la co\l.laboraci\'o \smartof}{amb la co\l.l\adddotspace\smartof}},
-  bytranslator     = {{traducci\'o \lbx at fromlang\ a cura \smartof}{trad\adddotspace\lbx at fromlang\ \smartof}},
-  bycommentator    = {{comentari a cura \smartof}{com\adddotspace\smartof}},
-  byannotator      = {{notes a cura \smartof}{n\adddotspace\smartof}},
-  withcommentator  = {{amb un comentari a cura \smartof}{amb un com\adddotspace\smartof}},
-  withannotator    = {{amb notes a cura \smartof}{amb n\adddotspace\smartof}},
-  withintroduction = {{amb una introducci\'o a cura \smartof}{amb una intr\adddotspace\smartof}},
-  withforeword     = {{amb un pr\`oleg a cura \smartof}{amb un pr\`ol\adddotspace\smartof}},
-  withafterword    = {{amb un ep\'{\i}leg a cura \smartof}{amb un ep\adddotspace\smartof}},
-  byeditortr       = {{edici\'o i traducci\'o \lbx at fromlang\ a cura \smartof}%
-                      {ed\adddotspace i trad\adddotspace\lbx at fromlang\ \smartof}},
-  byeditorco       = {{edici\'o i comentari a cura \smartof}%
-                      {ed\adddotspace i com\adddotspace\smartof}},
-  byeditoran       = {{edici\'o i notes a cura \smartof}%
-                      {ed\adddotspace i n\adddotspace\smartof}},
-  byeditorin       = {{edici\'o i introducci\'o a cura \smartof}%
-                      {ed\adddotspace i intr\adddotspace\smartof}},
-  byeditorfo       = {{edici\'o i pr\`oleg a cura \smartof}%
-                      {ed\adddotspace i pr\`ol\adddotspace\smartof}},
-  byeditoraf       = {{edici\'o i ep\'{\i}leg a cura \smartof}%
-                      {ed\adddotspace i ep\adddotspace\smartof}},
-  byeditortrco     = {{edici\'o, traducci\'o \lbx at fromlang\ i comentari a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i com\adddotspace\smartof}},
-  byeditortran     = {{edici\'o, traducci\'o \lbx at fromlang\ i notes a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i n\adddotspace\smartof}},
-  byeditortrin     = {{edici\'o, traducci\'o \lbx at fromlang\ i introducci\'o a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i intr\adddotspace\smartof}},
-  byeditortrfo     = {{edici\'o, traducci\'o \lbx at fromlang\ i pr\`oleg a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i pr\`ol\adddotspace\smartof}},
-  byeditortraf     = {{edici\'o, traducci\'o \lbx at fromlang\ i ep\'{\i}leg a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i ep\adddotspace\smartof}},
-  byeditorcoin     = {{edici\'o, comentari i introducci\'o a cura \smartof}
-                      {ed.,\addabbrvspace com\adddotspace i intr\adddotspace\smartof}},
-  byeditorcofo     = {{edici\'o, comentari i pr\`oleg a cura \smartof}
-                      {ed.,\addabbrvspace com\adddotspace i pr\`ol\adddotspace\smartof}},
-  byeditorcoaf     = {{edici\'o, comentari i ep\'{\i}leg a cura \smartof}%
-                      {ed.,\addabbrvspace com\adddotspace i ep\adddotspace\smartof}},
-  byeditoranin     = {{edici\'o, notes i introducci\'o a cura \smartof}%
-                      {ed.,\addabbrvspace n\adddotspace i intr\adddotspace\smartof}},
-  byeditoranfo     = {{edici\'o, notes i pr\`oleg a cura \smartof}%
-                      {ed.,\addabbrvspace n\adddotspace i pr\`ol\adddotspace\smartof}},
-  byeditoranaf     = {{edici\'o, notes i ep\'{\i}leg a cura \smartof}%
-                      {ed.,\addabbrvspace n\adddotspace i ep\adddotspace\smartof}},
-  byeditortrcoin   = {{edici\'o, traducci\'o \lbx at fromlang, comentari i introducci\'o a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace \lbx at fromlang, com\adddotspace i intr\adddotspace\smartof}},
-  byeditortrcofo   = {{edici\'o, traducci\'o \lbx at fromlang, comentari i pr\`oleg a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddotspace \lbx at fromlang, com\adddotspace i pr\`ol\adddotspace\smartof}},
-  byeditortrcoaf   = {{edici\'o, traducci\'o \lbx at fromlang, comentari i ep\'{\i}leg a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, com\adddot\ i ep\adddot\ \smartof}},
-  byeditortranin   = {{edici\'o, traducci\'o \lbx at fromlang, notes i introducci\'o a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, n\adddot\ i intr\adddot\ \smartof}},
-  byeditortranfo   = {{edici\'o, traducci\'o \lbx at fromlang, notes i pr\`oleg a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}},
-  byeditortranaf   = {{edici\'o, traducci\'o \lbx at fromlang, notes i ep\'{\i}leg a cura \smartof}%
-                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, n\adddot\ i ep\adddot\ \smartof}},
-  bytranslatorco   = {{traducci\'o \lbx at fromlang\ i comentari a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang\ i com\adddot\ \smartof}},
-  bytranslatoran   = {{traducci\'o \lbx at fromlang\ i notes a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang\ i n\adddot\ \smartof}},
-  bytranslatorin   = {{traducci\'o \lbx at fromlang\ i introducci\'o a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang\ i intr\adddot\ \smartof}},
-  bytranslatorfo   = {{traducci\'o \lbx at fromlang\ i pr\`oleg a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang\ i pr\`ol\adddot\ \smartof}},
-  bytranslatoraf   = {{traducci\'o \lbx at fromlang\ i ep\'{\i}leg a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang\ i ep\adddot\ \smartof}},
-  bytranslatorcoin = {{traducci\'o \lbx at fromlang, comentari i introducci\'o a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang, com\adddot\ i intr\adddot\ \smartof}},
-  bytranslatorcofo = {{traducci\'o \lbx at fromlang, comentari i pr\`oleg a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang, com\adddot\ i pr\`ol\adddot\ \smartof}},
-  bytranslatorcoaf = {{traducci\'o \lbx at fromlang, comentari i ep\'{\i}leg a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang, com\adddot\ i ep\adddot\ \smartof}},
-  bytranslatoranin = {{traducci\'o \lbx at fromlang, notes i introducci\'o a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang, n\adddot\ i intr\adddot\ \smartof}},
-  bytranslatoranfo = {{traducci\'o \lbx at fromlang, notes i pr\`oleg a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}},
-  bytranslatoranaf = {{traducci\'o \lbx at fromlang, notes i ep\'{\i}leg a cura \smartof}%
-                      {trad\adddot\ \lbx at fromlang, n\adddot\ i ep\adddot\ \smartof}},
+  bycollaborator   = {{amb la co\l.laboraci\'o\smartof}{amb la co\l.l\adddot\smartof}},
+  bytranslator     = {{traducci\'o \lbx at fromlang\ a cura\smartof}{trad\adddotspace\lbx at fromlang\smartof}},
+  bycommentator    = {{comentari a cura\smartof}{com\adddot\smartof}},
+  byannotator      = {{notes a cura\smartof}{n\adddot\smartof}},
+  withcommentator  = {{amb un comentari a cura\smartof}{amb un com\adddot\smartof}},
+  withannotator    = {{amb notes a cura\smartof}{amb n\adddot\smartof}},
+  withintroduction = {{amb una introducci\'o a cura\smartof}{amb una intr\adddot\smartof}},
+  withforeword     = {{amb un pr\`oleg a cura\smartof}{amb un pr\`ol\adddot\smartof}},
+  withafterword    = {{amb un ep\'{\i}leg a cura\smartof}{amb un ep\adddot\smartof}},
+  byeditortr       = {{edici\'o i traducci\'o \lbx at fromlang\ a cura\smartof}%
+                      {ed\adddotspace i trad\adddotspace\lbx at fromlang\smartof}},
+  byeditorco       = {{edici\'o i comentari a cura\smartof}%
+                      {ed\adddotspace i com\adddot\smartof}},
+  byeditoran       = {{edici\'o i notes a cura\smartof}%
+                      {ed\adddotspace i n\adddot\smartof}},
+  byeditorin       = {{edici\'o i introducci\'o a cura\smartof}%
+                      {ed\adddotspace i intr\adddot\smartof}},
+  byeditorfo       = {{edici\'o i pr\`oleg a cura\smartof}%
+                      {ed\adddotspace i pr\`ol\adddot\smartof}},
+  byeditoraf       = {{edici\'o i ep\'{\i}leg a cura\smartof}%
+                      {ed\adddotspace i ep\adddot\smartof}},
+  byeditortrco     = {{edici\'o, traducci\'o \lbx at fromlang\ i comentari a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i com\adddot\smartof}},
+  byeditortran     = {{edici\'o, traducci\'o \lbx at fromlang\ i notes a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i n\adddot\smartof}},
+  byeditortrin     = {{edici\'o, traducci\'o \lbx at fromlang\ i introducci\'o a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i intr\adddot\smartof}},
+  byeditortrfo     = {{edici\'o, traducci\'o \lbx at fromlang\ i pr\`oleg a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i pr\`ol\adddot\smartof}},
+  byeditortraf     = {{edici\'o, traducci\'o \lbx at fromlang\ i ep\'{\i}leg a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace\lbx at fromlang\ i ep\adddot\smartof}},
+  byeditorcoin     = {{edici\'o, comentari i introducci\'o a cura\smartof}
+                      {ed.,\addabbrvspace com\adddotspace i intr\adddot\smartof}},
+  byeditorcofo     = {{edici\'o, comentari i pr\`oleg a cura\smartof}
+                      {ed.,\addabbrvspace com\adddotspace i pr\`ol\adddot\smartof}},
+  byeditorcoaf     = {{edici\'o, comentari i ep\'{\i}leg a cura\smartof}%
+                      {ed.,\addabbrvspace com\adddotspace i ep\adddot\smartof}},
+  byeditoranin     = {{edici\'o, notes i introducci\'o a cura\smartof}%
+                      {ed.,\addabbrvspace n\adddotspace i intr\adddot\smartof}},
+  byeditoranfo     = {{edici\'o, notes i pr\`oleg a cura\smartof}%
+                      {ed.,\addabbrvspace n\adddotspace i pr\`ol\adddot\smartof}},
+  byeditoranaf     = {{edici\'o, notes i ep\'{\i}leg a cura\smartof}%
+                      {ed.,\addabbrvspace n\adddotspace i ep\adddot\smartof}},
+  byeditortrcoin   = {{edici\'o, traducci\'o \lbx at fromlang, comentari i introducci\'o a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace \lbx at fromlang, com\adddotspace i intr\adddot\smartof}},
+  byeditortrcofo   = {{edici\'o, traducci\'o \lbx at fromlang, comentari i pr\`oleg a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddotspace \lbx at fromlang, com\adddotspace i pr\`ol\adddot\smartof}},
+  byeditortrcoaf   = {{edici\'o, traducci\'o \lbx at fromlang, comentari i ep\'{\i}leg a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, com\adddot\ i ep\adddot\smartof}},
+  byeditortranin   = {{edici\'o, traducci\'o \lbx at fromlang, notes i introducci\'o a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, n\adddot\ i intr\adddot\smartof}},
+  byeditortranfo   = {{edici\'o, traducci\'o \lbx at fromlang, notes i pr\`oleg a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, n\adddot\ i pr\`ol\adddot\smartof}},
+  byeditortranaf   = {{edici\'o, traducci\'o \lbx at fromlang, notes i ep\'{\i}leg a cura\smartof}%
+                      {ed.,\addabbrvspace trad\adddot\ \lbx at fromlang, n\adddot\ i ep\adddot\smartof}},
+  bytranslatorco   = {{traducci\'o \lbx at fromlang\ i comentari a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang\ i com\adddot\smartof}},
+  bytranslatoran   = {{traducci\'o \lbx at fromlang\ i notes a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang\ i n\adddot\smartof}},
+  bytranslatorin   = {{traducci\'o \lbx at fromlang\ i introducci\'o a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang\ i intr\adddot\smartof}},
+  bytranslatorfo   = {{traducci\'o \lbx at fromlang\ i pr\`oleg a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang\ i pr\`ol\adddot\smartof}},
+  bytranslatoraf   = {{traducci\'o \lbx at fromlang\ i ep\'{\i}leg a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang\ i ep\adddot\smartof}},
+  bytranslatorcoin = {{traducci\'o \lbx at fromlang, comentari i introducci\'o a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang, com\adddot\ i intr\adddot\smartof}},
+  bytranslatorcofo = {{traducci\'o \lbx at fromlang, comentari i pr\`oleg a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang, com\adddot\ i pr\`ol\adddot\smartof}},
+  bytranslatorcoaf = {{traducci\'o \lbx at fromlang, comentari i ep\'{\i}leg a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang, com\adddot\ i ep\adddot\smartof}},
+  bytranslatoranin = {{traducci\'o \lbx at fromlang, notes i introducci\'o a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang, n\adddot\ i intr\adddot\smartof}},
+  bytranslatoranfo = {{traducci\'o \lbx at fromlang, notes i pr\`oleg a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang, n\adddot\ i pr\`ol\adddot\smartof}},
+  bytranslatoranaf = {{traducci\'o \lbx at fromlang, notes i ep\'{\i}leg a cura\smartof}%
+                      {trad\adddot\ \lbx at fromlang, n\adddot\ i ep\adddot\smartof}},
   and              = {{i}{i}},
   andothers        = {{et al\adddot}{et al\adddot}},
   andmore          = {{i m\'es}{i m\'es}},
@@ -373,11 +373,11 @@
   oldseries        = {{s\`erie antiga}{s\`erie ant\adddot}},
   edition          = {{edici\'o}{ed\adddot}},
   reprint          = {{reimpressi\'o}{reimpr\adddot}},
-  reprintof        = {{reimpressi\'o \smartof}{reimpr\adddotspace\smartof}},
+  reprintof        = {{reimpressi\'o\smartof}{reimpr\adddot\smartof}},
   reprintas        = {{reimpr\`es com}{reimpr\adddotspace com}},
-  reprintfrom      = {{reimpr\`es \smartof}{reimpr\adddotspace\smartof}},
-  reviewof         = {{ressenya \smartof}{ress\adddotspace\smartof}},
-  translationof    = {{traducci\'o \smartof}{trad\adddotspace\smartof}},
+  reprintfrom      = {{reimpr\`es\smartof}{reimpr\adddot\smartof}},
+  reviewof         = {{ressenya\smartof}{ress\adddot\smartof}},
+  translationof    = {{traducci\'o\smartof}{trad\adddot\smartof}},
   translationas    = {{tradu\"{\i}t com}{trad\adddotspace com}},
   translationfrom  = {{tradu\"{\i}t del}{trad\adddotspace del}}, % Unsure of 'del'
   origpubas        = {{publicat origin\`ariament com}{pub\adddotspace orig\adddotspace com}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -470,6 +470,7 @@
   november         = {{November}{Nov\adddot}},
   december         = {{December}{Dec\adddot}},
   langamerican     = {{American}{American}},
+  langbasque       = {{Basque}{Basque}},
   langbrazilian    = {{Brazilian}{Brazilian}},
   langbulgarian    = {{Bulgarian}{Bulgarian}},
   langcatalan      = {{Catalan}{Catalan}},
@@ -502,6 +503,7 @@
   langturkish      = {{Turkish}{Turkish}},
   langukrainian    = {{Ukrainian}{Ukrainian}},
   fromamerican     = {{from the American}{from the American}},
+  frombasque       = {{from the Basque}{from the Basque}},
   frombrazilian    = {{from the Brazilian}{from the Brazilian}},
   frombulgarian    = {{from the Bulgarian}{from the Bulgarian}},
   fromcatalan      = {{from the Catalan}{from the Catalan}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/french.lbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -276,7 +276,7 @@
   organizers       = {{organisateurs}{org\adddot}},%
   byorganizer      = {{organis\'e par}{org\adddotspace par}},%
   byauthor         = {{par}{par}},
-  byeditor         = {{sous la direction \smartof}{sous la dir\adddotspace\smartof}},
+  byeditor         = {{sous la direction\smartof}{sous la dir\adddot\smartof}},
   bycompiler       = {{compil\'e par}{comp\adddotspace par}},
   byredactor       = {{r\'edig\'e par}{r\'ed\adddotspace par}},
   byreviser        = {{r\'evis\'e par}{r\'ev\adddotspace par}},
@@ -283,16 +283,16 @@
   byreviewer       = {{examin\'e par}{ex\adddotspace par}},
   byfounder        = {{d\'ecouvert par}{d\'ecouv\adddotspace par}},
   bycontinuator    = {{continu\'e par}{cont\adddotspace par}},
-  bycollaborator   = {{avec la collaboration \smartof}{avec la
-      coll\adddotspace\smartof}},
+  bycollaborator   = {{avec la collaboration\smartof}{avec la
+      coll\adddot\smartof}},
   bytranslator     = {{traduit \lbx at lfromlang\ par}{trad\adddotspace \lbx at sfromlang\ par}},
   bycommentator    = {{comment\'e par}{comm\adddotspace par}},
   byannotator      = {{annot\'e par}{annot\adddotspace par}},
-  withcommentator  = {{avec des commentaires \smartof}{avec des comment\adddotspace\smartof}},
-  withannotator    = {{avec des annotations \smartof}{avec des annot\adddotspace\smartof}},
-  withintroduction = {{avec une introduction \smartof}{avec une introd\adddotspace\smartof}},
-  withforeword     = {{avec une pr\'eface \smartof}{avec une pr\'ef\adddotspace\smartof}},
-  withafterword    = {{avec une postface \smartof}{avec une postf\adddotspace\smartof}},
+  withcommentator  = {{avec des commentaires\smartof}{avec des comment\adddot\smartof}},
+  withannotator    = {{avec des annotations\smartof}{avec des annot\adddot\smartof}},
+  withintroduction = {{avec une introduction\smartof}{avec une introd\adddot\smartof}},
+  withforeword     = {{avec une pr\'eface\smartof}{avec une pr\'ef\adddot\smartof}},
+  withafterword    = {{avec une postface\smartof}{avec une postf\adddot\smartof}},
   byeditortr       = {{\'edition \'etablie et traduite \lbx at lfromlang\ par}%
                       {\'ed\adddotspace \'etablie et trad\adddotspace \lbx at sfromlang\ par}},
   byeditorco       = {{\'edition \'etablie et comment\'ee par}%
@@ -378,7 +378,7 @@
   reprint          = {{r\'eimpression}{r\'eimpr\adddot}},
   reprintof        = {{r\'eimpression de}{r\'eimpr\adddotspace de}},
   reprintas        = {{r\'eimpression sous le titre}{r\'eimpr\adddotspace sous le titre}},
-  reprintfrom      = {{r\'eimpression \`a partir \smartof}{r\'eimpr\adddotspace \`a part\adddotspace\smartof}},
+  reprintfrom      = {{r\'eimpression \`a partir\smartof}{r\'eimpr\adddotspace \`a part\adddot\smartof}},
   translationof    = {{traduction de}{trad\adddotspace de}},
   translationas    = {{traduit sous le titre}{trad\adddotspace sous le titre}},
   translationfrom  = {{traduit de}{trad\adddotspace de}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx	2020-12-31 21:49:16 UTC (rev 57271)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/german.lbx	2020-12-31 21:50:01 UTC (rev 57272)
@@ -455,6 +455,7 @@
   november         = {{November}{Nov\adddot}},
   december         = {{Dezember}{Dez\adddot}},
   langamerican     = {{Amerikanisch}{Amerikanisch}},
+  langbasque       = {{Baskisch}{Baskisch}},
   langbrazilian    = {{Brasilianisch}{Brasilianisch}},
   langbulgarian    = {{Bulgarisch}{Bulgarisch}},
   langcatalan      = {{Katalanisch}{Katalanisch}},
@@ -487,6 +488,7 @@
   langturkish      = {{T\"urkisch}{T\"urkisch}},
   langukrainian    = {{Ukrainisch}{Ukrainisch}},
   fromamerican     = {{aus dem Amerikanischen}{aus dem Amerikanischen}},
+  frombasque       = {{aus dem Baskischen}{aus dem Baskischen}},
   frombrazilian    = {{aus dem Brasilianischen}{aus dem Brasilianischen}},
   frombulgarian    = {{aus dem Bulgarischen}{aus dem Bulgarischen}},
   fromcatalan      = {{aus dem Katalanischen}{aus dem Katalanischen}},



More information about the tex-live-commits mailing list.