diff options
author | Norbert Preining <norbert@preining.info> | 2024-03-22 03:01:48 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2024-03-22 03:01:48 +0000 |
commit | afa6b76072e6106ffd418c05eff7da555eebb605 (patch) | |
tree | f36be49c5fa5e079ae8b3a360f3a67a90cb680d6 /macros/latex/contrib/biblatex | |
parent | 1c5f075956663aa87b675cccdaa9f3eebfd83af9 (diff) |
CTAN sync 202403220301
Diffstat (limited to 'macros/latex/contrib/biblatex')
50 files changed, 1215 insertions, 405 deletions
diff --git a/macros/latex/contrib/biblatex/CHANGES.md b/macros/latex/contrib/biblatex/CHANGES.md index c8d35de4ec..3bcc0e66d6 100644 --- a/macros/latex/contrib/biblatex/CHANGES.md +++ b/macros/latex/contrib/biblatex/CHANGES.md @@ -1,3 +1,19 @@ +# RELEASE NOTES FOR VERSION 3.20 +- Added new option settings `minyearinit` and `minyearfull` for + `uniquename` +- Added `\DeclareNamehashTemplate` and supporting macros to allow + customisation of the nameparts used in name hash construction. +- Added facility for custom namehash ids in extended name format. +- Added new field 'fullhashraw'. +- Added `\@doendpe` and `\par` call to `\printbibliography` and + `\printbiblist`. + This means that `\printbibliography` and `\printbiblist` + now force text after them to start a new paragraph. + This is probably usually desired. Since most people will use + bibliography environments that come with an implicit `\par` + or at least a new line, this should hopefully not change the output + in too many cases. + # RELEASE NOTES FOR VERSION 3.19 - Added `\AtNextRefsection`. - Added `\DeclareExtradateContext`. diff --git a/macros/latex/contrib/biblatex/README b/macros/latex/contrib/biblatex/README index 6b3b1bf430..36eba1192f 100644 --- a/macros/latex/contrib/biblatex/README +++ b/macros/latex/contrib/biblatex/README @@ -3,7 +3,7 @@ ABOUT The biblatex package is a complete reimplementation of the bibliographic facilities provided by LaTeX. A custom backend "biber" by default is used which processed the BibTeX format data files and -them performs all sorting, label generation (and a great deal +then performs all sorting, label generation (and a great deal more). Legacy BibTeX is also supported as a backend, albeit with a reduced feature set. Biblatex does not use the backend to format the bibliography information as with traditional BibTeX: instead of being diff --git a/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst index 55ff9acd66..07af790c87 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.19 $" + "$Revision: 3.20 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ "Biblatex version: " swap$ * top$ @@ -1820,6 +1820,7 @@ FUNCTION {output:entry} { push:cite wrap:braces * tempstrga wrap:braces * entryoptions wrap:braces * + "" wrap:braces * write$ newline$ output:names output:lists @@ -1928,7 +1929,7 @@ FUNCTION {input:control:options} { % This version corresponds to the .bcf version, *not* the biblatex version! FUNCTION {input:control:version} { input:control:parse - "$Revision: 3.10 $" + "$Revision: 3.11 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ 'tempstrga := @@ -2771,7 +2772,7 @@ SORT % This version corresponds to the .bbl version, *not* the biblatex version! FUNCTION {output:main:begin} { "% $ biblatex auxiliary file $" write$ newline$ - "% $ biblatex bbl format version " "$Revision: 3.2 $" + "% $ biblatex bbl format version " "$Revision: 3.3 $" #12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" * write$ newline$ "% Do not modify the above lines!" write$ newline$ "%" write$ newline$ @@ -2789,7 +2790,7 @@ FUNCTION {output:main:begin} { " {}" write$ newline$ "\endgroup" write$ newline$ newline$ - "\datalist[entry]{" ctrl.sortstr * "/global//global/global}" * write$ + "\datalist[entry]{" ctrl.sortstr * "/global//global/global/global}" * write$ } FUNCTION {output:main:preamble} { diff --git a/macros/latex/contrib/biblatex/doc/biblatex.pdf b/macros/latex/contrib/biblatex/doc/biblatex.pdf Binary files differindex fde8bee537..4db6023bda 100644 --- a/macros/latex/contrib/biblatex/doc/biblatex.pdf +++ b/macros/latex/contrib/biblatex/doc/biblatex.pdf diff --git a/macros/latex/contrib/biblatex/doc/biblatex.tex b/macros/latex/contrib/biblatex/doc/biblatex.tex index 6c4e147b7b..d91a71b5f7 100644 --- a/macros/latex/contrib/biblatex/doc/biblatex.tex +++ b/macros/latex/contrib/biblatex/doc/biblatex.tex @@ -21,6 +21,8 @@ \usepackage{microtype} \usepackage{typearea} \usepackage{mdframed} +\usepackage{enumitem} +\setlist[itemize]{labelsep=1em} \areaset[current]{370pt}{700pt} \lstset{ basicstyle=\ttfamily, @@ -68,7 +70,7 @@ url={\biblatexhome}, author={Philip Kime, Moritz Wemheuer, Philipp Lehman}, email={}, - revision={3.19}, + revision={3.20}, date={\today}} \hypersetup{% @@ -183,7 +185,7 @@ For a quick start guide, browse \secref{int:abt, bib:typ, bib:fld, bib:use, use: \subsection[About]{About \biblatex} \label{int:abt} -This package provides advanced bibliographic facilities for use with \latex. The package is a complete reimplementation of the bibliographic facilities provided by \latex. The \biblatex\ package works with the \enquote{backend} (program) \biber, which is used to process \bibtex\ format data files and them performs all sorting, label generation (and a great deal more). Formatting of the bibliography is entirely controlled by \tex\ macros. Good working knowledge in \latex should be sufficient to design new bibliography and citation styles. This package also supports subdivided bibliographies, multiple bibliographies within one document, and separate lists of bibliographic information such as abbreviations of various fields. Bibliographies may be subdivided into parts and\slash or segmented by topics. Just like the bibliography styles, all citation commands may be freely defined. Features such as full Unicode support for bibliography data, customisable sorting, multiple bibliographies with different sorting, customisable labels and dynamic data modification are available. Please refer to \secref{int:pre:bibercompat} for information on \biber/\biblatex version compatibility. The package is completely localised and can interface with the \sty{babel} and \sty{polyglossia} packages. Please refer to \tabref{bib:fld:tab1} for a list of languages currently supported by this package. +This package provides advanced bibliographic facilities for use with \latex. The package is a complete reimplementation of the bibliographic facilities provided by \latex. The \biblatex\ package works with the \enquote{backend} (program) \biber, which is used to process \bibtex\ format data files and then performs all sorting, label generation (and a great deal more). Formatting of the bibliography is entirely controlled by \tex\ macros. Good working knowledge in \latex should be sufficient to design new bibliography and citation styles. This package also supports subdivided bibliographies, multiple bibliographies within one document, and separate lists of bibliographic information such as abbreviations of various fields. Bibliographies may be subdivided into parts and\slash or segmented by topics. Just like the bibliography styles, all citation commands may be freely defined. Features such as full Unicode support for bibliography data, customisable sorting, multiple bibliographies with different sorting, customisable labels and dynamic data modification are available. Please refer to \secref{int:pre:bibercompat} for information on \biber/\biblatex version compatibility. The package is completely localised and can interface with the \sty{babel} and \sty{polyglossia} packages. Please refer to \tabref{bib:fld:tab1} for a list of languages currently supported by this package. \subsection{License} @@ -252,7 +254,7 @@ The resources listed in this section are strictly required for \biblatex to func The \biblatex package requires \etex. \tex distributions have been providing \etex binaries for quite some time, the popular distributions use them by default these days. The \biblatex package checks if it is running under \etex. Simply try compiling your documents as you usually do, the chances are that it just works. If you get an error message, try compiling the document with \bin{elatex} instead of \bin{latex} or \bin{pdfelatex} instead of \bin{pdflatex}, respectively. \item[\biber] -\biber is the backend of \biblatex used to transfer data from source files to the \latex code. \biber comes with TeX Live and is also available from SourceForge.\fnurl{https://biblatex-biber.sourceforge.net/}. \biber uses the \texttt{btparse} C library for \bibtex format file parsing which aimed to be compatible with \bibtex's parsing rules but also aimed at correcting some of the common problems. For details, see the manual page for the Perl \texttt{Text::BibTeX} module\fnurl{https://metacpan.org/release/Text-BibTeX}. +\biber is the backend of \biblatex used to transfer data from source files to the \latex code. \biber comes with TeX Live and is also available from SourceForge.\fnurl{https://biblatex-biber.sourceforge.net/} \biber uses the \texttt{btparse} C library for \bibtex format file parsing which aimed to be compatible with \bibtex's parsing rules but also aimed at correcting some of the common problems. For details, see the manual page for the Perl \texttt{Text::BibTeX} module.\fnurl{https://metacpan.org/release/Text-BibTeX} \item[etoolbox] This \latex package, which is loaded automatically, provides generic programming facilities required by \biblatex. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/etoolbox} @@ -270,7 +272,7 @@ This \latex package, which is loaded automatically, implements \pdftex primitive \end{marglist} -Apart from the above resources, \biblatex also requires the standard \latex packages \sty{keyval} and \sty{ifthen} as well as the \sty{url} package. These package are included in all common \tex distributions and will be loaded automatically. +Apart from the above resources, \biblatex also requires the standard \latex packages \sty{keyval} and \sty{ifthen} as well as the \sty{url} package. These packages are included in all common \tex distributions and will be loaded automatically. \subsubsection{Recommended Packages} \label{int:pre:rec} @@ -280,7 +282,7 @@ The packages listed in this section are not strictly required for \biblatex to f \begin{marglist} \item[babel/polyglossia] -The \sty{babel} and \sty{polyglossia} packages provides the core architecture for multilingual typesetting. If you are writing in a language other than American English, using one of these packages is strongly recommended. You should load \sty{babel} or \sty{polyglossia} before \biblatex and then \biblatex will detect \sty{babel} or \sty{polyglossia} automatically. (While \sty{babel} may be loaded after \biblatex if so desired, \sty{polyglossia} must always be loaded before \biblatex.) +The \sty{babel} and \sty{polyglossia} packages provide the core architecture for multilingual typesetting. If you are writing in a language other than American English, using one of these packages is strongly recommended. You should load \sty{babel} or \sty{polyglossia} before \biblatex and then \biblatex will detect \sty{babel} or \sty{polyglossia} automatically. (While \sty{babel} may be loaded after \biblatex if so desired, \sty{polyglossia} must always be loaded before \biblatex.) \biblatex has only limited support for \sty{polyglossia} versions prior to~v1.45 (2019/10/27). Additional useful features for \biblatex were added in version~1.49. If \sty{polyglossia} is used, it should be updated to version~1.49 (2020/04/08) or above. @@ -320,7 +322,7 @@ The \sty{showkeys} package prints the internal keys of, among other things, cita When using the \sty{memoir} class, the default bibliography headings are adapted such that they blend well with the default layout of this class. See \secref{use:cav:mem} for further usage hints. \item[\acr{KOMA}-Script] -When using any of the \sty{scrartcl}, \sty{scrbook}, or \sty{scrreprt} classes, the default bibliography headings are adapted such that they blend with the default layout of these classes. See \secref{use:cav:scr} for further usage hints. +When using any of the \sty{scrartcl}, \sty{scrbook}, or \sty{scrreprt} classes, the default bibliography headings are adapted such that they blend well with the default layout of these classes. See \secref{use:cav:scr} for further usage hints. If available \biblatex makes use of some of the more recent of \acr{KOMA}-Script's \emph{do-hooks}. The relevant hooks are present from version~3.27 (2019/10/12) onwards, which is therefore the minimum version recommendation. @@ -413,6 +415,7 @@ compatibility matrix for the recent versions. \sffamily\bfseries\spotcolor Biber version & \sffamily\bfseries\spotcolor \biblatex\ version\\ \midrule +2.20 & 3.20\\ 2.19 & 3.19\\ 2.18 & 3.18\\ 2.17 & 3.17\\ @@ -462,7 +465,7 @@ compatibility matrix for the recent versions. This section describes the default data model defined in the \file{blx-dm.def} file which is part of \path{biblatex}. The data model is defined using the macros documented in \secref{aut:ctm:dm}. It is possible to redefine the data model which both \biblatex and \biber use so that datasources can contain new entrytypes and fields (which of course will need style support). The data model specification also allows for constraints to be defined so that data sources can be validated against the data model (using \biber's \opt{--validate-datamodel} option). Users who want to customise the data model need to look at the \file{blx-dm.def} file and to read \secref{aut:ctm:dm}. -All entry types and field names are given in all-lowercase form here. This is how the entry types and field names are given in the data model. While the \biber/\bibtex input side is case insensitive, the \latex side is case sensitive and uses the exact capitalisation from the data model. This means that the input in the \file{bib} file may use any capitalisation of entry types and field names, but when the fields are used in the \latex document---for example in \cmd{citefield}---the capitalisation must match the captalisation in the data model, for standard types and fields that would be all lowercase. +All entry types and field names are given in all-lowercase form here. This is how the entry types and field names are given in the data model. While the \biber/\bibtex input side is case insensitive, the \latex side is case sensitive and uses the exact capitalisation from the data model. This means that the input in the \file{bib} file may use any capitalisation of entry types and field names, but when the fields are used in the \latex document---for example in \cmd{citefield}---the capitalisation must match the capitalisation in the data model, for standard types and fields that would be all lowercase. \subsection{Entry Types} \label{bib:typ} @@ -770,7 +773,7 @@ In datasources such as a \file{bib} file, all bibliographic data is specified in \item[Name lists] are parsed and split up into the individual items at the \texttt{and} delimiter. Each item in the list is then dissected into the name part components: by default the given name, the name prefix (von, van, of, da, de, della, \dots), the family name, and the name suffix (junior, senior, \dots). The valid name parts can be customised by changing the datamodel definition described in \secref{aut:bbx:drv}. Name lists may be truncated in the \file{bib} file with the keyword <\texttt{and others}>. Typical examples of name lists are \bibfield{author} and \bibfield{editor}. -Name list fields automatically have an \cmd{ifuse*} test created as per the name lists in the default data model (see \secref{aut:aux:tst}). They are also automatically have a \opt{ifuse*} option created which controls labelling and sorting behaviour with the name (see \secref{use:opt:bib:hyb}). \biber supports a customisable set of name parts but currently this is defined to be the same set of parts as supported by traditional \bibtex: +Name list fields automatically have an \cmd{ifuse*} test created as per the name lists in the default data model (see \secref{aut:aux:tst}). They also automatically have an \opt{ifuse*} option created which controls labelling and sorting behaviour with the name (see \secref{use:opt:bib:hyb}). \biber supports a customisable set of name parts but currently this is defined to be the same set of parts as supported by traditional \bibtex: \begin{itemize} \item Family name (also known as <last> part) @@ -1435,7 +1438,7 @@ Custom lists for special bibliography styles. Not used by the standard bibliogra Custom fields for special bibliography styles. Not used by the standard bibliography styles. -\fielditem{verb{[a--c]}}{literal} +\fielditem{verb{[a--c]}}{verbatim} Similar to the custom fields above except that these are verbatim fields. Not used by the standard bibliography styles. @@ -2110,18 +2113,25 @@ The following options may be used in the optional argument to \cmd{usepackage} a \begin{optionlist} -\optitem[nty]{sorting}{\opt{nty}, \opt{nyt}, \opt{nyvt}, \opt{anyt}, \opt{anyvt}, \opt{ynt}, \opt{ydnt}, \opt{none}, \opt{count}, \opt{debug}, \prm{name}} +\optitem[nty]{sorting}{\opt{nty}, \opt{ntd}, \opt{nyt}, \opt{ndt}, \opt{nyvt}, \opt{ndvt}, \opt{anyt}, \opt{andt}, \opt{anyvt}, opt{andvt}, \opt{ynt}, \opt{dnt}, \opt{ydnt}, \opt{ddnt}, \opt{none}, \opt{count}, \opt{debug}, \prm{name}} The sorting order of the bibliography. Unless stated otherwise, the entries are sorted in ascending order. The following choices are available by default: \begin{valuelist} \item[nty] Sort by name, title, year. +\item[ntd] Sort by name, title, full date. \item[nyt] Sort by name, year, title. +\item[ndt] Sort by name, full date, title. \item[nyvt] Sort by name, year, volume, title. +\item[ndvt] Sort by name, full date, volume, title. \item[anyt] Sort by alphabetic label, name, year, title. +\item[andt] Sort by alphabetic label, name, full date, title. \item[anyvt] Sort by alphabetic label, name, year, volume, title. +\item[andvt] Sort by alphabetic label, name, full date, volume, title. \item[ynt] Sort by year, name, title. +\item[dnt] Sort by full date, name, title. \item[ydnt] Sort by year (descending), name, title. +\item[ddnt] Sort by full date (descending), name, title. \item[none] Do not sort at all. All entries are processed in citation order. \item[count] Sort in descending order of number of times cited \item[debug] Sort by entry key. This is intended for debugging only. @@ -2362,8 +2372,6 @@ This option automatically starts a new reference section at a document division \item[subsection] Start a reference section at every \cmd{subsection} command. \item[subsection+] Start a reference section at every \cmd{subsection} and every higher level of sectioning, i.e. \cmd{part}, \cmd{chapter} (if available) and \cmd{section}. \end{valuelist} -% -The starred versions of these commands will not start a new reference section. \optitem[none]{refsegment}{\opt{none}, \opt{part}, \opt{chapter}, \opt{chapter+}, \opt{section}, \opt{section+}, \opt{subsection}, \opt{subsection+}} @@ -2599,7 +2607,8 @@ As \opt{mincrossrefs} but for \bibfield{xref} fields. \boolitem[true]{bibtexcaseprotection} -This option only has an effect when the \sty{expl3} implementation of the case changing functions is selected. If the option is set to \opt{true}, \cmd{MakeSentenceCase*} supports brace protection of words from case change as in classical \bibtex. If the option is set to \opt{false}, pairs of braces no longer imply case protection, which can now be enforced by wrapping the relevant word in \cmd{NoCaseChange}---this makes for a less confusing, if more verbose, markup of case protection. +This option only has an effect when the \sty{expl3} implementation of the case changing functions is selected. If the option is set to \opt{true}, \cmd{MakeSentenceCase*} supports brace protection of words from case change as in classical \bibtex. If the option is set to \opt{false}, pairs of braces no longer imply case protection, which can now be achieved by wrapping the relevant word in \cmd{NoCaseChange}---this makes for a less confusing, if more verbose, markup of case protection. +For examples of the effect of this option refer to the documentation of \cmd{MakeSentenceCase*} in \secref{aut:aux:msc}. \end{optionlist} @@ -2704,7 +2713,7 @@ Whether \emph{ibidem} without page reference means <same work> or <same work + s \optitem[permit]{citepages}{\opt{permit}, \opt{suppress}, \opt{omit}, \opt{separate}} -This option controls the output of the \bibfield{page}\slash\bibfield{pagetotal} field in the full citation in combination with a postnote containing a page range. The option can be used to suppress references to two page ranges in full citations like the following +This option controls the output of the \bibfield{pages}\slash\bibfield{pagetotal} field in the full citation in combination with a postnote containing a page range. The option can be used to suppress references to two page ranges in full citations like the following \begin{quote} Author. \enquote{Title.} In: \emph{Book,} pp.\,100--150, p.\,125. @@ -2713,10 +2722,10 @@ Author. \enquote{Title.} In: \emph{Book,} pp.\,100--150, p.\,125. Here <p.\,125> is the \bibfield{postnote} argument and <pp.\,100--150> is the value of the \bibfield{pages} field. \begin{valuelist} -\item[permit] Allow duplication of page specifications, i.e.\ print both \bibfield{page}\slash\bibfield{pagetotal} and \bibfield{postnote}. -\item[suppress] Unconditionally suppress the \bibfield{pages}\slash \bibfield{pagetotal} fields in citations, regardless of the \bibfield{postnote}. +\item[permit] Allow duplication of page specifications, i.e.\ print both \bibfield{pages}\slash\bibfield{pagetotal} and \bibfield{postnote}. +\item[suppress] Unconditionally suppress the \bibfield{pages}\slash\bibfield{pagetotal} fields in citations, regardless of the \bibfield{postnote}. \item[omit] Suppress the \bibfield{pages}\slash \bibfield{pagetotal} if the \bibfield{postnote} contains a page range. They are still printed if there is no \bibfield{postnote} or if the \bibfield{postnote} is not a number or range. -\item[separate] Separate the \bibfield{pages}\slash \bibfield{pagetotal} from the \bibfield{postnote} if the latter contains a page range. The string \texttt{thiscite} is added to separate the two page ranges. +\item[separate] Separate the \bibfield{pages}\slash\bibfield{pagetotal} from the \bibfield{postnote} if the latter contains a page range. The string \texttt{thiscite} is added to separate the two page ranges. \end{valuelist} \end{optionlist} @@ -2895,7 +2904,7 @@ Whether or not to provide the special field \bibfield{extratitle}, see \secref{a \boolitem[false]{labeltitleyear} -Whether or not to provide the special field \bibfield{extratitleyear}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitleyear} information. This option is also settable on a per-type and per-entry basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. +Whether or not to provide the special field \bibfield{extratitleyear}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitleyear} is always provided and this option controls rather whether \bibfield{labeltitleyear} is used to generate \bibfield{extratitleyear} information. This option is also settable on a per-type and per-entry basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track. \boolitem[false]{labeldateparts} @@ -2948,7 +2957,7 @@ Whether or not to provide the data required by the \cmd{ifuniqueprimaryauthor} t This option is also settable on a per-type and per-entry basis. \optitem[false]{uniquename}{\opt{true}, \opt{false}, \opt{init}, \opt{full}, \opt{allinit}, \opt{allfull}, -\opt{mininit}, \opt{minfull}} +\opt{mininit}, \opt{minfull}, \opt{minyearinit}, \opt{minyearfull}} Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate individual names in the \bibfield{labelname} list. This option is also settable on a per-type, per-entry, per-namelist and per-name basis. The possible choices are: @@ -2961,6 +2970,8 @@ Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} \item[allfull] Similar to \opt{full} but disambiguates all names in the \bibfield{labelname} list, beyond \opt{maxnames}\slash \opt{minnames}\slash \opt{uniquelist}. \item[mininit] A variant of \texttt{init} which only disambiguates names in identical lists of base nameparts (by default, lists of family names). \item[minfull] A variant of \texttt{full} which only disambiguates names in identical lists of base nameparts (by default, lists of family names). +\item[minyearinit] A variant of \texttt{mininit} which only disambiguates names in identical lists of base nameparts plus labelyear. +\item[minyearfull] A variant of \texttt{minfull} which only disambiguates names in identical lists of base nameparts plus labelyear. \end{valuelist} % Note that the \opt{uniquename} option will also affect \opt{uniquelist}, the \cmd{ifsingletitle} test, and the \bibfield{extradate} and \bibfield{extraname} fields. See \secref{aut:cav:amb} for further details and practical examples. @@ -3124,7 +3135,8 @@ Whether the default data model name part <prefix> (von, van, of, da, de, della, \item Generating name uniqueness information \item Formatting aspects of the bibliography \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 (see \secref{use:enf}), this is also settable on per-namelist and per-name scopes. @@ -3394,6 +3406,13 @@ format, see \secref{use:opt:bib:hyb}: AUTHOR = {nosortothers=true and Hans Harman and given=Simon, family=Beumont, prefix=de, useprefix=true} \end{lstlisting} +% +A special \prm{id} parameter may also be used for any name and this will be used to override the hash used to detect identical names, for example, a gender change could be handled like this (see also \secref{aut:cav:ni}): + +\begin{lstlisting}[style=bibtex]{} + AUTHOR = {id=person1, given=Simon, family=Beumont} + AUTHOR = {id=person1, given=Simone, family=Beumont} +\end{lstlisting} \subsection{Related Entries} \label{use:rel} @@ -3477,6 +3496,8 @@ The first item considered in the sorting process is always the \bibfield{presort The chronological sorting templates presented in \apxref{apx:srt:chr} also make use of the \bibfield{presort} and \bibfield{sortkey} fields, if defined. The next item considered is the \bibfield{sortyear} or the \bibfield{year} field, depending on availability. The \opt{ynt} template extracts the first four Arabic figures from the field. If both fields are undefined, the string \texttt{9999} is used as a fallback value. This means that all entries without a year will be moved to the end of the list. The \opt{ydnt} template is similar in concept but sorts the year in descending order. As with the \opt{ynt} template, the string \texttt{9999} is used as a fallback value. The remaining items are similar to the alphabetic sorting templates discussed above. Note that the \opt{ydnt} sorting template will only sort the date in descending order. All other items are sorted in ascending order as usual. +Most built-in sorting templates have a variant which sorts on all of the available parts of a full ISO8601 date right down to \bibfield{seconds} instead of only the year, see \secref{use:opt:pre}. + Using special fields such as \bibfield{sortkey}, \bibfield{sortname}, or \bibfield{sorttitle} is usually not required. The \biblatex package is quite capable of working out the desired sorting order by using the data found in the regular fields of an entry. You will only need them if you want to manually modify the sorting order of the bibliography or if any data required for sorting is missing. Please refer to the field descriptions in \secref{bib:fld:spc} for details on possible uses of the special fields. \subsection{Data Annotations} @@ -3796,8 +3817,17 @@ The prenote is an arbitrary piece of text to be printed after the heading but be \valitem{postnote}{name} + The postnote is an arbitrary piece of text to be printed after the list of references. This option selects the postnote \prm{name}, as defined with \cmd{defbibnote}. By default, no postnote is printed. The note is printed in the standard text font. It is not affected by \cmd{bibsetup} and \cmd{bibfont} but it may contain its own font declarations. See \secref{use:bib:nts} for details. +\end{optionlist*} + +The following options can be used to <filter> the entries printed in the bibliography. +If several <filtering options> are used---including cases where the same option is used multiple times with different values---, +an entry will only be printed if it satisfies all filtering conditions. +In other words, <filtering options> are connected via a logic \emph{and}. + +\begin{optionlist*} \intitem[\normalfont\em current section]{section} Print only entries cited in reference section \prm{integer}. The reference sections are numbered starting at~1. All citations given outside a \env{refsection} environment are assigned to section~0. See \secref{use:bib:sec} for details and \secref{use:use:mlt} for usage examples. @@ -3846,6 +3876,13 @@ Filter the entries with filter \prm{name}, as defined with \cmd{defbibfilter}. S Filter the entries with check \prm{name}, as defined with \cmd{defbibcheck}. See \secref{use:bib:flt} for details. +\end{optionlist*} + +The following options are useful in <split bibliography> setups, where several bibliographies (with different filtering options) +are printed in the same document. + +\begin{optionlist*} + \valitem{resetnumbers}{true,false,number} This option applies to numerical citation\slash bibliography styles only and requires that the \opt{defernumbers} option from \secref{use:opt:pre:gen} be enabled globally. If enabled, it will reset the numerical labels assigned to the entries in the respective bibliography, \ie the numbering will restart at~1. You can also pass a number to this option, for example: \texttt{resetnumbers=10} to reset numbering to the specified number to aid numbering continuity across documents. Use this option with care as \biblatex can not guarantee unique labels globally if they are reset manually. @@ -3876,7 +3913,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}, \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. +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}, \opt{label}, \opt{prenote} and \opt{postnote}. Note that both the \opt{prenote} and \opt{postnote} argument are printed after the heading. Their behaviour exactly mirrors that of \cmd{printbibliography}, except that no bibliography is created in between the two notes. 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} @@ -3912,7 +3949,7 @@ This command prints a bibliography list. It takes an optional argument, which is The \prm{biblistname} is a mandatory argument which names the bibliography list. This name is used to identify: \begin{itemize} \item The default bibliography driver used to print the list entries -\item A default bibliography list filter declared with \cmd{DeclareBiblistFilter} (see \secref{aut:ctm:bibfilt}) used to filter the entries returned from \biber +\item A default bibliography list filter declared with \cmd{DeclareBiblistFilter} (see \secref{aut:ctm:bibfilt}) used to filter the entries returned by \biber in the \file{.bbl} \item A default check declared with \cmd{defbibcheck} (see \secref{use:bib:flt}) used to post-process the list entries \item The default bib environment to use \item The default sorting template to use @@ -4336,9 +4373,13 @@ Specify a uniquename template defined previously with \cmd{DeclareUniquenameTemp Specify a template defined previously with \cmd{DeclareLabelalphaNameTemplate} (see \secref{aut:ctm:lab}). This template is used to construct name parts of alphabetic labels for names inside the context. The template name can also be specified (in increasing order of preference) per"=entry, per"=name list and per"=name. See \secref{apx:opt} for information on setting per"=option, per"=namelist and per"=name options. +\valitem{namehashtemplatename}{name} + +Specify a template defined previously with \cmd{DeclareNamehashTemplate} (see \secref{aut:cav:ni}). This template is used to construct name hashes used to determine whether names refer to the same person. The template name can also be specified (in increasing order of preference) per"=entry, per"=name list and per"=name. See \secref{apx:opt} for information on setting per"=option, per"=namelist and per"=name options. + \valitem{nametemplates}{name} -A convenience meta-option which sets \opt{sortingnamekeytemplate}, \opt{uniquenametemplate} and \opt{labelalphanametemplate} to the same template name. This option can also be specified (in increasing order of preference) per"=entry, per"=name list and per"=name. See \secref{apx:opt} for information on setting per"=option, per"=namelist and per"=name options. +A convenience meta-option which sets \opt{sortingnamekeytemplate}, \opt{uniquenametemplate}, \opt{labelalphanametemplate} and \opt{namehashtemplate} to the same template name. This option can also be specified (in increasing order of preference) per"=entry, per"=name list and per"=name. See \secref{apx:opt} for information on setting per"=option, per"=namelist and per"=name options. \valitem{labelprefix}{string} @@ -4715,7 +4756,7 @@ Similar to \cmd{fullcite} but puts the entire citation in a footnote and adds a \cmditem{volcite}[prenote]{volume}[pages]{key} \cmditem{Volcite}[prenote]{volume}[pages]{key} -These commands are similar to \cmd{cite} and \cmd{Cite} but intended for references to multi"=volume works which are cited by volume and page number. Instead of the \prm{postnote}, they take a mandatory \prm{volume} and an optional \prm{pages} argument. Since they merely compose the postnote and pass it to the \cmd{cite} command provided by the citation style as a \prm{postnote} argument, these commands are style independent. The volume and pages/text portion are formatted with the macro \cmd{mkvolcitenote} when they are passed on to the citation command. Additionally they are made available in the special fields \bibfield{volcitevolume} and \bibfield{volcitevolume} (\secref{aut:cbx:fld}) The format of the volume portion is controlled by the field formatting directive \opt{volcitevolume}, the format of the pages/text portion is controlled by the field formatting directive \opt{volcitepages} (\secref{aut:fmt:ich}). The delimiter printed between the volume portion and the pages/text portion may be modified by redefining the macro \cmd{volcitedelim} (\secref{aut:fmt:fmt}). +These commands are similar to \cmd{cite} and \cmd{Cite} but intended for references to multi"=volume works which are cited by volume and page number. Instead of the \prm{postnote}, they take a mandatory \prm{volume} and an optional \prm{pages} argument. Since they merely compose the postnote and pass it to the \cmd{cite} command provided by the citation style as a \prm{postnote} argument, these commands are style independent. The volume and pages/text portion are formatted with the macro \cmd{mkvolcitenote} when they are passed on to the citation command. Additionally they are made available in the special fields \bibfield{volcitevolume} and \bibfield{volcitepages} (\secref{aut:cbx:fld}) The format of the volume portion is controlled by the field formatting directive \opt{volcitevolume}, the format of the pages/text portion is controlled by the field formatting directive \opt{volcitepages} (\secref{aut:fmt:ich}). The delimiter printed between the volume portion and the pages/text portion may be modified by redefining the macro \cmd{volcitedelim} (\secref{aut:fmt:fmt}). \cmditem{volcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key} \cmditem{Volcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key} @@ -5470,7 +5511,11 @@ The language specific separator to be used between multiple ranges. Defaults to \csitem{bibdatesep} -The language specific separator used between date components in terse date formats. Defaults to \cmd{hyphen}. +The language specific separator used between date components in terse/short date formats. Defaults to \cmd{hyphen}. + +\csitem{bibdatendsep} + +The language specific separator used between date components in terse/short date formats when there is no day part of the date (usually meaning month and year only). Defaults to \cmd{hyphen}. \csitem{bibdaterangesep} @@ -7021,18 +7066,15 @@ This field holds an integer indicating the position of a set member in the entry \fielditem{hash}{string} -This field is special in that it is only available locally in name formatting directives. It holds a hash string which uniquely identifies individual names in a name list. This information is available for all names in all name lists. See also \bibfield{namehash} and \bibfield{fullhash}. +This field is special in that it is only available locally in name formatting directives. It holds a hash string which uniquely identifies individual names in a name list. This information is available for all names in all name lists. See also \bibfield{namehash} and \bibfield{fullhash}. Sensitive to the hash customisations described in \secref{aut:cav:ni}. \fielditem{namehash}{string} -A hash string which uniquely identifies the \bibfield{labelname} list. This is useful for recurrence checks. For example, a citation style which replaces recurrent authors or editors with a string like <idem> could save the \bibfield{namehash} field with \cmd{savefield} and use it in a comparison with \cmd{iffieldequals} later (see \secref{aut:aux:dat, aut:aux:tst}). The \bibfield{namehash} is derived from the truncated \bibfield{labelname} list, \ie it is responsive to \opt{maxcitenames} and \opt{mincitenames}. See also \bibfield{hash} and \bibfield{fullhash}. +A hash string which uniquely identifies the \bibfield{labelname} list. This is useful for recurrence checks. For example, a citation style which replaces recurrent authors or editors with a string like <idem> could save the \bibfield{namehash} field with \cmd{savefield} and use it in a comparison with \cmd{iffieldequals} later (see \secref{aut:aux:dat, aut:aux:tst}). The \bibfield{namehash} is derived from the truncated \bibfield{labelname} list, \ie it is responsive to \opt{maxcitenames} and \opt{mincitenames}. See also \bibfield{hash} and \bibfield{fullhash}. Sensitive to the hash customisations described in \secref{aut:cav:ni}. \fielditem{bibnamehash}{string} -As \bibfield{namehash} but responsive to \opt{maxbibnames} and -\opt{minbibnames}. This is not used in standard styles but may be used to -make tests in bibliography lists (such as those used to determine whether -dashes should replace repeated authors) behave differently. +As \bibfield{namehash} but responsive to \opt{maxbibnames} and \opt{minbibnames}. This is not used in standard styles but may be used to make tests in bibliography lists (such as those used to determine whether dashes should replace repeated authors) behave differently. Sensitive to the hash customisations described in \secref{aut:cav:ni}. \fielditem{$<$namelist$>$namehash}{string} @@ -7044,12 +7086,20 @@ As \bibfield{bibnamehash} for the name list called <namelist>. \fielditem{fullhash}{string} -A hash string which uniquely identifies the \bibfield{labelname} list. This fields differs from \bibfield{namehash} in two details: 1) The \bibfield{shortauthor} and \bibfield{shorteditor} lists are ignored when generating the hash. 2) The hash always refers to the full list, ignoring \opt{maxnames} and \opt{minnames}. See also \bibfield{hash} and \bibfield{namehash}. +A hash string which uniquely identifies the \bibfield{labelname} list. This fields differs from \bibfield{namehash} in two details: 1) The \bibfield{shortauthor} and \bibfield{shorteditor} lists are ignored when generating the hash. 2) The hash always refers to the full list, ignoring \opt{maxnames} and \opt{minnames}. See also \bibfield{hash} and \bibfield{namehash}. Sensitive to the hash customisations described in \secref{aut:cav:ni}. + +\fielditem{fullhashraw}{string} + +As \bibfield{fullhash} but not sensitive to the hash customisations described in \secref{aut:cav:ni}. Basically a hash of all of the full nameparts of a name as it appears in the data. Not used in the default styles but could be used to discriminate between the literal given glyphs of a name and the name as it is desired to be identified for name matching purposes. \fielditem{$<$namelist$>$fullhash}{string} As \bibfield{fullhash} for the name list called <namelist>. +\fielditem{$<$namelist$>$fullhashraw}{string} + +As \bibfield{fullhashraw} for the name list called <namelist>. + \listitem{pageref}{literal} If the \opt{backref} package option is enabled, this list holds the page numbers of the pages on which the respective bibliography entry is cited. If there are \env{refsection} environments in the document, the back references are local to the reference sections. @@ -7654,7 +7704,7 @@ Specifies arbitrary \prm{code} required for a partial reset of the citation styl \cmditem{DeclareCiteCommand}{command}[wrapper]{precode}{loopcode}{sepcode}{postcode} \cmditem*{DeclareCiteCommand*}{command}[wrapper]{precode}{loopcode}{sepcode}{postcode} -This is the core command used to define all citation commands. It takes one optional and five mandatory arguments. The \prm{command} is the command to be defined, for example \cmd{cite}. If the optional \prm{wrapper} argument is given, the entire citation will be passed to the \prm{wrapper} as an argument, \ie the wrapper command must take one mandatory argument.\footnote{Typical examples of wrapper commands are \cmd{mkbibparens} and \cmd{mkbibfootnote}.} The \prm{precode} is arbitrary code to be executed at the beginning of the citation. It will typically handle the \prm{prenote} argument which is available in the \bibfield{prenote} field. It may also be used to initialize macros required by the \prm{loopcode}. The \prm{loopcode} is arbitrary code to be executed for each entry key passed to the \prm{command}. This is the core code which prints the citation labels or any other data. The \prm{sepcode} is arbitrary code to be executed after each iteration of the \prm{loopcode}. It will only be executed if a list of entry keys is passed to the \prm{command}. The \prm{sepcode} will usually insert some kind of separator, such as a comma or a semicolon. The \prm{postcode} is arbitrary code to be executed at the end of the citation. The \prm{postcode} will typically handle the \prm{postnote} argument which is available in the \bibfield{postnote} field.\footnote{The bibliographic data available to the \prm{loopcode} is the data of the entry currently being processed. In addition to that, the data of the first entry is available to the \prm{precode} and the data of the last one is available to the \prm{postcode}. <First> and <last> refer to the order in which the citations are printed. If the \opt{sortcites} package option is active, this is the order of the list after sorting. Note that no bibliographic data is available to the \prm{sepcode}.} The starred variant of \cmd{DeclareCiteCommand} defines a starred \prm{command}. For example, |\DeclareCiteCommand*{cite}| would define |\cite*|.\footnote{Note that the regular variant of \cmd{DeclareCiteCommand} defines a starred version of the \prm{command} implicitly, unless the starred version has been defined before. This is intended as a fallback. The implicit definition is an alias for the regular variant.} +This is the core command used to define all citation commands. It takes one optional and five mandatory arguments. The \prm{command} is the command to be defined, for example \cmd{cite}. If the optional \prm{wrapper} argument is given, the entire citation will be passed to the \prm{wrapper} as an argument, \ie the wrapper command must take one mandatory argument.\footnote{Typical examples of wrapper commands are \cmd{mkbibparens} and \cmd{mkbibfootnote}.} The \prm{precode} is arbitrary code to be executed at the beginning of the citation. It will typically handle the \prm{prenote} argument which is available in the \bibfield{prenote} field. It may also be used to initialize macros required by the \prm{loopcode}. The \prm{loopcode} is arbitrary code to be executed for each entry key passed to the \prm{command}. This is the core code which prints the citation labels or any other data. The \prm{sepcode} is arbitrary code to be executed after each iteration of the \prm{loopcode}. It will only be executed if a list of entry keys is passed to the \prm{command}. The \prm{sepcode} will usually insert some kind of separator, such as a comma or a semicolon. The \prm{postcode} is arbitrary code to be executed at the end of the citation. The \prm{postcode} will typically handle the \prm{postnote} argument which is available in the \bibfield{postnote} field.\footnote{The bibliographic data available to the \prm{loopcode} is the data of the entry currently being processed. In addition to that, the data of the first entry is available to the \prm{precode} and the data of the last one is available to the \prm{postcode}. <First> and <last> refer to the order in which the citations are printed. If the \opt{sortcites} package option is active, this is the order of the list after sorting. Note that no bibliographic data is available to the \prm{sepcode}.} The starred variant of \cmd{DeclareCiteCommand} defines a starred \prm{command}. For example, |\DeclareCiteCommand*{\cite}| would define |\cite*|.\footnote{Note that the regular variant of \cmd{DeclareCiteCommand} defines a starred version of the \prm{command} implicitly, unless the starred version has been defined before. This is intended as a fallback. The implicit definition is an alias for the regular variant.} \cmditem{DeclareMultiCiteCommand}{command}[wrapper]{cite}{delimiter} @@ -8321,7 +8371,7 @@ option to the \cmd{map} command above). \texttt{match} regular expression (logic is reversed if you use \texttt{notmatch} and case-insensitive if you use the versions ending in <i>)\footnote{Regular expressions are full Perl 5.16 regular expressions. This means you may need to deal with special characters, see examples.}. You may use capture parenthesis as usual and refer to these (\$1\ldots\$9) in later \texttt{fieldvalue} specifications. This allows you to pull out parts of some fields and put these parts in other fields. \item Perform a regular expression match and replace on the value of the \texttt{fieldsource} \prm{entryfield} if \texttt{match} and \texttt{replace} are defined. \item If \texttt{matches} is defined, it should be a comma-separated list of literal strings which are replaced by corresponding locations in a comma-separated list provided in \texttt{replace}. The lists must have the same number of elements or the step will be skipped. \texttt{matchesi} is the same but case-insensitive. -\item If \texttt{fieldset} is defined, then its value is \prm{entryfield} which will be set to a value specified by further options. If \texttt{overwrite} is false for this step and the field to set already exists then the map step is ignored. If \texttt{final} is also true when \texttt{overwrite} is false for this step, then processing of the parent map stops at this point. If \texttt{append} is true, then the value to set is appended to the current value of \prm{entryfield}. \texttt{appendstrict} only appends to \prm{entryfield} if \prm{entryfield} is not empty. The value to set is specified by a mandatory one and only one of the following options: +\item If \texttt{fieldset} is defined, then its value is \prm{entryfield} which will be set to a value specified by further options. If \texttt{overwrite} is false for this step and the field to set already exists then the map step is ignored and if \texttt{final} is also true, then processing of the parent map stops at this point. If \texttt{append} is true, then the value to set is appended to the current value of \prm{entryfield}. \texttt{appendstrict} only appends to \prm{entryfield} if \prm{entryfield} is not empty. The value to set is specified by a mandatory one and only one of the following options: \begin{itemize} \item\ \texttt{fieldvalue} --- The \texttt{fieldset} \prm{entryfield} is set to the \texttt{fieldvalue} \prm{string} \item\ \texttt{null} --- The \texttt{fieldset} \prm{entryfield} is ignored, as if it did not exist in the datasource @@ -9768,17 +9818,17 @@ When using customisable bibliography lists (See \secref{use:bib:biblist}), usual Defines a bibliography list filter with \prm{name}. The \prm{specification} consists of one or more \cmd{filter} or \cmd{filteror} macros, all of which must be satisfied for the entry to pass the filter: -\cmditem{filter}[filterspec]{filter} +\cmditem{filter}[filterspec] -Filter entries according to the \prm{filterspec} and \prm{filter}. \prm{filterspec} can be one of: +Filter entries according to the \prm{filterspec}. \prm{filterspec} can be one of: \end{ltxsyntax} \begin{description} -\item[type/nottype] Entry is/is not of \bibfield{entrytype} \prm{filter} -\item[subtype/notsubtype] Entry is/is not of \bibfield{subtype} \prm{filter} -\item[keyword/notkeyword] Entry has/does not have \bibfield{keyword} \prm{filter} -\item[field/notfield] Entry has/does not have a field called \prm{filter} +\item[type=type/nottype, filter=\prm{entrytype}] Entry is/is not of \bibfield{entrytype} +\item[type=subtype/notsubtype, filter=\prm{subtype}] Entry is/is not of \bibfield{subtype} +\item[type=keyword/notkeyword, filter=\prm{keyword}] Entry has/does not have \bibfield{keyword} +\item[type=field/notfield, filter=\prm{field}] Entry has/does not have a field called \bibfield{field} \end{description} \begin{ltxsyntax} @@ -9877,7 +9927,7 @@ Or if you wanted to ignore «The» at the beginning of any title field: \cmditem{DeclareNonamestring}{specification} Defines regular expressions to strip from name fields when -generating \bibfield{fullhash} and \bibfield{uniquename}. The \prm{specification} is an undelimited list of \cmd{nonamestring} directives which specify the regular expressions to remove from particular name fields. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. +generating \bibfield{fullhash}, \bibfield{fullhashraw} and \bibfield{uniquename}. The \prm{specification} is an undelimited list of \cmd{nonamestring} directives which specify the regular expressions to remove from particular name fields. Spaces, tabs and line endings may be used freely to visually arrange the \prm{specification}. Blank lines are not permissible. This command may only be used in the preamble. \cmditem{nonamestring}{namefield or datafield name set}{regexp} @@ -10496,6 +10546,10 @@ Expands to \prm{true} if the \prm{string} is equal to the current in scope uniqu Expands to \prm{true} if the \prm{string} is equal to the current in scope alphabetic label name template name (see \ref{aut:ctm:srt}), and to \prm{false} otherwise. +\cmditem{ifnamehashtemplatename}{string}{true}{false} + +Expands to \prm{true} if the \prm{string} is equal to the current in scope name hash template name (see \ref{aut:cav:ni}), and to \prm{false} otherwise. + \cmditem{iffieldundef}{field}{true}{false} Expands to \prm{true} if the \prm{field} is undefined, and to \prm{false} otherwise. @@ -10834,7 +10888,7 @@ This counter indicates how many times the entry currently being processed is cit This counter holds the maximum value of \cnt{citecounter} across all entries in the current reference section. Like \cnt{citecounter} it is only available if the \opt{citecounter} option is enabled and tracks footnotes and text separately if the option is set to \texttt{context}. \cntitem{uniquename} -This counter refers to the \bibfield{labelname} list. It is set on a per-name basis. Its value is \texttt{0} if the base parts of the name (by default just the <family> part of the name) are unique, \texttt{1} if adding the other non-base parts of the name (as specified in the uniquename template defined by \cmd{DeclareUniquenameTemplate}) as initials will make it unique, and \texttt{2} if adding the full form of the non-base parts of the name are required to disambiguate the name. This information is required by author-year and author-title citation schemes which add additional parts of the name when citing different authors with the same family name. For example, (given the default \cmd{DeclareUniquenameTemplate} definition) if there is one <John Doe> and one <Edward Doe> in the list of references, this counter will be set to \texttt{1}. If there is one <John Doe> and one <Jane Doe>, the value of the counter will be \texttt{2}. If the option is set to \texttt{init}\slash \texttt{allinit}\slash \texttt{mininit}, the counter will be limited to \texttt{1}. This is useful for citations styles which use initials to disambiguate names but never print the full name in citations. If adding the initials is not sufficient to disambiguate the name, \cnt{uniquename} will also be set to \texttt{0} for that name. This feature needs to be enabled explicitly with the package option \opt{uniquename}. Note that the \cnt{uniquename} counter is local to \cmd{printnames} and that it is only set for the \bibfield{labelname} list and for the name list that \bibfield{labelname} has been derived from (typically \bibfield{author} or \bibfield{editor}). Its value is zero in any other context, i.e., it must be evaluated in the name formatting directives handling name lists. See \secref{aut:cav:amb} for further details and practical examples. This counter can be overridden on a per-namepart basis by consulting the \cmd{namepart<namepart>un} macros during name formatting, see \secref{aut:bbx:drv}. +This counter refers to the \bibfield{labelname} list. It is set on a per-name basis. Its value is \texttt{0} if the base parts of the name (by default just the <family> part of the name) are unique, \texttt{1} if adding the other non-base parts of the name (as specified in the uniquename template defined by \cmd{DeclareUniquenameTemplate}) as initials will make it unique, and \texttt{2} if adding the full form of the non-base parts of the name are required to disambiguate the name. This information is required by author-year and author-title citation schemes which add additional parts of the name when citing different authors with the same family name. For example, (given the default \cmd{DeclareUniquenameTemplate} definition) if there is one <John Doe> and one <Edward Doe> in the list of references, this counter will be set to \texttt{1}. If there is one <John Doe> and one <Jane Doe>, the value of the counter will be \texttt{2}. If the option is set to \texttt{init}\slash \texttt{allinit}\slash \texttt{mininit}\slash \texttt{minyearinit}, the counter will be limited to \texttt{1}. This is useful for citations styles which use initials to disambiguate names but never print the full name in citations. If adding the initials is not sufficient to disambiguate the name, \cnt{uniquename} will also be set to \texttt{0} for that name. This feature needs to be enabled explicitly with the package option \opt{uniquename}. Note that the \cnt{uniquename} counter is local to \cmd{printnames} and that it is only set for the \bibfield{labelname} list and for the name list that \bibfield{labelname} has been derived from (typically \bibfield{author} or \bibfield{editor}). Its value is zero in any other context, i.e., it must be evaluated in the name formatting directives handling name lists. See \secref{aut:cav:amb} for further details and practical examples. This counter can be overridden on a per-namepart basis by consulting the \cmd{namepart<namepart>un} macros during name formatting, see \secref{aut:bbx:drv}. \cntitem{uniquelist} This counter refers to the \bibfield{labelname} list. It is set on a per-field basis. Its value indicates the number of names required to disambiguate the name list if automatic \cnt{maxnames}\slash \cnt{minnames} truncation would lead to ambiguous citations. For example, if there is one work by <Doe\slash Smith\slash Johnson> and another one by <Doe\slash Edwards\slash Williams>, setting \kvopt{maxnames}{1} would lead to <Doe et al.> in both cases. In this case, \cnt{uniquelist} would be set to \texttt{2} on the \bibfield{labelname} lists of both entries because at least the first two names are required to disambiguate them. Note that the \cnt{uniquelist} counter is local to \cmd{printnames} and that it is only set for the \bibfield{labelname} list and to the name list \bibfield{labelname} has been derived from (typically \bibfield{author} or \bibfield{editor}). Its value is zero in any other context. If available, the \cnt{uniquelist} value will be used automatically by \cmd{printnames} when processing the name list, \ie it will automatically override \cnt{maxnames}\slash \cnt{minnames}. This feature needs to be enabled explicitly with the package option \opt{uniquelist}. See \secref{aut:cav:amb} for further details and practical examples. @@ -11338,7 +11392,7 @@ This command is similar to \cmd{PackageWarning} but prints the entry key of the \boolitem{pagetracker} \leavevmode\vspace{\numexpr2\baselineskip}% fix margin spilling into the text -These commands activate or deactivate the citation tracker locally (this will affect the \cmd{iffirstonpage} and \cmd{ifsamepage} test from \secref{aut:aux:tst}). They are intended for use in the definition of citation commands or anywhere in the document body. If a citation command is to be excluded from page tracking, use \cmd{pagetrackerfalse} in the \prm{precode} argument of \cmd{DeclareCiteCommand}. See \secref{aut:cbx:cbx} for details. Note that these commands have no effect if page tracking has been disabled globally. +These commands activate or deactivate the page tracker locally (this will affect the \cmd{iffirstonpage} and \cmd{ifsamepage} test from \secref{aut:aux:tst}). They are intended for use in the definition of citation commands or anywhere in the document body. If a citation command is to be excluded from page tracking, use \cmd{pagetrackerfalse} in the \prm{precode} argument of \cmd{DeclareCiteCommand}. See \secref{aut:cbx:cbx} for details. Note that these commands have no effect if page tracking has been disabled globally. \boolitem{citetracker} \leavevmode\vspace{\numexpr2\baselineskip}% fix margin spilling into the text @@ -11455,6 +11509,10 @@ Adds an exclamation mark unless it is preceded by any punctuation mark except fo Adds a question mark unless it is preceded by any punctuation mark except for an abbreviation dot. +\csitem{addslash} + +Adds a breakable slash. This command differs from the \cmd{slash} command in the \latex kernel in that a linebreak after the slash is not penalized at all. + \csitem{isdot} Turns a previously inserted literal period into an abbreviation dot. In contrast to \cmd{adddot}, nothing is inserted if this command is not preceded by a period. @@ -11520,10 +11578,6 @@ Similar to \cmd{addabbrvspace} but using a thin space. Executes \cmd{adddot} and adds a space penalized by the value of the \cnt{abbrvpenalty} counter, see \secref{use:fmt:len, aut:fmt:len} for details. -\csitem{addslash} - -Adds a breakable slash. This command differs from the \cmd{slash} command in the \latex kernel in that a linebreak after the slash is not penalized at all. - \end{ltxsyntax} Note that the commands in this section implicitly execute \cmd{unspace} to remove spurious whitespace, hence they may be used to override each other. For example, you may use \cmd{addnbspace} to transform a previously inserted interword space into a non"=breakable one and \cmd{addspace} to turn a non"=breakable space into a breakable one. @@ -11747,13 +11801,13 @@ Remove all existing bibliography string sets with \cmd{UndeclareBibstringSet}. Defines the bibliography string format for \prm{setname}. The format works exactly like an additional \prm{wrapper} format for \cmd{bibstring}. \prm{code} is executed whenever a bibliography string of \prm{setname} is printed. The text of the bibliography string is passed to \prm{code} as first and only argument. -\cmditem{UneclareBibstringSetFormat}{setname} +\cmditem{UndeclareBibstringSetFormat}{setname} Remove any bibliography string set format defined for \prm{setname}. \end{ltxsyntax} -Bibliography string sets can be useful to apply additional formatting to a number of bibliography strings at the same time. These commands are intended for use in language modules. For example in French typography it is customary to italicise Latin terms. The French language module can define a new bibliography string set called \texttt{latin} for all Latin strings and apply additional formatting only to these strings. It is not recommended to apply the formatting dierctly in the bibliography string definitions, since that can interfere with the capitalisation function. Assuming that the French language \texttt{.lbx} file only defines two Latin strings, \texttt{andothers} and \texttt{andothers}, the \texttt{.lbx} file would contain. +Bibliography string sets can be useful to apply additional formatting to a number of bibliography strings at the same time. These commands are intended for use in language modules. For example in French typography it is customary to italicise Latin terms. The French language module can define a new bibliography string set called \texttt{latin} for all Latin strings and apply additional formatting only to these strings. It is not recommended to apply the formatting directly in the bibliography string definitions, since that can interfere with the capitalisation function. Assuming that the French language \texttt{.lbx} file only defines two Latin strings, \texttt{andothers} and \texttt{ibidem}, the \texttt{.lbx} file would contain the following. \begin{ltxexample}[escapeinside={(*@}{@*)}] \DeclareBibliographyExtras{% @@ -13285,6 +13339,10 @@ Appends the \prm{code} to an internal hook executed at the beginning of every re Appends the \prm{code} to an internal hook executed at the beginning of the next reference section. The \prm{code} is executed just after setting the reference section number. +\cmditem{AtFollowingRefsections}{code} + +Appends the \prm{code} to an internal hook executed at the beginning of all reference sections following this command. The \prm{code} is executed just after setting the reference section number and just before any code executed via \cmd{AtNextRefsection}. + \cmditem{AtBeginBibliography}{code} Appends the \prm{code} to an internal hook executed at the beginning of the bibliography. The \prm{code} is executed at the beginning of the list of references, immediately after the \prm{begin code} of \cmd{defbibenvironment}. This command may only be used in the preamble. @@ -13580,7 +13638,7 @@ Name disambiguation works by taking a <base> which is composed of one or more na \cmditem{DeclareUniquenameTemplate}[name]{specification} -Defines the \opt{uniquename} template \prm{name}. The \prm{name} is optional and defaults to \prm{<global>}. +Defines the \opt{uniquename} template \prm{name}. The \prm{name} is optional and defaults to <global>. The \prm{specification} is an ordered list of \cmd{namepart} commands which define the nameparts to use in determining the uniquename information. @@ -13746,6 +13804,35 @@ Doe % Because the lists differ in the <et al.>, the names are not disambiguated. +The options \kvopt{uniquename}{minyearinit/minyearfull} are similar to \texttt{mininit\slash minfull} but they will disambiguate individual names only if they occur in identical lists of base nameparts and labelyear. Consider the following data: + +\begin{lstlisting}{} + John Smith 2000 + John Smith 2001 + Ian Smith 2020 + Brian Smith 2020 +\end{lstlisting} +% +With \kvopt{uniquename}{init/full/mininit/minfull} or , we would get: + +\begin{lstlisting}{} + J. Smith 2000 + J. Smith 2001 + I. Smith 2020 + B. Smith 2020 +\end{lstlisting} +% +With \kvopt{uniquename}{minyearinit/minyearfull}: + +\begin{lstlisting}{} + Smith 2000 + Smith 2001 + I. Smith 2020 + B. Smith 2020 +\end{lstlisting} +% +Here, as with \kvopt{uniquelist}{minyear}, the emphasis is on unique references to the bibliography items rather than unique name/person representations in the citations themselves. The two <John Smith> citations are unique within the list of basename+labelyear combinations and so need no initials. The other two citations are not unique in such a list and so have initials added. + \paragraph{Lists of Names (\opt{uniquelist})} Ambiguity is also an issue with name lists. If the \bibfield{labelname} list is truncated by the \opt{maxnames}\slash \opt{minnames} options, it may become ambiguous. This type of ambiguity is addressed by the \opt{uniquelist} option. Consider the following data: @@ -13855,6 +13942,73 @@ Vogel et al. 2001 % In the last citation, \kvopt{uniquelist}{minyear} does not override \opt{maxnames}\slash \opt{minnames} as the citation does not need disambiguating from the other two because the year is different. +\subsubsection{Name Identity} +\label{aut:cav:ni} +A lot depends on whether several names in a bibliography refer to the same person or not. By default, this is determined purely syntactically by whether or not all of the full parts of a name are identical. This can be changed however by altering the algorithm that \biber uses to calculate various hashes for names via the following command: + +\begin{ltxsyntax} + +\cmditem{DeclareNamehashTemplate}[name]{specification} + +Defines the template \prm{name} used to construct the hashes from the parts of a name. The \prm{name} is optional and defaults to <global>. + +The \prm{specification} is an ordered list of \cmd{namepart} commands which define the nameparts to use in constructing name hashes. + +\cmditem{namepart}[options]{namepart} + +\prm{namepart} is one of the datamodel nameparts defined with the \cmd{DeclareDatamodelConstant} command (see \secref{aut:bbx:drv}). The \prm{options} are: + +\begin{optionlist*} + +\choitem{hashscope}{init, full} + +The \prm{namepart} will be used in the construction of the hash for the name and the data used from the namepart to do this is one of: + +\begin{description} +\item[init]~Use only the initials of the \prm{namepart} in the hash construction +\item[full]~Use the full \prm{namepart} in the hash construction +\end{description} + +\end{optionlist*} + +\end{ltxsyntax} +% +The default namehash template is: + +\begin{ltxexample} +\DeclareNamehashTemplate{ + \namepart[hashscope=full]{family} + \namepart[hashscope=full]{given} + \namepart[hashscope=full]{prefix} + \namepart[hashscope=full]{suffix} +} +\end{ltxexample} +% +This means that these nameparts (which all must be valid datamodel nameparts declared by \cmd{DeclareDatamodelConstant}) will be used in the order specified to construct name hashes. The full namepart will be used for all nameparts. + +If there was a bibliography including, for example, several syntactic variations of a name where sometimes the full given name was present and sometimes only the initial but these referred to the same person, you could set: + +\begin{ltxexample} +\DeclareNamehashTemplate{ + \namepart[hashscope=full]{family} + \namepart[hashscope=init]{given} + \namepart[hashscope=full]{prefix} + \namepart[hashscope=full]{suffix} +} +\end{ltxexample} +% +Which would generate hashes using only the initials of the given name, thus treating <John Smith> and <J. Smith> as the same person for hashing purposes. This would prevent \biblatex from treating these as different people even though based on syntax alone (which is the default), they would be. + +\paragraph{Custom name hashes via the extended name format} + +Another way of customising name hash generation is by overriding completely the name hash construction algorithm by passing an identifier string for the name using the extended name format (\secref{use:enf}). This string will be turned into a hash as given and any name hash template will be ignored for this name. For example, to have <John Smith> and <J. Smith> seen as the same person for name identity purposes, an alternative to the above would be: + +\begin{lstlisting}[style=bibtex]{} + AUTHOR = {id=jshash, family=Smith, given=J. and id=jshash, family=Smith, given=John} +\end{lstlisting} +% +Here, the identical \prm{id} parameters of the extended name format ensure that the hashes for the two names will be the same. This has the same effect as the above example using \cmd{DeclareNamehashTemplate} and is intended for trickier situations where people change names and there is therefore no mere syntactic difference between different name forms for the same person. + \subsubsection{Trackers in Floats and \acr{TOC}/\acr{LOT}/\acr{LOF}} \label{aut:cav:flt} @@ -14821,6 +14975,7 @@ mincrossrefs &\+&\+&\_&\_&\_&\_&\_\\ minxrefs &\+&\+&\_&\_&\_&\_&\_\\ minitems &\+&\+&\_&\+&\+&\_&\_\\ minnames &\+&\+&\_&\+&\+&\_&\_\\ +namehashtemplatename &\_&\_&\+&\_&\+&\+&\+\\ nametemplates &\_&\_&\+&\_&\+&\+&\+\\ natbib &\+&\_&\_&\_&\_&\_&\_\\ nohashothers &\+&\+&\_&\+&\+&\+&\_\\ @@ -14873,13 +15028,22 @@ 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.20}{2024-03-22} +\item Added new \opt{uniquename} options \see{use:opt:pre:int} +\item Added default full date sorting templates\see{use:opt:pre} +\item Added \opt{bibdatendsep}\see{use:fmt:lng} +\item Added \cmd{AtFollowingRefsections}\see{aut:fmt:hok} +\item Added \cmd{DeclareNamehashTemplate}\see{aut:cav:ni} +\item Added \bibfield{fullhashraw}\see{aut:bbx:fld:gen} +\item Augmented Extended Name Format to enable override of name hashes\see{use:enf} +\end{release} \begin{release}{3.19}{2023-03-05} \item Added \cmd{AtNextRefsection}\see{aut:fmt:hok} \item Added \cmd{DeclareExtradateContext} option\see{aut:ctm:fld} \item Modified warning for using bibtex backend \item Enhanced \bibfield{extradate} tracking to fallback on \bibfield{labeltitle} when there is no author \end{release} - \begin{release}{3.18b}{2022-07-12} +\begin{release}{3.18b}{2022-07-12} \item Reenable \cmd{MakeUppercase}/\cmd{MakeLowercase} <patches> based on \cmd{CaseSwitch} \end{release} @@ -16644,10 +16808,10 @@ This revision history is a list of changes relevant to users of this package. Ch %\end{release} \end{changelog} - \end{document} %%% Local Variables: %%% coding: utf-8 %%% eval: (auto-fill-mode -1) %%% eval: (visual-line-mode) +%%% TeX-engine: luatex %%% End: diff --git a/macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml b/macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml new file mode 100644 index 0000000000..4b744a395c --- /dev/null +++ b/macros/latex/contrib/biblatex/doc/examples/01-introduction.run.xml @@ -0,0 +1,93 @@ +<?xml version="1.0" standalone="yes"?> +<!-- logreq request file --> +<!-- logreq version 1.0 / dtd version 1.0 --> +<!-- Do not edit this file! --> +<!DOCTYPE requests [ + <!ELEMENT requests (internal | external)*> + <!ELEMENT internal (generic, (provides | requires)*)> + <!ELEMENT external (generic, cmdline?, input?, output?, (provides | requires)*)> + <!ELEMENT cmdline (binary, (option | infile | outfile)*)> + <!ELEMENT input (file)+> + <!ELEMENT output (file)+> + <!ELEMENT provides (file)+> + <!ELEMENT requires (file)+> + <!ELEMENT generic (#PCDATA)> + <!ELEMENT binary (#PCDATA)> + <!ELEMENT option (#PCDATA)> + <!ELEMENT infile (#PCDATA)> + <!ELEMENT outfile (#PCDATA)> + <!ELEMENT file (#PCDATA)> + <!ATTLIST requests + version CDATA #REQUIRED + > + <!ATTLIST internal + package CDATA #REQUIRED + priority (9) #REQUIRED + active (0 | 1) #REQUIRED + > + <!ATTLIST external + package CDATA #REQUIRED + priority (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8) #REQUIRED + active (0 | 1) #REQUIRED + > + <!ATTLIST provides + type (static | dynamic | editable) #REQUIRED + > + <!ATTLIST requires + type (static | dynamic | editable) #REQUIRED + > + <!ATTLIST file + type CDATA #IMPLIED + > +]> +<requests version="1.0"> + <internal package="biblatex" priority="9" active="1"> + <generic>latex</generic> + <provides type="dynamic"> + <file>01-introduction.aux</file> + <file>01-introduction-blx.bib</file> + </provides> + <requires type="dynamic"> + <file>01-introduction.bbl</file> + </requires> + <requires type="static"> + <file>blx-dm.def</file> + <file>blx-compat.def</file> + <file>blx-bibtex.def</file> + <file>biblatex.def</file> + <file>standard.bbx</file> + <file>authoryear.bbx</file> + <file>authoryear.cbx</file> + <file>biblatex.cfg</file> + <file>english.lbx</file> + <file>american.lbx</file> + </requires> + </internal> + <external package="biblatex" priority="5" active="1"> + <generic>bibtex</generic> + <cmdline> + <binary>bibtex</binary> + <option>-min-crossrefs 2</option> + <infile>01-introduction</infile> + </cmdline> + <input> + <file>01-introduction.aux</file> + </input> + <output> + <file>01-introduction.bbl</file> + </output> + <provides type="dynamic"> + <file>01-introduction.bbl</file> + </provides> + <requires type="dynamic"> + <file>01-introduction.aux</file> + <file>01-introduction-blx.bib</file> + </requires> + <requires type="editable"> + <file>biblatex-examples.bib</file> + </requires> + <requires type="static"> + <file>biblatex.bst</file> + </requires> + </external> +</requests> 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 Binary files differindex d737632db1..256cdd4df4 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 diff --git a/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf Binary files differindex b37b763903..70db540047 100644 --- a/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf +++ b/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf diff --git a/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex b/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex index 44115b6acd..1d761e372a 100644 --- a/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex +++ b/macros/latex/contrib/biblatex/doc/examples/93-nameparts.tex @@ -132,6 +132,31 @@ } } +\DeclareNamehashTemplate[russian]{ + \namepart[hashscope=full]{prefix} + \namepart[hashscope=full]{family} + \namepart[hashscope=full]{suffix} + \namepart[hashscope=full]{given} + \namepart[hashscope=full]{patronymic} +} + +\DeclareNamehashTemplate[ethiopian]{ + \namepart[hashscope=full]{prefix} + \namepart[hashscope=full]{family} + \namepart[hashscope=full]{suffix} + \namepart[hashscope=full]{given} + \namepart[hashscope=full]{patronymic} + \namepart[hashscope=full]{papponymic} +} + +\DeclareNamehashTemplate[cjk]{ + \namepart[hashscope=full]{prefix} + \namepart[hashscope=full]{family} + \namepart[hashscope=full]{suffix} + \namepart[hashscope=full]{given} + \namepart[hashscope=full]{cjk} +} + \DeclareUniquenameTemplate[cjk]{ \namepart[base=true]{family} \namepart[disambiguation=full]{given} diff --git a/macros/latex/contrib/biblatex/doc/examples/94-labelprefix.tex b/macros/latex/contrib/biblatex/doc/examples/94-labelprefix.tex index e8f025078c..730817697b 100644 --- a/macros/latex/contrib/biblatex/doc/examples/94-labelprefix.tex +++ b/macros/latex/contrib/biblatex/doc/examples/94-labelprefix.tex @@ -27,26 +27,26 @@ the last bibliography in which it appears. This can be overridden by explicit assignment to particular refcontexts with the \cmd{assignrefcontext*} macros.\\ -% refcontext=none/global//global/global +% refcontext=none/global//global/global/global This is a publication by Aristotle: -\cite{aristotle:anima} % comes from refcontext=none/global/R/global/global +\cite{aristotle:anima} % comes from refcontext=none/global/R/global/global/global These are not publications by Aristotle: -\cite{yoon} % comes from default refcontext=none/global/Q/global/global due +\cite{yoon} % comes from default refcontext=none/global/Q/global/global/global due % to \assignrefcontextentries -\cite{worman} % comes from default refcontext=nty/global//global/global and not from - % nty/global/T/global/global in next refsection even though that is the +\cite{worman} % comes from default refcontext=nty/global//global/global/global and not from + % nty/global/T/global/global/global in next refsection even though that is the % last printed bib/biblist with worman in it. This is because % refcontext defaults are local to refcontexts -\cite{piccato} % comes from refcontext=none/global/Q/global/global due to \assignrefcontextcats -\cite{nussbaum} % comes from refcontext=none/global/S/global/global due to \assignrefcontextkeyws* +\cite{piccato} % comes from refcontext=none/global/Q/global/global/global due to \assignrefcontextcats +\cite{nussbaum} % comes from refcontext=none/global/S/global/global/global due to \assignrefcontextkeyws* This is another publication by Aristotle: -\cite{aristotle:physics} % comes from refcontext=none/global/R/global/global +\cite{aristotle:physics} % comes from refcontext=none/global/R/global/global/global \begin{refcontext}{rcone} -% refcontext=none/global/R/global/global +% refcontext=none/global/R/global/global/global \printbibliography[keyword=primary, title={Aristotle Publications}] % aristotle:anima and aristotle:physics default refcontext is this one \end{refcontext} @@ -55,30 +55,30 @@ This is another publication by Aristotle: % Note here that the optional argument to \newrefcontext overrides the % value set with the named refcontext \newrefcontext[labelprefix=S]{rctwo} -% refcontext=none/global/S/global/global +% refcontext=none/global/S/global/global/global \printbibliography[notkeyword=primary, title={Other publications}] \endrefcontext \begin{refcontext}[labelprefix=Q] -% refcontext=none/global/Q/global/global +% refcontext=none/global/Q/global/global/global \printbibliography[filter=cats, title={Other publications}] \end{refcontext} \begin{refcontext}[sorting=nty] -% refcontext=nty/global//global/global +% refcontext=nty/global//global/global/global \printbibliography[resetnumbers, notkeyword=primary, title={More Other publications}] % Nussbaum default refcontext is this one % piccato default refcontext is this one % yoon default refcontext is this one % worman default refcontext is this one -\cite{nussbaum} % comes from refcontext=nty/global//global/global due to weak \assignrefcontextkeyws* +\cite{nussbaum} % comes from refcontext=nty/global//global/global/global due to weak \assignrefcontextkeyws* \end{refcontext} \section*{New Refsection} \newrefsection -\cite{worman} % comes from default refcontext=nty/global/T/global/global +\cite{worman} % comes from default refcontext=nty/global/T/global/global/global \begin{refcontext}[labelprefix=T]{rcone} -% refcontext=nty/global//global/global +% refcontext=nty/global//global/global/global \printbibliography[resetnumbers, notkeyword=primary, title={More Other publications}] \end{refcontext} diff --git a/macros/latex/contrib/biblatex/latex/biblatex.def b/macros/latex/contrib/biblatex/latex/biblatex.def index 3b4c4bd68a..54ea7c23e6 100644 --- a/macros/latex/contrib/biblatex/latex/biblatex.def +++ b/macros/latex/contrib/biblatex/latex/biblatex.def @@ -1445,6 +1445,17 @@ } % ------------------------------------------------------------------ +% NAMEHASH TEMPLATE +% ------------------------------------------------------------------ + +\DeclareNamehashTemplate{ + \namepart[hashscope=full]{family} + \namepart[hashscope=full]{given} + \namepart[hashscope=full]{prefix} + \namepart[hashscope=full]{suffix} +} + +% ------------------------------------------------------------------ % SORTING % ------------------------------------------------------------------ @@ -1519,6 +1530,50 @@ } } +\DeclareSortingTemplate{ntd}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{month} + } + \sort{ + \field{day} + } + \sort{ + \field{hour} + } + \sort{ + \field{minute} + } + \sort{ + \field{second} + } + \sort{ + \field{volume} + \literal{0} + } +} + \DeclareSortingTemplate{nyt}{ \sort{ \field{presort} @@ -1548,6 +1603,50 @@ } } +\DeclareSortingTemplate{ndt}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{month} + } + \sort{ + \field{day} + } + \sort{ + \field{hour} + } + \sort{ + \field{minute} + } + \sort{ + \field{second} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } +} + \DeclareSortingTemplate{nyvt}{ \sort{ \field{presort} @@ -1577,6 +1676,50 @@ } } +\DeclareSortingTemplate{ndvt}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{month} + } + \sort{ + \field{day} + } + \sort{ + \field{hour} + } + \sort{ + \field{minute} + } + \sort{ + \field{second} + } + \sort{ + \field{volume} + \literal{0} + } + \sort{ + \field{sorttitle} + \field{title} + } +} + \DeclareSortingTemplate{anyt}{ \sort{ \field{presort} @@ -1609,6 +1752,53 @@ } } +\DeclareSortingTemplate{andt}{ + \sort{ + \field{presort} + } + \sort{ + \field{labelalpha} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{month} + } + \sort{ + \field{day} + } + \sort{ + \field{hour} + } + \sort{ + \field{minute} + } + \sort{ + \field{second} + } + \sort{ + \field{sorttitle} + \field{title} + } + \sort{ + \field{volume} + \literal{0} + } +} + \DeclareSortingTemplate{anyvt}{ \sort{ \field{presort} @@ -1641,6 +1831,53 @@ } } +\DeclareSortingTemplate{andvt}{ + \sort{ + \field{presort} + } + \sort{ + \field{labelalpha} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sortyear} + \field{year} + } + \sort{ + \field{month} + } + \sort{ + \field{day} + } + \sort{ + \field{hour} + } + \sort{ + \field{minute} + } + \sort{ + \field{second} + } + \sort{ + \field{volume} + \literal{0} + } + \sort{ + \field{sorttitle} + \field{title} + } +} + \DeclareSortingTemplate{ynt}{ \sort{ \field{presort} @@ -1667,6 +1904,47 @@ } } +\DeclareSortingTemplate{dnt}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort{ + \field{sortyear} + \field{year} + \literal{9999} + } + \sort{ + \field{month} + } + \sort{ + \field{day} + } + \sort{ + \field{hour} + } + \sort{ + \field{minute} + } + \sort{ + \field{second} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sorttitle} + \field{title} + } +} + \DeclareSortingTemplate{ydnt}{ \sort{ \field{presort} @@ -1693,6 +1971,47 @@ } } +\DeclareSortingTemplate{ddnt}{ + \sort{ + \field{presort} + } + \sort[final]{ + \field{sortkey} + } + \sort[direction=descending]{ + \field{sortyear} + \field{year} + \literal{9999} + } + \sort[direction=descending]{ + \field{month} + } + \sort[direction=descending]{ + \field{day} + } + \sort[direction=descending]{ + \field{hour} + } + \sort[direction=descending]{ + \field{minute} + } + \sort[direction=descending]{ + \field{second} + } + \sort{ + \field{sortname} + \field{author} + \field{editor} + \field{translator} + \field{sorttitle} + \field{title} + } + \sort{ + \field{sorttitle} + \field{title} + } +} + % ------------------------------------------------------------------ % DATA INHERITANCE (CROSSREF) % ------------------------------------------------------------------ diff --git a/macros/latex/contrib/biblatex/latex/biblatex.sty b/macros/latex/contrib/biblatex/latex/biblatex.sty index a006c5ecd2..316786d238 100644 --- a/macros/latex/contrib/biblatex/latex/biblatex.sty +++ b/macros/latex/contrib/biblatex/latex/biblatex.sty @@ -12,22 +12,23 @@ % particular purpose. % Set up the version strings here -\def\abx@date{2023/03/05} -\def\abx@version{3.19} +\def\abx@date{2024/03/21} +\def\abx@version{3.20} \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)} \def\abx@cptid{\abx@date\space v\abx@version\space biblatex compatibility (PK/MW)} +\def\abx@dmid{\abx@date\space v\abx@version\space biblatex datamodel (PK/MW)} % This is not updated by build script as the control file version % does not necessarily change with the package version. % This is used when writing the .bcf -\def\blx@bcfversion{3.10} +\def\blx@bcfversion{3.11} % This is not updated by build script as the bbl version % does not necessarily change with the package version. % This is used when checking the .bbl -\def\blx@bblversion{3.2} +\def\blx@bblversion{3.3} \NeedsTeXFormat{LaTeX2e}[2005/12/01] \ProvidesPackage{biblatex} @@ -340,21 +341,11 @@ \toggletrue{blx@tempa}% % kernel definition \patchcmd\addtocontents - {\let\glossary\@gobble} - {\let\glossary\@gobble - \blx@contentssafe@citecommands} + {\let} + {\blx@contentssafe@citecommands + \let} {} - {\togglefalse{blx@tempa}}% - % try tag.sto's definition - \iftoggle{blx@tempa} - {} - {\patchcmd\addtocontents - {\let\glossary\Gobble} - {\let\glossary\Gobble - \blx@contentssafe@citecommands} - {} - {% give up - \blx@err@patch{\string\addtocontents}}}% + {\blx@err@patch{\string\addtocontents}}% % patch footnote \toggletrue{blx@tempa}% \def\do#1{% @@ -1003,6 +994,9 @@ % Used to track uniquename templates \global\let\blx@untemplatespecs\@empty +% Used to track namehash templates +\global\let\blx@nhtemplatespecs\@empty + % Used to track labelalphaname templates \global\let\blx@lantemplatespecs\@empty @@ -1166,7 +1160,7 @@ \undef\blx@do \undef\blx@done} -% {<listmacro>}{<listcsname>} => matches in <listmacro> +% {<listmacro>}{<listcsname>} => elements of <listmacro> that are in <listcsname> \protected\def\blx@filter#1#2{% \def\do##1{% \ifinlistcs{##1}{#2} @@ -1191,7 +1185,7 @@ {}}% \blx@runfilter#1} -% {<listmacro>}{<listcsname>} => neg. matches in <listmacro> +% {<listmacro>}{<listcsname>} => elements of <listmacro> that are not in <listcsname> \protected\def\blx@notfilter#1#2{% \def\do##1{% \ifinlistcs{##1}{#2} @@ -6404,6 +6398,7 @@ \newrobustcmd*{\bibdateeraprefix}{\ifdef\textminus\textminus\textendash} \newrobustcmd*{\bibdateeraendprefix}{\,\bibdateeraprefix} \newrobustcmd*{\bibdatesep}{\hyphen} +\newrobustcmd*{\bibdatendsep}{\hyphen} \newrobustcmd*{\bibdaterangesep}{\bibrangedash} % date+times \newrobustcmd*{\bibdatetimesep}{\space} @@ -6766,7 +6761,7 @@ {\blx@hook@initlang \def\blx@endlang{% \blx@hook@endlang - \csname end\blx@thelangenv\endcsname + \expandafter\end\expandafter{\blx@thelangenv}% \endgroup}% \iftoggle{blx@autolangbib} {\let\blx@endlangbib\blx@endlang} @@ -6774,8 +6769,10 @@ \iftoggle{blx@autolangcite} {\let\blx@endlangcite\blx@endlang} {}% - \csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@langid}}} + \expandafter\expandafter\expandafter\begin + \expandafter\expandafter\expandafter{% + \expandafter\blx@thelangenv\expandafter}% + \expandafter{\abx@field@langid}}} {}}} {}% \def\blx@imc@mainlang{% @@ -6843,8 +6840,8 @@ \blx@hook@endlang % Polyglossia language envs are \<lang>[] \ifcsstring{blx@thelangenv}{langname} - {\csname end\abx@field@langid\endcsname} - {\csname end\blx@thelangenv\endcsname}% + {\expandafter\end\expandafter{\abx@field@langid}} + {\expandafter\end\expandafter{\blx@thelangenv}}% \endgroup}% \iftoggle{blx@autolangbib} {\let\blx@endlangbib\blx@endlang} @@ -6854,11 +6851,15 @@ {}% \ifcsstring{blx@thelangenv}{langname} {\ifdef\abx@field@langidopts - {\csname\abx@field@langid\expandafter\endcsname - \expandafter[\abx@field@langidopts]} - {\csname\abx@field@langid\endcsname}} - {\csname\blx@thelangenv\expandafter\endcsname - \expandafter{\abx@field@langid}}% + {\expandafter\expandafter\expandafter\begin + \expandafter\expandafter\expandafter{% + \expandafter\abx@field@langid\expandafter}% + \expandafter[\abx@field@langidopts]} + {\expandafter\begin\expandafter{\abx@field@langid}}} + {\expandafter\expandafter\expandafter\begin + \expandafter\expandafter\expandafter{% + \expandafter\blx@thelangenv\expandafter}% + \expandafter{\abx@field@langid}}% \blx@beglang@spacefactors}} {}}} {}% @@ -7162,11 +7163,11 @@ % this meta option is resolved by Biber \blx@DeclareBackendOption{entry,namelist,name}[string]{nametemplates} \gdef\blx@bcf@backendin@entry@nametemplates{sortingnamekeytemplatename,% - uniquenametemplatename,labelalphanametemplatename}% + uniquenametemplatename,labelalphanametemplatename,namehashtemplatename}% \gdef\blx@bcf@backendin@namelist@nametemplates{sortingnamekeytemplatename,% - uniquenametemplatename,labelalphanametemplatename}% + uniquenametemplatename,labelalphanametemplatename,namehashtemplatename}% \gdef\blx@bcf@backendin@name@nametemplates{sortingnamekeytemplatename,% - uniquenametemplatename,labelalphanametemplatename}% + uniquenametemplatename,labelalphanametemplatename,namehashtemplatename}% @@ -7250,6 +7251,7 @@ \def\do#1{% \listxadd\blx@namepartmetafields{#1namehash}% \listxadd\blx@namepartmetafields{#1fullhash}% + \listxadd\blx@namepartmetafields{#1fullhashraw}% \listxadd\blx@namepartmetafields{#1bibnamehash}} \abx@donameparts @@ -7289,6 +7291,7 @@ \do{extratitleyear}% \do{extradate}% \do{fullhash}% + \do{fullhashraw}% \do{labelalpha}% \do{labelnumber}% \do{labelprefix}% @@ -8531,9 +8534,11 @@ % does not obey skipbib). % Same as @entry@, but includes skipbib'd entries % and set children -% -% {<entrykey>}{<entrytype>}{<options>} -\protected\def\blx@bbl@entry#1#2#3{% + +% {<entrykey>}{<entrytype>}{<options>}{<citecount>} +% citecount is just ignored as it's already calculated from actual cites +% It's in the .bbl to force the .bbl to change when only the citecount changes. +\protected\def\blx@bbl@entry#1#2#3#4{% \begingroup \edef\abx@field@entrykey{\detokenize{#1}}% \blx@setoptions@type{#2}% @@ -8767,7 +8772,8 @@ \csuse{blx@labelnumber@\the\c@refsection}+1}% \edef\abx@field@localnumber{% \csuse{blx@labelnumber@\the\c@refsection}}% - \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}}% + \blx@bbl@fieldedef{labelnumber}{\abx@field@localnumber}% + \blx@bbl@fieldedef{localnumber}{\abx@field@localnumber}}% \iftoggle{blx@skipbib} {} {\blx@bbl@labelnumberwidth@numeric{}}} @@ -9580,6 +9586,8 @@ \blx@key@bibnote{\blx@theprenote}{#1}} \blx@kv@defkey{blx@bbc}{prenote}{% \blx@key@bibnote{\blx@theprenote}{#1}} +\blx@kv@defkey{blx@bhd}{prenote}{% + \blx@key@bibnote{\blx@theprenote}{#1}} \let\blx@default@thepostnote\@empty \blx@kv@defkey{blx@bibdefaults}{postnote}{% @@ -9594,7 +9602,8 @@ \blx@key@bibnote{\blx@thepostnote}{#1}} \blx@kv@defkey{blx@bbc}{postnote}{% \blx@key@bibnote{\blx@thepostnote}{#1}} - +\blx@kv@defkey{blx@bhd}{postnote}{% + \blx@key@bibnote{\blx@thepostnote}{#1}} \blx@kv@defkey{blx@bibdefaults}{locallabelwidth}{% \blx@key@locallabelwidth{#1}} @@ -9647,12 +9656,16 @@ \def\blx@printbibheading[#1]{% \let\blx@theheading\blx@default@theheading \let\blx@thetitle\blx@default@thetitle + \let\blx@theprenote\blx@default@theprenote + \let\blx@thepostnote\blx@default@thepostnote \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 + \blx@bibnote\blx@theprenote + \blx@bibnote\blx@thepostnote \endgroup} % We use this to determine whether an explicit value for resetnumbers is passed to @@ -9711,7 +9724,7 @@ {} {\listxadd\blx@dlistnames{\blx@refcontext@context @\blx@tempe @entry}% \xappto\blx@dlists{% - \blx@xml@dlist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@xml@dlist@refcontext{\blx@refcontext@sortingtemplatename}{\blx@refcontext@sortingnamekeytemplatename}{\blx@refcontext@labelprefix@real}{\blx@refcontext@uniquenametemplatename}{\blx@refcontext@labelalphanametemplatename}}{}}}% + \blx@xml@dlist{\blx@refcontext@context}{entry}{\blx@tempe}{\blx@xml@dlist@refcontext{\blx@refcontext@sortingtemplatename}{\blx@refcontext@sortingnamekeytemplatename}{\blx@refcontext@labelprefix@real}{\blx@refcontext@uniquenametemplatename}{\blx@refcontext@labelalphanametemplatename}{\blx@refcontext@namehashtemplatename}}{}}}% \ifdefvoid\blx@tempa {\blx@warn@bibempty\endgroup} {\blx@bibliography\blx@tempa}} @@ -9876,7 +9889,8 @@ \blx@locallabelwidth@finish \endgroup \blx@bibnote\blx@thepostnote - \endgroup} + \expandafter\endgroup\if@endpe\@doendpe\fi + \par} \def\blx@bibheading#1#2{% \begingroup @@ -10144,7 +10158,8 @@ \blx@refcontext@sortingnamekeytemplatename/% \blx@refcontext@labelprefix/% \blx@refcontext@uniquenametemplatename/% - \blx@refcontext@labelalphanametemplatename}% + \blx@refcontext@labelalphanametemplatename/% + \blx@refcontext@namehashtemplatename}% \xifinlist\blx@tempc\blx@sortingtemplatenames {} {\listxadd\blx@sortingtemplatenames\blx@tempc}% @@ -10175,7 +10190,7 @@ {} {\listxadd\blx@dlistnames{\blx@refcontext@context @\blx@tempe @list}% \xappto\blx@dlists{% - \blx@xml@dlist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@xml@dlist@refcontext{\blx@tempc}{\blx@refcontext@sortingnamekeytemplatename}{\blx@refcontext@labelprefix@real}{\blx@refcontext@uniquenametemplatename}{\blx@refcontext@labelalphanametemplatename}}{\csuse{blx@biblistfilters@\blx@thebiblistfilter}}}}% + \blx@xml@dlist{\blx@refcontext@context}{list}{\blx@tempe}{\blx@xml@dlist@refcontext{\blx@tempc}{\blx@refcontext@sortingnamekeytemplatename}{\blx@refcontext@labelprefix@real}{\blx@refcontext@uniquenametemplatename}{\blx@refcontext@labelalphanametemplatename}{\blx@refcontext@namehashtemplatename}}{\csuse{blx@biblistfilters@\blx@thebiblistfilter}}}}% \ifdefvoid\blx@tempa {\blx@warn@biblistempty{#2}\endgroup} {\blx@biblist\blx@tempa}} @@ -10225,8 +10240,9 @@ \blx@locallabelwidth@finish \endgroup \blx@bibnote\blx@thepostnote - \endgroup - \if@restonecol\twocolumn\fi} + \expandafter\endgroup\if@endpe\@doendpe\fi + \if@restonecol\twocolumn\fi + \par} % {<biblistname>} \newrobustcmd*{\AtBeginBiblist}[1]{\csgappto{blx@hook@biblistinit@#1}} @@ -10321,7 +10337,8 @@ \blx@refcontext@sortingnamekeytemplatename/% \blx@refcontext@labelprefix/% \blx@refcontext@uniquenametemplatename/% - \blx@refcontext@labelalphanametemplatename}% + \blx@refcontext@labelalphanametemplatename/% + \blx@refcontext@namehashtemplatename}% % Add the refcontext to the list of refcontexts so we can compare on next run \xifinlist\blx@refcontext@context\blx@refcontexts {} @@ -10338,6 +10355,9 @@ {}% \ifcsundef{blx@labelalphanametemplate@\blx@refcontext@labelalphanametemplatename} {\blx@err@invopt{labelalphanametemplate=\blx@refcontext@labelalphanametemplatename}{}} + {}% + \ifcsundef{blx@namehashtemplate@\blx@refcontext@namehashtemplatename} + {\blx@err@invopt{namehashtemplate=\blx@refcontext@namehashtemplatename}{}} {}}} % Reset to global sorting etc. when we leave a ref context (since they can't be nested) @@ -10349,12 +10369,14 @@ \gdef\blx@refcontext@sortingnamekeytemplatename{global}% \gdef\blx@refcontext@uniquenametemplatename{global}% \gdef\blx@refcontext@labelalphanametemplatename{global}% + \gdef\blx@refcontext@namehashtemplatename{global}% \blx@xdef@refcontext{% \blx@refcontext@sortingtemplatename/% \blx@refcontext@sortingnamekeytemplatename/% /% \blx@refcontext@uniquenametemplatename/% - \blx@refcontext@labelalphanametemplatename}} + \blx@refcontext@labelalphanametemplatename/% + \blx@refcontext@namehashtemplatename}} % local version of \newrefcontext \def\localrefcontext{% @@ -10388,7 +10410,8 @@ \blx@refcontext@sortingnamekeytemplatename/% \blx@refcontext@labelprefix/% \blx@refcontext@uniquenametemplatename/% - \blx@refcontext@labelalphanametemplatename}% + \blx@refcontext@labelalphanametemplatename/% + \blx@refcontext@namehashtemplatename}% % Add the refcontext to the list of refcontexts so we can compare on next run \xifinlist\blx@refcontext@context\blx@refcontexts {} @@ -10405,6 +10428,9 @@ {}% \ifcsundef{blx@labelalphanametemplate@\blx@refcontext@labelalphanametemplatename} {\blx@err@invopt{labelalphanametemplate=\blx@refcontext@labelalphanametemplatename}{}} + {}% + \ifcsundef{blx@namehashtemplate@\blx@refcontext@namehashtemplatename} + {\blx@err@invopt{namehashtemplate=\blx@refcontext@namehashtemplatename}{}} {}} \def\blx@gdef@or@def{\gdef} @@ -10414,12 +10440,14 @@ \blx@kv@defkey{blx@refcontext}{nametemplates}{% \blx@gdef@or@def\blx@refcontext@sortingnamekeytemplatename{#1}% \blx@gdef@or@def\blx@refcontext@uniquenametemplatename{#1}% - \blx@gdef@or@def\blx@refcontext@labelalphanametemplatename{#1}} + \blx@gdef@or@def\blx@refcontext@labelalphanametemplatename{#1}% + \blx@gdef@or@def\blx@refcontext@namehashtemplatename{#1}} \blx@kv@defkey{blx@refcontext}{sorting}{\blx@gdef@or@def\blx@refcontext@sortingtemplatename{#1}} \blx@kv@defkey{blx@refcontext}{sortingnamekeytemplatename}{\blx@gdef@or@def\blx@refcontext@sortingnamekeytemplatename{#1}} \blx@kv@defkey{blx@refcontext}{uniquenametemplatename}{\blx@gdef@or@def\blx@refcontext@uniquenametemplatename{#1}} \blx@kv@defkey{blx@refcontext}{labelalphanametemplatename}{\blx@gdef@or@def\blx@refcontext@labelalphanametemplatename{#1}} +\blx@kv@defkey{blx@refcontext}{namehashtemplatename}{\blx@gdef@or@def\blx@refcontext@namehashtemplatename{#1}} % labelprefix cannot be used as is because it is used to construct the internal % refcontext name which is referenced/expanded a lot all over the place. So, @@ -10451,12 +10479,13 @@ \let\blx@tempc\@empty% \def\blx@tempd{global}% \def\blx@tempe{global}% + \def\blx@tempg{global}% \blx@kv@setkeys{blx@assignrefcontextmeta}{#2}% \blx@kv@setkeys{blx@assignrefcontext}{#2}% \def\do##1{% \listxadd\blx@assignedrefcontextkeywlist{##1}% \csxdef{blx@assignedrefcontextkeyws#1@\the\c@refsection @##1}% - {\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}}% + {\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe/\blx@tempg}}% \docsvlist{#3}} % [refcontext keys]{<category1>,<category2>,...} @@ -10471,12 +10500,13 @@ \let\blx@tempc\@empty% \def\blx@tempd{global}% \def\blx@tempe{global}% + \def\blx@tempg{global}% \blx@kv@setkeys{blx@assignrefcontextmeta}{#2}% \blx@kv@setkeys{blx@assignrefcontext}{#2}% \def\do##1{% \listxadd\blx@assignedrefcontextcatlist{##1}% \csxdef{blx@assignedrefcontextcats#1@\the\c@refsection @##1}% - {\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}}% + {\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe/\blx@tempg}}% \docsvlist{#3}} % [refcontext keys]{<entrykey1>,<entrykey2>,...} @@ -10491,11 +10521,12 @@ \let\blx@tempc\@empty% \def\blx@tempd{global}% \def\blx@tempe{global}% + \def\blx@tempg{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}}% + {\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe/\blx@tempg}}% \docsvlist{#3}} % This makes sure that named refcontexts set options first @@ -10513,18 +10544,21 @@ \blx@kv@defkey{blx@assignrefcontextmeta}{labelprefix}{} \blx@kv@defkey{blx@assignrefcontextmeta}{uniquenametemplatename}{} \blx@kv@defkey{blx@assignrefcontextmeta}{labelalphanametemplatename}{} +\blx@kv@defkey{blx@assignrefcontextmeta}{namehashtemplatename}{} % 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}} + \def\blx@tempe{#1}% + \def\blx@tempg{#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}{uniquenametemplatename}{\def\blx@tempd{#1}} \blx@kv@defkey{blx@assignrefcontext}{labelalphanametemplatename}{\def\blx@tempe{#1}} +\blx@kv@defkey{blx@assignrefcontext}{namehashtemplatename}{\def\blx@tempg{#1}} % Manually force a refcontext datalist in the .bcf \newcommand*{\GenRefcontextData}[1]{% @@ -10535,15 +10569,16 @@ \def\blx@tempe{global}% \let\blx@tempf\blx@sorting% \let\blx@tempg\@empty% + \def\blx@temph{global}% \ifblank{#1} {} {\blx@kv@setkeys{blx@refcontextmanual}{#1}}% - \def\blx@tempa{\blx@tempf/\blx@tempc/\blx@tempg/\blx@tempd/\blx@tempe}% + \def\blx@tempa{\blx@tempf/\blx@tempc/\blx@tempg/\blx@tempd/\blx@tempe/\blx@temph}% \xifinlist{\blx@tempa @\blx@tempb @entry}\blx@dlistnames {} {\listxadd\blx@dlistnames{\blx@tempa @\blx@tempb @entry}% \xappto\blx@dlists{% - \blx@xml@dlist{\blx@tempa}{entry}{\blx@tempb}{\blx@xml@dlist@refcontext{\blx@tempf}{\blx@tempc}{\blx@tempg}{\blx@tempd}{\blx@tempe}}{}}}% + \blx@xml@dlist{\blx@tempa}{entry}{\blx@tempb}{\blx@xml@dlist@refcontext{\blx@tempf}{\blx@tempc}{\blx@tempg}{\blx@tempd}{\blx@tempe}{\blx@temph}}{}}}% \endgroup} % Meta option to set all name template options @@ -10555,6 +10590,7 @@ \blx@kv@defkey{blx@refcontextmanual}{sortingnamekeytemplatename}{\def\blx@tempc{#1}} \blx@kv@defkey{blx@refcontextmanual}{uniquenametemplatename}{\def\blx@tempd{#1}} \blx@kv@defkey{blx@refcontextmanual}{labelalphanametemplatename}{\def\blx@tempe{#1}} +\blx@kv@defkey{blx@refcontextmanual}{namehashtemplatename}{\def\blx@temph{#1}} \blx@kv@defkey{blx@refcontextmanual}{labelprefix}{% \def\blx@tempg{#1}% \iftoggle{blx@defernumbers} @@ -10575,6 +10611,8 @@ {}% \gappto\blx@hook@refsection@next} +\newrobustcmd*{\AtFollowingRefsections}{\gappto\blx@hook@refsection@following} + \newrobustcmd*{\newrefsection}{% \endrefcontext \ifnum\c@refsection>\z@ @@ -10608,6 +10646,7 @@ \stepcounter{blx@maxsection}% \setcounter{refsection}{\value{blx@maxsection}}% \csuse{blx@hook@refsectioninit}% + \csuse{blx@hook@refsection@following}% \csuse{blx@hook@refsection@next}% \xifinlist{\the\c@refsection}\blx@allrefsections {} @@ -10930,8 +10969,13 @@ {\noexpand\blx@refpatch@sect@memoir@i{\string#1}{#1}{#2}} {}{\noexpand\blx@err@patch{\string\memsecstarinfo}}} -\def\blx@refpatch@sect@memoir@i#1#2#3{% - \ifstrequal{#1}{#2}{#3}{}} +% we have to expand the section csname, because +% memoir saves it in a helper macro +\protected\def\blx@refpatch@sect@memoir@i#1#2#3{% + \begingroup + \edef\blx@tempa{\endgroup + \noexpand\ifstrequal{#1}{#2}}% + \blx@tempa{#3}{}} % The standard classes have \@startsection, \@sect and \@ssect. % \@startsection is used by unstarred and starred sections alike @@ -11512,7 +11556,7 @@ % refcontext defined \ifcsdef{blx@assignedrefcontextbib@aux@\the\c@refsection @#1} {\letcs\blx@refcontext@context{blx@assignedrefcontextbib@aux@\the\c@refsection @#1}} - {\blx@edef@refcontext{\blx@sorting/global//global/global}}% + {\blx@edef@refcontext{\blx@sorting/global//global/global/global}}% % assignment via keyword list \ifdef\blx@assignedrefcontextkeywlist {\def\do##1{% @@ -13346,6 +13390,14 @@ \xdef\blx@xml@uniquenametemplatenamepart#1#2#3{% ~~~~<bcf:namepart #1#2>#3</bcf:namepart>\blx@nl} +\xdef\blx@xml@namehashtemplate#1#2{% + ~~<bcf:namehashtemplate name="#1">\blx@nl% + #2% + ~~</bcf:namehashtemplate>\blx@nl} + +\xdef\blx@xml@namehashtemplatenamepart#1#2#3{% + ~~~~<bcf:namepart #1#2>#3</bcf:namepart>\blx@nl} + \xdef\blx@xml@sortingnamekeytemplate#1#2#3{% ~~<bcf:sortingnamekeytemplate name="#1" visibility="#2">\blx@nl% #3% @@ -13393,12 +13445,13 @@ \xdef\blx@xml@endsection{% ~~</bcf:section>} -\xdef\blx@xml@dlist@refcontext#1#2#3#4#5{% +\xdef\blx@xml@dlist@refcontext#1#2#3#4#5#6{% ~~~~~~~~~~~~~~~~sortingtemplatename="#1"\blx@nl ~~~~~~~~~~~~~~~~sortingnamekeytemplatename="#2"\blx@nl ~~~~~~~~~~~~~~~~labelprefix="#3"\blx@nl ~~~~~~~~~~~~~~~~uniquenametemplatename="#4"\blx@nl - ~~~~~~~~~~~~~~~~labelalphanametemplatename="#5"} + ~~~~~~~~~~~~~~~~labelalphanametemplatename="#5"\blx@nl + ~~~~~~~~~~~~~~~~namehashtemplatename="#6"} \xdef\blx@xml@dlist#1#2#3#4#5{% ~~<bcf:datalist section="#3"\blx@nl ~~~~~~~~~~~~~~~~name="#1"\blx@nl @@ -13731,6 +13784,12 @@ \eappto\blx@tempa{% \blx@xml@uniquenametemplate{##1}{\csuse{blx@uniquenametemplate@##1}}}}% \dolistloop\blx@untemplatespecs + % namehashtemplate + \eappto\blx@tempa{\blx@xml@comment{NAME HASH TEMPLATES}}% + \def\do##1{% + \eappto\blx@tempa{% + \blx@xml@namehashtemplate{##1}{\csuse{blx@namehashtemplate@##1}}}}% + \dolistloop\blx@nhtemplatespecs % sortingnamekeytemplate \eappto\blx@tempa{\blx@xml@comment{SORTING NAME KEY TEMPLATES}}% \def\do##1{% @@ -14151,6 +14210,11 @@ \def\blx@refcontext@labelalphanametemplatename{#1}} \newcommand*{\blx@lantem@namepart}[2][]{% + \ifinlist{#2}\blx@datamodel@constants@nameparts@l + {} + {\blx@error + {Invalid namepart '#2'} + {Namepart '#2' in labelalphaname template declaration '\blx@lantname' is not defined in the data model}}% \advance\blx@tempcntb\@ne \edef\blx@tempe{order="\the\blx@tempcntb"}% \let\blx@tempc\@empty @@ -14463,6 +14527,11 @@ \def\blx@refcontext@uniquenametemplatename{#1}} \newcommand*{\blx@untemp@namepart}[2][]{% + \ifinlist{#2}\blx@datamodel@constants@nameparts@l + {} + {\blx@error + {Invalid namepart '#2'} + {Namepart '#2' in uniquename template declaration '\blx@untname' is not defined in the data model}}% \advance\blx@tempcntb\@ne \edef\blx@tempe{order="\the\blx@tempcntb"}% \let\blx@tempc\@empty @@ -14485,6 +14554,43 @@ \blx@kv@defkey{blx@untemp@namepart}{disambiguation}{% disambiguation option for namepart none|inits|full|fullonly \appto\blx@tempc{ disambiguation="#1"}} +% [<specname>]{<spec>} +\newrobustcmd*{\DeclareNamehashTemplate}[2][]{% + \begingroup + \ifblank{#1} + {\def\blx@nhtname{global}}% default + {\def\blx@nhtname{#1}}% + \let\namepart\blx@nhtemp@namepart + \let\blx@tempa\@empty + \blx@tempcnta\z@ + #2% + \global\cslet{blx@namehashtemplate@\blx@nhtname}\blx@tempa + \xifinlist\blx@nhtname\blx@nhtemplatespecs + {} + {\listxadd\blx@nhtemplatespecs\blx@nhtname}% + \endgroup} +\@onlypreamble\DeclareNamehashTemplate +\blx@DeclareBackendOption{global}[xml]{namehashtemplate} +\DeclareBiblatexOption{entry,namelist,name}[string]{namehashtemplatename}{% + \def\blx@refcontext@namehashtemplatename{#1}} + +\newcommand*{\blx@nhtemp@namepart}[2][]{% + \ifinlist{#2}\blx@datamodel@constants@nameparts@l + {} + {\blx@error + {Invalid namepart '#2'} + {Namepart '#2' in name hash template declaration '\blx@nhtname' is not defined in the data model}}% + \advance\blx@tempcntb\@ne + \edef\blx@tempe{order="\the\blx@tempcntb"}% + \let\blx@tempc\@empty + \ifblank{#1} + {} + {\blx@kv@setkeys{blx@nhtemp@namepart}{#1}}% + \eappto\blx@tempa{% + \blx@xml@namehashtemplatenamepart{\blx@tempe}{\blx@tempc}{#2}}} + +\blx@kv@defkey{blx@nhtemp@namepart}{hashscope}{\def\blx@tempc{ hashscope="#1"}} + % [<templatename>]{<template>} \newrobustcmd*{\DeclareSortingNamekeyTemplate}[2][]{% \begingroup @@ -14514,6 +14620,8 @@ \expandafter\ifstrequal\expandafter{\blx@refcontext@uniquenametemplatename}{#1}} \def\iflabelalphanametemplatename#1{% \expandafter\ifstrequal\expandafter{\blx@refcontext@labelalphanametemplatename}{#1}} +\def\ifnamehashtemplatename#1{% + \expandafter\ifstrequal\expandafter{\blx@refcontext@namehashtemplatename}{#1}} \def\ifsortingnamekeytemplatename#1{% \expandafter\ifstrequal\expandafter{\blx@refcontext@sortingnamekeytemplatename}{#1}} @@ -14841,7 +14949,6 @@ %% Package options % [<entrytype,entrytype,...>]{<options>} - \newrobustcmd*{\ExecuteBibliographyOptions}[2][]{% \ifblank{#1} {\blx@kv@setkeys{blx@opt@pre}{#2}} @@ -14974,12 +15081,14 @@ \let\blx@refcontext@labelprefix@real\@empty \def\blx@refcontext@uniquenametemplatename{global}% \def\blx@refcontext@labelalphanametemplatename{global}% + \def\blx@refcontext@namehashtemplatename{global}% \blx@xdef@refcontext{% \blx@refcontext@sortingtemplatename/% \blx@refcontext@sortingnamekeytemplatename/% \blx@refcontext@labelprefix/% \blx@refcontext@uniquenametemplatename/% - \blx@refcontext@labelalphanametemplatename}% + \blx@refcontext@labelalphanametemplatename/% + \blx@refcontext@namehashtemplatename}% \listxadd\blx@refcontexts\blx@refcontext@context} \DeclareBibliographyOption[boolean]{sortcase}[true]{% @@ -15868,6 +15977,8 @@ \def\blx@opt@uniquename@allfull{allfull} \def\blx@opt@uniquename@mininit{mininit} \def\blx@opt@uniquename@minfull{minfull} +\def\blx@opt@uniquename@minyearinit{minyearinit} +\def\blx@opt@uniquename@minyearfull{minyearfull} \blx@DeclareBackendOption{entry,namelist,name}[string]{uniquename} @@ -16244,6 +16355,12 @@ Setting 'uniquename=allinit}% \blx@kv@setkeys{blx@opt@pre}{uniquename=allinit}} {}% + \ifdefstrequal\blx@uniquename\blx@opt@uniquename@minyearfull + {\blx@warn@conflopt{% + '<namepart>inits' conflicts with 'uniquename=minyearfull'.\MessageBreak + Setting 'uniquename=minyearinit}% + \blx@kv@setkeys{blx@opt@pre}{uniquename=minyearinit}} + {} \ifdefstrequal\blx@uniquename\blx@opt@uniquename@minfull {\blx@warn@conflopt{% '<namepart>inits' conflicts with 'uniquename=minfull'.\MessageBreak @@ -16357,6 +16474,7 @@ \blx@bblinput \setcounter{blx@maxsection}{0}% \csuse{blx@hook@refsectioninit}% + \csuse{blx@hook@refsection@following}% \csuse{blx@hook@refsection@next}% \csuse{abx@preamble}% \blx@inf@refsec diff --git a/macros/latex/contrib/biblatex/latex/blx-bibtex.def b/macros/latex/contrib/biblatex/latex/blx-bibtex.def index 63f1420ef4..029085349c 100644 --- a/macros/latex/contrib/biblatex/latex/blx-bibtex.def +++ b/macros/latex/contrib/biblatex/latex/blx-bibtex.def @@ -635,7 +635,7 @@ \forcsvlist{\blx@bibtexrefcontext@disable}{% nametemplates,sorting,sortingnamekeytemplatename,uniquenametemplatename, - labelalphanametemplatename} + labelalphanametemplatename,namehashtemplatename} \def\blx@assignrefcontext@disable#1{% \blx@warning{% diff --git a/macros/latex/contrib/biblatex/latex/blx-case-expl3.sty b/macros/latex/contrib/biblatex/latex/blx-case-expl3.sty index e90a4a7c11..210691098e 100644 --- a/macros/latex/contrib/biblatex/latex/blx-case-expl3.sty +++ b/macros/latex/contrib/biblatex/latex/blx-case-expl3.sty @@ -223,12 +223,50 @@ } } - -\cs_new:Npn \biblatex_text_sentencecase:nn #1 #2 +% sentence casing is a bit more involved due to expl3 changes +% <https://github.com/latex3/latex3/issues/1232> +% <https://github.com/latex3/latex3/pull/1240> +% <https://github.com/latex3/latex3/pull/1247> +% In old versions we use \text_titlecase:n +% (counter-intuitive given its name). +% In new versions that is deprecated and has to be emulated by +% a combination of \text_titlecase_first:n { \text_lowercase:n {#1} }. +% This combination would not work in old versions due to a small +% oversight, for which we add a hotfix. +% We detect new vs. old by the presence of \text_titlecase_all:n, +% which was added for the new version. +\cs_if_exist:NTF \text_titlecase_all:n { - \__biblatex_text_makeconverter:nnn {titlecase} {#1} {#2} + \cs_new_protected:Npn \biblatex_text_sentencecase:nn #1 #2 + { + \group_begin: + \bool_set_eq:NN \l_text_titlecase_check_letter_bool + \l_biblatex_titlecase_check_letter_bool + \text_titlecase_first:nn + { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1} } + { + \text_lowercase:nn + { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1} } + {#2} + } + \group_end: + } + } + { + \cs_gset:Npn \__text_change_case_break:w #1 \q__text_recursion_stop + { + \__text_change_case_break_aux:w ? #1 + } + \cs_gset:Npn \__text_change_case_break_aux:w #1 \q__text_recursion_tail + { + \__text_change_case_store:o { \use_none:n #1 } + \__text_change_case_end:w + } + \cs_new:Npn \biblatex_text_sentencecase:nn #1 #2 + { + \__biblatex_text_makeconverter:nnn {titlecase} {#1} {#2} + } } - \cs_generate_variant:Nn \biblatex_text_sentencecase:nn { Vo, xo } diff --git a/macros/latex/contrib/biblatex/latex/blx-dm.def b/macros/latex/contrib/biblatex/latex/blx-dm.def index b53f0b0c92..dc1f3d5360 100644 --- a/macros/latex/contrib/biblatex/latex/blx-dm.def +++ b/macros/latex/contrib/biblatex/latex/blx-dm.def @@ -1,5 +1,5 @@ \ProvidesFile{blx-dm.def} -[\abx@lbxid] +[\abx@dmid] % -*- mode: LaTeX -*- \newbool{dmskipout}% @@ -182,7 +182,10 @@ ) and not test {\ifinlistcs{##1}{blx@datamodel@lists}}} - {\listcsgadd{blx@datamodel@lists}{##1}} + {\listcsgadd{blx@datamodel@lists}{##1}% + \ifcsstring{blx@dm@datatype}{uri} + {\listcsgadd{blx@datamodel@lists}{##1raw}} % URL lists need a <field>raw variant + {}} {}% \ifboolexpr{% add to list of fields unless certain type/datatype etc. bool {dmskipout} @@ -294,6 +297,9 @@ \xappto\blx@bcf@datamodel@constants{\blx@xml@datamodel@constant{\blx@tempa}{#2}{#3}}% \csxdef{blx@datamodel@constant@#2}{#3}% \csxdef{blx@datamodel@constanttype@#2}{\blx@tempa}% + \ifdefstring{\blx@tempa}{list}% make an internal list for easier testing purposes + {\forcsvlist{\listcsgadd{blx@datamodel@constants@#2@l}}{#3}} + {}% \endgroup} \blx@kv@defkey{blx@datamodel@constant}{type}{% diff --git a/macros/latex/contrib/biblatex/latex/lbx/basque.lbx b/macros/latex/contrib/biblatex/latex/lbx/basque.lbx index 74170df577..feaa4f1b9d 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/basque.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/basque.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{basque}{basque} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\mbox{-}}% \protected\def\bibrangedash{\mbox{-}}% non-breaking hyphen \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -30,11 +31,11 @@ \iffieldundef{#1} {} {\mkdayzeros{\thefield{#1}}% - \iffieldundef{#2}{}{\mbox{-}}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\mbox{-}}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#3} {\bibstring{\thefield{#3}}} \stripzeros{\thefield{#3}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx b/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx index 366b6417bd..0675e5375b 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{brazilian}{brazil,portuges} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -30,11 +31,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/british.lbx b/macros/latex/contrib/biblatex/latex/lbx/british.lbx index b70c18302b..f862ecbb25 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/british.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/british.lbx @@ -2,6 +2,7 @@ [\abx@lbxid] \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -33,11 +34,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx b/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx index 8683ab6328..85b368164a 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx @@ -31,6 +31,7 @@ } \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \protected\def\bibrangedash{% \textemdash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -57,11 +58,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{\adddot}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\adddot}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx b/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx index a400f3fce5..cd968410c2 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{catalan}{catalan} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\mbox{-}}% \protected\def\bibrangedash{\addnbthinspace -\addnbthinspace}% \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -43,11 +44,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{\mbox{-}}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\mbox{-}}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\thefield{#1}}}% @@ -547,7 +548,7 @@ patentde = {{patent alemana}{pat\adddot\ al\adddot}}, patenteu = {{patent europea}{pat\adddot\ eur\adddot}}, patentfr = {{patent francesa}{pat\adddot\ fr\adddot}}, - patentuk = {{patent brit\`anica}{pat\adddot\ brit\adddot\adddot}}, + patentuk = {{patent brit\`anica}{pat\adddot\ brit\adddot}}, patentus = {{patent estatunidenca}{pat\adddot\ EUA}}, patreq = {{so\l.licitud de patent}{so\l.l\adddotspace de pat\adddot}}, patreqde = {{so\l.licitud de patent alemana}{so\l.l\adddotspace de pat\adddot\ al\adddot}}, @@ -568,23 +569,23 @@ summer = {{estiu}{est\adddot}}, autumn = {{tardor}{tard\adddot}}, winter = {{hivern}{hiv\adddot}}, -% springN = {{}{}},% FIXME: missing -% summerN = {{}{}},% FIXME: missing -% autumnN = {{}{}},% FIXME: missing -% winterN = {{}{}},% FIXME: missing -% springS = {{}{}},% FIXME: missing -% summerS = {{}{}},% FIXME: missing -% autumnS = {{}{}},% FIXME: missing -% winterS = {{}{}},% FIXME: missing -% Q1 = {{}{}},% FIXME: missing -% Q2 = {{}{}},% FIXME: missing -% Q3 = {{}{}},% FIXME: missing -% Q4 = {{}{}},% FIXME: missing -% QD1 = {{}{}},% FIXME: missing -% QD2 = {{}{}},% FIXME: missing -% QD3 = {{}{}},% FIXME: missing -% S1 = {{}{}},% FIXME: missing -% S2 = {{}{}},% FIXME: missing + springN = {{primavera boreal}{prim\adddotspace bor\adddot}}, + summerN = {{estiu boreal}{est\adddotspace bor\adddot}}, + autumnN = {{tardor boreal}{tard\adddotspace bor\adddot}}, + winterN = {{hivern boreal}{hivern\adddotspace bor\adddot}}, + springS = {{primavera austral}{prim\adddotspace aus\adddot}}, + summerS = {{estiu austral}{est\adddotspace aus\adddot}}, + autumnS = {{tardor austral}{tard\adddotspace aus\adddot}}, + winterS = {{hivern austral}{hiv\adddotspace aus\adddot}}, + Q1 = {{primer trimestre}{1r\adddotspace trim\adddot}}, + Q2 = {{segon trimestre}{2n\adddotspace trim\adddot}}, + Q3 = {{tercer trimestre}{3r\adddotspace trim\adddot}}, + Q4 = {{quart trimestre}{4t\adddotspace trim\adddot}}, + QD1 = {{primer quadrimestre}{1r\adddotspace quad\adddot}}, + QD2 = {{segon quadrimestre}{2n\adddotspace quad\adddot}}, + QD3 = {{tercer quadrimestre}{3r\adddotspace quad\adddot}}, + S1 = {{primer semestre}{1r\adddotspace sem\adddot}}, + S2 = {{segon semestre}{2n\adddotspace sem\adddot}}, am = {{a\adddotspace m\adddot}{a\adddotspace m\adddot}}, pm = {{p\adddotspace m\adddot}{p\adddotspace m\adddot}}, } diff --git a/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx b/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx index ba0b340d62..b843af4bcc 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx @@ -7,6 +7,7 @@ \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\addnbthinspace}% \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}% \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -32,11 +33,11 @@ \iffieldundef{#3} {} {\mkbibordinal{\thefield{#3}}% - \iffieldundef{#2}{}{\addnbthinspace}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkbibordinal{\thefield{#2}}% - \iffieldundef{#1}{}{\addnbthinspace}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/czech.lbx b/macros/latex/contrib/biblatex/latex/lbx/czech.lbx index 197d762daa..52a5dfbabd 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/czech.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/czech.lbx @@ -2,6 +2,7 @@ [\abx@lbxid] \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot\addnbthinspace}% \DeclareCapitalPunctuation{.!?}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -26,14 +27,13 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot - \iffieldundef{#2}{}{\thinspace}}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% \iffieldundef{#1} {} - {\iffieldundef{#3}{/}{\adddot\thinspace}}}% + {\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/danish.lbx b/macros/latex/contrib/biblatex/latex/lbx/danish.lbx index 7733f4e601..3542806f18 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/danish.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/danish.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{danish}{danish} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -27,11 +28,11 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\adddot}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx b/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx index 51cf91614e..6dd1cb6337 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx @@ -8,6 +8,7 @@ \DeclareRedundantLanguages{dutch}{dutch} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\mbox{-}}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -48,11 +49,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{\mbox{-}}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\mbox{-}}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% @@ -378,9 +379,9 @@ inpreparation = {{in voorbereiding}{in voorbereiding}}, submitted = {{ingediend}{ingedied}}, % forthcoming = {{onderweg}{onderweg}},% FIXME: check - inpress = {{in druk}{in druk}}, + inpress = {{ter\space perse}{ter\space perse}}, prepublished = {{voorpublicatie}{voorpublicatie}}, - nodate = {{geen\space datum}{{}g\adddot d\adddot}}, + nodate = {{zonder\space datum}{{}z\adddot d\adddot}}, page = {{pagina}{p\adddot}}, pages = {{pagina's}{p\adddot}}, column = {{kolom}{kol\adddot}}, @@ -544,28 +545,28 @@ beforecommonera = {{v\'o\'or gewone jaartelling}{v\adddot g\adddot j\adddot}}, annodomini = {{na Christus}{n\adddot Chr\adddot}}, beforechrist = {{voor Christus}{v\adddot Chr\adddot}}, -% circa = {{}{}},% FIXME: missing -% spring = {{}{}},% FIXME: missing -% summer = {{}{}},% FIXME: missing -% autumn = {{}{}},% FIXME: missing -% winter = {{}{}},% FIXME: missing -% springN = {{}{}},% FIXME: missing -% summerN = {{}{}},% FIXME: missing -% autumnN = {{}{}},% FIXME: missing -% winterN = {{}{}},% FIXME: missing -% springS = {{}{}},% FIXME: missing -% summerS = {{}{}},% FIXME: missing -% autumnS = {{}{}},% FIXME: missing -% winterS = {{}{}},% FIXME: missing -% Q1 = {{}{}},% FIXME: missing -% Q2 = {{}{}},% FIXME: missing -% Q3 = {{}{}},% FIXME: missing -% Q4 = {{}{}},% FIXME: missing -% QD1 = {{}{}},% FIXME: missing -% QD2 = {{}{}},% FIXME: missing -% QD3 = {{}{}},% FIXME: missing -% S1 = {{}{}},% FIXME: missing -% S2 = {{}{}},% FIXME: missing + % circa = {{}{}},% FIXME: missing + spring = {{voorjaar}{voorjaar}}, + summer = {{zomer}{zomer}}, + autumn = {{herfst}{herfst}}, + winter = {{winter}{winter}}, + springN = {{voorjaar (noordelijk halfrond)}{voorjaar (noordelijk halfrond)}}, + summerN = {{zomer (noordelijk halfrond)}{zomer (noordelijk halfrond)}}, + autumnN = {{herfst (noordelijk halfrond)}{herfst (noordelijk halfrond)}}, + winterN = {{winter (noordelijk halfrond)}{winter (noordelijk halfrond)}}, + springS = {{voorjaar (zuidelijk halfrond)}{voorjaar (zuidelijk halfrond)}}, + summerS = {{zomer (zuidelijk halfrond)}{zomer (zuidelijk halfrond)}}, + autumnS = {{herfst (zuidelijk halfrond)}{herfst (zuidelijk halfrond)}}, + winterS = {{winter (zuidelijk halfrond)}{winter (zuidelijk halfrond)}}, + Q1 = {{eerste kwartaal}{eerste kwartaal}}, + Q2 = {{tweede kwartaal}{tweede kwartaal}}, + Q3 = {{derde kwartaal}{derde kwartaal}}, + Q4 = {{vierde kwartaal}{vierde kwartaal}}, + QD1 = {{eerste tertaal}{eerste tertaal}}, + QD2 = {{tweede tertaal}{tweede tertaal}}, + QD3 = {{derde tertaal}{derde tertaal}}, + S1 = {{eerste semester}{eerste semester}}, + S2 = {{tweede semester}{tweede semester}}, am = {{a\adddot m\adddot}{a\adddot m\adddot}}, pm = {{p\adddot m\adddot}{p\adddot m\adddot}}, } diff --git a/macros/latex/contrib/biblatex/latex/lbx/english.lbx b/macros/latex/contrib/biblatex/latex/lbx/english.lbx index cf67033de1..622a03f6b7 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/english.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/english.lbx @@ -5,6 +5,7 @@ canadian,australian,newzealand,USenglish,UKenglish} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \def\finalandcomma{\addcomma}% @@ -40,12 +41,12 @@ canadian,australian,newzealand,USenglish,UKenglish} {} {\mkmonthzeros{\thefield{#2}}% \iffieldundef{#3} - {\iffieldundef{#1}{}{/}} + {\iffieldundef{#1}{}{\bibdatesep}} {/}}% \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx b/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx index e91b3e4608..919de1e18e 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx @@ -12,6 +12,7 @@ \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% % dashes: may be either \textendash or \textemdash \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -37,10 +38,10 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} - {\mkmonthzeros{\thefield{#2}}\adddot}% + {\mkmonthzeros{\thefield{#2}}\bibdatesep}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx b/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx index 1390c564cf..1e189340e0 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx @@ -25,6 +25,7 @@ } \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot\addnbthinspace}% % dashes: may be either \textendash or \textemdash \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -52,14 +53,13 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot - \iffieldundef{#2}{}{\thinspace}}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% \iffieldundef{#1} {} - {\iffieldundef{#3}{/}{\adddot\thinspace}}}% + {\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% @@ -432,10 +432,10 @@ ofseries = {{sarjassa}{sarjassa}}, number = {{numero}{nro}}, chapter = {{luku}{luku}}, - bathesis = {{tutkielma}{tutkielma}},% FIXME: unsure - mathesis = {{tutkielma}{tutkielma}},% FIXME: unsure - phdthesis = {{tohtorinv\"ait\"oskirja}{tohtorinv\"ait\"oskirja}}, - candthesis = {{kanditaatintutkielma}{kanditaatintutkielma}},% Literal translation of "Candidate thesis". + bathesis = {{kandidaatintutkielma}{kandidaatintutkielma}}, + mathesis = {{pro gradu -tutkielma}{pro gradu -tutkielma}}, + phdthesis = {{v\"ait\"oskirja}{v\"ait\"oskirja}}, + candthesis = {{kandidaatintutkielma}{kandidaatintutkielma}},% Literal translation of "Candidate thesis". resreport = {{tutkimusraportti}{tutkimusraportti}}, techreport = {{tekninen raportti}{tekninen raportti}},% Literal translation of "technical report". software = {{ohjelmisto}{ohjelmisto}}, @@ -443,7 +443,7 @@ audiocd = {{\"a\"ani-CD}{\"a\"ani-CD}}, version = {{versio}{versio}}, url = {{url}{url}}, - urlfrom = {{saatavilla osoitteesta}{saatavilla osoitteesta}},% FIXME: unsure + urlfrom = {{saatavissa}{saatavissa}}, urlseen = {{viitattu}{viitattu}}, inpreparation = {{valmisteilla}{valmisteilla}},% FIXME: unsure submitted = {{l\"ahetetty}{l\"ahetetty}},% FIXME: unsure @@ -552,23 +552,23 @@ fromspanish = {{espanjan kielest\"a}{espanjan kielest\"a}}, fromswedish = {{ruotsin kielest\"a}{ruotsin kielest\"a}}, countryde = {{Saksa}{DE}}, - countryeu = {{Euroopan Unioni}{EU}}, - countryep = {{Euroopan Unioni}{EP}}, + countryeu = {{Euroopan unioni}{EU}}, + countryep = {{Euroopan unioni}{EP}}, countryfr = {{Ranska}{FR}}, countryuk = {{Iso-Britannia}{GB}}, countryus = {{Yhdysvallat}{US}}, patent = {{patentti}{pat\adddot}}, patentde = {{saksalainen patentti}{saksalainen pat\adddot}}, - patenteu = {{Euroopan Unionin patentti}{Euroopan Unionin pat\adddot}}, + patenteu = {{eurooppapatentti}{eurooppapat\adddot}}, patentfr = {{ranskalainen patentti}{ranskalainen pat\adddot}}, patentuk = {{isobritannialainen patentti}{isobritannialainen pat\adddot}}, patentus = {{yhdysvaltalainen patentti}{yhdysvaltalainen pat\adddot}}, - patreq = {{patenttihakemus}{pat\adddot\ hak\adddot}}, - patreqde = {{saksalainen patenttihakemus}{saksalainen pat\adddot\ hak\adddot}}, - patreqeu = {{Euroopan Unionin patenttihakemus}{Euroopan Unionin pat\adddot\ hak\adddot}}, - patreqfr = {{ranskalainen patenttihakemus}{ranskalainen pat\adddot\ hak\adddot}}, - patrequk = {{isobritannialainen patenttihakemus}{isobritannialainen pat\adddot\ hak\adddot}}, - patrequs = {{yhdysvaltalainen patenttihakemus}{yhdysvaltalainen pat\adddot\ hak\adddot}}, + patreq = {{patenttihakemus}{pat\adddot hak\adddot}}, + patreqde = {{saksalainen patenttihakemus}{saksalainen pat\adddot hak\adddot}}, + patreqeu = {{eurooppapatenttihakemus}{eurooppapatenttihakemus}},% Although technically correct, eur\adddot pat\adddot hak\adddot is not a clear abbreviation. + patreqfr = {{ranskalainen patenttihakemus}{ranskalainen pat\adddot hak\adddot}}, + patrequk = {{isobritannialainen patenttihakemus}{isobritannialainen pat\adddot hak\adddot}}, + patrequs = {{yhdysvaltalainen patenttihakemus}{yhdysvaltalainen pat\adddot hak\adddot}}, file = {{tiedosto}{tiedosto}}, library = {{kirjasto}{kirjasto}}, abstract = {{tiivistelm\"a}{tiivistelm\"a}}, diff --git a/macros/latex/contrib/biblatex/latex/lbx/french.lbx b/macros/latex/contrib/biblatex/latex/lbx/french.lbx index 3638ae8fa8..6b3aae44e3 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/french.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/french.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{french}{french} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{-}% \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -30,11 +31,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/galician.lbx b/macros/latex/contrib/biblatex/latex/lbx/galician.lbx index dbd5a0071a..8e3a20cff4 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/galician.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/galician.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{galician}{galician} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -30,11 +31,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/german.lbx b/macros/latex/contrib/biblatex/latex/lbx/german.lbx index 403ead3554..aa47d570fd 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/german.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/german.lbx @@ -4,6 +4,8 @@ \DeclareRedundantLanguages{german}{german,ngerman,austrian,naustrian,nswissgerman,swissgerman} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot\addnbthinspace}% + \renewrobustcmd*{\bibdatendsep}{\adddot\addnbspace}% \DeclareCapitalPunctuation{.:!?}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -28,14 +30,13 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot - \iffieldundef{#2}{}{\thinspace}}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} - {\mkmonthzeros{\thefield{#2}}% + {\iffieldundef{#3}{\mkbibmonth{\thefield{#2}}}{\mkmonthzeros{\thefield{#2}}}% \iffieldundef{#1} {} - {\iffieldundef{#3}{/}{\adddot\thinspace}}}% + {\iffieldundef{#3}{\bibdatendsep}{\bibdatesep}}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/greek.lbx b/macros/latex/contrib/biblatex/latex/lbx/greek.lbx index ee1d664bfc..f9c41fa06e 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/greek.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/greek.lbx @@ -39,6 +39,7 @@ \DeclareRedundantLanguages{greek}{greek} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \DeclareCapitalPunctuation{.!;?}% \let\finalandcomma=\empty \protected\def\bibrangedash{% @@ -65,11 +66,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx b/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx index c6e051c529..aa8a8125b3 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx @@ -11,6 +11,7 @@ % The beginning of this is the same as for Danish, since conventions are similar \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -34,11 +35,11 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\adddot}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/italian.lbx b/macros/latex/contrib/biblatex/latex/lbx/italian.lbx index 6804011ad2..72efcdbde6 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/italian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/italian.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{italian}{italian} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -30,11 +31,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% @@ -95,105 +96,105 @@ compilers = {{compilatori}{comp\adddot}}, redactor = {{redattore}{red\adddot}}, redactors = {{redattori}{red\adddot}}, -% reviser = {{}{}},% FIXME: missing -% revisers = {{}{}},% FIXME: missing -% founder = {{}{}},% FIXME: missing -% founders = {{}{}},% FIXME: missing -% continuator = {{}{}},% FIXME: missing -% continuators = {{}{}},% FIXME: missing - collaborator = {{collaboratore}{con la collab\adddotspace di}}, - collaborators = {{collaboratore}{con la collab\adddotspace di}}, + reviser = {{revisore}{rev\adddot}}, + revisers = {{revisori}{rev\adddot}}, + founder = {{fondatore}{fond\adddot}}, + founders = {{fondatori}{fond\adddot}}, + continuator = {{continuatore}{cont\adddot}}, + continuators = {{continuatori}{cont\adddot}}, + collaborator = {{collaboratore}{collab\adddot}}, + collaborators = {{collaboratori}{collab\adddot}}, translator = {{traduttore}{trad\adddot}}, translators = {{traduttori}{trad\adddot}}, commentator = {{commentatore}{comment\adddot}}, commentators = {{commentatori}{comment\adddot}}, annotator = {{annotatore}{annot\adddot}}, - annotators = {{annotatore}{annot\adddot}}, + annotators = {{annotatori}{annot\adddot}}, commentary = {{commenti}{comm\adddot}}, annotations = {{annotazioni}{annot\adddot}}, introduction = {{introduzione}{introd\adddot}}, foreword = {{prefazione}{pref\adddot}}, afterword = {{postfazione}{postf\adddot}}, -% editortr = {{}{}},% FIXME: missing -% editorstr = {{}{}},% FIXME: missing -% editorco = {{}{}},% FIXME: missing -% editorsco = {{}{}},% FIXME: missing -% editoran = {{}{}},% FIXME: missing -% editorsan = {{}{}},% FIXME: missing -% editorin = {{}{}},% FIXME: missing -% editorsin = {{}{}},% FIXME: missing -% editorfo = {{}{}},% FIXME: missing -% editorsfo = {{}{}},% FIXME: missing -% editoraf = {{}{}},% FIXME: missing -% editorsaf = {{}{}},% FIXME: missing -% editortrco = {{}{}},% FIXME: missing -% editorstrco = {{}{}},% FIXME: missing -% editortran = {{}{}},% FIXME: missing -% editorstran = {{}{}},% FIXME: missing -% editortrin = {{}{}},% FIXME: missing -% editorstrin = {{}{}},% FIXME: missing -% editortrfo = {{}{}},% FIXME: missing -% editorstrfo = {{}{}},% FIXME: missing -% editortraf = {{}{}},% FIXME: missing -% editorstraf = {{}{}},% FIXME: missing -% editorcoin = {{}{}},% FIXME: missing -% editorscoin = {{}{}},% FIXME: missing -% editorcofo = {{}{}},% FIXME: missing -% editorscofo = {{}{}},% FIXME: missing -% editorcoaf = {{}{}},% FIXME: missing -% editorscoaf = {{}{}},% FIXME: missing -% editoranin = {{}{}},% FIXME: missing -% editorsanin = {{}{}},% FIXME: missing -% editoranfo = {{}{}},% FIXME: missing -% editorsanfo = {{}{}},% FIXME: missing -% editoranaf = {{}{}},% FIXME: missing -% editorsanaf = {{}{}},% FIXME: missing -% editortrcoin = {{}{}},% FIXME: missing -% editorstrcoin = {{}{}},% FIXME: missing -% editortrcofo = {{}{}},% FIXME: missing -% editorstrcofo = {{}{}},% FIXME: missing -% editortrcoaf = {{}{}},% FIXME: missing -% editorstrcoaf = {{}{}},% FIXME: missing -% editortranin = {{}{}},% FIXME: missing -% editorstranin = {{}{}},% FIXME: missing -% editortranfo = {{}{}},% FIXME: missing -% editorstranfo = {{}{}},% FIXME: missing -% editortranaf = {{}{}},% FIXME: missing -% editorstranaf = {{}{}},% FIXME: missing -% translatorco = {{}{}},% FIXME: missing -% translatorsco = {{}{}},% FIXME: missing -% translatoran = {{}{}},% FIXME: missing -% translatorsan = {{}{}},% FIXME: missing -% translatorin = {{}{}},% FIXME: missing -% translatorsin = {{}{}},% FIXME: missing -% translatorfo = {{}{}},% FIXME: missing -% translatorsfo = {{}{}},% FIXME: missing -% translatoraf = {{}{}},% FIXME: missing -% translatorsaf = {{}{}},% FIXME: missing -% translatorcoin = {{}{}},% FIXME: missing -% translatorscoin = {{}{}},% FIXME: missing -% translatorcofo = {{}{}},% FIXME: missing -% translatorscofo = {{}{}},% FIXME: missing -% translatorcoaf = {{}{}},% FIXME: missing -% translatorscoaf = {{}{}},% FIXME: missing -% translatoranin = {{}{}},% FIXME: missing -% translatorsanin = {{}{}},% FIXME: missing -% translatoranfo = {{}{}},% FIXME: missing -% translatorsanfo = {{}{}},% FIXME: missing -% translatoranaf = {{}{}},% FIXME: missing -% translatorsanaf = {{}{}},% FIXME: missing -% organizer = {{}{}},% FIXME: missing -% organizers = {{}{}},% FIXME: missing -% byorganizer = {{}{}},% FIXME: missing + editortr = {{curatore e traduttore}{cur\adddotspace e trad\adddot}}, + editorstr = {{curatori e traduttori}{cur\adddotspace e trad\adddot}}, + editorco = {{curatore e commentatore}{cur\adddotspace e comm\adddot}}, + editorsco = {{curatori e commentatori}{cur\adddotspace e comm\adddot}}, + editoran = {{curatore e annotatore}{cur\adddotspace e annot\adddot}}, + editorsan = {{curatori e annotatori}{cur\adddotspace e annot\adddot}}, + editorin = {{curatore e introduzione}{cur\adddotspace e introd\adddot}}, + editorsin = {{curatori e introduzione}{cur\adddotspace e introd\adddot}}, + editorfo = {{curatore e prefazione}{cur\adddotspace e pref\adddot}}, + editorsfo = {{curatori e prefazione}{cur\adddotspace e pref\adddot}}, + editoraf = {{curatore e postfazione}{cur\adddotspace e postf\adddot}}, + editorsaf = {{curatori e postfazione} {cur\adddotspace e postf\adddot}}, + editortrco = {{curatore, traduttore\finalandcomma\ e commentatore}{ed.,\addabbrvspace trad\adddot\finalandcomma\ e comm\adddot}}, + editorstrco = {{curatori, traduttori\finalandcomma\ e commentatori}{eds.,\addabbrvspace trad\adddot\finalandcomma\ e comm\adddot}}, + editortran = {{curatore, traduttore\finalandcomma\ e annotatore}{ed.,\addabbrvspace trad\adddot\finalandcomma\ e annot\adddot}}, + editorstran = {{curatori, traduttori\finalandcomma\ e annotatori}{eds.,\addabbrvspace trad\adddot\finalandcomma\ e annot\adddot}}, + editortrin = {{curatore, traduttore\finalandcomma\ e introduzione}{ed.,\addabbrvspace trad\adddot\finalandcomma\ e introd\adddot}}, + editorstrin = {{curatori, traduttori\finalandcomma\ e introduzione}{eds.,\addabbrvspace trad\adddot\finalandcomma\ e introd\adddot}}, + editortrfo = {{curatore, traduttore\finalandcomma\ e prefazione}{ed.,\addabbrvspace trad\adddot\finalandcomma\ e pref\adddot}}, + editorstrfo = {{curatori, traduttori\finalandcomma\ e prefazione}{eds.,\addabbrvspace trad\adddot\finalandcomma\ e pref\adddot}}, + editortraf = {{curatore, traduttore\finalandcomma\ e postfazione}{ed.,\addabbrvspace trad\adddot\finalandcomma\ e postf\adddot}}, + editorstraf = {{curatori, traduttori\finalandcomma\ e postfazione}{eds.,\addabbrvspace trad\adddot\finalandcomma\ e postf\adddot}}, + editorcoin = {{curatore, commentatore\finalandcomma\ e introduzione}{ed.,\addabbrvspace comm\adddot\finalandcomma\ e introd\adddot}}, + editorscoin = {{curatori, commentatori\finalandcomma\ e introduzione}{eds.,\addabbrvspace comm\adddot\finalandcomma\ e introd\adddot}}, + editorcofo = {{curatore, commentatore\finalandcomma\ e prefazione}{ed.,\addabbrvspace comm\adddot\finalandcomma\ e pref\adddot}}, + editorscofo = {{curatori, commentatori\finalandcomma\ e prefazione}{eds.,\addabbrvspace comm\adddot\finalandcomma\ e pref\adddot}}, + editorcoaf = {{curatore, commentatore\finalandcomma\ e postfazione}{ed.,\addabbrvspace comm\adddot\finalandcomma\ e postf\adddot}}, + editorscoaf = {{curatori, commentatori\finalandcomma\ e postfazione}{eds.,\addabbrvspace comm\adddot\finalandcomma\ e postf\adddot}}, + editoranin = {{curatore, annotatore\finalandcomma\ e introduzione}{ed.,\addabbrvspace annot\adddot\finalandcomma\ e introd\adddot}}, + editorsanin = {{curatori, annotatori\finalandcomma\ e introduzione}{eds.,\addabbrvspace annot\adddot\finalandcomma\ e introd\adddot}}, + editoranfo = {{curatore, annotatore\finalandcomma\ e prefazione}{ed.,\addabbrvspace annot\adddot\finalandcomma\ e pref\adddot}}, + editorsanfo = {{curatori, annotatori\finalandcomma\ e prefazione}{eds.,\addabbrvspace annot\adddot\finalandcomma\ e pref\adddot}}, + editoranaf = {{curatore, annotatore\finalandcomma\ e postfazione}{ed.,\addabbrvspace annot\adddot\finalandcomma\ e postf\adddot}}, + editorsanaf = {{curatori, annotatori\finalandcomma\ e postfazione}{eds.,\addabbrvspace annot\adddot\finalandcomma\ e postf\adddot}}, + editortrcoin = {{curatore, traduttore, commentatore\finalandcomma\ e introduzione}{cur.,\addabbrvspace trad\adddot, comm\adddot\finalandcomma\ e introd\adddot}}, + editorstrcoin = {{curatori, traduttori, commentatori\finalandcomma\ e introduzione}{cur.,\addabbrvspace trad\adddot, comm\adddot\finalandcomma\ e introd\adddot}}, + editortrcofo = {{curatore, traduttore, commentatore\finalandcomma\ e prefazione}{cur.,\addabbrvspace trad\adddot, comm\adddot\finalandcomma\ e pref\adddot}}, + editorstrcofo = {{curatori, traduttori, commentatori\finalandcomma\ e prefazione}{cur.,\addabbrvspace trad\adddot, comm\adddot\finalandcomma\ e pref\adddot}}, + editortrcoaf = {{curatore, traduttore, commentatore\finalandcomma\ e postfazione}{cur.,\addabbrvspace trad\adddot, comm\adddot\finalandcomma\ e postf\adddot}}, + editorstrcoaf = {{curatori, traduttori, commentatori\finalandcomma\ e postfazione}{cur.,\addabbrvspace trad\adddot, comm\adddot\finalandcomma\ e postf\adddot}}, + editortranin = {{curatore, traduttore, annotatore\finalandcomma\ e introduzione}{cur.,\addabbrvspace trad\adddot, annot\adddot\finalandcomma\ e introd\adddot}}, + editorstranin = {{curatori, traduttori, annotatori\finalandcomma\ e introduzione}{cur.,\addabbrvspace trad\adddot, annot\adddot\finalandcomma\ e introd\adddot}}, + editortranfo = {{curatore, traduttore, annotatore\finalandcomma\ e prefazione}{cur.,\addabbrvspace trad\adddot, annot\adddot\finalandcomma\ e pref\adddot}}, + editorstranfo = {{curatori, traduttori, annotatori\finalandcomma\ e prefazione}{cur.,\addabbrvspace trad\adddot, annot\adddot\finalandcomma\ e pref\adddot}}, + editortranaf = {{curatore, traduttore, annotatore\finalandcomma\ e postfazione}{cur.,\addabbrvspace trad\adddot, annot\adddot\finalandcomma\ e postf\adddot}}, + editorstranaf = {{curatori, traduttori, annotatori\finalandcomma\ e postfazione}{cur.,\addabbrvspace trad\adddot, annot\adddot\finalandcomma\ e postf\adddot}}, + translatorco = {{traduttore e commentatore}{trad\adddot\ e comm\adddot}}, + translatorsco = {{traduttori e commentatori}{trad\adddot\ e comm\adddot}}, + translatoran = {{traduttore e annotatore}{trad\adddot\ e annot\adddot}}, + translatorsan = {{traduttori e annotatori}{trad\adddot\ e annot\adddot}}, + translatorin = {{traduzione e introduzione}{trad\adddot\ e introd\adddot}}, + translatorsin = {{traduzione e introduzione}{trad\adddot\ e introd\adddot}}, + translatorfo = {{traduzione e prefazione}{trad\adddot\ e pref\adddot}}, + translatorsfo = {{traduzione e prefazione}{trad\adddot\ e pref\adddot}}, + translatoraf = {{traduzione e postfazione}{trad\adddot\ e postf\adddot}}, + translatorsaf = {{traduzione e postfazione}{trad\adddot\ e postf\adddot}}, + translatorcoin = {{traduzione, commenti\finalandcomma\ e introduzione}{trans\adddot, comm\adddot\finalandcomma\ e introd\adddot}}, + translatorscoin = {{traduzione, commenti\finalandcomma\ e introduzione}{trans\adddot, comm\adddot\finalandcomma\ e introd\adddot}}, + translatorcofo = {{traduzione, commenti\finalandcomma\ e prefazione}{trans\adddot, comm\adddot\finalandcomma\ e pref\adddot}}, + translatorscofo = {{traduzione, commenti\finalandcomma\ e prefazione}{trans\adddot, comm\adddot\finalandcomma\ e pref\adddot}}, + translatorcoaf = {{traduzione, commenti\finalandcomma\ e postfazione}{trans\adddot, comm\adddot\finalandcomma\ e postf\adddot}}, + translatorscoaf = {{traduzione, commenti\finalandcomma\ e postfazione}{trans\adddot, comm\adddot\finalandcomma\ e postf\adddot}}, + translatoranin = {{traduzione, annotazioni\finalandcomma\ e introduzione}{trans\adddot, annot\adddot\finalandcomma\ e introd\adddot}}, + translatorsanin = {{traduzione, annotazioni\finalandcomma\ e introduzione}{trans\adddot, annot\adddot\finalandcomma\ e introd\adddot}}, + translatoranfo = {{traduzione, annotazioni\finalandcomma\ e prefazione}{trans\adddot, annot\adddot\finalandcomma\ e pref\adddot}}, + translatorsanfo = {{traduzione, annotazioni\finalandcomma\ e prefazione}{trans\adddot, annot\adddot\finalandcomma\ e pref\adddot}}, + translatoranaf = {{traduzione, annotazioni\finalandcomma\ e postfazione}{trans\adddot, annot\adddot\finalandcomma\ e postf\adddot}}, + translatorsanaf = {{traduzione, annotazioni\finalandcomma\ e postfazione}{trans\adddot, annot\adddot\finalandcomma\ e postf\adddot}}, + organizer = {{organizzatore}{org\adddot}}, + organizers = {{organizzatori}{org\adddot}}, + byorganizer = {{organizzato da}{org\adddotspace da}}, byauthor = {{di}{di}}, byeditor = {{a cura di}{a cura di}}, bycompiler = {{compilato da}{comp\adddotspace da}}, byredactor = {{redatto da}{red\adddotspace da}}, -% byreviser = {{}{}},% FIXME: missing -% byreviewer = {{}{}},% FIXME: missing -% byfounder = {{}{}},% FIXME: missing -% bycontinuator = {{}{}},% FIXME: missing -% bycollaborator = {{}{}},% FIXME: missing + byreviser = {{riveduto e corretto da}{riv\adddotspace e corr\adddotspace da}}, + byreviewer = {{recensito da}{rec\adddotspace da}}, + byfounder = {{fondato da}{fond\adddotspace da}}, + bycontinuator = {{continuato da}{cont\adddotspace da}}, + bycollaborator = {{con la collaborazione di}{con la collab\adddotspace di}}, bytranslator = {{tradotto \lbx@lfromlang\ da}{trad\adddot\ \lbx@sfromlang\ da}}, bycommentator = {{commentato da}{comm\adddot\ da}}, byannotator = {{annotato da}{annot\adddot\ da}}, @@ -278,25 +279,25 @@ involumes = {{in}{in}},% FIXME: unsure jourvol = {{volume}{vol\adddot}}, jourser = {{serie}{ser\adddot}}, -% book = {{}{}},% FIXME: missing -% part = {{}{}},% FIXME: missing + book = {{libro}{libro}}, + part = {{parte}{parte}}, % issue = {{}{}},% FIXME: missing - newseries = {{nuova serie}{nuova ser\adddot}}, - oldseries = {{vecchia serie}{vecchia ser\adddot}}, + newseries = {{nuova serie}{n\adddotspace s\adddot}}, + oldseries = {{vecchia serie}{v\adddotspace s\adddot}}, edition = {{edizione}{ed\adddot}}, reprint = {{ristampa}{rist\adddot}}, reprintof = {{ristampa di}{rist\adddotspace di}}, -% reprintas = {{}{}},% FIXME: missing -% reprintfrom = {{}{}},% FIXME: missing -% translationof = {{}{}},% FIXME: missing -% translationas = {{}{}},% FIXME: missing -% translationfrom = {{}{}},% FIXME: missing -% reviewof = {{}{}},% FIXME: missing -% origpubas = {{}{}},% FIXME: missing -% origpubin = {{}{}},% FIXME: missing + reprintas = {{ristampato come}{rist\adddotspace come}}, + reprintfrom = {{ristampato da}{rist\adddotspace da}}, + translationof = {{traduzione di}{trad\adddotspace di}}, + translationas = {{traduzione italiana}{trad\adddotspace it\adddot}}, + translationfrom = {{tradotto da}{trad\adddotspace da}}, + reviewof = {{recensione di}{rec\adddotspace di}}, + origpubas = {{edizione originale}{ed\adddotspace orig\adddot}}, + origpubin = {{originariamente pubblicato in}{orig\adddotspace pub\adddotspace in}}, % astitle = {{}{}},% FIXME: missing -% bypublisher = {{}{}},% FIXME: missing - nodate = {{senza\space data}{{}n\adddot d\adddot}}, + bypublisher = {{pubblicato da}{pub\adddotspace da}}, + nodate = {{senza data}{n\adddotspace d\adddot}}, page = {{pagina}{p\adddot}}, pages = {{pagine}{pp\adddot}}, column = {{colonna}{col\adddot}}, @@ -305,8 +306,8 @@ lines = {{righe}{rr\adddot}}, verse = {{verso}{v\adddot}}, verses = {{versi}{vv\adddot}}, -% section = {{}{\S}},% FIXME: missing -% sections = {{}{\S\S}},% FIXME: missing + section = {{paragrafo}{\S}}, + sections = {{paragrafi}{\S\S}}, paragraph = {{paragrafo}{par\adddot}}, paragraphs = {{paragrafi}{par\adddot}}, pagetotal = {{pagina}{p\adddot}}, @@ -317,8 +318,8 @@ linetotals = {{righe}{rr\adddot}}, versetotal = {{verso}{v\adddot}}, versetotals = {{versi}{vv\adddot}}, -% sectiontotal = {{}{}},% FIXME: missing -% sectiontotals = {{}{}},% FIXME: missing + sectiontotal = {{paragrafo}{par\adddot}}, + sectiontotals = {{paragrafi}{par\adddot}}, paragraphtotal = {{paragrafo}{par\adddot}}, paragraphtotals = {{paragrafi}{par\adddot}}, in = {{in}{in}}, @@ -326,40 +327,40 @@ ofseries = {{di}{di}}, number = {{numero}{n\adddot}}, chapter = {{capitolo}{cap\adddot}}, -% bathesis = {{}{}},% FIXME: missing + bathesis = {{tesi di laurea}{tesi di laurea}}, mathesis = {{tesi di laurea magistrale}{tesi di laurea mag\adddot}}, phdthesis = {{tesi di dottorato}{tesi di dott\adddot}}, -% candthesis = {{}{}},% FIXME: missing + candthesis = {{candidato}{cand\adddot}}, resreport = {{rapporto di ricerca}{rapporto di ricerca}}, techreport = {{rapporto tecnico}{rapp\adddotspace tecn\adddot}}, -% software = {{}{}},% FIXME: missing -% datacd = {{}{}},% FIXME: missing -% audiocd = {{}{}},% FIXME: missing + software = {{software}{software}}, + datacd = {{CD-ROM}{CD-ROM}}, + audiocd = {{audio CD}{audio CD}}, version = {{versione}{ver\adddot}}, url = {{indirizzo}{indirizzo}}, -% urlfrom = {{}{}},% FIXME: missing - urlseen = {{visitato il}{visitato il}}, -% inpreparation = {{}{}},% FIXME: missing -% submitted = {{}{}},% FIXME: missing -% forthcoming = {{}{}},% FIXME: missing + urlfrom = {{disponibile all'indirizzo}{disp\adddotspace all'indirizzo}}, + urlseen = {{visitato il giorno}{visitato il giorno}}, + inpreparation = {{in preparazione}{in preparazione}}, + submitted = {{in valutazione}{in valutazione}}, + forthcoming = {{in pubblicazione}{in pubblicazione}}, inpress = {{in stampa}{in stampa}}, -% prepublished = {{}{}},% FIXME: missing + prepublished = {{pre-pubblicato}{pre-pubblicato}}, citedas = {{citato come}{cit\adddotspace come}}, -% thiscite = {{}{}},% FIXME: missing + thiscite = {{specialmente}{spec\adddot}}, seenote = {{vedi nota}{v\adddotspace nota}}, quotedin = {{citato da}{cit\adddotspace da}}, - idem = {{idem}{idem}}, - idemsm = {{idem}{idem}}, - idemsf = {{eadem}{eadem}}, - idemsn = {{idem}{idem}}, - idempm = {{eidem}{eidem}}, - idempf = {{eaedem}{eaedem}}, - idempn = {{eadem}{eadem}}, - idempp = {{eidem}{eidem}}, + idem = {{idem}{id\adddot}}, + idemsm = {{idem}{id\adddot}}, + idemsf = {{eadem}{ead\adddot}}, + idemsn = {{idem}{id\adddot}}, + idempm = {{eidem}{eid\adddot}}, + idempf = {{eaedem}{eaed\adddot}}, + idempn = {{eadem}{ead\adddot}}, + idempp = {{eidem}{eid\adddot}}, ibidem = {{ibidem}{ibid\adddot}}, opcit = {{cit\adddot}{cit\adddot}}, loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}}, - confer = {{cf\adddot}{cf\adddot}}, + confer = {{confronta\adddot}{cfr\adddot}}, sequens = {{s\adddot}{s\adddot}}, sequentes = {{ss\adddot}{ss\adddot}}, passim = {{passim}{pass\adddot}}, @@ -397,12 +398,12 @@ langhungarian = {{ungherese}{ungherese}}, langitalian = {{italiano}{italiano}}, langlatin = {{latino}{latino}}, -% langlatvian = {{}{}},% FIXME: missing + langlatvian = {{lettone}{lettone}}, langnorwegian = {{norvegese}{norvegese}}, langpolish = {{polacco}{polacco}}, langportuguese = {{portoghese}{portoghese}}, langrussian = {{russo}{russo}}, -% langslovak = {{}{}},% FIXME: missing + langslovak = {{slovacco}{slovacco}}, langslovene = {{sloveno}{sloveno}}, langspanish = {{spagnolo}{spagnolo}}, langswedish = {{svedese}{svedese}}, @@ -424,12 +425,12 @@ fromhungarian = {{dall'ungherese}{dall'ungherese}}, fromitalian = {{dall'italiano}{dall'italiano}}, fromlatin = {{dal latino}{dal latino}}, -% fromlatvian = {{}{}},% FIXME: missing + fromlatvian = {{dal lettone}{dal lettone}}, fromnorwegian = {{dal norvegese}{dal norvegese}}, frompolish = {{dal polacco}{dal polacco}}, fromportuguese = {{dall portoghese}{dall portoghese}}, fromrussian = {{dal russo}{dal russo}}, -% fromslovak = {{}{}},% FIXME: missing + fromslovak = {{dallo slovacco}{dallo slovacco}}, fromslovene = {{dallo sloveno}{dallo sloveno}}, fromspanish = {{dallo spagnolo}{dallo spagnolo}}, fromswedish = {{dal svedese}{dal svedese}}, @@ -459,11 +460,11 @@ beforecommonera = {{avanti Era Volgare}{a\adddot E\adddot V\adddot}}, annodomini = {{d\adddot C\adddot}{d\adddot C\adddot}}, beforechrist = {{a\adddot C\adddot}{a\adddot C\adddot}}, -% circa = {{}{}},% FIXME: missing -% spring = {{}{}},% FIXME: missing -% summer = {{}{}},% FIXME: missing -% autumn = {{}{}},% FIXME: missing -% winter = {{}{}},% FIXME: missing + circa = {{circa}{ca\adddot}}, + spring = {{primavera}{primavera}}, + summer = {{estate}{estate}}, + autumn = {{autunno}{autunno}}, + winter = {{inverno}{inverno}}, % springN = {{}{}},% FIXME: missing % summerN = {{}{}},% FIXME: missing % autumnN = {{}{}},% FIXME: missing diff --git a/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx b/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx index 22d8f43483..cf7c419081 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx @@ -24,6 +24,7 @@ dateyear} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \providetoggle{lbx@lv@datewhen}% \providecommand*{\lbx@lv@requestwhendate}{\toggletrue{lbx@lv@datewhen}}% \DeclareCapitalPunctuation{.!?}% @@ -58,10 +59,10 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} - {\mkmonthzeros{\thefield{#2}}\adddot}% + {\mkmonthzeros{\thefield{#2}}\bibdatesep}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx b/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx index 07482617ff..0c38bfe803 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx @@ -465,8 +465,8 @@ sectiontotals = {{paragrafai}{paragr\adddot}}, paragraphtotal = {{pastraipa}{pastr\adddot}}, paragraphtotals = {{pastraipos}{pastr\adddot}}, - in = {{in}{in}}, -% inseries = {{}{}},%or in + in = {{iš}{iš}}, +% inseries = {{}{}},%or iš ofseries = {{iš}{iš}}, number = {{numeris}{Nr\adddot}}, chapter = {{skyrius}{sk\adddot}}, diff --git a/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx b/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx index daff5ea601..cf411e3558 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{magyar}{magyar,hungarian} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\nobreakspace}% \DeclareCapitalPunctuation{.!?}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -42,11 +43,11 @@ {\dateeraprintpre{#1}% \iffieldundef{#2}{\thefield{#1}} {\mkbibordinal{\thefield{#1}}}}% - \iffieldundef{#2}{}{\nobreakspace}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}\adddot - \iffieldundef{#3}{}{\nobreakspace}}% + \iffieldundef{#3}{}{\bibdatesep}}% \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}\lbx@hu@ifdayrange{}{\adddot}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/marathi.lbx b/macros/latex/contrib/biblatex/latex/lbx/marathi.lbx index 2357b48b3e..50401425c8 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/marathi.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/marathi.lbx @@ -23,6 +23,7 @@ \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{-}% \let\finalandcomma=\empty % there is some housekeeping to do if we want to use non-ASCII digits @@ -158,11 +159,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx b/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx index 5c6875ff50..6be1266ab4 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{norsk}{norwegian,nynorsk} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -27,11 +28,11 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\adddot}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/polish.lbx b/macros/latex/contrib/biblatex/latex/lbx/polish.lbx index 37f10a4fcc..7f51b1c1c0 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/polish.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/polish.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{polish}{polish} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot\addnbthinspace}% \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}% \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -28,14 +29,13 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot - \iffieldundef{#2}{}{\thinspace}}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% \iffieldundef{#1} {} - {\iffieldundef{#3}{/}{\adddot\thinspace}}}% + {\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx b/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx index 8ec26543e0..5585c08099 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{portuguese}{portuges,brazil} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -30,11 +31,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/romanian.lbx b/macros/latex/contrib/biblatex/latex/lbx/romanian.lbx index bc95e1ef55..035c34d912 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/romanian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/romanian.lbx @@ -14,6 +14,7 @@ \endinput} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \savecommand\newunitpunct \renewcommand*{\newunitpunct}{\addcomma\space}% \savecommand\intitlepunct @@ -60,10 +61,10 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\thefield{#3}\adddot}% + {\thefield{#3}\bibdatesep}% \iffieldundef{#2} {} - {\thefield{#2}\adddot}% + {\thefield{#2}\bibdatesep}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/russian.lbx b/macros/latex/contrib/biblatex/latex/lbx/russian.lbx index b0e6ca595e..d19d039790 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/russian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/russian.lbx @@ -31,6 +31,7 @@ } \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \protected\def\bibrangedash{% \textemdash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -57,11 +58,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{\adddot}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\adddot}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx b/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx index cf540ec3ed..87082f2047 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx @@ -17,6 +17,7 @@ \DeclareRedundantLanguages{serbian}{serbian} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\addnbspace}% \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}% \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}% \protected\def\mkbibmascord{\mkbibordinal}% @@ -40,9 +41,9 @@ {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}% \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}% - \iffieldundef{#2}{}{\addnbspace}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2}{}{\mkbibordinal{\thefield{#2}}% - \iffieldundef{#1}{}{\addnbspace}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}% {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}}% \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{% diff --git a/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx b/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx index b7e04658d2..875bf3a9e3 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx @@ -26,6 +26,7 @@ \DeclareRedundantLanguages{serbianc}{serbianc} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\addnbspace}% \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}% \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}% \protected\def\mkbibmascord{\mkbibordinal}% @@ -49,9 +50,9 @@ {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}% \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}% - \iffieldundef{#2}{}{\addnbspace}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2}{}{\mkbibordinal{\thefield{#2}}% - \iffieldundef{#1}{}{\addnbspace}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}% {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}}% \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{% diff --git a/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx b/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx index 421d80a4b7..d7a3a7b515 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx @@ -2,6 +2,7 @@ [\abx@lbxid] \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot\addnbthinspace}% \DeclareCapitalPunctuation{.!?}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -28,14 +29,13 @@ \protected\def\mkbibdateshort#1#2#3{% \iffieldundef{#3} {} - {\mkdayzeros{\thefield{#3}}\adddot - \iffieldundef{#2}{}{\thinspace}}% + {\mkdayzeros{\thefield{#3}}\bibdatesep}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% \iffieldundef{#1} {} - {\iffieldundef{#3}{/}{\adddot\thinspace}}}% + {\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx b/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx index 0efc0295f4..f723f5401a 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{slovene}{slovene,slovenian} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\addnbthinspace}% \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}% \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -27,11 +28,11 @@ \iffieldundef{#3} {} {\mkbibordinal{\thefield{#3}}% - \iffieldundef{#2}{}{\addnbthinspace}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkbibordinal{\thefield{#2}}% - \iffieldundef{#1}{}{\addnbthinspace}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx b/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx index cd055ec351..d2a95ad3f4 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{spanish}{spanish} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\mbox{-}}% \protected\def\bibrangedash{\mbox{-}}% non-breaking hyphen \let\finalandcomma=\empty \let\finalandsemicolon=\empty @@ -28,11 +29,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{\mbox{-}}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\mbox{-}}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx b/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx index 9bf171b2c3..4d7163323d 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx @@ -24,6 +24,7 @@ \DeclareRedundantLanguages{swedish}{swedish} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\mbox{-}}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -62,11 +63,11 @@ {\iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}% - \iffieldundef{#2}{}{\mbox{-}}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#3}{}{\mbox{-}}}% + \iffieldundef{#3}{}{\bibdatesep}}% \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx b/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx index 9d1b8db04d..4764bf7e00 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx @@ -4,6 +4,7 @@ \DeclareRedundantLanguages{turkish}{turkish} \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{/}% \DeclareCapitalPunctuation{.!?}% \protected\def\bibrangedash{% \textendash\penalty\hyphenpenalty}% breakable dash @@ -29,11 +30,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{/}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{/}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% diff --git a/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx b/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx index e792c25a64..ecb196e080 100644 --- a/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx +++ b/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx @@ -31,6 +31,7 @@ } \DeclareBibliographyExtras{% + \renewrobustcmd*{\bibdatesep}{\adddot}% \protected\def\bibrangedash{% \textemdash\penalty\hyphenpenalty}% breakable dash \let\finalandcomma=\empty @@ -57,11 +58,11 @@ \iffieldundef{#3} {} {\mkdayzeros{\thefield{#3}}% - \iffieldundef{#2}{}{\adddot}}% + \iffieldundef{#2}{}{\bibdatesep}}% \iffieldundef{#2} {} {\mkmonthzeros{\thefield{#2}}% - \iffieldundef{#1}{}{\adddot}}% + \iffieldundef{#1}{}{\bibdatesep}}% \iffieldbibstring{#1} {\bibstring{\thefield{#1}}} {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}% |