summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-01-01 03:04:10 +0000
committerNorbert Preining <norbert@preining.info>2021-01-01 03:04:10 +0000
commit6c6a334f0aa3b95572afe30fa2d17e634c7019ce (patch)
treec544085b81c972031bc7bafb88c32b9f3d3750d6 /macros/latex/contrib/biblatex
parent80e0ab3c814b0dfd8ff304620dccbdea877f93ba (diff)
CTAN sync 202101010304
Diffstat (limited to 'macros/latex/contrib/biblatex')
-rw-r--r--macros/latex/contrib/biblatex/CHANGES.md26
-rw-r--r--macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst2
-rw-r--r--macros/latex/contrib/biblatex/doc/biblatex.pdfbin1588759 -> 1598244 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/biblatex.tex128
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdfbin246343 -> 246067 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdfbin245414 -> 245466 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex2
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdfbin156536 -> 156540 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.tex53
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdfbin156527 -> 156540 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.tex40
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdfbin157502 -> 157616 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.tex44
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/82-style-debug-biber.pdfbin150179 -> 149679 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/93-nameparts-biber.pdfbin37768 -> 39823 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex19
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/96-dates.tex3
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/97-annotations.tex3
-rw-r--r--macros/latex/contrib/biblatex/latex/bbx/draft.bbx4
-rw-r--r--macros/latex/contrib/biblatex/latex/bbx/numeric.bbx4
-rw-r--r--macros/latex/contrib/biblatex/latex/bbx/reading.bbx4
-rw-r--r--macros/latex/contrib/biblatex/latex/bbx/standard.bbx6
-rw-r--r--macros/latex/contrib/biblatex/latex/biblatex.def49
-rw-r--r--macros/latex/contrib/biblatex/latex/biblatex.sty398
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-bibtex.def10
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-case-expl3.sty (renamed from macros/latex/contrib/biblatex/latex/blx-case-expl3.def)34
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-case-latex2e.sty (renamed from macros/latex/contrib/biblatex/latex/blx-case-latex2e.def)44
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-compat.def4
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-dm.def10
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-unicode.def14
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/basque.lbx480
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/catalan.lbx172
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/english.lbx2
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/french.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/german.lbx2
35 files changed, 1160 insertions, 415 deletions
diff --git a/macros/latex/contrib/biblatex/CHANGES.md b/macros/latex/contrib/biblatex/CHANGES.md
index 5de6bc5994..7a035b5a3e 100644
--- a/macros/latex/contrib/biblatex/CHANGES.md
+++ b/macros/latex/contrib/biblatex/CHANGES.md
@@ -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.
diff --git a/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst
index dc1837f941..8e5103a458 100644
--- a/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst
+++ b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst
@@ -184,7 +184,7 @@ STRINGS { ctrl.alphaothers ctrl.sortalphaothers ctrl.sortstr
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$
diff --git a/macros/latex/contrib/biblatex/doc/biblatex.pdf b/macros/latex/contrib/biblatex/doc/biblatex.pdf
index c50f7bb304..3944dda3ff 100644
--- a/macros/latex/contrib/biblatex/doc/biblatex.pdf
+++ b/macros/latex/contrib/biblatex/doc/biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/biblatex.tex b/macros/latex/contrib/biblatex/doc/biblatex.tex
index 87e406158a..618c5ac60f 100644
--- a/macros/latex/contrib/biblatex/doc/biblatex.tex
+++ b/macros/latex/contrib/biblatex/doc/biblatex.tex
@@ -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 @@ Boruvka and Joseph Wright who helped with the transition of ownership in
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 @@ The gender of the author or the gender of the editor, if there is no author. The
\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 @@ Loads a citation module which provides \sty{mcite}\slash\sty{mciteplus}-like cit
\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 @@ Whether the default data model name part <prefix> (von, van, of, da, de, della,
\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 @@ This style prints all bibliographic data in tabular format. It is intended for d
\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 @@ The format of annotation fields in \bibtex data sources is is as follows:
<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 @@ Adds a \prm{resource}, such as a \file{.bib} file, to the default resource list.
\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 @@ The bibliography and the list of shorthands typically have a chapter or section
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 @@ This command loops over all bibliography categories. This is equivalent to givin
\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 @@ At the beginning of the document, there is always a global context containing gl
\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 assignment 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 starred versions do not override a local refcontext and so with:
%
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 @@ Similar to \cmd{psq} but indicates an open-ended page range. See \secref{use:cav
\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 @@ Names depend on the datamodel constant <nameparts> which has the default definit
{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 @@ or just a name list by using the option as a pseudo-name which will be ignored:
\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 @@ The pagination strings are taken from \texttt{$<$pagination$>$total} and \texttt
\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 @@ The second optional argument \prm{itempostpro} is used to post-process each indi
\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,9 +11447,13 @@ Similar to \cmd{bibxstring} but always uses the long string, ignoring the \opt{a
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 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.
-Switches from the current language to the main document language. This can be used the \prm{wrapper} argument in the localisation string commands above.
+\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}
@@ -11944,6 +12034,7 @@ Other expressions frequently used in citations:
\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 @@ The following strings are intended for use in phrases like <translated from [the
\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 @@ use$<$name$>$ &\+&\+&\_&\+&\+&\_&\_\\
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}
diff --git a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
index 6b221f760d..141a79e6a7 100644
--- a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
index 2d5254f846..b10bb33409 100644
--- a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex
index 84f46d5a6c..445c000498 100644
--- a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex
@@ -584,6 +584,7 @@ Other expressions frequently used in citations:
\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 @@ The following strings are intended for use in phrases like <translated from [the
\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>.
diff --git a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf
index 127d8ca0d7..64db9af5a6 100644
--- a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.tex b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.tex
deleted file mode 100644
index 2ba9fa7417..0000000000
--- a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.tex
+++ /dev/null
@@ -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}
diff --git a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf
index 5c29ad4479..1660f1fa12 100644
--- a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.tex b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.tex
deleted file mode 100644
index c0952bab42..0000000000
--- a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.tex
+++ /dev/null
@@ -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}
diff --git a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf
index 12ee886cf2..fd02d3ee77 100644
--- a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.tex b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.tex
deleted file mode 100644
index 31cac5de0b..0000000000
--- a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.tex
+++ /dev/null
@@ -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}
diff --git a/macros/latex/contrib/biblatex/doc/examples/82-style-debug-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/82-style-debug-biber.pdf
index eb9d127563..d737632db1 100644
--- a/macros/latex/contrib/biblatex/doc/examples/82-style-debug-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/82-style-debug-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/93-nameparts-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/93-nameparts-biber.pdf
index 3b422be09e..e9368e5e45 100644
--- a/macros/latex/contrib/biblatex/doc/examples/93-nameparts-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/93-nameparts-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex b/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex
index 71b6a5b219..44115b6acd 100644
--- a/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex
@@ -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},
}
-@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}
diff --git a/macros/latex/contrib/biblatex/doc/examples/96-dates.tex b/macros/latex/contrib/biblatex/doc/examples/96-dates.tex
index e4e1863934..d1e88e2f53 100644
--- a/macros/latex/contrib/biblatex/doc/examples/96-dates.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/96-dates.tex
@@ -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},
diff --git a/macros/latex/contrib/biblatex/doc/examples/97-annotations.tex b/macros/latex/contrib/biblatex/doc/examples/97-annotations.tex
index 03be50f142..a756b7ce00 100644
--- a/macros/latex/contrib/biblatex/doc/examples/97-annotations.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/97-annotations.tex
@@ -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},
diff --git a/macros/latex/contrib/biblatex/latex/bbx/draft.bbx b/macros/latex/contrib/biblatex/latex/bbx/draft.bbx
index 1c57325157..0896a6d963 100644
--- a/macros/latex/contrib/biblatex/latex/bbx/draft.bbx
+++ b/macros/latex/contrib/biblatex/latex/bbx/draft.bbx
@@ -8,6 +8,10 @@
\DeclareNameAlias{editor}{default}
\DeclareNameAlias{translator}{default}
+\DeclareNameWrapperAlias{author}{default}
+\DeclareNameWrapperAlias{editor}{default}
+\DeclareNameWrapperAlias{translator}{default}
+
\DeclareFieldFormat{shorthandwidth}{#1}
\defbibenvironment{bibliography}
diff --git a/macros/latex/contrib/biblatex/latex/bbx/numeric.bbx b/macros/latex/contrib/biblatex/latex/bbx/numeric.bbx
index 4bf46c3ff8..909b806fd1 100644
--- a/macros/latex/contrib/biblatex/latex/bbx/numeric.bbx
+++ b/macros/latex/contrib/biblatex/latex/bbx/numeric.bbx
@@ -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}}
diff --git a/macros/latex/contrib/biblatex/latex/bbx/reading.bbx b/macros/latex/contrib/biblatex/latex/bbx/reading.bbx
index 547510c37d..3eb35c3909 100644
--- a/macros/latex/contrib/biblatex/latex/bbx/reading.bbx
+++ b/macros/latex/contrib/biblatex/latex/bbx/reading.bbx
@@ -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}
diff --git a/macros/latex/contrib/biblatex/latex/bbx/standard.bbx b/macros/latex/contrib/biblatex/latex/bbx/standard.bbx
index 810c8584c9..f53eb722d5 100644
--- a/macros/latex/contrib/biblatex/latex/bbx/standard.bbx
+++ b/macros/latex/contrib/biblatex/latex/bbx/standard.bbx
@@ -983,14 +983,14 @@
test {\ifbibxstring{\thefield{relatedtype}s}}
}
{\printtext[\bbx@tempb]{%
- \bibstring[\mkrelatedstring]{\thefield{relatedtype}s}}}
+ \bibstring[\mkrelatedstringtext]{\thefield{relatedtype}s}}}
{\iffieldbibstring{relatedtype}
{\printtext[\bbx@tempb]{%
- \bibstring[\mkrelatedstring]{\thefield{relatedtype}}}}
+ \bibstring[\mkrelatedstringtext]{\thefield{relatedtype}}}}
{}}}
{\iffieldbibstring{relatedstring}
{\printtext[\bbx@tempb]{%
- \bibstring[\mkrelatedstring]{\thefield{relatedstring}}}}
+ \bibstring[\mkrelatedstringtext]{\thefield{relatedstring}}}}
{\printfield[\bbx@tempb]{relatedstring}}}%
\docsvfield{related}%
\usebibmacro{endrelatedloop}}}%
diff --git a/macros/latex/contrib/biblatex/latex/biblatex.def b/macros/latex/contrib/biblatex/latex/biblatex.def
index 10f4144dab..c4ac8d0169 100644
--- a/macros/latex/contrib/biblatex/latex/biblatex.def
+++ b/macros/latex/contrib/biblatex/latex/biblatex.def
@@ -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@initnamehook{#1}%
- \endgroup}
+ {\mkrelatedstringtext{\lbx@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@inittitlehook{#1}%
- \endgroup
+ \mkrelatedstringtext{\lbx@inittitlehook{#1}}%
\mkbibemph{#1}}
\newbibmacro*{related:reprintfrom}[1]{%
diff --git a/macros/latex/contrib/biblatex/latex/biblatex.sty b/macros/latex/contrib/biblatex/latex/biblatex.sty
index 22da31e261..e24c735007 100644
--- a/macros/latex/contrib/biblatex/latex/biblatex.sty
+++ b/macros/latex/contrib/biblatex/latex/biblatex.sty
@@ -12,8 +12,8 @@
% particular purpose.
% Set up the version strings here
-\def\abx@date{2020/08/23}
-\def\abx@version{3.15a}
+\def\abx@date{2020/12/31}
+\def\abx@version{3.16}
\def\abx@bbxid{\abx@date\space v\abx@version\space biblatex bibliography style (PK/MW)}
\def\abx@cbxid{\abx@date\space v\abx@version\space biblatex citation style (PK/MW)}
\def\abx@lbxid{\abx@date\space v\abx@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@t@r\fmtversion}
+\IfFormatAtLeastTF{2020/10/01}
+ {\def\blx@AfterPreamble{\AddToHook{begindocument}[biblatex/afterpreamble]}%
+ \DeclareHookRule{begindocument}{biblatex/afterpreamble}{after}{biblatex}}
+ {\def\blx@AfterPreamble{\AfterPreamble}}
% generalised keyval interface
% define a new key (possibly with a default value)
@@ -509,8 +523,10 @@
{\let\xpg@bloaded\xpg@loaded}}
{}%
\global\let\blx@maplang\blx@maplang@polyglossia
- \def\do#1{\blx@langsetup{#1}}%
+ \def\do#1{\blx@langsetup@from@pkglist{#1}}%
\expandafter\docsvlist\expandafter{\xpg@bloaded}%
+ \def\do#1{\blx@langsetup@from@auxlist{#1}}%
+ \dolistloop\blx@lbx@auxloadlist
\ifboolexpr{
not togl {blx@autolangbib}
and
@@ -521,8 +537,10 @@
{\global\let\blx@maplang\blx@maplang@babel
\@ifpackageloaded{babel}
{% This is required for languages which are never explicitly selected
- \def\do#1{\blx@langsetup{#1}}%
+ \def\do#1{\blx@langsetup@from@pkglist{#1}}%
\expandafter\docsvlist\expandafter{\bbl@loaded}%
+ \def\do#1{\blx@langsetup@from@auxlist{#1}}%
+ \dolistloop\blx@lbx@auxloadlist
\ifboolexpr{
not togl {blx@autolangbib}
and
@@ -545,7 +563,10 @@
% babel/polyglossia has loaded the (main document) language already,
% so we need to explicitly enable our captions (abx@strings@)
% and extras (abx@extras@) now
- \toggletrue{blx@lang@captions@\blx@languagename}%
+ \ifdefstring{\blx@langhook}{captions}
+ {\blx@etb@inittoggle{blx@lang@captions@\blx@languagename}%
+ \toggletrue{blx@lang@captions@\blx@languagename}}
+ {}%
\csuse{abx@extras@\blx@languagename}%
\csuse{abx@strings@\blx@languagename}%
% avoid accidental re-initialization
@@ -637,35 +658,44 @@
in recent versions of pdfTeX, LuaTeX and XeTeX}}
{\let\blx@mdfivesum\pdf@mdfivesum}
+\newtoggle{blx@bbl@rerun@requested}
\ifundef\pdf@filemdfivesum
{\blx@warning@noline{Command '\string\pdf@filemdfivesum' undefined.\MessageBreak
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@generate@bbl@mdfivesum@found\relax
+ \let\blx@generate@bbl@mdfivesum@found\@gobble
\let\blx@generate@bbl@mdfivesum@notfound\relax
- \let\blx@aux@read@bbl@mdfivesum\@gobble
+ \let\abx@aux@read@bblrerun\relax
+ \let\abx@aux@read@bbl@mdfivesum\@gobble
\let\blx@aux@write@bbl@mdfivesum\relax
\let\blx@check@bbl@rerun@mdfivesum\relax}
{\let\blx@filemdfivesum\pdf@filemdfivesum
- \def\blx@generate@bbl@mdfivesum@found{%
- \xdef\blx@bbl@mdfivesum@new{\blx@filemdfivesum{\jobname.bbl}}}
+ \def\blx@generate@bbl@mdfivesum@found#1{%
+ \xdef\blx@bbl@mdfivesum@new{\blx@filemdfivesum{#1}}}
+ % 'nobblfile' can never be equal to any md5 hash
\def\blx@generate@bbl@mdfivesum@notfound{%
\gdef\blx@bbl@mdfivesum@new{nobblfile}}
- \def\blx@aux@read@bbl@mdfivesum{%
+ \def\abx@aux@read@bblrerun{\global\toggletrue{blx@bbl@rerun@requested}}
+
+ \def\abx@aux@read@bbl@mdfivesum{%
\gdef\blx@bbl@mdfivesum@old}
% If we need Biber to rerun, save the hash of the current .bbl.
% That way we can detect if the Biber rerun really happened when
% we run LaTeX the next time.
\def\blx@aux@write@bbl@mdfivesum{%
+ \blx@auxwrite\@mainaux{}{%
+ \string\abx@aux@read@bbl@mdfivesum{%
+ \ifundef\blx@bbl@mdfivesum@old
+ {nohash}
+ {\blx@bbl@mdfivesum@new}}}%
\iftoggle{blx@runbiber}
- {\blx@auxwrite\@mainaux{}{%
- \string\blx@aux@read@bbl@mdfivesum{\blx@bbl@mdfivesum@new}}}
+ {\blx@auxwrite\@mainaux{}{\string\abx@aux@read@bblrerun}}
{}}
% There was a Biber rerun request last time (\blx@bbl@mdfivesum@old),
@@ -673,9 +703,11 @@
% that means *no* Biber rerun happened.
% So we need to re-request a rerun.
\def\blx@check@bbl@rerun@mdfivesum{%
- \ifdefstrequal\blx@bbl@mdfivesum@old\blx@bbl@mdfivesum@new
- {\blx@logreq@active{}}
- {}}}
+ \iftoggle{blx@bbl@rerun@requested}
+ {\ifdefstrequal\blx@bbl@mdfivesum@old\blx@bbl@mdfivesum@new}
+ {\@secondoftwo}
+ {\blx@logreq@active{}}
+ {}}}
% xstring replacements
@@ -923,6 +955,9 @@
\cslet{blx@defaultrefcontexts@0}\@empty
\listadd\blx@allrefsections{0}
+% Used to track defernumbers from .aux
+\global\let\blx@localnumbers\@empty
+
% Used to track sorting name key specifications
\global\let\blx@sortingnamekeytemplates\@empty
@@ -2164,15 +2199,15 @@
\providerobustcmd*{\nohyphenation}{%
\language\blx@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@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@info@noline{... file '#1' found}%
\csuse{blx@lbxfilehook@simple@preload@#1}%
- #3\@@input\@filef@und#4%
+ #3%
+ \@@input\@filef@und
+ #4%
\csuse{blx@lbxfilehook@simple@postload@#1}%
#5%
\ifcsundef{blx@file@lbx@simple@#1}
@@ -5518,7 +5557,9 @@
\IfFileExists{#1}
{\blx@info@noline{... file '#1' found}%
\csuse{blx@lbxfilehook@once@preload@#1}%
- #3\@@input\@filef@und#4%
+ #3%
+ \@@input\@filef@und
+ #4%
\csuse{blx@lbxfilehook@once@postload@#1}%
#5%
\ifcsundef{blx@file@lbx@simple@#1}
@@ -5588,13 +5629,49 @@
\endgroup}
% {<language>}
-\def\blx@langsetup#1{%
+\protected\def\blx@langsetup#1{%
\blx@lbxinput{#1}
{\edef\blx@languagename{#1}}
{\blx@warning
{Language '#1' not supported.\MessageBreak
Using dummy definitions}}}
+\protected\def\blx@langsetup@from@pkglist#1{%
+ \global\cslet{blx@lbx@loaded@from@pkglist@#1}\@empty
+ \blx@langsetup{#1}}
+
+\protected\def\blx@langsetup@from@auxlist#1{%
+ \global\cslet{blx@lbx@loaded@from@auxlist@#1}\@empty
+ \blx@langsetup{#1}}
+
+\newcommand*{\blx@lbx@loadlist}{}
+
+\protected\def\blx@langsetup@indoc#1{%
+ \ifcsundef{blx@lbx@loaded@from@pkglist@#1}
+ {\xifinlist{#1}\blx@lbx@loadlist
+ {}
+ {\listxadd\blx@lbx@loadlist{#1}}%
+ \ifcsundef{blx@lbx@loaded@from@auxlist@#1}
+ {\ifcsundef{blx@lbx@loaded@nolistload@#1}
+ {\blx@warning@noline{%
+ No localisation for language '#1' loaded.\MessageBreak
+ Please rerun LaTeX to ensure languages can\MessageBreak
+ be requested properly}%
+ \global\cslet{blx@lbx@loaded@nolistload@#1}\@empty}
+ {}}
+ {\edef\blx@languagename{#1}}}
+ {\edef\blx@languagename{#1}}%
+}
+
+\newcommand*{\blx@lbx@auxloadlist}{}
+
+\def\abx@aux@lbx@loadrequest{%
+ \listgadd\blx@lbx@auxloadlist}
+
+\protected\def\blx@lbx@writeloaderequest#1{%
+ \blx@auxwrite\@mainaux{}{%
+ \string\abx@aux@lbx@loadrequest{#1}}}
+
% auxiliary macros
% {<field base name>}
@@ -6377,6 +6454,7 @@
\let\blx@hook@endlang\@empty
\let\blx@hook@initlang\@empty
\let\blx@imc@mainlang\@empty
+\let\blx@imc@textmainlang\@firstofone
\def\blx@hyphenreset{%
\blx@ifhyphenationundef{\blx@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@langsetup}{afterreset}{%
- \expandafter\blx@langsetup\expandafter{\languagename}}%
+ \expandafter\blx@langsetup@indoc\expandafter{\languagename}}%
\ifdef\blx@thelangenv
{\def\blx@beglang{%
\blx@clearlang
@@ -6437,8 +6515,20 @@
{}}}
{}%
\def\blx@imc@mainlang{%
+ \ifundef\blx@warn@mainlang
+ {\blx@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@warn@mainlang\@empty}
+ {}%
\expandafter\selectlanguage\expandafter{\blx@main@language}}%
- \expandafter\blx@langsetup\expandafter{\blx@main@language}%
+ \def\blx@imc@textmainlang##1{%
+ {{\expandafter\selectlanguage\expandafter{\blx@main@language}##1}}}%
+ \expandafter\blx@langsetup@from@pkglist\expandafter{\blx@main@language}%
}
\def\blx@beglang@spacefactors{\frenchspacing}
@@ -6453,12 +6543,12 @@
{\let\blx@main@language\mainbabelname}%
\ifundef\polyglossia@language@switched
{\apptocmd\select@language
- {\expandafter\blx@langsetup\expandafter{\babelname}}
+ {\expandafter\blx@langsetup@indoc\expandafter{\babelname}}
{}
{\blx@err@patch{'polyglossia' package}%
\blx@mknoautolang}}
{\appto\polyglossia@language@switched{%
- \expandafter\blx@langsetup\expandafter{\babelname}}}%
+ \expandafter\blx@langsetup@indoc\expandafter{\babelname}}}%
\ifdef\blx@thelangenv
{\def\blx@beglang{%
\blx@clearlang
@@ -6500,15 +6590,27 @@
\blx@beglang@spacefactors}}
{}}}
{}%
- \def\blx@imc@mainlang{\select@language{\blx@main@language}}%
- \expandafter\blx@langsetup\expandafter{\blx@main@language}}
+ \def\blx@imc@mainlang{%
+ \ifundef\blx@warn@mainlang
+ {\blx@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@warn@mainlang\@empty}
+ {}%
+ \select@language{\blx@main@language}}%
+ \def\blx@imc@textmainlang##1{{{\select@language{\blx@main@language}##1}}}%
+ \expandafter\blx@langsetup@from@pkglist\expandafter{\blx@main@language}}
\def\blx@mknoautolang{%
\blx@lbxinput{\blx@languagename}
{}
{\blx@err@nolang{\blx@languagename}}}
-\blx@regimcs{\mainlang}
+\blx@regimcs{\mainlang \textmainlang}
\newrobustcmd*{\DeclareRedundantLanguages}[2]{%
\begingroup
@@ -8302,14 +8404,14 @@
\abx@flfw@getfieldformat{abx@flfw@labelnumberwidth}{labelnumberwidth}{}%
\abx@flfw@getfieldformat{abx@flfw@labelprefix}{labelprefix}{}%
\abx@flfw@getfieldformat{abx@flfw@labelnumber}{labelnumber}{}%
- \iftoggle{blx@defernumbers}
- {\ifundef\abx@field@localnumber
- {\numdef\abx@field@localnumber{0}}%
- {}}
- {\ifundef\abx@field@localnumber
- {\edef\abx@field@localnumber{%
- \csuse{blx@labelnumber@\the\c@refsection}}}
- {}}%
+ \iftoggle{blx@defernumbers}
+ {\ifundef\abx@field@localnumber
+ {\numdef\abx@field@localnumber{0}}%
+ {}}
+ {\ifundef\abx@field@localnumber
+ {\edef\abx@field@localnumber{%
+ \csuse{blx@labelnumber@\the\c@refsection}}}
+ {}}%
\blx@setlabwidth{\csname #1labelnumberwidth\endcsname}{%
\csuse{abx@flfw@labelnumberwidth}{%
\ifdef\abx@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@entries{}{\blx@rerun@latex}}%
+ \dolistloop\blx@localnumbers
% Test to see if we *removed* any citations since last run
% (adding citations is dealt with naturally in \blx@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@cites{}{\blx@logreq@active{}}\relax}%
\dolistloop\blx@lastcites
% Special case - if we are using sortingtemplate with \citeorder anywhere,
@@ -8603,9 +8710,16 @@
{\def\do#1{\blx@auxwrite\@mainaux{}{#1}}
\dolistloop\blx@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@lbx@writeloaderequest}{\blx@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@lbx@auxloadlist}{}{\blx@rerun@latex\listbreak}}%
+ \dolistloop\blx@lbx@loadlist
+ % Write md5 hash of .bbl to .aux if we need a Biber rerun.
% This needs to happen here and not in \blx@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@aux@write@bbl@mdfivesum
\endgroup}
@@ -8614,6 +8728,8 @@
\protected\def\blx@aux@number#1#2#3#4#5{%
\blx@bbl@addentryfield{\detokenize{#2}}{#3}{localnumber}{#4}{#5}%
\blx@bbl@addentryfield{\detokenize{#2}}{#3}{labelnumber}{#4}{#5}%
+ \csgdef{blx@localnumber@#3@\detokenize{#2}}{#5}%
+ \xifinlist{\detokenize{#2}}\blx@localnumbers{}{\listxadd\blx@localnumbers{\detokenize{#2}}}%
\global\toggletrue{blx@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@localnumber}
- and
- not test {\ifcsdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@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@localnumber}
+ or
+ test {\ifinlist{*}\blx@nocites})
+ and
+ not test {\ifcsdef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}} }
{\iftoggle{blx@omitnumbers}
{\let\abx@field@localnumber\@empty}
{\csnumgdef{blx@labelnumber@\the\c@refsection}{%
@@ -8642,7 +8763,17 @@
\edef\abx@field@localnumber{%
\csuse{blx@labelnumber@\the\c@refsection}}%
\blx@bbl@addentryfield{\abx@field@entrykey}{\the\c@refsection}%
- {localnumber}{\blx@refcontext@context}{\abx@field@localnumber}}}
+ {localnumber}{\blx@refcontext@context}{\abx@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@nocites}
+ and
+ not test {\ifcsdef{blx@localnumber@\the\c@refsection @\abx@field@entrykey}} }
+ {\blx@rerun@latex}
{}%
% If localnumbers were already in the .aux, add them
% again from the .aux. This prevents some cycling
@@ -8653,8 +8784,8 @@
\ifcsundef{blx@defer@\the\c@refsection @\blx@refcontext@context @\abx@field@entrykey}
{\ifundef\abx@field@localnumber
{}
- {\listxadd\blx@localnumaux{%
- \string\abx@aux@number%
+ {\listxadd\blx@localnumaux{%
+ \string\abx@aux@number%
{\the\c@instcount}%
{\abx@field@entrykey}%
{\the\c@refsection}%
@@ -8707,10 +8838,9 @@
{\InputIfFileExists{\jobname.bbl}
{\blx@info@noline{... file '\jobname.bbl' found}%
\global\toggletrue{blx@bbldone}%
- \blx@generate@bbl@mdfivesum@found}
+ \blx@generate@bbl@mdfivesum@found{\jobname.bbl}}
{\blx@info@noline{... file '\jobname.bbl' not found}%
\typeout{No file \jobname.bbl.}%
- % 'nobblfile' can never be equal to any mdfivehash
\blx@generate@bbl@mdfivesum@notfound}}
{\blx@generate@bbl@mdfivesum@notfound}%
\blx@bblend
@@ -8848,6 +8978,7 @@
\blx@kv@defkey{blx@bib1}{heading}{}
\blx@kv@defkey{blx@bib1}{env}{}
\blx@kv@defkey{blx@bib1}{title}{}
+\blx@kv@defkey{blx@bib1}{label}{}
\blx@kv@defkey{blx@bib1}{prenote}{}
\blx@kv@defkey{blx@bib1}{postnote}{}
\blx@kv@defkey{blx@bib1}{omitnumbers}[]{}
@@ -8874,6 +9005,7 @@
\blx@kv@defkey{blx@biblist1}{heading}{}
\blx@kv@defkey{blx@biblist1}{env}{}
\blx@kv@defkey{blx@biblist1}{title}{}
+\blx@kv@defkey{blx@biblist1}{label}{}
\blx@kv@defkey{blx@biblist1}{prenote}{}
\blx@kv@defkey{blx@biblist1}{postnote}{}
@@ -9079,6 +9211,10 @@
\blx@kv@defkey{blx@bib2}{title}{\def\blx@thetitle{#1}}
\blx@kv@defkey{blx@biblist2}{title}{\def\blx@thetitle{#1}}
+\blx@kv@defkey{blx@bhd}{label}{\def\blx@thelabel{#1}}
+\blx@kv@defkey{blx@bib2}{label}{\def\blx@thelabel{#1}}
+\blx@kv@defkey{blx@biblist2}{label}{\def\blx@thelabel{#1}}
+
\cslet{blx@note@}\@empty
\def\blx@key@bibnote#1#2{%
\ifcsundef{blx@note@#2}
@@ -9168,10 +9304,12 @@
\def\blx@printbibheading[#1]{%
\let\blx@theheading\blx@default@theheading
\let\blx@thetitle\blx@default@thetitle
+ \undef\blx@thelabel
\blx@safe@actives
\blx@kv@setkeys{blx@bhd}{#1}%
\blx@rest@actives
\blx@bibheading\blx@theheading\blx@thetitle
+ \blx@biblabel\blx@thelabel
\endgroup}
% We use this to determine whether an explicit value for resetnumbers is passed to
@@ -9196,6 +9334,7 @@
\let\blx@theprenote\blx@default@theprenote
\let\blx@thepostnote\blx@default@thepostnote
\let\blx@thetitle\blx@default@thetitle
+ \undef\blx@thelabel
% defaults
\let\blx@tempa\@empty% before there is a .bbl, this must not be undef
\edef\blx@tempe{\the\c@refsection}% default refsection is current
@@ -9250,6 +9389,7 @@
\let\blx@theprenote\blx@default@theprenote
\let\blx@thepostnote\blx@default@thepostnote
\let\blx@thetitle\blx@default@thetitle
+ \undef\blx@thelabel
\c@refsection\z@
\blx@safe@actives
\blx@kv@setkeys{blx@bbs}{#1}%
@@ -9289,6 +9429,7 @@
\let\blx@theprenote\blx@default@theprenote
\let\blx@thepostnote\blx@default@thepostnote
\let\blx@thetitle\blx@default@thetitle
+ \undef\blx@thelabel
\c@refsegment\@ne
\blx@safe@actives
\blx@kv@setkeys{blx@bbg}{#1}%
@@ -9333,6 +9474,7 @@
\let\blx@theprenote\blx@default@theprenote
\let\blx@thepostnote\blx@default@thepostnote
\let\blx@thetitle\blx@default@thetitle
+ \undef\blx@thelabel
\c@refsection\z@
\blx@safe@actives
\blx@kv@setkeys{blx@bbc}{#1}%
@@ -9361,6 +9503,7 @@
% {<entrykey>,...}
\def\blx@bibliography{%
\blx@bibheading\blx@theheading\blx@thetitle
+ \blx@biblabel\blx@thelabel
\blx@bibnote\blx@theprenote
\begingroup
\blx@bibinit
@@ -9403,6 +9546,11 @@
\let\newrefsection\blx@newrefsection
\let\newrefsegment\blx@newrefsegment}
+\def\blx@biblabel#1{%
+ \ifdefvoid#1
+ {}
+ {\expandafter\label\expandafter{#1}}}
+
\def\blx@bibnote#1{%
\ifdefempty#1
{}
@@ -9631,6 +9779,7 @@
\let\blx@theprenote\@empty
\let\blx@thepostnote\@empty
\let\blx@thetitle\@empty
+ \undef\blx@thelabel
% defaults
\let\blx@tempa\@empty% before there is a .bbl, this must not be undef
% default sorting template and template name for list is same name as list
@@ -9713,6 +9862,7 @@
\@restonecolfalse
\fi
\blx@bibheading\blx@theheading\blx@thetitle
+ \blx@biblabel\blx@thelabel
\blx@bibnote\blx@theprenote
\begingroup
\blx@bibinit
@@ -9900,6 +10050,7 @@
\let\blx@tempc\@empty%
\def\blx@tempd{global}%
\def\blx@tempe{global}%
+ \blx@kv@setkeys{blx@assignrefcontextmeta}{#2}%
\blx@kv@setkeys{blx@assignrefcontext}{#2}%
\def\do##1{%
\listxadd\blx@assignedrefcontextkeywlist{##1}%
@@ -9919,6 +10070,7 @@
\let\blx@tempc\@empty%
\def\blx@tempd{global}%
\def\blx@tempe{global}%
+ \blx@kv@setkeys{blx@assignrefcontextmeta}{#2}%
\blx@kv@setkeys{blx@assignrefcontext}{#2}%
\def\do##1{%
\listxadd\blx@assignedrefcontextcatlist{##1}%
@@ -9938,22 +10090,38 @@
\let\blx@tempc\@empty%
\def\blx@tempd{global}%
\def\blx@tempe{global}%
+ \blx@kv@setkeys{blx@assignrefcontextmeta}{#2}%
\blx@kv@setkeys{blx@assignrefcontext}{#2}%
\def\do##1{%
\csxdef{blx@assignedrefcontextkeys#1@\the\c@refsection @##1}%
{\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}}%
\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@kv@defkey{blx@assignrefcontextmeta}{name}{%
+ \begingroup
+ \edef\blx@tempf{\endgroup%
+ \noexpand\blx@kv@setkeys{blx@assignrefcontext}{\csuse{blx@refcontext@name@#1}}}%
+ \blx@tempf}
+\blx@kv@defkey{blx@assignrefcontextmeta}{nametemplates}{}
+\blx@kv@defkey{blx@assignrefcontextmeta}{sorting}{}
+\blx@kv@defkey{blx@assignrefcontextmeta}{sortingnamekeytemplatename}{}
+\blx@kv@defkey{blx@assignrefcontextmeta}{labelprefix}{}
+\blx@kv@defkey{blx@assignrefcontextmeta}{uniquenametemplatename}{}
+\blx@kv@defkey{blx@assignrefcontextmeta}{labelalphanametemplatename}{}
+
% Meta option to set all name template options
+\blx@kv@defkey{blx@assignrefcontext}{name}{}
\blx@kv@defkey{blx@assignrefcontext}{nametemplates}{%
\def\blx@tempb{#1}%
\def\blx@tempd{#1}%
\def\blx@tempe{#1}}
-
\blx@kv@defkey{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}}
\blx@kv@defkey{blx@assignrefcontext}{sortingnamekeytemplatename}{\def\blx@tempb{#1}}
-\blx@kv@defkey{blx@assignrefcontext}{labelprefix}{%
- \edef\blx@tempc{\blx@mdfivesum{#1}}}
+\blx@kv@defkey{blx@assignrefcontext}{labelprefix}{\edef\blx@tempc{\blx@mdfivesum{#1}}}
\blx@kv@defkey{blx@assignrefcontext}{uniquenametemplatename}{\def\blx@tempd{#1}}
\blx@kv@defkey{blx@assignrefcontext}{labelalphanametemplatename}{\def\blx@tempe{#1}}
@@ -10408,7 +10576,7 @@
{\blx@error
{Category '#1' not declared}
{Use \string\DeclareBibliographyCategory\space to declare}}
- {\AfterPreamble{%
+ {\blx@AfterPreamble{%
\blx@xsanitizeafter{\forcsvlist{\blx@addtocategory{#1}}}{#2}}}}
% {<category>}{<entrykey>,...}
@@ -10692,6 +10860,7 @@
\blx@citation@all}
\def\blx@citation@all{%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@nociteall}%
\ifbool{citerequest}
{\blx@bibreq{*}%
\global\csletcs
@@ -10702,6 +10871,9 @@
{}}
{}}
+\def\abx@aux@nociteall{%
+ \listgadd\blx@nocites{*}}
+
\protected\def\blx@bibreq#1{%
\begingroup
\blx@xmlsanitizeafter{\def\blx@tempa}{#1}%
@@ -10746,7 +10918,7 @@
I'm ignoring the new definition}}}
{\global\cslet{blx@set@\the\c@refsection @\blx@tempa}\blx@tempb
\edef\blx@tempa{%
- \AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}%
+ \blx@AfterPreamble{\blx@setreq{\blx@tempa}{\blx@tempb}}}%
\blx@tempa}%
\endgroup
\@esphack}
@@ -11468,7 +11640,7 @@
\def\blx@nocite#1{%
\@bsphack
- \AfterPreamble{%
+ \blx@AfterPreamble{%
\ifstrequal{*}{#1}
{\blx@nocitation@all}
{\blx@xsanitizeafter{\forcsvlist\blx@nocite@do}{#1}}}%
@@ -15272,34 +15444,75 @@
\csdef{blx@opt@casechanger@auto}{%
- \RequirePackage{expl3}[2020/04/06]%
- \@ifpackagelater{expl3}{2020/04/06}
- {\blx@info{expl3\MessageBreak\csuse{ver@expl3.sty}\MessageBreak
- is new enough (at least 2020/04/06),\MessageBreak
- setting 'casechanger=expl3'}%
- \csuse{blx@opt@casechanger@expl3}}
- {\blx@info{expl3\MessageBreak\csuse{ver@expl3.sty}\MessageBreak
- is too old (older than 2020/04/06),\MessageBreak
- setting 'casechanger=latex2e'}%
+ \ifdefstring{\blx@texencoding}{utf8}
+ {\blx@info@noline{Document encoding is UTF8 ...}%
+ \RequirePackage{expl3}[2020/04/06]%
+ \@ifpackagelater{expl3}{2020/04/06}
+ {\blx@info@noline{... and expl3\MessageBreak\csuse{ver@expl3.sty}\MessageBreak
+ is new enough (at least 2020/04/06),\MessageBreak
+ setting 'casechanger=expl3'}%
+ \csuse{blx@opt@casechanger@expl3}}
+ {\blx@info@noline{... but expl3\MessageBreak\csuse{ver@expl3.sty}\MessageBreak
+ is too old (older than 2020/04/06),\MessageBreak
+ setting 'casechanger=latex2e'}%
+ \csuse{blx@opt@casechanger@latex2e}}}
+ {\blx@info@noline{%
+ Document encoding not detected as UTF8.\MessageBreak
+ Setting 'casechanger=latex2e'}%
\csuse{blx@opt@casechanger@latex2e}}}
\csdef{blx@opt@casechanger@latex2e}{%
- \blx@inputonce{blx-case-latex2e.def}
- {LaTeX2e (legacy) case changing code}
- {}{}{}{}}
+ \RequirePackage{blx-case-latex2e}}
\csletcs{blx@opt@casechanger@2e}{blx@opt@casechanger@latex2e}
-% Apparently neither \input nor \blx@inputonce ever pops the
-% \ExplSyntaxOff from \ProvidesExplFile, so we do that ourselves.
\csdef{blx@opt@casechanger@expl3}{%
- \blx@inputonce{blx-case-expl3.def}
- {expl3 case changing code}
- {}{\ExplSyntaxOff}{}{}}
+ \ifdefstring{\blx@texencoding}{utf8}
+ {}
+ {\blx@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@texencoding'.\MessageBreak
+ Case changing macros may break\MessageBreak
+ if used with non-ASCII characters}}%
+ \RequirePackage{blx-case-expl3}}
\csletcs{blx@opt@casechanger@3}{blx@opt@casechanger@expl3}
% default to auto
\csletcs{blx@deferoption@casechanger}{blx@opt@casechanger@auto}
+% This is a bit unfortunate, but we need some more definitions after
+% loading the case changing code.
+\def\blx@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@mksc@lang expands to the language name.
+ \def\blx@mksc@lang{%
+ \ifundef\blx@forcelanguagename
+ {\ifundef\abx@field@langid
+ {\ifundef\blx@languagename
+ {\ifundef\blx@main@language
+ {}
+ {\blx@main@language}}
+ {\blx@languagename}}
+ {\abx@field@langid}}
+ {\blx@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@kv@setkeys{blx@opt@ldt}{style=numeric}
\blx@kv@setkeys{blx@opt@pre}{%
@@ -15340,43 +15553,6 @@
% Process load-time options
\ProcessOptions*
-% this ultimately loads either
-% blx-case-expl3.def or blx-case-latex2e.def
-\blx@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@mksc@lang expands to the language name.
-\def\blx@mksc@lang{%
- \ifundef\blx@forcelanguagename
- {\ifundef\abx@field@langid
- {\ifundef\blx@languagename
- {\ifundef\blx@main@language
- {}
- {\blx@main@language}}
- {\blx@languagename}}
- {\abx@field@langid}}
- {\blx@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@bibtex}
@@ -15542,6 +15718,10 @@
\AtBeginDocument{%
\blx@auxwrite\@mainaux{}{\string\abx@aux@refcontext{\blx@refcontext@context}}
\blx@checkencoding
+ % this ultimately loads either
+ % blx-case-expl3.def or blx-case-latex2e.def
+ \blx@deferoption@casechanger
+ \blx@casechange@postload
\if@filesw
\blx@ctrlwrite
\fi
diff --git a/macros/latex/contrib/biblatex/latex/blx-bibtex.def b/macros/latex/contrib/biblatex/latex/blx-bibtex.def
index 03d6781131..956b4708c5 100644
--- a/macros/latex/contrib/biblatex/latex/blx-bibtex.def
+++ b/macros/latex/contrib/biblatex/latex/blx-bibtex.def
@@ -215,6 +215,7 @@
\patchcmd{\blx@bblinput}{\blx@bblfile}{\blx@bblfile\blx@bblsecs}{}{}
+
\def\blx@bblfile{%
\blx@secinit
\begingroup
@@ -227,13 +228,18 @@
\blx@ifsigned{\blx@auxfile}{bbl}
{\InputIfFileExists{\blx@auxfile.bbl}
{\blx@info@noline{... file '\blx@auxfile.bbl' found}%
- \global\toggletrue{blx@bbldone}}
+ \global\toggletrue{blx@bbldone}%
+ \blx@generate@bbl@mdfivesum@found{\blx@auxfile.bbl}}
{\blx@info@noline{... file '\blx@auxfile.bbl' not found}%
\typeout{No file \blx@auxfile.bbl.}%
- \global\togglefalse{blx@bbldone}}}
+ \global\togglefalse{blx@bbldone}%
+ \blx@generate@bbl@mdfivesum@notfound}}
{}%
\blx@bblend
\endgroup
+ % Check if Biber rerun was not carried out.
+ % If so, ask for it again.
+ \blx@check@bbl@rerun@mdfivesum
\csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
\def\blx@bblsecs{%
diff --git a/macros/latex/contrib/biblatex/latex/blx-case-expl3.def b/macros/latex/contrib/biblatex/latex/blx-case-expl3.sty
index e9b7f23289..e90a4a7c11 100644
--- a/macros/latex/contrib/biblatex/latex/blx-case-expl3.def
+++ b/macros/latex/contrib/biblatex/latex/blx-case-expl3.sty
@@ -1,8 +1,29 @@
\RequirePackage{expl3}[2020/04/06]
\RequirePackage{xparse}
-\ProvidesExplFile {blx-case-expl3} {\abx@date} {\abx@version}
+\ProvidesExplPackage {blx-case-expl3} {\abx@date} {\abx@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
@@ -209,8 +230,6 @@
}
-\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,
@@ -222,7 +241,7 @@
{
\IfBooleanTF {#1}
{
- \clist_if_in:NxTF
+ \__biblatex_clist_if_detokenized_in:NeTF
\l__biblatex_caselangs_clist { \blx@mksc@lang }
{
\biblatex_text_sentencecase:xo { \blx@mksc@lang }
@@ -244,19 +263,18 @@
{
\IfBooleanF {#1}
{ \clist_clear:N \l__biblatex_caselangs_clist }
- \clist_put_left:Nn \l__biblatex_caselangs_clist {#2}
+ \__biblatex_clist_put_detokenized_left:Ne
+ \l__biblatex_caselangs_clist {#2}
}
% \DeclareCaseLangs invocation is in biblatex.sty
-
\NewDocumentCommand \ifcaselang {O{\blx@languagename}}
{
- \clist_if_in:NxTF \l__biblatex_caselangs_clist {#1}
+ \__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'. }
diff --git a/macros/latex/contrib/biblatex/latex/blx-case-latex2e.def b/macros/latex/contrib/biblatex/latex/blx-case-latex2e.sty
index 85641d2e66..5aede0c0bb 100644
--- a/macros/latex/contrib/biblatex/latex/blx-case-latex2e.def
+++ b/macros/latex/contrib/biblatex/latex/blx-case-latex2e.sty
@@ -1,6 +1,41 @@
-\ProvidesFile{blx-case-latex2e.def}
+\ProvidesPackage{blx-case-latex2e}
[\abx@cptid]
+% auxiliary macros
+% babel's \languagename has weird catcodes,
+% so we \detokenize our language names
+
+\def\blx@listgadd@switched#1#2{\listgadd{#2}{#1}}
+
+\ifundef\expanded
+ {\protected\def\blx@deifinlist#1{%
+ \begingroup
+ \edef\blx@tempa{\endgroup
+ \blx@deifinlist@i{#1}}%
+ \blx@tempa}%
+ \protected\def\blx@deifinlist@i#1{%
+ \expandafter\ifinlist\expandafter{\detokenize{#1}}}%
+ %
+ \protected\def\blx@listdxadd@switched#1{%
+ \begingroup
+ \edef\blx@tempa{\endgroup
+ \blx@listdxadd@switched@i{#1}}%
+ \blx@tempa}%
+ \protected\def\blx@listdxadd@switched@i#1{%
+ \expandafter\blx@listgadd@switched\expandafter{\detokenize{#1}}}}
+ {\def\blx@deifinlist#1{%
+ \expandafter\expandafter\expandafter\ifinlist
+ \expandafter\expandafter\expandafter{%
+ \expandafter\detokenize\expandafter{\expanded{#1}}}}%
+ %
+ \def\blx@listdxadd@switched#1{%
+ \expandafter\expandafter\expandafter\blx@listgadd@switched
+ \expandafter\expandafter\expandafter{%
+ \expandafter\detokenize\expandafter{\expanded{#1}}}}}
+
+\def\blx@listdxadd#1#2{\blx@listdxadd@switched{#2}{#1}}
+
+
% we don't have l3text's (pseudo)BCP47 language codes here
\newrobustcmd*{\DeclareBabelToExplLanguageMapping}[2]{%
\blx@warning{The command '\string\DeclareBabelToExplLanguageMapping'%
@@ -108,10 +143,11 @@
\newrobustcmd*{\MakeSentenceCase}{%
\@ifstar\blx@mksc@i\blx@mksc@ii}
+
% \blx@cmksc@lang is defined in biblatex.sty
% it expands to the applicable language for the title field
\def\blx@mksc@i{%
- \xifinlist\blx@mksc@lang\blx@cmksc@lang
+ \blx@deifinlist\blx@mksc@lang\blx@cmksc@lang
{\blx@mksc@ii}
{\@firstofone}}
@@ -280,11 +316,11 @@
\def\blx@defcaselangs#1{%
\ifblank{#1}
{}
- {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}}
+ {\forcsvlist{\blx@listdxadd\blx@cmksc@lang}{#1}}}
% \DeclareCaseLangs invocation is in biblatex.sty
\newrobustcmd*{\ifcaselang}[1][\blx@languagename]{%
- \xifinlist{#1}\blx@cmksc@lang}
+ \blx@deifinlist{#1}\blx@cmksc@lang}
\endinput
diff --git a/macros/latex/contrib/biblatex/latex/blx-compat.def b/macros/latex/contrib/biblatex/latex/blx-compat.def
index 546f16af43..46272f181f 100644
--- a/macros/latex/contrib/biblatex/latex/blx-compat.def
+++ b/macros/latex/contrib/biblatex/latex/blx-compat.def
@@ -351,5 +351,9 @@
Please use '\string\mkdaterangeisoextra'}%
\mkdaterangeisoextra}
+% 3.16
+% deprecate \mainlang for \textmainlang
+% and \mkrelatedstring for \mkrelatedstringtext
+\newcommand{\mkrelatedstring}{\mainlang}
\endinput
diff --git a/macros/latex/contrib/biblatex/latex/blx-dm.def b/macros/latex/contrib/biblatex/latex/blx-dm.def
index 0667b577ae..cb23e20c5f 100644
--- a/macros/latex/contrib/biblatex/latex/blx-dm.def
+++ b/macros/latex/contrib/biblatex/latex/blx-dm.def
@@ -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}
}
diff --git a/macros/latex/contrib/biblatex/latex/blx-unicode.def b/macros/latex/contrib/biblatex/latex/blx-unicode.def
index 01009c028c..12eabfe98b 100644
--- a/macros/latex/contrib/biblatex/latex/blx-unicode.def
+++ b/macros/latex/contrib/biblatex/latex/blx-unicode.def
@@ -32,6 +32,20 @@
\closein\blx@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@setfrcodes{%
% … should probably have dot spacefactor, but pdfLaTeX
% makes it a period, so we have this here for consistency
diff --git a/macros/latex/contrib/biblatex/latex/lbx/basque.lbx b/macros/latex/contrib/biblatex/latex/lbx/basque.lbx
new file mode 100644
index 0000000000..6263081e97
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/lbx/basque.lbx
@@ -0,0 +1,480 @@
+\ProvidesFile{basque.lbx}
+[\abx@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@finalnamedelim
+ \restorecommand\lbx@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@sfromlang\ itzulpena}{ed\adddotspace eta \lbx@sfromlang\ itz\adddot}},%
+ editorstr = {{edizioa eta \lbx@sfromlang\ itzulpena}{ed\adddotspace eta \lbx@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@sfromlang\ itzulpena eta iruzkinak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta irzk\adddot}},%
+ editorstrco = {{edizioa, \lbx@sfromlang\ itzulpena eta iruzkinak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta irzk\adddot}},%
+ editortran = {{edizioa, \lbx@sfromlang\ itzulpena eta oharrak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta ohk\adddot}},%
+ editorstran = {{edizioa, \lbx@sfromlang\ itzulpena eta oharrak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta ohk\adddot}},%
+ editortrin = {{edizioa, \lbx@sfromlang\ itzulpena eta sarrera}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta sar\adddot}},%
+ editorstrin = {{edizioa, \lbx@sfromlang\ itzulpena eta sarrera}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta sar\adddot}},%
+ editortrfo = {{edizioa, \lbx@sfromlang\ itzulpena eta hitzaurrea}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta hitzaur\adddot}},%
+ editorstrfo = {{edizioak, \lbx@sfromlang\ itzulpenak eta hitzaurrea}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddotspace eta hitzaur\adddot}},%
+ editortraf = {{edizioa, \lbx@sfromlang\ itzulpena eta hitzatzea}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddotspace eta hitzatz\adddot}},%
+ editorstraf = {{edizioak, \lbx@sfromlang\ itzulpenak eta hitzatzea}{edk.,\addabbrvspace \lbx@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@sfromlang\ itzulpena, iruzkinak eta sarrera}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+ editorstrcoin = {{edizioak, \lbx@sfromlang\ itzulpenak, iruzkinak eta sarrera}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddot,\addabbrvspace irzk\adddotspace eta sar\adddot}},%
+ editortrcofo = {{edizioa, \lbx@sfromlang\ itzulpena, iruzkinak eta hitzaurrea}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+ editorstrcofo = {{edizioak, \lbx@sfromlang\ itzulpenak, iruzkinak eta hitzaurrea}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddot,\addabbrvspace irzk\adddotspace eta hitzaur\adddot}},%
+ editortrcoaf = {{edizioa, \lbx@sfromlang\ itzulpena, iruzkinak eta hitzatzea}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+ editorstrcoaf = {{edizioak, \lbx@sfromlang\ itzulpenak, iruzkinak eta hitzatzea}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddot,\addabbrvspace irzk\adddotspace eta hitzatz\adddot}},%
+ editortranin = {{edizioa, \lbx@sfromlang\ itzulpena, sarrera eta oharrak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot,\addabbrvspace sar\adddotspace eta ohk\adddot}},%
+ editorstranin = {{edizioak, \lbx@sfromlang\ itzulpenak, sarrera eta oharrak}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddot,\addabbrvspace sar\adddotspace eta ohk\adddot}},%
+ editortranfo = {{edizioa, \lbx@sfromlang\ itzulpena, hitzaurrea eta oharrak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot,\addabbrvspace hitzaur\adddotspace eta ohk\adddot}},%
+ editorstranfo = {{edizioak, \lbx@sfromlang\ itzulpenak, hitzaurrea eta oharrak}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddot,\addabbrvspace hitzaur\adddotspace eta ohk\adddot}},%
+ editortranaf = {{edizioa, \lbx@sfromlang\ itzulpena, hitzatzea eta oharrak}{ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot,\addabbrvspace hitzatz\adddotspace eta ohk\adddot}},%
+ editorstranaf = {{edizioak, \lbx@sfromlang\ itzulpenak, hitzatzea eta oharrak}{edk.,\addabbrvspace \lbx@sfromlang\ itzk\adddot,\addabbrvspace hitzatz\adddotspace eta ohk\adddot}},%
+ translatorco = {{\lbx@sfromlang\ itzulpena eta iruzkinak}{\lbx@sfromlang\ itz\adddot\ eta irzk\adddot}},%
+ translatorsco = {{\lbx@sfromlang\ itzulpenak eta iruzkinak}{\lbx@sfromlang\ itzk\adddot\ eta irzk\adddot}},%
+ translatoran = {{\lbx@sfromlang\ itzulpena eta oharrak}{\lbx@sfromlang\ itz\adddot\ eta ohk\adddot}},%
+ translatorsan = {{\lbx@sfromlang\ itzulpenak eta oharrak}{\lbx@sfromlang\ itzk\adddot\ eta ohks\adddot}},%
+ translatorin = {{\lbx@sfromlang\ itzulpena eta sarrera}{\lbx@sfromlang\ itz\adddot\ eta sar\adddot}},%
+ translatorsin = {{\lbx@sfromlang\ itzulpenak eta sarrera}{\lbx@sfromlang\ itzk\adddot\ eta sar\adddot}},%
+ translatorfo = {{\lbx@sfromlang\ itzulpena eta hitzaurrea}{\lbx@sfromlang\ itz\adddot\ eta hitzaur\adddot}},%
+ translatorsfo = {{\lbx@sfromlang\ itzulpenak eta hitzaurrea}{\lbx@sfromlang\ itzk\adddot\ eta hitzaur\adddot}},%
+ translatoraf = {{\lbx@sfromlang\ itzulpena eta hitzatzea}{\lbx@sfromlang\ itz\adddot\ eta hitzatz\adddot}},%
+ translatorsaf = {{\lbx@sfromlang\ itzulpenak eta hitzatzea}{\lbx@sfromlang\ itzk\adddot\ eta hitzatz\adddot}},%
+ translatorcoin = {{\lbx@sfromlang\ itzulpena, sarrera eta iruzkinak}{\lbx@sfromlang\ itz\adddot, sar\adddotspace eta irzk\adddot}},%
+ translatorscoin = {{\lbx@sfromlang\ itzulpenak, sarrera eta iruzkinak}{\lbx@sfromlang\ itzk\adddot, sar\adddotspace eta irzk\adddot}},%
+ translatorcofo = {{\lbx@sfromlang\ itzulpena, hitzaurrea eta iruzkinak}{\lbx@sfromlang\ itz\adddot, hitzaur\adddotspace eta irzk\adddot}},%
+ translatorscofo = {{\lbx@sfromlang\ itzulpenak, hitzaurrea eta iruzkinak}{\lbx@sfromlang\ itzk\adddot, hitzaur\adddotspace eta irzk\adddot}},%
+ translatorcoaf = {{\lbx@sfromlang\ itzulpena, hitzatzea eta iruzkinak}{\lbx@sfromlang\ itz\adddot, hitzatz\adddotspace eta irzk\adddot}},%
+ translatorscoaf = {{\lbx@sfromlang\ itzulpenak, hitzatzea eta iruzkinak}{\lbx@sfromlang\ itzk\adddot, hitzatz\adddotspace eta irzk\adddot}},%
+ translatoranin = {{\lbx@sfromlang\ itzulpena, sarrera eta oharrak}{\lbx@sfromlang\ itz\adddot, sar\adddotspace eta ohk\adddot}},%
+ translatorsanin = {{\lbx@sfromlang\ itzulpenak, sarrera eta oharrak}{\lbx@sfromlang\ itzk\adddot, sar\adddotspace eta ohk\adddot}},%
+ translatoranfo = {{\lbx@sfromlang\ itzulpena, hitzaurrea eta oharrak}{\lbx@sfromlang\ itz\adddot, hitzaur\adddotspace eta ohk\adddot}},%
+ translatorsanfo = {{\lbx@sfromlang\ itzulpenak, hitzaurrea eta oharrak}{\lbx@sfromlang\ itzk\adddot, hitzaur\adddotspace eta ohk\adddot}},%
+ translatoranaf = {{\lbx@sfromlang\ itzulpena, hitzatzea eta oharrak}{\lbx@sfromlang\ itz\adddot, hitzatz\adddotspace eta ohk\adddot}},%
+ translatorsanaf = {{\lbx@sfromlang\ itzulpenak, hitzatzea eta oharrak}{\lbx@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@lfromlang\ itzulpena}{\lbx@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@lfromlang\ itzulpena}%
+ {ed\adddotspace eta \lbx@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@lfromlang\ itzulpena eta iruzkinak}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot\ eta irzk\adddot}},%
+ byeditortran = {{edizioa, \lbx@lfromlang\ itzulpena eta oharrak}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot\ eta ohk\adddot}},%
+ byeditortrin = {{edizioa, \lbx@lfromlang\ itzulpena eta sarrera}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot\ eta sar\adddot}},%
+ byeditortrfo = {{edizioa, \lbx@lfromlang\ itzulpena eta hitzaurrea}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot\ eta hitzaur\adddot}},%
+ byeditortraf = {{edizioa, \lbx@lfromlang\ itzulpena eta hitzatzea}%
+ {ed.,\addabbrvspace \lbx@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@lfromlang itzulpena, iruzkinak eta sarrera}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot, irzk\adddotspace eta sar\adddot}},%
+ byeditortrcofo = {{edizioa, \lbx@lfromlang itzulpena, iruzkinak eta hitzaurrea}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot, irzk\adddotspace eta hitzaur\adddot}},%
+ byeditortrcoaf = {{edizioa, \lbx@lfromlang itzulpena, iruzkinak eta hitzatzea}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot, irzk\adddotspace eta hitzatz\adddot}},%
+ byeditortranin = {{edizioa, \lbx@lfromlang itzulpena, oharrak eta sarrera}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot, ohk\adddotspace eta sar\adddot}},%
+ byeditortranfo = {{edizioa, \lbx@lfromlang itzulpena, oharrak eta hitzaurrea}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot, ohk\adddotspace eta hitzaur\adddot}},%
+ byeditortranaf = {{edizioa, \lbx@lfromlang itzulpena, oharrak eta hitzatzea}%
+ {ed.,\addabbrvspace \lbx@sfromlang\ itz\adddot, ohk\adddotspace eta hitzatz\adddot}},%
+ bytranslatorco = {{\lbx@lfromlang\ itzulpena eta iruzkinak}%
+ {\lbx@sfromlang\ itz\adddot\ eta irzk\adddot}},%
+ bytranslatoran = {{\lbx@lfromlang\ itzulpena eta oharrak}%
+ {\lbx@sfromlang\ itz\adddot\ eta ohk\adddot}},%
+ bytranslatorin = {{\lbx@lfromlang\ itzulpena eta sarrera}%
+ {\lbx@sfromlang\ itz\adddot\ eta sarod\adddot}},%
+ bytranslatorfo = {{\lbx@lfromlang\ itzulpena eta hitzaurrea}%
+ {\lbx@sfromlang\ itz\adddot\ eta hitzaur\adddot}},%
+ bytranslatoraf = {{\lbx@lfromlang\ itzulpena eta hitzatzea}%
+ {\lbx@sfromlang\ itz\adddot\ eta hitzatz\adddot}},%
+ bytranslatorcoin = {{\lbx@lfromlang itzulpena, iruzkinak eta sarrera}%
+ {\lbx@sfromlang itz\adddot, irzk\adddotspace eta sar\adddot}},%
+ bytranslatorcofo = {{\lbx@lfromlang itzulpena, iruzkinak eta hitzaurrea}%
+ {\lbx@sfromlang itz\adddot, irzk\adddotspace eta pr\'ol\adddot}},%
+ bytranslatorcoaf = {{\lbx@lfromlang itzulpena, iruzkinak eta hitzatzea}%
+ {\lbx@sfromlang itz\adddot, irzk\adddotspace eta hitzatz\adddot}},%
+ bytranslatoranin = {{\lbx@lfromlang itzulpena, oharrak eta sarrera}%
+ {\lbx@sfromlang itz\adddot, ohk\adddotspace eta sar\adddot}},%
+ bytranslatoranfo = {{\lbx@lfromlang itzulpena, oharrak eta hitzaurrea}%
+ {\lbx@sfromlang itz\adddot, ohk\adddotspace eta pr\'ol\adddot}},%
+ bytranslatoranaf = {{\lbx@lfromlang itzulpena, oharrak eta hitzatzea}%
+ {\lbx@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
diff --git a/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx b/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx
index 4f1878ac4d..abf7f8522c 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx
@@ -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@fromlang\ a cura \smartof}{trad\adddotspace\lbx@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@fromlang\ a cura \smartof}%
- {ed\adddotspace i trad\adddotspace\lbx@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@fromlang\ i comentari a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i com\adddotspace\smartof}},
- byeditortran = {{edici\'o, traducci\'o \lbx@fromlang\ i notes a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i n\adddotspace\smartof}},
- byeditortrin = {{edici\'o, traducci\'o \lbx@fromlang\ i introducci\'o a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i intr\adddotspace\smartof}},
- byeditortrfo = {{edici\'o, traducci\'o \lbx@fromlang\ i pr\`oleg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i pr\`ol\adddotspace\smartof}},
- byeditortraf = {{edici\'o, traducci\'o \lbx@fromlang\ i ep\'{\i}leg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace\lbx@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@fromlang, comentari i introducci\'o a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@fromlang, com\adddotspace i intr\adddotspace\smartof}},
- byeditortrcofo = {{edici\'o, traducci\'o \lbx@fromlang, comentari i pr\`oleg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddotspace \lbx@fromlang, com\adddotspace i pr\`ol\adddotspace\smartof}},
- byeditortrcoaf = {{edici\'o, traducci\'o \lbx@fromlang, comentari i ep\'{\i}leg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\ \smartof}},
- byeditortranin = {{edici\'o, traducci\'o \lbx@fromlang, notes i introducci\'o a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\ \smartof}},
- byeditortranfo = {{edici\'o, traducci\'o \lbx@fromlang, notes i pr\`oleg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}},
- byeditortranaf = {{edici\'o, traducci\'o \lbx@fromlang, notes i ep\'{\i}leg a cura \smartof}%
- {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i ep\adddot\ \smartof}},
- bytranslatorco = {{traducci\'o \lbx@fromlang\ i comentari a cura \smartof}%
- {trad\adddot\ \lbx@fromlang\ i com\adddot\ \smartof}},
- bytranslatoran = {{traducci\'o \lbx@fromlang\ i notes a cura \smartof}%
- {trad\adddot\ \lbx@fromlang\ i n\adddot\ \smartof}},
- bytranslatorin = {{traducci\'o \lbx@fromlang\ i introducci\'o a cura \smartof}%
- {trad\adddot\ \lbx@fromlang\ i intr\adddot\ \smartof}},
- bytranslatorfo = {{traducci\'o \lbx@fromlang\ i pr\`oleg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang\ i pr\`ol\adddot\ \smartof}},
- bytranslatoraf = {{traducci\'o \lbx@fromlang\ i ep\'{\i}leg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang\ i ep\adddot\ \smartof}},
- bytranslatorcoin = {{traducci\'o \lbx@fromlang, comentari i introducci\'o a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, com\adddot\ i intr\adddot\ \smartof}},
- bytranslatorcofo = {{traducci\'o \lbx@fromlang, comentari i pr\`oleg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, com\adddot\ i pr\`ol\adddot\ \smartof}},
- bytranslatorcoaf = {{traducci\'o \lbx@fromlang, comentari i ep\'{\i}leg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\ \smartof}},
- bytranslatoranin = {{traducci\'o \lbx@fromlang, notes i introducci\'o a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\ \smartof}},
- bytranslatoranfo = {{traducci\'o \lbx@fromlang, notes i pr\`oleg a cura \smartof}%
- {trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\ \smartof}},
- bytranslatoranaf = {{traducci\'o \lbx@fromlang, notes i ep\'{\i}leg a cura \smartof}%
- {trad\adddot\ \lbx@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@fromlang\ a cura\smartof}{trad\adddotspace\lbx@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@fromlang\ a cura\smartof}%
+ {ed\adddotspace i trad\adddotspace\lbx@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@fromlang\ i comentari a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i com\adddot\smartof}},
+ byeditortran = {{edici\'o, traducci\'o \lbx@fromlang\ i notes a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i n\adddot\smartof}},
+ byeditortrin = {{edici\'o, traducci\'o \lbx@fromlang\ i introducci\'o a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i intr\adddot\smartof}},
+ byeditortrfo = {{edici\'o, traducci\'o \lbx@fromlang\ i pr\`oleg a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace\lbx@fromlang\ i pr\`ol\adddot\smartof}},
+ byeditortraf = {{edici\'o, traducci\'o \lbx@fromlang\ i ep\'{\i}leg a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace\lbx@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@fromlang, comentari i introducci\'o a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace \lbx@fromlang, com\adddotspace i intr\adddot\smartof}},
+ byeditortrcofo = {{edici\'o, traducci\'o \lbx@fromlang, comentari i pr\`oleg a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddotspace \lbx@fromlang, com\adddotspace i pr\`ol\adddot\smartof}},
+ byeditortrcoaf = {{edici\'o, traducci\'o \lbx@fromlang, comentari i ep\'{\i}leg a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\smartof}},
+ byeditortranin = {{edici\'o, traducci\'o \lbx@fromlang, notes i introducci\'o a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\smartof}},
+ byeditortranfo = {{edici\'o, traducci\'o \lbx@fromlang, notes i pr\`oleg a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\smartof}},
+ byeditortranaf = {{edici\'o, traducci\'o \lbx@fromlang, notes i ep\'{\i}leg a cura\smartof}%
+ {ed.,\addabbrvspace trad\adddot\ \lbx@fromlang, n\adddot\ i ep\adddot\smartof}},
+ bytranslatorco = {{traducci\'o \lbx@fromlang\ i comentari a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang\ i com\adddot\smartof}},
+ bytranslatoran = {{traducci\'o \lbx@fromlang\ i notes a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang\ i n\adddot\smartof}},
+ bytranslatorin = {{traducci\'o \lbx@fromlang\ i introducci\'o a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang\ i intr\adddot\smartof}},
+ bytranslatorfo = {{traducci\'o \lbx@fromlang\ i pr\`oleg a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang\ i pr\`ol\adddot\smartof}},
+ bytranslatoraf = {{traducci\'o \lbx@fromlang\ i ep\'{\i}leg a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang\ i ep\adddot\smartof}},
+ bytranslatorcoin = {{traducci\'o \lbx@fromlang, comentari i introducci\'o a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang, com\adddot\ i intr\adddot\smartof}},
+ bytranslatorcofo = {{traducci\'o \lbx@fromlang, comentari i pr\`oleg a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang, com\adddot\ i pr\`ol\adddot\smartof}},
+ bytranslatorcoaf = {{traducci\'o \lbx@fromlang, comentari i ep\'{\i}leg a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang, com\adddot\ i ep\adddot\smartof}},
+ bytranslatoranin = {{traducci\'o \lbx@fromlang, notes i introducci\'o a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang, n\adddot\ i intr\adddot\smartof}},
+ bytranslatoranfo = {{traducci\'o \lbx@fromlang, notes i pr\`oleg a cura\smartof}%
+ {trad\adddot\ \lbx@fromlang, n\adddot\ i pr\`ol\adddot\smartof}},
+ bytranslatoranaf = {{traducci\'o \lbx@fromlang, notes i ep\'{\i}leg a cura\smartof}%
+ {trad\adddot\ \lbx@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}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/english.lbx b/macros/latex/contrib/biblatex/latex/lbx/english.lbx
index 1ade8c7f81..d13bd0fd42 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/english.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/english.lbx
@@ -470,6 +470,7 @@ canadian,australian,newzealand,USenglish,UKenglish}
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 @@ canadian,australian,newzealand,USenglish,UKenglish}
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}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/french.lbx b/macros/latex/contrib/biblatex/latex/lbx/french.lbx
index d2e441b66e..8b3f7f194b 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/french.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/french.lbx
@@ -276,23 +276,23 @@
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}},
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@lfromlang\ par}{trad\adddotspace \lbx@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@lfromlang\ par}%
{\'ed\adddotspace \'etablie et trad\adddotspace \lbx@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}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/german.lbx b/macros/latex/contrib/biblatex/latex/lbx/german.lbx
index 3aba7d6739..d09bee3a76 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/german.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/german.lbx
@@ -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}},