summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-08-20 03:01:54 +0000
committerNorbert Preining <norbert@preining.info>2020-08-20 03:01:54 +0000
commite2dfc4cc8dc03d323073de46903005e3a9d12255 (patch)
tree283bcf119eff28b9f992e1005d38353626efcd2e /macros/latex/contrib/biblatex
parent75955a0dece2b1996d51d4f43ad5778cd6d5b4cc (diff)
CTAN sync 202008200301
Diffstat (limited to 'macros/latex/contrib/biblatex')
-rw-r--r--macros/latex/contrib/biblatex/CHANGES.md210
-rw-r--r--macros/latex/contrib/biblatex/README2
-rw-r--r--macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib10
-rw-r--r--macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst44
-rw-r--r--macros/latex/contrib/biblatex/doc/biblatex.pdfbin1555106 -> 1588755 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/biblatex.tex727
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/01-introduction-bibtex.pdfbin167963 -> 167962 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/02-annotations-biber.pdfbin208489 -> 207861 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/02-annotations-bibtex.pdfbin210442 -> 207478 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdfbin245369 -> 246347 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdfbin245955 -> 245414 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex12
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/04-delimiters-biber.pdfbin80153 -> 80158 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/04-delimiters-bibtex.pdfbin80153 -> 80152 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/10-references-per-section-bibtex.pdfbin81703 -> 81705 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/11-references-by-section-biber.pdfbin98391 -> 98398 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/11-references-by-section-bibtex.pdfbin98391 -> 98390 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-biber.pdfbin98436 -> 98443 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-bibtex.pdfbin98436 -> 98437 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/13-references-by-keyword-bibtex.pdfbin175128 -> 175130 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/14-references-by-category-bibtex.pdfbin174633 -> 174634 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/15-references-by-type-bibtex.pdfbin119269 -> 119269 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-biber.pdfbin157676 -> 157695 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdfbin157853 -> 156536 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-biber.pdfbin157653 -> 157676 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdfbin157872 -> 156527 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/18-numeric-hybrid-bibtex.pdfbin112914 -> 112916 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-biber.pdfbin158305 -> 158305 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdfbin158535 -> 157502 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/20-indexing-single-biber.pdfbin170448 -> 170535 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/20-indexing-single-bibtex.pdfbin171177 -> 169812 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-biber.pdfbin171696 -> 171726 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-bibtex.pdfbin172421 -> 171031 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/22-indexing-subentry-bibtex.pdfbin88909 -> 88905 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/30-style-numeric-bibtex.pdfbin178088 -> 177233 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-biber.pdfbin179209 -> 186808 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-bibtex.pdfbin180379 -> 187105 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp.tex24
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/32-style-numeric-verb-bibtex.pdfbin182517 -> 181606 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-biber.pdfbin200027 -> 200077 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-bibtex.pdfbin200711 -> 199318 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/41-style-alphabetic-verb-bibtex.pdfbin111944 -> 111947 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/42-style-alphabetic-template-bibtex.pdfbin101001 -> 101002 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-biber.pdfbin280076 -> 280074 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-bibtex.pdfbin278971 -> 277799 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-bibtex.pdfbin213639 -> 213637 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/52-style-authoryear-comp-bibtex.pdfbin147302 -> 147304 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/53-style-authoryear-icomp-bibtex.pdfbin225919 -> 225925 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-biber.pdfbin277780 -> 277805 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-bibtex.pdfbin276658 -> 275259 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/61-style-authortitle-ibid-bibtex.pdfbin203054 -> 203055 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/62-style-authortitle-comp-bibtex.pdfbin126041 -> 126042 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp-bibtex.pdfbin222703 -> 222705 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/64-style-authortitle-terse-bibtex.pdfbin195321 -> 195323 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/65-style-authortitle-tcomp-bibtex.pdfbin143172 -> 143176 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/66-style-authortitle-ticomp-bibtex.pdfbin147774 -> 147776 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/70-style-verbose-bibtex.pdfbin266544 -> 266542 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/71-style-verbose-ibid-bibtex.pdfbin270651 -> 270652 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/72-style-verbose-note-bibtex.pdfbin268926 -> 268908 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/73-style-verbose-inote-bibtex.pdfbin272789 -> 272786 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/74-style-verbose-trad1-bibtex.pdfbin327368 -> 327370 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/75-style-verbose-trad2-bibtex.pdfbin272202 -> 272203 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/76-style-verbose-trad3-bibtex.pdfbin269428 -> 269420 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/80-style-reading-bibtex.pdfbin244283 -> 244291 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/81-style-draft-bibtex.pdfbin149729 -> 149733 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/82-style-debug-bibtex.pdfbin148857 -> 148860 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/90-related-entries-biber.pdfbin31285 -> 31282 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdfbin61940 -> 63373 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/96-dates.tex4
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/97-annotations-biber.pdfbin16371 -> 16646 bytes
-rw-r--r--macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib10
-rw-r--r--macros/latex/contrib/biblatex/latex/bbx/standard.bbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/biblatex.def67
-rw-r--r--macros/latex/contrib/biblatex/latex/biblatex.sty2800
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-bibtex.def403
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-case-expl3.def271
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-case-latex2e.def290
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-compat.def73
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-dm.def150
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-mcite.def5
-rw-r--r--macros/latex/contrib/biblatex/latex/blx-unicode.def32
-rw-r--r--macros/latex/contrib/biblatex/latex/cbx/numeric-comp.cbx174
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx24
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/british.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/catalan.lbx24
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/croatian.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/czech.lbx573
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/danish.lbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/dutch.lbx24
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/english.lbx42
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/estonian.lbx25
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/finnish.lbx23
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/french.lbx94
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/galician.lbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/german.lbx280
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/greek.lbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/italian.lbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/latvian.lbx24
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx838
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/magyar.lbx57
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/norsk.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/polish.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/russian.lbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/serbian.lbx440
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx449
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/slovak.lbx759
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/slovene.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/spanish.lbx18
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/swedish.lbx20
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/turkish.lbx552
-rw-r--r--macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx18
114 files changed, 6909 insertions, 2947 deletions
diff --git a/macros/latex/contrib/biblatex/CHANGES.md b/macros/latex/contrib/biblatex/CHANGES.md
index 73848adcd2..8387b31a67 100644
--- a/macros/latex/contrib/biblatex/CHANGES.md
+++ b/macros/latex/contrib/biblatex/CHANGES.md
@@ -1,12 +1,222 @@
+# RELEASE NOTES FOR VERSION 3.15
+- Fixed a long-standing issue with `\intitlepunct`.
+ The old definition
+ ```
+ \newbibmacro*{in:}{%
+ \printtext{%
+ \bibstring{in}\intitlepunct}}
+ ```
+ would print `\intitlepunct` directly and not via the punctuation
+ buffer. Since the `\add...` punctuation macros guard against
+ undesired double punctuation, this would usually not show as an
+ issue (except in edge cases https://tex.stackexchange.com/q/175730/,
+ https://github.com/plk/biblatex/issues/943).
+ The new definition uses the punctuation tracker to print
+ `\intitlepunct`.
+ ```
+ \newbibmacro*{in:}{%
+ \bibstring{in}%
+ \printunit{\intitlepunct}}
+ ```
+ `\printunit` is needed instead of `\setunit` to stop subsequent
+ `\setunit`s from overriding `\intitlepunct` in case of missing
+ fields.
+- Define `volcitepages` and `multipostnote` as a field alias of `postnote`
+ and `multiprenote` as an alias of `prenote`.
+ That should make it easier to change all post- and prenote formats at once.
+ A change to `postnote` will automatically apply to `multipostnote`
+ and `volcitepages` as well. Similarly for `multiprenote`.
+ In case that is not desired, the original definitions can be restored with
+ ```
+ \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
+ \DeclareFieldFormat{multiprenote}{#1\isdot}
+ \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
+ ```
+- Unified DOI, eprint and URL printing across all entry types.
+ The fields `doi`, `eprint`, `eprintclass`, `eprinttype` and `url`
+ are now valid for all entry types.
+ `@online` and `@unpublished` now also use the bibmacro
+ `doi+eprint+url`.
+ This means `@online` now responds to the `url` option.
+ That does not mean, however, that a global `url=false,`
+ suppresses URLs for `@online` entries, since `url=true,`
+ is set on a per-type level to ensure backwards compatibility
+ as far as possible.
+ In case eprint information should be suppressed for `@online`
+ and `@unpublished`, add
+ ```
+ \ExecuteBibliographyOptions[online,unpublished]{eprint=false}
+ ```
+- Added `eid` to more entry types.
+ To avoid issues with backwards compatibility of widely used bibmacros,
+ the bibmacro `chapter+pages` was redefined from
+ ```
+ \newbibmacro*{chapter+pages}{%
+ \printfield{chapter}%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}%
+ \newunit}
+ ```
+ to
+ ```
+ \newbibmacro*{chapter+pages}{%
+ \printfield{chapter}%
+ \setunit{\bibeidpunct}%
+ \printfield{eid}%
+ \setunit{\bibpagespunct}%
+ \printfield{pages}%
+ \newunit}
+ ```
+- Added `\bibeidpunct` in analogy to `\bibpagespunct`.
+- Added `issuetitleaddon` and `journaltitleaddon` fields.
+- Added options `backreffloats` and `trackfloats` to enable/disable
+ citation tracking and back references in floats.
+ Note that citation tracking in floats can lead to undesirable
+ results in case the float objects floats too far from its "natural"
+ position.
+- **INCOMPATIBLE CHANGE** `numeric-comp` compresses subentry set
+ references now.
+ This behaviour can be disabled with `subentrycomp=false`.
+- Added `subentrycomp` option to `numeric-comp` citation style.
+ The option is only relevant with `subentry=true`.
+ With `subentrycomp=true` set citations will be compressed
+ to "1a-c" instead of "1a; 1b; 1c".
+ The option is mainly intended for backwards compatibility;
+ the behaviour of previous `biblatex` versions can be restored
+ with `subentrycomp=false`.
+- Added `\multiciterangedelim`, `\multicitesubentrydelim`,
+ `\multicitesubentryrangedelim`, `\superciterangedelim`,
+ `\supercitesubentrydelim`, and `\supercitesubentryrangedelim` for
+ finer control over (compressed) subentry citations in `numeric-comp`.
+- **CRITICAL CHANGE** The structure of the bibmacros in `numeric-comp`
+ has been reworked to make it easier to customise the printed output.
+ Documents that relied on patching internal bibmacros or heavily
+ redefined them may have to adapt.
+- **CRITICAL CHANGE**
+ Implemented better `@set` support for BibTeX, `@set`s should now
+ sort properly.
+ This is achieved with a two-pass structure and (hidden) copies of
+ the set entries.
+ The two-pass structure means that the compilation sequence becomes
+ LaTeX, BibTeX, LaTeX, BibTeX, LaTeX, LaTeX.
+- **CRITICAL CHANGE**
+ The case change functions now make use of the `expl3` module `l3text`
+ if the available `expl3` version is recent enough.
+ If `expl3` is too old the old LaTeX2e implementation is used.
+ If desired the implementation of the case changing functions
+ can be selected at load-time with the `casechanger` option, which
+ accepts the values `expl3`, `latex2e` and `auto` (which selects
+ `expl3` if the `expl3` version not older than 2020-04-06, this
+ is the default).
+
+ The `expl3` implementation of the case changer is slightly more
+ robust than the home-grown `latex2e` code.
+- The option `bibtexcaseprotection` can be used to turn off the
+ case protection via curly braces. This allows for a saner approach
+ to case protection where text is protected solely via a macro
+ like `\NoCaseChange`, e.g.
+ ```
+ title = {The Story of \NoCaseChange{HMS \emph{Erebus}}
+ in \emph{Really} Strong Wind},
+ ```
+ instead of
+ ```
+ title = {The Story of {HMS} \emph{Erebus}
+ in {\emph{Really}} Strong Wind},
+ ```
+- Added `\mautocite` and `\Mautocite`.
+- Added `\NumsCheckSetup` and `\PagesCheckSetup` for finer control
+ of the `\ifnumerals` and `\ifpages` checks.
+- Deprecate the starred `\DeclareDelimAlias*` in favour of
+ `\DeclareDelimAlias` with optional arguments.
+- **INCOMPATIBLE CHANGE**
+ `biblatex` no longer falls back to English for unknown languages.
+ Warnings will be triggered if undefined language strings or extras
+ are used.
+- **INCOMPATIBLE CHANGE**
+ Bibliography strings and bibliography extras can now be written
+ either to `\captions<language>` or to `\extras<language>`
+ (this is controlled with the `langhook` option).
+ Previously, they were written to `\extras<language>`, but upon
+ reflection `\captions<language>` appears to be a more sensible
+ place for these definitions.
+ The new default is to write to `\captions<language>`
+ (i.e. `langhook=captions`).
+ The previous behaviour can be restored with `langhook=extras`.
+- **INCOMPATIBLE CHANGE** Moved `\delimcontext{bib}` to `\AtUsedriver`,
+ this makes it easier to override the delimiter context in `\usedriver`
+ calls. `\AtUsedriver*` calls may have to be amended to include
+ `\delimcontext{bib}`. The new default is
+ ```
+ \AtUsedriver{%
+ \delimcontext{bib}%
+ \let\finentry\blx@finentry@usedrv
+ \let\newblock\relax
+ \let\abx@macro@bibindex\@empty
+ \let\abx@macro@pageref\@empty}
+ ```
+ Note that this definition is backwards compatible
+ and can be used in older versions as well (down to v3.4 2016-05-10).
+- `biblatex` now tests if a requested backend (re)run happened by
+ comparing the MD5 hashes of the new and old `.bbl` files.
+- Added file hooks `\blx@filehook@preload@<filename>`,
+ `\blx@filehook@postload@<filename>`
+ and `\blx@filehook@failure@<filename>`
+ to execute hooks before or after a file is loaded
+ or if the loading fails.
+ `\blx@lbxfilehook@simple@preload@<filename>`,
+ `\blx@lbxfilehook@simple@postload@<filename>`
+ and `\blx@lbxfilehook@simple@failure@<filename>`
+ as well as
+ `\blx@lbxfilehook@once@preload@<filename>`,
+ `\blx@lbxfilehook@once@postload@<filename>`
+ and `\blx@lbxfilehook@once@failure@<filename>`
+ are the equivalents for `.lbx` loading, where
+ files may be loaded several times in some situations.
+- Added limited support for 'nodate' with BibTeX.
+- Improved `babel` and `polyglossia` interfacing (avoids more or less
+ unsupported patches).
+ This should work with `babel` at least v3.9r (2016/04/23)
+ and polyglossia `polyglossia` v1.49 (2020/04/08) or later.
+- **INCOMPATIBLE CHANGE** Removed list and name index wrappers
+ (`\DeclareIndexNameWrapperFormat`, `\DeclareIndexListWrapperFormat`
+ and friends). Those wrappers make no sense, since the indexed
+ names are not printed 'together' in any useful sense of the word
+ and were never working anyway.
+- **CRITICAL CHANGE** Generalised some keyval macros.
+ `biblatex`-related uses of `\define@key` should ideally replaced with
+ `\blx@kv@defkey`.
+ Style authors are advised not to rely too much on the internal
+ implementation of certain keyval interfaces.
+ Users who want to experiment with using a different underlying
+ keyval parser need only provide replacements of the `\blx@kv@...`
+ macros (which are defined via `\provide...` so that they will
+ not overwrite existing definitions; in particular users can define
+ those replacements before loading `biblatex`).
+- Deprecate `\ifkomabibtotoc` and `\ifkomabibtotocnumbered`.
+ With newer versions of KOMA-Script these tests are no longer used
+ and their implementation was always a bit shifty (they would only pick
+ up globally set options).
+
+
# RELEASE NOTES FOR VERSION 3.14
- biber from version 2.14 has extended, granular XDATA functionality to
allow referencing from and to parts of fields. This makes XDATA entries into
more general data sharing containers.
+- Biber applies Perl's Unicode case folding to normalise the
+ capitalisation of field names and entry types when reading from the
+ `.bib` file. The output in the `.bbl` (what comes out on the
+ `biblatex` side uses the capitalisation from the data model; the only
+ exception are unknown entry types which are passed on *exactly*
+ as they are given in the `.bib` file - of course it is strongly
+ recommended to define all entry types one intends to use in the
+ data model).
- `biblatex` now interfaces with `polyglossia` much better and can deal
with language variants.
Note that `polyglossia` v1.45 (2019/10/27) is required for this
to work properly, it is strongly recommended to update `polyglossia`
to this or a later (current) version.
+
# RELEASE NOTES FOR VERSION 3.13
- **INCOMPATIBLE CHANGE** Any custom per-entry options in datasources must
be defined with `\DeclareEntryOption` in order for biber to recognise
diff --git a/macros/latex/contrib/biblatex/README b/macros/latex/contrib/biblatex/README
index 4137b2420e..6b3b1bf430 100644
--- a/macros/latex/contrib/biblatex/README
+++ b/macros/latex/contrib/biblatex/README
@@ -108,7 +108,7 @@ MANUAL INSTALLATION
or download the file
- https://mirror.ctan.org/macros/latex/contrib/biblatex.zip
+ http://mirror.ctan.org/macros/latex/contrib/biblatex.zip
2. Unpack the archive in a temporary working directory.
diff --git a/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib b/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib
index 10f114bc76..5aaa9d2196 100644
--- a/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib
+++ b/macros/latex/contrib/biblatex/bibtex/bib/biblatex/biblatex-examples.bib
@@ -25,19 +25,13 @@
@set{set,
entryset = {herrmann,aksin,yoon},
- annotation = {A \texttt{set} with three members. The \texttt{crossref} field
- in the \texttt{@set} entry and the \texttt{entryset} field in
- each set member entry is needed only when using BibTeX as the
- backend},
+ annotation = {A \texttt{set} with three members.},
}
@set{stdmodel,
entryset = {glashow,weinberg,salam},
annotation = {A \texttt{set} with three members discussing the standard
- model of particle physics. The \texttt{crossref} field
- in the \texttt{@set} entry and the \texttt{entryset} field in
- each set member entry is needed only when using BibTeX as the
- backend},
+ model of particle physics.},
}
@article{aksin,
diff --git a/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst
index e3b5fbb23e..dc1837f941 100644
--- a/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst
+++ b/macros/latex/contrib/biblatex/bibtex/bst/biblatex.bst
@@ -16,6 +16,7 @@
ENTRY {
% special fields
+ fakeset
entryset
entrysubtype
execute
@@ -183,7 +184,7 @@ STRINGS { ctrl.alphaothers ctrl.sortalphaothers ctrl.sortstr
last.name last.hash last.year last.extra }
FUNCTION {initialize} {
- "$Revision: 3.13 $"
+ "$Revision: 3.15 $"
#12 entry.max$ substring$
#-3 entry.max$ substring$
"Biblatex version: " swap$ * top$
@@ -257,16 +258,11 @@ FUNCTION {ctrl:set} {
type$ "set" =
}
-FUNCTION {ctrl:skiplos} {
- ctrl:control skiplos or
- ctrl:set not
- and
-}
FUNCTION {ctrl:skiplab} {
ctrl:control skiplab or
- ctrl:set not
- and
+ ctrl:set % fakeset empty$ and
+ or
}
FUNCTION {ctrl:labelalpha} {
@@ -1413,6 +1409,14 @@ FUNCTION {output:write:list} {
}
FUNCTION {output:specials} {
+ fakeset empty$
+ 'skip$
+ { ctrl:set
+ { "\fakeset" fakeset wrap:braces * output:indent:field }
+ { "fakeset can only be used for @set entries" warning * }
+ if$
+ }
+ if$
entryset empty$
'skip$
{ ctrl:set
@@ -1459,23 +1463,27 @@ FUNCTION {output:specials} {
'skip$
if$
ctrl:labeldate
- dateyear empty$ not
- and
- { "labelyear" dateyear output:write:field
- dateendyear empty$
- 'skip$
- { dateyear dateendyear =
+ { dateyear empty$ not
+ { "labelyear" dateyear output:write:field
+ dateendyear empty$
'skip$
- { dateendyear open.ended =
+ { dateyear dateendyear =
'skip$
- { "labelendyear" dateendyear output:write:field }
+ { dateendyear open.ended =
+ 'skip$
+ { "labelendyear" dateendyear output:write:field }
+ if$
+ }
if$
}
if$
+ "extradate" extradate output:write:field
+ "labeldatesource" "" output:write:field:maybeempty
+ }
+ { "extradate" extradate output:write:field
+ "labeldatesource" "nodate" output:write:field
}
if$
- "extradate" extradate output:write:field
- "labeldatesource" "" output:write:field:maybeempty
}
'skip$
if$
diff --git a/macros/latex/contrib/biblatex/doc/biblatex.pdf b/macros/latex/contrib/biblatex/doc/biblatex.pdf
index 0c2de50f17..8175e43a39 100644
--- a/macros/latex/contrib/biblatex/doc/biblatex.pdf
+++ b/macros/latex/contrib/biblatex/doc/biblatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/biblatex.tex b/macros/latex/contrib/biblatex/doc/biblatex.tex
index 213fe87e71..e9111c5e89 100644
--- a/macros/latex/contrib/biblatex/doc/biblatex.tex
+++ b/macros/latex/contrib/biblatex/doc/biblatex.tex
@@ -55,8 +55,8 @@
\newcommand*{\biber}{\sty{biber}\xspace}
\newcommand*{\biblatex}{\sty{biblatex}\xspace}
\newcommand*{\biblatexml}{\sty{biblatexml}\xspace}
-\newcommand*{\biblatexhome}{http://sourceforge.net/projects/biblatex/}
-\newcommand*{\biblatexctan}{http://ctan.org/pkg/biblatex/}
+\newcommand*{\biblatexhome}{https://sourceforge.net/projects/biblatex/}
+\newcommand*{\biblatexctan}{https://ctan.org/pkg/biblatex/}
\titlepage{%
title={The \biblatex Package},
@@ -64,7 +64,7 @@
url={\biblatexhome},
author={Philip Kime, Moritz Wemheuer, Philipp Lehman},
email={},
- revision={3.14},
+ revision={3.15},
date={\today}}
\hypersetup{%
@@ -173,7 +173,7 @@
\section{Introduction}
\label{int}
-This document is a systematic reference manual for the \biblatex package. Look at the sample documents which come with \biblatex to get a first impression.\fnurl{\biblatexctan doc/examples}
+This document is a systematic reference manual for the \biblatex package. Look at the sample documents which come with \biblatex to get a first impression.\fnurl{https://ctan.org/tex-archive/macros/latex/contrib/biblatex/doc/examples}
For a quick start guide, browse \secref{int:abt, bib:typ, bib:fld, bib:use, use:opt, use:xbx, use:bib, use:cit, use:use}.
\subsection[About]{About \biblatex}
@@ -183,12 +183,12 @@ This package provides advanced bibliographic facilities for use with \latex. The
\subsection{License}
-Copyright \textcopyright\ 2006--2012 Philipp Lehman, 2012--2017 Philip Kime, Audrey Boruvka, Joseph Wright, 2018-- Philip Kime and Moritz Wemheuer. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version~1.3.\fnurl{http://www.latex-project.org/lppl.txt}
+Copyright \textcopyright\ 2006--2012 Philipp Lehman, 2012--2017 Philip Kime, Audrey Boruvka, Joseph Wright, 2018-- Philip Kime and Moritz Wemheuer. Permission is granted to copy, distribute and\slash or modify this software under the terms of the \lppl, version~1.3.\fnurl{https://www.latex-project.org/lppl.txt}
\subsection{Feedback}
\label{int:feb}
-Please use the \biblatex project page on GitHub to report bugs and submit feature requests.\fnurl{http://github.com/plk/biblatex} Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup or \tex-\latex Stack Exchange.\fnurl{http://tex.stackexchange.com/questions/tagged/biblatex}
+Please use the \biblatex project page on GitHub to report bugs and submit feature requests.\fnurl{https://github.com/plk/biblatex} Before making a feature request, please ensure that you have thoroughly studied this manual. If you do not want to report a bug or request a feature but are simply in need of assistance, you might want to consider posting your question on the \texttt{comp.text.tex} newsgroup or \tex-\latex Stack Exchange.\fnurl{https://tex.stackexchange.com/questions/tagged/biblatex}
\subsection{Acknowledgements}
@@ -216,14 +216,17 @@ Márton Marczell, Bence Ferdinandy (Hungarian);
Baldur Kristinsson (Icelandic);
Enrico Gregorio, Andrea Marchitelli (Italian);
Rihards Skuja (Latvian);
+Valdemaras Klumbys (Lithuanian);
Håkon Malmedal, Hans Fredrik Nordhaug (Norwegian);
Anastasia Kandulina, Yuriy Chernyshov (Polish);
José Carlos Santos (Portuguese);
Oleg Domanov (Russian);
+Andrej Radović (Serbian);
Martin Vrábel, Dávid Lupták (Slovak);
Tea Tušar, Bogdan Filipič (Slovene);
Ignacio Fernández Galván (Spanish);
Per Starbäck, Carl-Gustav Werner, Filip Åsblom (Swedish);
+Abdulkerim Gok (Turkish);
Sergiy M. Ponomarenko (Ukrainian).
\subsection{Prerequisites}
@@ -242,19 +245,21 @@ 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{http://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{http://search.cpan.org/~ambs/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{http://ctan.org/pkg/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}
\item[kvoptions]
-This \latex package, which is also loaded automatically, is used for internal option handling. It is available with the \sty{oberdiek} package bundle from \acr{CTAN}.\fnurl{http://ctan.org/pkg/kvoptions}
+This \latex package, which is also loaded automatically, is used for internal option handling. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/kvoptions}
\item[logreq]
-This \latex package, which is also loaded automatically, provides a frontend for writing machine-readable messages to an auxiliary log file. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/logreq/}
+This \latex package, which is also loaded automatically, provides a frontend for writing machine-readable messages to an auxiliary log file. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/logreq/}
\item[pdftexcmds]
-This \latex package, which is loaded automatically, implements \pdftex primitives for \luatex, it also offers a unified interface for these primitives across engines. It is available from \acr{CTAN}.\fnurl{http://ctan.org/pkg/pdftexcmds/}
+This \latex package, which is loaded automatically, implements \pdftex primitives for \luatex, it also offers a unified interface for these primitives across engines. It is available from \acr{CTAN}.\fnurl{https://ctan.org/pkg/pdftexcmds/}
+
+\biblatex uses \sty{pdftexcmds} to access the MD5 hash primitives, so version~0.27 (2018/01/30) or above is strongly recommended.
\end{marglist}
@@ -263,20 +268,31 @@ Apart from the above resources, \biblatex also requires the standard \latex pack
\subsubsection{Recommended Packages}
\label{int:pre:rec}
-The packages listed in this section are not required for \biblatex to function, but they provide recommended additional functions or enhance existing features. The package loading order usually does not matter.
+The packages listed in this section are not strictly required for \biblatex to function, but they provide recommended additional functions or enhance existing features.
\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.)
-\biblatex has only limited support for \sty{polyglossia} versions prior to~v1.45. If \sty{polyglossia} is used, it should be updated to version~1.45 (2019/10/27) or above.
+\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.
+
+The minimum supported \sty{babel} version is~v3.9r (2016/04/23).
\item[csquotes]
-If this package is available, \biblatex will use its language sensitive quotation facilities to enclose certain titles in quotation marks. If not, \biblatex uses quotes suitable for American English as a fallback. When writing in a language other than American English, loading \sty{csquotes} is strongly recommended.\fnurl{http://ctan.org/pkg/csquotes/}
+If this package is available, \biblatex will use its language sensitive quotation facilities to enclose certain titles in quotation marks. If not, \biblatex uses quotes suitable for American English as a fallback. When writing in a language other than American English, loading \sty{csquotes} is strongly recommended.\fnurl{https://ctan.org/pkg/csquotes/}
+
+\end{marglist}
+
+\subsubsection{Additional Useful Packages}
+\label{int:pre:add}
+
+The packages listed in this section are not required for \biblatex to function, but provide additional specialist functions or enhance existing features. These packages generally only need to be loaded if their functionality is explicitly desired. The package loading order usually does not matter.
+
+\begin{marglist}
\item[xpatch]
-The \sty{xpatch} package extends the patching commands of \sty{etoolbox} to \biblatex bibliography macros, drivers and formatting directives.\fnurl{http://ctan.org/pkg/xpatch/}
+The \sty{xpatch} package extends the patching commands of \sty{etoolbox} to \biblatex bibliography macros, drivers and formatting directives.\fnurl{https://ctan.org/pkg/xpatch/} Its commands are useful to apply surgical-precision changes to bibliography macros, drivers or formatting directives without having to restate the whole definition to change it. The \biblatex core does not need or use these patching commands and styles that make use of them should load the package themselves.
\end{marglist}
@@ -299,6 +315,8 @@ When using the \sty{memoir} class, the default bibliography headings are adapted
\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.
+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.
+
\end{marglist}
\subsubsection{Incompatible Packages}
@@ -354,7 +372,11 @@ The \sty{splitbib} package provides support for bibliographies subdivided by top
The \sty{titlesec} package redefines user-level document division commands such as \cmd{chapter} or \cmd{section}. This approach is not compatible with internal command changes applied by the \biblatex \opt{refsection}, \opt{refsegment} and \opt{citereset} option settings described in \secref{use:opt:pre:gen}.
\item[ucs]
-The \sty{ucs} package provides support for \utf encoded input. Either use \sty{inputenc}'s standard \file{utf8} module or a Unicode enabled engine such as \xetex or \luatex instead.
+The \sty{ucs} package provides support for \utf encoded input, but it does so in a way incompatible with \biblatex.
+
+If you get an error about \sty{ucs} being loaded, but you don't load it explicitly in your preamble, check that you don't load \sty{inputenc}'s \file{utf8x} module: \verb|\usepackage[utf8x]{inputenc}| will also load \sty{ucs}.
+
+Instead of \sty{ucs}/\file{utf8x} use a Unicode engine such as \xetex or \luatex if you want full Unicode support. If you use \pdftex or \tex, the Unicode characters predefined by the \latex format are usually enough for many use cases (this is true for \latex from April 2018 or later, in older versions load \sty{inputenc} with the \file{utf8} module) and missing characters can be defined using \cmd{DeclareUnicodeCharacter} or \sty{newunicodechar}'s \cmd{newunicodechar}.
\item[etextools]
The \sty{etextools} package provides enhancements to list macros defined by \sty{etoolbox} and a few other tools for command definitions.
@@ -376,12 +398,15 @@ during processing if it encounters information which comes from a
compatibility matrix for the recent versions.
\begin{table}
+\caption{\biber/\biblatex\ compatibility matrix}
+\label{tab:int:pre:bibercompat}
\tablesetup\centering
\begin{tabular}{cc}
\toprule
\sffamily\bfseries\spotcolor Biber version
& \sffamily\bfseries\spotcolor \biblatex\ version\\
\midrule
+2.14 & 3.14\\
2.13 & 3.13\\
2.12 & 3.12\\
2.11 & 3.11\\
@@ -418,8 +443,6 @@ compatibility matrix for the recent versions.
0.9 & 1.4x\\
\bottomrule
\end{tabular}
-\caption{\biber/\biblatex\ compatibility matrix}
-\label{tab:int:pre:bibercompat}
\end{table}
\section{Database Guide}
@@ -448,14 +471,14 @@ The <alias> relation referred to in this subsection is the <soft alias> defined
An article in a journal, magazine, newspaper, or other periodical which forms a self"=contained unit with its own title. The title of the periodical is given in the \bibfield{journaltitle} field. If the issue has its own title in addition to the main title of the periodical, it goes in the \bibfield{issuetitle} field. Note that \bibfield{editor} and related fields refer to the journal while \bibfield{translator} and related fields refer to the article.
\reqitem{author, title, journaltitle, year/date}
-\optitem{translator, annotator, commentator, subtitle, titleaddon, editor, editora, editorb, editorc, journalsubtitle, issuetitle, issuesubtitle, language, origlanguage, series, volume, number, eid, issue, month, pages, version, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{translator, annotator, commentator, subtitle, titleaddon, editor, editora, editorb, editorc, journalsubtitle, journaltitleaddon, issuetitle, issuesubtitle, issuetitleaddon, language, origlanguage, series, volume, number, eid, issue, month, pages, version, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{book}
A single"=volume book with one or more authors where the authors share credit for the work as a whole. This entry type also covers the function of the \bibtype{inbook} type of traditional \bibtex, see \secref{bib:use:inb} for details.
\reqitem{author, title, year/date}
-\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{mvbook}
@@ -469,7 +492,7 @@ A multi"=volume \bibtype{book}. For backwards compatibility, multi"=volume books
A part of a book which forms a self"=contained unit with its own title. Note that the profile of this entry type is different from standard \bibtex, see \secref{bib:use:inb}.
\reqitem{author, title, booktitle, year/date}
-\optitem{bookauthor, editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{bookauthor, editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{bookinbook}
@@ -484,14 +507,14 @@ Supplemental material in a \bibtype{book}. This type is closely related to the \
A book"=like work without a formal publisher or sponsoring institution. Use the field \bibfield{howpublished} to supply publishing information in free format, if applicable. The field \bibfield{type} may be useful as well.
\reqitem{author/editor, title, year/date}
-\optitem{subtitle, titleaddon, language, howpublished, type, note, location, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, howpublished, type, note, location, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{collection}
A single"=volume collection with multiple, self"=contained contributions by distinct authors which have their own title. The work as a whole has no overall author but it will usually have an editor.
\reqitem{editor, title, year/date}
-\optitem{editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{mvcollection}
@@ -505,7 +528,7 @@ A multi"=volume \bibtype{collection}. For backwards compatibility, multi"=volume
A contribution to a collection which forms a self"=contained unit with a distinct author and title. The \bibfield{author} refers to the \bibfield{title}, the \bibfield{editor} to the \bibfield{booktitle}, \ie the title of the collection.
\reqitem{author, title, booktitle, year/date}
-\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, editora, editorb, editorc, translator, annotator, commentator, introduction, foreword, afterword, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, language, origlanguage, volume, part, edition, volumes, series, number, note, publisher, location, isbn, eid, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{suppcollection}
@@ -523,7 +546,7 @@ A data set or a similar collection of (mostly) raw data.
Technical or other documentation, not necessarily in printed form. The \bibfield{author} or \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
\reqitem{author/editor, title, year/date}
-\optitem{subtitle, titleaddon, language, edition, type, series, number, version, note, organization, publisher, location, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, edition, type, series, number, version, note, organization, publisher, location, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{misc}
@@ -551,7 +574,7 @@ A patent or patent request. The number or record token is given in the \bibfield
An complete issue of a periodical, such as a special issue of a journal. The title of the periodical is given in the \bibfield{title} field. If the issue has its own title in addition to the main title of the periodical, it goes in the \bibfield{issuetitle} field. The \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
\reqitem{editor, title, year/date}
-\optitem{editora, editorb, editorc, subtitle, issuetitle, issuesubtitle, language, series, volume, number, issue, month, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editora, editorb, editorc, subtitle, titleaddon, issuetitle, issuesubtitle, issuetitleaddon, language, series, volume, number, issue, month, note, issn, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{suppperiodical}
@@ -562,7 +585,7 @@ Supplemental material in a \bibtype{periodical}. This type is similar to \bibtyp
A single"=volume conference proceedings. This type is very similar to \bibtype{collection}. It supports an optional \bibfield{organization} field which holds the sponsoring institution. The \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
\reqitem{title, year/date}
-\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{mvproceedings}
@@ -576,7 +599,7 @@ A multi"=volume \bibtype{proceedings} entry. For backwards compatibility, multi"
An article in a conference proceedings. This type is similar to \bibtype{incollection}. It supports an optional \bibfield{organization} field.
\reqitem{author, title, booktitle, year/date}
-\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{editor, subtitle, titleaddon, maintitle, mainsubtitle, maintitleaddon, booksubtitle, booktitleaddon, eventtitle, eventtitleaddon, eventdate, venue, language, volume, part, volumes, series, number, note, organization, publisher, location, month, isbn, eid, chapter, pages, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{reference}
@@ -595,7 +618,7 @@ An article in a work of reference. This is a more specific variant of the generi
A technical report, research report, or white paper published by a university or some other institution. Use the \bibfield{type} field to specify the type of report. The sponsoring institution goes in the \bibfield{institution} field.
\reqitem{author, title, type, institution, year/date}
-\optitem{subtitle, titleaddon, language, number, version, note, location, month, isrn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, number, version, note, location, month, isrn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{set}
@@ -610,14 +633,14 @@ Computer software. The standard styles will treat this entry type as an alias fo
A thesis written for an educational institution to satisfy the requirements for a degree. Use the \bibfield{type} field to specify the type of thesis.
\reqitem{author, title, type, institution, year/date}
-\optitem{subtitle, titleaddon, language, note, location, month, isbn, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+\optitem{subtitle, titleaddon, language, note, location, month, isbn, eid, chapter, pages, pagetotal, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{unpublished}
A work with an author and a title which has not been formally published, such as a manuscript or the script of a talk. Use the fields \bibfield{howpublished} and \bibfield{note} to supply additional information in free format, if applicable.
\reqitem{author, title, year/date}
-\optitem{subtitle, titleaddon, type, eventtitle, eventtitleaddon, eventdate, venue, language, howpublished, note, location, isbn, month, addendum, pubstate, url, urldate}
+\optitem{subtitle, titleaddon, type, eventtitle, eventtitleaddon, eventdate, venue, language, howpublished, note, location, isbn, month, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
\typeitem{xdata}
@@ -655,7 +678,7 @@ An alias for \bibtype{online}, provided for \sty{jurabib} compatibility.
\subsubsection{Non-standard Types}
\label{bib:typ:ctm}
-The types in this section are similar to the custom types \bibtype{custom[a--f]}, \ie the standard bibliography styles provide no bibliography drivers for these types. When using the standard styles, they will therefore generally be treated as \bibtype{misc} entries---exceptions to this rule are noted in the descriptions below. The types are known to the default data model and will be happily accepted by \biber.
+The types in this section are similar to the custom types \bibtype{custom[a--f]}, \ie the standard bibliography styles provide no bibliography drivers for these types. In the standard styles they will use the bibliography driver for \bibtype{misc} entries---exceptions to this rule are noted in the descriptions below. The types are known to the default data model and will be happily accepted by \biber.
\begin{typelist}
@@ -899,7 +922,7 @@ Similar to \bibfield{editortype} but referring to the \bibfield{editorc} field.
\fielditem{eid}{literal}
-The electronic identifier of an \bibtype{article}. This field may replace the \bibfield{pages} field for journals deviating from the classic pagination scheme of printed journals by only enumerating articles or papers and not pages.
+The electronic identifier of an \bibtype{article} or chapter-like section of a larger work. This field may replace the \bibfield{pages} field for journals deviating from the classic pagination scheme of printed journals by only enumerating articles or papers and not pages.
\fielditem{entrysubtype}{literal}
@@ -989,6 +1012,10 @@ The subtitle of a specific issue of a journal or other periodical.
The title of a specific issue of a journal or other periodical.
+\fielditem{issuetitleaddon}{literal}
+
+An annex to the \bibfield{issuetitle}, to be printed in a different font.
+
\fielditem{iswc}{literal}
The International Standard Work Code of a musical work. Not used by the standard bibliography styles.
@@ -1001,6 +1028,11 @@ The subtitle of a journal, a newspaper, or some other periodical.
The name of a journal, a newspaper, or some other periodical.
+\fielditem{journaltitleaddon}{literal}
+
+An annex to the \bibfield{journaltitle}, to be printed in a different font.
+
+
\fielditem{label}{literal}
A designation to be used by the citation style as a substitute for the regular label if any data required to generate the regular label is missing. For example, when an author"=year citation style is generating a citation for an entry which is missing the author or the year, it may fall back to \bibfield{label}. See \secref{bib:use:key} for details. Note that, in contrast to \bibfield{shorthand}, \bibfield{label} is only used as a fallback. See also \bibfield{shorthand}.
@@ -1210,6 +1242,8 @@ A special field which holds arbitrary \tex code to be executed whenever the data
The gender of the author or the gender of the editor, if there is no author. The following identifiers are supported: \opt{sf} (feminine singular, a single female name), \opt{sm} (masculine singular, a single male name), \opt{sn} (neuter singular, a single neuter name), \opt{pf} (feminine plural, a list of female names), \opt{pm} (masculine plural, a list of male names), \opt{pn} (neuter plural, a list of neuter names), \opt{pp} (plural, a mixed gender list of names). This information is only required by special bibliography and citation styles and only in certain languages. For example, a citation style may replace recurrent author names with a term such as <idem>. If the Latin word is used, as is custom in English and French, there is no need to specify the gender. In German publications, however, such key terms are usually given in German and in this case they are gender"=sensitive.
\begin{table}
+\caption{Supported Languages}
+\label{bib:fld:tab1}
\tablesetup
\begin{tabularx}{\textwidth}{@{}p{90pt}@{}p{160pt}@{}X@{}}
\toprule
@@ -1242,21 +1276,23 @@ Hungarian & Hungary & \opt{magyar}, \opt{hungarian} \\
Icelandic & Iceland & \opt{icelandic} \\
Italian & Italy & \opt{italian} \\
Latvian & Latvia & \opt{latvian} \\
+Lithuanian & Lithuania & \opt{lithuanian} \\
Norwegian (Bokmål) & Norway & \opt{norsk} \\
Norwegian (Nynorsk) & Norway & \opt{nynorsk} \\
Polish & Poland & \opt{polish} \\
Portuguese & Brazil & \opt{brazil} \\
& Portugal & \opt{portuguese}, \opt{portuges} \\
Russian & Russia & \opt{russian} \\
+Serbian (Latin) & Serbia & \opt{serbian} \\
+Serbian (Cyrillic) & Serbia & \opt{serbianc} \\
Slovak & Slovakia & \opt{slovak} \\
Slovene & Slovenia & \opt{slovene}, \opt{slovenian} \\
Spanish & Spain & \opt{spanish} \\
Swedish & Sweden & \opt{swedish} \\
+Turkish & Turkey & \opt{turkish} \\
Ukrainian & Ukraine & \opt{ukrainian} \\
\bottomrule
\end{tabularx}
-\caption{Supported Languages}
-\label{bib:fld:tab1}
\end{table}
\fielditem{langid}{identifier}
@@ -1675,6 +1711,8 @@ This entry will be printed as «\emph{Journal Name}. New ser. 9 (1998)». See \s
\label{bib:use:dat}
\begin{table}
+\caption{Date Specifications}
+\label{bib:use:tab1}
\tablesetup
\begin{tabularx}{\textwidth}{@{}>{\ttfamily}llX@{}}
\toprule
@@ -1698,8 +1736,6 @@ This entry will be printed as «\emph{Journal Name}. New ser. 9 (1998)». See \s
2004-04-05T14:34:00 & 05/04/2004 2:34 PM & 5th April 2004 14:34:00\\
\bottomrule
\end{tabularx}
-\caption{Date Specifications}
-\label{bib:use:tab1}
\end{table}
Date fields such as the default data model dates \bibfield{date}, \bibfield{origdate}, \bibfield{eventdate}, and \bibfield{urldate} adhere to \acr{ISO8601-2} Extended Format specification level 1. In addition to the \acr{ISO8601-2} empty date range markers, you may also specify an open ended/start date range by giving the range separator and omitting the end/start date (\eg \texttt{YYYY/}, \texttt{/YYYY}). See \tabref{bib:use:tab1} for some examples of valid date specifications and the formatted dates automatically generated by \biblatex. The formatted date is language specific and will be adapted automatically. If there is no \bibfield{date} field in an entry, \biblatex will also consider the fields \bibfield{year} and \bibfield{month} for backwards compatibility with traditional \bibtex but this is not encouraged as explicit \bibfield{year} and \bibfield{month} are not parsed for date meta-information markers or times and are used as-is. Style authors should note that date fields like \bibfield{date} or \bibfield{origdate} are only available in the \file{bib} file. All dates are parsed and dissected into their components as the \file{bib} file is processed. The date and time components are made available to styles by way of the special fields discussed in \secref{aut:bbx:fld:dat}. See this section and \tabref{aut:bbx:fld:tab1} on page~\pageref{aut:bbx:fld:tab1} for further information.
@@ -1711,6 +1747,8 @@ Date field names \emph{must} end with the string <date>, as with the default dat
\acr{ISO8601-2} supports dates before common era (BCE/BC) by way of a negative date format and supports <approximate> (circa) and uncertain dates. Such date formats set internal markers which can be tested for so that appropriate localised markers (such as \opt{circa} or \opt{beforecommonera}) can be inserted. Also supported are <unspecified> dates (\acr{ISO8601-2} 4.3) which are automatically expanded into appropriate data ranges accompanied by a field \bibfield{$<$datetype$>$dateunspecified} which details the granularity of the unspecified data. Styles may use this information to format such dates appropriately but the standard styles do not do this. See \tabref{bib:use:tab3} on page~\pageref{bib:use:tab3} for the allowed \acr{ISO8601-2} <unspecified> formats, their range expansions and \bibfield{$<$datetype$>$dateunspecified} values (see \secref{aut:bbx:fld:gen}).
\begin{table}
+\caption{ISO8601-2 4.3 Unspecified Date Parsing}
+\label{bib:use:tab3}
\tablesetup
\begin{tabularx}{\textwidth}{@{}>{\ttfamily}llX@{}}
\toprule
@@ -1725,15 +1763,15 @@ Date field names \emph{must} end with the string <date>, as with the default dat
1999-XX-XX & 1999-01-01/1999-12-31 & dayinyear \\
\bottomrule
\end{tabularx}
-\caption{ISO8601-2 4.3 Unspecified Date Parsing}
-\label{bib:use:tab3}
\end{table}
-\tabref{bib:use:tab2} shows formats which use appropriate tests and formatting. See the date meta-information tests in \secref{aut:aux:tst} and the localisation strings in \secref{aut:lng:key:dt}. See also the \file{96-dates.tex} example file for complete examples of the tests and localisation strings use.
+\Tabref{bib:use:tab2} shows formats which use appropriate tests and formatting. See the date meta-information tests in \secref{aut:aux:tst} and the localisation strings in \secref{aut:lng:key:dt}. See also the \file{96-dates.tex} example file for complete examples of the tests and localisation strings use.
The output of <circa>, uncertainty and era information in standard styles (or custom styles not customising the internal \cmd{mkdaterange*} macros) is controlled by the package options \opt{datecirca}, \opt{dateuncertain}, \opt{dateera} and \opt{dateeraauto} (see \secref{use:opt:pre:gen}). See \tabref{bib:use:tab2} on page~\pageref{bib:use:tab2} for examples which assumes these options are all used.
\begin{table}
+\caption{Enhanced Date Specifications}
+\label{bib:use:tab2}
\tablesetup
\begin{tabularx}{\textwidth}{@{}>{\ttfamily}llX@{}}
\toprule
@@ -1758,8 +1796,6 @@ The output of <circa>, uncertainty and era information in standard styles (or cu
2004-24 & 2004 & also, \bibfield{season} is set to the localisation string <winter>\\
\bottomrule
\end{tabularx}
-\caption{Enhanced Date Specifications}
-\label{bib:use:tab2}
\end{table}
\subsubsection{Year, Month and Date}
@@ -1846,7 +1882,7 @@ In addition to the \bibfield{crossref} field, \biblatex supports a simplified cr
\subsubsection{Sorting and Encoding Issues}
\label{bib:cav:enc}
-\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{http://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/}
+\biber handles Ascii, 8-bit encodings such as Latin\,1, and \utf. It features true Unicode support and is capable of reencoding the \file{bib} data on the fly in a robust way. For sorting, \biber uses a Perl implementation of the Unicode Collation Algorithm (\acr{UCA}), as outlined in Unicode Technical Standard \#10.\fnurl{https://unicode.org/reports/tr10/} Collation tailoring based on the Unicode Common Locale Data Repository (\acr{CLDR}) is also supported.\fnurl{http://cldr.unicode.org/}
Supporting Unicode implies much more than handling \utf input. Unicode is a complex standard covering more than its most well-known parts, the Unicode character encoding and transport encodings such as \utf. It also standardizes aspects such as string collation, which is required for language-sensitive sorting. For example, by using the Unicode Collation Algorithm, \biber can handle the character <ß> without any manual intervention. All you need to do to get localised sorting is specify the locale:
@@ -2037,6 +2073,10 @@ Loads compatibility module which provides aliases for the citation commands of t
Loads a citation module which provides \sty{mcite}\slash\sty{mciteplus}-like citation commands. See \secref{use:cit:mct} for details.
+\optitem[auto]{casechanger}{\opt{auto}, \opt{latex2e}, \opt{expl3}}
+
+This option selects the implementation of \biblatex's case changing functions, most prominently \cmd{MakeSentenceCase*}. \opt{expl3} selects the new implementation based on the \latex3 module \sty{l3text}. \opt{latex2e} selects the original implementation, which has tricky brace protection behaviour and some shortcomings when dealing with non-ASCII characters. The default \opt{auto} selects the case changing code based on the available \sty{expl3} version (\opt{expl3} is selected if \sty{expl3} is at least version 2020-04-06).
+
\end{optionlist}
\subsubsection{Preamble Options}
@@ -2162,13 +2202,17 @@ Enclose the entry in a \env{hyphenrules} environment. This will load hyphenation
Enclose the entry in an \env{otherlanguage} environment. This will load hyphenation patterns for the specified language, enable all extra definitions which \sty{babel}/\sty{polyglossia} and \biblatex provide for the respective language, and translate key terms such as <editor> and <volume>. The extra definitions include localisations of the date format, of ordinals, and similar things.
\item[other*]
-Enclose the entry in an \env{otherlanguage*} environment. Please note that \biblatex treats \env{otherlanguage*} like \env{otherlanguage} but other packages may make a distinction in this case.
+Enclose the entry in an \env{otherlanguage*} environment. Please note that \biblatex treats \env{otherlanguage*} like \env{otherlanguage} if \opt{langhook} is set to \opt{extras}.
\item[langname]
\sty{polyglossia} only. Enclose the entry in a \env{$<$languagename$>$} environment. The benefit of this option value for \sty{polyglossia} users is that it takes note of the \bibfield{langidopts} field so that you can add per-language options to an entry (like selecting a language variant). When using \sty{babel}, this option does the same as the \opt{other} option value.
\end{valuelist}
+\optitem[captions]{langhook}{\opt{captions}, \opt{extras}}
+
+This option controls whether bibliography strings and extras are written to \cmd{captions$<$language$>$} or \cmd{extras$<$language$>$}. The exact effect of this option depend on the language package (\sty{babel}/\sty{polyglossia}). Broadly speaking, the language switching environments provided by those packages (except \env{hyphenrules}) either switch language captions and extras or only language extras. Hence, if this option is set to \opt{extras}, all language switches will affect \biblatex, whereas with \opt{captions} only language switches that also switch other parts of the document language affect \biblatex.
+
\optitem[none]{block}{\opt{none}, \opt{space}, \opt{par}, \opt{nbpar}, \opt{ragged}}
This option controls the extra spacing between blocks, \ie larger segments of a bibliography entry. The possible choices are:
@@ -2253,6 +2297,11 @@ This option controls how back references to \bibtype{set} entries and their memb
\end{valuelist}
+\boolitem[true]{backreffloats}
+
+Whether to enable back references to citations in floats.
+
+
\optitem[false]{indexing}{\opt{true}, \opt{false}, \opt{cite}, \opt{bib}}
This option controls indexing in citations and in the bibliography. More precisely, it affects the \cmd{ifciteindex} and \cmd{ifbibindex} commands from \secref{aut:aux:tst}. The option is settable on a global, a per-type, or on a per-entry basis. The possible choices are:
@@ -2341,7 +2390,7 @@ January 21--30, 2010\par
2010-1-21/2010-1-30
\end{valuelist}
%
-Note that \opt{iso} format will enforce \kvopt{dateera}{astronomical}, \kvopt{datezeros}{true}, \kvopt{timezeros}{true}, \kvopt{seconds}{true}, \kvopt{$<$datetype$>$time}{24h} and \kvopt{julian}{false}. \opt{ymd} is an ETFT-like format but which can change the various options which the strict \opt{iso} option does not allow for.
+Note that \opt{iso} format will enforce \kvopt{dateera}{astronomical}, \kvopt{datezeros}{true}, \kvopt{timezeros}{true}, \kvopt{seconds}{true}, \kvopt{$<$datetype$>$time}{24h} and \kvopt{julian}{false}. \opt{ymd} is an EDTF-like format but which can change the various options which the strict \opt{iso} option does not allow for.
As seen in the above examples, the actual date format is language specific. Note that the month name in all long formats is responsive to the \opt{abbreviate} package option. The leading zeros for months and days in all short formats may be controlled separately with the \opt{datezeros} package option. The leading zeros for hours, minutes and seconds in all short formats may be controlled separately with the \opt{timezeros} package option. If outputting times, the printing of seconds and timezones is controlled by the \opt{seconds} and \opt{timezones} options respectively.
@@ -2440,7 +2489,7 @@ Sets \opt{labeltime} and the \opt{$<$datetype$>$time} option for all times in th
\boolitem[false]{dateusetime}
-Specifies whether to print any time component of a date field after the date component. The separator between the date and time components is \cmd{bibdatetimesep} from \secref{use:fmt:lng}. This option does nothing if a compact date format is being used (see \secref{use:opt:pre:gen}) as this would be very confusing.
+Specifies whether to print any time component of a date field after the date component. The separator between the date and time components is \cmd{bibdatetimesep} from \secref{use:fmt:lng}.
\boolitem[false]{labeldateusetime}
@@ -2519,6 +2568,10 @@ Sets the minimum number of cross references to \prm{integer} when requesting a b
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.
+
\end{optionlist}
\paragraph{Style-specific}
@@ -2562,6 +2615,20 @@ Suppose \texttt{key1} and \texttt{key2} are members of the set \texttt{set1}. Wi
\end{optionlist}
+\subparagraph{\texttt{numeric-comp}} The citation style \texttt{numeric-comp} supports the \opt{subentrycomp} option in global, per-type and per-entry scope.
+
+\begin{optionlist}
+
+\boolitem[true]{subentrycomp}
+
+This option determines whether or not citations to set members are compressed similar to non-set citations. The option only has an effect if \opt{subentry} is set to \texttt{true}.
+
+Suppose \texttt{key1}, \texttt{key2} and \texttt{key3} are members of the set \texttt{set1}. With \opt{subentrycomp} set to \texttt{true} the three entries will be compressed to <[1a--c]> in citations. With \opt{subentry} set to \texttt{false} the citation will show in the more verbose form <[1a, 1b, 1c]>.
+
+The option is intended mainly for backwards compatibility, because earlier versions of \biblatex did not compress set member citations.
+
+\end{optionlist}
+
\subparagraph{\texttt{authortitle}/\texttt{authoryear}} All bibliography styles of the \texttt{authoryear} and \texttt{authortitle} family as well as all bibliography styles of the \texttt{verbose} family---whose bibliography styles are based on \texttt{authortitle}---support the option \opt{dashed} in global scope.
\begin{optionlist}
@@ -2592,7 +2659,7 @@ This option controls whether and how the date specification in the entry is merg
More in-depth examples of this option can be found in the style examples.
\end{optionlist}
-\subparagraph{<ibid> styles} Citation styles with <ibid.> function, namely \texttt{authortitle-ibid}, \texttt{author\allowbreakhere title-icomp}, \texttt{author\allowbreakhere year-ibid}, \texttt{authoryear-icomp}, \texttt{ver\allowbreakhere bose-ibid}, \texttt{verbose-inote}, \texttt{verbose-trad1}, \texttt{verbose-trad2} and \texttt{verbose-trad3} provide the global \opt{ibidpage} option.
+\subparagraph{<ibid> styles} Citation styles with <ibid.>\ function, namely \texttt{authortitle-ibid}, \texttt{author\allowbreakhere title-icomp}, \texttt{author\allowbreakhere year-ibid}, \texttt{authoryear-icomp}, \texttt{ver\allowbreakhere bose-ibid}, \texttt{verbose-inote}, \texttt{verbose-trad1}, \texttt{verbose-trad2} and \texttt{verbose-trad3} provide the global \opt{ibidpage} option.
\begin{optionlist}
@@ -2656,7 +2723,7 @@ This option controls the page tracker which is required by the \cmd{ifsamepage}
\item[spread] Enable the tracker in spread mode. In this mode, tracking works on a per"=spread (double page) basis.
\end{valuelist}
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
\optitem[false]{citecounter}{\opt{true}, \opt{false}, \opt{context}}
@@ -2680,7 +2747,7 @@ This option controls the citation tracker which is required by the \cmd{ifcitese
\item[constrict] This mode combines the features of \opt{context} and \opt{strict}.
\end{valuelist}
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
This option is also settable on a per-type or per-entry basis.
\optitem[false]{ibidtracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2695,7 +2762,7 @@ This option controls the <ibidem> tracker which is required by the \cmd{ifciteib
\item[constrict] This mode combines the features of \opt{context} and \opt{strict}. It also keeps track of footnote numbers and detects potentially ambiguous references in footnotes in a stricter way than the \opt{strict} option. In addition to the conditions imposed by the \opt{strict} option, a reference in a footnote will only be considered as unambiguous if the current citation and the previous citation are given in the same footnote or in immediately consecutive footnotes.
\end{valuelist}
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
This option is also settable on a per-type or per-entry basis.
\optitem[false]{opcittracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2710,7 +2777,7 @@ This option controls the <opcit> tracker which is required by the \cmd{ifopcit}
\item[constrict] This mode combines the features of \opt{context} and \opt{strict}. See the explanation of \kvopt{ibidtracker}{constrict} for details.
\end{valuelist}
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
This option is also settable on a per-type or per-entry basis.
\optitem[false]{loccittracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2725,7 +2792,7 @@ This option controls the <loccit> tracker which is required by the \cmd{ifloccit
\item[constrict] This mode combines the features of \opt{context} and \opt{strict}. See the explanation of \kvopt{ibidtracker}{constrict} for details. In addition to that, this mode also checks if the \prm{postnote} argument is numerical (based on \cmd{ifnumerals} from \secref{aut:aux:tst}).
\end{valuelist}
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
This option is also settable on a per-type or per-entry basis.
\optitem[false]{idemtracker}{\opt{true}, \opt{false}, \opt{context}, \opt{strict}, \opt{constrict}}
@@ -2740,9 +2807,13 @@ This option controls the <idem> tracker which is required by the \cmd{ifciteidem
\item[constrict] This mode is similar to \opt{context} with one additional condition: a reference in a footnote will only be considered as unambiguous if the current citation and the previous citation are given in the same footnote or in immediately consecutive footnotes.
\end{valuelist}
-Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+Note that this tracker is disabled in all floats unless explicitly requested with \opt{trackfloats}, see \secref{aut:cav:flt}.
This option is also settable on a per-type or per-entry basis.
+\boolitem[false]{trackfloats}
+
+Whether to enable citation tracking in floats. Citation tracking in floats can be tricky, so this option should only be enabled if absolutely necessary and the output should be scrutinised carefully, see also \secref{aut:cav:flt}.
+
\boolitem[true]{parentracker}
This option controls the parenthesis tracker which keeps track of nested parentheses and brackets. This information is used by \cmd{parentext} and \cmd{brackettext} from \secref{use:cit:txt}, \cmd{mkbibparens} and \cmd{mkbibbrackets} from \secref{aut:fmt:ich} and \cmd{bibopenparen}, \cmd{bibcloseparen}, \cmd{bibopenbracket}, \cmd{bibclosebracket} (also \secref{aut:fmt:ich}).
@@ -2803,6 +2874,8 @@ Whether or not to provide the special fields \bibfield{labelyear}, \bibfield{lab
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.
\begin{table}
+\caption{Work Uniqueness options}
+\label{use:opt:wu}
\footnotesize
\ttfamily
\tablesetup
@@ -2818,8 +2891,6 @@ uniquebaretitle & \cmd{ifuniquebaretitle} & labeltitle {\rmfamily when} labelnam
uniquework & \cmd{ifuniquework} & labelname+labeltitle\\
\bottomrule
\end{tabularx}
-\caption{Work Uniqueness options}
-\label{use:opt:wu}
\end{table}
\boolitem[false]{singletitle}
@@ -2892,27 +2963,22 @@ With \kvopt{maxnames}{3}, \kvopt{minnames}{1}, \kvopt{nohashothers}{false}, the
\begin{lstlisting}{}
Jones 1972
- Jones et al 1972
+ Jones et al. 1972
Smith 2000
- Smith et al 2000
+ Smith et al. 2000
\end{lstlisting}
%
Whereas with \kvopt{maxnames}{3}, \kvopt{minnames}{1}, \kvopt{nohashothers}{true}, the result would be:
\begin{lstlisting}{}
Jones 1972a
- Jones et al 1972b
+ Jones et al. 1972b
Smith 2000a
- Smith et al 2000b
+ Smith et al. 2000b
\end{lstlisting}
-If desired, this could be further simplified with:
-
-\begin{ltxexample}
- \DefineBibliographyStrings{english}{andothers={}}
-\end{ltxexample}
-%
-To obtain:
+If desired, this could be further simplified by removing the <et al.\@>
+to obtain:
\begin{lstlisting}{}
Jones 1972a
@@ -2940,6 +3006,8 @@ This option is also settable on a per-type, per-entry and per-namelist basis.
\end{optionlist}
\begin{table}
+\caption{Disambiguation counters}
+\label{use:opt:tab1}
\footnotesize
\ttfamily
\tablesetup
@@ -2972,8 +3040,6 @@ labeltitleyear & {\rmfamily ---} & extratitleyear & labeltitle+labelyear\\
{\rmfamily ---} & {\rmfamily ---} & extraname & labelname\\
\bottomrule
\end{tabularx}
-\caption{Disambiguation counters}
-\label{use:opt:tab1}
\end{table}
\subsubsection{Entry Options}
@@ -3121,7 +3187,7 @@ The citation styles which come with this package implement several common citati
This style implements a numeric citation scheme similar to the standard bibliographic facilities of \latex. It should be employed in conjunction with a numeric bibliography style which prints the corresponding labels in the bibliography. It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labelnumber}{true}. This style also provides an additional preamble option called \opt{subentry} which affects the handling of entry sets. If this option is disabled, citations referring to a member of a set will point to the entire set. If it is enabled, the style supports citations like «[5c]» which point to a subentry in a set (the third one in this example). See the style example for details.
\item[numeric-comp]\seestyleexample{31-style-numeric-comp-biber}
-A compact variant of the \texttt{numeric} style which prints a list of more than two consecutive numbers as a range. This style is similar to the \sty{cite} package and the \opt{sort\&compress} option of the \sty{natbib} package in numerical mode. For example, instead of «[8, 3, 1, 7, 2]» this style would print «[1--3, 7, 8]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{sortcites}{true}, \kvopt{labelnumber}{true}. It also provides the \opt{subentry} option.
+A compact variant of the \texttt{numeric} style which prints a list of more than two consecutive numbers as a range. This style is similar to the \sty{cite} package and the \opt{sort\&compress} option of the \sty{natbib} package in numerical mode. For example, instead of «[8, 3, 1, 7, 2]» this style would print «[1--3, 7, 8]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{sortcites}{true}, \kvopt{labelnumber}{true}. It also provides the \opt{subentry} and \opt{subentrycomp} options.
\item[numeric-verb]\seestyleexample{32-style-numeric-verb-biber}
A verbose variant of the \texttt{numeric} style. The difference affects the handling of a list of citations and is only apparent when multiple entry keys are passed to a single citation command. For example, instead of «[2, 5, 6]» this style would print «[2]; [5]; [6]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labelnumber}{true}. It also provides the \opt{subentry} option.
@@ -3311,7 +3377,7 @@ Multiple relations to the same entry are also possible:
}
\end{lstlisting}
%
-Note the the order of the keys in lists of multiple related entries is important. The data from multiple related entries is printed in the order of the keys listed in this field. See \secref{aut:ctm:rel} for a more details on the mechanisms behind this feature. You can turn this feature off using the package option \opt{related} from \secref{use:opt:pre:gen}.
+Note the order of the keys in lists of multiple related entries is important. The data from multiple related entries is printed in the order of the keys listed in this field. See \secref{aut:ctm:rel} for a more details on the mechanisms behind this feature. You can turn this feature off using the package option \opt{related} from \secref{use:opt:pre:gen}.
You can use the \bibfield{relatedoptions} to set options on the related entry data clone. This is useful if you need to override the \opt{dataonly} option which is set by default on all related entry clones. For example, if you will expose some of the names in the related clone in your document, you may want to have them disambiguated from names in other entries but normally this won't happen as related clones have the per"=entry \opt{dataonly} option set and this in turn sets \kvopt{uniquename}{false} and \kvopt{uniquelist}{false}. In such a case, you can set \bibfield{relatedoptions} to just \opt{skiplab, skipbib, skipbiblist}.
@@ -3546,9 +3612,9 @@ Adds a \prm{resource}, such as a \file{.bib} file, to the default resource list.
\begin{ltxexample}
\addbibresource{bibfile1.bib}
\addbibresource{bibfile2.bib}
-\addbibresource{bibfiles/bibfile*.bib}
-\addbibresource{bibfile-num?.bib}
-\addbibresource{bibfile{1,2,3}.bib}
+\addbibresource[glob]{bibfiles/bibfile*.bib}
+\addbibresource[glob]{bibfile-num?.bib}
+\addbibresource[glob]{bibfile{1,2,3}.bib}
\addbibresource[location=remote]{http://www.citeulike.org/bibtex/group/9517}
\addbibresource[location=remote,label=lan]{ftp://192.168.1.57/~user/file.bib}
\end{ltxexample}
@@ -3567,7 +3633,7 @@ Assigns a label to a resource. The \prm{identifier} may be used in place of the
\valitem[local]{location}{location}
-The location of the resource. The \prm{location} may be either \texttt{local} for local resources or \texttt{remote} for \acr{URL}s. Remote resources require \biber. The protocols \acr{HTTP} and \acr{FTP} are supported. The remote \acr{URL} must be a fully qualified path to a \file{bib} file or a \acr{URL} which returns a \file{bib} file.
+The location of the resource. The \prm{location} may be either \texttt{local} for local resources or \texttt{remote} for \acr{URL}s. Remote resources require \biber. The protocols \acr{HTTP/HTTPS} and \acr{FTP} are supported. The remote \acr{URL} must be a fully qualified path to a \file{bib} file or a \acr{URL} which returns a \file{bib} file.
\valitem[file]{type}{type}
@@ -3585,6 +3651,13 @@ The data type (format) of the resource. The following formats are currently supp
\end{valuelist}
+\boolitem{glob}
+
+Whether \biber should glob (expand according to pattern) the datasource name. There is
+a global setting for this in \biber (false by default and settable to true
+using the \opt{--glob-datasources} option). This option allows overriding
+the \biber default on a per-resource basis.
+
\end{optionlist*}
\cmditem{addglobalbib}[options]{resource}
@@ -3622,6 +3695,10 @@ The bibliography and the list of shorthands typically have a chapter or section
This option overrides the default title provided by the heading selected with the \opt{heading} option, if supported by the heading definition. See \secref{use:bib:hdg} for details.
+\optitem[\normalfont\emph{global setting} (\opt{none})]{block}{\opt{none}, \opt{space}, \opt{par}, \opt{nbpar}, \opt{ragged}}
+
+This option overrides the global \opt{block} option (see \secref{use:opt:pre:gen}, the meaning of the settings is explained there as well).
+
\valitem{prenote}{name}
The prenote is an arbitrary piece of text to be printed after the heading but before the list of references. This option selects the prenote \prm{name}, as defined with \cmd{defbibnote}. By default, no prenote 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.
@@ -3710,7 +3787,7 @@ This command loops over all bibliography categories. This is equivalent to givin
This command prints a bibliography heading defined with \cmd{defbibheading}. It takes one optional argument, which is a list of options given in \keyval notation. The options are a small subset of those supported by \cmd{printbibliography}. Valid options are \opt{heading} and \opt{title}. By default, this command uses the heading \texttt{bibliography}. See \secref{use:bib:hdg} for details. Also see \secref{use:use:mlt,use:use:div} for usage examples.
-\cmditem{DeclarePrintbibliographyDefaults}[key=value, \dots]
+\cmditem{DeclarePrintbibliographyDefaults}{key=value, \dots}
This command can be used to globally set defaults for some options to \cmd{printbibliography}, the \cmd{bibby...} bibliography commands and \cmd{printbibheading}.
The supported keys are
@@ -3816,15 +3893,17 @@ Naturally all defaults can be overridden by options to \cmd{printbiblist} and de
Bibliography lists are often used to print lists of various kinds of shorthands and this can result in duplicate entries if more than one bibliography entry has the same shorthand. For example, several journal articles in the same journal would result in duplicate entries in a list of journal shorthands. You can use the fact that such lists automatically pick up a \cmd{bibcheck} with the same name as the list to define a check to remove duplicates. If you are defining a list to print all of the journal shorthands using the \bibfield{shortjournal} field, you could define a \cmd{bibcheck} like this:
-\begin{ltxexample}
+\begin{ltxexample}[basicstyle=\displayverbfont\footnotesize]
\defbibcheck{shortjournal}{%
\iffieldundef{shortjournal}
{\skipentry}
{\iffieldundef{journaltitle}
{\skipentry}
- {\ifcsdef{\strfield{shortjournal}=\strfield{journaltitle}}
+ {\ifcsdef{sjcheck@\therefsection
+ -\strfield{shortjournal}=\strfield{journaltitle}}
{\skipentry}
- {\savefieldcs{journaltitle}{\strfield{shortjournal}=\strfield{journaltitle}}}}}}
+ {\savefieldcs{journaltitle}{sjcheck@\therefsection
+ -\strfield{shortjournal}=\strfield{journaltitle}}}}}}
\end{ltxexample}
\subsubsection{Bibliography Sections}
@@ -4250,7 +4329,7 @@ At the beginning of the document, there is always a global context containing gl
\cmditem{assignrefcontextentries*}[key=value, \dots]{*}
\end{ltxsyntax}
-These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext}. The default behaviour is that the data for a citation is drawn from the refcontext of the most recently processed bibliography in which it was printed\footnote{This does not always mean what one might think. In a document containing multiple bibliographies, the last bibliography will be the context for any citations \emph{before} the first bibliography because all bibliographies are processed when the \file{.bbl}is read.}. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular refcontext specified by the \prm{refcontext key/values} which are parsed as the per the corresponding \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. \cmd{assignrefcontextentries} accepts a single asterisk instead of a list of entrykeys which allows the assignment of all keys in a refsection to a refcontext with having to explicitly list them. An example:
+These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext}. The default behaviour is that the data for a citation is drawn from the refcontext of the most recently processed bibliography in which it was printed\footnote{This does not always mean what one might think. In a document containing multiple bibliographies, the last bibliography will be the context for any citations \emph{before} the first bibliography because all bibliographies are processed when the \file{.bbl} is read.}. For citations that are used in some way but not printed in a bibliography or bibliography list, they default to drawing their data from the global refcontext established at the beginning of the document. To override this behaviour, instead of manually wrapping citation commands in \env{refcontext} environments, which might be error-prone and tedious, you can register a comma"=separated list of \prm{keywords}, \prm{categories} or \prm{entrykeys} which, respectively, make the entries with any of the specified keywords, entries in any of the specified categories (see \secref{use:use:div}) or entries with any of the specified citation keys draw their data from a particular refcontext specified by the \prm{refcontext key/values} which are parsed as the per the corresponding \env{refcontext} options. Such refcontext auto-assignments are specific to the current refsection. You may specify the same citation key in any of these commands but be aware that assignment is done in the order \prm{keywords}, \prm{categories}, \prm{entrykeys} with the later specifications overriding the earlier. \cmd{assignrefcontextentries} accepts a single asterisk instead of a list of entrykeys which allows the assignment of all keys in a refsection to a refcontext with having to explicitly list them. An example:
\begin{ltxexample}[style=latex]
\assignrefcontextentries[labelprefix=A]{key2}
@@ -4701,6 +4780,8 @@ will execute:
Note that the \texttt{mcite} module is not a compatibility module. It provides commands which are very similar but not identical in syntax and function to \sty{mcite}'s commands. When migrating from \sty{mcite}\slash\sty{mciteplus} to \biblatex, legacy files must be updated. With \sty{mcite}, the first member of the citation group is also the identifier of the group as a whole. Borrowing an example from the \sty{mcite} manual, this group:
\begin{table}
+\caption{\sty{mcite}-like commands}
+\label{use:cit:mct:tab1}
\tablesetup
\begin{tabular}{@{}V{0.5\textwidth}@{}V{0.5\textwidth}@{}}
\toprule
@@ -4716,10 +4797,10 @@ Note that the \texttt{mcite} module is not a compatibility module. It provides c
|\textcite| & |\mtextcite| \\
|\Textcite| & |\Mtextcite| \\
|\supercite| & |\msupercite| \\
+|\autocite| & |\mautocite| \\
+|\Autocite| & |\Mautocite| \\
\bottomrule
\end{tabular}
-\caption{\sty{mcite}-like commands}
-\label{use:cit:mct:tab1}
\end{table}
\begin{ltxexample}
@@ -4735,6 +4816,9 @@ consists of three entries and the entry key of the first one also serves as iden
Once defined, an entry set is handled like any regular entry in a \file{bib} file. When using one of the \texttt{numeric} styles which come with \biblatex and activating its \opt{subentry} option, it is even possible to refer to set members. See \tabref{use:cit:mct:tab2} for some examples. Restating the original definition of the set is redundant, but permissible. In contrast to \sty{mciteplus}, however, restating a part of the original definition is invalid. Use the entry key of the set instead.
\begin{table}
+\caption[\sty{mcite}-like syntax]
+{\sty{mcite}-like syntax (sample output with \kvopt{style}{numeric} and \opt{subentry} option)}
+\label{use:cit:mct:tab2}
\tablesetup
\begin{tabular}{@{}V{0.6\textwidth}@{}V{0.1\textwidth}@{}p{0.3\textwidth}@{}}
\toprule
@@ -4750,9 +4834,6 @@ Once defined, an entry set is handled like any regular entry in a \file{bib} fil
|\cite{weinberg}| & [1c] & Regular |\cite| works as well \\
\bottomrule
\end{tabular}
-\caption[\sty{mcite}-like syntax]
-{\sty{mcite}-like syntax (sample output with \kvopt{style}{numeric} and \opt{subentry} option)}
-\label{use:cit:mct:tab2}
\end{table}
\subsection{Localization Commands}
@@ -4909,7 +4990,11 @@ This command should be used with \cmd{bibnamedelimd} as a reversed-name separato
The dash to be used as a replacement for recurrent authors or editors in the bibliography. The default is an <em> or an <en> dash, depending on the indentation of the list of references.
\csitem{labelnamepunct}\DeprecatedMark
-A separator to be printed after the name used for alphabetizing in the bibliography (\bibfield{author} or \bibfield{editor}, if the \bibfield{author} field is undefined) instead of \cmd{newunitpunct}. The default is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation but permits convenient reconfiguration. This punctuation command is deprecated and has been superseded by the context-sensitive \cmd{nametitledelim} (see \secref{use:fmt:csd}). For backwards compatibility reasons, however, \cmd{nametitledelim} still defaults to \cmd{labelnamepunct} in the \texttt{bib} and \texttt{biblist} contexts. Style authors may want to consider replacing \cmd{labelnampunct} with \texttt{\textbackslash printdelim\{nametitledelim\}} and users may want to prefer modifying the context-sensitive \texttt{nametitledelim} with \cmd{DeclareDelimFormat} over redefining \cmd{labelnamepunct}.
+A separator to be printed after the name used for alphabetizing in the bibliography (\bibfield{author} or \bibfield{editor}, if the \bibfield{author} field is undefined) instead of \cmd{newunitpunct}. The default is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation but permits convenient reconfiguration. This punctuation command is deprecated and has been superseded by the context-sensitive \cmd{nametitledelim} (see \secref{use:fmt:csd}). For backwards compatibility reasons, however, \cmd{nametitledelim} still defaults to \cmd{labelnamepunct} in the \texttt{bib} and \texttt{biblist} contexts. Style authors may want to consider replacing \cmd{labelnampunct} with \texttt{\textbackslash printdelim\{nametitledelim\}} and users may want to prefer modifying the context-sensitive \texttt{nametitledelim} in the \texttt{bib} context with \cmd{DeclareDelimFormat} over redefining \cmd{labelnamepunct}, e.g.
+\begin{ltxexample}
+\DeclareDelimFormat[bib]{nametitledelim}{%
+ \addcolon\space}
+\end{ltxexample}
\csitem{subtitlepunct}
The separator printed between the fields \bibfield{title} and \bibfield{subtitle}, \bibfield{booktitle} and \bibfield{booksubtitle}, as well as \bibfield{maintitle} and \bibfield{mainsubtitle}. With the default styles, this separator replaces \cmd{newunitpunct} at this location. The default definition is \cmd{newunitpunct}, \ie it is not handled differently from regular unit punctuation.
@@ -4923,6 +5008,9 @@ The separator printed before the \bibfield{pages} field. The default is a comma
\csitem{bibpagerefpunct}
The separator printed before the \bibfield{pageref} field. The default is an interword space.
+\csitem{bibeidpunct}
+The separator printed before the \bibfield{eid} field (similar to \cmd{bibpagespunct}). The default is a comma plus an interword space.
+
\csitem{multinamedelim}\CSdelimMark
The delimiter printed between multiple items in a name list like \bibfield{author} or \bibfield{editor} if there are more than two names in the list. The default is a comma plus an interword space. See \cmd{finalnamedelim} for an example.\footnote{Note that \cmd{multinamedelim} is not used at all if there are only two names in the list. In this case, the default styles use the \cmd{finalnamedelim}.}
@@ -4960,9 +5048,27 @@ The delimiter printed before the localisation string <\texttt{andmore}> if a lit
\csitem{multicitedelim}
The delimiter printed between citations if multiple entry keys are passed to a single citation command. The default is a semicolon plus an interword space.
+\csitem{multiciterangedelim}
+The delimiter printed between two citations if they are compressed to a range. The default is \cmd{bibrangedash}.
+
+\csitem{multicitesubentrydelim}
+The delimiter printed between subentry citations of the same set. This delimiter is only used in citation styles that reduce citations of the same set to a more compact form (\opt{subentry} of \texttt{numeric-comp}). The default is a comma.
+
+\csitem{multicitesubentryrangedelim}
+The delimiter printed between two citations of the same set if they are compressed to a range. The default is \cmd{multiciterangedelim}.
+
\csitem{supercitedelim}
Similar to \cmd{multicitedelim}, but used by the \cmd{supercite} command only. The default is a comma.
+\csitem{superciterangedelim}
+Analogue of \cmd{multiciterangedelim} for \cmd{supercite}. The default is \cmd{bibrangedash}.
+
+\csitem{supercitesubentrydelim}
+Analogue of \cmd{multicitesubentrydelim} for \cmd{supercite}. The default is \cmd{supercitedelim}.
+
+\csitem{supercitesubentryrangedelim}
+Analogue of \cmd{multicitesubentryrangedelim} for \cmd{supercite}. The default is \cmd{superciterangedelim}.
+
\csitem{compcitedelim}
Similar to \cmd{multicitedelim}, but used by certain citation styles when <compressing> multiple citations. The default definition is a comma plus an interword space.
@@ -5043,13 +5149,13 @@ For backwards compatibility with the legacy \bibtex name parts, the following ar
\mkbibnameaffix
\end{ltxexample}
-\csitem{mkbibcompletenamefamily}{text}
+\cmditem{mkbibcompletenamefamily}{text}
This command, which takes one argument, is used to format the complete name in \texttt{family} format order.
-\csitem{mkbibcompletenamefamilygiven}{text}
+\cmditem{mkbibcompletenamefamilygiven}{text}
This command, which takes one argument, is used to format the complete name in \texttt{family-given} format order.
-\csitem{mkbibcompletenamegivenfamily}{text}
+\cmditem{mkbibcompletenamegivenfamily}{text}
This command, which takes one argument, is used to format the complete name in \texttt{given-family} format order.
\cmditem{mkbibcompletename}{text}
@@ -5079,7 +5185,7 @@ Prints \acr{ISO8601-2} format date circa information when the global option \opt
\csitem{enddatecircaprintiso}
Prints \acr{ISO8601-2} format date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifenddatecirca} test is true. Prints \cmd{textasciitilde}.
-\csitem{dateeraprint}{yearfield}
+\cmditem{dateeraprint}{yearfield}
Prints date era information when the global option \opt{dateera} is set to <secular> or <christian>. By default, prints the \opt{dateeradelim} delimiter and the appropriate localised era term (\secref{aut:lng:key:dt}). If the \opt{dateeraauto} option is set, then the passed \prm{yearfield} (which is the name of a year field such as <year>, <origyear>, <endeventyear> etc.) is tested to see if its value is earlier than the \opt{dateeraauto} threshold and if so, then the BCE/CE localisation will be output too. The default setting for \opt{dateeraauto} is 0 and so only BCE/BC localisation strings are candidates for output. Detects whether the start or end year era information is to be printed by looking at the \prm{yearfield} name passed to it.
\csitem{dateeraprintpre}
@@ -5124,26 +5230,31 @@ The delimiters described in \secref{use:fmt:fmt} are globally defined. That is,
\cmditem{DeclareDelimFormat}[context, \dots]{name, \dots}{code}
\cmditem*{DeclareDelimFormat}*[context, \dots]{name, \dots}{code}
-Declares the delimiter macros in the comma"=separated list \prm{names} with the replacement test \prm{code}. If the optional comma"=separated list of \prm{contexts} is given, declare the \prm{names} only for those contexts. \prm{names} defined without any \prm{contexts} behave just like the global delimiter definitions which \cmd{newcommand} gives---just a plain macro with a replacement which can be used as \cmd{name}. However, you can also call delimiter macros defined in this way by using \cmd{printdelim}, which is context-aware. The starred version clears all \prm{context} specific declarations for all \prm{names} first.
+Declares the delimiter macros in the comma"=separated list \prm{names} with the replacement text \prm{code}. If the optional comma"=separated list of \prm{contexts} is given, declare the \prm{names} only for those contexts. \prm{names} defined without any \prm{contexts} behave just like the global delimiter definitions which \cmd{newcommand} gives---just a plain macro with a replacement which can be used as \cmd{name}. However, you can also call delimiter macros defined in this way by using \cmd{printdelim}, which is context-aware. The starred version clears all \prm{context} specific declarations for all \prm{names} first.
+
+\cmditem{DeclareDelimAlias}[alias context, \dots]{alias}[delim context]{delim}
-\cmditem{DeclareDelimAlias}{alias}{delim}
-\cmditem*{DeclareDelimAlias}*[alias context, \dots]{alias}[delim context]{delim}
+Declares \prm{alias} to be an alias for the delimiter \prm{delim}. If the optional \prm{alias context, \dots} nor \prm{delim context} are given, the assigment is performed for all existing contexts of the target \prm{delim} separately, so that \prm{alias} becomes an exact copy of \prm{delim} in all contexts. If only the second optional argument \prm{delim context} is given, all existing contexts of \prm{alias} will be cleared and the global/empty context becomes an alias of \prm{delim} in the context \prm{delim context}. The first optional argument \prm{alias context, \dots} may hold a list of contexts for which the alias is assigned. In that case the second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing, the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used.
-Declares \prm{alias} to be an alias for the delimiter \prm{delim}. The assigment is performed for all existing contexts of the target \prm{delim}.
-The starred version assigns the alias for specific contexts only. The first optional argument \prm{alias context} holds a list of contexts for which the assignment is going to be performed. If it is empty or missing the global/empty context is assumed. The second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used.
\begin{ltxexample}[style=latex]
-\DeclareDelimAlias*[bib,biblist]{finalnamedelim}[]{multinamedelim}
+\DeclareDelimAlias[bib,biblist]{finalnamedelim}[]{multinamedelim}
\end{ltxexample}
%
Defines the \opt{bib} and \opt{biblist} contexts of \cmd{finalnamedelim} as aliases of \cmd{multinamedelim} in global context.
On the other hand
\begin{ltxexample}[style=latex]
-\DeclareDelimAlias*[bib,biblist]{finalnamedelim}{multinamedelim}
+\DeclareDelimAlias[bib,biblist]{finalnamedelim}{multinamedelim}
\end{ltxexample}
%
defines \cmd{finalnamedelim} in the context \opt{bib} to be an alias of \cmd{multinamedelim} in the \opt{bib} context and defines \cmd{finalnamedelim} in \opt{biblist} context to be an alias of \cmd{multinamedelim} in \opt{biblist}.
+\cmditem*{DeclareDelimAlias}*[alias context, \dots]{alias}[delim context]{delim}\DeprecatedMark
+
+The starred version of \cmd{DeclareDelimAlias} is deprecated in favour of using unstarred \cmd{DeclareDelimAlias} with optional arguments.
+
+It assigns the delimiter alias for specific contexts only. The first optional argument \prm{alias context} holds a list of contexts for which the assignment is going to be performed. If it is empty or missing the global/empty context is assumed. The second optional argument \prm{delim context} specifies the context of the target delimiter. This argument may not be a list, it can only hold one context. If it is missing the \prm{alias context} is assumed (if \prm{alias context} is a list, the assignment is performed separately for each list item), if it is empty the global context is used.
+
\cmditem{printdelim}[context]{name}
Prints a delimiter with name \prm{name}, locally establishing a optional \prm{context} first. Without the optional \prm{context}, \cmd{printdelim} uses the currently active delimiter context.
@@ -5479,11 +5590,6 @@ This will yield <Œuvres> or <œuvres>.
The facilities discussed in this section are specific to certain localisation modules.
-\subsubsection{Bulgarian}
-\label{use:loc:bul}
-
-Like the Greek localisation module, the Bulgarian module also requires \utf support. It will not work with any other encoding.
-
\subsubsection{American}
\label{use:loc:us}
@@ -5499,6 +5605,36 @@ By default, the <American punctuation> feature is enabled by the \texttt{america
It is highly advisable to always specify \texttt{american}, \texttt{british}, \texttt{australian}, etc. rather than \texttt{english} when loading the \sty{babel}/\sty{polyglossia} packages to avoid any possible confusion. Older versions of the \sty{babel} package used to treat \opt{english} as an alias for \opt{british}; more recent ones treat it as an alias for \opt{american}. The \biblatex package essentially treats \texttt{english} as an alias for \opt{american}, except for the above feature which is only enabled if \texttt{american} is requested explicitly.
+\subsubsection{Bulgarian}
+\label{use:loc:bul}
+
+Like the Greek localisation module, the Bulgarian module also requires \utf support. It will not work with any other encoding.
+
+\subsubsection{Greek}
+\label{use:loc:grk}
+
+The Greek localisation module requires \utf support. It will not work with any other encoding. Generally speaking, the \biblatex package is compatible with the \sty{inputenc} package and with the Unicode engines \lualatex and \xelatex. The \sty{ucs} package will not work. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \biblatex. However, there is one fundamental limitation. As of this writing, \biblatex has no support for switching scripts. Greek titles in the bibliography should work fine, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using a Unicode engine is the only sensible choice.
+
+\subsubsection{Hungarian}
+\label{use:loc:hun}
+
+The Hungarian localisation module needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Hungarian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Hungarian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Hungarian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Hungarian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
+
+\subsubsection{Latvian}
+\label{use:loc:lav}
+
+The Latvian localisation module, like the Hungarian language module, needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Latvian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Latvian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Latvian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Latvian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
+
+\subsubsection{Lithuanian}
+\label{use:loc:lit}
+
+The Lithuanian localisation module needs \utf support and will only work with this encoding.
+
+\subsubsection{Russian}
+\label{use:loc:rus}
+
+Like the Greek and Lithuanian localisation module, the Russian module also requires \utf support. It will not work with any other encoding.
+
\subsubsection{Spanish}
\label{use:loc:esp}
@@ -5527,25 +5663,11 @@ Similar to \cmd{forceE} but enforces <y>.
\end{ltxsyntax}
-\subsubsection{Greek}
-\label{use:loc:grk}
-
-The Greek localisation module requires \utf support. It will not work with any other encoding. Generally speaking, the \biblatex package is compatible with the \sty{inputenc} package and with \xelatex. The \sty{ucs} package will not work. Since \sty{inputenc}'s standard \file{utf8} module is missing glyph mappings for Greek, this leaves Greek users with \xelatex. Note that you may need to load additional packages which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek documents should also work with \biblatex. However, there is one fundamental limitation. As of this writing, \biblatex has no support for switching scripts. Greek titles in the bibliography should work fine, but English and other titles in the bibliography may be rendered in Greek letters. If you need multi-script bibliographies, using \xelatex is the only sensible choice.
+\subsubsection{Turkish}
+\label{use:loc:tur}
-\subsubsection{Russian}
-\label{use:loc:rus}
-
-Like the Greek localisation module, the Russian module also requires \utf support. It will not work with any other encoding.
+By default \sty{babel}'s Turkish localisation module makes <\texttt{=}> a <shorthand>, which breaks the \keyval parser uses by \biblatex. This problem can be resolved by telling \sty{babel} not to make <\texttt{=}> a shorthand (for example by loading \sty{babel} with the option \texttt{shorthands=:!}) or by loading a \keyval package that can deal with active characters (\sty{kvsetkeys} and \sty{xkeyval})\fnurl{https://tex.stackexchange.com/a/160428/35864}.
-\subsubsection{Hungarian}
-\label{use:loc:hun}
-
-The Hungarian localisation module needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Hungarian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Hungarian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Hungarian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Hungarian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
-
-\subsubsection{Latvian}
-\label{use:loc:lav}
-
-The Latvian localisation module, like the Hungarian language module, needs to redefine certain field formats to obtain the grammatically correct word order. This means that these field formats are overwritten whenever the Latvian localisation is active, no matter whether they were defined in the preamble or by a custom style. So please be aware that using the Latvian localisation module may cause the bibliography output to deviate from the format dictated by the loaded style and preamble definitions. Changes to this behaviour need to be made using \cmd{DefineBibliographyExtras}. In particular \cmd{mkpageprefix} is redefined to output the <page> or <pages> string as a suffix after the page number following Latvian conventions, and all formats of fields involving pages, chapters and volumes were modified so that numbers are printed as ordinals. The Latvian localisation module will print a warning to remind you of these changes whenever it is loaded in a document. The warning tells you how to silence it.
\subsection{Usage Notes}
\label{use:use}
@@ -6023,17 +6145,19 @@ This section provides additional usage hints and addresses some common problems
\subsubsection{Usage with \acr{KOMA}-Script Classes}
\label{use:cav:scr}
-When using \biblatex in conjunction with one of the \sty{scrbook}, \sty{scrreprt}, or \sty{scrartcl} classes, the headings \texttt{bibliography} and \texttt{biblist} from \secref{use:bib:hdg} are responsive to the bibliography"=related options of these classes.\footnote{This applies to the traditional syntax of these options (\opt{bibtotoc} and \opt{bibtotocnumbered}) as well as to the \keyval syntax introduced in \acr{KOMA}-Script 3.x, \ie to \kvopt{bibliography}{nottotoc}, \kvopt{bibliography}{totoc}, and \kvopt{bibliography}{totocnumbered}. The global \kvopt{toc}{bibliography} and \kvopt{toc}{bibliographynumbered} options as well as their aliases are detected as well. In any case, the options must be set globally in the optional argument to \cmd{documentclass}.} You can override the default headings by using the \opt{heading} option of \cmd{printbibliography}, \cmd{printbibheading} and \cmd{printbiblist}. See \secref{use:bib:bib, use:bib:biblist, use:bib:hdg} for details. All default headings are adapted at load-time such that they blend with the behavior of these classes. If one of the above classes is detected, \biblatex will also provide the following additional tests which may be useful in custom heading definitions:
+When used in conjunction with a recent version\footnote{At least \acr{KOMA}-Script 3.25 (2018/03/30).} one of the \sty{scrbook}, \sty{scrreprt}, or \sty{scrartcl} classes, \biblatex passes control over the (default) headings \texttt{bibliography} and \texttt{biblist} from \secref{use:bib:hdg} to the class. Hence, bibliography-heading-related class options can be used as usual. You can override the default headings by using the \opt{heading} option of \cmd{printbibliography}, \cmd{printbibheading} and \cmd{printbiblist}. See \secref{use:bib:bib, use:bib:biblist, use:bib:hdg} for details.
+
+\biblatex also tries to detect bibliography-related class options and settings itself.\footnote{This applies to the traditional syntax of these options (\opt{bibtotoc} and \opt{bibtotocnumbered}) as well as to the \keyval syntax introduced in \acr{KOMA}-Script 3.x, \ie to \kvopt{bibliography}{nottotoc}, \kvopt{bibliography}{totoc}, and \kvopt{bibliography}{totocnumbered}. The global \kvopt{toc}{bibliography} and \kvopt{toc}{bibliographynumbered} options as well as their aliases are detected as well. In any case, the options must be set globally in the optional argument to \cmd{documentclass}.} This was required to be able to adapt the bibliography headings to the class settings in older versions of \acr{KOMA}-Script. If one of the above classes is detected, \biblatex will provide the following additional tests which may be useful in custom heading definitions. Since these tests rely on the error-prone external detection of \acr{KOMA}-Script settings and are no longer used with newer \acr{KOMA}-Script versions, these tests are deprecated and should no longer be used.
\begin{ltxsyntax}
-\cmditem{ifkomabibtotoc}{true}{false}
+\cmditem{ifkomabibtotoc}{true}{false}\DeprecatedMark
-Expands to \prm{true} if the class would add the bibliography to the table of contents, and to \prm{false} otherwise.
+Expands to \prm{true} if the class would add the bibliography to the table of contents, and to \prm{false} otherwise. This test is deprecated.
-\cmditem{ifkomabibtotocnumbered}{true}{false}
+\cmditem{ifkomabibtotocnumbered}{true}{false}\DeprecatedMark
-Expands to \prm{true} if the class would add the bibliography to the table of contents as a numbered section, and to \prm{false} otherwise. If this test yields \prm{true}, \cmd{ifkomabibtotoc} will always yield \prm{true} as well, but not vice versa.
+Expands to \prm{true} if the class would add the bibliography to the table of contents as a numbered section, and to \prm{false} otherwise. If this test yields \prm{true}, \cmd{ifkomabibtotoc} will always yield \prm{true} as well, but not vice versa. This test is deprecated.
\end{ltxsyntax}
@@ -6067,7 +6191,7 @@ If the \prm{postnote} argument to a citation command is a page number or page ra
\cite[vii--x; 5, 7]{key}
\end{ltxexample}
%
-In some other cases, however, the tests may get it wrong and you need to resort to the auxiliary commands \cmd{pno}, \cmd{ppno}, and \cmd{nopp} from \secref{use:cit:msc}. For example, suppose a work is cited by a special pagination scheme consisting of numbers and letters. In this scheme, the string <|27a|> would mean <page~27, part~a>. Since this string does not look like a number or a range to \biblatex, you need to force the prefix for a single number manually:
+In some other cases, however, the tests may get it wrong and you need to resort to the auxiliary commands \cmd{pnfmt}, \cmd{pno}, \cmd{ppno}, and \cmd{nopp} from \secref{use:cit:msc}. For example, suppose a work is cited by a special pagination scheme consisting of numbers and letters. In this scheme, the string <|27a|> would mean <page~27, part~a>. Since this string does not look like a number or a range to \biblatex, you need to force the prefix for a single number manually:
\begin{ltxexample}
\cite[\pno~27a]{key}
@@ -6088,6 +6212,12 @@ These commands may be used anywhere in the \prm{postnote} argument. They may als
\cite[see][\ppno~37--46, in particular \pno~40]{key}
\end{ltxexample}
%
+The command \cmd{pnfmt} can be used for \prm{postnote}s consisting of a page range and some additional text. \cmd{pnfmt} prints its argument in the format specified for the postnote and can be used to format the page range automatically without the need for \cmd{pno} and \cmd{ppno}.
+
+\begin{ltxexample}
+\cite[\pnfmt{37-46}, in particular \pnfmt{40}]{key}
+\end{ltxexample}
+%
There are also two auxiliary command for suffixes like <the following page(s)>. Instead of inserting such suffixes literally (which would require \cmd{ppno} to force a prefix):
\begin{ltxexample}
@@ -6102,7 +6232,7 @@ use the auxiliary commands \cmd{psq} and \cmd{psqq}. Note that there is no space
\cite[55\psqq]{key}
\end{ltxexample}
%
-Since the postnote is printed without any prefix if it includes any character which is not an Arabic or Roman numeral, you may also type the prefix manually:
+Since the postnote is printed without any prefix if it includes any character which is not an Arabic or Roman numeral, you may also type the prefix manually---though this is discouraged:
\begin{ltxexample}
\cite[p.~5]{key}
@@ -6184,11 +6314,33 @@ This is how they are employed:
\item K\delim{.-}{c}H\delim{.}{a} Mustermann
\end{namesample}
-\subsubsection{Bibliography Filters and Citation Labels}
+\subsubsection{Split Bibliographies and Citation Labels}
\label{use:cav:lab}
The citation labels generated by this package are assigned to the full list of references before it is split up by any bibliography filters. They are guaranteed to be unique across the entire document (or a \env{refsection} environment), no matter how many bibliography filters you are using. When using a numeric citation scheme, however, this will most likely lead to discontinuous numbering in split bibliographies. Use the \opt{defernumbers} package option to avoid this problem. If this option is enabled, numeric labels are assigned the first time an entry is printed in any bibliography.
+Compare the output of the following example with \texttt{defernumbers=true} and \texttt{defernumbers=false}.
+%
+\begin{ltxexample}
+\documentclass{article}
+\usepackage[defernumbers=true]{biblatex}
+
+\addbibresource{biblatex-examples.bib}
+
+\begin{document}
+Lorem \autocite{worman} ipsum \autocite{sigfridsson}
+dolor \autocite{nussbaum} sit \autocite{aksin}
+
+\printbibheading[title={Bibliography}]
+\printbibliography[heading=subbibliography,
+ type=book, title={Books}]
+\printbibliography[heading=subbibliography,
+ type=article, title={Articles}]
+\end{document}
+\end{ltxexample}
+
+There are pathological cases where neither \texttt{defernumbers=true} nor \texttt{defernumbers=false} produce fully desirable output. This may be the case when entries can end up in several of the split bibliographies---or if there is an additional global bibliography. But in most cases with non-overlapping split bibliographies \texttt{defernumbers=true} produces better results. \sty{biblatex} will therefore suggest setting \opt{defernumbers} to \opt{true} in a warning when a split bibliography setup is detected. That warning can be suppressed in case setting \opt{defernumbers} to \opt{true} is not desirable.
+
\subsubsection{Active Characters in Bibliography Headings}
\label{use:cav:act}
@@ -6649,7 +6801,7 @@ would result in the same information in the \file{.bbl} as:
}
\end{lstlisting}
%
-but would additionally have the field \bibfield{dateunspecified} set to <yearincentury> and \bibfield{origdateunspecified} set to <yearindecade>. This information could be used to render the \bibfield{date} as perhaps <20th century> and \bibfield{origdate} as <The 1990s>, information which cannot be derived from the date ranges alone. Since such auto-generated ranges have a know values, given the <unspecified> meta-information, it is relatively easy to use the range values to format special cases. While the standard styles not do this, examples are given in the file \file{96-dates.tex}.
+but would additionally have the field \bibfield{dateunspecified} set to <yearincentury> and \bibfield{origdateunspecified} set to <yearindecade>. This information could be used to render the \bibfield{date} as perhaps <20th century> and \bibfield{origdate} as <The 1990s>, information which cannot be derived from the date ranges alone. Since such auto-generated ranges have known values, given the <unspecified> meta-information, it is relatively easy to use the range values to format special cases. While the standard styles do not do this, examples are given in the file \file{96-dates.tex}.
\fielditem{entrykey}{string}
@@ -6877,10 +7029,15 @@ will tell you if the corresponding date is defined and an open"=ended range. Ope
\begingroup
\tablesetup
\begin{longtable}[l]{%
- @{}V{0.15\textwidth}%
- @{}V{0.4\textwidth}%
- @{}V{0.3\textwidth}%
- @{}V{0.2\textwidth}@{}}
+ @{}V{0.15\textwidth}%
+ @{}V{0.4\textwidth}%
+ @{}V{0.3\textwidth}%
+ @{}V{0.2\textwidth}@{}}
+\caption{Date Interface}
+\label{aut:bbx:fld:tab1}
+\endfirsthead
+\caption[]{Date Interface (cont'd)}
+\endhead
\toprule
\multicolumn{2}{@{}H}{\file{bib} File} &
\multicolumn{2}{H}{Data Interface} \\
@@ -7020,11 +7177,8 @@ eventdate & 1995-01-31/1995-02-05 & eventday & 31 \\
& & eventendtimezone & undefined \\
\bottomrule
%\end{tabularx}
-\caption{Date Interface}
-\label{aut:bbx:fld:tab1}
\end{longtable}
\endgroup
-
\begin{fieldlist}
\fielditem{hour}{datepart}
@@ -7362,7 +7516,7 @@ If an unknown \prm{position} identifier is used, it defaults to \opt{o}.
\item[l] The punctuation mark is moved to the left of the citation and thus appears before it.
\item[f] Like \opt{r} in footnotes and like \opt{l} otherwise.
\item[c] Pass the punctuation on to the internal implementation of the citation commands. It will then be executed within the \prm{wrapper} command if given.
-\item[o] Retain the default set-up of \opt{c} for citation defined commands without \prm{wrapper} command and \opt{l} for citation commands defined with a \prm{wrapper} command.
+\item[o] Retain the default setup of \opt{c} for citation defined commands without \prm{wrapper} command and \opt{l} for citation commands defined with a \prm{wrapper} command.
\item[d] Drop the explicit punctuation mark. It will only be available as the field \bibfield{postpunct}.
\end{valuelist}
%
@@ -7575,12 +7729,12 @@ This section introduces the commands used to define the formatting directives re
\cmditem{DeclareFieldFormat}[entrytype, \dots]{format}{code}
\cmditem*{DeclareFieldFormat}*{format}{code}
-Defines the field format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed by \cmd{printfield}. The value of the field will be passed to the \prm{code} as its first and only argument. The name of the field currently being processed is available to the \prm{code} as \cmd{currentfield}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}.
+Defines the field format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed by \cmd{printfield}. The value of the field will be passed to the \prm{code} as its first and only argument. The name of the field currently being processed is available to the \prm{code} as \cmd{currentfield}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
\cmditem{DeclareListFormat}[entrytype, \dots]{format}{code}
\cmditem*{DeclareListFormat}*{format}{code}
-Defines the literal list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every item in a list processed by \cmd{printlist}. The current item will be passed to the \prm{code} as its first and only argument. The name of the literal list currently being processed is available to the \prm{code} as \cmd{currentlist}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. Note that the formatting directive also handles the punctuation to be inserted between the individual items in the list. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}.
+Defines the literal list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every item in a list processed by \cmd{printlist}. The current item will be passed to the \prm{code} as its first and only argument. The name of the literal list currently being processed is available to the \prm{code} as \cmd{currentlist}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. Note that the formatting directive also handles the punctuation to be inserted between the individual items in the list. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
\cmditem{DeclareNameFormat}[entrytype, \dots]{format}{code}
@@ -7608,7 +7762,7 @@ The value of the datamodel <nameparts> constant (see \secref{aut:bbx:drv}) creat
\namepartgiveni
\end{ltxexample}
%
-If a certain part of a name is not available, the corresponding macro will be empty, hence you may use, for example, the \sty{etoolbox} tests like \cmd{ifdefvoid} to check for the individual parts of a name. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. Note that the formatting directive also handles the punctuation to be inserted between separate names and between the individual parts of a name. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. See also \secref{use:cav:nam}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared. \emph{Do not put any whitespace between the arguments to this macro as the definitions are quite complex and you will get unexpected results}.
+If a certain part of a name is not available, the corresponding macro will be empty, hence you may use, for example, the \sty{etoolbox} tests like \cmd{ifdefvoid} to check for the individual parts of a name. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. Note that the formatting directive also handles the punctuation to be inserted between separate names and between the individual parts of a name. You need to check whether you are in the middle of or at the end of the list, \ie whether \cnt{listcount} is smaller than or equal to \cnt{liststop}. See also \secref{use:cav:nam}. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
\cmditem{DeclareListWrapperFormat}[entrytype, \dots]{format}{code}
\cmditem*{DeclareListWrapperFormat}*{format}{code}
@@ -7635,17 +7789,6 @@ Defines the literal list format \prm{format}. This formatting directive is arbit
Defines the name list format \prm{format}. This formatting directive is arbitrary \prm{code} to be executed for every name in a list processed by \cmd{indexnames}. The name of the name list currently being processed is available to the \prm{code} as \cmd{currentname}. If an \prm{entrytype} is specified, the format is specific to that type. The \prm{entrytype} argument may be a comma"=separated list of values. The parts of the name will be passed to the \prm{code} as separate arguments. This command is very similar to \cmd{DeclareNameFormat} except that the data handled by the \prm{code} is not intended to be printed but written to the index. Note that \cmd{indexnames} will execute the \prm{code} as is, \ie the \prm{code} must include \cmd{index} or a similar command. The starred variant of this command is similar to the regular version, except that all type-specific formats are cleared.
-\cmditem{DeclareIndexListWrapperFormat}[entrytype, \dots]{format}{code}
-\cmditem*{DeclareIndexListWrapperFormat}*{format}{code}
-
-Similar to \cmd{DeclareIndexListFormat} but for the list format used for indices.
-
-
-\cmditem{DeclareIndexNameWrapperFormat}[entrytype, \dots]{format}{code}
-\cmditem*{DeclareIndexNameWrapperFormat}*{format}{code}
-
-Similar to \cmd{DeclareIndexNameFormat} but for the name list format used for indices.
-
\cmditem{DeclareFieldAlias}[entry type]{alias}[format entry type]{format}
Declares \prm{alias} to be an alias for the field format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive.
@@ -7678,14 +7821,6 @@ Declares \prm{alias} to be an alias for the literal list format \prm{format}. If
Declares \prm{alias} to be an alias for the name list format \prm{format}. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive.
-\cmditem{DeclareIndexListWrapperAlias}[entrytype, \dots]{format}{code}
-
-Similar to \cmd{DeclareIndexListFormat} but for the list format used for indices.
-
-\cmditem{DeclareIndexNameWrapperAlias}[entrytype, \dots]{format}{code}
-
-Similar to \cmd{DeclareIndexNameFormat} but for the name list format used for indices.
-
\cmditem{DeprecateFieldFormatWithReplacement}[entry type]{alias}[format entry type]{format}
Declares \prm{alias} to be an alias for the name list format \prm{format} and issue a deprecation warning. If an \prm{entrytype} is specified, the alias is specific to that type. The \prm{format entry type} is the entry type of the backend format. This is only required when declaring an alias for a type"=specific formatting directive.
@@ -7718,14 +7853,6 @@ Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index list formats.
Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index name formats.
-\cmditem{DeprecateIndexListWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format}
-
-Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index list formats.
-
-\cmditem{DeprecateIndexNameWrapperFormatWithReplacement}[entry type]{alias}[format entry type]{format}
-
-Similar to \cmd{DeprecateFieldFormatWithReplacement} but for index name formats.
-
\end{ltxsyntax}
\subsection{Customization}
@@ -7743,7 +7870,7 @@ The related entries feature comprises the following components:
%
The special fields are \bibfield{related}, \bibfield{relatedtype}, \bibfield{relatedstring} and \bibfield{relatedoptions}:
\begin{keymarglist}
-\item[related] A separated list of keys of entries which are related to this entry in some way. Note the the order of the keys is important. The data from multiple related entries is printed in the order of the keys listed in this field.
+\item[related] A separated list of keys of entries which are related to this entry in some way. Note the order of the keys is important. The data from multiple related entries is printed in the order of the keys listed in this field.
\item[relatedtype] The type of relationship. This serves three purposes. If the value of this field resolves to a localisation string identifier, then the resulting localised string is printed before the data from the related entries. Secondly, if there is a macro called \texttt{related:\prm{relatedtype}}, this is used to format the data from the related entries. If no such macro exists, then the macro \texttt{related:default} is used. Lastly, if there is a format named \texttt{related:\prm{relatedtype}}, then it is used to format both the localised string and related entry data. If there is no related type specific format, the \texttt{related} format is used.
\item[relatedstring] If an entry contains this field, then if value of the field resolves to a localisation string identifier, the localisation key value specified is printed before data from the related entries. If the field does not specify a localisation key, its value is printed literally. If both \bibfield{relatedtype} and \bibfield{relatedstring} are present in an entry, \bibfield{relatedstring} is used for the pre-data string (but \bibfield{relatedtype} is still used to determine the macro and format to use when printing the data).
\item[relatedoptions] A list of per"=entry options to set on the related entry (actually on the clone of the related entry which is used as a data source---the actual related entry is not modified because it might be cited directly itself).
@@ -7834,7 +7961,7 @@ Defines source data modification (mapping) rules which can be used to perform an
\item Add new fields to an entry
\item Remove fields from an entry
\item Modify the contents of a field using standard Perl regular expression
- match and replace
+ match and replace\footnote{See for example \url{https://perldoc.perl.org/perlretut.html}, \url{https://perldoc.perl.org/perlrequick.html} and \url{https://perldoc.perl.org/perlre.html}. There are many more resources available about regular expessions in Perl.}
\item Restrict any of the above operations to entries coming from
particular datasources which you defined in \cmd{addresource} macros
\item Restrict any of the above operations to entries only of a certain
@@ -7932,6 +8059,7 @@ A mapping step. Each step is applied sequentially to every relevant entry where
\boolitem[false]{nocited}
\boolitem[false]{citedornocited}
\boolitem[false]{allnocited}
+\boolitem[false]{starnocited}
\boolitem[false]{entrynocite}
\boolitem[false]{entrynull}
\boolitem[false]{append}
@@ -7946,18 +8074,18 @@ For all boolean \cmd{step} options, the short form \opt{option} is equivalent to
\renewcommand{\labelitemii}{$\circ$}
-Note that the options \opt{cited}, \opt{nocited}, \opt{citedornocited} and
-\opt{allnocited} are unique in that they can make the results of a
-sourcemap differ depending on the refsection. This is because a datasource
-to which source mapping applies may be used in several refsections and
-source mappings are applied when fetching the data from the datasources for
-a refsection. Citation commands are local to a refsection and therefore may
-differ for the same entry from refsection to refsection. For example, the same
-entry may be \cmd{cite}d in one refsection but \cmd{nocite}d in another,
-resulting in different source map results and therefore data between the
-refsections. This can be avoided if desired, by limiting source maps to
-specific refsections only (see \opt{refsection} option to the \cmd{map}
-command above).
+Note that the options \opt{cited}, \opt{nocited}, \opt{citedornocited},
+\opt{allnocited} and \opt{starnocited} are unique in that they can make the
+results of a sourcemap differ depending on the refsection. This is because
+a datasource to which source mapping applies may be used in several
+refsections and source mappings are applied when fetching the data from the
+datasources for a refsection. Citation commands are local to a refsection
+and therefore may differ for the same entry from refsection to refsection.
+For example, the same entry may be \cmd{cite}d in one refsection but
+\cmd{nocite}d in another, resulting in different source map results and
+therefore data between the refsections. This can be avoided if desired, by
+limiting source maps to specific refsections only (see \opt{refsection}
+option to the \cmd{map} command above).
\begin{itemize}
\item If \texttt{entrynew} is set, a new entry is created with the entry key \texttt{entrynewkey} and the entry type given in the option \texttt{entrynewtype}. This
@@ -7990,6 +8118,9 @@ command above).
of an entry was specifically cited via \cmd{cite} or specifically nocited via \cmd{nocite}.
\item If \texttt{allnocited} is used then only apply the step if the entry key
of an entry was included via \cmd{nocite\{*\}}.
+\item If \texttt{starnocited} is used then only apply the step if the entry key
+ of an entry was included solely because of \cmd{nocite\{*\}}. This
+ implies that the entry was neither explicitly \cmd{cite}ed nor explicitly \cmd{nocite}ed.
\item Change the \texttt{typesource} \prm{entrytype} to the
\texttt{typetarget} \prm{entrytype}, if defined. If
\texttt{final} is \texttt{true} then if the \prm{entrytype} of the entry is not \texttt{typesource}, processing of the parent \cmd{map} immediately terminates.
@@ -8392,7 +8523,7 @@ The data model which \biblatex uses consists of four main elements:
The default data model is defined in the core \biblatex file \file{blx-dm.def} using the macros described in this section. The default data model is described in detail in \secref{bib}. The data model is used internally by \biblatex and also by the backend. In practice, changing the data model means that you can define the entrytypes and fields for your datasources and validate your data against the data model. Naturally, this is not much use unless your style supports any new entrytypes or fields and it raises issues of portability between styles (although this can be mitigated by using the dynamic data modification functionality described in \secref{aut:ctm:map}).
-Note that while the \biber/\bibtex input site is not case sensitive when it comes to entry types and field names, the \latex side is case sensitive and uses the exact capitalisation from the data model. At the moment custom data fields are only supported in lowercase.
+Note that while the \biber/\bibtex input site is not case sensitive when it comes to entry types and field names (Perl's Unicode case folding is used to normalise field names and entry types), the \latex side is case sensitive and uses the exact capitalisation from the data model.
Validation against the data model means that after mapping your data sources into the data model, \biber (using its \path{--validate_datamodel} option) can check:
@@ -9345,6 +9476,8 @@ An example of transliterating titles so that they sort correctly in Sanskrit. Th
\end{ltxsyntax}
\begin{table}
+\caption{Valid transliteration pairs}
+\label{tab:translit}
\tablesetup\centering
\begin{tabular}{lll}
\toprule
@@ -9357,8 +9490,6 @@ russian & ala-lc & ALA-LC romanisation for Russian\\
russian & bgn/pcgn-standard & BGN/PCGN:1947 (Standard Variant), Cyrillic to Latin, Russian\\
\bottomrule
\end{tabular}
-\caption{Valid transliteration pairs}
-\label{tab:translit}
\end{table}
\subsubsection[Bibliography List Filters]{Bibliography List Filters}
@@ -10020,10 +10151,18 @@ Expands to \prm{true} if the two dates \prm{datetype1} and \prm{datetype2} would
Expands to \prm{true} if the two dates \prm{datetype1} and \prm{datetype2} have the same year and era. Since the sign of the date is saved in the era field, years should be compared using this command to avoid confusion when the two years have opposite signs
+\cmditem{ifdatesequal}{datetype1}{datetype2}{true}{false}
+
+Expands to \prm{true} if the two dates \prm{datetype1} and \prm{datetype2} are the same. Here \prm{datetype2} may be the <end> bit of \prm{datetype1} (or vice versa).
+
+\cmditem{ifdaterangesequal}{datetype1}{datetype2}{true}{false}
+
+Expands to \prm{true} if the two date ranges---that is the start and the end date---\prm{datetype1} and \prm{datetype2} are the same.
+
\cmditem{ifcaselang}[language]{true}{false}
-Expands to \prm{true} if the the optional \prm{language} is one of those
+Expands to \prm{true} if the optional \prm{language} is one of those
declared by \cmd{DeclareCaseLangs} (see \secref{aut:aux:msc}) and to
\prm{false} otherwise. Without the optional argument, checks the current
value of \cmd{currentlang}.
@@ -10166,7 +10305,7 @@ Expands to \prm{true} if there is only one work by the \opt{labelname} name with
\cmditem{ifuniqueprimaryauthor}{true}{false}
-Expands to \prm{true} if there is only one work by the the primary (first) author name of \opt{labelname} and to \prm{false} otherwise. Only the base name parts of the author name are considered, as defined by \cmd{DeclareUniquenameTemplate} see \secref{aut:cav:amb}. If \opt{labelname} is not set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{uniqueprimaryauthor}.
+Expands to \prm{true} if the primary (first) author name of \opt{labelname} is unique in the bibliography list and to \prm{false} otherwise. This effectively answers the question <is there more than one author with the same base name>. The base name parts are defined by \cmd{DeclareUniquenameTemplate} see \secref{aut:cav:amb}. This is required by some styles (e.g. APA) which mandates primary author disambiguation only and only if there are (different) primary authors with the same family name. If \opt{labelname} is not set for an entry, this will always expand to \prm{false}. Note that this feature needs to be enabled explicitly with the package option \opt{uniqueprimaryauthor}.
\cmditem{ifandothers}{list}{true}{false}
@@ -10274,11 +10413,11 @@ Executes \prm{true} if the \prm{string} is an Arabic or Roman numeral, and \prm{
\cmditem{ifnumerals}{string}{true}{false}
-Executes \prm{true} if the \prm{string} is a range or a list of Arabic or Roman numerals, and \prm{false} otherwise. This command is robust. In contrast to \cmd{ifnumeral}, it will also execute \prm{true} with arguments like «52--58», «14/15», «1,~3,~5», and so on. See also \cmd{DeclareNumChars}, \cmd{DeclareRangeChars}, \cmd{DeclareRangeCommands}, and \cmd{NumCheckSetup} in \secref{aut:aux:msc}.
+Executes \prm{true} if the \prm{string} is a range or a list of Arabic or Roman numerals, and \prm{false} otherwise. This command is robust. In contrast to \cmd{ifnumeral}, it will also execute \prm{true} with arguments like «52--58», «14/15», «1,~3,~5», and so on. See also \cmd{DeclareNumChars}, \cmd{DeclareRangeChars}, \cmd{DeclareRangeCommands}, \cmd{NumCheckSetup}, and \cmd{NumsCheckSetup} in \secref{aut:aux:msc}.
\cmditem{ifpages}{string}{true}{false}
-Similar to \cmd{ifnumerals}, but also considers \cmd{DeclarePageCommands} from \secref{aut:aux:msc}.
+Similar to \cmd{ifnumerals}, but also considers \cmd{DeclarePageCommands} and \cmd{PagesCheckSetup} from \secref{aut:aux:msc}.
\cmditem{iffieldint}{field}{true}{false}
@@ -10323,7 +10462,7 @@ Executes \prm{true} if \biblatex's punctuation tracker would capitalize a locali
\cmditem{ifcitation}{true}{false}
Expands to \prm{true} when located in a citation, and to \prm{false} otherwise. Note that this command is responsive to the outermost context in which it is used. For example, if a citation command defined with \cmd{DeclareCiteCommand} executes a driver defined with \cmd{DeclareBibliographyDriver}, any \cmd{ifcitation} tests in the driver code will yield \prm{true}. See \secref{aut:cav:mif} for a practical example.
-
+
\cmditem{ifvolcite}{true}{false}
Expands to \prm{true} when located in \cmd{volcite} or a related citation command (\secref{use:cit:spc}), and to \prm{false} otherwise.
@@ -10529,7 +10668,11 @@ Similar to \cmd{MakeUppercase} but only converts the first printable character i
\cmditem{MakeSentenceCase}{text}
\cmditem*{MakeSentenceCase*}{text}
-Converts its \prm{text} argument to sentence case, \ie the first word is capitalized and the remainder of the string is converted to lowercase. This command is robust. The starred variant differs from the regular version in that it considers the language of the entry, as specified in the \bibfield{langid} field. If the \bibfield{langid} field is defined and holds a language declared with \cmd{DeclareCaseLangs} (see below)\footnote{By default, converting to sentence case is enabled for the following language identifiers: \texttt{american}, \texttt{british}, \texttt{canadian}, \texttt{english}, \texttt{australian}, \texttt{newzealand} as well as the aliases \texttt{USenglish} and \texttt{UKenglish}. Use \cmd{DeclareCaseLangs} to extend or change this list.}, then the sentence case conversion is performed. If the \bibfield{langid} field is undefined, then the language list declared with \cmd{DeclareCaseLangs} is checked for the presence of the main document language derived from the \opt{language} option. If found, sentence case conversion is performed, if not, the \prm{text} is not altered in any way. It is recommended to use \cmd{MakeSentenceCase*} rather than the regular variant in formatting directives. Both variants support the traditional \bibtex convention for \file{bib} files that anything wrapped in a pair of curly braces is not modified when changing the case. For example:
+Converts its \prm{text} argument to sentence case, \ie the first word is capitalized and the remainder of the string is converted to lowercase. This command is robust. The starred variant differs from the regular version in that it considers the language of the entry, as specified in the \bibfield{langid} field. If the \bibfield{langid} field is defined and holds a language declared with \cmd{DeclareCaseLangs} (see below)\footnote{By default, converting to sentence case is enabled for the following language identifiers: \texttt{american}, \texttt{british}, \texttt{canadian}, \texttt{english}, \texttt{australian}, \texttt{newzealand} as well as the aliases \texttt{USenglish} and \texttt{UKenglish}. Use \cmd{DeclareCaseLangs} to extend or change this list.}, then the sentence case conversion is performed. If the \bibfield{langid} field is undefined, then the language list declared with \cmd{DeclareCaseLangs} is checked for the presence of the main document language derived from the \opt{language} option. If found, sentence case conversion is performed, if not, the \prm{text} is not altered in any way. It is recommended to use \cmd{MakeSentenceCase*} rather than the regular variant in formatting directives.
+
+Depending on the option \opt{casechanger} \cmd{MakeCaseChange} and \cmd{MakeCaseChange*} are either implemented using the \sty{expl3} module \sty{l3text} or original \LaTeXe code.
+
+Both variants support the traditional \bibtex convention for \file{bib} files that anything wrapped in a pair of curly braces is not modified when changing the case. For example:
\begin{ltxexample}
\MakeSentenceCase{an Introduction to LaTeX}
@@ -10554,14 +10697,18 @@ Macros in titles must also be protected with braces
\begin{lstlisting}[style=bibtex]{}
title = {The {\TeX book}},
\end{lstlisting}
+
%
-Unlike \bibtex's built-in case changing function \texttt{change.case\$} \biblatex's \cmd{MakeSentenceCase} is implemented in \latex, it may therefore behave differently in certain situations and is more fragile.
-Currently \cmd{MakeSentenceCase} behaves as follows.
+The behaviour of \cmd{MakeSentenceCase} differs slightly between the \opt{latex2e} and \opt{expl3} implementation. Generally speaking, the \opt{expl3} code is closer to the \bibtex behaviour of \texttt{change.case\$}. It is also better equipped to deal with non-ASCII input and macros than the \opt{latex2e} implementation. \cmd{MakeSentenceCase} behaves as follows.
\begin{itemize}\setlength{\labelsep}{1em}
- \item The first letter of its argument is capitalised with \cmd{MakeUppercase}. This is different from \bibtex's \texttt{change.case\$}, which does not touch the first letter of its argument. Note that a pair of braces that starts with a control sequence will be treated as one character for capitalisation purposes. This means that the entire argument of a command protected with a single pair of braces is capitalised.
- \item Expandable commands are expanded before the case change, which means that the case change applies to the replacement text. Unexpandable commands are not touched. \bibtex does not interpret macros and therefore passes commands through unchanged (this does not necessarily apply to the \emph{arguments} of those commands).
- \item Text wrapped in one or more pairs of braces is protected from case change unless it starts with a control sequence. This is the same behaviour as with \bibtex. Note that the braces could either be explicit groups or argument delimiters.
- \item Text in a single pair of braces that starts with a control sequence is not protected and will be subject to case changes. Note that this need not apply to braces that are argument delimiters, in fact the implementation of \cmd{MakeSentenceCase} may in some cases produce an error or otherwise undesirable output if the argument of a command starts with a control sequence. \bibtex's case change function does not differentiate between argument delimiters and brace groups and always subjects text at brace level~1 to case change if it starts with a control sequence.
+ \item The first letter of its argument is capitalised with \cmd{MakeUppercase}. This is different from \bibtex's \texttt{change.case\$}, which does not touch the first letter of its argument.
+
+ Note that with the \opt{latex2e} code a pair of braces that starts with a control sequence will be treated as a single character for capitalisation purposes. This means that the entire argument of a command protected with a single pair of braces is capitalised.
+ \item With the \opt{latex2e} code expandable commands are expanded before the case change, which means that the case change applies to the replacement text. Unexpandable commands are not touched.
+
+ \bibtex does not interpret macros and therefore passes commands through unchanged (this does not necessarily apply to the \emph{arguments} of those commands). The \opt{expl3} implementation also does not expand commands and only applies case change to the arguments.
+ \item Text wrapped in one or more pairs of braces is protected from case change \emph{unless} it starts with a control sequence. This is the same behaviour as with \bibtex. Note that the braces could either be explicit groups or argument delimiters.
+ \item Text in a single pair of braces that starts with a control sequence is not protected and will be subject to case changes. Note that this need not apply to braces that are argument delimiters, in fact the \opt{latex2e} implementation of \cmd{MakeSentenceCase} may in some cases produce an error or otherwise undesirable output if the argument of a command starts with a control sequence. \bibtex's case change function does not differentiate between argument delimiters and brace groups and always subjects text at brace level~1 to case change if it starts with a control sequence.
\end{itemize}
For most intents and purposes the following rules should give a sensible result.
@@ -10574,17 +10721,25 @@ For most intents and purposes the following rules should give a sensible result.
\end{itemize}
\item While it is possible to protect words from case change at the beginning of a field with a pair of braces, it is not possible to undo the case protection that a command automatically implies by wrapping it in braces in that position. In that case work-arounds are necessary.
\end{itemize}
-
-
+%
\begin{lstlisting}[style=bibtex]{}
-title = {The Story of {HMS} \emph{Erebus} in {\emph{Really}} Strong Wind},
+title = {The Story of {HMS} \emph{Erebus}
+ in {\emph{Really}} Strong Wind},
\end{lstlisting}
would be converted to sentence case by \cmd{MakeSentenceCase} as
\begin{quote}
The story of HMS \emph{Erebus} in {\emph{really}} strong wind
\end{quote}
-Due to its complex implementation this command can not accept arbitrary input, it only safely operates on raw text or field data. In the standard styles the \bibfield{title} and other \bibfield{title}-like field formats do not work together with \cmd{MakeSentenceCase} because of their argument structure, so the standard styles offer a dedicated \texttt{titlecase} field format to apply this command. To enable sentence casing in standard styles for languages that support it you would use:
+If the \sty{expl3} implementation of the case changing functions is selected, the \bibtex case protection behaviour can be exchanged for a slightly simpler version. When \opt{bibtexcaseprotection} set to \opt{false}, braces no longer automatically imply case protection. Instead words can be protected from case change with \cmd{NoCaseChange}. The examples from above would then read
+\begin{lstlisting}[style=bibtex]{}
+title = {An Introduction to \NoCaseChange{LaTeX}},
+title = {The Story of \NoCaseChange{HMS \emph{Erebus}}
+ in \emph{Really} Strong Wind},
+\end{lstlisting}
+Generally, this option should allow for a saner case protection input, because curly braces are no longer overloaded with different levels of meaning, but it is a big departure from the standard case protection input that has been with the \latex world for a long time.
+
+Due to its complex implementation \cmd{MakeSentenceCase} can not accept arbitrary input, it only safely operates on raw text or field data. In the standard styles the \bibfield{title} and other \bibfield{title}-like field formats do not work together with \cmd{MakeSentenceCase} because of their argument structure, so the standard styles offer a dedicated \texttt{titlecase} field format to apply this command. To enable sentence casing in standard styles for languages that support it you would use:
\begin{ltxexample}
\DeclareFieldFormat{titlecase}{<<\MakeSentenceCase*{#1}>>}
\end{ltxexample}
@@ -10617,6 +10772,8 @@ The optional argument \bibfield{bookpagination} is omissible in this case.
The pagination strings are taken from \texttt{$<$pagination$>$total} and \texttt{$<$pagination$>$totals}.
\begin{table}
+\caption{\cmd{mkcomprange} setup}
+\label{aut:aux:tab1}
\tablesetup\lnstyle
\begin{tabularx}{\textwidth}{@{}>{\ttfamily}X@{}p{0.25\textwidth}@{}p{0.25\textwidth}@{}p{0.25\textwidth}@{}}
\toprule
@@ -10648,8 +10805,6 @@ The pagination strings are taken from \texttt{$<$pagination$>$total} and \texttt
1111--1555 & 1111--555 & 1111--555 & 1111--555 \\
\bottomrule
\end{tabularx}
-\caption{\cmd{mkcomprange} setup}
-\label{aut:aux:tab1}
\end{table}
\cmditem{mkcomprange}[postpro][itempostpro]{text}
@@ -10782,6 +10937,35 @@ This command is similar to \cmd{DeclareRangeCommands}, except that it only affec
Use this command to temporarily redefine any commands which interfere with the tests performed by \cmd{ifnumeral}, \cmd{ifnumerals}, and \cmd{ifpages} from \secref{aut:aux:tst}. The setup will also affect \cmd{iffieldnum}, \cmd{iffieldnums}, \cmd{iffieldpages} as well as \cmd{mkpageprefix} and \cmd{mkpagetotal}. The \prm{code} will be executed in a group by these commands. Since the above mentioned commands will expand the string to be analyzed, it is possible to remove commands to be ignored by the tests by making them expand to an empty string. See also \secref{bib:use:pag, use:cav:pag} for further details.
+\cmditem{NumsCheckSetup}{code}
+
+Like \cmd{NumCheckSetup} but only applies to \cmd{ifnumerals} and \cmd{ifpages} from \secref{aut:aux:tst} and their derivative tests.
+
+\cmditem{PagesCheckSetup}{code}
+
+Like \cmd{NumCheckSetup} but only applies to \cmd{ifpages} from \secref{aut:aux:tst} and its derivative tests. The default setting is makes \cmd{pnfmt} transparent to the test:
+
+\begin{ltxexample}
+\PagesCheckSetup{\let\pnfmt\@firstofone}
+\end{ltxexample}
+
+\cmditem{DeclareBabelToExplLanguageMapping}{babel language}{expl language}
+
+This command is only available if the \sty{expl3} case changing code is used.
+
+Use \prm{expl language} as \prm{language} argument for the \sty{l3text} case changing functions when \sty{babel language} is active. This command is only required if \prm{babel language} should correspond to a language for which \sty{l3text} has special rules set up. The default invocations of this command are
+\begin{ltxexample}
+\DeclareBabelToExplLanguageMapping{dutch}{nl}
+\DeclareBabelToExplLanguageMapping{greek}{el}
+\DeclareBabelToExplLanguageMapping{turkish}{tr}
+\end{ltxexample}
+
+\cmditem{UndeclareBabelToExplLanguageMapping}{babel language}
+
+This command is only available if the \sty{expl3} case changing code is used.
+
+Removes the \sty{babel}-to-\sty{expl3} language mapping for \prm{babel language}. If the argument is an asterisk \texttt{*}, all language mappings are removed.
+
\cmditem{DeclareCaseLangs}{languages}
\cmditem*{DeclareCaseLangs*}{languages}
@@ -11091,7 +11275,7 @@ This command marks the middle of a sentence. A localisation string immediately a
\csitem*{midsentence*}
-The starred variant of \cmd{midsentence} differs from the regular one in that a preceding abbreviation dot is not hidden from the the punctuation tracker, \ie any code after \cmd{midsentence*} will see a preceding abbreviation dot. All other punctuation marks are hidden from the punctuation tracker and capitalization is suppressed.
+The starred variant of \cmd{midsentence} differs from the regular one in that a preceding abbreviation dot is not hidden from the punctuation tracker, \ie any code after \cmd{midsentence*} will see a preceding abbreviation dot. All other punctuation marks are hidden from the punctuation tracker and capitalization is suppressed.
\end{ltxsyntax}
@@ -11116,6 +11300,18 @@ Similar to \cmd{bibstring} but always prints the long string, ignoring the \opt{
Similar to \cmd{bibstring} but always prints the short string, ignoring the \opt{abbreviate} option.
+\cmditem{bibncpstring}[wrapper]{key}
+
+Similar to \cmd{bibstring} but the term is never capitalized.
+
+\cmditem{bibncplstring}[wrapper]{key}
+
+Similar to \cmd{biblstring} but the term is never capitalized.
+
+\cmditem{bibncpsstring}[wrapper]{key}
+
+Similar to \cmd{bibsstring} but the term is never capitalized.
+
\cmditem{bibcpstring}[wrapper]{key}
Similar to \cmd{bibstring} but the term is always capitalized.
@@ -11765,14 +11961,17 @@ Other expressions frequently used in citations:
\item[langjapanese] The language <Japanese>.
\item[langlatin] The language <Latin>.
\item[langlatvian] The language <Latvian>.
+\item[langlithuanian] The language <Lithuanian>.
\item[langnorwegian] The language <Norwegian>.
\item[langpolish] The language <Polish>.
\item[langportuguese] The language <Portuguese>.
\item[langrussian] The language <Russian>.
+\item[langserbian] The language <Serbian>.
\item[langslovak] The language <Slovak>.
\item[langslovene] The language <Slovene>.
\item[langspanish] The language <Spanish>.
\item[langswedish] The language <Swedish>.
+\item[langturkish] The language <Turkish>.
\item[langukrainian] The language <Ukrainian>.
\end{keymarglist}
%
@@ -11798,14 +11997,17 @@ The following strings are intended for use in phrases like <translated from [the
\item[fromjapanese] The expression <from [the] Japanese>.
\item[fromlatin] The expression <from [the] Latin>.
\item[fromlatvian] The expression <from [the] Latvian>.
+\item[fromlithuanian] The language <from [the] Lithuanian>.
\item[fromnorwegian] The expression <from [the] Norwegian>.
\item[frompolish] The expression <from [the] Polish>.
\item[fromportuguese] The expression <from [the] Portuguese>.
\item[fromrussian] The expression <from [the] Russian>.
+\item[fromserbian] The expression <from [the] Serbian>.
\item[fromslovak] The expression <from [the] Slovak>.
\item[fromslovene] The expression <from [the] Slovene>.
\item[fromspanish] The expression <from [the] Spanish>.
\item[fromswedish] The expression <from [the] Swedish>.
+\item[fromturkish] The expression <from [the] Turkish>.
\item[fromukrainian] The expression <from [the] Ukrainian>.
\end{keymarglist}
@@ -11984,6 +12186,9 @@ The separator to be printed before the \bibfield{pages} field. Use this separato
\csitem{bibpagerefpunct}
The separator to be printed before the \bibfield{pageref} field. Use this separator instead of \cmd{newunitpunct} at this location. The default is an interword space.
+\csitem{bibeidpunct}
+The separator printed before the \bibfield{eid} field (similar to \cmd{bibpagespunct}). The default is a comma plus an interword space.
+
\csitem{multinamedelim}\CSdelimMark
The delimiter to be printed between multiple items in a name list like \bibfield{author} or \bibfield{editor} if there are more than two names in the list. If there are only two names in the list, use the \cmd{finalnamedelim} instead. This command should be incorporated in all formatting directives for name lists. The default is a comma followed by an interword space.
@@ -12008,9 +12213,27 @@ The delimiter to be printed before the localisation string <\texttt{andmore}> if
\csitem{multicitedelim}
The delimiter printed between citations if multiple entry keys are passed to a single citation command. This command should be incorporated in the definition of all citation commands, for example in the \prm{sepcode} argument passed to \cmd{DeclareCiteCommand}. See \secref{aut:cbx:cbx} for details. The default is a semicolon plus an interword space.
+\csitem{multiciterangedelim}
+The delimiter printed between two citations if they are compressed to a range. The default is \cmd{bibrangedash}.
+
+\csitem{multicitesubentrydelim}
+The delimiter printed between subentry citations of the same set. This delimiter is only used in citation styles that reduce citations of the same set to a more compact form (\opt{subentry} of \texttt{numeric-comp}). The default is a comma.
+
+\csitem{multicitesubentryrangedelim}
+The delimiter printed between two citations of the same set if they are compressed to a range. The default is \cmd{multiciterangedelim}.
+
\csitem{supercitedelim}
Similar to \cmd{multinamedelim}, but intended for the \cmd{supercite} command only. The default is a comma.
+\csitem{superciterangedelim}
+Analogue of \cmd{multiciterangedelim} for \cmd{supercite}. The default is \cmd{bibrangedash}.
+
+\csitem{supercitesubentrydelim}
+Analogue of \cmd{multicitesubentrydelim} for \cmd{supercite}. The default is \cmd{supercitedelim}.
+
+\csitem{supercitesubentryrangedelim}
+Analogue of \cmd{multicitesubentryrangedelim} for \cmd{supercite}. The default is \cmd{superciterangedelim}.
+
\csitem{compcitedelim}
Similar to \cmd{multicitedelim}, but intended for citation styles that <compress> multiple citations, \ie print the author only once if subsequent citations share the same author etc. The default definition is a comma plus an interword space.
@@ -12664,6 +12887,7 @@ The default setting is:
\begin{ltxexample}
\AtUsedriver{%
+ \delimcontext{bib}%
\let\finentry\blx@finentry@usedrv
\let\newblock\relax
\let\abx@macro@bibindex\@empty
@@ -12753,8 +12977,74 @@ Executes the internal hook corresponding to \cmd{AtVolcite}.
Locally un-defines the internal hook specified by \cmd{AtNextCitekey}. This essentially defers the hook to the next entry key in the citation list, when executed in the \prm{precode} argument of \cmd{DeclareCiteCommand} (\secref{aut:cbx:cbx}).
+\cmditem{AtEveryEntrykey}{code}{success}{failure}
+
+Appends \prm{code} to an internal hook executed every time an entrykey is processed for a citation command or \cmd{nocite}. The \prm{code} is passed one argument (\lstinline{#1}), which contains the entrykey. If the code can be appended to the hook \prm{success} is executed, otherwise \prm{failure} is executed. Unlike \cmd{AtEveryCitekey} the entry data of the current entrykey is not available when \prm{code} is processed, indeed it is not even known whether or not there is any entry data at all.
+
+\end{ltxsyntax}
+
+\subsubsection{File hooks}
+\label{aut:fmt:hok:fil}
+\biblatex has rudimentary support for injecting arbitrary code before and after a file is loaded via file hooks. For files that are loaded using \biblatex's file interface---that includes all bibliography and citation styles---the following three hooks are available
+
+\begin{ltxsyntax}
+\cmditem{blx@filehook@preload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected before it is loaded.
+
+\cmditem{blx@filehook@postload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected after it is loaded.
+
+\cmditem{blx@filehook@failure@$<$filename with extension$>$}
+
+This hook is executed if \file{$<$filename with extension$>$} can not be found.
+\end{ltxsyntax}
+
+\biblatex generally only loads files once even if they were requested multiple times,
+so the hooks will only be executed once.
+Naturally, the file hooks need to be populated before the files are loaded, so the safest would be to populate them before \biblatex is loaded.
+It is advisable to only append code to avoid overwriting previous hook contents.
+Since the name of the file hook include the dot and the file extension they will usually have to be defined with a command like \cmd{csappto} from \sty{etoolbox}.
+
+The \file{.lbx} files are special and may have to be loaded several times in some situations.
+Their file hooks are
+
+\begin{ltxsyntax}
+\cmditem{blx@lbxfilehook@once@preload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected before it is loaded in a situation where the \file{.lbx} files are loaded only once.
+
+\cmditem{blx@lbxfilehook@once@postload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected after it is loaded in a situation where the \file{.lbx} files are loaded only once.
+
+\cmditem{blx@lbxfilehook@once@failure@$<$filename with extension$>$}
+
+This hook is executed if \file{$<$filename with extension$>$} can not be found in a situation where the \file{.lbx} files are loaded only once.
+
+\cmditem{blx@lbxfilehook@simple@preload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected before it is loaded in a situation where the \file{.lbx} files may be loaded multiple times.
+
+\cmditem{blx@lbxfilehook@simple@postload@$<$filename with extension$>$}
+
+If \file{$<$filename with extension$>$} is found, this hook is exected after it is loaded in a situation where the \file{.lbx} files may be loaded multiple times.
+
+\cmditem{blx@lbxfilehook@simple@failure@$<$filename with extension$>$}
+
+This hook is executed if \file{$<$filename with extension$>$} can not be found in a situation where the \file{.lbx} files may be loaded multiple times.
\end{ltxsyntax}
+The following code sets up \sty{beamer} to print the bibliography labels instead of its bibliography icons when \file{numeric.bbx} after is loaded
+\begin{ltxexample}
+\csappto{blx@filehook@postload@numeric.bbx}{%
+ \mode<presentation>{%
+ \setbeamertemplate{bibliography item}{%
+ \insertbiblabel}}}
+\end{ltxexample}
+
+
\subsection{Hints and Caveats}
\label{aut:cav}
@@ -12860,7 +13150,7 @@ Only use the \prm{namepart} in constructing the uniquename information if there
\boolitem[false]{base}
-The \prm{namepart} is part of the <base> which is the main piece of namepart(s) information which is being disambiguated by uniqueness information. For example, a family name which may be disambiguated by further given names. <base> \prm{namepart}s must occur before any non-<base> \prm{nameparts}.
+The \prm{namepart} is part of the <base> which is the main piece of namepart(s) information which is being disambiguated by uniqueness information. For example, a family name which may be disambiguated by further given names. <base> \prm{namepart}s must occur before any non-<base> \prm{nameparts}. There \emph{must} be at least one <base> \prm{namepart} and \biber will report an error if this is not the case.
\choitem{disambiguation}{none, init, initorfull, full}
@@ -13122,7 +13412,7 @@ In the last citation, \kvopt{uniquelist}{minyear} does not override \opt{maxname
\subsubsection{Trackers in Floats and \acr{TOC}/\acr{LOT}/\acr{LOF}}
\label{aut:cav:flt}
-If a citation is given in a float (typically in the caption of a figure or table), scholarly back references like <ibidem> or back references based on the page tracker get ambiguous because floats are objects which are (physically and logically) placed outside the flow of text, hence the logic of such references applies poorly to them. To avoid any such ambiguities, the citation and page trackers are temporarily disabled in all floats. In addition to that, these trackers plus the back reference tracker (\opt{backref}) are temporarily disabled in the table of contents, the list of figures, and the list of tables.
+If a citation is given in a float (typically in the caption of a figure or table), scholarly back references like <ibidem> or back references based on the page tracker get ambiguous because floats are objects which are (physically and logically) placed outside the flow of text, hence the logic of such references applies poorly to them. To avoid any such ambiguities, the citation and page trackers are temporarily disabled in all floats unless explicitly requested with \opt{trackfloats}. In addition to that, these trackers plus the back reference tracker (\opt{backref}) are temporarily disabled in the table of contents, the list of figures, and the list of tables.
\subsubsection{Mixing Programming Interfaces}
\label{aut:cav:mif}
@@ -14022,8 +14312,10 @@ backrefsetstyle &\+&\+&\_&\_&\_&\_&\_\\
backrefstyle &\+&\+&\_&\_&\_&\_&\_\\
bibencoding &\+&\+&\_&\_&\_&\_&\_\\
bibstyle &\+&\_&\_&\_&\_&\_&\_\\
+bibtexcaseprotection &\+&\+&\_&\+&\+&\_&\_\\
bibwarn &\+&\+&\_&\_&\_&\_&\_\\
block &\+&\+&\_&\_&\_&\_&\_\\
+casechanger &\+&\_&\_&\_&\_&\_&\_\\
citecounter &\+&\+&\_&\_&\_&\_&\_\\
citereset &\+&\+&\_&\_&\_&\_&\_\\
citestyle &\+&\_&\_&\_&\_&\_&\_\\
@@ -14135,6 +14427,35 @@ 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.15}{2020-08-16}
+\item Added \opt{starnocited} option to sourcemaps\see{aut:ctm:map}
+\item Added the \opt{glob} option to \cmd{addbibresource}\see{use:bib:res}
+\item Added \bibfield{eid} to more entry types\see{bib:typ:blx}
+\item Added \cmd{bibeidpunct}\see{use:fmt:fmt}
+\item Added \bibfield{issuetitleaddon} and \bibfield{journaltitleaddon}\see{bib:fld:dat}
+\item \texttt{numeric-comp} compresses \opt{subentry} set references now\see{use:opt:pre:bbx}
+\item Added \opt{subentrycomp} to \texttt{numeric-comp} style\see{use:opt:pre:bbx}
+\item Added \cmd{multiciterangedelim}, \cmd{multicitesubentrydelim},
+ \cmd{multicitesubentryrangedelim}, \cmd{superciterangedelim},
+ \cmd{supercitesubentrydelim}, \cmd{supercitesubentryrangedelim}%
+ \see{use:fmt:fmt}
+\item Implemented \opt{expl3} case changing functions\see{aut:aux:msc}
+\item Added \opt{casechanger} option\see{use:opt:ldt}
+\item Added \opt{bibtexcaseprotection} option\see{use:opt:pre:gen}
+\item Added \cmd{mautocite} and \cmd{Mautocite}\see{use:cit:mct}
+\item Added \opt{trackfloats} and \opt{backreffloats}\see{use:opt:pre:gen}
+\item Added \opt{block} option to \cmd{printbibliography} and friends\see{use:bib:bib}
+\item Added \cmd{NumsCheckSetup} and \cmd{PagesCheckSetup}\see{aut:aux:msc}
+\item Added \cmd{AtEveryEntrykey}\see{aut:fmt:hok}
+\item Added \cmd{ifdatesequal} and \cmd{ifdaterangesequal}\see{aut:aux:tst}
+\item Clarified \cmd{ifuniqueprimaryauthor} semantics\see{aut:aux:tst}
+\item Added \cmd{bibncpstring}, \cmd{bibncplstring} and \cmd{bibncpsstring}\see{aut:str}
+\item Added Lithuanian localisation (Valdemaras Klumbys)
+\item Added Serbian localisation (Andrej Radović)
+\item Added Turkish localisation (Abdulkerim Gok)
+\item Added file hooks\see{aut:fmt:hok:fil}
+\item Deprecated \cmd{ifkomabibtotoc} and \cmd{ifkomabibtotocnumbered}\see{use:cav:scr}
+\end{release}
\begin{release}{3.14}{2019-12-01}
\item Added new mapping verbs for citation sources\see{aut:ctm:map}
\item Added documentation for new \biber granular \bibtype{xdata} functionality\see{use:use:xdat}
diff --git a/macros/latex/contrib/biblatex/doc/examples/01-introduction-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/01-introduction-bibtex.pdf
index 75171ed490..9f99ce5698 100644
--- a/macros/latex/contrib/biblatex/doc/examples/01-introduction-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/01-introduction-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/02-annotations-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/02-annotations-biber.pdf
index d5b086d24a..1922abc34c 100644
--- a/macros/latex/contrib/biblatex/doc/examples/02-annotations-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/02-annotations-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/02-annotations-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/02-annotations-bibtex.pdf
index d8f86f3565..1f9857cdbb 100644
--- a/macros/latex/contrib/biblatex/doc/examples/02-annotations-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/02-annotations-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
index e478c9368c..a2db74511c 100644
--- a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
index 1fa3dfb031..b2b48bf9d7 100644
--- a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex
index 1bfe7767d3..84f46d5a6c 100644
--- a/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/03-localization-keys.tex
@@ -23,6 +23,7 @@
%\usepackage[icelandic]{babel}
%\usepackage[italian]{babel}
%\usepackage[latvian]{babel}
+%\usepackage[lithuanian]{babel}
%\usepackage[magyar]{babel}
%\usepackage[norsk]{babel}
%\usepackage[nynorsk]{babel}
@@ -32,6 +33,7 @@
%\usepackage[slovene]{babel}
%\usepackage[spanish]{babel}
%\usepackage[swedish]{babel}
+%\usepackage[turkish, shorthands=:!]{babel}% avoid = becoming active
% - UTF-8
% -- Russian
%\usepackage[T1,T2A]{fontenc}
@@ -452,7 +454,7 @@ Roles which are related to supplementary material may also be expressed as objec
\keyitem{columns} The plural form of \texttt{column}.
\keyitem{section} The term <section>, referring to a document division (usually abbreviated as \S).
\keyitem{sections} The plural form of \texttt{section} (usually abbreviated as \S\S).
-\keyitem{paragraph} The term <paragraph> (\ie a block of text, not to be confused with \texttt{section}).
+\keyitem{paragraph} The term <paragraph> (\ie\ a block of text, not to be confused with \texttt{section}).
\keyitem{paragraphs} The plural form of \texttt{paragraph}.
\keyitem{verse} The term <verse> as used when referring to a work which is cited by verse numbers.
\keyitem{verses} The plural form of \texttt{verse}.
@@ -464,7 +466,7 @@ Roles which are related to supplementary material may also be expressed as objec
\keyitem{columntotals} The plural form of \texttt{columntotal}.
\keyitem{sectiontotal} The term <section>, referring to a document division (usually abbreviated as \S), as used in \cmd{mkpageprefix}.
\keyitem{sectiontotals} The plural form of \texttt{sectiontotal} (usually abbreviated as \S\S).
-\keyitem{paragraphtotal} The term <paragraph> (\ie a block of text, not to be confused with \texttt{section}) as used in \cmd{mkpageprefix}.
+\keyitem{paragraphtotal} The term <paragraph> (\ie\ a block of text, not to be confused with \texttt{section}) as used in \cmd{mkpageprefix}.
\keyitem{paragraphtotals} The plural form of \texttt{paragraphtotal}.
\keyitem{versetotal} The term <verse> as used when referring to a work which is cited by verse numbers when used in \cmd{mkpageprefix}.
\keyitem{versetotals} The plural form of \texttt{versetotal}.
@@ -600,14 +602,17 @@ Other expressions frequently used in citations:
\keyitem{langjapanese} The language <Japanese>.
\keyitem{langlatin} The language <Latin>.
\keyitem{langlatvian} The language <Latvian>.
+\keyitem{langlithuanian} The language <Lithuanian>.
\keyitem{langnorwegian} The language <Norwegian>.
\keyitem{langpolish} The language <Polish>.
\keyitem{langportuguese} The language <Portuguese>.
\keyitem{langrussian} The language <Russian>.
+\keyitem{langserbian} The language <Serbian>.
\keyitem{langslovak} The language <Slovak>.
\keyitem{langslovene} The language <Slovene>.
\keyitem{langspanish} The language <Spanish>.
\keyitem{langswedish} The language <Swedish>.
+\keyitem{langturkish} The language <Turkish>.
\keyitem{langukrainian} The language <Ukrainian>.
\end{keylist}
%
@@ -633,14 +638,17 @@ The following strings are intended for use in phrases like <translated from [the
\keyitem{fromjapanese} The expression <from [the] Japanese>.
\keyitem{fromlatin} The expression <from [the] Latin>.
\keyitem{fromlatvian} The expression <from [the] Latvian>.
+\keyitem{fromlithuanian} The expression <from [the] Lithuanian>.
\keyitem{fromnorwegian} The expression <from [the] Norwegian>.
\keyitem{frompolish} The expression <from [the] Polish>.
\keyitem{fromportuguese} The expression <from [the] Portuguese>.
\keyitem{fromrussian} The expression <from [the] Russian>.
+\keyitem{fromserbian} The expression <from [the] Serbian>.
\keyitem{fromslovak} The expression <from [the] Slovak>.
\keyitem{fromslovene} The expression <from [the] Slovene>.
\keyitem{fromspanish} The expression <from [the] Spanish>.
\keyitem{fromswedish} The expression <from [the] Swedish>.
+\keyitem{fromturkish} The expression <from [the] Turkish>.
\keyitem{fromukrainian} The expression <from [the] Ukrainian>.
\end{keylist}
diff --git a/macros/latex/contrib/biblatex/doc/examples/04-delimiters-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/04-delimiters-biber.pdf
index 28956fdacc..06307e6fa2 100644
--- a/macros/latex/contrib/biblatex/doc/examples/04-delimiters-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/04-delimiters-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/04-delimiters-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/04-delimiters-bibtex.pdf
index 4344e1f51a..78c188bd8c 100644
--- a/macros/latex/contrib/biblatex/doc/examples/04-delimiters-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/04-delimiters-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/10-references-per-section-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/10-references-per-section-bibtex.pdf
index 931645e425..19dd108783 100644
--- a/macros/latex/contrib/biblatex/doc/examples/10-references-per-section-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/10-references-per-section-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-biber.pdf
index 57a5d24c06..741e22905e 100644
--- a/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-bibtex.pdf
index 176278e5eb..c580a66930 100644
--- a/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/11-references-by-section-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-biber.pdf
index bec8fa28fe..c899cf453b 100644
--- a/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-bibtex.pdf
index 1dafa8f85a..10092ea8e9 100644
--- a/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/12-references-by-segment-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/13-references-by-keyword-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/13-references-by-keyword-bibtex.pdf
index 3b193af84f..6ffffd5203 100644
--- a/macros/latex/contrib/biblatex/doc/examples/13-references-by-keyword-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/13-references-by-keyword-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/14-references-by-category-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/14-references-by-category-bibtex.pdf
index 4ee57c61c9..37d86eae22 100644
--- a/macros/latex/contrib/biblatex/doc/examples/14-references-by-category-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/14-references-by-category-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/15-references-by-type-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/15-references-by-type-bibtex.pdf
index 26b0442440..0e14111e52 100644
--- a/macros/latex/contrib/biblatex/doc/examples/15-references-by-type-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/15-references-by-type-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-biber.pdf
index 05cbf46bcd..7b4d8d1cbe 100644
--- a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf
index d36734df00..2917f54141 100644
--- a/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/16-numeric-prefixed-1-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-biber.pdf
index 138a32a2de..2307fe03d1 100644
--- a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf
index dd0c6992a3..b7e07cb9e7 100644
--- a/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/17-numeric-prefixed-2-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/18-numeric-hybrid-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/18-numeric-hybrid-bibtex.pdf
index 39c469234b..82fd424bb1 100644
--- a/macros/latex/contrib/biblatex/doc/examples/18-numeric-hybrid-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/18-numeric-hybrid-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-biber.pdf
index 3504e45685..bcacd39a83 100644
--- a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf
index 417d0b241a..9bc22e43fa 100644
--- a/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/19-alphabetic-prefixed-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-biber.pdf
index 3b962a988b..5d41515acc 100644
--- a/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-bibtex.pdf
index 725668602a..9bd7cc7ea3 100644
--- a/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/20-indexing-single-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-biber.pdf
index 7119511191..76afed3ec3 100644
--- a/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-bibtex.pdf
index c2dd6a5890..4f34598b0d 100644
--- a/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/21-indexing-multiple-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/22-indexing-subentry-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/22-indexing-subentry-bibtex.pdf
index 6bdff2492f..8b2632c5bc 100644
--- a/macros/latex/contrib/biblatex/doc/examples/22-indexing-subentry-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/22-indexing-subentry-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/30-style-numeric-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/30-style-numeric-bibtex.pdf
index 59584f7cc6..e557453ff4 100644
--- a/macros/latex/contrib/biblatex/doc/examples/30-style-numeric-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/30-style-numeric-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-biber.pdf
index ee3bc0b805..58ca85ca06 100644
--- a/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-bibtex.pdf
index a75a9dbcf2..000ebee98a 100644
--- a/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp.tex b/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp.tex
index 95ac00b5b1..9838f21867 100644
--- a/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/31-style-numeric-comp.tex
@@ -36,7 +36,31 @@ This option is disabled by default, but it has been enabled
in this example. If disabled, citations referring to a set member
will point to the entire set, i.e., the above citations would
come out as
+\begingroup\boolfalse{bbx:subentry}% don't try this at home
\cite{stdmodel,set,stdmodel,set,companion}.
+\endgroup
+
+\subsection*{The \texttt{subentrycomp} option}
+
+The option \texttt{subentrycomp} controls whether or not citations
+to subentries of the same sets are compressed as well.
+It only becomes relevant if \texttt{subentry} is set to \texttt{true},
+with \texttt{subentry=false} it has no effect.
+If \texttt{subentrycomp} is enabled,
+subentries that belong to the same
+set are shown in a more compact form:
+\cite{glashow,herrmann,aksin,yoon,salam,companion}.
+
+If the option is disabled, subentries of sets are shown as in
+the \texttt{numeric} style:
+\begingroup\togglefalse{cbx:subentrycomp}% don't try this at home
+\cite{glashow,herrmann,aksin,yoon,salam,companion}.
+\endgroup
+
+This option is implemented for backwards compatibility,
+earlier versions of \texttt{biblatex} behaved like
+\texttt{subentrycomp=false}, current versions have
+\texttt{subentrycomp=true} enabled.
\subsection*{Multiple citations}
diff --git a/macros/latex/contrib/biblatex/doc/examples/32-style-numeric-verb-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/32-style-numeric-verb-bibtex.pdf
index 705363bb8b..8583a3cf36 100644
--- a/macros/latex/contrib/biblatex/doc/examples/32-style-numeric-verb-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/32-style-numeric-verb-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-biber.pdf
index ef95075a70..c41fa13f70 100644
--- a/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-bibtex.pdf
index de2ff32d03..5938be41e9 100644
--- a/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/40-style-alphabetic-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/41-style-alphabetic-verb-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/41-style-alphabetic-verb-bibtex.pdf
index afc733d0ca..2c22d4f8ac 100644
--- a/macros/latex/contrib/biblatex/doc/examples/41-style-alphabetic-verb-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/41-style-alphabetic-verb-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/42-style-alphabetic-template-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/42-style-alphabetic-template-bibtex.pdf
index a1170adb23..11ad9dc858 100644
--- a/macros/latex/contrib/biblatex/doc/examples/42-style-alphabetic-template-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/42-style-alphabetic-template-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-biber.pdf
index 5e2fcbc438..c61faf1bb1 100644
--- a/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-bibtex.pdf
index 4217606fd4..2d25786691 100644
--- a/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/50-style-authoryear-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-bibtex.pdf
index 0b5da8cf75..2fe08720e3 100644
--- a/macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/51-style-authoryear-ibid-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/52-style-authoryear-comp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/52-style-authoryear-comp-bibtex.pdf
index f6f2e0ba51..bd4786de53 100644
--- a/macros/latex/contrib/biblatex/doc/examples/52-style-authoryear-comp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/52-style-authoryear-comp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/53-style-authoryear-icomp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/53-style-authoryear-icomp-bibtex.pdf
index 6c76c94667..9cb169639d 100644
--- a/macros/latex/contrib/biblatex/doc/examples/53-style-authoryear-icomp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/53-style-authoryear-icomp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-biber.pdf
index 899937934f..6ad08df0c3 100644
--- a/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-bibtex.pdf
index eee3ef8367..fa0db8f63d 100644
--- a/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/60-style-authortitle-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/61-style-authortitle-ibid-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/61-style-authortitle-ibid-bibtex.pdf
index 392f6a47e2..99c5e9c833 100644
--- a/macros/latex/contrib/biblatex/doc/examples/61-style-authortitle-ibid-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/61-style-authortitle-ibid-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/62-style-authortitle-comp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/62-style-authortitle-comp-bibtex.pdf
index 23a8af4319..d63029fb8c 100644
--- a/macros/latex/contrib/biblatex/doc/examples/62-style-authortitle-comp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/62-style-authortitle-comp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp-bibtex.pdf
index 162b15f46d..5e8841b1ef 100644
--- a/macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/63-style-authortitle-icomp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/64-style-authortitle-terse-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/64-style-authortitle-terse-bibtex.pdf
index 46b622c6bd..690c053080 100644
--- a/macros/latex/contrib/biblatex/doc/examples/64-style-authortitle-terse-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/64-style-authortitle-terse-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/65-style-authortitle-tcomp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/65-style-authortitle-tcomp-bibtex.pdf
index e20da20c5e..40d87588f9 100644
--- a/macros/latex/contrib/biblatex/doc/examples/65-style-authortitle-tcomp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/65-style-authortitle-tcomp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/66-style-authortitle-ticomp-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/66-style-authortitle-ticomp-bibtex.pdf
index 0428c21164..58a1fb7198 100644
--- a/macros/latex/contrib/biblatex/doc/examples/66-style-authortitle-ticomp-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/66-style-authortitle-ticomp-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/70-style-verbose-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/70-style-verbose-bibtex.pdf
index 2db844dfa1..27ea27676e 100644
--- a/macros/latex/contrib/biblatex/doc/examples/70-style-verbose-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/70-style-verbose-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/71-style-verbose-ibid-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/71-style-verbose-ibid-bibtex.pdf
index d3915cbc01..4fd500dcdb 100644
--- a/macros/latex/contrib/biblatex/doc/examples/71-style-verbose-ibid-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/71-style-verbose-ibid-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/72-style-verbose-note-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/72-style-verbose-note-bibtex.pdf
index 6713221484..3d42958ca9 100644
--- a/macros/latex/contrib/biblatex/doc/examples/72-style-verbose-note-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/72-style-verbose-note-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/73-style-verbose-inote-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/73-style-verbose-inote-bibtex.pdf
index e9986d3105..9b98d5c7f6 100644
--- a/macros/latex/contrib/biblatex/doc/examples/73-style-verbose-inote-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/73-style-verbose-inote-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/74-style-verbose-trad1-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/74-style-verbose-trad1-bibtex.pdf
index 9dda0de27e..25bb9067c9 100644
--- a/macros/latex/contrib/biblatex/doc/examples/74-style-verbose-trad1-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/74-style-verbose-trad1-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/75-style-verbose-trad2-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/75-style-verbose-trad2-bibtex.pdf
index 21ab89a7ae..b23cd16092 100644
--- a/macros/latex/contrib/biblatex/doc/examples/75-style-verbose-trad2-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/75-style-verbose-trad2-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/76-style-verbose-trad3-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/76-style-verbose-trad3-bibtex.pdf
index 0f64efbc22..b9e059f87e 100644
--- a/macros/latex/contrib/biblatex/doc/examples/76-style-verbose-trad3-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/76-style-verbose-trad3-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/80-style-reading-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/80-style-reading-bibtex.pdf
index b24bff3611..1d1303aa06 100644
--- a/macros/latex/contrib/biblatex/doc/examples/80-style-reading-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/80-style-reading-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/81-style-draft-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/81-style-draft-bibtex.pdf
index b7103aeccc..04d631aacb 100644
--- a/macros/latex/contrib/biblatex/doc/examples/81-style-draft-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/81-style-draft-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/82-style-debug-bibtex.pdf b/macros/latex/contrib/biblatex/doc/examples/82-style-debug-bibtex.pdf
index 2deac186b7..61f1c8ca57 100644
--- a/macros/latex/contrib/biblatex/doc/examples/82-style-debug-bibtex.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/82-style-debug-bibtex.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/90-related-entries-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/90-related-entries-biber.pdf
index ccabb52e43..4edefdd1b1 100644
--- a/macros/latex/contrib/biblatex/doc/examples/90-related-entries-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/90-related-entries-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf
index ee162c3f4f..fb23695234 100644
--- a/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/92-bibliographylists-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/96-dates.tex b/macros/latex/contrib/biblatex/doc/examples/96-dates.tex
index e12010a3d8..e4e1863934 100644
--- a/macros/latex/contrib/biblatex/doc/examples/96-dates.tex
+++ b/macros/latex/contrib/biblatex/doc/examples/96-dates.tex
@@ -19,10 +19,10 @@
@misc{date2,
note = {Dates with circa and uncertain markers},
author = {Author2},
- date = {1723%}, % year with ETDF approximate (circa) and uncertainty markers
+ date = {1723%}, % year with EDTF approximate (circa) and uncertainty markers
origdate = {1934-02~}, % year and month with circa marker
eventdate = {1976?}, % year with uncertainty marker
- urldate = {1922~}, % year with ETDF approximate (circa) marker
+ urldate = {1922~}, % year with EDTF approximate (circa) marker
}
@misc{date3,
note = {Date ranges},
diff --git a/macros/latex/contrib/biblatex/doc/examples/97-annotations-biber.pdf b/macros/latex/contrib/biblatex/doc/examples/97-annotations-biber.pdf
index 9fa5afc943..31c88f7951 100644
--- a/macros/latex/contrib/biblatex/doc/examples/97-annotations-biber.pdf
+++ b/macros/latex/contrib/biblatex/doc/examples/97-annotations-biber.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib b/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib
index 10f114bc76..5aaa9d2196 100644
--- a/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib
+++ b/macros/latex/contrib/biblatex/doc/examples/biblatex-examples.bib
@@ -25,19 +25,13 @@
@set{set,
entryset = {herrmann,aksin,yoon},
- annotation = {A \texttt{set} with three members. The \texttt{crossref} field
- in the \texttt{@set} entry and the \texttt{entryset} field in
- each set member entry is needed only when using BibTeX as the
- backend},
+ annotation = {A \texttt{set} with three members.},
}
@set{stdmodel,
entryset = {glashow,weinberg,salam},
annotation = {A \texttt{set} with three members discussing the standard
- model of particle physics. The \texttt{crossref} field
- in the \texttt{@set} entry and the \texttt{entryset} field in
- each set member entry is needed only when using BibTeX as the
- backend},
+ model of particle physics.},
}
@article{aksin,
diff --git a/macros/latex/contrib/biblatex/latex/bbx/standard.bbx b/macros/latex/contrib/biblatex/latex/bbx/standard.bbx
index 3046bd10e8..810c8584c9 100644
--- a/macros/latex/contrib/biblatex/latex/bbx/standard.bbx
+++ b/macros/latex/contrib/biblatex/latex/bbx/standard.bbx
@@ -19,6 +19,8 @@
\settoggle{bbx:related}{#1}}
\ExecuteBibliographyOptions{isbn,url,doi,eprint,related}
+% @online url is shown even if url=false, globally
+\ExecuteBibliographyOptions[online]{url=true}
\newbibmacro*{begentry}{}
\newbibmacro*{finentry}{\finentry}
@@ -485,15 +487,7 @@
\newunit\newblock
\usebibmacro{date}%
\newunit\newblock
- \iftoggle{bbx:doi}
- {\printfield{doi}}
- {}%
- \newunit\newblock
- \iftoggle{bbx:eprint}
- {\usebibmacro{eprint}}
- {}%
- \newunit\newblock
- \usebibmacro{url+urldate}%
+ \usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
@@ -719,9 +713,7 @@
\newunit\newblock
\usebibmacro{location+date}%
\newunit\newblock
- \iftoggle{bbx:url}
- {\usebibmacro{url+urldate}}
- {}%
+ \usebibmacro{doi+eprint+url}%
\newunit\newblock
\usebibmacro{addendum+pubstate}%
\setunit{\bibpagerefpunct}\newblock
@@ -808,7 +800,7 @@
\printfield{volume}%
\setunit*{\adddot}%
\printfield{number}%
- \setunit{\addcomma\space}%
+ \setunit{\bibeidpunct}%
\printfield{eid}}
\newbibmacro*{title+issuetitle}{%
@@ -895,6 +887,8 @@
\newbibmacro*{chapter+pages}{%
\printfield{chapter}%
\setunit{\bibpagespunct}%
+ \printfield{eid}%
+ \setunit{\bibpagespunct}%
\printfield{pages}%
\newunit}
diff --git a/macros/latex/contrib/biblatex/latex/biblatex.def b/macros/latex/contrib/biblatex/latex/biblatex.def
index 992e8ba7e3..10f4144dab 100644
--- a/macros/latex/contrib/biblatex/latex/biblatex.def
+++ b/macros/latex/contrib/biblatex/latex/biblatex.def
@@ -18,9 +18,9 @@
% \namepart<namepart>i - e.g. \namepartfamilyi
\def\do#1{%
\csdef{mkbibname#1}##1{##1}%
- \define@key{blx@opt@namepart}{#1}{\csdef{namepart#1}{##1}}%
- \define@key{blx@opt@namepart}{#1i}{\csdef{namepart#1i}{##1}}%
- \define@key{blx@opt@namepart}{#1un}{\csdef{namepart#1un}{##1}}}
+ \blx@kv@defkey{blx@opt@namepart}{#1}{\csdef{namepart#1}{##1}}%
+ \blx@kv@defkey{blx@opt@namepart}{#1i}{\csdef{namepart#1i}{##1}}%
+ \blx@kv@defkey{blx@opt@namepart}{#1un}{\csdef{namepart#1un}{##1}}}
\expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}
% legacy aliases
@@ -95,8 +95,17 @@
\DeclareDelimFormat{andmoredelim}{\addspace}
\newcommand*{\multicitedelim}{\addsemicolon\space}
+\newcommand*{\multicitesubentrydelim}{\addcomma}
+\newcommand*{\multiciterangedelim}{\bibrangedash}
+\newcommand*{\multicitesubentryrangedelim}{\multiciterangedelim}
+
\newcommand*{\compcitedelim}{\addcomma\space}
+
\newcommand*{\supercitedelim}{\addcomma}
+\newcommand*{\supercitesubentrydelim}{\supercitedelim}
+\newcommand*{\superciterangedelim}{\bibrangedash}
+\newcommand*{\supercitesubentryrangedelim}{\superciterangedelim}
+
\DeclareDelimFormat{prenotedelim}{\addspace}
\DeclareDelimFormat{postnotedelim}{\addcomma\space}
\DeclareDelimAlias{multiprenotedelim}{prenotedelim}
@@ -168,6 +177,7 @@
\newcommand*{\subtitlepunct}{\newunitpunct}
\newcommand*{\intitlepunct}{\addcolon\space}
\newcommand*{\bibpagespunct}{\addcomma\space}
+\newcommand*{\bibeidpunct}{\addcomma\space}
\newcommand*{\bibpagerefpunct}{\addspace}
\newcommand*{\revsdnamepunct}{\addcomma}
\newcommand*{\bibnamedash}{%
@@ -238,6 +248,10 @@
% want more visual separation, try the package option 'block=space'.
% This will yield better results than \nonfrenchspacing.
+% If \frenchspacing is removed here, it may also have to be removed
+% from \blx@beglang@spacefactors, for example with
+% \let\blx@beglang@spacefactors\@empty
+
% \citesetup is a generic hook for citations.
\newcommand*{\citesetup}{%
@@ -462,15 +476,15 @@
\DeclareFieldFormat{prenote}{#1\isdot}
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
\DeclareFieldFormat{volcitevolume}{\bibstring{volume}\ppspace#1}
-\DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}}
+\DeclareFieldAlias{volcitepages}{postnote}
\DeclareFieldFormat{volcitenote}{\mkvolcitenote#1}
\newrobustcmd*{\mkvolcitenote}[2]{%
\printtext[volcitevolume]{#1}%
\ifblank{#2}{}{\volcitedelim\printtext[volcitepages]{#2}}}
% multicite commands
-\DeclareFieldFormat{multiprenote}{#1\isdot}
-\DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}}
+\DeclareFieldAlias{multiprenote}{prenote}
+\DeclareFieldAlias{multipostnote}{postnote}
% Used by \citeurl
@@ -1163,8 +1177,6 @@
% The fallback used by \indexlist
-\DeclareIndexListWrapperFormat{default}{#1}
-
\DeclareIndexListFormat{default}{\index{#1}}
% ------------------------------------------------------------------
@@ -1176,8 +1188,6 @@
% The fallback used by \indexnames
-\DeclareIndexNameWrapperFormat{default}{#1}
-
\DeclareIndexNameFormat{default}{%
\usebibmacro{index:name}
{\index}
@@ -1227,7 +1237,7 @@
\newbibmacro*{index:name}[5]{%
\usebibmacro{index:entry}{#1}{\mkbibindexname{#2}{#3}{#4}{#5}}}
-% {<family name>}{<given name>}{<given initials>}{<family name prefix>}
+% {<family name>}{<given name>}{<prefix>}{<suffix>}
\newcommand*{\mkbibindexname}[4]{%
\ifuseprefix
{\ifdefvoid{#3}{}{#3 }%
@@ -1715,6 +1725,7 @@
\DeclareDataInheritance{periodical}{article,suppperiodical}{%
\inherit{title}{journaltitle}
\inherit{subtitle}{journalsubtitle}
+ \inherit{titleaddon}{journaltitleaddon}
\noinherit{shorttitle}
\noinherit{sorttitle}
\noinherit{indextitle}
@@ -2344,7 +2355,7 @@
\newbibmacro*{multipostnote}{%
\iffieldundef{multipostnote}
{}
- {\printdelim{multipostnotedelim}
+ {\printdelim{multipostnotedelim}%
\printfield{multipostnote}}}
% ------------------------------------------------------------------
@@ -2824,6 +2835,9 @@
\newunit}%
\printfield{maintitleaddon}}
+% The \iffieldundef{journaltitleaddon} is usually not necessary.
+% We need it to ensure that a \setunit* after this macro does the right thing
+% for backwards compatibility.
\newbibmacro*{journal}{%
\ifboolexpr{
test {\iffieldundef{journaltitle}}
@@ -2834,8 +2848,14 @@
{\printtext[journaltitle]{%
\printfield[titlecase]{journaltitle}%
\setunit{\subtitlepunct}%
- \printfield[titlecase]{journalsubtitle}}}}
+ \printfield[titlecase]{journalsubtitle}}%
+ \newunit}%
+ \iffieldundef{journaltitleaddon}
+ {}
+ {\printfield{journaltitleaddon}}}
+% Re \iffieldundef{titleaddon} see the comment about
+% \iffieldundef{journaltitleaddon} above.
\newbibmacro*{periodical}{%
\ifboolexpr{
test {\iffieldundef{title}}
@@ -2846,7 +2866,11 @@
{\printtext[title]{%
\printfield[titlecase]{title}%
\setunit{\subtitlepunct}%
- \printfield[titlecase]{subtitle}}}}
+ \printfield[titlecase]{subtitle}}%
+ \newunit}%
+ \iffieldundef{titleaddon}
+ {}
+ {\printfield{titleaddon}}}
\newbibmacro*{issue}{%
\ifboolexpr{
@@ -2858,11 +2882,13 @@
{\printtext[issuetitle]{%
\printfield[titlecase]{issuetitle}%
\setunit{\subtitlepunct}%
- \printfield[titlecase]{issuesubtitle}}}}
+ \printfield[titlecase]{issuesubtitle}}%
+ \newunit}%
+ \printfield{issuetitleaddon}}
\newbibmacro*{in:}{%
- \printtext{%
- \bibstring{in}\intitlepunct}}
+ \bibstring{in}%
+ \printunit{\intitlepunct}}
\newbibmacro*{date}{\printdate}
@@ -2900,9 +2926,12 @@
{\printfield[eprint:\strfield{eprinttype}]{eprint}}}
\newbibmacro*{annotation}{%
+ \begingroup
+ \togglefalse{blx@bibliography}%
\iffieldundef{annotation}
{\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}
- {\printfield{annotation}}}
+ {\printfield{annotation}}%
+ \endgroup}
\newbibmacro*{abstract}{%
\iffieldundef{abstract}
@@ -2926,7 +2955,7 @@
\ifbibmacroundef{date+extradate}
{}
{\renewbibmacro*{date+extradate}{}%
- \renewbibmacro*{date}{\printdate}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}}%
\renewbibmacro*{pageref}{}}
{\thefield{entrytype}}}}
diff --git a/macros/latex/contrib/biblatex/latex/biblatex.sty b/macros/latex/contrib/biblatex/latex/biblatex.sty
index 775d3ecfb3..e48b124277 100644
--- a/macros/latex/contrib/biblatex/latex/biblatex.sty
+++ b/macros/latex/contrib/biblatex/latex/biblatex.sty
@@ -12,8 +12,8 @@
% particular purpose.
% Set up the version strings here
-\def\abx@date{2019/12/01}
-\def\abx@version{3.14}
+\def\abx@date{2020/08/19}
+\def\abx@version{3.15}
\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)}
@@ -53,6 +53,39 @@
\endinput}
+% generalised keyval interface
+% define a new key (possibly with a default value)
+% {<family>}{<key>}[<default>]{<code>}
+\providerobustcmd*{\blx@kv@defkey}{\define@key}
+
+% globally define new key (should only be the last resort)
+% {<family>}{<key>}[<default>]{<code>}
+\providerobustcmd*{\blx@kv@gdefkey}[2]{%
+ \@ifnextchar[%
+ {\blx@kv@gdefkey@default{#1}{#2}}
+ {\blx@kv@gdefkey@nodefault{#1}{#2}}}
+
+\ifundef\blx@kv@gdefkey@nodefault
+ {\protected\def\blx@kv@gdefkey@nodefault#1#2{\csgdef{KV@#1@#2}##1}}
+ {}
+\ifundef\blx@kv@gdefkey@default
+ {\protected\def\blx@kv@gdefkey@default#1#2[#3]{%
+ \csgdef{KV@#1@#2@default}{\csuse{KV@#1@#2}{#3}}%
+ \csgdef{KV@#1@#2}##1}}
+ {}
+
+% test if key is undefined
+% {<family>}{<key>}{<true>}{<false>}
+\providecommand*{\blx@kv@ifkeyundef}[2]{%
+ \ifcsundef{KV@#1@#2}}
+
+% undefine key
+% {<family>}{<key>}
+\providerobustcmd*{\blx@kv@undef}[2]{\csundef{KV@#1@#2}}
+
+% {<family>}{<key-vals>}
+\providerobustcmd*{\blx@kv@setkeys}{\setkeys}
+
%% Category codes
\def\blx@docatcodes{%
@@ -180,12 +213,12 @@
{'polyglossia' loaded after biblatex}
{'polyglossia' must be loaded before biblatex}}
{}%
- \@ifpackagelater{polyglossia}{2019/10/27}
+ \@ifpackagelater{polyglossia}{2020/04/08}
{}
{\blx@warning@noline
- {biblatex works best with 'polyglossia' 1.45\MessageBreak
+ {biblatex works best with 'polyglossia' 1.49\MessageBreak
or above.\MessageBreak
- Please update 'polyglossia' to v1.45 (2019/10/27)\MessageBreak
+ Please update 'polyglossia' to v1.49 (2020/04/08)\MessageBreak
or later.\MessageBreak
Variant detection will not work properly with\MessageBreak
older versions}}}
@@ -361,11 +394,19 @@
{}}
{}}
{}%
- \apptocmd\@floatboxreset
- {\boolfalse{citetracker}%
- \boolfalse{pagetracker}}
+ \iftoggle{blx@trackfloats}
{}
- {\blx@err@patch{floats}}%
+ {\apptocmd\@floatboxreset
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}}
+ {}
+ {\blx@err@patch{floats}}}%
+ \iftoggle{blx@backreffloats}
+ {}
+ {\apptocmd\@floatboxreset
+ {\boolfalse{backtracker}}
+ {}
+ {\blx@err@patch{floats}}}%
\ifdef\TX@endtabularx % tabularx/memoir
{\pretocmd\TX@endtabularx
{\addtocounter{tabx@nest}{1}}% track nested tabularx environments
@@ -501,8 +542,13 @@
\iftoggle{blx@autolangcite}
{\let\blx@beglangcite\blx@beglang}
{}%
+ % babel/polyglossia has loaded the (main document) language already,
+ % so we need to explicitly enable our captions (abx@strings@)
+ % and extras (abx@extras@) now
+ \toggletrue{blx@lang@captions@\blx@languagename}%
\csuse{abx@extras@\blx@languagename}%
\csuse{abx@strings@\blx@languagename}%
+ % avoid accidental re-initialization
\undef\blx@mkautolangbabel
\undef\blx@mkautolangpoly
\undef\blx@mknoautolang
@@ -515,26 +561,35 @@
{}%
}
+% our copy of \addtocontents with \immediate (not @protected,
+% so a bit different, but we are only going to use it for very
+% specific input, so that doesn't matter)
+\def\blx@immediate@addtocontents#1#2{%
+ \blx@auxwrite\@auxout
+ {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
+ {\string\@writefile{#1}{#2}}}
-\begingroup
-\@makeother\#
-% \relax: gobble newline -> titletoc.sty
-\AtEndPreamble{%
- \addtocontents{toc}{%
+\AtBeginDocument{%
+ \blx@immediate@addtocontents{toc}{%
\boolfalse{citerequest}%
\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\boolfalse{backtracker}\relax}%
- \addtocontents{lof}{%
+ \blx@immediate@addtocontents{lof}{%
\boolfalse{citerequest}%
\boolfalse{citetracker}%
\boolfalse{pagetracker}%
\boolfalse{backtracker}\relax}%
- \addtocontents{lot}{%
+ \blx@immediate@addtocontents{lot}{%
\boolfalse{citerequest}%
\boolfalse{citetracker}%
\boolfalse{pagetracker}%
- \boolfalse{backtracker}\relax}%
+ \boolfalse{backtracker}\relax}}
+
+\begingroup
+\@makeother\#
+% \relax: gobble newline -> titletoc.sty
+\AtEndPreamble{%
\patchcmd\addtocontents
{\string\@writefile}
{\string\@writefile{#1}{\defcounter{refsection}{\the\c@refsection}\relax}%
@@ -543,6 +598,7 @@
{\blx@err@patch{\string\addtocontents}}}
\endgroup
+
% trick hyperref into believing we're natbib
\let\NAT@parse\@empty
% trick showkeys into believing we're havard
@@ -576,10 +632,52 @@
\ifundef\pdf@mdfivesum
{\let\blx@mdfivesum\@firstofone
\blx@warning@noline{Command '\string\pdf@mdfivesum' undefined.\MessageBreak
- 'labelprefix' may not be able to accept all input}}
+ 'labelprefix' may not be able to accept all input.\MessageBreak
+ The command is available (via 'pdftexcmds')\MessageBreak
+ in recent versions of pdfTeX, LuaTeX and XeTeX}}
{\let\blx@mdfivesum\pdf@mdfivesum}
+\ifundef\pdf@filemdfivesum
+ {\blx@warning@noline{Command '\string\pdf@filemdfivesum' undefined.\MessageBreak
+ Biber rerun detection may not work as expected.\MessageBreak
+ The command is available (via 'pdftexcmds')\MessageBreak
+ in recent versions of pdfTeX, LuaTeX and XeTeX}%
+ \let\blx@generate@bbl@mdfivesum@found\relax
+ \let\blx@generate@bbl@mdfivesum@notfound\relax
+ \let\blx@aux@read@bbl@mdfivesum\@gobble
+ \let\blx@aux@write@bbl@mdfivesum\relax
+ \let\blx@check@bbl@rerun@mdfivesum\relax}
+ {\let\blx@filemdfivesum\pdf@filemdfivesum
+
+ \def\blx@generate@bbl@mdfivesum@found{%
+ \xdef\blx@bbl@mdfivesum@new{\blx@filemdfivesum{\jobname.bbl}}}
+
+ \def\blx@generate@bbl@mdfivesum@notfound{%
+ \gdef\blx@bbl@mdfivesum@new{nobblfile}}
+
+ \def\blx@aux@read@bbl@mdfivesum{%
+ \gdef\blx@bbl@mdfivesum@old}
+
+ % If we need Biber to rerun, save the hash of the current .bbl.
+ % That way we can detect if the Biber rerun really happened when
+ % we run LaTeX the next time.
+ \def\blx@aux@write@bbl@mdfivesum{%
+ \iftoggle{blx@runbiber}
+ {\blx@auxwrite\@mainaux{}{%
+ \string\blx@aux@read@bbl@mdfivesum{\blx@bbl@mdfivesum@new}}}
+ {}}
+
+ % There was a Biber rerun request last time (\blx@bbl@mdfivesum@old),
+ % yet the bbl files are the same (as far as md5 hashes are concerned),
+ % that means *no* Biber rerun happened.
+ % So we need to re-request a rerun.
+ \def\blx@check@bbl@rerun@mdfivesum{%
+ \ifdefstrequal\blx@bbl@mdfivesum@old\blx@bbl@mdfivesum@new
+ {\blx@logreq@active{}}
+ {}}}
+
+
% xstring replacements
% reverse a given string
@@ -712,6 +810,7 @@
\newcount\blx@parenlevel@foot
\expandafter\newcount\csname blx@sectionciteorder@0\endcsname
\newcount\blx@entrysetcounter
+\newcount\blx@biblioinstance
\def\blx@uniquename{false}
\def\blx@uniquelist{false}
@@ -1087,10 +1186,15 @@
{\blx@info@noline{Trying to load #2..}%
\IfFileExists{#1}
{\blx@info@noline{... file '#1' found}%
- #3\@@input\@filef@und#4#5%
+ \csuse{blx@filehook@preload@#1}%
+ #3\@@input\@filef@und#4%
+ \csuse{blx@filehook@postload@#1}%
+ #5%
\listxadd\blx@list@req@stat{#1}%
\@addtofilelist{#1}}
- {\blx@info@noline{... file '#1' not found}#6}%
+ {\blx@info@noline{... file '#1' not found}%
+ \csuse{blx@filehook@failure@#1}%
+ #6}%
\global\cslet{blx@file@#1}\@empty}
{#5}}
@@ -1151,21 +1255,23 @@
\detokenize{" xmlns:bcf="https://sourceforge.net/projects/biblatex">}}
% {<true>}{<false>}
-\newrobustcmd*{\lbx@ifutfinput}{\ifboolexpr{%
- test {\ifdefstring\inputencodingname{utf8}}
- or
- test {\ifdefstring\inputencodingname{utf8x}}
- or
- test {\ifdefstring\inputencodingname{lutf8}}
- or
- ( test {\ifundef\inputencodingname}
- and
- ( not test {\ifundef\XeTeXrevision}
- or
- not test {\ifundef\luatexversion}
+\newrobustcmd*{\lbx@ifutfinput}{%
+ \ifboolexpr{%
+ test {\ifdefstring\inputencodingname{utf8}}
+ or
+ test {\ifdefstring\inputencodingname{utf8x}}
+ or
+ test {\ifdefstring\inputencodingname{lutf8}}
+ or
+ ( test {\ifundef\inputencodingname}
+ and
+ ( not test {\ifundef\XeTeXrevision}
+ or
+ not test {\ifundef\luatexversion}
+ )
)
- )
-}}
+ }%
+}
%% More user feedback
\protected\def\blx@warning@entry#1{%
@@ -1320,7 +1426,7 @@
\protected\def\blx@warn@nostring#1{%
\blx@warning@entry{Bibliography string '#1'
- \ifcsundef{KV@blx@lbx@#1}{undefined}{untranslated}}%
+ \blx@kv@ifkeyundef{blx@lbx}{#1}{undefined}{untranslated}}%
\abx@missing{#1}}
\def\blx@warn@conflopt#1{%
@@ -1459,6 +1565,7 @@
\global\toggletrue{blx@runbiber}%
\global\let\blx@rerun@biber\relax}
+
\let\blx@checksum@old\@empty
\let\blx@checksum@new\@empty
\let\blx@pagesum@old\@empty
@@ -1511,14 +1618,10 @@
\endgroup}
\def\blx@warn@auxlist{%
- \begingroup
- \edef\blx@tempa{%
- Please (re)run Biber on the file:\MessageBreak
- \jobname}%
\blx@warning@noline{%
- \blx@tempa\MessageBreak
- and rerun LaTeX afterwards}%
- \endgroup}
+ Please (re)run Biber on the file:\MessageBreak
+ \jobname\MessageBreak
+ and rerun LaTeX afterwards}}
\AfterEndDocument{%
\blx@check@rerun
@@ -1603,6 +1706,12 @@
\sfcode`\?=3002
}
+\def\abx@dosingleaccents{%
+ \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
+ \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
+\def\abx@dodoubleaccents{%
+ \do\t}
+
% Defining characters that count as prefices in names like d'Argent
% Code from moewe
\let\blx@prefchars\@empty
@@ -1909,7 +2018,7 @@
\newrobustcmd*{\autocap}[1]{#1}
\protected\def\blx@imc@autocap{%
- \blx@imc@ifcapital\MakeUppercase\@firstofone}
+ \blx@imc@ifcapital\MakeCapital\@firstofone}
\protected\def\blx@imc@nopunct{%
\leavevmode\spacefactor\blx@sf@nopunct}
@@ -2055,8 +2164,15 @@
\providerobustcmd*{\nohyphenation}{%
\language\blx@langwohyphens}
-\providerobustcmd*{\textnohyphenation}[1]{%
- \bgroup\nohyphenation#1\egroup}
+% work around odd XeTeX/babel-french behaviour
+% https://github.com/plk/biblatex/issues/979
+% fix by Ulrike Fischer
+% https://tex.stackexchange.com/a/544914/
+\ifundef\XeTeXrevision
+ {\providerobustcmd*{\textnohyphenation}[1]{%
+ \bgroup\nohyphenation#1\egroup}}
+ {\providerobustcmd*{\textnohyphenation}[1]{%
+ \bgroup\nohyphenation#1\egroup^^^^200b}}
\blx@regimcs{%
\setpunctfont \resetpunctfont \ifcapital \autocap \ifpunctmark
@@ -2447,17 +2563,26 @@
{\@secondoftwo}
{\ifcsundef{abx@name@#2}
{\@secondoftwo}
- {\blx@ifnamesequal{#1}{#2}}}}
+ {\blx@ifnamesequalcscs{abx@name@#1}{abx@name@#2}}}}
+
+\def\blx@ifnamesequalcscs#1#2{%
+ \expandafter\expandafter\expandafter\blx@ifnamesequaldefdef
+ \expandafter\expandafter\expandafter{%
+ \expandafter\csname\expandafter #1\expandafter\endcsname
+ \expandafter}%
+ \expandafter{\csname #2\endcsname}}
-\def\blx@ifnamesequal#1#2{%
+\def\blx@ifnamesequalcsdef#1#2{%
+ \expandafter\blx@ifnamesequaldefdef\expandafter{%
+ \csname #1\endcsname}{#2}}
+
+\def\blx@ifnamesequaldefdef#1#2{%
\begingroup
\let\blx@tempa\@empty
- \expandafter\expandafter
- \expandafter\blx@ifnamesequal@i\csname abx@name@#2\endcsname
+ \expandafter\blx@ifnamesequal@i#2%
\let\blx@tempb\blx@tempa
\let\blx@tempa\@empty
- \expandafter\expandafter
- \expandafter\blx@ifnamesequal@i\csname abx@name@#1\endcsname
+ \expandafter\blx@ifnamesequal@i#1%
\expandafter\endgroup
\ifx\blx@tempa\blx@tempb
\expandafter\@firstoftwo
@@ -2477,47 +2602,39 @@
% These explicit nameparts are alright as they are for bibtex only
% biber names will always have a hash generated from all nameparts in datamodel
\def\blx@ifnamesequal@iii#1#2{%
- \setkeys{blx@opt@name}{#1}%
- \setkeys{blx@opt@namepart}{#2}%
+ \blx@kv@setkeys{blx@opt@name}{#1}%
+ \blx@kv@setkeys{blx@opt@namepart}{#2}%
\ifdef\abx@field@hash
{\eappto\blx@tempa{{\abx@field@hash}}}
{\eappto\blx@tempa{{{\namepartfamily}{\namepartgiven}{\namepartprefix}{\namepartsuffix}}}}}
-% {<field>}{<macro>}{<true>}{<false>}
-\def\blx@imc@iffieldequals#1#2{%
- \blx@imc@iffieldundef{#1}
+% {<csname>}{<def>}{<true>}{<false>}
+\newcommand*{\blx@ifcsdefequal}[2]{%
+ \ifcsundef{#1}
{\@secondoftwo}
{\ifundef#2%
{\@secondoftwo}
- {\expandafter\ifx\csname abx@field@#1\endcsname#2%
+ {\expandafter\ifx\csname#1\endcsname#2%
\expandafter\@firstoftwo
\else
\expandafter\@secondoftwo
\fi}}}
+% {<field>}{<macro>}{<true>}{<false>}
+\def\blx@imc@iffieldequals#1#2{%
+ \blx@ifcsdefequal{abx@field@#1}{#2}}
+
% {<plainlist>}{<macro>}{<true>}{<false>}
\def\blx@imc@iflistequals#1#2{%
- \blx@imc@iflistundef{#1}
- {\@secondoftwo}
- {\ifundef#2%
- {\@secondoftwo}
- {\expandafter\ifx\csname abx@list@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
+ \blx@ifcsdefequal{abx@list@#1}{#2}}
% {<namelist>}{<macro>}{<true>}{<false>}
-\def\blx@imc@ifnameequals#1#2{% FIXME
+\def\blx@imc@ifnameequals#1#2{%
\blx@imc@ifnameundef{#1}
{\@secondoftwo}
{\ifundef#2%
{\@secondoftwo}
- {\expandafter\ifx\csname abx@name@#1\endcsname#2%
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}}}
+ {\blx@ifnamesequalcsdef{abx@name@#1}{#2}}}}
% {<field>}{<csname>}{<true>}{<false>}
\def\blx@imc@iffieldequalcs#1{%
@@ -2528,8 +2645,12 @@
\ifcsequal{abx@list@#1}}
% {<namelist>}{<csname>}{<true>}{<false>}
-\def\blx@imc@ifnameequalcs#1{% FIXME
- \ifcsequal{abx@name@#1}}
+\def\blx@imc@ifnameequalcs#1#2{%
+ \blx@imc@ifnameundef{#1}
+ {\@secondoftwo}
+ {\ifcsundef{#2}
+ {\@secondoftwo}
+ {\blx@ifnamesequalcscs{abx@name@#1}{#2}}}}
% {<field>}{<string>}{<true>}{<false>}
\protected\long\def\blx@imc@iffieldequalstr#1#2{%
@@ -2671,17 +2792,25 @@
\expandafter\@secondoftwo
\fi}}}
+
% {<true>}{<false>}
+%\def\blx@imc@iffirstcitekey{%
+% \ifboolexpr{ ( test {\ifnumequal\c@multicitetotal\z@}
+% and test {\ifnumequal\c@citecount\@ne} )
+% or ( test {\ifnumgreater\c@multicitetotal\z@}
+% and test {\ifnumequal\c@multicitecount\@ne}
+% and test {\ifnumequal\c@citecount\@ne} ) }}
\def\blx@imc@iffirstcitekey{%
- \ifboolexpr{ ( test {\ifnumequal\c@multicitetotal\z@}
- and test {\ifnumequal\c@citecount\@ne} )
- or ( test {\ifnumgreater\c@multicitetotal\z@}
- and test {\ifnumequal\c@multicitecount\@ne}
- and test {\ifnumequal\c@citecount\@ne} ) }}
+ \ifnumequal\c@citecount\@ne
+ {\ifnumequal\c@multicitetotal\z@
+ {\@firstoftwo}
+ {\ifnumequal\c@multicitecount\@ne}}
+ {\@secondoftwo}}
\def\blx@imc@iflastcitekey{%
- \ifboolexpr{ test {\ifnumequal\c@citecount\c@citetotal}
- and test {\ifnumequal\c@multicitecount\c@multicitetotal} }}
+ \ifnumequal\c@citecount\c@citetotal
+ {\ifnumequal\c@multicitecount\c@multicitetotal}
+ {\@secondoftwo}}
% {<category>}{<true>}{<false>}
\protected\def\blx@imc@ifcategory{%
@@ -2970,7 +3099,7 @@
\begingroup
\def\do##1{\uccode`##1=`\%}%
\do\0\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9%
- \makeatletter
+ \catcode`\@=11
\catcode`\%=9
\endlinechar\m@ne
\uppercase{\scantokens{\def\blx@tempa{#1}}}%
@@ -3007,7 +3136,7 @@
\ifx\blx@tempa\@empty
\aftergroup\@secondoftwo
\else
- \makeatletter
+ \catcode`\@=11
\catcode`\%=9
\endlinechar\m@ne
\everyeof{\noexpand}#1%
@@ -3157,6 +3286,12 @@
\newrobustcmd*{\NumCheckSetup}{\appto\blx@hook@ifnum}
\newcommand*{\NumcheckSetup}{\NumCheckSetup}
+\newrobustcmd*{\NumsCheckSetup}{\appto\blx@hook@ifnums}
+
+\newrobustcmd*{\PagesCheckSetup}{\appto\blx@hook@ifpages}
+
+\PagesCheckSetup{\let\pnfmt\@firstofone}
+
% [<pagination>][<postpro>]{<string>}
\newrobustcmd*{\blx@imc@mkpageprefix}[1][pagination]{%
\begingroup
@@ -3180,7 +3315,7 @@
{\bibstring{#1s}\ppspace}
{\def\pno{\bibstring{#1}}%
\def\ppno{\bibstring{#1s}}}}%
- \blx@mkpageprefix@i[#2]{#3}}
+ \blx@mkpageprefix@i[{#2}]{#3}}
\long\def\blx@mkpageprefix@i[#1]#2{#1{#2}\endgroup}
@@ -3243,7 +3378,7 @@
\@ifnextchar[{\blx@range@aux@i#1}{#1[\@firstofone][\@firstofone]}}
\def\blx@range@aux@i#1[#2]{%
- \@ifnextchar[{#1[#2]}{#1[#2][\@firstofone]}}
+ \@ifnextchar[{#1[{#2}]}{#1[{#2}][\@firstofone]}}
\def\blx@normrange@i[#1][#2]#3{%
\let\blx@tempa\@empty
@@ -3301,9 +3436,9 @@
% Unicode en-dashes are supported in blx-unicode.def
\def\blx@genrange@split#1{%
- \edef\blx@normrange@abort{%
+ \protected@edef\blx@normrange@abort{%
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}}}%
+ \blx@range@out@item@process{\unexpanded{#1}}}}%
\blx@imc@ifpages{#1}
{\blx@normrange@range#1\bibrangedash\bibrangedash&}
{\blx@normrange@abort}}
@@ -3313,17 +3448,17 @@
{\blx@normrange@hyphen#1--&}
{\ifblank{#2}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}%
+ \blx@range@out@item@process{\unexpanded{#1}}%
\noexpand\bibrangedash}}%
\blx@tempc}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{%
+ \blx@range@out@item@process{%
\unexpanded{#2}}}}%
\blx@tempc}
{\blx@range@process{#1}{#2}}}}}
@@ -3338,10 +3473,10 @@
\blx@normrange@hyphen@i#3&}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{%
+ \blx@range@out@item@process{%
\unexpanded{#2}}}}%
\blx@tempc}
{\blx@range@process{#1}{#2}}}}}
@@ -3349,18 +3484,18 @@
\def\blx@normrange@hyphen@i#1-#2&{%
\ifblank{#1#2}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\expandonce\blx@tempb}%
+ \blx@range@out@item@process{\expandonce\blx@tempb}%
\noexpand\bibrangedash}}%
\blx@tempc}
{\notblank{#1}
{\ifdefempty\blx@tempb
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{%
+ \blx@range@out@item@process{%
\unexpanded{#1}}}}%
\blx@tempc}
{\expandafter\blx@range@process
@@ -3369,11 +3504,11 @@
\def\blx@normrange@process#1#2{%
\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}%
+ \blx@range@out@item@process{\unexpanded{#1}}%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\unexpanded{#2}}}}%
+ \blx@range@out@item@process{\unexpanded{#2}}}}%
\blx@tempc}
% <*>[<postpro>]{<string>}
@@ -3414,11 +3549,11 @@
{\@secondoftwo}
{\blx@comprange@comp{#1}{#2}}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}%
+ \blx@range@out@item@process{\unexpanded{#1}}%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\unexpanded{#2}}}}%
+ \blx@range@out@item@process{\unexpanded{#2}}}}%
\blx@tempc}}
\def\blx@comprange@comp#1#2{%
@@ -3450,11 +3585,11 @@
\numdef\blx@tempc\blx@tempd
\fi
\begingroup
- \edef\blx@tempb{\endgroup
+ \protected@edef\blx@tempb{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\blx@tempb}%
+ \blx@range@out@item@process{\blx@tempb}%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\blx@tempc}}}%
+ \blx@range@out@item@process{\blx@tempc}}}%
\blx@tempb}
\def\blx@comprange@comp@div{%
@@ -3508,9 +3643,9 @@
% Unicode en-dashes are supported in blx-unicode.def
\def\blx@firstpage@split#1{%
- \edef\blx@firstpage@abort{%
+ \protected@edef\blx@firstpage@abort{%
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}}}%
+ \blx@range@out@item@process{\unexpanded{#1}}}}%
\blx@firstpage@range#1\bibrangedash\bibrangedash&}
\def\blx@firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
@@ -3518,15 +3653,15 @@
{\blx@firstpage@hyphen#1--&}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\unexpanded{#2}}}}%
+ \blx@range@out@item@process{\unexpanded{#2}}}}%
\blx@tempc}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}}}%
+ \blx@range@out@item@process{\unexpanded{#1}}}}%
\blx@tempc}}}
\def\blx@firstpage@hyphen#1-#2-#3&{%
@@ -3536,16 +3671,16 @@
{\ifblank{#2}
{\blx@firstpage@hyphen@i#3&}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{%
+ \blx@range@out@item@process{%
\unexpanded{#2}}}}%
\blx@tempc}}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}}}%
+ \blx@range@out@item@process{\unexpanded{#1}}}}%
\blx@tempc}}}
\def\blx@firstpage@hyphen@i#1-#2&{%
@@ -3554,10 +3689,10 @@
{\blx@firstpage@abort}
{\blx@firstpage@hyphen@i#2&}}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{%
+ \blx@range@out@item@process{%
\unexpanded{#1}}}}%
\blx@tempc}}
@@ -3597,7 +3732,7 @@
\blx@cleardelim{#2}%
\ifblank{#1}
{\blx@declaredelim{#2}{#3}}
- {\blx@declaredelim[#1]{#2}{#3}}}
+ {\blx@declaredelim[{#1}]{#2}{#3}}}
\newrobustcmd*{\blx@declaredelim}[3][]{%
\ifblank{#1}
@@ -3615,13 +3750,71 @@
\csdef{#1##1}{#4}}%
\forcsvlist{\do@i}{#3}}
-% *[<alias context, ...>]{<alias>}[<delim context>]{<delim>}
+% [<alias context, ...>]{<alias>}[<delim context>]{<delim>}
+% deprecated: *[<alias context, ...>]{<alias>}[<delim context>]{<delim>}
+% the starred version is only implemented for backwards compatibility
+% the only difference is that a missing first argument
+% implies the global/empty context
\newrobustcmd*{\DeclareDelimAlias}{%
\@ifstar
- {\blx@declaredelimalias@expl}
- {\blx@declaredelimalias@auto}}
+ {\blx@declaredelimalias@s}
+ {\blx@declaredelimalias@a}}
-\newrobustcmd*{\blx@declaredelimalias@auto}[2]{%
+\def\blx@declaredelimalias@s{%
+ \blx@warning{%
+ The starred command '\string\DeclareDelimAlias*' is\MessageBreak
+ deprecated.%
+ \MessageBreak
+ Use the unstarred version '\string\DeclareDelimAlias'\MessageBreak
+ instead}%
+ \@ifnextchar[%]
+ {\blx@declaredelimalias@om}
+ {\blx@declaredelimalias@om[]}}
+
+\def\blx@declaredelimalias@a{%
+ \@ifnextchar[%]
+ {\blx@declaredelimalias@om}
+ {\blx@declaredelimalias@m}}
+
+\def\blx@declaredelimalias@m#1{%
+ \@ifnextchar[%]
+ {\blx@declaredelimalias@mom{#1}}
+ {\blx@declaredelimalias@mm{#1}}}
+
+\def\blx@declaredelimalias@mm{%
+ \blx@declaredelimalias@auto}
+
+\def\blx@declaredelimalias@mom{%
+ \blx@declaredelimalias@omom[]}
+
+\def\blx@declaredelimalias@om[#1]#2{%
+ \@ifnextchar[%]
+ {\blx@declaredelimalias@omom[{#1}]{#2}}
+ {\blx@declaredelimalias@omm[{#1}]{#2}}}
+
+% hrmpf ... remember that \docsvlist doesn't do anthing for empty
+% lists/list items
+\def\blx@declaredelimalias@omom[#1]#2[#3]#4{%
+ \ifstrequal{#1}{*}
+ {\ifstrequal{#3}{*}
+ {\blx@declaredelimalias@auto{#2}{#4}}
+ {\blx@cleardelim{#1}%
+ \blx@declaredelimalias@manual{}{#2}{#3}{#4}}}
+ {\def\do##1{\blx@declaredelimalias@manual{##1}{#2}{#3}{#4}}%
+ \ifblank{#1}
+ {\do{}}
+ {\docsvlist{#1}}}}
+
+\def\blx@declaredelimalias@omm[#1]#2#3{%
+ \ifstrequal{#1}{*}
+ {\blx@declaredelimalias@auto{#2}{#3}}
+ {\def\do##1{\blx@declaredelimalias@manual{##1}{#2}{##1}{#3}}%
+ \ifblank{#1}
+ {\do{}}
+ {\docsvlist{#1}}}}
+
+% {<alias>}{<source>}
+\def\blx@declaredelimalias@auto#1#2{%
\blx@cleardelim{#1}%
\blx@declaredelimalias@def{}{#1}{}{#2}%
\ifcsvoid{blx@declaredelimcontexts@#2}
@@ -3631,37 +3824,15 @@
{blx@printdelim@##1@}{#1}{blx@printdelim@##1@}{#2}}%
\dolistcsloop{blx@declaredelimcontexts@#2}}}
-\def\blx@declaredelimalias@expl{%
- \@ifnextchar[%]
- {\blx@declaredelimalias@expl@i}
- {\blx@declaredelimalias@expl@i[]}}
-
-\def\blx@declaredelimalias@expl@i[#1]#2{%
- \@ifnextchar[%]
- {\blx@declaredelimalias@expl@iii{#1}{#2}}
- {\blx@declaredelimalias@expl@ii{#1}{#2}}}
-
-\def\blx@declaredelimalias@expl@ii#1#2#3{%
- \ifblank{#1}
- {\blx@declaredelimalias@def{}{#2}{}{#3}}
- {\def\do##1{%
- \blx@declaredelimalias@def
- {blx@printdelim@##1@}{#2}{blx@printdelim@##1@}{#3}}%
- \docsvlist{#1}}}
-
-\def\blx@declaredelimalias@expl@iii#1#2[#3]#4{%
+% {<alias context>}{<alias>}{<source context>}{<source>}
+\def\blx@declaredelimalias@manual#1#2#3#4{%
\ifblank{#1}
{\ifblank{#3}
{\blx@declaredelimalias@def{}{#2}{}{#4}}
{\blx@declaredelimalias@def{}{#2}{blx@printdelim@#3@}{#4}}}
{\ifblank{#3}
- {\def\do##1{%
- \blx@declaredelimalias@def
- {blx@printdelim@##1@}{#2}{}{#4}}}
- {\def\do##1{%
- \blx@declaredelimalias@def
- {blx@printdelim@##1@}{#2}{blx@printdelim@#3@}{#4}}}%
- \docsvlist{#1}}}
+ {\blx@declaredelimalias@def{blx@printdelim@#1@}{#2}{}{#4}}}
+ {\blx@declaredelimalias@def{blx@printdelim@#1@}{#2}{blx@printdelim@#3@}{#4}}}
\def\blx@declaredelimalias@def#1#2#3#4{%
\ifcsdef{#1#2}
@@ -3707,6 +3878,7 @@
\blx@regimcs{\UseUsedriverHook}
\AtUsedriver{%
+ \delimcontext{bib}%
\let\finentry\blx@finentry@usedrv
\let\newblock\relax
\let\abx@macro@bibindex\@empty
@@ -3715,7 +3887,6 @@
% {<init>}{<entrytype>}
\protected\def\blx@imc@usedriver#1#2{%
\begingroup
- \delimcontext{bib}%
\csuse{blx@hook@usedriver}%
\csuse{blx@hook@bbxinit}#1%
\blx@beglangbib
@@ -3830,37 +4001,75 @@
\def\ifentrycategory{\blx@imc@ifentrycategory}
\def\ifentrykeyword{\blx@imc@ifentrykeyword}
+
\def\blx@imc@iflabeldateisdate{%
- \ifboolexpr{%
- togl {blx@labeldateparts}
- and not test {\iffieldundef{labeldatesource}}
- and
- (test {\iffieldequalstr{labeldatesource}{}}
- or test {\iffieldequalstr{labeldatesource}{year}})}}
+ \iftoggle{blx@labeldateparts}
+ {\iffieldundef{labeldatesource}
+ {\@secondoftwo}
+ {\iffieldequalstr{labeldatesource}{}
+ {\@firstoftwo}
+ {\iffieldequalstr{labeldatesource}{year}}}}
+ {\@secondoftwo}}
+
\def\blx@imc@ifdatehasyearonlyprecision#1{%
- \ifboolexpr{not test {\iffieldundef{#1year}}
- and (test {\ifcsstring{blx@dateformat@#1date}{year}}
- or (test {\iffieldundef{#1month}}
- and test {\iffieldundef{#1season}}))}}
+ \iffieldundef{#1year}
+ {\@secondoftwo}
+ {\ifcsstring{blx@dateformat@#1date}{year}
+ {\@firstoftwo}
+ {\iffieldundef{#1month}
+ {\iffieldundef{#1season}}
+ {\@secondoftwo}}}}
\def\blx@imc@ifdatehastime#1{%
- \ifboolexpr{togl {blx@#1dateusetime}
- and not test {\iffieldundef{#1hour}}}}
+ \iftoggle{blx@#1dateusetime}
+ {\iffieldundef{#1hour}
+ {\@secondoftwo}
+ {\@firstoftwo}}
+ {\@secondoftwo}}
\def\blx@imc@ifdateshavedifferentprecision#1#2{%
- \ifboolexpr{ (test {\ifdatehasyearonlyprecision{#1}}
+ \ifboolexpr{ ( test {\ifdatehasyearonlyprecision{#1}}
and not test {\ifdatehasyearonlyprecision{#2}})
- or (not test {\ifdatehasyearonlyprecision{#1}}
- and test {\ifdatehasyearonlyprecision{#2}})
- or (test {\ifdatehastime{#1}}
+ or ( not test {\ifdatehasyearonlyprecision{#1}}
+ and test {\ifdatehasyearonlyprecision{#2}})
+ or ( test {\ifdatehastime{#1}}
and not test {\ifdatehastime{#2}})
- or (not test {\ifdatehastime{#1}}
- and test {\ifdatehastime{#2}})}}
+ or ( not test {\ifdatehastime{#1}}
+ and test {\ifdatehastime{#2}})}}
\def\blx@imc@ifdateyearsequal#1#2{%
- \ifboolexpr{ test {\iffieldsequal{#1year}{#2year}}
- and test {\iffieldsequal{#1dateera}{#2dateera}}}}
+ \iffieldsequal{#1year}{#2year}
+ {\iffieldundef{#1dateera}
+ {\iffieldundef{#2dateera}}
+ {\iffieldsequal{#1dateera}{#2dateera}}}
+ {\@secondoftwo}}
+
+\def\blx@reconstruct@comparabledate#1{%
+ \thefield{#1year}-\thefield{#1month}(\thefield{#1season})-%
+ \thefield{#1day}T%
+ \thefield{#1hour}:\thefield{#1minute}:\thefield{#1second}Z%
+ \thefield{#1timezone}//%
+ e\thefield{#1dateera}E%
+ c\csuse{if#1datecirca}{T}{F}%
+ j\csuse{if#1datejulian}{T}{F}%
+ r\csuse{if#1dateuncertain}{T}{F}%
+ k\csuse{if#1dateunknown}{T}{F}%
+}
+
+\def\blx@imc@ifdatesequal#1#2{%
+ \begingroup
+ \edef\blx@tempa{\blx@reconstruct@comparabledate{#1}}%
+ \edef\blx@tempb{\blx@reconstruct@comparabledate{#2}}%
+ \edef\blx@tempc{\endgroup
+ \ifstrequal{\blx@tempa}{\blx@tempb}}%
+ \blx@tempc
+}
+
+\def\blx@imc@ifdaterangesequal#1#2{%
+ \blx@imc@ifdatesequal{#1}{#2}
+ {\blx@imc@ifdatesequal{#1end}{#2end}}
+ {\@secondoftwo}}
\blx@regimcs{%
\ifdriver \thefield \strfield \csfield \usefield \thelist \strlist
@@ -3881,7 +4090,7 @@
\iffieldint \iffieldnum \iffieldnums \iffieldpages
\iflabeldateisdate \ifdatehasyearonlyprecision \ifdatehastime
\ifdateshavedifferentprecision
- \ifdateyearsequal
+ \ifdateyearsequal \ifdatesequal \ifdaterangesequal
\mkpageprefix \mkpagetotal
\newblock \newunit \setunit \printunit \finentry}
@@ -3927,279 +4136,6 @@
%% Global formatting hooks
-% capitalization
-
-% {<text>}
-\newrobustcmd{\MakeCapital}[1]{%
- \begingroup
- \blx@mkcp@init
- \protected@edef\blx@tempa{#1}%
- \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end}
-
-\def\blx@mkcp@init{%
- \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}%
- \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}%
- \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}%
- \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}%
- \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents
- \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents
- \def\IeC##1{\blx@mkcp@iec\IeC{##1}}%
- \def\@tabacckludge##1{%
- \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}}
-
-\begingroup
-\catcode`\"=\active
-\gappto\blx@mkcp@init{%
- \ifnum\catcode`\"=\active
- \def"#1{\blx@mkcp@bbl"\noexpand#1}%
- \fi}
-\endgroup
-
-\def\blx@mkcp@parse{%
- \futurelet\@let@token\blx@mkcp@eval}
-
-\long\def\blx@mkcp@eval{%
- \ifx\@let@token\blx@mkcp@iec
- \expandafter\blx@mkcp@getiec
- \fi
- \ifx\@let@token\blx@mkcp@bbl
- \expandafter\blx@mkcp@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@sgl
- \expandafter\blx@mkcp@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@dbl
- \expandafter\blx@mkcp@getthree
- \fi
- \blx@mkcp@case}
-
-\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{%
- \blx@mkcp@case{#2#3{#4}}}
-
-\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{%
- \blx@mkcp@case{#2#3#4}}
-
-\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{%
- \blx@mkcp@case{#2#3#4#5}}
-
-\long\def\blx@mkcp@case#1{%
- \begingroup
- \def\i{I}\def\j{J}%
- \def\do##1##2{\let##1##2\do}%
- \expandafter\do\@uclclist\relax{\relax\@gobble}%
- \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}%
- \blx@tempa}
-
-\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{%
- \let\blx@mkcp@iec\noexpand
- \let\blx@mkcp@bbl\noexpand
- \let\blx@mkcp@sgl\noexpand
- \let\blx@mkcp@dbl\noexpand
- \protected@edef\blx@tempa{\endgroup#1}%
- \blx@tempa}
-
-\def\abx@dosingleaccents{%
- \do\"\do\'\do\`\do\^\do\~\do\=\do\.%
- \do\H\do\b\do\c\do\d\do\r\do\u\do\v}
-\def\abx@dodoubleaccents{%
- \do\t}
-
-% {<text>}
-\newrobustcmd*{\MakeSentenceCase}{%
- \@ifstar\blx@mksc@i\blx@mksc@ii}
-
-% Check, in order:
-% * explicit option language=<lang>, which overrides everything
-% * langid field of entry
-% * babel/polyglossia lang
-% * main document lang
-\def\blx@mksc@i{%
- \ifdef\blx@forcelanguagename
- {\xifinlist\blx@forcelanguagename\blx@cmksc@lang
- {\blx@mksc@ii}
- {\@firstofone}}
- {\ifdef\abx@field@langid
- {\xifinlist\abx@field@langid\blx@cmksc@lang
- {\blx@mksc@ii}
- {\@firstofone}}
- {\ifdef\blx@main@language
- {\xifinlist\blx@main@language\blx@cmksc@lang
- {\blx@mksc@ii}
- {\@firstofone}}
- {\xifinlist\blx@languagename\blx@cmksc@lang
- {\blx@mksc@ii}
- {\@firstofone}}}}}
-
-\long\def\blx@mksc@ii#1{%
- \begingroup
- \let\blx@tempa\@empty
- \let\blx@tempb\@empty
- \blx@mksc@init
- \protected@edef\@tempa{#1}%
- \expandafter\blx@mksc@parse\@tempa\blx@mksc@end}
-
-\def\blx@mksc@init{%
- \blx@mkcp@init
- \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}%
- \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}%
- \def\do##1{%
- \ifx##1\relax
- \else
- \def##1{\blx@mkcp@nil##1}%
- \expandafter\do
- \fi}%
- \expandafter\do\@uclclist\relax}
-
-\def\blx@mksc@parse{%
- \futurelet\@let@token\blx@mksc@eval}
-
-\def\blx@mksc@eval{%
- \ifx\@let@token\blx@mksc@end
- \expandafter\blx@mksc@end
- \fi
- \ifx\@let@token\bgroup
- \expandafter\blx@mksc@group
- \fi
- \ifx\@let@token\@sptoken
- \expandafter\blx@mksc@space
- \fi
- \ifx\@let@token\blx@mkcp@nil
- \expandafter\blx@mksc@getone
- \fi
- \ifx\@let@token\blx@mkcp@iec
- \expandafter\blx@mksc@getiec
- \fi
- \ifx\@let@token\blx@mkcp@bbl
- \expandafter\blx@mksc@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@sgl
- \expandafter\blx@mksc@gettwo
- \fi
- \ifx\@let@token\blx@mkcp@dbl
- \expandafter\blx@mksc@getthree
- \fi
- \if\noexpand\@let@token\relax
- \expandafter\blx@mksc@cs
- \fi
- \blx@mksc@other}
-
-\def\blx@mksc@end#1\blx@mksc@end{%
- \blx@mksc@eject
- \let\blx@mkcp@nil\noexpand
- \let\blx@mkcp@iec\noexpand
- \let\blx@mkcp@bbl\noexpand
- \let\blx@mkcp@sgl\noexpand
- \let\blx@mkcp@dbl\noexpand
- \let\MakeUppercase\relax
- \let\MakeLowercase\relax
- \protected@edef\blx@tempa{\endgroup\blx@tempa}%
- \blx@tempa}
-
-\long\def\blx@mksc@group#1\blx@mksc@other#2{%
- \futurelet\@let@token\blx@mksc@ingroup#2&{#2}%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\long\def\blx@mksc@ingroup#1&#2{%
- \if\noexpand\@let@token\relax
- \ifx\@let@token\blx@mkcp@sgl
- \blx@mksc@nocase{{#2}}%
- \else
- \ifx\@let@token\blx@mkcp@dbl
- \blx@mksc@nocase{{#2}}%
- \else
- \blx@mksc@locase{{#2}}%
- \fi
- \fi
- \else
- \blx@mksc@nocase{{#2}}%
- \fi}
-
-\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other}
-\csuse{blx@mksc@space} {%
- \blx@mksc@anycase{ }%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\long\def\blx@mksc@cs#1\blx@mksc@other#2{%
- \ifcat\noexpand~\noexpand#2%
- \blx@mksc@locase{#2}%
- \else
- \blx@mksc@nocase{#2}%
- \fi
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{%
- \blx@mksc@other{#2#3{#4}}}
-
-\def\blx@mksc@getone#1\blx@mksc@other#2#3{%
- \blx@mksc@other{#2#3}}
-
-\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{%
- \blx@mksc@other{#2#3#4}}
-
-\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{%
- \blx@mksc@other{#2#3#4#5}}
-
-\long\def\blx@mksc@other#1{%
- \blx@mksc@locase{#1}%
- \blx@mksc@endhead
- \blx@mksc@parse}
-
-\def\blx@mksc@locase{%
- \appto\blx@tempb}
-
-\def\blx@mksc@nocase{%
- \blx@mksc@eject
- \appto\blx@tempa}
-
-\def\blx@mksc@anycase{%
- \ifx\blx@tempb\@empty
- \expandafter\appto
- \expandafter\blx@tempa
- \else
- \expandafter\appto
- \expandafter\blx@tempb
- \fi}
-
-\def\blx@mksc@eject{%
- \ifx\blx@tempb\@empty
- \else
- \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}%
- \let\blx@tempb\@empty
- \fi}
-
-\def\blx@mksc@endhead{%
- \ifx\blx@tempb\@empty
- \else
- \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}%
- \let\blx@tempb\@empty
- \fi
- \let\blx@mksc@endhead\relax}
-
-% {<language,language,...>}
-\newrobustcmd*{\DeclareCaseLangs}{%
- \@ifstar
- {\blx@defcaselangs}
- {\global\let\blx@cmksc@lang\@empty
- \blx@defcaselangs}}
-
-\def\blx@defcaselangs#1{%
- \ifblank{#1}
- {}
- {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}}
-
-\DeclareCaseLangs{%
- american,british,canadian,
- english,USenglish,UKenglish,
- australian,newzealand}
-
-\newrobustcmd*{\ifcaselang}[1][]{%
- \ifblank{#1}
- {\xifinlist\blx@languagename\blx@cmksc@lang}
- {\xifinlist{#1}\blx@cmksc@lang}}
-
%% Main formatting commands
% They work by creating a \let alias:
% \abx@<class>@<entrytype>@<formatname> -> \blx@defformat@d
@@ -4240,19 +4176,11 @@
\@ifstar
{\blx@defformat\blx@defnameformat{nwd}*}
{\blx@defformat\blx@defnameformat{nwd}{}}}
-\newrobustcmd*{\DeclareIndexNameWrapperFormat}{%
- \@ifstar
- {\blx@defformat\blx@defnameformat{nxd}*}
- {\blx@defformat\blx@defnameformat{nxd}{}}}
\newrobustcmd*{\DeclareListWrapperFormat}{%
\@ifstar
{\blx@defformat\blx@defplainformat{lwd}*}
{\blx@defformat\blx@defplainformat{lwd}{}}}
-\newrobustcmd*{\DeclareIndexListWrapperFormat}{%
- \@ifstar
- {\blx@defformat\blx@defplainformat{lxd}*}
- {\blx@defformat\blx@defplainformat{lxd}{}}}
% {<macro>}{<class>}{<*>}
\def\blx@defformat#1#2#3{%
@@ -4260,8 +4188,8 @@
{\blx@defformat@i{#1}{#2}{#3}}
{\blx@defformat@i{#1}{#2}{#3}[*]}}
-% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}
-\def\blx@defformat@i#1#2#3[#4]#5{%
+% {<macro>}{<class>}{<*>}[<entrytype>]{<name>}{<code>}
+\def\blx@defformat@i#1#2#3[#4]#5#6{%
\notblank{#3}
{\blx@resetformat{#2}{#5}}
{}%
@@ -4269,7 +4197,7 @@
\def\blx@defformat@b{#4}%
\blx@xsanitizeafter{\def\blx@defformat@c}{#5}%
\afterassignment\blx@defformat@ii
- #1}
+ #1{#6}}
\def\blx@defformat@ii{%
\expandafter\forcsvlist
@@ -4366,10 +4294,8 @@
\newrobustcmd*{\DeclareIndexFieldAlias}{\blx@defalias{fid}}
\newrobustcmd*{\DeclareNameWrapperAlias}{\blx@defalias{nwd}}
-\newrobustcmd*{\DeclareIndexNameWrapperAlias}{\blx@defalias{nxd}}
\newrobustcmd*{\DeclareListWrapperAlias}{\blx@defalias{lwd}}
-\newrobustcmd*{\DeclareIndexListWrapperAlias}{\blx@defalias{lxd}}
% #1: internal type signature, #2: type text for warning
% #3 #4 #5 #6
@@ -4413,13 +4339,9 @@
\newrobustcmd*{\DeprecateNameWrapperFormatWithReplacement}{%
\blx@deprecateformat{nwd}{Name wrapper format}}
-\newrobustcmd*{\DeprecateIndexNameWrapperFormatWithReplacement}{%
- \blx@deprecateformat{nxd}{Index name wrapper format}}
\newrobustcmd*{\DeprecateListWrapperFormatWithReplacement}{%
\blx@deprecateformat{lwd}{List wrapper format}}
-\newrobustcmd*{\DeprecateIndexListWrapperFormatWithReplacement}{%
- \blx@deprecateformat{lxd}{Index list wrapper format}}
% [<format>]{<text>}
\newrobustcmd{\blx@imc@printtext}[2][]{%
@@ -4467,7 +4389,7 @@
\iftoggle{blx@loadfiles}
{\IfFileExists{#2}
{\listxadd\blx@list@req@edit{#2}%
- \blx@imc@printtext[#1]{\input{#2}\unspace}}
+ \blx@imc@printtext[{#1}]{\input{#2}\unspace}}
{\blx@nounit}}
{\blx@nounit}}
@@ -4547,17 +4469,17 @@
\c@uniquelist\z@
\ifblank{#1}
{}
- {\setkeys{blx@opt@namelist}{#1}}%
+ {\blx@kv@setkeys{blx@opt@namelist}{#1}}%
\def\blx@thedata{#2}}
% Biber-calculated info passed back to biblatex as an option in the .bbl
% unlike stuff defined with \DeclareBiblatexOption and
% \blx@DeclareBackendOption these are not 'real' options
-\define@key{blx@opt@namelist}{ul}{\c@uniquelist#1\relax}
+\blx@kv@defkey{blx@opt@namelist}{ul}{\c@uniquelist#1\relax}
-\define@key{blx@opt@name}{un}{\c@uniquename#1\relax}
-\define@key{blx@opt@name}{uniquepart}{\def\abx@field@uniquepart{#1}}
-\define@key{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}}
+\blx@kv@defkey{blx@opt@name}{un}{\c@uniquename#1\relax}
+\blx@kv@defkey{blx@opt@name}{uniquepart}{\def\abx@field@uniquepart{#1}}
+\blx@kv@defkey{blx@opt@name}{hash}{\edef\abx@field@hash{\detokenize{#1}}}
\newrobustcmd*{\bibinitperiod}{\adddot}
@@ -4577,17 +4499,15 @@
\def\blx@indexnames#1#2#3#4{%
\blx@imc@ifnameundef{#4}
{}
- {\blx@getformat\blx@thewrapperformat{nxd}{#1}{#4}%
- \ifdefvoid\blx@thewrapperformat
+ {\blx@getformat\blx@theformat{nid}{#1}{#4}%
+ \ifdefvoid\blx@theformat
{}
- {\blx@getformat\blx@theformat{nid}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \blx@namesetup{#2}{#3}{#4}%
- \blx@indexnamesetup
- \expandafter\blx@nameparser\blx@thedata{}&%
- \endgroup}}}}
+ {\begingroup
+ \blx@namesetup{#2}{#3}{#4}%
+ \blx@indexnamesetup
+ \expandafter\blx@nameparser\blx@thedata{}&%
+ \endgroup}}}
+
\def\blx@indexnamesetup{%
\let\bibinitperiod\bibindexinitperiod
@@ -4618,13 +4538,13 @@
\begingroup
\ifblank{#1}
{}
- {\setkeys{blx@opt@name}{#1}}%
+ {\blx@kv@setkeys{blx@opt@name}{#1}}%
% reset all the nameparts to empty between names
\def\do##1{%
\cslet{namepart##1}\@empty
\cslet{namepart##1i}\@empty}%
\expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}%
- \setkeys{blx@opt@namepart}{#2}% Extract nameparts information
+ \blx@kv@setkeys{blx@opt@namepart}{#2}% Extract nameparts information
% Still pass the nameparts forward for backwards compat
% When \nameparts is finally removed, remove the "{2}" and remove the
% arg to \blx@defformat@d in def of \blx@defnameformat
@@ -4687,16 +4607,13 @@
\def\blx@indexlist#1#2#3#4{%
\blx@imc@iflistundef{#4}
{}
- {\blx@getformat\blx@thewrapperformat{lxd}{#1}{#4}%
- \ifdefvoid\blx@thewrapperformat
+ {\blx@getformat\blx@theformat{lid}{#1}{#4}%
+ \ifdefvoid\blx@theformat
{}
- {\blx@getformat\blx@theformat{lid}{#1}{#4}%
- \ifdefvoid\blx@theformat
- {}
- {\begingroup
- \blx@listsetup{#2}{#3}{#4}%
- \expandafter\blx@listparser\blx@thedata{}&%
- \endgroup}}}}
+ {\begingroup
+ \blx@listsetup{#2}{#3}{#4}%
+ \expandafter\blx@listparser\blx@thedata{}&%
+ \endgroup}}}
% {<item1>}{<item2>}{...}
\long\def\blx@listparser#1{%
@@ -4797,6 +4714,20 @@
%% Localization
+% {<wrapper>}{<long/short>}{<string>}{<print code>}
+% <print code> is executed when the bibstring is defined
+% it differs between the \bib...string versions
+% in <print code> \blx@tempa should be used as <string>
+\protected\def\blx@met@bibstring#1#2#3#4{%
+ \blx@begunit
+ \blx@hyphenreset
+ \blx@bibstringsimple
+ \lowercase{\edef\blx@tempa{#3}}%
+ \ifcsundef{#2@\blx@tempa}
+ {\blx@warn@nostring\blx@tempa
+ \blx@endnounit}
+ {#4}}
+
% [<wrapper>]{<string>}
\newrobustcmd*{\blx@imc@bibstring}[2][\@firstofone]{%
\blx@bibstring{#1}{\abx@str}{#2}}
@@ -4818,19 +4749,28 @@
\let\bibsstring\blx@imc@bibsstring}
\protected\def\blx@bibstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \blx@bibstringsimple
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
+ \blx@met@bibstring{#1}{#2}{#3}
{\blx@imc@ifcapital
{#1{\MakeCapital{\csuse{#2@\blx@tempa}}}}
{#1{\csuse{#2@\blx@tempa}}}%
\blx@endunit}}
% [<wrapper>]{<string>}
+\newrobustcmd*{\blx@imc@bibncpstring}[2][\@firstofone]{%
+ \blx@bibncpstring{#1}{\abx@str}{#2}}
+
+\newrobustcmd*{\blx@imc@bibncplstring}[2][\@firstofone]{%
+ \blx@bibncpstring{#1}{abx@lstr}{#2}}
+
+\newrobustcmd*{\blx@imc@bibncpsstring}[2][\@firstofone]{%
+ \blx@bibncpstring{#1}{abx@sstr}{#2}}
+
+\protected\def\blx@bibncpstring#1#2#3{%
+ \blx@met@bibstring{#1}{#2}{#3}
+ {#1{\csuse{#2@\blx@tempa}}%
+ \blx@endunit}}
+
+% [<wrapper>]{<string>}
\newrobustcmd*{\blx@imc@bibcpstring}[2][\@firstofone]{%
\blx@bibcpstring{#1}{\abx@str}{#2}}
@@ -4841,13 +4781,7 @@
\blx@bibcpstring{#1}{abx@sstr}{#2}}
\protected\def\blx@bibcpstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \blx@bibstringsimple
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
+ \blx@met@bibstring{#1}{#2}{#3}
{#1{\MakeCapital{\csuse{#2@\blx@tempa}}}%
\blx@endunit}}
@@ -4862,14 +4796,8 @@
\blx@biblcstring{#1}{abx@sstr}{#2}}
\protected\def\blx@biblcstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \blx@bibstringsimple
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeLowercase{\csuse{#2@\blx@tempa}}}%
+ \blx@met@bibstring{#1}{#2}{#3}
+ {#1{\blx@maketext@lowercase{\csuse{#2@\blx@tempa}}}%
\blx@endunit}}
% [<wrapper>]{<string>}
@@ -4883,14 +4811,8 @@
\blx@bibucstring{#1}{abx@sstr}{#2}}
\protected\def\blx@bibucstring#1#2#3{%
- \blx@begunit
- \blx@hyphenreset
- \blx@bibstringsimple
- \lowercase{\edef\blx@tempa{#3}}%
- \ifcsundef{#2@\blx@tempa}
- {\blx@warn@nostring\blx@tempa
- \blx@endnounit}
- {#1{\MakeUppercase{\csuse{#2@\blx@tempa}}}%
+ \blx@met@bibstring{#1}{#2}{#3}
+ {#1{\blx@maketext@uppercase{\csuse{#2@\blx@tempa}}}%
\blx@endunit}}
% {<string>}
@@ -4942,6 +4864,7 @@
\blx@regimcs{%
\bibstring \biblstring \bibsstring
\bibxstring \bibxlstring \bibxsstring
+ \bibncpstring \bibncplstring \bibncpsstring
\bibcpstring \bibcplstring \bibcpsstring
\biblcstring \biblclstring \biblcsstring
\bibucstring \bibuclstring \bibucsstring
@@ -5296,14 +5219,17 @@
\do{langjapanese}%
\do{langlatin}%
\do{langlatvian}%
+ \do{langlithuanian}%
\do{langnorwegian}%
\do{langpolish}%
\do{langportuguese}%
+ \do{langserbian}%
\do{langrussian}%
\do{langslovak}%
\do{langslovene}%
\do{langspanish}%
\do{langswedish}%
+ \do{langturkish}%
\do{langukrainian}%
\do{fromamerican}%
\do{frombrazilian}%
@@ -5324,15 +5250,18 @@
\do{fromitalian}%
\do{fromjapanese}%
\do{fromlatin}%
+ \do{fromlithuanian}%
\do{fromlatvian}%
\do{fromnorwegian}%
\do{frompolish}%
\do{fromportuguese}%
\do{fromrussian}%
+ \do{fromserbian}%
\do{fromslovak}%
\do{fromslovene}%
\do{fromspanish}%
\do{fromswedish}%
+ \do{fromturkish}%
\do{fromukrainian}%
\do{countryde}%
\do{countryep}%
@@ -5369,19 +5298,19 @@
\forcsvlist\blx@newstring{#1}}
\def\blx@newstring#1{%
- \ifcsundef{KV@blx@lbx@#1}
+ \blx@kv@ifkeyundef{blx@lbx}{#1}
{\gappto\abx@dostrings{\do{#1}}%
- \csgdef{KV@blx@lbx@#1}##1{\blx@defstring{#1}{##1}}}
+ \blx@kv@gdefkey{blx@lbx}{#1}{\blx@defstring{#1}{##1}}}
{}}
% in *.cbx/bbx/tex: <key> = {<string>},
% in *.lbx: <key> = {{<longstring>}{<abbrevstring>}},
-\def\do#1{\define@key{blx@lbx}{#1}{\blx@defstring{#1}{##1}}}
+\def\do#1{\blx@kv@defkey{blx@lbx}{#1}{\blx@defstring{#1}{##1}}}
\abx@dostrings
% in *.cbx/bbx/tex: (implicit)
% in *.lbx: inherit = {<language>},
-\define@key{blx@lbx}{inherit}{%
+\blx@kv@defkey{blx@lbx}{inherit}{%
\blx@lbxinput@strings{#1}{}{\blx@err@nolang{#1}}%
\csuse{abx@strings@#1}}
@@ -5443,7 +5372,7 @@
\def\do##1{\csundef{abx@lstr@##1}\csundef{abx@sstr@##1}}%
\abx@dostrings
\csuse{abx@strings@#1}%
- \setkeys{blx@lbx}{#2}%
+ \blx@kv@setkeys{blx@lbx}{#2}%
\let\do\blx@defbibstrings@i
\csxdef{abx@strings@#1}{\abx@dostrings}%
\csgappto{abx@strings@#1}{%
@@ -5457,6 +5386,10 @@
{\letcs\biblistname{\abx@str @shorthands}}
{\let\biblistname\@empty}}}
+% this one is special, it's basically ours and probably not defined
+% by anyone else, so we had better make sure it exists
+\providecommand*{\biblistname}{\blx@warn@nostring{shorthands}}
+
\def\blx@defbibstrings@i#1{%
\ifcsdef{abx@lstr@#1}
{\def\expandafter\noexpand\csname abx@lstr@#1\endcsname{%
@@ -5562,13 +5495,18 @@
\blx@info@noline{Trying to load #2..}%
\IfFileExists{#1}
{\blx@info@noline{... file '#1' found}%
- #3\@@input\@filef@und#4#5%
+ \csuse{blx@lbxfilehook@simple@preload@#1}%
+ #3\@@input\@filef@und#4%
+ \csuse{blx@lbxfilehook@simple@postload@#1}%
+ #5%
\ifcsundef{blx@file@lbx@simple@#1}
{\listxadd\blx@list@req@stat{#1}%
\@addtofilelist{#1}%
\global\cslet{blx@file@lbx@simple@#1}\@empty}
{}}
- {\blx@info@noline{... file '#1' not found}#6}}
+ {\blx@info@noline{... file '#1' not found}%
+ \csuse{blx@lbxfilehook@simple@failure@#1}%
+ #6}}
% {<file>}{<message>}{<preload>}{<postload>}{<success>}{<failure>}
\protected\long\def\blx@lbx@input@handler@once#1#2#3#4#5#6{%
@@ -5576,12 +5514,17 @@
{\blx@info@noline{Trying to load #2..}%
\IfFileExists{#1}
{\blx@info@noline{... file '#1' found}%
- #3\@@input\@filef@und#4#5%
+ \csuse{blx@lbxfilehook@once@preload@#1}%
+ #3\@@input\@filef@und#4%
+ \csuse{blx@lbxfilehook@once@postload@#1}%
+ #5%
\ifcsundef{blx@file@lbx@simple@#1}
{\listxadd\blx@list@req@stat{#1}%
\@addtofilelist{#1}}
{}}
- {\blx@info@noline{... file '#1' not found}#6}%
+ {\blx@info@noline{... file '#1' not found}%
+ \csuse{blx@lbxfilehook@once@failure@#1}%
+ #6}%
\global\cslet{blx@file@lbx@once@#1}\@empty
\global\cslet{blx@file@lbx@simple@#1}\@empty}
{#5}}
@@ -5647,10 +5590,7 @@
{\edef\blx@languagename{#1}}
{\blx@warning
{Language '#1' not supported.\MessageBreak
- Using fallback language '\blx@languagename'}%
- \blx@lbxinput{\blx@languagename}
- {\blx@maplang{#1}{\blx@languagename}}
- {\blx@err@nolang{\blx@languagename}}}}
+ Using dummy definitions}}}
% auxiliary macros
@@ -5710,13 +5650,13 @@
{\iffieldsequal{#1minute}{#1endminute}
% 14:13:xx 14:13:xx
{\toggletrue{blx@seconds}%
- \printtext[#1time]{%
+ \printtext[{#1time}]{%
\csuse{mkbibtime24h}{#1hour}{#1minute}{#1second}{}%
\bibtimerangesep
\csuse{mkbibtime24h}{}{}{#1endsecond}{}}}
% 14:13:xx 14:14:xx
{\toggletrue{blx@seconds}%
- \printtext[#1time]{\csuse{mkbibtime24h}{#1hour}{#1minute}{}{}%
+ \printtext[{#1time}]{\csuse{mkbibtime24h}{#1hour}{#1minute}{}{}%
\bibtimerangesep
\csuse{mkbibtime24h}{}{#1endminute}{}{}}}}
% 14:xx:xx 15:xx:xx
@@ -5724,17 +5664,20 @@
% {<24h|24hcomp|12h>}{<datetype>}
\newrobustcmd*{\mktimerange}[2]{%
- \iffieldundef{#2hour}
- {\blx@nounit}
- {\blx@timepre{#2}{}%
- \printtext[#2time]{\csuse{mkbibtime#1}{#2hour}{#2minute}{#2second}{#2timezone}%
- \iffieldundef{#2endhour}
- {}
- {\blx@timepre{#2}{end}%
- \iffieldequalstr{#2endhour}{}
- {\mbox{\bibtimerangesep}}
- {\bibtimerangesep
- \csuse{mkbibtime#1}{#2endhour}{#2endminute}{#2endsecond}{#2endtimezone}}}}}}
+ \begingroup
+ \iffieldundef{#2hour}
+ {\blx@nounit}
+ {\blx@timepre{#2}{}%
+ \printtext[{#2time}]{%
+ \csuse{mkbibtime#1}{#2hour}{#2minute}{#2second}{#2timezone}%
+ \iffieldundef{#2endhour}
+ {}
+ {\blx@timepre{#2}{end}%
+ \iffieldequalstr{#2endhour}{}
+ {\mbox{\bibtimerangesep}}
+ {\bibtimerangesep
+ \csuse{mkbibtime#1}{#2endhour}{#2endminute}{#2endsecond}{#2endtimezone}}}}}%
+ \endgroup}
% {<datetype>}{''|end}
\newrobustcmd*{\blx@timepre}[2]{%
@@ -5744,24 +5687,27 @@
{\blx@imc@clearfield{#1#2second}}}
\newcommand*{\blx@if@printtime}[2]{%
- \ifboolexpr{%
- togl {blx@#1dateusetime}
- and
- not test {\iffieldundef{#1#2hour}}}}
+ \iftoggle{blx@#1dateusetime}
+ {\iffieldundef{#1#2hour}
+ {\@secondoftwo}
+ {\@firstoftwo}}
+ {\@secondoftwo}}
\newcommand*{\blx@if@printanytimes}[1]{%
- \ifboolexpr{
- togl {blx@#1dateusetime}
- and
- ( not test {\iffieldundef{#1hour}}
- or not test {\iffieldundef{#1endhour}})}}
+ \iftoggle{blx@#1dateusetime}
+ {\iffieldundef{#1hour}
+ {\iffieldundef{#1endhour}
+ {\@secondoftwo}
+ {\@firstoftwo}}
+ {\@firstoftwo}}
+ {\@secondoftwo}}
% {<datetype>}{'' | end}
\newrobustcmd*{\blx@printtime}[2]{%
\blx@if@printtime{#1}{#2}
{\blx@timepre{#1}{#2}%
- \printtext{\bibdatetimesep}%
- \printtext[#1time]{%
+ \bibdatetimesep%
+ \printtext[{#1time}]{%
\csuse{mkbibtime\csuse{blx@timeformat@#1time}}
{#1#2hour}{#1#2minute}{#1#2second}{#1#2timezone}}}
{}}
@@ -5772,7 +5718,7 @@
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
% Such a season component can only come from an ISO8601 season which replaces
% a normal month so if it exists, we know that a normal date print is ruled out
@@ -5803,7 +5749,7 @@
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
% Such a season component can only come from an ISO8601 season which replaces
% a normal month so if it exists, we know that a normal date print is ruled out
@@ -5818,18 +5764,17 @@
{\printfield{extradate}}
{\iffieldequalstr{#2endyear}{}
{\printfield{extradate}%
- \printtext{\mbox{\bibdaterangesep}}}
- {\printtext{%
- \bibdaterangesep
- \enddatecircaprint
- \iffieldundef{#2endseason}
- {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
- % Optionally print the time after the date
- \blx@printtime{#2}{end}}
- {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
- \printfield{extradate}%
- \enddateuncertainprint
- \dateeraprint{#2endyear}}}}}%
+ \mbox{\bibdaterangesep}}
+ {\bibdaterangesep
+ \enddatecircaprint
+ \iffieldundef{#2endseason}
+ {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+ % Optionally print the time after the date
+ \blx@printtime{#2}{end}}
+ {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+ \printfield{extradate}%
+ \enddateuncertainprint
+ \dateeraprint{#2endyear}}}}%
\endgroup}
\newrobustcmd*{\mkdaterangetrunc}[2]{%
@@ -5842,7 +5787,7 @@
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
% Such a season component can only come from an ISO8601 season which replaces
% a normal month so if it exists, we know that a normal date print is ruled out
@@ -5883,7 +5828,7 @@
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
% Such a season component can only come from an ISO8601 season which replaces
% a normal month so if it exists, we know that a normal date print is ruled out
@@ -5905,37 +5850,38 @@
{\printfield{extradate}}
{\iffieldequalstr{#2endyear}{}
{\printfield{extradate}%
- \printtext{\mbox{\bibdaterangesep}}}
- {\printtext{%
- \bibdaterangesep
- \enddatecircaprint
- \iffieldundef{#2endseason}
- {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
- {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
- \printfield{extradate}%
- \enddateuncertainprint
- \dateeraprint{#2endyear}}}}}%
+ \mbox{\bibdaterangesep}}
+ {\bibdaterangesep
+ \enddatecircaprint
+ \iffieldundef{#2endseason}
+ {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
+ {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+ \printfield{extradate}%
+ \enddateuncertainprint
+ \dateeraprint{#2endyear}}}}%
\endgroup}
\newrobustcmd*{\mkdaterangeyear}[1]{%
- \blx@imc@clearfield{#1season}%
- \blx@imc@clearfield{#1month}%
- \blx@imc@clearfield{#1day}%
- \blx@imc@clearfield{#1hour}%
- \blx@imc@clearfield{#1minute}%
- \blx@imc@clearfield{#1second}%
- \blx@imc@clearfield{#1timezone}%
- \blx@imc@clearfield{#1endseason}%
- \blx@imc@clearfield{#1endmonth}%
- \blx@imc@clearfield{#1endday}%
- \blx@imc@clearfield{#1endhour}%
- \blx@imc@clearfield{#1endminute}%
- \blx@imc@clearfield{#1endsecond}%
- \blx@imc@clearfield{#1endtimezone}%
- \ifdateyearsequal{#1}{#1end}
- {\blx@imc@clearfield{#1endyear}}
- {}%
- \mkdaterangefull{short}{#1}}
+ \begingroup
+ \blx@imc@clearfield{#1season}%
+ \blx@imc@clearfield{#1month}%
+ \blx@imc@clearfield{#1day}%
+ \blx@imc@clearfield{#1hour}%
+ \blx@imc@clearfield{#1minute}%
+ \blx@imc@clearfield{#1second}%
+ \blx@imc@clearfield{#1timezone}%
+ \blx@imc@clearfield{#1endseason}%
+ \blx@imc@clearfield{#1endmonth}%
+ \blx@imc@clearfield{#1endday}%
+ \blx@imc@clearfield{#1endhour}%
+ \blx@imc@clearfield{#1endminute}%
+ \blx@imc@clearfield{#1endsecond}%
+ \blx@imc@clearfield{#1endtimezone}%
+ \ifdateyearsequal{#1}{#1end}
+ {\blx@imc@clearfield{#1endyear}}
+ {}%
+ \mkdaterangefull{short}{#1}%
+ \endgroup}
% {<datetype>}
\newrobustcmd*{\mkdaterangeymd}[1]{%
@@ -5943,7 +5889,7 @@
\blx@metadateinfo{#1}%
\iffieldundef{#1year}
{\blx@nounit}
- {\printtext[#1date]{%
+ {\printtext[{#1date}]{%
\datecircaprint
% Such a season component can only come from an ISO8601 season which replaces
% a normal month so if it exists, we know that a normal date print is ruled out
@@ -5975,7 +5921,7 @@
\blx@metadateinfo{#1}%
\iffieldundef{#1year}
{\blx@nounit}
- {\printtext[#1date]{%
+ {\printtext[{#1date}]{%
\datecircaprint
% Such a season component can only come from an ISO8601 season which replaces
% a normal month so if it exists, we know that a normal date print is ruled out
@@ -5990,16 +5936,15 @@
{}
{\iffieldequalstr{#1endyear}{}
{\mbox{\bibdaterangesep}}
- {\printtext{%
- \bibdaterangesep
- \enddatecircaprint
- \iffieldundef{#1season}
- {\blx@ymddate{#1}{end}%
- % Optionally print the time after the date
- \blx@printtime{#1}{end}}
- {\csuse{mkbibseasondateshort}{#1endyear}{#1endseason}}}%
+ {\bibdaterangesep
+ \enddatecircaprint
+ \iffieldundef{#1season}
+ {\blx@ymddate{#1}{end}%
+ % Optionally print the time after the date
+ \blx@printtime{#1}{end}}
+ {\csuse{mkbibseasondateshort}{#1endyear}{#1endseason}}}%
\enddateuncertainprint
- \dateeraprint{#1endyear}}}}}%
+ \dateeraprint{#1endyear}}}}%
\endgroup}
% [extradate]{<datetype>}{''|end}
@@ -6010,24 +5955,26 @@
\iffieldundef{#2#3day}{}{\bibdatesep\mkdayzeros{\thefield{#2#3day}}}}
\newrobustcmd*{\mkdaterangeyearextra}[1]{%
- \blx@imc@clearfield{#1season}%
- \blx@imc@clearfield{#1month}%
- \blx@imc@clearfield{#1day}%
- \blx@imc@clearfield{#1hour}%
- \blx@imc@clearfield{#1minute}%
- \blx@imc@clearfield{#1second}%
- \blx@imc@clearfield{#1timezone}%
- \blx@imc@clearfield{#1endseason}%
- \blx@imc@clearfield{#1endmonth}%
- \blx@imc@clearfield{#1endday}%
- \blx@imc@clearfield{#1endhour}%
- \blx@imc@clearfield{#1endminute}%
- \blx@imc@clearfield{#1endsecond}%
- \blx@imc@clearfield{#1endtimezone}%
- \ifdateyearsequal{#1}{#1end}
- {\blx@imc@clearfield{#1endyear}}
- {}%
- \mkdaterangefullextra{short}{#1}}
+ \begingroup
+ \blx@imc@clearfield{#1season}%
+ \blx@imc@clearfield{#1month}%
+ \blx@imc@clearfield{#1day}%
+ \blx@imc@clearfield{#1hour}%
+ \blx@imc@clearfield{#1minute}%
+ \blx@imc@clearfield{#1second}%
+ \blx@imc@clearfield{#1timezone}%
+ \blx@imc@clearfield{#1endseason}%
+ \blx@imc@clearfield{#1endmonth}%
+ \blx@imc@clearfield{#1endday}%
+ \blx@imc@clearfield{#1endhour}%
+ \blx@imc@clearfield{#1endminute}%
+ \blx@imc@clearfield{#1endsecond}%
+ \blx@imc@clearfield{#1endtimezone}%
+ \ifdateyearsequal{#1}{#1end}
+ {\blx@imc@clearfield{#1endyear}}
+ {}%
+ \mkdaterangefullextra{short}{#1}%
+ \endgroup}
\newrobustcmd*{\mkdaterangeiso}[1]{%
\begingroup
@@ -6035,13 +5982,13 @@
\def\bibdatetimesep{T}%
\iffieldundef{#1year}
{\blx@nounit}
- {\printtext[#1date]{%
+ {\printtext[{#1date}]{%
\blx@isodate{#1}{}%
\ifboolexpr{%
togl {blx@#1dateusetime}
and
not test {\iffieldundef{#1hour}}}
- {\printtext{\bibdatetimesep}%
+ {\bibdatetimesep%
\blx@isotime{#1}{}}
{}%
\dateuncertainprint
@@ -6054,7 +6001,7 @@
togl {blx@#1dateusetime}
and
not test {\iffieldundef{#1endhour}}}
- {\printtext{\bibdatetimesep}%
+ {\bibdatetimesep%
\blx@isotime{#1}{end}}
{}%
\enddateuncertainprint
@@ -6067,13 +6014,13 @@
\def\bibdatetimesep{T}%
\iffieldundef{#1year}
{\blx@nounit}
- {\printtext[#1date]{%
+ {\printtext[{#1date}]{%
\blx@isodate[extradate]{#1}{}%
\ifboolexpr{%
togl {blx@#1dateusetime}
and
not test {\iffieldundef{#1hour}}}
- {\printtext{\bibdatetimesep}%
+ {\bibdatetimesep%
\blx@isotime{#1}{}}
{}%
\dateuncertainprint
@@ -6086,7 +6033,7 @@
togl {blx@#1dateusetime}
and
not test {\iffieldundef{#1endhour}}}
- {\printtext{\bibdatetimesep}%
+ {\bibdatetimesep%
\blx@isotime{#1}{end}}
{}%
\enddateuncertainprint
@@ -6194,13 +6141,17 @@
loaded, is faulty or does not contain a definition\MessageBreak
for \expandafter\string\csname mkbibtime24h\endcsname
}%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}
@@ -6226,7 +6177,7 @@
{\bibstring{pm}}%
\iffieldundef{#4}{}
{\space\bibtimezonesep
- \parentext{\mkbibtimezone{\thefield{#4}}}}}
+ \mkbibparens{\mkbibtimezone{\thefield{#4}}}}}
\newrobustcmd*{\mkbibseasondateshort}[2]{%
\blx@warning@noline{%
@@ -6353,28 +6304,65 @@
% User macro for retrieving currrent language
\def\currentlang{\blx@languagename}
+% We need to be able to prefix \providetoggle with \global,
+% plus we don't need the testing from \providetoggle anway.
+% This uses internal implementation details of etoolbox's
+% toggles, so is a bit meh, but it's better than rolling our own
+% version of toggles just for that.
+\newcommand*{\blx@etb@inittoggle}[1]{\cslet{etb@tgl@#1}\@secondoftwo}
+
+% There is no \nocaptions..., so if we send everything to \captions...
+% we need to find a way to call our noextras only in situations where
+% \noextras... is called to clean up \extras... AND \captions...
+% and not just \extras...
+% We detect this by setting a toggle in the \captions...
+
% {<language>}{<strings>}
\def\blx@maplang@babel#1#2{%
- \csgappto{extras#1}{%
- \blx@resetpunct
- \csuse{abx@extras@#2}%
- \csuse{abx@strings@#2}}%
- \csgappto{noextras#1}{%
- \blx@resetpunct
- \csuse{abx@noextras@#2}}}
+ \global\blx@etb@inittoggle{blx@lang@captions@#2}%
+ \ifdefstring{\blx@langhook}{captions}
+ {\csgappto{captions#1}{%
+ \toggletrue{blx@lang@captions@#2}%
+ \blx@resetpunct
+ \csuse{abx@extras@#2}%
+ \csuse{abx@strings@#2}}%
+ \csgappto{noextras#1}{%
+ \iftoggle{blx@lang@captions@#2}
+ {\blx@resetpunct
+ \csuse{abx@noextras@#2}}
+ {}}}
+ {\csgappto{extras#1}{%
+ \blx@resetpunct
+ \csuse{abx@extras@#2}%
+ \csuse{abx@strings@#2}}%
+ \csgappto{noextras#1}{%
+ \blx@resetpunct
+ \csuse{abx@noextras@#2}}}}
\def\blx@maplang@polyglossia#1#2{%
- \csgappto{blockextras@bbl@#1}{%
- \blx@resetpunct
- \csuse{abx@extras@#2}%
- \csuse{abx@strings@#2}}%
- \csgappto{inlinextras@bbl@#1}{%
- \blx@resetpunct
- \csuse{abx@extras@#2}%
- \csuse{abx@strings@#2}}%
- \csgappto{noextras@bbl@#1}{%
- \blx@resetpunct
- \csuse{abx@noextras@#2}}}
+ \global\blx@etb@inittoggle{blx@lang@captions@#2}%
+ \ifdefstring{\blx@langhook}{captions}
+ {\csgappto{captions@bbl@#1}{%
+ \toggletrue{blx@lang@captions@#2}%
+ \blx@resetpunct
+ \csuse{abx@extras@#2}%
+ \csuse{abx@strings@#2}}%
+ \csgappto{noextras@bbl@#1}{%
+ \iftoggle{blx@lang@captions@#2}
+ {\blx@resetpunct
+ \csuse{abx@noextras@#2}}
+ {}}}
+ {\csgappto{blockextras@bbl@#1}{%
+ \blx@resetpunct
+ \csuse{abx@extras@#2}%
+ \csuse{abx@strings@#2}}%
+ \csgappto{inlineextras@bbl@#1}{%
+ \blx@resetpunct
+ \csuse{abx@extras@#2}%
+ \csuse{abx@strings@#2}}%
+ \csgappto{noextras@bbl@#1}{%
+ \blx@resetpunct
+ \csuse{abx@noextras@#2}}}}
%% babel/polyglossia interface
\def\blx@beglang{\blx@clearlang\begingroup}
@@ -6398,53 +6386,61 @@
\lefthyphenmin#1\relax
\righthyphenmin#2\relax}
-\begingroup
-\@makeother\#
-\gdef\blx@mkautolangbabel{%
+
+
+\def\blx@mkautolangbabel{%
\ifundef\bbl@main@language
{\blx@error
{No default 'babel' language defined}
{You must define a default language for 'babel'}}
{\let\blx@main@language\bbl@main@language}%
- \pretocmd\select@language{\blx@langsetup{#1}}
- {\ifdef\blx@thelangenv
- {\def\blx@beglang{%
- \blx@clearlang
- \begingroup
- % Need to override all entries, regardless of if there is a langid
- % if language=<language> option is given
+ % use afterreset to get in a bit earlier
+ % we want to be there before \captions... is issued
+ % beforeextras is before extras, but captions come before extras
+ % afterreset was added in 3.9i (~2014-03-16)
+ % way before 3.9r (2016-04-23), which we require
+ \AddBabelHook{biblatex@langsetup}{afterreset}{%
+ \expandafter\blx@langsetup\expandafter{\languagename}}%
+ \ifdef\blx@thelangenv
+ {\def\blx@beglang{%
+ \blx@clearlang
+ \begingroup
+ % Need to override all entries, regardless of if there is a
+ % langid if language=<language> option is given
\ifboolexpr { test {\ifdef\abx@field@langid }
or
test {\ifdef\blx@forcelanguagename} }
- % override local langid if we forced it with
- % language=<language> option
- {\ifdef\blx@forcelanguagename
- {\let\abx@field@langid\blx@forcelanguagename}
- {}%
- \let\blx@languagename\abx@field@langid% track global language
- \blx@ifhyphenationundef{\abx@field@langid}
- {\blx@warn@nohyph{\abx@field@langid}}
- {\blx@hook@initlang
- \def\blx@endlang{%
- \blx@hook@endlang
- \csname end\blx@thelangenv\endcsname
- \endgroup}%
- \iftoggle{blx@autolangbib}
- {\let\blx@endlangbib\blx@endlang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@endlangcite\blx@endlang}
- {}%
- \csname\blx@thelangenv\expandafter\endcsname
- \expandafter{\abx@field@langid}}}
- {}}}
- {}%
- \def\blx@imc@mainlang{\select@language{\blx@main@language}}%
- \blx@langsetup\blx@main@language}
- {\blx@err@patch{'babel' package}%
- \blx@mknoautolang}}
+ % override local langid if we forced it with
+ % language=<language> option
+ {\ifdef\blx@forcelanguagename
+ {\let\abx@field@langid\blx@forcelanguagename}
+ {}%
+ \let\blx@languagename\abx@field@langid% track global language
+ \blx@ifhyphenationundef{\abx@field@langid}
+ {\blx@warn@nohyph{\abx@field@langid}}
+ {\blx@hook@initlang
+ \def\blx@endlang{%
+ \blx@hook@endlang
+ \csname end\blx@thelangenv\endcsname
+ \endgroup}%
+ \iftoggle{blx@autolangbib}
+ {\let\blx@endlangbib\blx@endlang}
+ {}%
+ \iftoggle{blx@autolangcite}
+ {\let\blx@endlangcite\blx@endlang}
+ {}%
+ \csname\blx@thelangenv\expandafter\endcsname
+ \expandafter{\abx@field@langid}}}
+ {}}}
+ {}%
+ \def\blx@imc@mainlang{%
+ \expandafter\selectlanguage\expandafter{\blx@main@language}}%
+ \expandafter\blx@langsetup\expandafter{\blx@main@language}%
+}
-\gdef\blx@mkautolangpoly{%
+\def\blx@beglang@spacefactors{\frenchspacing}
+
+\def\blx@mkautolangpoly{%
\ifundef\mainbabelname
{\ifundef\bbl@main@language
{\blx@error
@@ -6452,59 +6448,57 @@
{You must define a default language for 'polyglossia'}}
{\let\blx@main@language\bbl@main@language}}
{\let\blx@main@language\mainbabelname}%
- \edef\blx@saved@underscore@catcode{\the\catcode`\_}%
- \catcode`\_=11% polyglossia uses "_" as a letter
- \pretocmd\select@language{\blx@langsetup{\babelname}}
- {\ifdef\blx@thelangenv
- {\def\blx@beglang{%
- \blx@clearlang
- \begingroup
- % Need to override all entries, regardless of if there is a
- % langid if language=<language> option is given
- \ifboolexpr { test {\ifdef\abx@field@langid }
- or
- test {\ifdef\blx@forcelanguagename} }
- % override local langid if we forced it with
- % language=<language> option
- {\ifdef\blx@forcelanguagename
- {\let\abx@field@langid\blx@forcelanguagename}
- {}%
- \let\blx@languagename\abx@field@langid% track global language
- \blx@ifhyphenationundef{\abx@field@langid}
- {\blx@warn@nohyph{\abx@field@langid}}
- {\blx@hook@initlang
- \def\blx@endlang{%
- \blx@hook@endlang
- % Polyglossia language envs are \<lang>[]
- \ifcsstring{blx@thelangenv}{langname}
- {\csname end\abx@field@langid\endcsname}
- {\csname end\blx@thelangenv\endcsname}%
- \endgroup}%
- \iftoggle{blx@autolangbib}
- {\let\blx@endlangbib\blx@endlang}
- {}%
- \iftoggle{blx@autolangcite}
- {\let\blx@endlangcite\blx@endlang}
- {}%
+ \ifundef\polyglossia@language@switched
+ {\apptocmd\select@language
+ {\expandafter\blx@langsetup\expandafter{\babelname}}
+ {}
+ {\blx@err@patch{'polyglossia' package}%
+ \blx@mknoautolang}}
+ {\appto\polyglossia@language@switched{%
+ \expandafter\blx@langsetup\expandafter{\babelname}}}%
+ \ifdef\blx@thelangenv
+ {\def\blx@beglang{%
+ \blx@clearlang
+ \begingroup
+ % Need to override all entries, regardless of if there is a
+ % langid if language=<language> option is given
+ \ifboolexpr { test {\ifdef\abx@field@langid }
+ or
+ test {\ifdef\blx@forcelanguagename} }
+ % override local langid if we forced it with
+ % language=<language> option
+ {\ifdef\blx@forcelanguagename
+ {\let\abx@field@langid\blx@forcelanguagename}
+ {}%
+ \let\blx@languagename\abx@field@langid% track global language
+ \blx@ifhyphenationundef{\abx@field@langid}
+ {\blx@warn@nohyph{\abx@field@langid}}
+ {\blx@hook@initlang
+ \def\blx@endlang{%
+ \blx@hook@endlang
+ % Polyglossia language envs are \<lang>[]
\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}}%
- % These lines are equal to \blx@maplang
- \ifcsstring{blx@thelangenv}{hyphenrules}
- {}
- {\blx@resetpunct
- \csuse{abx@extras@\abx@field@langid}%
- \csuse{abx@strings@\abx@field@langid}}}}
- {}}}
+ {\csname end\abx@field@langid\endcsname}
+ {\csname end\blx@thelangenv\endcsname}%
+ \endgroup}%
+ \iftoggle{blx@autolangbib}
+ {\let\blx@endlangbib\blx@endlang}
+ {}%
+ \iftoggle{blx@autolangcite}
+ {\let\blx@endlangcite\blx@endlang}
+ {}%
+ \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}}%
+ \blx@beglang@spacefactors}}
+ {}}}
{}%
- \def\blx@imc@mainlang{\select@language{\blx@main@language}}%
- \blx@langsetup\blx@main@language}
- {\blx@err@patch{'polyglossia' package}%
- \blx@mknoautolang}%
- \catcode`\_=\blx@saved@underscore@catcode\relax}
-\endgroup
+ \def\blx@imc@mainlang{\select@language{\blx@main@language}}%
+ \expandafter\blx@langsetup\expandafter{\blx@main@language}}
\def\blx@mknoautolang{%
\blx@lbxinput{\blx@languagename}
@@ -6553,6 +6547,10 @@
% fields which can be used as labels - we auto-create some macros for these
\def\abx@dolabelfields{\dolistloop\blx@datamodel@labelfields}
+\def\abx@dolabelwidths{%
+ \do{labelnumber}%
+ \do{labelalpha}%
+ \abx@dolabelfields}
\def\abx@donames{\dolistloop\blx@datamodel@names}
\def\abx@donameparts{\expandafter\docsvlist\expandafter{\blx@datamodel@constant@nameparts}}
@@ -6682,19 +6680,19 @@
{\csuse{blx@defblxopt@#1opt}{#3}[]}}
\long\def\blx@defblxopt@globalopt#1[#2]#3{%
- \ifcsundef{KV@blx@opt@ldt@#1}
- {\ifcsundef{KV@blx@opt@pre@#1}
+ \blx@kv@ifkeyundef{blx@opt@ldt}{#1}
+ {\blx@kv@ifkeyundef{blx@opt@pre}{#1}
{\ifblank{#2}
- {\define@key{blx@opt@pre}{#1}{#3}}
- {\define@key{blx@opt@pre}{#1}[#2]{#3}}}
+ {\blx@kv@defkey{blx@opt@pre}{#1}{#3}}
+ {\blx@kv@defkey{blx@opt@pre}{#1}[{#2}]{#3}}}
{\blx@err@optdef{#1}{pre/global}}}
{\blx@err@optdef{#1}{ldt/global}}}
\long\def\blx@defblxopt@typeentryopt#1#2[#3]#4{%
- \ifcsundef{KV@blx@opt@#1@#2}
+ \blx@kv@ifkeyundef{blx@opt@#1}{#2}
{\ifblank{#3}
- {\define@key{blx@opt@#1}{#2}{#4}}
- {\define@key{blx@opt@#1}{#2}[#3]{#4}}}
+ {\blx@kv@defkey{blx@opt@#1}{#2}{#4}}
+ {\blx@kv@defkey{blx@opt@#1}{#2}[{#3}]{#4}}}
{\blx@err@optdef{#2}{#1}}}
\def\blx@defblxopt@typeopt{\blx@defblxopt@typeentryopt{typ}}
@@ -6715,10 +6713,10 @@
\forcsvlist{\listadd\blx@optscopes}{global,type,entry}
\long\def\blx@defblxopt@loopscopes@i#1[#2]#3#4{%
- \csuse{blx@defblxopt@#4opt}{#1}[#2]{#3}}
+ \csuse{blx@defblxopt@#4opt}{#1}[{#2}]{#3}}
\long\def\blx@defblxopt@loopscopes#1[#2]#3{%
- \forlistloop{\blx@defblxopt@loopscopes@i{#1}[#2]{#3}}{\blx@optscopes}}
+ \forlistloop{\blx@defblxopt@loopscopes@i{#1}[{#2}]{#3}}{\blx@optscopes}}
% {<option scopes>}[<datatype>]{<key>}[<default value>]{<code>}
\newrobustcmd*{\DeclareBiblatexOption}[1]{%
@@ -6792,6 +6790,8 @@
\gdef\blx@bcf@backendin@name@nametemplates{sortingnamekeytemplatename,%
uniquenametemplatename,labelalphanametemplatename}%
+
+
% Misc globalopts
\blx@DeclareBackendOption{global}[xml]{datamodel}
\blx@collectopts{string}{blx@globalopts}{controlversion}
@@ -7004,7 +7004,7 @@
{\blx@stripfromendinto{#1}{year}\blx@datetype}%
\csuse{if\blx@datetype\blx@tempa dateera}{bce}
{\ifnumless{0-\thefield{#1}}{0}
- {\printtext{\csuse{bibdateera\blx@tempa prefix}}}
+ {\csuse{bibdateera\blx@tempa prefix}}
{}}
{}%
\endgroup}
@@ -7020,10 +7020,10 @@
\csuse{if\blx@datetype\blx@tempa dateera}{bce}
{\ifnum\numexpr0-\thefield{#1}\relax<\blx@dateeraauto
% \midsentence is to suppress automatic capitalisation
- \printtext{\printdelim{dateeradelim}\midsentence\bibstring{\blx@dateera@bce}}\relax
+ \printdelim{dateeradelim}\midsentence\bibstring{\blx@dateera@bce}\relax
\fi}
{\ifnumless{\thefield{#1}}\blx@dateeraauto
- {\printtext{\printdelim{dateeradelim}\midsentence\bibstring{\blx@dateera@ce}}}
+ {\printdelim{dateeradelim}\midsentence\bibstring{\blx@dateera@ce}}
{}}%
\endgroup}
{}}}%
@@ -7160,10 +7160,8 @@
\def\do#1{\expandafter\newlength\expandafter{\csname #1width\endcsname}}
\abx@dolabelfields
-\newlength{\locallabelnumberwidth}
-\newlength{\locallabelalphawidth}
\def\do#1{\expandafter\newlength\expandafter{\csname local#1width\endcsname}}
-\abx@dolabelfields
+\abx@dolabelwidths
\protected\def\blx@resetdata{%
\let\blx@saved@do\do
@@ -7304,13 +7302,12 @@
\begingroup
\def\item{\MessageBreak-\space}%
\def\break{\MessageBreak\space\space}%
- \edef\blx@tempa{%
+ \blx@warning@noline{%
Biber reported the following issues%
\ifdef\abx@field@entrykey
{\MessageBreak with '\abx@field@entrykey'}
{}%
:#1}%
- \blx@warning@noline{\blx@tempa}%
\endgroup}
% {<field>}{<code>}
@@ -7860,6 +7857,7 @@
% {<entrykey>}
\protected\def\blx@bbl@xref#1{}% No-op to avoid an error with BibTeX .bbl
+\protected\def\blx@bbl@fakeset#1{}% No-op to avoid an error with BibTeX .bbl
% {<keyword>,...}
\protected\def\blx@bbl@keyw#1{%
@@ -7869,23 +7867,46 @@
\def\blx@addkeyword#1#2{%
\listcsxadd{blx@keyw@\the\c@refsection @\detokenize{#2}}{#1}}
+\newcommand*{\blx@ifcatcode@other}[1]{%
+ \ifnumequal{\catcode\number`#1}{12}}
+
% {<options>}
\protected\long\def\blx@bbl@options#1{%
- \begingroup
+ \ifblank{#1}
+ {}
+ {\begingroup
+ \blx@ifcatcode@other{,}
+ {\blx@ifcatcode@other{=}}
+ {\@secondoftwo}
+ {\blx@bbl@options@check{#1}}
+ {\ifundef\blx@bbl@options@warncatcode
+ {\blx@warning@noline{%
+ Irregular catcode regime detected.\MessageBreak
+ Attempting to work around this with \string\scantokens}%
+ \global\let\blx@bbl@options@warncatcode\@empty}
+ {}%
+ \makeatletter
+ \@makeother\=
+ \@makeother\'
+ \endlinechar\m@ne
+ \scantokens\expandafter{\blx@bbl@options@check{#1}}}}}
+
+\long\def\blx@bbl@options@check#1{%
\let\blx@tempa\@empty
- \forcsvlist\blx@bbl@options@i{#1}%
+ \forcsvlist\blx@bbl@options@checkopt{#1}%
\edef\blx@tempa{%
- \endgroup
+ \endgroup % this group was opened in \blx@bbl@options
\ifx\blx@tempa\@empty
\else
\def\noexpand\abx@field@options{\expandonce\blx@tempa}%
\fi}%
\blx@tempa}
-\long\def\blx@bbl@options@i#1{\blx@bbl@options@ii#1==&}
-\long\def\blx@bbl@options@ii#1=#2=#3&{%
- \ifcsundef{KV@blx@opt@ent@#1}
+\long\def\blx@bbl@options@checkopt#1{\blx@bbl@options@checkopt@i#1==&}
+
+\long\def\blx@bbl@options@checkopt@i#1=#2=#3&{%
+ \blx@kv@ifkeyundef{blx@opt@ent}{#1}
{\blx@warning@noline{%
Ignoring undefined option '#1'\MessageBreak
at entry '\abx@field@entrykey'}}
@@ -7971,107 +7992,43 @@
% in which case we only set labelyear.
{\ifcsundef{abx@field@\abx@field@labeldatesource}
% \DeclareLabeldate resolved to a literal/localisation string
- {\edef\abx@field@labelyear{\abx@field@labeldatesource}}
+ {\let\abx@field@labelyear\abx@field@labeldatesource}
% \DeclareLabeldate resolved to a non-date field. Not safe to \edef because
- % such contents could contain arbitrary macros, unlike ETDF sourced labeldatesource values
+ % such contents could contain arbitrary macros, unlike EDTF sourced labeldatesource values
{\letcs\abx@field@labelyear{abx@field@\abx@field@labeldatesource}}}
% \DeclareLabeldate resolved to a date field name prefix like '', 'event', 'url'
% or 'orig'
{% labeldateera/labelenddateera
- \ifcsdef{abx@field@\abx@field@labeldatesource dateera}
- {\edef\abx@field@labeldateera{\csuse{abx@field@\abx@field@labeldatesource dateera}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource enddateera}
- {\edef\abx@field@labelenddateera{\csuse{abx@field@\abx@field@labeldatesource enddateera}}}
- {}%
- % labelyear/labelendyear
- \ifcsdef{abx@field@\abx@field@labeldatesource year}
- {\edef\abx@field@labelyear{\csuse{abx@field@\abx@field@labeldatesource year}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endyear}
- {\edef\abx@field@labelendyear{\csuse{abx@field@\abx@field@labeldatesource endyear}}}
- {}%
- % labelmonth
- \ifcsdef{abx@field@\abx@field@labeldatesource month}
- {\edef\abx@field@labelmonth{\csuse{abx@field@\abx@field@labeldatesource month}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endmonth}
- {\edef\abx@field@labelendmonth{\csuse{abx@field@\abx@field@labeldatesource endmonth}}}
- {}%
- % labelday/labelendday
- \ifcsdef{abx@field@\abx@field@labeldatesource day}
- {\edef\abx@field@labelday{\csuse{abx@field@\abx@field@labeldatesource day}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endday}
- {\edef\abx@field@labelendday{\csuse{abx@field@\abx@field@labeldatesource endday}}}
- {}%
- % labelhour/labelendhour
- \ifcsdef{abx@field@\abx@field@labeldatesource hour}
- {\edef\abx@field@labelhour{\csuse{abx@field@\abx@field@labeldatesource hour}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endhour}
- {\edef\abx@field@labelendhour{\csuse{abx@field@\abx@field@labeldatesource endhour}}}
- {}%
- % labelminute/labelendminute
- \ifcsdef{abx@field@\abx@field@labeldatesource minute}
- {\edef\abx@field@labelminute{\csuse{abx@field@\abx@field@labeldatesource minute}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endminute}
- {\edef\abx@field@labelendminute{\csuse{abx@field@\abx@field@labeldatesource endminute}}}
- {}%
- % labelsecond/labelendsecond
- \ifcsdef{abx@field@\abx@field@labeldatesource second}
- {\edef\abx@field@labelsecond{\csuse{abx@field@\abx@field@labeldatesource second}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endsecond}
- {\edef\abx@field@labelendsecond{\csuse{abx@field@\abx@field@labeldatesource endsecond}}}
- {}%
- % labeltimezone/labelendtimezone
- \ifcsdef{abx@field@\abx@field@labeldatesource timezone}
- {\edef\abx@field@labeltimezone{\csuse{abx@field@\abx@field@labeldatesource timezone}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endtimezone}
- {\edef\abx@field@labelendtimezone{\csuse{abx@field@\abx@field@labeldatesource endtimezone}}}
- {}%
- % labelseason/labelendseason
- \ifcsdef{abx@field@\abx@field@labeldatesource season}
- {\edef\abx@field@labelseason{\csuse{abx@field@\abx@field@labeldatesource season}}}
- {}%
- \ifcsdef{abx@field@\abx@field@labeldatesource endseason}
- {\edef\abx@field@labelendseason{\csuse{abx@field@\abx@field@labeldatesource endseason}}}
- {}%
- % labeldateunspecified
- \ifcsdef{abx@field@\abx@field@labeldatesource dateunspecified}
- {\csletcs{abx@field@labeldateunspecified}{abx@field@\abx@field@labeldatesource dateunspecified}}
- {}%
- % labeldatecirca/labelenddatecirca
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource datecirca}
- {\csletcs{etb@tgl@abx@bool@labeldatecirca}{etb@tgl@abx@bool@\abx@field@labeldatesource datecirca}}
- {}%
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource enddatecirca}
- {\csletcs{etb@tgl@abx@bool@labelenddatecirca}{etb@tgl@abx@bool@\abx@field@labeldatesource enddatecirca}}
- {}%
- % labeldatejulian/labelenddatejulian
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource datejulian}
- {\csletcs{etb@tgl@abx@bool@labeldatejulian}{etb@tgl@abx@bool@\abx@field@labeldatesource datejulian}}
- {}%
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource enddatejulian}
- {\csletcs{etb@tgl@abx@bool@labelenddatejulian}{etb@tgl@abx@bool@\abx@field@labeldatesource enddatejulian}}
- {}%
- % labeldateuncertain/labelenddateuncertain
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource dateuncertain}
- {\csletcs{etb@tgl@abx@bool@labeldateuncertain}{etb@tgl@abx@bool@\abx@field@labeldatesource dateuncertain}}
- {}%
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource enddateuncertain}
- {\csletcs{etb@tgl@abx@bool@labelenddateuncertain}{etb@tgl@abx@bool@\abx@field@labeldatesource enddateuncertain}}
- {}%
- % labeldateunknown/labelenddateunknown
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource dateunknown}
- {\csletcs{etb@tgl@abx@bool@labeldateunknown}{etb@tgl@abx@bool@\abx@field@labeldatesource dateunknown}}
- {}%
- \ifcsdef{etb@tgl@abx@bool@\abx@field@labeldatesource enddateunknown}
- {\csletcs{etb@tgl@abx@bool@labelenddateunknown}{etb@tgl@abx@bool@\abx@field@labeldatesource enddateunknown}}
- {}}}}
+ \letcs\abx@field@labeldateera{abx@field@\abx@field@labeldatesource dateera}%
+ \letcs\abx@field@labelenddateera{abx@field@\abx@field@labeldatesource enddateera}%
+ \letcs\abx@field@labelyear{abx@field@\abx@field@labeldatesource year}%
+ \letcs\abx@field@labelendyear{abx@field@\abx@field@labeldatesource endyear}%
+ \letcs\abx@field@labelmonth{abx@field@\abx@field@labeldatesource month}%
+ \letcs\abx@field@labelendmonth{abx@field@\abx@field@labeldatesource endmonth}%
+ \letcs\abx@field@labelday{abx@field@\abx@field@labeldatesource day}%
+ \letcs\abx@field@labelendday{abx@field@\abx@field@labeldatesource endday}%
+ \letcs\abx@field@labelhour{abx@field@\abx@field@labeldatesource hour}%
+ \letcs\abx@field@labelendhour{abx@field@\abx@field@labeldatesource endhour}%
+ \letcs\abx@field@labelminute{abx@field@\abx@field@labeldatesource minute}%
+ \letcs\abx@field@labelendminute{abx@field@\abx@field@labeldatesource endminute}%
+ \letcs\abx@field@labelsecond{abx@field@\abx@field@labeldatesource second}%
+ \letcs\abx@field@labelendsecond{abx@field@\abx@field@labeldatesource endsecond}%
+ \letcs\abx@field@labeltimezone{abx@field@\abx@field@labeldatesource timezone}%
+ \letcs\abx@field@labelendtimezone{abx@field@\abx@field@labeldatesource endtimezone}%
+ \letcs\abx@field@labelseason{abx@field@\abx@field@labeldatesource season}%
+ \letcs\abx@field@labelendseason{abx@field@\abx@field@labeldatesource endseason}%
+ \letcs\abx@field@labeldateunspecified{abx@field@\abx@field@labeldatesource dateunspecified}%
+ \letcs\etb@tgl@abx@bool@labeldatecirca{etb@tgl@abx@bool@\abx@field@labeldatesource datecirca}%
+ \letcs\etb@tgl@abx@bool@labelenddatecirca{etb@tgl@abx@bool@\abx@field@labeldatesource enddatecirca}%
+ \letcs\etb@tgl@abx@bool@labeldatejulian{etb@tgl@abx@bool@\abx@field@labeldatesource datejulian}%
+ \letcs\etb@tgl@abx@bool@labelenddatejulian{etb@tgl@abx@bool@\abx@field@labeldatesource enddatejulian}%
+ \letcs\etb@tgl@abx@bool@labeldateuncertain{etb@tgl@abx@bool@\abx@field@labeldatesource dateuncertain}%
+ \letcs\etb@tgl@abx@bool@labelenddateuncertain{etb@tgl@abx@bool@\abx@field@labeldatesource enddateuncertain}%
+ \letcs\etb@tgl@abx@bool@labeldateunknown{etb@tgl@abx@bool@\abx@field@labeldatesource dateunknown}%
+ \letcs\etb@tgl@abx@bool@labelenddateunknown{etb@tgl@abx@bool@\abx@field@labeldatesource enddateunknown}%
+ }%
+ }%
+}
% This gets the entry data for a citation
\def\blx@getdata@cite#1{%
@@ -8080,26 +8037,35 @@
\ifcsdef{blx@setc@\the\c@refsection @#1}
{\blx@ifdata{#1}
{\def\abx@field@childentrykey{#1}%LEGACY(<3.8)
- \edef\abx@field@childentrytype{\abx@field@entrytype}%LEGACY(<3.8)
+ \let\abx@field@childentrytype\abx@field@entrytype %LEGACY(<3.8)
\begingroup
- \expandafter\expandafter\expandafter\blx@getdata\expandafter\expandafter\expandafter{%
- \csname blx@setc@\the\c@refsection @#1\endcsname}%
+ \expandafter\expandafter\expandafter\blx@getdata
+ \expandafter\expandafter\expandafter{%
+ \csname blx@setc@\the\c@refsection @#1\endcsname}%
\let\blx@tempa\@empty
% Inject labelnumber if it exists
\ifdef\abx@field@labelnumber
- {\appto\blx@tempa{\def\noexpand\abx@field@labelnumber{\abx@field@labelnumber}}}
+ {\appto\blx@tempa{%
+ \def\noexpand\abx@field@labelnumber{%
+ \expandonce\abx@field@labelnumber}}}
{}%
% Inject labelprefix if it exists
\ifdef\abx@field@labelprefix
- {\appto\blx@tempa{\def\noexpand\abx@field@labelprefix{\abx@field@labelprefix}}}
+ {\appto\blx@tempa{%
+ \def\noexpand\abx@field@labelprefix{%
+ \expandonce\abx@field@labelprefix}}}
{}%
% Inject labelalpha if it exists
\ifdef\abx@field@labelalpha
- {\appto\blx@tempa{\def\noexpand\abx@field@labelalpha{\abx@field@labelalpha}}}
+ {\appto\blx@tempa{%
+ \def\noexpand\abx@field@labelalpha{%
+ \expandonce\abx@field@labelalpha}}}
{}%
% Inject extraalpha if it exists
\ifdef\abx@field@extraalpha
- {\appto\blx@tempa{\def\noexpand\abx@field@extraalpha{\abx@field@extraalpha}}}
+ {\appto\blx@tempa{%
+ \def\noexpand\abx@field@extraalpha{%
+ \expandonce\abx@field@extraalpha}}}
{}%
% Perform the injection
\edef\blx@tempb{\endgroup\blx@tempa}%
@@ -8118,7 +8084,7 @@
{}
{\begingroup
\edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@ent}{\abx@field@options}}%
+ \noexpand\blx@kv@setkeys{blx@opt@ent}{\abx@field@options}}%
\blx@tempa
\blx@checkoptions@entry}}
@@ -8126,7 +8092,7 @@
\ifcsdef{blx@opts@type@#1}
{\begingroup
\edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}%
+ \noexpand\blx@kv@setkeys{blx@opt@typ}{\csuse{blx@opts@type@#1}}}%
\blx@tempa}
{}}
@@ -8172,7 +8138,7 @@
% for internal use but we always want the aliases themselves in the .bcf
% so that biber can correctly use and resolve them too.
\protected\def\blx@bbl@keyalias#1#2{%
- \csgdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}%
+ \csxdef{blx@keyalias@\the\c@refsection @#1}{\detokenize{#2}}%
\listcsgadd{blx@keyaliases@\the\c@refsection}{#1}}
% blx@dlist@list@<section>@<refcontext> - a list of list items in a refcontext in a
@@ -8284,27 +8250,50 @@
\blx@getformat\abx@tmp@theformat{ffd}{#2}{#3}%
\csletcs{#1}{abx@tmp@theformat}}
+
+% {<instance (int)>}{<field>}{<length>}
+\def\abx@aux@locallabelwidth#1#2#3{%
+ \csgdef{blx@locallabelwidth@#1@#2}{#3}}
+
+\def\blx@locallabelwidth@write@length#1{%
+ \ifdimequal{\csname local#1width\endcsname}{0pt}
+ {}
+ {\blx@auxwrite\@mainaux{}
+ {\string\abx@aux@locallabelwidth
+ {\the\blx@biblioinstance}%
+ {#1}%
+ {\the\csname local#1width\endcsname}}}}
+
+\def\blx@locallabelwidth@write{%
+ \let\do\blx@locallabelwidth@write@length
+ \abx@dolabelwidths}
+
+\let\blx@locallabelwidth@finish\relax
+
\def\blx@labelwidth@resetlocal{%
- \locallabelnumberwidth\z@
- \locallabelalphawidth\z@
\def\do##1{%
\csname local##1width\endcsname\z@}%
- \abx@dolabelfields}
+ \abx@dolabelwidths}
+
+\def\blx@labelwidth@settolocal@length#1{%
+ \ifcsundef{blx@locallabelwidth@\the\blx@biblioinstance @#1}
+ {}
+ {\csname #1width\endcsname
+ \csname blx@locallabelwidth@\the\blx@biblioinstance @#1\endcsname
+ \space}}
\def\blx@labelwidth@settolocal{%
- \labelnumberwidth\locallabelnumberwidth
- \labelalphawidth\locallabelalphawidth
- \def\do##1{%
- \csname ##1width\endcsname\csname local##1width\endcsname}%
- \abx@dolabelfields}
+ \let\do\blx@labelwidth@settolocal@length
+ \abx@dolabelwidths}
-\def\blx@locallabelwidth#1{%
+\def\blx@locallabelwidth@setlengths{%
+ \global\advance\blx@biblioinstance\@ne
\blx@labelwidth@resetlocal
- \let\blx@do\blx@lengthitem
- \let\blx@done\relax
- \blx@listloop{#1}%
\blx@labelwidth@settolocal}
+\let\blx@locallabelwidth@init\relax
+
+
% {<prefix for labelwidth fields>}
\def\blx@bbl@labelnumberwidth@numeric#1{%
\abx@flfw@getfieldformat{abx@flfw@labelnumberwidth}{labelnumberwidth}{}%
@@ -8491,6 +8480,7 @@
\let\enddatalist\blx@bbl@enddlist
\let\set\blx@bbl@set
\let\inset\blx@bbl@inset
+ \let\fakeset\blx@bbl@fakeset % A No-op for Biber
\let\xref\blx@bbl@xref % A No-op for Biber
\let\keyw\blx@bbl@keyw
\let\name\blx@bbl@namedef
@@ -8565,15 +8555,22 @@
\begingroup
\def\do#1{\ifinlist{#1}\blx@cites{}{\blx@logreq@active{}}\relax}%
\dolistloop\blx@lastcites
- % Special case - if we are using sortingtemplate "none" anywhere, then changes
- % in citation order matter and we need to re-run biber. So a special test
- % to see if the cites from last run are identical in order. We have
- % already tested for more or less cites between runs by now, we are
+ % Special case - if we are using sortingtemplate with \citeorder anywhere,
+ % then changes in citation order matter and we need to re-run biber.
+ % So a special test to see if the cites from last run are identical in order.
+ % We have already tested for more or less cites between runs by now, we are
% testing here for exactly the same cites by treating the cite and
% lastcite lists as strings and comparing them. This doesn't apply
% to biblist sortingtemplates as nobody wants to sort biblists with
% "none", since it makes no sense
- \ifinlist{none}\blx@sortingtemplatenames
+ \togglefalse{blx@tempa}%
+ \def\do#1{%
+ \ifcsundef{blx@sortingtemplate@citeorder@relevant@#1}
+ {}
+ {\toggletrue{blx@tempa}%
+ \listbreak}}%
+ \dolistloop\blx@sortingtemplatenames
+ \iftoggle{blx@tempa}
{\ifdefstrequal{\blx@cites}{\blx@lastcites}
{}
{\blx@logreq@active{}}}
@@ -8603,6 +8600,11 @@
{\def\do#1{\blx@auxwrite\@mainaux{}{#1}}
\dolistloop\blx@localnumaux}}
{}%
+ % Wite md5 hash of .bbl to .aux if we need a Biber rerun.
+ % This needs to happen here and not in \blx@check@rerun together with
+ % the other rerun stuff, because \AfterEndBibliography would be too
+ % late for .aux file writing.
+ \blx@aux@write@bbl@mdfivesum
\endgroup}
% {<instcount>}{<entrykey>}{<refsection>}{<refcontext>}{<labelnumber>}
@@ -8682,8 +8684,8 @@
\appto\blx@tempa{{##1}}%
\advance\blx@tempcnta\@ne}%
\dolistcsloop{blx@pref@\the\c@refsection @#1}%
- \edef\blx@tempa{\endgroup\noexpand\blx@bbl@listdef
- {pageref}{\the\blx@tempcnta}{\expandonce{\blx@tempa}}}%
+ \edef\blx@tempa{\endgroup
+ \noexpand\blx@bbl@listdef{pageref}{\the\blx@tempcnta}{\expandonce{\blx@tempa}}}%
\blx@tempa}
%% Data input
@@ -8701,12 +8703,18 @@
\blx@ifsigned{\jobname}{bbl}
{\InputIfFileExists{\jobname.bbl}
{\blx@info@noline{... file '\jobname.bbl' found}%
- \global\toggletrue{blx@bbldone}}
+ \global\toggletrue{blx@bbldone}%
+ \blx@generate@bbl@mdfivesum@found}
{\blx@info@noline{... file '\jobname.bbl' not found}%
- \typeout{No file \jobname.bbl.}}}
- {}%
+ \typeout{No file \jobname.bbl.}%
+ % 'nobblfile' can never be equal to any mdfivehash
+ \blx@generate@bbl@mdfivesum@notfound}}
+ {\blx@generate@bbl@mdfivesum@notfound}%
\blx@bblend
\endgroup
+ % Check if Biber rerun was not carried out.
+ % If so, ask for it again.
+ \blx@check@bbl@rerun@mdfivesum
% global sorting as this is called at BeginDocument
\csnumgdef{blx@labelnumber@\the\c@refsection}{0}}
@@ -8749,7 +8757,7 @@
\def\blx@defbibheading#1[#2]{%
\csundef{#1}%
- \expandafter\newcommand\csname#1\endcsname[1][#2]}
+ \expandafter\newcommand\csname#1\endcsname[1][{#2}]}
% {<name>}{<text>}
\newrobustcmd*{\defbibnote}[1]{%
@@ -8823,76 +8831,76 @@
% We need a 2-pass structure for options in \printbibliography and
% \printbiblist because the section has to be set before any
% other options and this partly determines which list to use for later filtering
-\define@key{blx@bib1}{segment}{}
-\define@key{blx@bib1}{type}{}
-\define@key{blx@bib1}{nottype}{}
-\define@key{blx@bib1}{subtype}{}
-\define@key{blx@bib1}{notsubtype}{}
-\define@key{blx@bib1}{keyword}{}
-\define@key{blx@bib1}{notkeyword}{}
-\define@key{blx@bib1}{category}{}
-\define@key{blx@bib1}{notcategory}{}
-\define@key{blx@bib1}{filter}{}
-\define@key{blx@bib1}{check}{}
-\define@key{blx@bib1}{heading}{}
-\define@key{blx@bib1}{env}{}
-\define@key{blx@bib1}{title}{}
-\define@key{blx@bib1}{prenote}{}
-\define@key{blx@bib1}{postnote}{}
-\define@key{blx@bib1}{omitnumbers}[]{}
+\blx@kv@defkey{blx@bib1}{segment}{}
+\blx@kv@defkey{blx@bib1}{type}{}
+\blx@kv@defkey{blx@bib1}{nottype}{}
+\blx@kv@defkey{blx@bib1}{subtype}{}
+\blx@kv@defkey{blx@bib1}{notsubtype}{}
+\blx@kv@defkey{blx@bib1}{keyword}{}
+\blx@kv@defkey{blx@bib1}{notkeyword}{}
+\blx@kv@defkey{blx@bib1}{category}{}
+\blx@kv@defkey{blx@bib1}{notcategory}{}
+\blx@kv@defkey{blx@bib1}{filter}{}
+\blx@kv@defkey{blx@bib1}{check}{}
+\blx@kv@defkey{blx@bib1}{heading}{}
+\blx@kv@defkey{blx@bib1}{env}{}
+\blx@kv@defkey{blx@bib1}{title}{}
+\blx@kv@defkey{blx@bib1}{prenote}{}
+\blx@kv@defkey{blx@bib1}{postnote}{}
+\blx@kv@defkey{blx@bib1}{omitnumbers}[]{}
% Here we are using the first pass to see if there is an explicit setting for resetnumbers
% If there isn't we will use the default behaviour where if there is a labelprefix,
% resetnumbers will default to "true"
-\define@key{blx@bib1}{resetnumbers}[true]{%
+\blx@kv@defkey{blx@bib1}{resetnumbers}[true]{%
\toggletrue{blx@resetnumsexplicit}}
-\define@key{blx@bib2}{section}{}
-\define@key{blx@bib2}{sorting}{}
-
-\define@key{blx@biblist1}{segment}{}
-\define@key{blx@biblist1}{type}{}
-\define@key{blx@biblist1}{nottype}{}
-\define@key{blx@biblist1}{subtype}{}
-\define@key{blx@biblist1}{notsubtype}{}
-\define@key{blx@biblist1}{keyword}{}
-\define@key{blx@biblist1}{notkeyword}{}
-\define@key{blx@biblist1}{category}{}
-\define@key{blx@biblist1}{notcategory}{}
-\define@key{blx@biblist1}{filter}{}
-\define@key{blx@biblist1}{check}{}
-\define@key{blx@biblist1}{heading}{}
-\define@key{blx@biblist1}{env}{}
-\define@key{blx@biblist1}{title}{}
-\define@key{blx@biblist1}{prenote}{}
-\define@key{blx@biblist1}{postnote}{}
-
-\define@key{blx@biblist2}{section}{}
-\define@key{blx@biblist2}{sorting}{}
-
-\define@key{blx@bib1}{section}{%
+\blx@kv@defkey{blx@bib2}{section}{}
+\blx@kv@defkey{blx@bib2}{sorting}{}
+
+\blx@kv@defkey{blx@biblist1}{segment}{}
+\blx@kv@defkey{blx@biblist1}{type}{}
+\blx@kv@defkey{blx@biblist1}{nottype}{}
+\blx@kv@defkey{blx@biblist1}{subtype}{}
+\blx@kv@defkey{blx@biblist1}{notsubtype}{}
+\blx@kv@defkey{blx@biblist1}{keyword}{}
+\blx@kv@defkey{blx@biblist1}{notkeyword}{}
+\blx@kv@defkey{blx@biblist1}{category}{}
+\blx@kv@defkey{blx@biblist1}{notcategory}{}
+\blx@kv@defkey{blx@biblist1}{filter}{}
+\blx@kv@defkey{blx@biblist1}{check}{}
+\blx@kv@defkey{blx@biblist1}{heading}{}
+\blx@kv@defkey{blx@biblist1}{env}{}
+\blx@kv@defkey{blx@biblist1}{title}{}
+\blx@kv@defkey{blx@biblist1}{prenote}{}
+\blx@kv@defkey{blx@biblist1}{postnote}{}
+
+\blx@kv@defkey{blx@biblist2}{section}{}
+\blx@kv@defkey{blx@biblist2}{sorting}{}
+
+\blx@kv@defkey{blx@bib1}{section}{%
\ifcsundef{blx@sections@#1}
{\blx@err@nosec{#1}}
{\c@refsection#1\relax
\def\blx@tempe{#1}}}
-\define@key{blx@biblist1}{section}{%
+\blx@kv@defkey{blx@biblist1}{section}{%
\ifcsundef{blx@sections@#1}
{\blx@err@nosec{#1}}
{\c@refsection#1\relax
\def\blx@tempe{#1}}}
-\define@key{blx@bbg}{section}{%
+\blx@kv@defkey{blx@bbg}{section}{%
\ifcsundef{blx@sections@#1}
{\blx@err@nosec{#1}}
{\c@refsection#1\relax}}
-\define@key{blx@bbc}{section}{%
+\blx@kv@defkey{blx@bbc}{section}{%
\ifcsundef{blx@sections@#1}
{\blx@err@nosec{#1}}
{\c@refsection#1\relax}}
-\define@key{blx@bib2}{segment}{\blx@key@segment{#1}}
-\define@key{blx@biblist2}{segment}{\blx@key@segment{#1}}
+\blx@kv@defkey{blx@bib2}{segment}{\blx@key@segment{#1}}
+\blx@kv@defkey{blx@biblist2}{segment}{\blx@key@segment{#1}}
\def\blx@key@segment#1{%
\ifcsundef{blx@segm@\the\c@refsection @#1}
@@ -8901,8 +8909,8 @@
\blx@printbibchecks
\blx@filter\blx@tempa{blx@segm@\the\c@refsection @#1}}}
-\define@key{blx@bib2}{type}{\blx@key@type{#1}}
-\define@key{blx@biblist2}{type}{\blx@key@type{#1}}
+\blx@kv@defkey{blx@bib2}{type}{\blx@key@type{#1}}
+\blx@kv@defkey{blx@biblist2}{type}{\blx@key@type{#1}}
\def\blx@key@type#1{%
\ifcsundef{blx@type@\the\c@refsection @#1}
@@ -8920,8 +8928,8 @@
hence some options may not be used twice.\MessageBreak
Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
-\define@key{blx@bib2}{nottype}{\blx@key@nottype{#1}}
-\define@key{blx@biblist2}{nottype}{\blx@key@nottype{#1}}
+\blx@kv@defkey{blx@bib2}{nottype}{\blx@key@nottype{#1}}
+\blx@kv@defkey{blx@biblist2}{nottype}{\blx@key@nottype{#1}}
\def\blx@key@nottype#1{%
\ifcsundef{blx@type@\the\c@refsection @#1}
@@ -8929,8 +8937,8 @@
{\blx@printbibchecks
\blx@notfilter\blx@tempa{blx@type@\the\c@refsection @#1}}}
-\define@key{blx@bib2}{subtype}{\blx@key@subtype{#1}}
-\define@key{blx@biblist2}{subtype}{\blx@key@subtype{#1}}
+\blx@kv@defkey{blx@bib2}{subtype}{\blx@key@subtype{#1}}
+\blx@kv@defkey{blx@biblist2}{subtype}{\blx@key@subtype{#1}}
\def\blx@key@subtype#1{%
\ifcsundef{blx@subt@\the\c@refsection @#1}
@@ -8948,8 +8956,8 @@
hence some options may not be used twice.\MessageBreak
Use 'filter' and '\string\defbibfilter' with OR conjunctions}}}}
-\define@key{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}}
-\define@key{blx@biblist2}{notsubtype}{\blx@key@notsubtype{#1}}
+\blx@kv@defkey{blx@bib2}{notsubtype}{\blx@key@notsubtype{#1}}
+\blx@kv@defkey{blx@biblist2}{notsubtype}{\blx@key@notsubtype{#1}}
\def\blx@key@notsubtype#1{%
\ifcsundef{blx@subt@\the\c@refsection @#1}
@@ -8957,8 +8965,8 @@
{\blx@printbibchecks
\blx@notfilter\blx@tempa{blx@subt@\the\c@refsection @#1}}}
-\define@key{blx@bib2}{keyword}{\blx@key@keyword{#1}}
-\define@key{blx@biblist2}{keyword}{\blx@key@keyword{#1}}
+\blx@kv@defkey{blx@bib2}{keyword}{\blx@key@keyword{#1}}
+\blx@kv@defkey{blx@biblist2}{keyword}{\blx@key@keyword{#1}}
\def\blx@key@keyword#1{%
\ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
@@ -8967,8 +8975,8 @@
{\blx@printbibchecks
\blx@filter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
-\define@key{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}}
-\define@key{blx@biblist2}{notkeyword}{\blx@key@notkeyword{#1}}
+\blx@kv@defkey{blx@bib2}{notkeyword}{\blx@key@notkeyword{#1}}
+\blx@kv@defkey{blx@biblist2}{notkeyword}{\blx@key@notkeyword{#1}}
\def\blx@key@notkeyword#1{%
\ifcsundef{blx@keyw@\the\c@refsection @\detokenize{#1}}
@@ -8976,8 +8984,8 @@
{\blx@printbibchecks
\blx@notfilter\blx@tempa{blx@keyw@\the\c@refsection @\detokenize{#1}}}}
-\define@key{blx@bib2}{category}{\blx@key@category{#1}}
-\define@key{blx@biblist2}{category}{\blx@key@category{#1}}
+\blx@kv@defkey{blx@bib2}{category}{\blx@key@category{#1}}
+\blx@kv@defkey{blx@biblist2}{category}{\blx@key@category{#1}}
\def\blx@key@category#1{%
\ifcsundef{blx@catg@\detokenize{#1}}
@@ -8986,8 +8994,8 @@
{\blx@printbibchecks
\blx@filter\blx@tempa{blx@catg@\detokenize{#1}}}}
-\define@key{blx@bib2}{notcategory}{\blx@key@notcategory{#1}}
-\define@key{blx@biblist2}{notcategory}{\blx@key@notcategory{#1}}
+\blx@kv@defkey{blx@bib2}{notcategory}{\blx@key@notcategory{#1}}
+\blx@kv@defkey{blx@biblist2}{notcategory}{\blx@key@notcategory{#1}}
\def\blx@key@notcategory#1{%
\ifcsundef{blx@catg@#1}
@@ -8995,8 +9003,8 @@
{\blx@printbibchecks
\blx@notfilter\blx@tempa{blx@catg@#1}}}
-\define@key{blx@bib2}{filter}{\blx@key@filter{#1}}
-\define@key{blx@biblist2}{filter}{\blx@key@filter{#1}}
+\blx@kv@defkey{blx@bib2}{filter}{\blx@key@filter{#1}}
+\blx@kv@defkey{blx@biblist2}{filter}{\blx@key@filter{#1}}
\def\blx@key@filter#1{%
\ifcsdef{blx@filter@#1}
@@ -9008,8 +9016,8 @@
{The filter '#1' could not be found.\MessageBreak
Use \string\defbibfilter\space to define it}}}
-\define@key{blx@bib2}{check}{\blx@key@bibcheck{#1}}
-\define@key{blx@biblist2}{check}{\blx@key@bibcheck{#1}}
+\blx@kv@defkey{blx@bib2}{check}{\blx@key@bibcheck{#1}}
+\blx@kv@defkey{blx@biblist2}{check}{\blx@key@bibcheck{#1}}
% empty bibcheck does nothing
\cslet{blx@bibcheck@}\relax
@@ -9023,17 +9031,17 @@
Use \string\defbibcheck\space to define it}}}
\def\blx@default@theheading{bibliography}
-\define@key{blx@bibdefaults}{heading}{%
+\blx@kv@defkey{blx@bibdefaults}{heading}{%
\blx@key@heading{\blx@default@theheading}{#1}}
-\define@key{blx@bhd}{heading}{%
+\blx@kv@defkey{blx@bhd}{heading}{%
\blx@key@heading{\blx@theheading}{#1}}
-\define@key{blx@bib2}{heading}{%
+\blx@kv@defkey{blx@bib2}{heading}{%
\blx@key@heading{\blx@theheading}{#1}}
-\define@key{blx@biblist2}{heading}{%
+\blx@kv@defkey{blx@biblist2}{heading}{%
\blx@key@heading{\blx@theheading}{#1}}
-\define@key{blx@bbs}{heading}{%
+\blx@kv@defkey{blx@bbs}{heading}{%
\blx@key@heading{\blx@theheading}{#1}}
-\define@key{blx@bbg}{heading}{%
+\blx@kv@defkey{blx@bbg}{heading}{%
\blx@key@heading{\blx@theheading}{#1}}
\def\blx@key@heading#1#2{%
@@ -9045,13 +9053,13 @@
{\def#1{#2}}}
\def\blx@default@theenv{bibliography}
-\define@key{blx@bibdefaults}{env}{%
+\blx@kv@defkey{blx@bibdefaults}{env}{%
\blx@key@env{\blx@default@theenv}{#1}}
-\define@key{blx@bib2}{env}{\blx@key@env{\blx@theenv}{#1}}
-\define@key{blx@biblist2}{env}{\blx@key@env{\blx@theenv}{#1}}
-\define@key{blx@bbs}{env}{\blx@key@env{\blx@theenv}{#1}}
-\define@key{blx@bbg}{env}{\blx@key@env{\blx@theenv}{#1}}
-\define@key{blx@bbc}{env}{\blx@key@env{\blx@theenv}{#1}}
+\blx@kv@defkey{blx@bib2}{env}{\blx@key@env{\blx@theenv}{#1}}
+\blx@kv@defkey{blx@biblist2}{env}{\blx@key@env{\blx@theenv}{#1}}
+\blx@kv@defkey{blx@bbs}{env}{\blx@key@env{\blx@theenv}{#1}}
+\blx@kv@defkey{blx@bbg}{env}{\blx@key@env{\blx@theenv}{#1}}
+\blx@kv@defkey{blx@bbc}{env}{\blx@key@env{\blx@theenv}{#1}}
\def\blx@key@env#1#2{%
\ifcsundef{blx@env@#2}
@@ -9062,11 +9070,11 @@
{\def#1{#2}}}
\let\blx@default@thetitle\@empty
-\define@key{blx@bibdefaults}{title}{%
+\blx@kv@defkey{blx@bibdefaults}{title}{%
\def\blx@default@thetitle{#1}}
-\define@key{blx@bhd}{title}{\def\blx@thetitle{#1}}
-\define@key{blx@bib2}{title}{\def\blx@thetitle{#1}}
-\define@key{blx@biblist2}{title}{\def\blx@thetitle{#1}}
+\blx@kv@defkey{blx@bhd}{title}{\def\blx@thetitle{#1}}
+\blx@kv@defkey{blx@bib2}{title}{\def\blx@thetitle{#1}}
+\blx@kv@defkey{blx@biblist2}{title}{\def\blx@thetitle{#1}}
\cslet{blx@note@}\@empty
\def\blx@key@bibnote#1#2{%
@@ -9078,49 +9086,51 @@
{\def#1{#2}}}
\let\blx@default@theprenote\@empty
-\define@key{blx@bibdefaults}{prenote}{%
+\blx@kv@defkey{blx@bibdefaults}{prenote}{%
\blx@key@bibnote{\blx@default@theprenote}{#1}}
-\define@key{blx@bib2}{prenote}{%
+\blx@kv@defkey{blx@bib2}{prenote}{%
\blx@key@bibnote{\blx@theprenote}{#1}}
-\define@key{blx@biblist2}{prenote}{%
+\blx@kv@defkey{blx@biblist2}{prenote}{%
\blx@key@bibnote{\blx@theprenote}{#1}}
-\define@key{blx@bbs}{prenote}{%
+\blx@kv@defkey{blx@bbs}{prenote}{%
\blx@key@bibnote{\blx@theprenote}{#1}}
-\define@key{blx@bbg}{prenote}{%
+\blx@kv@defkey{blx@bbg}{prenote}{%
\blx@key@bibnote{\blx@theprenote}{#1}}
-\define@key{blx@bbc}{prenote}{%
+\blx@kv@defkey{blx@bbc}{prenote}{%
\blx@key@bibnote{\blx@theprenote}{#1}}
\let\blx@default@thepostnote\@empty
-\define@key{blx@bibdefaults}{postnote}{%
+\blx@kv@defkey{blx@bibdefaults}{postnote}{%
\blx@key@bibnote{\blx@default@thepostnote}{#1}}
-\define@key{blx@bib2}{postnote}{%
+\blx@kv@defkey{blx@bib2}{postnote}{%
\blx@key@bibnote{\blx@thepostnote}{#1}}
-\define@key{blx@biblist2}{postnote}{%
+\blx@kv@defkey{blx@biblist2}{postnote}{%
\blx@key@bibnote{\blx@thepostnote}{#1}}
-\define@key{blx@bbs}{postnote}{%
+\blx@kv@defkey{blx@bbs}{postnote}{%
\blx@key@bibnote{\blx@thepostnote}{#1}}
-\define@key{blx@bbg}{postnote}{%
+\blx@kv@defkey{blx@bbg}{postnote}{%
\blx@key@bibnote{\blx@thepostnote}{#1}}
-\define@key{blx@bbc}{postnote}{%
+\blx@kv@defkey{blx@bbc}{postnote}{%
\blx@key@bibnote{\blx@thepostnote}{#1}}
-\let\abx@default@locallabelwidth\@gobble
-\define@key{blx@bibdefaults}{locallabelwidth}{%
- \blx@key@locallabelwidth{\abx@default@locallabelwidth}{#1}}
-\define@key{blx@bib1}{locallabelwidth}[]{}
-\define@key{blx@biblist1}{locallabelwidth}[]{}
-\define@key{blx@bib2}{locallabelwidth}[true]{%
- \blx@key@locallabelwidth{\abx@locallabelwidth}{#1}}
-\define@key{blx@biblist2}{locallabelwidth}[true]{%
- \blx@key@locallabelwidth{\abx@locallabelwidth}{#1}}
-
-\def\blx@key@locallabelwidth#1#2{%
- \ifstrequal{#2}{true}
- {\def#1{\blx@locallabelwidth}}
- {\let#1\@gobble}}
-
-\define@key{blx@bib2}{resetnumbers}[true]{%
+
+\blx@kv@defkey{blx@bibdefaults}{locallabelwidth}{%
+ \blx@key@locallabelwidth{#1}}
+\blx@kv@defkey{blx@bib1}{locallabelwidth}[]{}
+\blx@kv@defkey{blx@biblist1}{locallabelwidth}[]{}
+\blx@kv@defkey{blx@bib2}{locallabelwidth}[true]{%
+ \blx@key@locallabelwidth{#1}}
+\blx@kv@defkey{blx@biblist2}{locallabelwidth}[true]{%
+ \blx@key@locallabelwidth{#1}}
+
+\def\blx@key@locallabelwidth#1{%
+ \ifstrequal{#1}{true}
+ {\let\blx@locallabelwidth@init\blx@locallabelwidth@setlengths
+ \let\blx@locallabelwidth@finish\blx@locallabelwidth@write}
+ {\let\blx@locallabelwidth@init\relax
+ \let\blx@locallabelwidth@finish\relax}}
+
+\blx@kv@defkey{blx@bib2}{resetnumbers}[true]{%
\iftoggle{blx@defernumbers}
{\ifstrequal{#1}{true}
{\csnumdef{blx@labelnumber@\the\c@refsection}{0}}
@@ -9131,7 +9141,7 @@
Option 'resetnumbers' requires 'defernumbers=true'.\MessageBreak
Ignoring 'resetnumbers=true'}}}
-\define@key{blx@bib2}{omitnumbers}[true]{%
+\blx@kv@defkey{blx@bib2}{omitnumbers}[true]{%
\ifstrequal{#1}{true}
{\iftoggle{blx@defernumbers}
{\toggletrue{blx@omitnumbers}}
@@ -9142,7 +9152,7 @@
\newrobustcmd*{\DeclarePrintbibliographyDefaults}{%
- \setkeys{blx@bibdefaults}}
+ \blx@kv@setkeys{blx@bibdefaults}}
% [<options>]
\newrobustcmd*{\printbibheading}{%
@@ -9156,7 +9166,7 @@
\let\blx@theheading\blx@default@theheading
\let\blx@thetitle\blx@default@thetitle
\blx@safe@actives
- \setkeys{blx@bhd}{#1}%
+ \blx@kv@setkeys{blx@bhd}{#1}%
\blx@rest@actives
\blx@bibheading\blx@theheading\blx@thetitle
\endgroup}
@@ -9188,7 +9198,7 @@
\edef\blx@tempe{\the\c@refsection}% default refsection is current
\blx@safe@actives
\togglefalse{blx@resetnumsexplicit}%
- \setkeys{blx@bib1}{#1}% First pass options keys - section and resetnumbers
+ \blx@kv@setkeys{blx@bib1}{#1}% First pass options keys - section and resetnumbers
% Is there a user-specified option for resetnumbers? If so, this overrides the default
% "labelprefix implies resetnumbers" behaviour
\iftoggle{blx@resetnumsexplicit}
@@ -9197,7 +9207,7 @@
{\ifdefempty\blx@refcontext@labelprefix@real}
{\@secondoftwo}
{}
- {\setkeys{blx@bib2}{resetnumbers}}}%
+ {\blx@kv@setkeys{blx@bib2}{resetnumbers}}}%
\blx@rest@actives
\ifcsvoid{blx@dlist@entry@\blx@tempe @\blx@refcontext@context}
{}
@@ -9207,7 +9217,7 @@
% \printbibliography following one with this set will inherit any
% previous "true" value
\togglefalse{blx@omitnumbers}%
- \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options
+ \blx@kv@setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa, set rest of options
\blx@rest@actives
% Add datalist to list of seen datalists to prevent duplicates
\xifinlist{\blx@refcontext@context @\blx@tempe @entry}\blx@dlistnames
@@ -9239,7 +9249,7 @@
\let\blx@thetitle\blx@default@thetitle
\c@refsection\z@
\blx@safe@actives
- \setkeys{blx@bbs}{#1}%
+ \blx@kv@setkeys{blx@bbs}{#1}%
\blx@rest@actives
\togglefalse{blx@tempa}%
\blx@refsections}
@@ -9278,7 +9288,7 @@
\let\blx@thetitle\blx@default@thetitle
\c@refsegment\@ne
\blx@safe@actives
- \setkeys{blx@bbg}{#1}%
+ \blx@kv@setkeys{blx@bbg}{#1}%
\blx@rest@actives
\togglefalse{blx@tempa}%
\blx@refsegments}
@@ -9322,7 +9332,7 @@
\let\blx@thetitle\blx@default@thetitle
\c@refsection\z@
\blx@safe@actives
- \setkeys{blx@bbc}{#1}%
+ \blx@kv@setkeys{blx@bbc}{#1}%
\blx@rest@actives
\togglefalse{blx@tempa}%
\forlistloop\blx@bibcategory\blx@categories
@@ -9346,7 +9356,7 @@
\endgroup}
% {<entrykey>,...}
-\def\blx@bibliography#1{%
+\def\blx@bibliography{%
\blx@bibheading\blx@theheading\blx@thetitle
\blx@bibnote\blx@theprenote
\begingroup
@@ -9359,17 +9369,18 @@
\ifnum\bibnamesep=\z@
\let\blx@namesep\relax
\fi
- \abx@locallabelwidth{#1}%
+ \blx@locallabelwidth@init
\csuse{blx@env@\blx@theenv}%
\csuse{blx@hook@bibinit}%
\csuse{blx@hook@bibinit@next}%
\let\blx@do\blx@bibitem
\let\blx@done\blx@endbibliography
- \blx@listloop{#1}}
+ \blx@listloop}
\def\blx@endbibliography{%
\csuse{blx@endenv@\blx@theenv}%
\blx@noitem
+ \blx@locallabelwidth@finish
\endgroup
\blx@bibnote\blx@thepostnote
\endgroup}
@@ -9385,7 +9396,7 @@
\let\newrefsegment\relax
\ifblank{#2}
{\csuse{blx@head@#1}}
- {\csuse{blx@head@#1}[#2]}%
+ {\csuse{blx@head@#1}[{#2}]}%
\let\newrefsection\blx@newrefsection
\let\newrefsegment\blx@newrefsegment}
@@ -9411,25 +9422,6 @@
\csuse{blx@bibsetup}}
% {<entrykey>}
-\def\blx@lengthitem#1{%
- \blx@ifdata{#1}
- {\begingroup
- \blx@getdata{#1}%
- \blx@bibcheck
- \iftoggle{blx@skipentry}{}{%
- \iftoggle{blx@labelnumber}
- {\blx@bbl@locallabelnumberwidth}
- {}%
- \iftoggle{blx@labelalpha}
- {\blx@bbl@locallabelalphawidth}
- {}%
- \nottoggle{blx@skipbiblist}
- {\blx@bbl@locallabelfields}
- {}}%
- \endgroup}
- {}}
-
-% {<entrykey>}
% output a bib item, this is why \blx@thelabelnumber is here so that
% labelnumber is deferred if defernumbers=true
\def\blx@bibitem#1{%
@@ -9444,6 +9436,15 @@
\blx@setoptions@entry
\blx@thelabelnumber
\addtocounter{instcount}\@ne
+ \iftoggle{blx@labelnumber}
+ {\blx@bbl@locallabelnumberwidth}
+ {}%
+ \iftoggle{blx@labelalpha}
+ {\blx@bbl@locallabelalphawidth}
+ {}%
+ \nottoggle{blx@skipbiblist}
+ {\blx@bbl@locallabelfields}
+ {}%
\csuse{blx@item@\blx@theenv}\relax
\blx@initsep
\blx@namesep
@@ -9605,14 +9606,14 @@
\appto\blx@mknohyperref{\let\blx@anchor\relax}
-\define@key{blx@biblist2}{driver}{\blx@key@driver{#1}}
-\define@key{blx@biblist1}{driver}{}
+\blx@kv@defkey{blx@biblist2}{driver}{\blx@key@driver{#1}}
+\blx@kv@defkey{blx@biblist1}{driver}{}
\def\blx@key@driver#1{%
\def\blx@thebiblistdriver{#1}}
% Custom bibliography list
-% [<otions>]{biblistname}
+% [<options>]{biblistname}
\newrobustcmd*{\printbiblist}[2][]{%
\begingroup
\delimcontext{biblist}%
@@ -9635,12 +9636,15 @@
\ifcsdef{blx@sortingtemplate@#2}
{#2}
{\blx@refcontext@sortingtemplatename}}%
- % locally define this since we want to fetch data from the datalist named
- % after the list we are printing rather than the data in refcontext list
- % Note that the name must be unique so we prepend "#2:" because the combination of
- % options might not generate a unique name since sortschemename has a fallback to the
- % refcontext scheme if there is no sortscheme named after the list
- \blx@edef@refcontext{#2:\blx@tempc/%
+ % locally define this since we want to fetch data from the datalist
+ % name after the list we are printing rather than the data in
+ % refcontext list.
+ % Note that the name must be unique so we prepend any filter name
+ % because the combination of options might not generate a unique name
+ % since sortschemename has a fallback to the refcontext scheme if there
+ % is no sortscheme named after the list
+ \blx@kv@setkeys{blx@biblist1}{#1}% Set section and biblistfilter only, if present ...
+ \blx@edef@refcontext{\blx@thebiblistfilter :\blx@tempc/%
\blx@refcontext@sortingnamekeytemplatename/%
\blx@refcontext@labelprefix/%
\blx@refcontext@uniquenametemplatename/%
@@ -9658,13 +9662,12 @@
{}
{\listxadd\blx@biblists\blx@tempc}%
\blx@auxwrite\@mainaux{}{\string\abx@aux@biblist{\blx@tempc}}%
- \setkeys{blx@biblist1}{#1}% Set section only, if present ...
\blx@rest@actives
\ifcsvoid{blx@dlist@list@\blx@tempe @\blx@refcontext@context}
{}
{\letcs\blx@tempa{blx@dlist@list@\blx@tempe @\blx@refcontext@context}}%
\blx@safe@actives
- \setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options
+ \blx@kv@setkeys{blx@biblist2}{#1}% ... now we have correct \blx@tempa, set rest of options
\ifundef\blx@bibcheck
{\ifcsdef{blx@bibcheck@#2}
{\letcs\blx@bibcheck{blx@bibcheck@#2}}
@@ -9686,11 +9689,21 @@
\iftoggle{blx@defernumbers}
{\global\let\blx@printbibchecks\relax}
{\iftoggle{blx@labelnumber}
- {}
+ {\ifundef\blx@printbibchecks@suppresswarn
+ {\blx@warning@noline{%
+ Split bibliography detected.\MessageBreak
+ Many simple split bibliography setups with\MessageBreak
+ non-overlapping bibliographies benefit from%
+ \MessageBreak
+ setting 'defernumbers=true'.\MessageBreak
+ See the documentation for details.\MessageBreak
+ This warning can be suppressed with\MessageBreak
+ '\string\BiblatexSplitbibDefernumbersWarningOff'}}
+ {}}
{\global\let\blx@printbibchecks\relax}}}
% {<entrykey>,...}
-\def\blx@biblist#1{%
+\def\blx@biblist{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
@@ -9702,16 +9715,17 @@
\blx@bibinit
\let\@noitemerr\@empty
\def\blx@noitem{\blx@warn@biblistempty{\blx@thebiblist}}%
- \abx@locallabelwidth{#1}%
+ \blx@locallabelwidth@init
\csuse{blx@env@\blx@theenv}%
\csuse{blx@hook@biblistinit@\blx@thebiblist}%
\let\blx@do\blx@biblistitem
\let\blx@done\blx@endbiblist
- \blx@listloop{#1}}
+ \blx@listloop}
\def\blx@endbiblist{%
\csuse{blx@endenv@\blx@theenv}%
\blx@noitem
+ \blx@locallabelwidth@finish
\endgroup
\blx@bibnote\blx@thepostnote
\endgroup
@@ -9735,6 +9749,15 @@
\blx@setoptions@type\abx@field@entrytype
\blx@setoptions@entry
\addtocounter{instcount}\@ne
+ \iftoggle{blx@labelnumber}
+ {\blx@bbl@locallabelnumberwidth}
+ {}%
+ \iftoggle{blx@labelalpha}
+ {\blx@bbl@locallabelalphawidth}
+ {}%
+ \nottoggle{blx@skipbiblist}
+ {\blx@bbl@locallabelfields}
+ {}%
\csuse{blx@item@\blx@theenv}\relax
\csuse{blx@hook@biblistitem@\blx@thebiblist}%
\blx@execute
@@ -9772,8 +9795,8 @@
\def\refcontext@i[#1]{%
\@ifnextchar\bgroup
- {\refcontext@ii[#1]}
- {\refcontext@ii[#1]{}}}
+ {\refcontext@ii[{#1}]}
+ {\refcontext@ii[{#1}]{}}}
\newcommand*{\refcontext@ii}[2][]{%
\iftoggle{blx@refcontext}
@@ -9783,11 +9806,12 @@
% Set refcontext from named refcontext, if given
\ifblank{#2}
{}
- {\edef\z{%
- \noexpand\setkeys{blx@refcontext}{\csuse{blx@refcontext@name@#2}}}%
- \z}%
+ {\begingroup
+ \edef\blx@tempa{\endgroup%
+ \noexpand\blx@kv@setkeys{blx@refcontext}{\csuse{blx@refcontext@name@#2}}}%
+ \blx@tempa}%
% Override with explicit refcontext keyvals, if given
- \setkeys{blx@refcontext}{#1}%
+ \blx@kv@setkeys{blx@refcontext}{#1}%
% Add the sortingtemplate to the list of sortingtemplates so we can track
% special cases like sorting=none which need cite order change detection
\xifinlist\blx@refcontext@sortingtemplatename\blx@sortingtemplatenames
@@ -9834,15 +9858,15 @@
\blx@refcontext@labelalphanametemplatename}}
% Meta option to set all name template options
-\define@key{blx@refcontext}{nametemplates}{%
+\blx@kv@defkey{blx@refcontext}{nametemplates}{%
\gdef\blx@refcontext@sortingnamekeytemplatename{#1}%
\gdef\blx@refcontext@uniquenametemplatename{#1}%
\gdef\blx@refcontext@labelalphanametemplatename{#1}}
-\define@key{blx@refcontext}{sorting}{\gdef\blx@refcontext@sortingtemplatename{#1}}
-\define@key{blx@refcontext}{sortingnamekeytemplatename}{\gdef\blx@refcontext@sortingnamekeytemplatename{#1}}
-\define@key{blx@refcontext}{uniquenametemplatename}{\gdef\blx@refcontext@uniquenametemplatename{#1}}
-\define@key{blx@refcontext}{labelalphanametemplatename}{\gdef\blx@refcontext@labelalphanametemplatename{#1}}
+\blx@kv@defkey{blx@refcontext}{sorting}{\gdef\blx@refcontext@sortingtemplatename{#1}}
+\blx@kv@defkey{blx@refcontext}{sortingnamekeytemplatename}{\gdef\blx@refcontext@sortingnamekeytemplatename{#1}}
+\blx@kv@defkey{blx@refcontext}{uniquenametemplatename}{\gdef\blx@refcontext@uniquenametemplatename{#1}}
+\blx@kv@defkey{blx@refcontext}{labelalphanametemplatename}{\gdef\blx@refcontext@labelalphanametemplatename{#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,
@@ -9850,7 +9874,7 @@
% But that is not enough since the MD5 hash function expands the argument all
% the way and so unexpandable content like \dag breaks.
% Unexpandable content should be protected with \detokenize.
-\define@key{blx@refcontext}{labelprefix}{%
+\blx@kv@defkey{blx@refcontext}{labelprefix}{%
\xdef\blx@refcontext@labelprefix{\blx@mdfivesum{#1}}%
\gdef\blx@refcontext@labelprefix@real{#1}%
\iftoggle{blx@defernumbers}
@@ -9873,7 +9897,7 @@
\let\blx@tempc\@empty%
\def\blx@tempd{global}%
\def\blx@tempe{global}%
- \setkeys{blx@assignrefcontext}{#2}%
+ \blx@kv@setkeys{blx@assignrefcontext}{#2}%
\def\do##1{%
\listxadd\blx@assignedrefcontextkeywlist{##1}%
\csxdef{blx@assignedrefcontextkeyws#1@\the\c@refsection @##1}%
@@ -9892,7 +9916,7 @@
\let\blx@tempc\@empty%
\def\blx@tempd{global}%
\def\blx@tempe{global}%
- \setkeys{blx@assignrefcontext}{#2}%
+ \blx@kv@setkeys{blx@assignrefcontext}{#2}%
\def\do##1{%
\listxadd\blx@assignedrefcontextcatlist{##1}%
\csxdef{blx@assignedrefcontextcats#1@\the\c@refsection @##1}%
@@ -9911,24 +9935,24 @@
\let\blx@tempc\@empty%
\def\blx@tempd{global}%
\def\blx@tempe{global}%
- \setkeys{blx@assignrefcontext}{#2}%
+ \blx@kv@setkeys{blx@assignrefcontext}{#2}%
\def\do##1{%
\csxdef{blx@assignedrefcontextkeys#1@\the\c@refsection @##1}%
{\blx@tempa/\blx@tempb/\blx@tempc/\blx@tempd/\blx@tempe}}%
\docsvlist{#3}}
% Meta option to set all name template options
-\define@key{blx@assignrefcontext}{nametemplates}{%
+\blx@kv@defkey{blx@assignrefcontext}{nametemplates}{%
\def\blx@tempb{#1}%
\def\blx@tempd{#1}%
\def\blx@tempe{#1}}
-\define@key{blx@assignrefcontext}{sorting}{\def\blx@tempa{#1}}
-\define@key{blx@assignrefcontext}{sortingnamekeytemplatename}{\def\blx@tempb{#1}}
-\define@key{blx@assignrefcontext}{labelprefix}{%
+\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}}}
-\define@key{blx@assignrefcontext}{uniquenametemplatename}{\def\blx@tempd{#1}}
-\define@key{blx@assignrefcontext}{labelalphanametemplatename}{\def\blx@tempe{#1}}
+\blx@kv@defkey{blx@assignrefcontext}{uniquenametemplatename}{\def\blx@tempd{#1}}
+\blx@kv@defkey{blx@assignrefcontext}{labelalphanametemplatename}{\def\blx@tempe{#1}}
% Reference sections
\newrobustcmd*{\newrefsection}{%
@@ -10043,6 +10067,11 @@
\AtEndDocument{%
\endrefcontext
+ % close non-0 refsection if active
+ \ifnum\c@refsection>\z@
+ \blx@endrefsection
+ \fi
+ % close refsection 0
\blx@endrefsection
\def\abx@aux@refsection#1#2{\blx@addchecksum{#1}{#2}}}
@@ -10144,20 +10173,27 @@
%% that we can use for that purpose as well.
%% This is fairly new, so we need to have a fallback for older versions.
-%% The standard classes are tricky. They have no good hooks and just
-%% for sections at least \pretocmd-ing executes the code before
-%% counters are increased, so the labels attach to the wrong thing.
+%% The standard classes are tricky.
+%% We insert something in \@startsection to get the level number
+%% and then patch \@sect and \@ssect so the label attaches to the
+%% right thing.
%% Test for correct KOMA patch method
% KOMA 3.27 has \AddtoDoHook
\newcommand*{\blx@ifkoma@AddtoDoHook}{%
- \ifboolexpr{not test {\ifcsundef{KOMAClassName}}
- and not test {\ifcsundef{AddtoDoHook}}}}
+ \ifcsundef{KOMAClassName}
+ {\@secondoftwo}
+ {\ifcsundef{AddtoDoHook}
+ {\@secondoftwo}
+ {\@firstoftwo}}}
% KOMA 3.26 has \startsection@secnumdepth for some testing
\newcommand*{\blx@ifkoma@startsection}{%
- \ifboolexpr{not test {\ifcsundef{KOMAClassName}}
- and not test {\ifcsundef{startsection@secnumdepth}}}}
+ \ifcsundef{KOMAClassName}
+ {\@secondoftwo}
+ {\ifcsundef{startsection@secnumdepth}
+ {\@secondoftwo}
+ {\@firstoftwo}}}
\newcommand*{\blx@ifmemoir}{\@ifclassloaded{memoir}}
@@ -10202,7 +10238,12 @@
\apptocmd\memchapinfo{#1}
{}{\blx@err@patch{\string\memchapinfo}}%
\apptocmd\memchapstarinfo{#1}
- {}{\blx@err@patch{\string\memchapstarinfo}}}
+ {}{\blx@err@patch{\string\memchapstarinfo}}%
+ \apptocmd\memappchapinfo{#1}
+ {}{\blx@err@patch{\string\memappchapinfo}}%
+ \apptocmd\memappchapstarinfo{#1}
+ {}{\blx@err@patch{\string\memappchapstarinfo}}%
+}
\def\blx@refpatch@chapter@std#1{%
\pretocmd\@makechapterhead{#1}
@@ -10222,7 +10263,7 @@
{\blx@refpatch@chapter@std{#1}}}}}
% \section, \subsection
-% {<section csname>}{<precode>}{<section level number>}
+% {<section csname>}{<patch code>}{<section level number>}
\def\blx@refpatch@sect#1#2#3{%
\ifcsundef{#1}
{\blx@err@nodocdiv{#1}\@gobbletwo}
@@ -10241,6 +10282,8 @@
\def\blx@refpatch@sect@koma@startsection#1#2{%
\At@startsection{\ifnumequal{\startsection@secnumdepth}{#2}{#1}{}}}
+% The memoir classes have a nice hook we can use
+% {<section csname>}{<patch code>}
\edef\blx@refpatch@sect@memoir#1#2{%
\apptocmd\noexpand\memsecinfo
{\noexpand\blx@refpatch@sect@memoir@i{\string#1}{#1}{#2}}
@@ -10252,31 +10295,94 @@
\def\blx@refpatch@sect@memoir@i#1#2#3{%
\ifstrequal{#1}{#2}{#3}{}}
-\edef\blx@refpatch@sect@std#1#2{%
+% The standard classes have \@startsection, \@sect and \@ssect.
+% \@startsection is used by unstarred and starred sections alike
+% but it comes in too early if we set labels.
+% The counter is only stepped in \@sect, so we need to patch
+% that if we want \labels to attach to the right thing.
+% But then we also need to patch \@ssect for starred/un-numbered
+% sections. Unfortunately, \@ssect doesn't know the level number
+% so we patch \@startsection to remember the level number
+% in blx@refpatch@current@sectlevel
+% and then patch \@sect and \@ssect with the actual code
+% testing against blx@refpatch@current@sectlevel.
+
+% {<do initialization>}{<csv list to do>}{<error>}
+\def\blx@refpatch@docsvlist#1#2#3{%
+ \toggletrue{blx@tempa}%
+ #1%
+ \docsvlist{#2}%
+ \iftoggle{blx@tempa}
+ {#3}
+ {}%
+ \let\do\noexpand}
+
+\newtoggle{blx@refpatch@sect@std@pre@done}
+
+\def\blx@refpatch@sect@std@pre{%
+ \iftoggle{blx@refpatch@sect@std@pre@done}
+ {}
+ {\blx@refpatch@docsvlist
+ {\blx@refpatch@sect@std@pre@defdo}
+ {\scr@startsection,
+ \@startsection}
+ {\blx@err@patch{\string\@startsection}}
+ \global\toggletrue{blx@refpatch@sect@std@pre@done}}}
+
+\edef\blx@refpatch@sect@std@pre@defdo{%
\def\noexpand\do##1{%
- \pretocmd##1%
- {\noexpand\blx@refpatch@sect@std@i{#1}{#2}{\string#2}}
+ \pretocmd##1
+ {\csnumdef{blx@refpatch@current@sectlevel}{\string#2}}
{\togglefalse{blx@tempa}\noexpand\listbreak}
- {}}%
- \noexpand\blx@refpatch@sect@std@ii}
+ {}}}
-\def\blx@refpatch@sect@std@i#1#2#3{%
- \ifnumequal{#2}{#3}{#1}{}}
+\edef\blx@refpatch@sect@std@defdo@sect#1#2{%
+ \def\noexpand\do##1{%
+ \patchcmd##1%
+ {\noexpand\@tempskipa \string#5\noexpand\relax}
+ {\noexpand\blx@refpatch@sect@std@testandruncode{#1}{#2}%
+ \noexpand\@tempskipa \string#5\noexpand\relax}
+ {\togglefalse{blx@tempa}\noexpand\listbreak}
+ {}}}
-\def\blx@refpatch@sect@std@ii{%
- \toggletrue{blx@tempa}%
- \docsvlist{% order does matter:
- \H@old@sectm@m,% memoir+hyperref (what a mess...)
- \M@sect,% memoir
- \H@old@sect,% hyperref
- \NR@sect,% nameref
- \scr@sect,% koma-script 3.x
- \scr@startsection,% bad hack for koma 3.15 <= v <= 3.25
- \@startsection}% latex
- \iftoggle{blx@tempa}
+\edef\blx@refpatch@sect@std@defdo@ssect#1#2{%
+ \def\noexpand\do##1{%
+ \patchcmd##1%
+ {\noexpand\@tempskipa \string#3\noexpand\relax}
+ {\noexpand\blx@refpatch@sect@std@testandruncode{#1}{#2}%
+ \noexpand\@tempskipa \string#3\noexpand\relax}
+ {\togglefalse{blx@tempa}\noexpand\listbreak}
+ {}}}
+
+% {<patch code>}{<section level number>}
+\def\blx@refpatch@sect@std#1#2{%
+ \blx@refpatch@sect@std@pre
+ % \@sect for numbered (unstarred) sections
+ \blx@refpatch@docsvlist
+ {\blx@refpatch@sect@std@defdo@sect{#1}{#2}}
+ {\H@old@sectm@m,% memoir+hyperref (what a mess...)
+ \M@sect,% memoir
+ \H@old@sect,% hyperref
+ \NR@sect,% nameref
+ \scr@sect,% koma-script 3.x
+ \scr@startsection,% bad hack for koma 3.15 <= v <= 3.25
+ \@sect}
{\blx@err@patch{\string\@sect}}
- {}%
- \let\do\noexpand}
+ % \@ssect for un-numbered (starred) sections
+ \blx@refpatch@docsvlist
+ {\blx@refpatch@sect@std@defdo@ssect{#1}{#2}}
+ {\H@old@ssectm@m,% memoir+hyperref (what a mess...)
+ \M@ssect,% memoir
+ \H@old@ssect,% hyperref
+ \NR@ssect,% nameref
+ \scr@ssect,% koma-script 3.x
+ \@ssect}
+ {\blx@err@patch{\string\@ssect}}}
+
+\def\blx@refpatch@sect@std@testandruncode#1#2{%
+ \ifnumequal{#2}{0\csuse{blx@refpatch@current@sectlevel}}
+ {#1}
+ {}}
% Bibliography categories
@@ -10366,10 +10472,13 @@
{\blx@addbib@i{#1}}
{\blx@addbib@i{#1}[]}}
+% kill all spaces and %
+% see https://github.com/plk/biblatex/issues/1026
\def\blx@addbib@i#1[#2]{%
\begingroup
- \blx@hook@fileverb
- \blx@addbib@ii{#1}{#2}}
+ \@ifnextchar\bgroup
+ {\blx@hook@fileverb\blx@addbib@ii{#1}{#2}}%
+ {\blx@hook@fileverb\blx@addbib@ii{#1}{#2}}}
\def\blx@addbib@ii#1#2#3{%
\endgroup
@@ -10379,7 +10488,8 @@
\def\blx@tempc{local}%
\undef\blx@tempd
\let\blx@tempe\@empty
- \setkeys{blx@addbib}{#2}%
+ \def\blx@tempf{false}%
+ \blx@kv@setkeys{blx@addbib}{#2}%
\blx@xsanitizeafter{#1}{#3}%
\endgroup}
@@ -10390,22 +10500,27 @@
\catcode`\{=\@ne
\catcode`\}=\tw@}
-\define@key{blx@addbib}{type}{\def\blx@tempa{#1}}
-\define@key{blx@addbib}{datatype}{\def\blx@tempb{#1}}
-\define@key{blx@addbib}{location}{\def\blx@tempc{#1}}
-\define@key{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}}
-\define@key{blx@addbib}{bibencoding}{\def\blx@tempe{#1}}
+\blx@kv@defkey{blx@addbib}{type}{\def\blx@tempa{#1}}
+\blx@kv@defkey{blx@addbib}{datatype}{\def\blx@tempb{#1}}
+\blx@kv@defkey{blx@addbib}{location}{\def\blx@tempc{#1}}
+\blx@kv@defkey{blx@addbib}{label}{\edef\blx@tempd{\detokenize{#1}}}
+\blx@kv@defkey{blx@addbib}{bibencoding}{\def\blx@tempe{#1}}
+\blx@kv@defkey{blx@addbib}{glob}[true]{\def\blx@tempf{#1}}
% \blx@res@type@<resource> resource -> type
% \blx@res@data@<resource> resource -> datatype
% \blx@res@loca@<resource> resource -> datatype
% \blx@res@labl@<resource> label -> resource
+% \blx@res@glob@<resource> glob -> true|false
\def\blx@addbib@register#1{%
\csxdef{blx@res@type@#1}{\blx@tempa}%
\csxdef{blx@res@data@#1}{\blx@tempb}%
\csxdef{blx@res@loca@#1}{\blx@tempc}%
\csxdef{blx@res@bibencoding@#1}{\blx@tempe}%
+ \ifdef\blx@tempf
+ {\csxdef{blx@res@glob@#1}{\blx@tempf}}
+ {}%
\ifdef\blx@tempd
{\csxdef{blx@res@labl@\blx@tempd}{#1}}
{}}
@@ -10438,6 +10553,9 @@
{\ifcsvoid{blx@res@bibencoding@#2}
{}
{ encoding="\csuse{blx@res@bibencoding@#2}"}}
+ {\ifcsvoid{blx@res@glob@#2}
+ {}
+ { glob="\csuse{blx@res@glob@#2}"}}
{#3}}}
%% Citations
@@ -10452,6 +10570,12 @@
\newrobustcmd*{\AtEachCitekey}{%
\iftoggle{blx@citation}{\appto\blx@hook@citekey}{\@gobble}}
+\let\blx@hook@entrykey\@gobble
+\newrobustcmd*{\AtEveryEntrykey}{%
+ \apptocmd{\blx@hook@entrykey}}
+\@onlypreamble\AtEveryEntrykey
+
+
\def\blx@imc@UseEveryCiteHook{\csuse{blx@hook@cite}}
\def\blx@imc@UseEveryCitekeyHook{\csuse{blx@hook@citekey}}
\def\blx@imc@UseEveryMultiCiteHook{\csuse{blx@hook@mcite}}
@@ -10550,7 +10674,8 @@
{\ifinlistcs{#1}{blx@miss@\the\c@refsection}
{}
{\blx@logreq@active{#2{#1}}}}
- {\blx@logreq@active{#2{#1}}}}}
+ {\blx@logreq@active{#2{#1}}}}%
+ \blx@hook@entrykey{#1}}
\protected\def\abx@aux@segm#1#2#3{%
\xifinlistcs{\detokenize{#3}}{blx@segm@#1@#2}
@@ -10695,7 +10820,7 @@
% {<entrykey>}
\def\blx@citeadd#1{%
\ifcsdef{blx@keyalias@\the\c@refsection @#1}
- {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}}
+ {\letcs\blx@realkey{blx@keyalias@\the\c@refsection @#1}}
{\def\blx@realkey{#1}}%
\expandafter\blx@getrefcontext\expandafter{\blx@realkey}% needed for \ifdata
\expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon
@@ -11397,7 +11522,7 @@
\long\def\blx@citexpunct@i#1#2#3#4{%
\@ifnextchar[%]
{\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}}
- {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[#1]}}
+ {\blx@citexpunct@ii{#1}{{#2}{#3}{#4}}[{#1}]}}
\long\def\blx@citexpunct@ii#1#2[#3]#4{%
\blx@thecheckpunct{\blxcitecmd{#1}#2{#3}{#4}}}
@@ -11825,7 +11950,7 @@
\ifnameundef{#5}
{\blx@warning@entry{'#5' undefined or not a name list}%
\abx@missing{#5}}
- {\printnames[#4]{#5}}}%
+ {\printnames[{#4}]{#5}}}%
\def\blx@dlimcode{\multicitedelim}%
\def\blx@postpunct@saved{#6}%
\ifblank{#2}
@@ -11853,7 +11978,7 @@
\iflistundef{#5}
{\blx@warning@entry{'#5' undefined or not a literal list}%
\abx@missing{#5}}
- {\printlist[#4]{#5}}}%
+ {\printlist[{#4}]{#5}}}%
\def\blx@dlimcode{\multicitedelim}%
\def\blx@postpunct@saved{#6}%
\ifblank{#2}
@@ -11882,7 +12007,7 @@
\iffieldundef{#5}
{\blx@warning@entry{'#5' undefined or not a field}%
\abx@missing{#5}}
- {\printfield[#4]{#5}}}%
+ {\printfield[{#4}]{#5}}}%
\def\blx@dlimcode{\multicitedelim}%
\def\blx@postpunct@saved{#6}%
\ifblank{#2}
@@ -11947,6 +12072,9 @@
\def\iffieldequals#1#2{\blx@TE{\blx@imc@iffieldequals{#1}{#2}}}%
\def\iffieldequalstr#1#2{\blx@TE{\blx@imc@iffieldequalstr{#1}{#2}}}%
\def\iffieldsequal#1#2{\blx@TE{\blx@imc@iffieldsequal{#1}{#2}}}%
+ \def\iflistequalcs#1#2{\blx@TE{\blx@imc@iflistequalcs{#1}{#2}}}%
+ \def\iflistequals#1#2{\blx@TE{\blx@imc@iflistequals{#1}{#2}}}%
+ \def\iflistsequal#1#2{\blx@TE{\blx@imc@iflistsequal{#1}{#2}}}%
\def\ifbibmacroundef#1{\blx@TE{\blx@imc@ifbibmacroundef{#1}}}%
\def\iffieldundef#1{\blx@TE{\blx@imc@iffieldundef{#1}}}%
\def\ifnameequalcs#1#2{\blx@TE{\blx@imc@ifnameequalcs{#1}{#2}}}%
@@ -12586,8 +12714,8 @@
~~<bcf:bibdata section="#1">\blx@nl
#2%
~~</bcf:bibdata>\blx@nl}
-\xdef\blx@xml@datasource#1#2#3#4{%
- ~~~~<bcf:datasource type="#1" datatype="#2"#3>#4</bcf:datasource>\blx@nl}
+\xdef\blx@xml@datasource#1#2#3#4#5{%
+ ~~~~<bcf:datasource type="#1" datatype="#2"#3#4>#5</bcf:datasource>\blx@nl}
\xdef\blx@xml@citekey#1#2#3{%
~~~~<bcf:citekey order="#3"#2>#1</bcf:citekey>}
\xdef\blx@xml@citeset#1#2{%
@@ -12713,8 +12841,8 @@
\blx@safe@actives
\let\protect\string
% options
- \edef\labelalphaothers{\labelalphaothers}%
- \edef\sortalphaothers{\sortalphaothers}%
+ \protected@edef\labelalphaothers{\labelalphaothers}%
+ \protected@edef\sortalphaothers{\sortalphaothers}%
\blx@xmlsanitizeafter{\def\labelalphaothers}{\labelalphaothers}%
\blx@xmlsanitizeafter{\def\sortalphaothers}{\sortalphaothers}%
% Expand the global use* name toggles
@@ -13026,7 +13154,7 @@
\let\blx@dm@datatype\@empty
\let\blx@member@field\@empty
\let\blx@tempb\@empty
- \setkeys{blx@datafieldsets@member}{#1}%
+ \blx@kv@setkeys{blx@datafieldsets@member}{#1}%
\eappto\blx@tempa{%
\blx@xml@datafieldsets@member{\blx@tempb}}%
\ifdefempty\blx@member@field
@@ -13051,13 +13179,13 @@
\listcsxadd{blx@datafieldset@\blx@setname}{##1}}
\dolistcsloop{blx@datamodelfields@datatypes@\blx@dm@datatype}}}}
-\define@key{blx@datafieldsets@member}{datatype}{% characters
+\blx@kv@defkey{blx@datafieldsets@member}{datatype}{% characters
\appto\blx@tempb{ datatype="#1"}%
\def\blx@dm@datatype{#1}}
-\define@key{blx@datafieldsets@member}{fieldtype}{% characters
+\blx@kv@defkey{blx@datafieldsets@member}{fieldtype}{% characters
\appto\blx@tempb{ fieldtype="#1"}%
\def\blx@dm@fieldtype{#1}}
-\define@key{blx@datafieldsets@member}{field}{% characters
+\blx@kv@defkey{blx@datafieldsets@member}{field}{% characters
\appto\blx@tempb{ field="#1"}%
\def\blx@member@field{#1}}
@@ -13093,8 +13221,8 @@
\let\map\blx@sourcemap@map
#2%
\ifblank{#1}
- {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=driver}}
- {\setkeys{blx@sourcemap@maps}{#1, level=driver}}%
+ {\blx@kv@setkeys{blx@sourcemap@maps}{datatype=bibtex, level=driver}}
+ {\blx@kv@setkeys{blx@sourcemap@maps}{#1, level=driver}}%
\eappto\blx@tempa{%
\blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}%
\csxdef{blx@sourcemap@defaults@\blx@tempd}{\blx@tempa}%
@@ -13106,8 +13234,8 @@
\let\blx@tempc\@empty
\let\map\blx@sourcemap@map
\ifblank{#1}
- {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=user}}
- {\setkeys{blx@sourcemap@maps}{#1, level=user}}%
+ {\blx@kv@setkeys{blx@sourcemap@maps}{datatype=bibtex, level=user}}
+ {\blx@kv@setkeys{blx@sourcemap@maps}{#1, level=user}}%
#2%
\eappto\blx@tempa{%
\blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}}
@@ -13117,20 +13245,20 @@
\let\blx@tempc\@empty
\let\map\blx@sourcemap@map
\ifblank{#1}
- {\setkeys{blx@sourcemap@maps}{datatype=bibtex, level=style}}
- {\setkeys{blx@sourcemap@maps}{#1, level=style}}%
+ {\blx@kv@setkeys{blx@sourcemap@maps}{datatype=bibtex, level=style}}
+ {\blx@kv@setkeys{blx@sourcemap@maps}{#1, level=style}}%
#2%
\eappto\blx@tempa{%
\blx@xml@sourcemap@maps{\blx@tempb}{\blx@tempc}}}
-\define@key{blx@sourcemap@maps}{datatype}{% characters
+\blx@kv@defkey{blx@sourcemap@maps}{datatype}{% characters
\eappto\blx@tempb{ datatype="#1"}%
\eappto\blx@tempd{#1}}
-\define@key{blx@sourcemap@maps}{overwrite}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@maps}{overwrite}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempb{ map\string_overwrite="1"}}
{}}
-\define@key{blx@sourcemap@maps}{level}{% user|style|driver
+\blx@kv@defkey{blx@sourcemap@maps}{level}{% user|style|driver
\appto\blx@tempb{ level="#1"}}
\newcommand*{\blx@sourcemap@map}[2][]{%
@@ -13142,18 +13270,18 @@
\let\step\blx@sourcemap@step
\ifblank{#1}
{}
- {\setkeys{blx@sourcemap@map}{#1}}%
+ {\blx@kv@setkeys{blx@sourcemap@map}{#1}}%
#2%
\eappto\blx@tempc{%
\blx@xml@sourcemap@map{\blx@tempm}{\blx@tempe}}}
-\define@key{blx@sourcemap@map}{overwrite}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@map}{overwrite}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempm{ map\string_overwrite="1"}}
{}}
-\define@key{blx@sourcemap@map}{foreach}{% characters
+\blx@kv@defkey{blx@sourcemap@map}{foreach}{% characters
\eappto\blx@tempm{ map\string_foreach="#1"}}
-\define@key{blx@sourcemap@map}{refsection}{% integer
+\blx@kv@defkey{blx@sourcemap@map}{refsection}{% integer
\eappto\blx@tempm{ refsection="#1"}}
\newcommand*{\blx@sourcemap@perdatasource}[1]{%
@@ -13170,96 +13298,100 @@
\newcommand*{\blx@sourcemap@step}[1][2]{%
\let\blx@tempf\@empty
- \setkeys{blx@sourcemap@step}{#1}%
+ \blx@kv@setkeys{blx@sourcemap@step}{#1}%
\eappto\blx@tempe{%
\blx@xml@sourcemap@step{\blx@tempf}}}
-\define@key{blx@sourcemap@step}{typesource}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{typesource}{% characters
\eappto\blx@tempf{ map\string_type\string_source="#1"}}
-\define@key{blx@sourcemap@step}{typetarget}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{typetarget}{% characters
\eappto\blx@tempf{ map\string_type\string_target="#1"}}
-\define@key{blx@sourcemap@step}{final}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{final}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_final="1"}}
{}}
-\define@key{blx@sourcemap@step}{cited}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{cited}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_entrykey\string_cited="1"}}
{}}
-\define@key{blx@sourcemap@step}{nocited}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{nocited}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_entrykey\string_nocited="1"}}
{}}
-\define@key{blx@sourcemap@step}{citedornocited}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{citedornocited}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_entrykey\string_citedornocited="1"}}
{}}
-\define@key{blx@sourcemap@step}{allnocited}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{allnocited}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_entrykey\string_allnocited="1"}}
{}}
-\define@key{blx@sourcemap@step}{fieldsource}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{starnocited}[true]{% true|false
+ \ifstrequal{#1}{true}
+ {\appto\blx@tempf{ map\string_entrykey\string_starnocited="1"}}
+ {}}
+\blx@kv@defkey{blx@sourcemap@step}{fieldsource}{% characters
\eappto\blx@tempf{ map\string_field\string_source="#1"}}
-\define@key{blx@sourcemap@step}{notfield}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{notfield}{% characters
\eappto\blx@tempf{ map\string_notfield="#1"}}
-\define@key{blx@sourcemap@step}{fieldtarget}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{fieldtarget}{% characters
\eappto\blx@tempf{ map\string_field\string_target="#1"}}
-\define@key{blx@sourcemap@step}{fieldset}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{fieldset}{% characters
\eappto\blx@tempf{ map\string_field\string_set="#1"}}
% We are sanitising the XML here as it's the value of an attribute which
% might contain quotes or ampersands (URLs, for example)
-\define@key{blx@sourcemap@step}{fieldvalue}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{fieldvalue}{% characters
\blx@xmlsanitizeafter{\def\blx@temps}{#1}%
\eappto\blx@tempf{ map\string_field\string_value="\blx@temps"}}
-\define@key{blx@sourcemap@step}{append}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{append}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_append="1"}}
{}}
-\define@key{blx@sourcemap@step}{appendstrict}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{appendstrict}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_appendstrict="1"}}
{}}
-\define@key{blx@sourcemap@step}{null}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{null}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_null="1"}}
{}}
-\define@key{blx@sourcemap@step}{entrynull}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{entrynull}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_entry\string_null="1"}}
{}}
-\define@key{blx@sourcemap@step}{entrynocite}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{entrynocite}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_entry\string_nocite="1"}}
{}}
-\define@key{blx@sourcemap@step}{entrynew}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{entrynew}{% characters
\appto\blx@tempf{ map\string_entry\string_new="#1"}}
-\define@key{blx@sourcemap@step}{entrynewtype}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{entrynewtype}{% characters
\appto\blx@tempf{ map\string_entry\string_newtype="#1"}}
-\define@key{blx@sourcemap@step}{entrytarget}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{entrytarget}{% characters
\appto\blx@tempf{ map\string_entrytarget="#1"}}
-\define@key{blx@sourcemap@step}{entryclone}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{entryclone}{% characters
\appto\blx@tempf{ map\string_entry\string_clone="#1"}}
-\define@key{blx@sourcemap@step}{origfield}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{origfield}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_origfield="1"}}
{}}
-\define@key{blx@sourcemap@step}{origfieldval}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{origfieldval}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_origfieldval="1"}}
{}}
-\define@key{blx@sourcemap@step}{origentrytype}[true]{% true|false
+\blx@kv@defkey{blx@sourcemap@step}{origentrytype}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempf{ map\string_origentrytype="1"}}
{}}
-\define@key{blx@sourcemap@step}{match}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{match}{% characters
\appto\blx@tempf{ map\string_match="#1"}}
-\define@key{blx@sourcemap@step}{matchi}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{matchi}{% characters
\appto\blx@tempf{ map\string_matchi="#1"}}
-\define@key{blx@sourcemap@step}{notmatch}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{notmatch}{% characters
\appto\blx@tempf{ map\string_notmatch="#1"}}
-\define@key{blx@sourcemap@step}{notmatchi}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{notmatchi}{% characters
\appto\blx@tempf{ map\string_notmatchi="#1"}}
-\define@key{blx@sourcemap@step}{replace}{% characters
+\blx@kv@defkey{blx@sourcemap@step}{replace}{% characters
\eappto\blx@tempf{ map\string_replace="#1"}}
% [<specname>]{<spec>}
@@ -13288,29 +13420,29 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@lantem@namepart}{#1}}%
+ {\blx@kv@setkeys{blx@lantem@namepart}{#1}}%
\eappto\blx@tempa{%
\blx@xml@labelalphanametemplatenamepart{\blx@tempe}{\blx@tempc}{#2}}}
-\define@key{blx@lantem@namepart}{use}[true]{% use* option for namepart true|false
+\blx@kv@defkey{blx@lantem@namepart}{use}[true]{% use* option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ use="1"}}
{}}
-\define@key{blx@lantem@namepart}{pre}[true]{% pre option for namepart true|false
+\blx@kv@defkey{blx@lantem@namepart}{pre}[true]{% pre option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ pre="1"}}
{}}
-\define@key{blx@lantem@namepart}{compound}[true]{% base option for namepart true|false
+\blx@kv@defkey{blx@lantem@namepart}{compound}[true]{% base option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ substring\string_compound="1"}}
{}}
-\define@key{blx@lantem@namepart}{strwidth}{% integer
+\blx@kv@defkey{blx@lantem@namepart}{strwidth}{% integer
\eappto\blx@tempc{ substring\string_width="#1"}}
-\define@key{blx@lantem@field}{strside}{% left|right
+\blx@kv@defkey{blx@lantem@field}{strside}{% left|right
\ifstrequal{#1}{right}
{\eappto\blx@tempc{ substring\string_side="right"}}
{\eappto\blx@tempc{ substring\string_side="left"}}}
@@ -13356,56 +13488,56 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@latem@field}{#1}}%
+ {\blx@kv@setkeys{blx@latem@field}{#1}}%
\eappto\blx@tempb{%
\blx@xml@labelalpha@part{\blx@tempc}{#2}}}
-\define@key{blx@latem@field}{uppercase}[true]{% true|false
+\blx@kv@defkey{blx@latem@field}{uppercase}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ uppercase="1"}}
{}}
-\define@key{blx@latem@field}{lowercase}[true]{% true|false
+\blx@kv@defkey{blx@latem@field}{lowercase}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ lowercase="1"}}
{}}
-\define@key{blx@latem@field}{final}[true]{% true|false
+\blx@kv@defkey{blx@latem@field}{final}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ final="1"}}
{}}
-\define@key{blx@latem@field}{strwidth}{% integer
+\blx@kv@defkey{blx@latem@field}{strwidth}{% integer
\eappto\blx@tempc{ substring\string_width="#1"}}
-\define@key{blx@latem@field}{varwidth}[true]{% "v"
+\blx@kv@defkey{blx@latem@field}{varwidth}[true]{% "v"
\ifstrequal{#1}{true}
{\appto\blx@tempc{ substring\string_width="v"}}
{}}
-\define@key{blx@latem@field}{varwidthnorm}[true]{% "vf"
+\blx@kv@defkey{blx@latem@field}{varwidthnorm}[true]{% "vf"
\ifstrequal{#1}{true}
{\appto\blx@tempc{ substring\string_width="vf"}}
{}}
-\define@key{blx@latem@field}{varwidthlist}[true]{% "l"
+\blx@kv@defkey{blx@latem@field}{varwidthlist}[true]{% "l"
\ifstrequal{#1}{true}
{\appto\blx@tempc{ substring\string_width="l"}}
{}}
-\define@key{blx@latem@field}{strfixedcount}{%
+\blx@kv@defkey{blx@latem@field}{strfixedcount}{%
\eappto\blx@tempc{ substring\string_fixed\string_threshold="#1"}}
-\define@key{blx@latem@field}{strwidthmax}{%
+\blx@kv@defkey{blx@latem@field}{strwidthmax}{%
\eappto\blx@tempc{ substring\string_width\string_max="#1"}}
-\define@key{blx@latem@field}{strside}{% left|right
+\blx@kv@defkey{blx@latem@field}{strside}{% left|right
\ifstrequal{#1}{right}
{\eappto\blx@tempc{ substring\string_side="right"}}
{\eappto\blx@tempc{ substring\string_side="left"}}}
-\define@key{blx@latem@field}{namessep}{%
+\blx@kv@defkey{blx@latem@field}{namessep}{%
\eappto\blx@tempc{ namessep="#1"}}
-\define@key{blx@latem@field}{ifnames}{%
+\blx@kv@defkey{blx@latem@field}{ifnames}{%
\eappto\blx@tempc{ ifnames="#1"}}
-\define@key{blx@latem@field}{names}{%
+\blx@kv@defkey{blx@latem@field}{names}{%
\eappto\blx@tempc{ names="#1"}}
-\define@key{blx@latem@field}{noalphaothers}[true]{%
+\blx@kv@defkey{blx@latem@field}{noalphaothers}[true]{%
\eappto\blx@tempc{ noalphaothers="1"}}
-\define@key{blx@latem@field}{padchar}{%
+\blx@kv@defkey{blx@latem@field}{padchar}{%
\blx@xmlsanitizeafter{\def\blx@temps}{#1}%
\eappto\blx@tempc{ pad\string_char="\expandafter\regexp\expandafter{\blx@temps}"}}
-\define@key{blx@latem@field}{padside}{% left|right
+\blx@kv@defkey{blx@latem@field}{padside}{% left|right
\ifstrequal{#1}{left}
{\eappto\blx@tempc{ pad\string_side="left"}}
{\eappto\blx@tempc{ pad\string_side="right"}}}
@@ -13416,7 +13548,7 @@
\let\blx@tempf\@empty
\ifblank{#2}
{}
- {\setkeys{blx@inherit@default}{#2}}%
+ {\blx@kv@setkeys{blx@inherit@default}{#2}}%
\edef\blx@tempa{\space
inherit\string_all="\iftoggle{blx@inherit@all}{true}{false}"\space
override\string_target="\iftoggle{blx@inherit@override}{true}{false}"%
@@ -13432,11 +13564,11 @@
\newtoggle{blx@inherit@all}
\newtoggle{blx@inherit@override}
-\define@key{blx@inherit@default}{all}[true]{% true|false
+\blx@kv@defkey{blx@inherit@default}{all}[true]{% true|false
\settoggle{blx@inherit@all}{#1}}
-\define@key{blx@inherit@default}{override}[true]{% true|false
+\blx@kv@defkey{blx@inherit@default}{override}[true]{% true|false
\settoggle{blx@inherit@override}{#1}}
-\define@key{blx@inherit@default}{ignore}{% csv list
+\blx@kv@defkey{blx@inherit@default}{ignore}{% csv list
\edef\blx@tempf{ ignore="#1"}}
% {<source>}{<target>}{<options>}
@@ -13444,15 +13576,15 @@
\let\blx@tempc\@empty
\ifblank{#3}
{}
- {\setkeys{blx@inherit@except}{#3}}%
+ {\blx@kv@setkeys{blx@inherit@except}{#3}}%
\eappto\blx@tempb{%
\blx@xml@inherit@type{#1}{#2}{\blx@tempc}}}
-\define@key{blx@inherit@except}{all}[true]{% true|false
+\blx@kv@defkey{blx@inherit@except}{all}[true]{% true|false
\eappto\blx@tempc{ inherit\string_all="#1"}}
-\define@key{blx@inherit@except}{override}[true]{% true|false
+\blx@kv@defkey{blx@inherit@except}{override}[true]{% true|false
\eappto\blx@tempc{ override\string_target="#1"}}
-\define@key{blx@inherit@except}{ignore}{% csv list
+\blx@kv@defkey{blx@inherit@except}{ignore}{% csv list
\eappto\blx@tempc{ ignore="#1"}}
% {<type,type,...>}{<type,type,...>}{<spec>}
@@ -13462,7 +13594,7 @@
\let\blx@tempf\@empty
\ifblank{#1}
{}
- {\setkeys{blx@inherit}{#1}}%
+ {\blx@kv@setkeys{blx@inherit}{#1}}%
\forcsvlist{\blx@inherit@i{#3}}{#2}%
\let\blx@tempb\@empty
\let\inherit\blx@inherit@field
@@ -13488,17 +13620,17 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@inherit@field}{#1}}%
+ {\blx@kv@setkeys{blx@inherit@field}{#1}}%
\eappto\blx@tempb{%
\blx@xml@inherit@field{#2}{#3}{\blx@tempc}}}
\newcommand*{\blx@inherit@block}[1]{%
\eappto\blx@tempb{\blx@xml@inherit@block{#1}}}
-\define@key{blx@inherit}{ignore}{% csv list
+\blx@kv@defkey{blx@inherit}{ignore}{% csv list
\edef\blx@tempf{ ignore="#1"}}
-\define@key{blx@inherit@field}{override}[true]{% true|false
+\blx@kv@defkey{blx@inherit@field}{override}[true]{% true|false
\ifstrequal{#1}{true}
{\edef\blx@tempc{ override\string_target="true"}}
{\edef\blx@tempc{ override\string_target="false"}}}
@@ -13526,21 +13658,21 @@
\newcommand*{\blx@biblistfilter}[1][2]{%
\let\blx@tempc\@empty
\let\blx@tempd\@empty
- \setkeys{blx@biblistfilter@filter}{#1}%
+ \blx@kv@setkeys{blx@biblistfilter@filter}{#1}%
\eappto\blx@tempa{%
\blx@xml@dlistfilter{\blx@tempc}{\blx@tempd}}}
-\define@key{blx@biblistfilter@filter}{type}{%
+\blx@kv@defkey{blx@biblistfilter@filter}{type}{%
\def\blx@tempc{#1}}
-\define@key{blx@biblistfilter@filter}{filter}{%
+\blx@kv@defkey{blx@biblistfilter@filter}{filter}{%
\def\blx@tempd{#1}}
% Predefine filters for label fields
\def\do#1{\DeclareBiblistFilter{#1}{\filter[type=field,filter=#1]}}
\abx@dolabelfields
-\define@key{blx@biblist2}{biblistfilter}{\blx@key@biblistfilter{#1}}
-\define@key{blx@biblist1}{biblistfilter}{}
+\blx@kv@defkey{blx@biblist1}{biblistfilter}{\blx@key@biblistfilter{#1}}
+\blx@kv@defkey{blx@biblist2}{biblistfilter}{}
\def\blx@key@biblistfilter#1{%
\ifcsundef{blx@biblistfilters@#1}
@@ -13599,21 +13731,21 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@untemp@namepart}{#1}}%
+ {\blx@kv@setkeys{blx@untemp@namepart}{#1}}%
\eappto\blx@tempa{%
\blx@xml@uniquenametemplatenamepart{\blx@tempe}{\blx@tempc}{#2}}}
-\define@key{blx@untemp@namepart}{use}[true]{% use* option for namepart true|false
+\blx@kv@defkey{blx@untemp@namepart}{use}[true]{% use* option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ use="1"}}
{}}
-\define@key{blx@untemp@namepart}{base}[true]{% base option for namepart true|false
+\blx@kv@defkey{blx@untemp@namepart}{base}[true]{% base option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ base="1"}}
{}}
-\define@key{blx@untemp@namepart}{disambiguation}{% disambiguation option for namepart none|inits|full|fullonly
+\blx@kv@defkey{blx@untemp@namepart}{disambiguation}{% disambiguation option for namepart none|inits|full|fullonly
\appto\blx@tempc{ disambiguation="#1"}}
% [<templatename>]{<template>}
@@ -13668,16 +13800,16 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@sortnk@namepart}{#1}}%
+ {\blx@kv@setkeys{blx@sortnk@namepart}{#1}}%
\eappto\blx@tempb{%
\blx@xml@sortingnamekeynamepart{\blx@tempe}{\blx@tempc}{#2}}}
-\define@key{blx@sortnk@namepart}{use}[true]{% use* option for namepart true|false
+\blx@kv@defkey{blx@sortnk@namepart}{use}[true]{% use* option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ use="1"}}
{\appto\blx@tempc{ use="0"}}}
-\define@key{blx@sortnk@namepart}{inits}[true]{% initials only option for namepart true|false
+\blx@kv@defkey{blx@sortnk@namepart}{inits}[true]{% initials only option for namepart true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ inits="1"}}
{\appto\blx@tempc{ inits="0"}}}
@@ -13686,7 +13818,7 @@
\newrobustcmd*{\DeclareSortingTemplate}[3][]{%
\ifblank{#1}
{}
- {\setkeys{blx@sortdef@sorting}{#1}%
+ {\blx@kv@setkeys{blx@sortdef@sorting}{#1}%
\csxdef{blx@sortdef@locale@#2}{\blx@templ}}%
\begingroup
\def\name{%LEGACY(<2.0)
@@ -13700,7 +13832,10 @@
\let\sort\blx@sortdef@sort
\let\field\blx@sortdef@field
\let\literal\blx@sortdef@literal
- \def\citeorder{\blx@sortdef@field{citeorder}}%
+ \global\csundef{blx@sortingtemplate@citeorder@relevant@#2}%
+ \def\citeorder{%
+ \global\cslet{blx@sortingtemplate@citeorder@relevant@#2}\@empty
+ \blx@sortdef@field{citeorder}}%
\blx@tempcnta\z@
\let\blx@tempa\@empty
#3%
@@ -13709,7 +13844,7 @@
\@onlypreamble\DeclareSortingTemplate
\blx@DeclareBackendOption{global}[xml]{sortingtemplate}
-\define@key{blx@sortdef@sorting}{locale}{% locale name
+\blx@kv@defkey{blx@sortdef@sorting}{locale}{% locale name
\def\blx@templ{#1}}
\newcommand*{\blx@sortdef@sort}[2][]{%
@@ -13719,27 +13854,27 @@
\edef\blx@tempc{order="\the\blx@tempcnta"}%
\ifblank{#1}
{}
- {\setkeys{blx@sortdef@sort}{#1}}%
+ {\blx@kv@setkeys{blx@sortdef@sort}{#1}}%
\let\do\@firstofone
#2%
\eappto\blx@tempa{%
\blx@xml@sort{\blx@tempc}{\blx@tempb}}}
-\define@key{blx@sortdef@sort}{locale}{% locale name
+\blx@kv@defkey{blx@sortdef@sort}{locale}{% locale name
\eappto\blx@tempc{ locale="#1"}}
-\define@key{blx@sortdef@sort}{direction}{% ascending|descending
+\blx@kv@defkey{blx@sortdef@sort}{direction}{% ascending|descending
\ifstrequal{#1}{ascending}
{\eappto\blx@tempc{ sort\string_direction="ascending"}}
{\eappto\blx@tempc{ sort\string_direction="descending"}}}
-\define@key{blx@sortdef@sort}{final}[true]{% true|false
+\blx@kv@defkey{blx@sortdef@sort}{final}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ final="1"}}
{}}
-\define@key{blx@sortdef@sort}{sortcase}[true]{% true|false
+\blx@kv@defkey{blx@sortdef@sort}{sortcase}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ sortcase="1"}}
{\appto\blx@tempc{ sortcase="0"}}}
-\define@key{blx@sortdef@sort}{sortupper}[true]{% true|false
+\blx@kv@defkey{blx@sortdef@sort}{sortupper}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempc{ sortupper="1"}}
{\appto\blx@tempc{ sortupper="0"}}}
@@ -13749,24 +13884,24 @@
\edef\blx@tempd{order="\the\blx@tempcntb"}%
\ifblank{#1}
{}
- {\setkeys{blx@sortdef@field}{#1}}%
+ {\blx@kv@setkeys{blx@sortdef@field}{#1}}%
\eappto\blx@tempb{%
\blx@xml@sortitem{\blx@tempd}{#2}}}
-\define@key{blx@sortdef@field}{padside}{% left|right
+\blx@kv@defkey{blx@sortdef@field}{padside}{% left|right
\ifstrequal{#1}{right}
{\eappto\blx@tempd{ pad\string_side="right"}}
{\eappto\blx@tempd{ pad\string_side="left"}}}
-\define@key{blx@sortdef@field}{padwidth}{% integer
+\blx@kv@defkey{blx@sortdef@field}{padwidth}{% integer
\eappto\blx@tempd{ pad\string_width="#1"}}
-\define@key{blx@sortdef@field}{padchar}{% character
+\blx@kv@defkey{blx@sortdef@field}{padchar}{% character
\blx@xmlsanitizeafter{\def\blx@tempe}{#1}%
\eappto\blx@tempd{ pad\string_char="\blx@tempe"}}
-\define@key{blx@sortdef@field}{strside}{% left|right
+\blx@kv@defkey{blx@sortdef@field}{strside}{% left|right
\ifstrequal{#1}{right}
{\eappto\blx@tempd{ substring\string_side="right"}}
{\eappto\blx@tempd{ substring\string_side="left"}}}
-\define@key{blx@sortdef@field}{strwidth}{% integer
+\blx@kv@defkey{blx@sortdef@field}{strwidth}{% integer
\eappto\blx@tempd{ substring\string_width="#1"}}
\def\blx@sortdef@literal#1{%
@@ -13905,7 +14040,7 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@ordered@field}{#1}}%
+ {\blx@kv@setkeys{blx@ordered@field}{#1}}%
\advance\blx@tempcnta\@ne
\ifdefempty{\blx@tempa}
{\csxappto{blx@bcf@\blx@tempb}{%
@@ -13920,7 +14055,7 @@
\let\blx@tempc\@empty
\ifblank{#1}
{}
- {\setkeys{blx@ordered@field}{#1}}%
+ {\blx@kv@setkeys{blx@ordered@field}{#1}}%
\advance\blx@tempcnta\@ne
\ifdefempty{\blx@tempa}
{\csxappto{blx@bcf@\blx@tempb}{%
@@ -13948,7 +14083,7 @@
\newrobustcmd*{\ExecuteBibliographyOptions}[2][]{%
\ifblank{#1}
- {\setkeys{blx@opt@pre}{#2}}
+ {\blx@kv@setkeys{blx@opt@pre}{#2}}
{\forcsvlist{\blx@typeoptions{#2}}{#1}}}
\@onlypreamble\ExecuteBibliographyOptions
@@ -13969,9 +14104,9 @@
% Have to have a dummy for this as it's set much earlier but is passed
% through to here where we just ignore it
-\define@key{blx@opt@ldt}{datamodel}{}
+\blx@kv@defkey{blx@opt@ldt}{datamodel}{}
-\define@key{blx@opt@ldt}{backend}{%
+\blx@kv@defkey{blx@opt@ldt}{backend}{%
\ifstrequal{#1}{biber}
{}
{\ifboolexpr{
@@ -13985,30 +14120,30 @@
{}}%
{\blx@err@invopt{backend=#1}{}}}}
-\define@key{blx@opt@ldt}{style}{%
+\blx@kv@defkey{blx@opt@ldt}{style}{%
\def\blx@cbxfile{#1}%
\def\blx@bbxfile{#1}}
-\define@key{blx@opt@ldt}{bibstyle}{%
+\blx@kv@defkey{blx@opt@ldt}{bibstyle}{%
\def\blx@bbxfile{#1}}
-\define@key{blx@opt@ldt}{citestyle}{%
+\blx@kv@defkey{blx@opt@ldt}{citestyle}{%
\def\blx@cbxfile{#1}}
-\define@key{blx@opt@ldt}{natbib}[true]{%
+\blx@kv@defkey{blx@opt@ldt}{natbib}[true]{%
\settoggle{blx@natbib}{#1}}
-\define@key{blx@opt@ldt}{mcite}[true]{%
+\blx@kv@defkey{blx@opt@ldt}{mcite}[true]{%
\settoggle{blx@mcite}{#1}}
-\define@key{blx@opt@ldt}{noerroretextools}[true]{%
+\blx@kv@defkey{blx@opt@ldt}{noerroretextools}[true]{%
\blx@warning@noline{%
The option 'noerroretextools' is deprecated.\MessageBreak
Define the control sequence '\string\blx@noerroretextools'\MessageBreak
before loading biblatex instead}%
\ifstrequal{#1}{true}
{\global\cslet{blx@noerroretextools}\@empty}
- {\csgundef{blx@noerroretextools}}}
+ {\global\csundef{blx@noerroretextools}}}
% load-time and preamble
@@ -14061,7 +14196,7 @@
% unlikely to be corrected as "sorting" is an obvious name for biblatex users
% "sorting" is used in the .bcf for the actual sorting template definitions and is
% an XML format option
-\define@key{blx@opt@pre}{sorting}{%
+\blx@kv@defkey{blx@opt@pre}{sorting}{%
\def\blx@sorting{#1}%
\def\blx@refcontext@sortingtemplatename{#1}}
\blx@DeclareBackendOption{global}[string]{sortingtemplatename}
@@ -14295,6 +14430,14 @@
\def\blx@hook@initlang{\@quotereset\@ne}%
\def\blx@hook@endlang{\blx@postpunct}}
+\DeclareBibliographyOption[string]{langhook}{%
+ \ifstrequal{#1}{captions}
+ {\@firstoftwo}
+ {\ifstrequal{#1}{extras}}
+ {\def\blx@langhook{#1}}
+ {\blx@err@invopt{langhook=#1}{}}}
+
+
\DeclareBiblatexOption{global,type,entry}[string]{indexing}[true]{%
\blx@opt@index{#1}}
\def\blx@opt@index#1{%
@@ -14382,6 +14525,10 @@
\def\blx@opt@backrefsetstyle@memandset{4}
\def\blx@opt@backrefsetstyle@setplusmem{5}
+\newtoggle{blx@backreffloats}
+\DeclareBibliographyOption[boolean]{backreffloats}[true]{%
+ \settoggle{blx@backreffloats}{#1}}
+
\appto\blx@mkhyperref{%
\ifHy@plainpages
\blx@warning@noline{%
@@ -14396,10 +14543,22 @@
references. 'pageanchor=true' is required}%
\fi}
-\DeclareBibliographyOption[string]{block}{%
+\def\blx@optprocess@block#1{%
\ifcsdef{blx@opt@block@#1}
{\csuse{blx@opt@block@#1}}
{\blx@err@invopt{block=#1}{}}}
+
+\DeclareBibliographyOption[string]{block}{%
+ \blx@optprocess@block{#1}}
+
+\blx@kv@defkey{blx@bib1}{block}{}
+\blx@kv@defkey{blx@bib2}{block}{\blx@optprocess@block{#1}}
+\blx@kv@defkey{blx@biblist1}{block}{}
+\blx@kv@defkey{blx@biblist2}{block}{\blx@optprocess@block{#1}}
+
+\blx@kv@defkey{blx@bbs}{block}{\blx@optprocess@block{#1}}
+\blx@kv@defkey{blx@bbg}{block}{\blx@optprocess@block{#1}}
+
\def\blx@opt@block@none{%
\let\blx@bibsetup\@empty
\let\newblockpunct\@empty}
@@ -14623,6 +14782,11 @@
\let\blx@loccitreset\blx@loccitreset@context
\booltrue{citetracker}}
+\newtoggle{blx@trackfloats}
+\DeclareBibliographyOption[boolean]{trackfloats}[true]{%
+ \settoggle{blx@trackfloats}{#1}}
+
+
\DeclareBibliographyOption[boolean]{parentracker}[true]{%
\ifstrequal{#1}{true}
{\let\bibopenparen\blx@bibopenparen
@@ -14783,7 +14947,7 @@
{\blx@err@invopt{#1date=##1}{}}}}%
% Default for new date fields is "comp" but this is overridden below by
% biblatex defaults
- \setkeys{blx@opt@pre}{#1date=comp}%
+ \blx@kv@setkeys{blx@opt@pre}{#1date=comp}%
% Time format options
\DeclareBibliographyOption[string]{#1time}{%
\csdef{blx@timeformat@#1time}{##1}%
@@ -14791,7 +14955,7 @@
{\protected\csedef{blx@imc@print#1time}{\csuse{mktimerange##1}{#1}}}
{\blx@err@invopt{#1time=##1}{}}}%
% Default for new time fields is "24h"
- \setkeys{blx@opt@pre}{#1time=24h}%
+ \blx@kv@setkeys{blx@opt@pre}{#1time=24h}%
% Boolean to determine if times are printed with dates
\newtoggle{blx@#1dateusetime}%
\DeclareBibliographyOption[boolean]{#1dateusetime}{%
@@ -14889,7 +15053,7 @@
\settoggle{blx@labelnumber}{#1}%
\iftoggle{blx@labelnumber}
{}
- {\setkeys{blx@opt@pre}{defernumbers=false}}}
+ {\blx@kv@setkeys{blx@opt@pre}{defernumbers=false}}}
\DeclareBiblatexOption{type,entry}[boolean]{labelnumber}[true]{%
\settoggle{blx@labelnumber}{#1}}
@@ -14966,14 +15130,14 @@
\DeclareBibliographyOption[boolean]{defernumbers}[true]{%
\settoggle{blx@defernumbers}{#1}%
\iftoggle{blx@defernumbers}
- {\setkeys{blx@opt@pre}{labelnumber}%
+ {\blx@kv@setkeys{blx@opt@pre}{labelnumber}%
\let\blx@thelabelnumber\blx@addlabelnumber
\let\abx@aux@number\blx@aux@number}
{\let\blx@thelabelnumber\relax
\let\abx@aux@number\@gobblefive}}
\DeclareBibliographyOption[boolean]{locallabelwidth}[true]{%
- \blx@key@locallabelwidth{\abx@locallabelwidth}{#1}}
+ \blx@key@locallabelwidth{#1}}
\DeclareBibliographyOption[string]{refsection}{%
@@ -15078,11 +15242,11 @@
\def\blx@tempa#1=#2&{#1}%
\edef\blx@tempa{%
\expandafter\blx@tempa\CurrentOption=&}%
- \ifcsundef{KV@blx@opt@ldt@\blx@tempa}
+ \blx@kv@ifkeyundef{blx@opt@ldt}{\blx@tempa}
{\endgroup
\eappto\blx@theoptions{\CurrentOption,}}
{\edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@ldt}{\CurrentOption}}%
+ \noexpand\blx@kv@setkeys{blx@opt@ldt}{\CurrentOption}}%
\blx@tempa}}
\def\blx@processoptions{%
@@ -15090,21 +15254,64 @@
{}
{\begingroup
\edef\blx@tempa{\endgroup
- \noexpand\setkeys{blx@opt@pre}{\blx@theoptions}}%
+ \noexpand\blx@kv@setkeys{blx@opt@pre}{\blx@theoptions}}%
\blx@tempa}}
%% Initial setup
+\define@key{blx@opt@ldt}{casechanger}[auto]{%
+ \ifcsundef{blx@opt@casechanger@#1}
+ {\blx@err@invopt
+ {casechanger=#1}
+ {Valid options for 'casechanger' are 'auto', 'expl3' and
+ 'latex2e'}}
+ {\csletcs{blx@deferoption@casechanger}{blx@opt@casechanger@#1}}}
+
+
+\csdef{blx@opt@casechanger@auto}{%
+ \RequirePackage{expl3}[2020/04/06]%
+ \@ifpackagelater{expl3}{2020/04/06}
+ {\blx@info{expl3\MessageBreak\csuse{ver@expl3.sty}\MessageBreak
+ is new enough (at least 2020/04/06),\MessageBreak
+ setting 'casechanger=expl3'}%
+ \csuse{blx@opt@casechanger@expl3}}
+ {\blx@info{expl3\MessageBreak\csuse{ver@expl3.sty}\MessageBreak
+ is too old (older than 2020/04/06),\MessageBreak
+ setting 'casechanger=latex2e'}%
+ \csuse{blx@opt@casechanger@latex2e}}}
+
+\csdef{blx@opt@casechanger@latex2e}{%
+ \blx@inputonce{blx-case-latex2e.def}
+ {LaTeX2e (legacy) case changing code}
+ {}{}{}{}}
+\csletcs{blx@opt@casechanger@2e}{blx@opt@casechanger@latex2e}
+
+% Apparently neither \input nor \blx@inputonce ever pops the
+% \ExplSyntaxOff from \ProvidesExplFile, so we do that ourselves.
+\csdef{blx@opt@casechanger@expl3}{%
+ \blx@inputonce{blx-case-expl3.def}
+ {expl3 case changing code}
+ {}{\ExplSyntaxOff}{}{}}
+\csletcs{blx@opt@casechanger@3}{blx@opt@casechanger@expl3}
+
+% default to auto
+\csletcs{blx@deferoption@casechanger}{blx@opt@casechanger@auto}
+
% Set defaults
-\setkeys{blx@opt@ldt}{style=numeric}
-\setkeys{blx@opt@pre}{%
+\blx@kv@setkeys{blx@opt@ldt}{style=numeric}
+\blx@kv@setkeys{blx@opt@pre}{%
sorting=nty,sortlocale=auto,sortcase,sortupper,sortcites=false,
maxnames=3,minnames=1,maxalphanames=3,minalphanames=1,
- maxitems=3,minitems=1,mincrossrefs=2,minxrefs=2,useauthor=true,useeditor=true,
- usetranslator=false,indexing=false,abbreviate=true,dateabbrev=true,dateera=astronomical,
- backref=false,backrefsetstyle=setonly,pagetracker=false,ibidtracker=false,
- idemtracker=false,opcittracker=false,loccittracker=false,citetracker=false,
- citecounter=false,block=none,language=autobib,clearlang=true,autolang=none,
+ maxitems=3,minitems=1,mincrossrefs=2,minxrefs=2,
+ useauthor=true,useeditor=true,usetranslator=false,
+ indexing=false,abbreviate=true,dateabbrev=true,dateera=astronomical,
+ backref=false,backrefsetstyle=setonly,backreffloats=true,
+ pagetracker=false,
+ ibidtracker=false,idemtracker=false,opcittracker=false,loccittracker=false,
+ citetracker=false,trackfloats=false,
+ citecounter=false,
+ block=none,
+ language=autobib,clearlang=true,autolang=none,langhook=captions,
date=comp,labeldate=year,origdate=comp,eventdate=comp,urldate=short,
autopunct=true,punctfont=false,defernumbers=false,timezeros=true,
refsection=none,refsegment=none,citereset=none,hyperref=auto,
@@ -15122,6 +15329,7 @@
% Load compatibility code
\blx@inputonce{blx-compat.def}{compatibility code}{}{}{}{}
+
% Restore catcodes
\blx@catcodes
\undef\blx@catcodes
@@ -15129,6 +15337,44 @@
% Process load-time options
\ProcessOptions*
+% this ultimately loads either
+% blx-case-expl3.def or blx-case-latex2e.def
+\blx@deferoption@casechanger
+
+% This is a bit unfortunate, but we need some more definitions here.
+
+% Language fallback, in order:
+% * explicit option language=<lang>, which overrides everything
+% * langid field of entry
+% * babel/polyglossia lang
+% * main document lang (we should never reach this)
+% * <empty> (we should *definitely* never reach this)
+% Everything here is expandable so that
+% \blx@mksc@lang expands to the language name.
+\def\blx@mksc@lang{%
+ \ifundef\blx@forcelanguagename
+ {\ifundef\abx@field@langid
+ {\ifundef\blx@languagename
+ {\ifundef\blx@main@language
+ {}
+ {\blx@main@language}}
+ {\blx@languagename}}
+ {\abx@field@langid}}
+ {\blx@forcelanguagename}}
+
+\DeclareCaseLangs{%
+ american,british,canadian,
+ english,USenglish,UKenglish,
+ australian,newzealand}
+
+
+% Textcase defines \NoCaseChange as \let\NoCaseChange\@firstofone
+\ifundef\NoCaseChange
+ {\let\NoCaseChange\@firstofone}
+ {}
+
+% That's it for the case change code
+
% Switch to BibTeX support if requested
\iftoggle{blx@bibtex}
{\blx@inputonce{blx-bibtex.def}{BibTeX backend compatibility}{}{}{}{}}
@@ -15166,19 +15412,19 @@
{\blx@warn@conflopt{%
'<namepart>inits' conflicts with 'uniquename=full'.\MessageBreak
Setting 'uniquename=init'}%
- \setkeys{blx@opt@pre}{uniquename=init}}
+ \blx@kv@setkeys{blx@opt@pre}{uniquename=init}}
{}%
\ifdefstrequal\blx@uniquename\blx@opt@uniquename@allfull
{\blx@warn@conflopt{%
'<namepart>inits' conflicts with 'uniquename=allfull'.\MessageBreak
Setting 'uniquename=allinit}%
- \setkeys{blx@opt@pre}{uniquename=allinit}}
+ \blx@kv@setkeys{blx@opt@pre}{uniquename=allinit}}
{}%
\ifdefstrequal\blx@uniquename\blx@opt@uniquename@minfull
{\blx@warn@conflopt{%
'<namepart>inits' conflicts with 'uniquename=minfull'.\MessageBreak
Setting 'uniquename=mininit}%
- \setkeys{blx@opt@pre}{uniquename=mininit}}
+ \blx@kv@setkeys{blx@opt@pre}{uniquename=mininit}}
{}}
{}%
\nottoggle{blx@labeldateparts}
@@ -15186,7 +15432,7 @@
{\blx@warn@conflopt{%
'uniquelist=minyear' requires 'labeldateparts'.\MessageBreak
Setting 'uniquelist=true'}%
- \setkeys{blx@opt@pre}{uniquelist}}
+ \blx@kv@setkeys{blx@opt@pre}{uniquelist}}
{}}
{}%
\def\do#1{%
@@ -15195,37 +15441,37 @@
\ifdefstring\blx@dateera{astronomical}{}
{\blx@warn@conflopt{%
'#1=iso' requires 'dateera=astronomical'.\MessageBreak
- Setting 'dateera=astrononmical'}%
- \setkeys{blx@opt@pre}{dateera=astronomical}}%
+ Setting 'dateera=astronomical'}%
+ \blx@kv@setkeys{blx@opt@pre}{dateera=astronomical}}%
\ifcsstring{blx@timeformat@\blx@datetype time}{24h}%
{}
{\blx@warn@conflopt{%
'#1=iso' requires '\blx@datetype time=24h'.\MessageBreak
Setting '\blx@datetype time=24h'}%
- \setkeys{blx@opt@pre}{\blx@datetype time=24h}}%
+ \blx@kv@setkeys{blx@opt@pre}{\blx@datetype time=24h}}%
\iftoggle{blx@julian}
{\blx@warn@conflopt{%
'#1=iso' requires 'julian=false'.\MessageBreak
Setting 'julian=false'}%
- \setkeys{blx@opt@pre}{julian=false}}
+ \blx@kv@setkeys{blx@opt@pre}{julian=false}}
{}%
\nottoggle{blx@datezeros}
{\blx@warn@conflopt{%
'#1=iso' requires 'datezeros=true'.\MessageBreak
Setting 'datezeros=true'}%
- \setkeys{blx@opt@pre}{datezeros=true}}
+ \blx@kv@setkeys{blx@opt@pre}{datezeros=true}}
{}%
\nottoggle{blx@timezeros}
{\blx@warn@conflopt{%
'#1=iso' requires 'timezeros=true'.\MessageBreak
Setting 'timezeros=true'}%
- \setkeys{blx@opt@pre}{timezeros=true}}
+ \blx@kv@setkeys{blx@opt@pre}{timezeros=true}}
{}%
\nottoggle{blx@seconds}
{\blx@warn@conflopt{%
'#1=iso' requires 'seconds=true'.\MessageBreak
Setting 'seconds=true'}%
- \setkeys{blx@opt@pre}{seconds=true}}
+ \blx@kv@setkeys{blx@opt@pre}{seconds=true}}
{}}
{}}%
\abx@dodates
@@ -15322,5 +15568,7 @@
\def\BiblatexHungarianWarningOff{\global\let\lbx@hu@loadinfo\@empty}
\def\BiblatexLatvianWarningOff{\global\let\lbx@lv@loadinfo\@empty}
+\def\BiblatexSplitbibDefernumbersWarningOff{%
+ \global\let\blx@printbibchecks@suppresswarn\@empty}
\endinput
diff --git a/macros/latex/contrib/biblatex/latex/blx-bibtex.def b/macros/latex/contrib/biblatex/latex/blx-bibtex.def
index c333e5f17d..03d6781131 100644
--- a/macros/latex/contrib/biblatex/latex/blx-bibtex.def
+++ b/macros/latex/contrib/biblatex/latex/blx-bibtex.def
@@ -207,52 +207,6 @@
\let\iflabeldateuncertain\@secondoftwo
\let\iflabelenddateuncertain\@secondoftwo}
-% {<string>}
-% This mustn't be robust as it's likely to be used mainly in tests and so
-% needs to be expandable
-\renewcommand*\rangelen[1]{%
- \ifblank{#1}
- {0}%
- {\expandafter\blx@rangelen@range\romannumeral-`\q%
- #1\bibrangedash\bibrangedash&%
- }}
-
-\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
- \ifblank{#3}
- {\blx@rangelen@hyphen#1--&}
- {\blx@rangelen@check{#1}{#2}}%
-}
-\def\blx@rangelen@hyphen#1-#2-#3&{%
- \ifblank{#3}
- {1}% No range at all: assume one page
- {\blx@rangelen@check{#1}{#2}}%
-}
-\def\blx@rangelen@check#1#2{%
- \expandafter\blx@rangelen@check@aux
- \number\numexpr
- \blx@rangelen@check@int{#2}
- -
- \blx@rangelen@check@int{#1}
- + 1
- \relax
- &\stop
-}
-\def\blx@rangelen@check@aux#1&#2\stop{%
- \ifblank{#2}
- {#1}
- {-1}%
-}
-\def\blx@rangelen@check@int#1{%
- \ifblank{#1}
- {0&}
- {%
- \if\number\numexpr0#1-0#1\relax0
- #1
- \else
- 0&
- \fi
- }%
-}
% Alter message text
\patchcmd{\blx@bbl@warn}{Biber}{BibTeX}{}{}
@@ -330,6 +284,26 @@
{}%
\global\csundef{blx@refp@\the\c@refsection @#1}}
+\def\blx@citation@xref#1{%
+ \begingroup
+ \edef\blx@tempa{blx@refp@\the\c@refsection @%
+ \csname blx@refc@\the\c@refsection @#1\endcsname}%
+ \ifcsdef\blx@tempa
+ {\ifinlistcs{#1}\blx@tempa
+ {}
+ {\listcsxadd\blx@tempa{#1}}%
+ \blx@tempcnta\z@
+ \def\do##1{\advance\blx@tempcnta\@ne}%
+ \dolistcsloop\blx@tempa}
+ {\listcsxadd\blx@tempa{#1}%
+ \blx@tempcnta\@ne}%
+ \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax
+ \else
+ \expandafter\expandafter\expandafter\blx@citation@entry
+ \expandafter\expandafter\expandafter{%
+ \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef
+ \fi}
+
\def\blx@bblend{%
\ifcsdef{blx@refs@\the\c@refsection}%
{\begingroup
@@ -343,20 +317,122 @@
\global\togglefalse{blx@addset}}
{}}
-\def\blx@citation#1#2{%
- \ifbool{citerequest}
- {\ifcsdef{blx@setp@\the\c@refsection @#1}
- {\blx@citation@set{#1}{#2}}
- {\ifcsdef{blx@setc@\the\c@refsection @#1}
- {\blx@citation@inset{#1}{#2}}
- {\blx@citation@entry{#1}{#2}}}%
- \ifcsdef{blx@refc@\the\c@refsection @#1}%
- {\blx@citation@xref{#1}}
- {}}
- {}}
+% set support
+
+% We'll generate 'fake sets' for sorting.
+% A fake set will be the copy of a normal set but with a crossref
+% to the first set member, that way it inherits sorting info.
+
+\def\blx@grabfirstcsvitem#1,#2\blx@grabfirstcsvitem@end{#1}
+
+\def\blx@btx@fakesetentry#1#2#3#4{%
+ \blx@nl
+ @set{#1,\blx@nl
+ \space\space fakeset = {#2},\blx@nl
+ \space\space entryset = {#3},\blx@nl
+ \space\space crossref = {#4},\blx@nl
+ }%
+}
+
+\def\blx@fakeset@prefix{blx@fakeset-}
+
+\protected\def\blx@writefakeset@oo#1#2{%
+ \begingroup
+ \edef\blx@tempa{\endgroup
+ \noexpand\blx@writefakeset
+ {\expandonce{#1}}
+ {\expandonce{#2}}}%
+ \blx@tempa
+}
+
+\protected\def\blx@writefakeset#1#2{%
+ \blx@auxwrite\blx@bcfout{}{%
+ \blx@btx@fakesetentry
+ {\blx@fakeset@prefix#1}
+ {#1}
+ {#2}
+ {\blx@grabfirstcsvitem#2,\blx@grabfirstcsvitem@end}}}
+
+\protected\def\blx@bbl@fakeset#1{%
+ \csxdef{blx@isfakeset@\the\c@refsection @\abx@field@entrykey}{%
+ \detokenize{#1}}%
+ \global\cslet{blx@getfakeset@\the\c@refsection @#1}\abx@field@entrykey
+}
+
+% we can't rely on \inset in the .bbl (which should be in the child
+% entry), so we produce setc manually from the @set parent
+% but the bibliography may not be in a nice order to grab setc
+% properly, so we need to save setc data in the .aux file
+\appto\blx@secinit{%
+ \cslet{blx@setclist@\the\c@refsection}\@empty
+ \cslet{blx@fakesetplist@\the\c@refsection}\@empty}
+
+\apptocmd{\blx@bbl@set@i}
+ {\ifcsundef{blx@isfakeset@\the\c@refsection @\abx@field@entrykey}
+ {\csxdef{blx@setc@\the\c@refsection @#1}{\abx@field@entrykey}%
+ \listcsxadd{blx@setclist@\the\c@refsection}{\detokenize{#1}}}
+ {}}
+ {}
+ {\blx@error
+ {Failed to patch '\string\blx@bbl@set@i'}
+ {Patching '\string\blx@bbl@set@i' failed for some reason.
+ \MessageBreak
+ Please report this bug}}
+
+% {<section>}{<set child>}{<set parent>}
+\protected\def\blx@aux@set@setc#1#2#3{%
+ \csxdef{blx@setc@#1@#2}{#3}}
+
+\protected\def\blx@aux@write@setc#1#2#3{%
+ \blx@auxwrite\blx@aux{}{\string\blx@aux@set@setc{#1}{#2}{#3}}}
+
+\def\blx@write@setc#1{%
+ \ifcsundef{blx@setc@\the\c@refsection @#1}
+ {}
+ {\blx@aux@write@setc{\the\c@refsection}{#1}
+ {\csuse{blx@setc@\the\c@refsection @#1}}}}
+
+\appto\blx@bblend{%
+ \forlistcsloop{\blx@write@setc}{blx@setclist@\the\c@refsection}}
+
+% blx@setonly doesn't exist here, since it is defined in \inset,
+% rely on the existence of setc instead.
+% We also make sure to skip the actual @set entries and display
+% the fake ones.
+\patchcmd{\blx@bbl@endentry}
+ {\nottoggle{blx@setonly}}
+ {\ifentrytype{set}
+ {\ifcsundef{blx@isfakeset@\the\c@refsection @\abx@field@entrykey}
+ {\blx@writefakeset@oo{\abx@field@entrykey}{\abx@field@entryset}%
+ \settoggle{blx@skipbib}{true}%
+ \settoggle{blx@skipbiblist}{true}%
+ \settoggle{blx@skiplab}{true}}
+ {\listcsxadd{blx@fakesetplist@\the\c@refsection}{%
+ \abx@field@entrykey}}}
+ {}%
+ \ifcsundef{blx@setc@\the\c@refsection @\abx@field@entrykey}}
+ {}
+ {\blx@error
+ {Failed to patch '\string\blx@bbl@endentry'}
+ {Patching '\string\blx@bbl@endentry' failed for some reason.
+ \MessageBreak
+ Please report this bug}}
+
+% cite the fake set for our current set
+% the \expandafter party essentially does
+% \blx@citation@entry{\blx@fakeset@prefix#1}{\blx@msg@cundef}
+% (just correctly \detokenize'd and all)
\def\blx@citation@set#1#2{%
\blx@citation@entry{#1}{#2}%
+ \ifcsundef{blx@isfakeset@\the\c@refsection @#1}
+ {\begingroup
+ \expandafter\def\expandafter\blx@tempa\expandafter{%
+ \expandafter\detokenize\expandafter{\blx@fakeset@prefix#1}}%
+ \expandafter\expandafter\expandafter\blx@citation@entry
+ \expandafter\expandafter\expandafter{\blx@tempa}{\blx@msg@cundef}%
+ \endgroup}
+ {}%
\begingroup
\def\do##1{\blx@citation@entry{##1}\blx@msg@cundef}%
\expandafter\expandafter\expandafter\docsvlist
@@ -375,25 +451,141 @@
{\blx@citation@set{#1}}
{\blx@citation@entry{#1}}}
-\def\blx@citation@xref#1{%
+\def\blx@appentrydatato#1#2{%
+ \ifdef#2
+ {\appto#1{%
+ \def\noexpand#2{\expandonce#2}}}
+ {}}
+
+% if we have a fakeset, load the real @set to get the right entrykey
+% if we have a real @set, load the fakeset for all entry data
+% but make sure that the entrykey fits
+% in any case copy over some label data from its first child
+\def\blx@getdata#1{%
+ \csuse{blx@data@\the\c@refsection @\blx@refcontext@context @#1}%
+ \ifcsundef{blx@isfakeset@\the\c@refsection @#1}
+ {}
+ {\csuse{blx@data@\the\c@refsection @\blx@refcontext@context
+ @\csuse{blx@isfakeset@\the\c@refsection @#1}}}%
+ \ifcsundef{blx@getfakeset@\the\c@refsection @#1}
+ {}
+ {\let\blx@real@abx@field@entrykey\abx@field@entrykey
+ \csuse{blx@data@\the\c@refsection @\blx@refcontext@context
+ @\csuse{blx@getfakeset@\the\c@refsection @#1}}%
+ \let\abx@field@entrykey\blx@real@abx@field@entrykey}%
+ \ifcsundef{blx@setp@\the\c@refsection @\abx@field@entrykey}
+ {}
+ {\begingroup
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter\blx@tempa
+ \expandafter\expandafter\expandafter\expandafter
+ \expandafter\expandafter\expandafter{%
+ \expandafter\expandafter\expandafter\blx@grabfirstcsvitem
+ \csname blx@setp@\the\c@refsection
+ @\abx@field@entrykey\endcsname,\blx@grabfirstcsvitem@end}%
+ \let\blx@tempb\@empty
+ \blx@ifdata{\blx@tempa}
+ {\blx@getdata{\blx@tempa}%
+ \blx@appentrydatato\blx@tempb\abx@field@labelyear
+ \blx@appentrydatato\blx@tempb\abx@field@labelendyear
+ \blx@appentrydatato\blx@tempb\abx@field@labelmonth
+ \blx@appentrydatato\blx@tempb\abx@field@labelendmonth
+ \blx@appentrydatato\blx@tempb\abx@field@labelday
+ \blx@appentrydatato\blx@tempb\abx@field@labelendday
+ \blx@appentrydatato\blx@tempb\abx@field@labelprefix
+ \blx@appentrydatato\blx@tempb\abx@field@labelalpha
+ \blx@appentrydatato\blx@tempb\abx@field@extraalpha
+ \blx@appentrydatato\blx@tempb\abx@field@extradate}
+ {}%
+ \edef\blx@tempb{\endgroup\blx@tempb}%
+ \blx@tempb}%
+ \blx@adjustyears
+ \blx@getlabeldata
+ \blx@aliasfields
+ \blx@setcitecounter}
+
+
+\def\blx@bblend@redosetlabelwidth@i#1{%
\begingroup
- \edef\blx@tempa{blx@refp@\the\c@refsection @%
- \csname blx@refc@\the\c@refsection @#1\endcsname}%
- \ifcsdef\blx@tempa
- {\ifinlistcs{#1}\blx@tempa
- {}
- {\listcsxadd\blx@tempa{#1}}%
- \blx@tempcnta\z@
- \def\do##1{\advance\blx@tempcnta\@ne}%
- \dolistcsloop\blx@tempa}
- {\listcsxadd\blx@tempa{#1}%
- \blx@tempcnta\@ne}%
- \expandafter\endgroup\ifnum\blx@tempcnta<\blx@minxrefs\relax
- \else
- \expandafter\expandafter\expandafter\blx@citation@entry
- \expandafter\expandafter\expandafter{%
- \csname blx@refc@\the\c@refsection @#1\endcsname}\blx@msg@cundef
- \fi}
+ \blx@ifdata{#1}
+ {\blx@getdata{#1}%
+ \nottoggle{blx@skiplab}
+ {\iftoggle{blx@labelnumber}
+ {\ifdefempty\abx@field@localnumber
+ {}
+ {\ifundef\abx@field@shorthand
+ {\blx@bbl@labelnumberwidth@numeric{}}
+ {\blx@bbl@labelnumberwidth@shorthand{}}}}
+ {}%
+ \iftoggle{blx@labelalpha}
+ {\blx@bbl@labelalpha}
+ {}%
+ \iftoggle{blx@labeltitle}
+ {\blx@bbl@labeltitle}
+ {}%
+ \iftoggle{blx@labeltitleyear}
+ {\blx@bbl@labeltitleyear}
+ {}%
+ \iftoggle{blx@labeldateparts}
+ {\blx@bbl@labeldate}
+ {}%
+ \blx@bbl@labelname}
+ {}}
+ {}%
+ \endgroup
+}
+
+\def\blx@bblend@redosetlabelwidth{%
+ \forlistcsloop{\blx@bblend@redosetlabelwidth@i}
+ {blx@fakesetplist@\the\c@refsection}}
+
+\appto\blx@bblend{\blx@bblend@redosetlabelwidth}
+
+% categories need the correct entry key for fake sets
+\def\blx@addtocategory#1#2{%
+ % If we are adding a set member to a category, make sure we also add the
+ % set parent if it is cited. If it is cited, we should be using the set
+ % parent in the category, not the set child member. blx@setc@... will
+ % only exist if the set parent is also cited as it is only defined when a
+ % member contains \inset which only happens when the set parent is cited.
+ \ifcsdef{blx@setc@\the\c@refsection @#2}
+ {\blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}%
+ \abx@aux@category{#1}{\csuse{blx@setc@\the\c@refsection @#2}}}
+ {}%
+ \ifcsundef{blx@getfakeset@\the\c@refsection @#2}
+ {}
+ {\blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{\csuse{blx@getfakeset@\the\c@refsection @#2}}}%
+ \abx@aux@category{#1}{\csuse{blx@getfakeset@\the\c@refsection @#2}}}%
+ \blx@auxwrite\@mainaux{}{\string\abx@aux@category{#1}{#2}}%
+ \abx@aux@category{#1}{#2}}
+
+% dynamic entry sets
+
+\def\blx@btx@citeset#1#2{%
+ \blx@nl
+ @set{#1,\blx@nl
+ \space\space entryset = {#2},\blx@nl
+ }%
+}
+
+\protected\def\blx@setreq#1#2{%
+ \blx@auxwrite\blx@bcfout{}{\blx@btx@citeset{#1}{#2}}%
+ \blx@nocite@do{#1}}
+
+% xref and @set
+\def\blx@citation@i#1#2{%
+ \ifbool{citerequest}
+ {\ifcsdef{blx@setp@\the\c@refsection @#1}
+ {\blx@citation@set{#1}{#2}}
+ {\ifcsdef{blx@setc@\the\c@refsection @#1}
+ {\blx@citation@inset{#1}{#2}}
+ {\blx@citation@entry{#1}{#2}}}%
+ \ifcsdef{blx@refc@\the\c@refsection @#1}%
+ {\blx@citation@xref{#1}}
+ {}}
+ {}}
% refcontexts are out, but we can try to save labelprefix
@@ -406,7 +598,7 @@
% in \blx@refcontext@labelprefix@real and pass it to the aux file.
% There are differences to the result obtained with Biber,
% but it should be good enough for very simple applications.
-\define@key{blx@refcontext}{labelprefix}{%
+\blx@kv@defkey{blx@refcontext}{labelprefix}{%
\xdef\blx@refcontext@labelprefix@real{#1}%
\iftoggle{blx@defernumbers}
{}%
@@ -432,7 +624,7 @@
The option will be ignored}}
\def\blx@bibtexrefcontext@disable#1{%
- \define@key{blx@refcontext}{#1}{%
+ \blx@kv@defkey{blx@refcontext}{#1}{%
\blx@warn@bibtexrefcontext{#1}}}
\forcsvlist{\blx@bibtexrefcontext@disable}{%
@@ -539,12 +731,63 @@
}
\def\blx@ctrlwrite{%
- % \sortalphaothers should only contain safe characters,
- % so we should be able to \edef it
+ \begingroup
+ \blx@safe@actives
+ \let\protect\string
\edef\blx@sortalphaothers{\sortalphaothers}%
\immediate\openout\blx@write\blx@ctrlfile\blxauxsuffix.bib\relax
\blx@auxwrite\blx@write{}{\blx@ctrl}%
- \immediate\closeout\blx@write}
+ \endgroup
+ \AfterEndDocument{\immediate\closeout\blx@write}}
+
+
+% {<string>}
+% This mustn't be robust as it's likely to be used mainly in tests and so
+% needs to be expandable
+\renewcommand*\rangelen[1]{%
+ \ifblank{#1}
+ {0}%
+ {\expandafter\blx@rangelen@range\romannumeral-`\q%
+ #1\bibrangedash\bibrangedash&%
+ }}
+
+\def\blx@rangelen@range#1\bibrangedash#2\bibrangedash#3&{%
+ \ifblank{#3}
+ {\blx@rangelen@hyphen#1--&}
+ {\blx@rangelen@check{#1}{#2}}%
+}
+\def\blx@rangelen@hyphen#1-#2-#3&{%
+ \ifblank{#3}
+ {1}% No range at all: assume one page
+ {\blx@rangelen@check{#1}{#2}}%
+}
+\def\blx@rangelen@check#1#2{%
+ \expandafter\blx@rangelen@check@aux
+ \number\numexpr
+ \blx@rangelen@check@int{#2}
+ -
+ \blx@rangelen@check@int{#1}
+ + 1
+ \relax
+ &\stop
+}
+\def\blx@rangelen@check@aux#1&#2\stop{%
+ \ifblank{#2}
+ {#1}
+ {-1}%
+}
+\def\blx@rangelen@check@int#1{%
+ \ifblank{#1}
+ {0&}
+ {%
+ \if\number\numexpr0#1-0#1\relax0
+ #1
+ \else
+ 0&
+ \fi
+ }%
+}
+
% Disable some interfaces
diff --git a/macros/latex/contrib/biblatex/latex/blx-case-expl3.def b/macros/latex/contrib/biblatex/latex/blx-case-expl3.def
new file mode 100644
index 0000000000..e9b7f23289
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/blx-case-expl3.def
@@ -0,0 +1,271 @@
+\RequirePackage{expl3}[2020/04/06]
+\RequirePackage{xparse}
+\ProvidesExplFile {blx-case-expl3} {\abx@date} {\abx@version}
+ {expl3 case changing code for biblatex}
+
+% Map for babel/polyglossia names
+% to BCP-47-like l3text names.
+% We only need maps for l3text names that do something
+% as of 2020/04/06 those names are
+% az, de-alt, el, lt, nl, tr.
+% biblatex currently only supports dutch, greek and turkish
+% so we only map those.
+% de-alt is optional and still unusual, so *we* don't map it,
+% but a user could map it themselves.
+
+\prop_new:N \l__biblatex_babel_to_pseudobcp_prop
+
+\cs_generate_variant:Nn \msg_info:nnnnn { nnnxn }
+
+\cs_new_protected:Npn \biblatex_maplang_babel_to_pseudobcp:nn #1 #2
+ {
+ \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
+ {
+ \msg_info:nnnxn { biblatex }
+ { overwrite-babel-to-pseudobcp-map }
+ {#1}
+ {\prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}}
+ {#2}
+ }
+ \prop_put:Nnn \l__biblatex_babel_to_pseudobcp_prop {#1} {#2}
+ }
+
+\NewDocumentCommand \DeclareBabelToExplLanguageMapping {mm}
+ {
+ \biblatex_maplang_babel_to_pseudobcp:nn {#1} {#2}
+ }
+
+\cs_generate_variant:Nn \msg_info:nnnn { nnnx }
+
+\cs_new_protected:Npn \biblatex_unmaplang_babel_to_pseudobcp:n #1
+ {
+ \prop_if_in:NnT \l__biblatex_babel_to_pseudobcp_prop {#1}
+ {
+ \msg_info:nnnx { biblatex }
+ { remove-babel-to-pseudobcp-map }
+ {#1}
+ { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#1} }
+ }
+ \prop_remove:Nn \l__biblatex_babel_to_pseudobcp_prop {#1}
+ }
+
+\NewDocumentCommand \UndeclareBabelToExplLanguageMapping {m}
+ {
+ \str_if_eq:nnTF {#1} {*}
+ { \prop_clear:N \l__biblatex_babel_to_pseudobcp_prop }
+ { \biblatex_unmaplang_babel_to_pseudobcp:n {#1} }
+ }
+
+% Don't put this into biblatex.sty, since
+% \DeclareBabelToExplLanguageMapping has no equivalent in the LaTeX2e
+% code.
+\DeclareBabelToExplLanguageMapping{dutch}{nl}
+\DeclareBabelToExplLanguageMapping{greek}{el}
+\DeclareBabelToExplLanguageMapping{turkish}{tr}
+
+% Our copy of \l_text_titlecase_check_letter_bool
+\bool_new:N \l_biblatex_titlecase_check_letter_bool
+% Just to be clear: unlike l3text our default is "false"
+\bool_set_false:N \l_biblatex_titlecase_check_letter_bool
+
+% Helper macro to avoid unnecessary repetition of the same structure
+% {<case [lowercase|uppercase|titlecase|titlecase_first]>}
+% {<babel language>}{<text>}
+% We use that \prop_item:Nn is empty if the item is not present
+% and that \text_...:nn becomes \text_...:n if the first argument
+% is empty.
+\cs_new_protected:Npn \__biblatex_text_makeconverter:nnn #1 #2 #3
+ {
+ \group_begin:
+ \bool_if_exist:NTF \l_text_titlecase_check_letter_bool
+ {
+ \bool_set_eq:NN \l_text_titlecase_check_letter_bool
+ \l_biblatex_titlecase_check_letter_bool
+ }
+ {
+ % should we raise an error or at least issue a warning here?
+ }
+ \use:c { text_#1:nn }
+ { \prop_item:Nn \l__biblatex_babel_to_pseudobcp_prop {#2} } {#3}
+ \group_end:
+ }
+
+
+\cs_new:Npn \biblatex_text_lowercase:nn #1 #2
+ {
+ \__biblatex_text_makeconverter:nnn {lowercase} {#1} {#2}
+ }
+
+\cs_generate_variant:Nn \biblatex_text_lowercase:nn { Vn }
+
+\cs_new:Npn \biblatex_text_lowercase:n #1
+ {
+ \biblatex_text_lowercase:Vn \blx@languagename {#1}
+ }
+
+\cs_set_eq:NN \blx@maketext@lowercase \biblatex_text_lowercase:n
+
+
+\cs_new:Npn \biblatex_text_uppercase:nn #1 #2
+ {
+ \__biblatex_text_makeconverter:nnn {uppercase} {#1} {#2}
+ }
+
+\cs_generate_variant:Nn \biblatex_text_uppercase:nn { Vn }
+
+\cs_new:Npn \biblatex_text_uppercase:n #1
+ {
+ \biblatex_text_uppercase:Vn \blx@languagename {#1}
+ }
+
+\cs_set_eq:NN \blx@maketext@uppercase \biblatex_text_uppercase:n
+
+
+\cs_new:Npn \biblatex_text_makecapital:nn #1 #2
+ {
+ \__biblatex_text_makeconverter:nnn {titlecase_first} {#1} {#2}
+ }
+
+\cs_generate_variant:Nn \biblatex_text_makecapital:nn { Vn }
+
+\cs_new:Npn \biblatex_text_makecapital:n #1
+ {
+ \biblatex_text_makecapital:Vn \blx@languagename {#1}
+ }
+
+\cs_set_eq:NN \blx@maketext@makecapital \biblatex_text_makecapital:n
+
+\NewDocumentCommand \MakeCapital {m}
+ {
+ \biblatex_text_makecapital:n {#1}
+ }
+
+
+
+% BibTeX to expl3 case protection code by Joseph Wright
+% https://github.com/plk/biblatex/issues/960#issuecomment-578435859
+% and Bruno Le Floch
+% https://github.com/moewew/biblatex/commit/c485f1b8079d56497b17343d7883b8fcd42f961a#r39225533
+\tl_put_right:Nn \l_text_expand_exclude_tl { \NoCaseChange }
+
+\tl_put_right:Nn \l_text_case_exclude_arg_tl { \NoCaseChange }
+
+\cs_new:Npn \biblatex_text_bibtex_to_expl:n #1
+ {
+ \__biblatex_text_bibtex_loop:w #1
+ { \q_recursion_tail } \q_recursion_stop
+ }
+
+\cs_new:Npn \__biblatex_text_bibtex_loop:w #1 #
+ {
+ \exp_not:n {#1}
+ \__biblatex_text_bibtex_group:n
+ }
+
+\cs_new:Npn \__biblatex_text_bibtex_group:n #1
+ {
+ \quark_if_recursion_tail_stop:n {#1}
+ {
+ \bool_lazy_and:nnTF
+ { \tl_if_head_is_N_type_p:n {#1} }
+ { \exp_after:wN \token_if_cs_p:N \tl_head:w #1 \q_stop }
+ { \exp_not:n {#1} }
+ { \exp_not:n { \NoCaseChange {#1} } }
+ }
+ \__biblatex_text_bibtex_loop:w
+ }
+
+\cs_new_eq:NN \biblatex_text_sentencecase_preprocess:n
+ \biblatex_text_bibtex_to_expl:n
+
+
+% By default we emulate BibTeX's brace case protection rules
+% but the user can turn that off for a more sane behaviour
+% that only relies on \NoCaseChange.
+\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
+ \str_case:nnF {#1}
+ {
+ { true }
+ {
+ \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
+ \biblatex_text_bibtex_to_expl:n
+ }
+ { false }
+ {
+ \cs_set_eq:NN \biblatex_text_sentencecase_preprocess:n
+ \use:n
+ }
+ }
+ {
+ \msg_error:nnn { biblatex } { invalid-value-bibtexcaseprotection }
+ {#1}
+ }
+}
+
+
+\cs_new:Npn \biblatex_text_sentencecase:nn #1 #2
+ {
+ \__biblatex_text_makeconverter:nnn {titlecase} {#1} {#2}
+ }
+
+
+\cs_generate_variant:Nn \clist_if_in:NnTF { NxTF }
+
+\cs_generate_variant:Nn \biblatex_text_sentencecase:nn { Vo, xo }
+
+% If \DeclareCaseLangs says we should apply sentence casing,
+% we go for it and pass the language along to the sentence casing macro.
+% Preprocess is either the BibTeX-to-expl3 brace translator
+% or \@firstofone (do nothing),
+% we need to expand once to get rid of the latter.
+\NewDocumentCommand \MakeSentenceCase {sm}
+ {
+ \IfBooleanTF {#1}
+ {
+ \clist_if_in:NxTF
+ \l__biblatex_caselangs_clist { \blx@mksc@lang }
+ {
+ \biblatex_text_sentencecase:xo { \blx@mksc@lang }
+ { \biblatex_text_sentencecase_preprocess:n {#2} }
+ }
+ {#2}
+ }
+ {
+ \biblatex_text_sentencecase:Vo \blx@languagename
+ { \biblatex_text_sentencecase_preprocess:n {#2} }
+ }
+ }
+
+
+\clist_new:N \l__biblatex_caselangs_clist
+
+% {<language,language,...>}
+\NewDocumentCommand \DeclareCaseLangs {sm}
+ {
+ \IfBooleanF {#1}
+ { \clist_clear:N \l__biblatex_caselangs_clist }
+ \clist_put_left:Nn \l__biblatex_caselangs_clist {#2}
+ }
+
+% \DeclareCaseLangs invocation is in biblatex.sty
+
+
+\NewDocumentCommand \ifcaselang {O{\blx@languagename}}
+ {
+ \clist_if_in:NxTF \l__biblatex_caselangs_clist {#1}
+ }
+
+
+
+\msg_new:nnnn { biblatex } { invalid-value-bibtexcaseprotection }
+ { Invalid~value~'#1'~for~option~'bibtexcaseprotection'. }
+ { Valid~values~for~'bibtexcaseprotection'~are~'true'~and~'false'. }
+
+\msg_new:nnn { biblatex } { remove-babel-to-pseudobcp-map }
+ { Removing~babel->l3text~language~mapping~for~'#1'~to~'#2'. }
+
+\msg_new:nnn { biblatex } { overwrite-babel-to-pseudobcp-map }
+ { Overwriting~babel->l3text~language~mapping~for~'#1'~from~
+ '#2'~to~'#3'. }
+
+\endinput
diff --git a/macros/latex/contrib/biblatex/latex/blx-case-latex2e.def b/macros/latex/contrib/biblatex/latex/blx-case-latex2e.def
new file mode 100644
index 0000000000..85641d2e66
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/blx-case-latex2e.def
@@ -0,0 +1,290 @@
+\ProvidesFile{blx-case-latex2e.def}
+[\abx@cptid]
+
+% we don't have l3text's (pseudo)BCP47 language codes here
+\newrobustcmd*{\DeclareBabelToExplLanguageMapping}[2]{%
+ \blx@warning{The command '\string\DeclareBabelToExplLanguageMapping'%
+ \MessageBreak
+ is only available with the expl3 case changing\MessageBreak
+ implementation ('casechanger=expl3').\MessageBreak
+ Ignoring}}
+
+\newrobustcmd*{\UndeclareBabelToExplLanguageMapping}[1]{%
+ \blx@warning{The command '\string\UndeclareBabelToExplLanguageMapping'%
+ \MessageBreak
+ is only available with the expl3 case changing\MessageBreak
+ implementation ('casechanger=expl3').\MessageBreak
+ Ignoring}}
+
+\def\blx@maketext@lowercase{\MakeLowercase}
+
+\def\blx@maketext@uppercase{\MakeUppercase}
+
+\def\blx@maketext@makecapital{\MakeCapital}
+
+% {<text>}
+\newrobustcmd{\MakeCapital}[1]{%
+ \begingroup
+ \blx@mkcp@init
+ \protected@edef\blx@tempa{#1}%
+ \expandafter\blx@mkcp@parse\blx@tempa\@empty\blx@mkcp@end}
+
+\def\blx@mkcp@init{%
+ \def\blx@mkcp@iec{\noexpand\blx@mkcp@iec\noexpand}%
+ \def\blx@mkcp@bbl{\noexpand\blx@mkcp@bbl\noexpand}%
+ \def\blx@mkcp@sgl{\noexpand\blx@mkcp@sgl\noexpand}%
+ \def\blx@mkcp@dbl{\noexpand\blx@mkcp@dbl\noexpand}%
+ \def\do##1{\def##1{\blx@mkcp@sgl##1}}\abx@dosingleaccents
+ \def\do##1{\def##1{\blx@mkcp@dbl##1}}\abx@dodoubleaccents
+ \def\IeC##1{\blx@mkcp@iec\IeC{##1}}%
+ \def\@tabacckludge##1{%
+ \expandafter\blx@mkcp@sgl\csname\string##1\endcsname}}
+
+\begingroup
+\catcode`\"=\active
+\gappto\blx@mkcp@init{%
+ \ifnum\catcode`\"=\active
+ \def"#1{\blx@mkcp@bbl"\noexpand#1}%
+ \fi}
+\endgroup
+
+\def\blx@mkcp@parse{%
+ \futurelet\@let@token\blx@mkcp@eval}
+
+\long\def\blx@mkcp@eval{%
+ \ifx\@let@token\blx@mkcp@iec
+ \expandafter\blx@mkcp@getiec
+ \fi
+ \ifx\@let@token\blx@mkcp@bbl
+ \expandafter\blx@mkcp@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@sgl
+ \expandafter\blx@mkcp@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@dbl
+ \expandafter\blx@mkcp@getthree
+ \fi
+ \blx@mkcp@case}
+
+\def\blx@mkcp@getiec#1\blx@mkcp@case#2#3#4{%
+ \blx@mkcp@case{#2#3{#4}}}
+
+\def\blx@mkcp@gettwo#1\blx@mkcp@case#2#3#4{%
+ \blx@mkcp@case{#2#3#4}}
+
+\def\blx@mkcp@getthree#1\blx@mkcp@case#2#3#4#5{%
+ \blx@mkcp@case{#2#3#4#5}}
+
+\long\def\blx@mkcp@case#1{%
+ \begingroup
+ \def\i{I}\def\j{J}%
+ \def\do##1##2{\let##1##2\do}%
+ \expandafter\do\@uclclist\relax{\relax\@gobble}%
+ \uppercase{\protected@edef\blx@tempa{\endgroup\blx@mkcp@end#1}}%
+ \blx@tempa}
+
+\protected\long\def\blx@mkcp@end#1\blx@mkcp@end{%
+ \let\blx@mkcp@iec\noexpand
+ \let\blx@mkcp@bbl\noexpand
+ \let\blx@mkcp@sgl\noexpand
+ \let\blx@mkcp@dbl\noexpand
+ \protected@edef\blx@tempa{\endgroup#1}%
+ \blx@tempa}
+
+
+\DeclareBiblatexOption{global,type,entry}[boolean]{bibtexcaseprotection}[true]{%
+ \ifstrequal{#1}{true}
+ {}
+ {\ifstrequal{#1}{false}
+ {\blx@warning
+ {The option 'bibtexcaseprotection=false' is only\MessageBreak
+ available with expl3}}
+ {\blx@err@invopt{bibtexcaseprotection=#1}
+ {Valid values for 'bibtexcaseprotection' are 'true' and
+ 'false'\MessageBreak
+ (but 'false' only works with expl3 code)}}}}
+
+% {<text>}
+\newrobustcmd*{\MakeSentenceCase}{%
+ \@ifstar\blx@mksc@i\blx@mksc@ii}
+
+% \blx@cmksc@lang is defined in biblatex.sty
+% it expands to the applicable language for the title field
+\def\blx@mksc@i{%
+ \xifinlist\blx@mksc@lang\blx@cmksc@lang
+ {\blx@mksc@ii}
+ {\@firstofone}}
+
+\long\def\blx@mksc@ii#1{%
+ \begingroup
+ \let\blx@tempa\@empty
+ \let\blx@tempb\@empty
+ \blx@mksc@init
+ \protected@edef\@tempa{#1}%
+ \expandafter\blx@mksc@parse\@tempa\blx@mksc@end}
+
+\def\blx@mksc@init{%
+ \blx@mkcp@init
+ \def\blx@mkcp@nil{\noexpand\blx@mkcp@nil\noexpand}%
+ \def\i{\blx@mkcp@nil\i}\def\j{\blx@mkcp@nil\j}%
+ \def\do##1{%
+ \ifx##1\relax
+ \else
+ \def##1{\blx@mkcp@nil##1}%
+ \expandafter\do
+ \fi}%
+ \expandafter\do\@uclclist\relax}
+
+\def\blx@mksc@parse{%
+ \futurelet\@let@token\blx@mksc@eval}
+
+\let\blx@asttoken=*
+
+\def\blx@mksc@eval{%
+ \ifx\@let@token\blx@mksc@end
+ \expandafter\blx@mksc@end
+ \fi
+ \ifx\@let@token\bgroup
+ \expandafter\blx@mksc@group
+ \fi
+ \ifx\@let@token\@sptoken
+ \expandafter\blx@mksc@space
+ \fi
+ \ifx\@let@token\blx@mkcp@nil
+ \expandafter\blx@mksc@getone
+ \fi
+ \ifx\@let@token\blx@mkcp@iec
+ \expandafter\blx@mksc@getiec
+ \fi
+ \ifx\@let@token\blx@mkcp@bbl
+ \expandafter\blx@mksc@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@sgl
+ \expandafter\blx@mksc@gettwo
+ \fi
+ \ifx\@let@token\blx@mkcp@dbl
+ \expandafter\blx@mksc@getthree
+ \fi
+ \ifx\@let@token\blx@asttoken
+ \expandafter\blx@mksc@cs
+ \fi
+ \if\noexpand\@let@token\relax
+ \expandafter\blx@mksc@cs
+ \fi
+ \blx@mksc@other}
+
+\def\blx@mksc@end#1\blx@mksc@end{%
+ \blx@mksc@eject
+ \let\blx@mkcp@nil\noexpand
+ \let\blx@mkcp@iec\noexpand
+ \let\blx@mkcp@bbl\noexpand
+ \let\blx@mkcp@sgl\noexpand
+ \let\blx@mkcp@dbl\noexpand
+ \let\MakeUppercase\relax
+ \let\MakeLowercase\relax
+ \protected@edef\blx@tempa{\endgroup\blx@tempa}%
+ \blx@tempa}
+
+\long\def\blx@mksc@group#1\blx@mksc@other#2{%
+ \futurelet\@let@token\blx@mksc@ingroup#2&{#2}%
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\long\def\blx@mksc@ingroup#1&#2{%
+ \if\noexpand\@let@token\relax
+ \ifx\@let@token\blx@mkcp@sgl
+ \blx@mksc@nocase{{#2}}%
+ \else
+ \ifx\@let@token\blx@mkcp@dbl
+ \blx@mksc@nocase{{#2}}%
+ \else
+ \blx@mksc@locase{{#2}}%
+ \fi
+ \fi
+ \else
+ \blx@mksc@nocase{{#2}}%
+ \fi}
+
+\def\blx@mksc@space{\def\blx@mksc@space##1\blx@mksc@other}
+\csuse{blx@mksc@space} {%
+ \blx@mksc@anycase{ }%
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\long\def\blx@mksc@cs#1\blx@mksc@other#2{%
+ \ifcat\noexpand~\noexpand#2%
+ \blx@mksc@locase{#2}%
+ \else
+ \blx@mksc@nocase{#2}%
+ \fi
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\def\blx@mksc@getiec#1\blx@mksc@other#2#3#4{%
+ \blx@mksc@other{#2#3{#4}}}
+
+\def\blx@mksc@getone#1\blx@mksc@other#2#3{%
+ \blx@mksc@other{#2#3}}
+
+\def\blx@mksc@gettwo#1\blx@mksc@other#2#3#4{%
+ \blx@mksc@other{#2#3#4}}
+
+\def\blx@mksc@getthree#1\blx@mksc@other#2#3#4#5{%
+ \blx@mksc@other{#2#3#4#5}}
+
+\long\def\blx@mksc@other#1{%
+ \blx@mksc@locase{#1}%
+ \blx@mksc@endhead
+ \blx@mksc@parse}
+
+\def\blx@mksc@locase{%
+ \appto\blx@tempb}
+
+\def\blx@mksc@nocase{%
+ \blx@mksc@eject
+ \appto\blx@tempa}
+
+\def\blx@mksc@anycase{%
+ \ifx\blx@tempb\@empty
+ \expandafter\appto
+ \expandafter\blx@tempa
+ \else
+ \expandafter\appto
+ \expandafter\blx@tempb
+ \fi}
+
+\def\blx@mksc@eject{%
+ \ifx\blx@tempb\@empty
+ \else
+ \eappto\blx@tempa{\noexpand\MakeLowercase{\expandonce\blx@tempb}}%
+ \let\blx@tempb\@empty
+ \fi}
+
+\def\blx@mksc@endhead{%
+ \ifx\blx@tempb\@empty
+ \else
+ \eappto\blx@tempa{\noexpand\MakeCapital{\expandonce\blx@tempb}}%
+ \let\blx@tempb\@empty
+ \fi
+ \let\blx@mksc@endhead\relax}
+
+
+
+% {<language,language,...>}
+\newrobustcmd*{\DeclareCaseLangs}{%
+ \@ifstar
+ {\blx@defcaselangs}
+ {\global\let\blx@cmksc@lang\@empty
+ \blx@defcaselangs}}
+
+\def\blx@defcaselangs#1{%
+ \ifblank{#1}
+ {}
+ {\forcsvlist{\listgadd\blx@cmksc@lang}{#1}}}
+
+% \DeclareCaseLangs invocation is in biblatex.sty
+
+\newrobustcmd*{\ifcaselang}[1][\blx@languagename]{%
+ \xifinlist{#1}\blx@cmksc@lang}
+
+\endinput
diff --git a/macros/latex/contrib/biblatex/latex/blx-compat.def b/macros/latex/contrib/biblatex/latex/blx-compat.def
index e315c5cc88..546f16af43 100644
--- a/macros/latex/contrib/biblatex/latex/blx-compat.def
+++ b/macros/latex/contrib/biblatex/latex/blx-compat.def
@@ -119,29 +119,29 @@
% biblatex <1.6
-\define@key{blx@bib}{maxnames}{\blx@warn@depropt{maxnames}}
-\define@key{blx@los}{maxnames}{\blx@warn@depropt{maxnames}}
-\define@key{blx@bbs}{maxnames}{\blx@warn@depropt{maxnames}}
-\define@key{blx@bbg}{maxnames}{\blx@warn@depropt{maxnames}}
-\define@key{blx@bbc}{maxnames}{\blx@warn@depropt{maxnames}}
-
-\define@key{blx@bib}{minnames}{\blx@warn@depropt{minnames}}
-\define@key{blx@los}{minnames}{\blx@warn@depropt{minnames}}
-\define@key{blx@bbs}{minnames}{\blx@warn@depropt{minnames}}
-\define@key{blx@bbg}{minnames}{\blx@warn@depropt{minnames}}
-\define@key{blx@bbc}{minnames}{\blx@warn@depropt{minnames}}
-
-\define@key{blx@bib}{maxitems}{\blx@warn@depropt{maxitems}}
-\define@key{blx@los}{maxitems}{\blx@warn@depropt{maxitems}}
-\define@key{blx@bbs}{maxitems}{\blx@warn@depropt{maxitems}}
-\define@key{blx@bbg}{maxitems}{\blx@warn@depropt{maxitems}}
-\define@key{blx@bbc}{maxitems}{\blx@warn@depropt{maxitems}}
-
-\define@key{blx@bib}{minitems}{\blx@warn@depropt{minitems}}
-\define@key{blx@los}{minitems}{\blx@warn@depropt{minitems}}
-\define@key{blx@bbs}{minitems}{\blx@warn@depropt{minitems}}
-\define@key{blx@bbg}{minitems}{\blx@warn@depropt{minitems}}
-\define@key{blx@bbc}{minitems}{\blx@warn@depropt{minitems}}
+\blx@kv@defkey{blx@bib}{maxnames}{\blx@warn@depropt{maxnames}}
+\blx@kv@defkey{blx@los}{maxnames}{\blx@warn@depropt{maxnames}}
+\blx@kv@defkey{blx@bbs}{maxnames}{\blx@warn@depropt{maxnames}}
+\blx@kv@defkey{blx@bbg}{maxnames}{\blx@warn@depropt{maxnames}}
+\blx@kv@defkey{blx@bbc}{maxnames}{\blx@warn@depropt{maxnames}}
+
+\blx@kv@defkey{blx@bib}{minnames}{\blx@warn@depropt{minnames}}
+\blx@kv@defkey{blx@los}{minnames}{\blx@warn@depropt{minnames}}
+\blx@kv@defkey{blx@bbs}{minnames}{\blx@warn@depropt{minnames}}
+\blx@kv@defkey{blx@bbg}{minnames}{\blx@warn@depropt{minnames}}
+\blx@kv@defkey{blx@bbc}{minnames}{\blx@warn@depropt{minnames}}
+
+\blx@kv@defkey{blx@bib}{maxitems}{\blx@warn@depropt{maxitems}}
+\blx@kv@defkey{blx@los}{maxitems}{\blx@warn@depropt{maxitems}}
+\blx@kv@defkey{blx@bbs}{maxitems}{\blx@warn@depropt{maxitems}}
+\blx@kv@defkey{blx@bbg}{maxitems}{\blx@warn@depropt{maxitems}}
+\blx@kv@defkey{blx@bbc}{maxitems}{\blx@warn@depropt{maxitems}}
+
+\blx@kv@defkey{blx@bib}{minitems}{\blx@warn@depropt{minitems}}
+\blx@kv@defkey{blx@los}{minitems}{\blx@warn@depropt{minitems}}
+\blx@kv@defkey{blx@bbs}{minitems}{\blx@warn@depropt{minitems}}
+\blx@kv@defkey{blx@bbg}{minitems}{\blx@warn@depropt{minitems}}
+\blx@kv@defkey{blx@bbc}{minitems}{\blx@warn@depropt{minitems}}
% Legacy alias for \printshorthands
\def\printshorthands{%
@@ -149,7 +149,7 @@
{\blx@printshorthands}
{\blx@printshorthands[]}}
-\def\blx@printshorthands[#1]{\printbiblist[#1]{shorthand}}
+\def\blx@printshorthands[#1]{\printbiblist[{#1}]{shorthand}}
% Legacy aliases
\def\AtBeginShorthands{\AtBeginBiblist{shorthand}}
@@ -164,17 +164,17 @@
'sortlos' option is deprecated.\MessageBreak
Please use 'sorting' option to '\string\printbiblist'}}
-\define@key{blx@bib1}{sorting}{%
+\blx@kv@defkey{blx@bib1}{sorting}{%
\blx@warning@noline{%
'sorting' option to '\string\printbibliography' is no longer supported.\MessageBreak
Please use 'sorting' option to '\string\newrefcontext'}}
-\define@key{blx@biblist1}{sorting}{%
+\blx@kv@defkey{blx@biblist1}{sorting}{%
\blx@warning@noline{%
'sorting' option to '\string\printbiblist' is no longer supported.\MessageBreak
Please use 'sorting' option to '\string\newrefcontext'}}
-\define@key{blx@bib2}{prefixnumbers}{%
+\blx@kv@defkey{blx@bib2}{prefixnumbers}{%
\blx@warning@noline{%
'prefixnumbers' option to '\string\printbibliography' is no longer supported.\MessageBreak
Please use 'labelprefix' option to '\string\newrefcontext'}}
@@ -198,17 +198,17 @@
\settoggle{blx@skipbiblist}{#1}}
% Legacy options moved to \namepart in \DeclareLabelalphaNameTemplate
-\define@key{blx@latem@field}{compound}{% deprecated
+\blx@kv@defkey{blx@latem@field}{compound}{% deprecated
\blx@warning@noline{%
Ignored 'compound' option to '\string\field' in '\string\DeclareLabelalphaNameTemplate'\MessageBreak
This is now the 'compound' option of '\string\namepart\space' in\MessageBreak
'\string\DeclareLabelalphaNameTemplate'}}
-\define@key{blx@latem@field}{pcompound}{% deprecated
+\blx@kv@defkey{blx@latem@field}{pcompound}{% deprecated
\blx@warning@noline{%
Ignored 'pcompound' option to '\string\field' in '\string\DeclareLabelalphaNameTemplate'\MessageBreak
This is now the 'compound' option of '\string\namepart' in\MessageBreak
'\string\DeclareLabelalphaNameTemplate'}}
-\define@key{blx@latem@field}{pstrwidth}{% deprecated
+\blx@kv@defkey{blx@latem@field}{pstrwidth}{% deprecated
\blx@warning@noline{%
Ignored 'pstrwidth' option to '\string\field' in '\string\DeclareLabelalphaNameTemplate'\MessageBreak
This is now the 'strwidth' option of '\string\namepart' in\MessageBreak
@@ -240,14 +240,14 @@
Please use 'inits' option to '\string\namepart'\MessageBreak
in '\string\DeclareSortingNamekeyTemplate' instead}}
-\define@key{blx@refcontext}{prefixnumbers}{%LEGACY(<3.3)
+\blx@kv@defkey{blx@refcontext}{prefixnumbers}{%LEGACY(<3.3)
\blx@warning@noline{%
prefixnumbers option to '\string\newrefcontext' has been renamed.\MessageBreak
Please use 'labelprefix' option instead}%
- \setkeys{blx@refcontext}{labelprefix=#1}}
+ \blx@kv@setkeys{blx@refcontext}{labelprefix=#1}}
% biblatex < 3.4
-\define@key{blx@bib1}{prefixnumbers}{}%LEGACY(<3.4) legacy name for labelprefix
+\blx@kv@defkey{blx@bib1}{prefixnumbers}{}%LEGACY(<3.4) legacy name for labelprefix
\DeprecateFieldWithReplacement{prefixnumber}{labelprefix}
\DeclareFieldAlias{prefixnumber}{labelprefix}
@@ -256,7 +256,7 @@
\blx@warning@noline{%
'datelabel' option is deprecated.\MessageBreak
Please use 'labeldate' instead}%
- \setkeys{blx@opt@pre}{labeldate=#1}}
+ \blx@kv@setkeys{blx@opt@pre}{labeldate=#1}}
\DeclareBibliographyOption[boolean]{labelyear}[true]{%
\blx@warning@noline{%
@@ -307,12 +307,12 @@
\mkdaterangeisoextra}
% biblatex < 3.8
-\define@key{blx@refcontext}{sortingnamekeyscheme}{%
+\blx@kv@defkey{blx@refcontext}{sortingnamekeyscheme}{%
\blx@warning@noline{'sortingnamekeyscheme' is deprecated.\MessageBreak
Please use 'sortingnamekeytemplatename' instead}%
\gdef\blx@refcontext@sortingnamekeytemplatename{#1}}
-\define@key{blx@assignrefcontext}{sortingnamekeyscheme}{%
+\blx@kv@defkey{blx@assignrefcontext}{sortingnamekeyscheme}{%
\blx@warning@noline{'sortingnamekeyscheme' is deprecated.\MessageBreak
Please use 'sortingnamekeytemplatename' instead}%
\def\blx@tempb{#1}}
@@ -351,4 +351,5 @@
Please use '\string\mkdaterangeisoextra'}%
\mkdaterangeisoextra}
+
\endinput
diff --git a/macros/latex/contrib/biblatex/latex/blx-dm.def b/macros/latex/contrib/biblatex/latex/blx-dm.def
index 4cbdfa5bb8..0667b577ae 100644
--- a/macros/latex/contrib/biblatex/latex/blx-dm.def
+++ b/macros/latex/contrib/biblatex/latex/blx-dm.def
@@ -106,11 +106,11 @@
\blx@xml@datamodel@entrytype{\blx@tempa}{##1}}}%
\ifblank{#1}
{\docsvlist{#2}}
- {\setkeys{blx@datamodel@entrytypes}{#1}
+ {\blx@kv@setkeys{blx@datamodel@entrytypes}{#1}
\docsvlist{#2}}%
\endgroup}
-\define@key{blx@datamodel@entrytypes}{skipout}[true]{% true|false
+\blx@kv@defkey{blx@datamodel@entrytypes}{skipout}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempa{ skip\string_output="true"}}
{}}
@@ -128,7 +128,7 @@
\boolfalse{dmskipout}%
\boolfalse{dmlabelfield}%
\let\blx@tempa\@empty
- \setkeys{blx@datamodel@field}{#1}%
+ \blx@kv@setkeys{blx@datamodel@field}{#1}%
\def\do##1{%
% Generic lists of field/datatypes for testing bib fields
\ifinlistcs{##1}{blx@datamodelfields@fieldtypes@\blx@dm@fieldtype}
@@ -240,7 +240,7 @@
\xifinlistcs{\blx@datetype ####1}{blx@datamodel@fields}
{}
{\listcsxadd{blx@datamodel@fields}{\blx@datetype ####1}}%
- \setkeys{blx@datamodel@field}{type=field,datatype=datepart,nullok}%
+ \blx@kv@setkeys{blx@datamodel@field}{type=field,datatype=datepart,nullok}%
\xappto\blx@bcf@datamodel@fields{%
\blx@xml@datamodel@field{\blx@tempa}{\blx@datetype ####1}}}%
\expandafter\docsvlist\expandafter{\blx@nullokdateparts}%
@@ -252,7 +252,7 @@
\xifinlistcs{\blx@datetype ####1}{blx@datamodel@fields}
{}
{\listcsxadd{blx@datamodel@fields}{\blx@datetype ####1}}%
- \setkeys{blx@datamodel@field}{type=field,datatype=datepart}%
+ \blx@kv@setkeys{blx@datamodel@field}{type=field,datatype=datepart}%
\xappto\blx@bcf@datamodel@fields{%
\blx@xml@datamodel@field{\blx@tempa}{\blx@datetype ####1}}}%
\expandafter\docsvlist\expandafter{\blx@notnulldateparts}%
@@ -261,25 +261,25 @@
\docsvlist{#2}
\endgroup}
-\define@key{blx@datamodel@field}{type}{% characters
+\blx@kv@defkey{blx@datamodel@field}{type}{% characters
\eappto\blx@tempa{ fieldtype="#1"}%
\def\blx@dm@fieldtype{#1}}
-\define@key{blx@datamodel@field}{datatype}{% characters
+\blx@kv@defkey{blx@datamodel@field}{datatype}{% characters
\eappto\blx@tempa{ datatype="#1"}%
\def\blx@dm@datatype{#1}}
-\define@key{blx@datamodel@field}{format}{% characters
+\blx@kv@defkey{blx@datamodel@field}{format}{% characters
\eappto\blx@tempa{ format="#1"}%
\def\blx@dm@format{#1}}
-\define@key{blx@datamodel@field}{nullok}[true]{% true|false
+\blx@kv@defkey{blx@datamodel@field}{nullok}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempa{ nullok="true"}}
{}}
-\define@key{blx@datamodel@field}{skipout}[true]{% true|false
+\blx@kv@defkey{blx@datamodel@field}{skipout}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempa{ skip\string_output="true"}%
\booltrue{dmskipout}}
{}}
-\define@key{blx@datamodel@field}{label}[true]{% true|false
+\blx@kv@defkey{blx@datamodel@field}{label}[true]{% true|false
\ifstrequal{#1}{true}
{\appto\blx@tempa{ label="true"}%
\booltrue{dmlabelfield}}
@@ -290,13 +290,13 @@
\let\blx@tempa\@empty
\ifblank{#1}
{\def\blx@tempa{string}}
- {\setkeys{blx@datamodel@constant}{#1}}%
+ {\blx@kv@setkeys{blx@datamodel@constant}{#1}}%
\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}%
\endgroup}
-\define@key{blx@datamodel@constant}{type}{%
+\blx@kv@defkey{blx@datamodel@constant}{type}{%
\def\blx@tempa{#1}}
\newrobustcmd*{\DeclareDatamodelMultiscriptEntryfields}[1]{%
@@ -340,7 +340,7 @@
\newcommand*{\blx@datamodel@constraint}[2][]{%
\let\blx@tempc\@empty
\let\blx@tempd\@empty
- \setkeys{blx@datamodel@constraint}{#1}%
+ \blx@kv@setkeys{blx@datamodel@constraint}{#1}%
\let\constraintfieldsxor\blx@datamodel@constraintfieldsxor
\let\constraintfieldsor\blx@datamodel@constraintfieldsor
\let\constraintfield\blx@datamodel@constraintfield
@@ -349,22 +349,22 @@
#2%
\eappto\blx@tempb{\blx@xml@datamodel@constraint{\blx@tempc}{\blx@tempd}}}
-\define@key{blx@datamodel@constraint}{type}{% characters
+\blx@kv@defkey{blx@datamodel@constraint}{type}{% characters
\eappto\blx@tempc{ type="#1"}}
-\define@key{blx@datamodel@constraint}{datatype}{% characters
+\blx@kv@defkey{blx@datamodel@constraint}{datatype}{% characters
\eappto\blx@tempc{ datatype="#1"}}
-\define@key{blx@datamodel@constraint}{rangemin}{% integer
+\blx@kv@defkey{blx@datamodel@constraint}{rangemin}{% integer
\eappto\blx@tempc{ rangemin="#1"}}
-\define@key{blx@datamodel@constraint}{rangemax}{% integer
+\blx@kv@defkey{blx@datamodel@constraint}{rangemax}{% integer
\eappto\blx@tempc{ rangemax="#1"}}
-\define@key{blx@datamodel@constraint}{pattern}{% regexp
+\blx@kv@defkey{blx@datamodel@constraint}{pattern}{% regexp
\eappto\blx@tempc{ pattern="#1"}}
\newcommand*{\blx@datamodel@constraint@antecedent}[2][]{%
\let\blx@tempe\@empty
\let\blx@temph\@empty
\let\constraintfield\blx@datamodel@constraintfieldsub
- \setkeys{blx@datamodel@constraint@quant}{#1}%
+ \blx@kv@setkeys{blx@datamodel@constraint@quant}{#1}%
#2%
\let\constraintfield\blx@datamodel@constraintfield% back to default
\eappto\blx@tempd{\blx@xml@datamodel@constraint@antecedent{\blx@tempe}{\blx@temph}}}
@@ -373,12 +373,12 @@
\let\blx@tempe\@empty
\let\blx@temph\@empty
\let\constraintfield\blx@datamodel@constraintfieldsub
- \setkeys{blx@datamodel@constraint@quant}{#1}%
+ \blx@kv@setkeys{blx@datamodel@constraint@quant}{#1}%
#2%
\let\constraintfield\blx@datamodel@constraintfield% back to default
\eappto\blx@tempd{\blx@xml@datamodel@constraint@consequent{\blx@tempe}{\blx@temph}}}
-\define@key{blx@datamodel@constraint@quant}{quantifier}{% characters
+\blx@kv@defkey{blx@datamodel@constraint@quant}{quantifier}{% characters
\eappto\blx@tempe{ quant="#1"}}
\newcommand*{\blx@datamodel@constraintfieldsxor}[1]{%
@@ -496,9 +496,11 @@
issue,
issuesubtitle,
issuetitle,
+ issuetitleaddon,
iswc,
journalsubtitle,
journaltitle,
+ journaltitleaddon,
label,
langid,
langidopts,
@@ -625,6 +627,7 @@
\DeclareDatamodelFields[type=field, datatype=code]{execute}
+% fields for all entry types
\DeclareDatamodelEntryfields{
abstract,
annotation,
@@ -632,6 +635,10 @@
bookpagination,
crossref,
day,
+ doi,
+ eprint,
+ eprintclass,
+ eprinttype,
endday,
endhour,
endminute,
@@ -665,6 +672,12 @@
listf,
minute,
month,
+ namea,
+ nameb,
+ namec,
+ nameatype,
+ namebtype,
+ namectype,
nameaddon,
options,
origday,
@@ -743,7 +756,6 @@
annotator,
author,
commentator,
- doi,
editor,
editora,
editorb,
@@ -753,15 +765,14 @@
editorbtype,
editorctype,
eid,
- eprint,
- eprintclass,
- eprinttype,
issn,
issue,
issuetitle,
issuesubtitle,
+ issuetitleaddon,
journalsubtitle,
journaltitle,
+ journaltitleaddon,
language,
note,
number,
@@ -785,7 +796,6 @@
annotator,
chapter,
commentator,
- doi,
edition,
editor,
editora,
@@ -795,9 +805,7 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
foreword,
introduction,
isbn,
@@ -828,7 +836,6 @@
annotator,
author,
commentator,
- doi,
edition,
editor,
editora,
@@ -838,9 +845,6 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
foreword,
introduction,
isbn,
@@ -871,7 +875,6 @@
booktitleaddon,
chapter,
commentator,
- doi,
edition,
editor,
editora,
@@ -881,9 +884,7 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
foreword,
introduction,
isbn,
@@ -911,12 +912,9 @@
addendum,
author,
chapter,
- doi,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
howpublished,
language,
location,
@@ -935,7 +933,6 @@
annotator,
chapter,
commentator,
- doi,
edition,
editor,
editora,
@@ -945,9 +942,7 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
foreword,
introduction,
isbn,
@@ -978,7 +973,6 @@
annotator,
author,
commentator,
- doi,
edition,
editor,
editora,
@@ -988,9 +982,6 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
foreword,
introduction,
isbn,
@@ -1018,7 +1009,6 @@
booktitleaddon,
chapter,
commentator,
- doi,
edition,
editor,
editora,
@@ -1028,9 +1018,7 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
foreword,
introduction,
isbn,
@@ -1057,13 +1045,9 @@
\DeclareDatamodelEntryfields[dataset]{
addendum,
author,
- doi,
edition,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
language,
location,
note,
@@ -1082,13 +1066,10 @@
addendum,
author,
chapter,
- doi,
edition,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
isbn,
language,
location,
@@ -1109,12 +1090,8 @@
\DeclareDatamodelEntryfields[misc,software]{
addendum,
author,
- doi,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
howpublished,
language,
location,
@@ -1130,12 +1107,8 @@
\DeclareDatamodelEntryfields[online]{
addendum,
author,
- doi,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
language,
note,
organization,
@@ -1148,10 +1121,6 @@
\DeclareDatamodelEntryfields[patent]{
addendum,
author,
- doi,
- eprint,
- eprintclass,
- eprinttype,
holder,
location,
note,
@@ -1165,7 +1134,6 @@
\DeclareDatamodelEntryfields[periodical]{
addendum,
- doi,
editor,
editora,
editorb,
@@ -1174,13 +1142,11 @@
editoratype,
editorbtype,
editorctype,
- eprint,
- eprintclass,
- eprinttype,
issn,
issue,
issuesubtitle,
issuetitle,
+ issuetitleaddon,
language,
note,
number,
@@ -1189,16 +1155,13 @@
series,
subtitle,
title,
+ titleaddon,
volume}
\DeclareDatamodelEntryfields[mvproceedings]{
addendum,
- doi,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
eventday,
eventendday,
eventendhour,
@@ -1236,12 +1199,9 @@
\DeclareDatamodelEntryfields[proceedings]{
addendum,
chapter,
- doi,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
eventday,
eventendday,
eventendhour,
@@ -1289,12 +1249,9 @@
booktitle,
booktitleaddon,
chapter,
- doi,
editor,
editortype,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
eventday,
eventendday,
eventendhour,
@@ -1338,10 +1295,7 @@
addendum,
author,
chapter,
- doi,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
institution,
isrn,
language,
@@ -1361,10 +1315,7 @@
addendum,
author,
chapter,
- doi,
- eprint,
- eprintclass,
- eprinttype,
+ eid,
institution,
language,
location,
@@ -1431,8 +1382,10 @@
introduction,
issuesubtitle,
issuetitle,
+ issuetitleaddon,
journalsubtitle,
journaltitle,
+ journaltitleaddon,
location,
mainsubtitle,
maintitle,
@@ -1598,7 +1551,6 @@
\DeclareDatamodelConstraints[proceedings,mvproceedings]{
\constraint[type=mandatory]{
- \constraintfield{editor}
\constraintfield{title}
}
}
diff --git a/macros/latex/contrib/biblatex/latex/blx-mcite.def b/macros/latex/contrib/biblatex/latex/blx-mcite.def
index b4a8976e50..ea757f2086 100644
--- a/macros/latex/contrib/biblatex/latex/blx-mcite.def
+++ b/macros/latex/contrib/biblatex/latex/blx-mcite.def
@@ -11,6 +11,9 @@
\newrobustcmd*{\Mtextcite}{\mcitelike\Textcite}
\newrobustcmd*{\msupercite}{\mcitelike\supercite}
+\newrobustcmd*{\mautocite}{\mcitelike\autocite}
+\newrobustcmd*{\Mautocite}{\mcitelike\Autocite}
+
% \mcite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
% => \mcitelike\cite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
% => \defbibentryset{setA}{keyA1,keyA2,keyA3}
@@ -28,7 +31,7 @@
\let\blx@mclike@tempb\@empty
\let\blx@mclike@tempc\@empty
\blx@xsanitizeafter\blx@mclike@i{#4}%
- \edef\blx@mclike@tempa{\endgroup\unexpanded{#1[#2][#3]}{\blx@mclike@tempa}}%
+ \edef\blx@mclike@tempa{\endgroup\unexpanded{#1[{#2}][{#3}]}{\blx@mclike@tempa}}%
\blx@mclike@tempa}
\def\blx@mclike@i#1{%
diff --git a/macros/latex/contrib/biblatex/latex/blx-unicode.def b/macros/latex/contrib/biblatex/latex/blx-unicode.def
index 79e003c190..01009c028c 100644
--- a/macros/latex/contrib/biblatex/latex/blx-unicode.def
+++ b/macros/latex/contrib/biblatex/latex/blx-unicode.def
@@ -46,17 +46,17 @@
{\blx@normrange@endash#1––&}
{\ifblank{#2}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}%
+ \blx@range@out@item@process{\unexpanded{#1}}%
\noexpand\bibrangedash}}%
\blx@tempc}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{%
+ \blx@range@out@item@process{%
\unexpanded{#2}}}}%
\blx@tempc}
{\blx@range@process{#1}{#2}}}}}
@@ -66,17 +66,17 @@
{\blx@normrange@hyphen#1--&}
{\ifblank{#2}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}%
+ \blx@range@out@item@process{\unexpanded{#1}}%
\noexpand\bibrangedash}}%
\blx@tempc}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\unexpanded{#2}}}}%
+ \blx@range@out@item@process{\unexpanded{#2}}}}%
\blx@tempc}
{\blx@range@process{#1}{#2}}}}}
@@ -85,15 +85,15 @@
{\blx@firstpage@endash#1––&}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\unexpanded{#2}}}}%
+ \blx@range@out@item@process{\unexpanded{#2}}}}%
\blx@tempc}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}}}%
+ \blx@range@out@item@process{\unexpanded{#1}}}}%
\blx@tempc}}}
\def\blx@firstpage@endash#1–#2–#3&{%
@@ -101,15 +101,15 @@
{\blx@firstpage@hyphen#1--&}
{\ifblank{#1}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
\noexpand\bibrangedash
- \expandonce\blx@range@out@item@process{\unexpanded{#2}}}}%
+ \blx@range@out@item@process{\unexpanded{#2}}}}%
\blx@tempc}
{\begingroup
- \edef\blx@tempc{\endgroup
+ \protected@edef\blx@tempc{\endgroup
\blx@range@out@value{%
- \expandonce\blx@range@out@item@process{\unexpanded{#1}}}}%
+ \blx@range@out@item@process{\unexpanded{#1}}}}%
\blx@tempc}}}
\endinput
diff --git a/macros/latex/contrib/biblatex/latex/cbx/numeric-comp.cbx b/macros/latex/contrib/biblatex/latex/cbx/numeric-comp.cbx
index b649cbeaee..86dfce242d 100644
--- a/macros/latex/contrib/biblatex/latex/cbx/numeric-comp.cbx
+++ b/macros/latex/contrib/biblatex/latex/cbx/numeric-comp.cbx
@@ -1,7 +1,12 @@
\ProvidesFile{numeric-comp.cbx}
[\abx@cbxid]
-\ExecuteBibliographyOptions{labelnumber,sortcites,autocite=inline}
+\newtoggle{cbx:subentrycomp}
+\DeclareBiblatexOption{global,type,entry}[boolean]{subentrycomp}[true]{%
+ \settoggle{cbx:subentrycomp}{#1}}
+
+\ExecuteBibliographyOptions{labelnumber,sortcites,autocite=inline,
+ subentrycomp=true}
\renewcommand*{\multicitedelim}{\addcomma\space}
\renewcommand*{\iffinalcitedelim}{%
@@ -10,21 +15,44 @@
\providebool{bbx:subentry}
\newbool{cbx:parens}
-\newcounter{cbx@tempcnta}
-\newcounter{cbx@tempcntb}
+\newcounter{cbx@tempcnta}% no. of labelnumbers skipped
+\newcounter{cbx@tempcntb}% 'predicted' labelnumber for current cite
+\newcounter{cbx@tempcntc}% no. of entrysetcounts we skipped
+\newcounter{cbx@tempcntd}% 'predicted' entrysetcount
\DeclareFieldFormat{entrysetcount}{\mknumalph{#1}}
+\newcommand*{\cbx@iflabelnumberequalslast}{%
+ \iffieldequals{labelnumber}{\cbx@lastnumber}}
+
+% \iffieldequals is false even if both are empty/undef
+% so we need a special test for that case
+% this test is optimised for performance and laziness
+% rather than prettiness, not that it would matter a lot...
+\newcommand*{\cbx@iflabelprefixequalslast}{%
+ \ifundef\cbx@lastprefix
+ {\iffieldundef{labelprefix}}
+ {\iffieldequals{labelprefix}{\cbx@lastprefix}}}
+
+% \cbx@iflabelnumberequalslast and \cbx@iflabelprefixequalslast
+\newcommand*{\cbx@iflabelnumberandprefixequallast}{%
+ \cbx@iflabelnumberequalslast
+ {\cbx@iflabelprefixequalslast}
+ {\@secondoftwo}}
+
\newbibmacro*{cite:init}{%
\global\boolfalse{cbx:parens}%
\global\undef\cbx@lasthash
\global\undef\cbx@lastnumber
\global\undef\cbx@lastprefix
+ \global\undef\cbx@lastentrysetcount
\setcounter{cbx@tempcnta}{0}%
- \setcounter{cbx@tempcntb}{-2}}
+ \setcounter{cbx@tempcntb}{-2}%
+ \setcounter{cbx@tempcntc}{0}%
+ \setcounter{cbx@tempcntd}{-1}}
\newbibmacro*{cite:comp}{%
- \addtocounter{cbx@tempcntb}{1}%
+ \stepcounter{cbx@tempcntb}%
\iffieldundef{shorthand}
{\ifbool{bbx:subentry}
{\iffieldundef{entrysetcount}
@@ -33,25 +61,22 @@
{\usebibmacro{cite:comp:comp}}}
{\usebibmacro{cite:comp:shand}}}
+% we externalise printing the citations to
+% cite:print:... macros for easier customisation
+
\newbibmacro*{cite:comp:comp}{%
- \ifboolexpr{
- ( test {\iffieldundef{labelprefix}} and test {\ifundef\cbx@lastprefix} )
- or
- test {\iffieldequals{labelprefix}{\cbx@lastprefix}}
- }
+ \cbx@iflabelprefixequalslast
{\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}}
{\savefield{entrykey}{\cbx@lastkey}%
\savefield{labelnumber}{\cbx@lastnumber}%
- \addtocounter{cbx@tempcnta}{1}}
+ \stepcounter{cbx@tempcnta}}
{\ifnumequal{\thefield{labelnumber}}{\value{cbx@tempcntb}-1}
- {}
- {\usebibmacro{cite:dump}%
- \ifnumgreater{\value{cbx@tempcntb}}{-1}
- {\multicitedelim}
- {}%
- \printtext[bibhyperref]{%
- \printfield{labelprefix}%
- \printfield{labelnumber}}}}}
+ {% current cite is *exactly* the same a previous source
+ % this can only happen if the same source is cited twice
+ % and sortcites is turned off
+ % print nothing
+ }
+ {\usebibmacro{cite:comp:end}}}}
{\usebibmacro{cite:comp:end}}%
\setcounter{cbx@tempcntb}{\thefield{labelnumber}}%
\savefield{labelprefix}{\cbx@lastprefix}}
@@ -59,44 +84,104 @@
\newbibmacro*{cite:comp:end}{%
\usebibmacro{cite:dump}%
\ifnumgreater{\value{cbx@tempcntb}}{-1}
- {\multicitedelim}
+ {\setunit{\multicitedelim}}
{}%
- \printtext[bibhyperref]{%
- \printfield{labelprefix}%
- \printfield{labelnumber}}}
+ \usebibmacro{cite:print:labelnumber}}
\newbibmacro*{cite:comp:inset}{%
- \usebibmacro{cite:dump}%
- \ifnumgreater{\value{cbx@tempcntb}}{-1}
- {\multicitedelim}
- {}%
- \printtext[bibhyperref]{%
- \printfield{labelprefix}%
- \printfield{labelnumber}%
- \printfield{entrysetcount}}%
- \setcounter{cbx@tempcntb}{-1}}
+ \stepcounter{cbx@tempcntd}%
+ \ifboolexpr{ togl {cbx:subentrycomp}
+ and test {\cbx@iflabelnumberandprefixequallast}}
+ {\ifnumequal{\thefield{entrysetcount}}{\value{cbx@tempcntd}}
+ {\savefield{entrykey}{\cbx@lastkey}%
+ \savefield{entrysetcount}{\cbx@lastentrysetcount}%
+ \stepcounter{cbx@tempcntc}}
+ {\ifnumequal{\thefield{entrysetcount}}{\value{cbx@tempcntd}-1}
+ {% current cite is *exactly* the same a previous source
+ % this can only happen if the same source is cited twice
+ % and sortcites is turned off
+ % print nothing
+ }
+ {\usebibmacro{cite:dump:inset}%
+ \ifnumgreater{\value{cbx@tempcntd}}{-1}
+ {\setunit{\multicitesubentrydelim}}
+ {}%
+ \usebibmacro{cite:print:subentry:comp}}}}
+ {\usebibmacro{cite:dump}%
+ \ifnumgreater{\value{cbx@tempcntb}}{-1}
+ {\multicitedelim}
+ {}%
+ \setcounter{cbx@tempcntd}{-1}%
+ \usebibmacro{cite:print:subentry:full}%
+ \savefield{labelprefix}{\cbx@lastprefix}%
+ \savefield{labelnumber}{\cbx@lastnumber}}%
+ \setcounter{cbx@tempcntd}{\thefield{entrysetcount}}%
+ \setcounter{cbx@tempcntb}{-1}}
\newbibmacro*{cite:comp:shand}{%
\usebibmacro{cite:dump}%
\ifnumgreater{\value{cbx@tempcntb}}{-1}
- {\multicitedelim}
+ {\setunit{\multicitedelim}}
{}%
- \printtext[bibhyperref]{\printfield{shorthand}}%
+ \usebibmacro{cite:print:shorthand}%
\setcounter{cbx@tempcntb}{-1}}
+\newbibmacro{cite:dump:inset}{%
+ % dump subentry
+ \ifnumgreater{\value{cbx@tempcntc}}{0}
+ {\ifnumgreater{\value{cbx@tempcntc}}{1}
+ {\setunit{\multicitesubentryrangedelim}}
+ {\setunit{\multicitesubentrydelim}}%
+ \usebibmacro{cite:print:last:subentry:comp}%
+ \global\undef\cbx@lastentrysetcount}
+ {}%
+ \setcounter{cbx@tempcntc}{0}%
+}
+
\newbibmacro*{cite:dump}{%
+ \usebibmacro{cite:dump:inset}%
+ % dump labelnumber (+labelprefix)
\ifnumgreater{\value{cbx@tempcnta}}{0}
{\ifnumgreater{\value{cbx@tempcnta}}{1}
- {\bibrangedash}
- {\multicitedelim}%
- \bibhyperref[\cbx@lastkey]{%
- \ifdef\cbx@lastprefix
- {\printtext[labelprefix]{\cbx@lastprefix}}
- {}%
- \printtext[labelnumber]{\cbx@lastnumber}}}
+ {\setunit{\multiciterangedelim}}
+ {\setunit{\multicitedelim}}%
+ \usebibmacro{cite:print:last:labelnumber}%
+ \global\undef\cbx@lastprefix}
{}%
\setcounter{cbx@tempcnta}{0}%
- \global\undef\cbx@lastprefix}
+}
+
+% these macros do the actual printing
+
+\newbibmacro*{cite:print:shorthand}{%
+ \printtext[bibhyperref]{\printfield{shorthand}}}
+
+\newbibmacro*{cite:print:labelnumber}{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}}}
+
+\newbibmacro*{cite:print:subentry:comp}{%
+ \printtext[bibhyperref]{\printfield{entrysetcount}}}
+
+\newbibmacro*{cite:print:subentry:full}{%
+ \printtext[bibhyperref]{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}%
+ \printfield{entrysetcount}}}
+
+\DeclareFieldFormat{bibhyperref:lastkey}{\bibhyperref[\cbx@lastkey]{#1}}
+
+\newbibmacro*{cite:print:last:subentry:comp}{%
+ \printtext[bibhyperref:lastkey]{%
+ \printtext[entrysetcount]{\cbx@lastentrysetcount}}}
+
+\newbibmacro*{cite:print:last:labelnumber}{%
+ \printtext[bibhyperref:lastkey]{%
+ \ifdef\cbx@lastprefix
+ {\printtext[labelprefix]{\cbx@lastprefix}}
+ {}%
+ \printtext[labelnumber]{\cbx@lastnumber}}}
\newbibmacro*{textcite}{%
\iffieldequals{namehash}{\cbx@lasthash}
@@ -107,7 +192,7 @@
{}%
\iffirstcitekey
{}
- {\textcitedelim}%
+ {\setunit{\textcitedelim}}%
\usebibmacro{cite:init}%
\ifnameundef{labelname}
{\printfield[citetitle]{labeltitle}}
@@ -169,6 +254,9 @@
\DeclareCiteCommand{\supercite}[\mkbibsuperscript]
{\usebibmacro{cite:init}%
\let\multicitedelim=\supercitedelim
+ \let\multicitesubentrydelim=\supercitesubentrydelim
+ \let\multiciterangedelim=\superciterangedelim
+ \let\multicitesubentryrangedelim=\supercitesubentryrangedelim
\iffieldundef{prenote}
{}
{\BibliographyWarning{Ignoring prenote argument}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx b/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx
index 43fb19712c..8d92cc663f 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/brazilian.lbx
@@ -43,13 +43,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -463,14 +467,17 @@
langjapanese = {{japon\^es}{japon\^es}},
langlatin = {{latim}{latim}},
langlatvian = {{let\~ao}{let\~ao}},
+ langlithuanian = {{lituano}{lituano}},
langnorwegian = {{noruegu\^es}{noruegu\^es}},
langpolish = {{polon\^es}{polon\^es}},
langportuguese = {{portugu{\^e}s}{portugu{\^e}s}},
langrussian = {{russo}{russo}},
+ langserbian = {{s\'ervio}{s\'ervio}},
langslovak = {{eslovaco}{eslovaco}},
langslovene = {{esloveno}{esloveno}},
langspanish = {{espanhol}{espanhol}},
langswedish = {{sueco}{sueco}},
+ langturkish = {{turco}{turco}},
langukrainian = {{ucraniano}{ucraniano}},
fromamerican = {{do ingl\^es}{do ingl\^es}},
frombrazilian = {{do portugu{\^e}s}{do portugu{\^e}s}},
@@ -492,14 +499,17 @@
fromjapanese = {{do japon\^es}{do japon\^es}},
fromlatin = {{do latim}{do latim}},
fromlatvian = {{do let\~ao}{do let\~ao}},
+ fromlithuanian = {{do lituano}{do lituano}},
fromnorwegian = {{do noruegu\^es}{do noruegu\^es}},
frompolish = {{do polon\^es}{do polon\^es}},
fromportuguese = {{do portugu{\^e}s}{do portugu{\^e}s}},
fromrussian = {{do russo}{do russo}},
+ fromserbian = {{do s\'ervio}{do s\'ervio}},
fromslovak = {{do eslovaco}{do eslovaco}},
fromslovene = {{do esloveno}{do esloveno}},
fromspanish = {{do espanhol}{do espanhol}},
fromswedish = {{do sueco}{do sueco}},
+ fromturkish = {{do turco}{do turco}},
fromukrainian = {{do ucraniano}{do ucraniano}},
countryde = {{Alemanha}{DE}},
countryeu = {{Uni\~ao Europeia}{EU}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/british.lbx b/macros/latex/contrib/biblatex/latex/lbx/british.lbx
index 87411636e9..7bfdfced5d 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/british.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/british.lbx
@@ -42,13 +42,17 @@
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx b/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx
index dcc8c695c1..fb64a01ab5 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/bulgarian.lbx
@@ -70,13 +70,17 @@
\def\mkbibordedition{\mkbibneutord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx b/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx
index 973b91b597..4f1878ac4d 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/catalan.lbx
@@ -66,13 +66,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -243,9 +247,9 @@
translatorsaf = {{traductors i autors de l'ep\'{\i}leg}
{trad\adddotspace i aut\adddotspace de l'ep\adddot}},
translatorcoin = {{traductor, comentarista i autor de la introducci\'o}
- {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}},
+ {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
translatorscoin = {{traductors, comentaristes i autors de la introducci\'o}
- {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddotspace}},
+ {trad.,\addabbrvspace com\adddotspace i aut\adddotspace de la intr\adddot}},
translatorcofo = {{traductor, comentarista i autor del pr\`oleg}
{trad.,\addabbrvspace com\adddotspace i aut\adddotspace del pr\`ol\adddot}},
translatorscofo = {{traductors, comentaristes i autors del pr\`oleg}
@@ -422,7 +426,7 @@
version = {{versi\'o}{vers\adddot}},
url = {{adre\c{c}a}{adr\adddot}},
urlfrom = {{disponible a}{disp\adddotspace a}},
- urlseen = {{consultat}{cons\adddotspace}}, % Possibly better «consultat \smartel», but \smartel unavailable
+ urlseen = {{consultat}{cons\adddot}}, % Possibly better «consultat \smartel», but \smartel unavailable
inpreparation = {{en preparaci\'o}{en prep\adddot}},
inpress = {{a impremta}{a impr\adddot}},% Per revisar
prepublished = {{pre-publicat}{pre-publicat}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx b/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx
index b3b92e03ac..5938649490 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/croatian.lbx
@@ -45,13 +45,17 @@
\def\mkbibordedition{\mkbibordinal}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/czech.lbx b/macros/latex/contrib/biblatex/latex/lbx/czech.lbx
index 716b3a1ee8..d23131f072 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/czech.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/czech.lbx
@@ -38,13 +38,17 @@
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -81,35 +85,49 @@
compilers = {{sestavili}{sest\adddot}},
redactor = {{redaktor}{red\adddot}},
redactors = {{redakto\v{r}i}{red\adddot}},
+ reviser = {{korektor}{kor\adddot}},
+ revisers = {{korekto\v{r}i}{kor\adddot}},
founder = {{zakladatel}{zakl\adddot}},
founders = {{zakladatel\'{e}}{zakl\adddot}},
continuator = {{pokra\v{c}ovatel}{pokr\adddot}},% FIXME: unsure
continuators = {{pokra\v{c}ovatel\'{e}}{pokr\adddot}},% FIXME: unsure
- collaborator = {{spolupracovn\'{i}k}{spoluprac\adddot}},% FIXME: unsure
- collaborators = {{spolupracovn\'{i}ci}{spoluprac\adddot}},% FIXME: unsure
+ collaborator = {{spolupracovn\'{\i}k}{spoluprac\adddot}},% FIXME: unsure
+ collaborators = {{spolupracovn\'{\i}ci}{spoluprac\adddot}},% FIXME: unsure
translator = {{p\v{r}ekladatel}{p\v{r}ekl\adddot}},
translators = {{p\v{r}ekladatel\'{e}}{p\v{r}ekl\adddot}},
commentator = {{koment\'{a}tor}{kom\adddot}},
commentators = {{koment\'{a}to\v{r}i}{kom\adddot}},
annotator = {{anot\'{a}tor}{anot\adddot}},
annotators = {{anot\'{a}to\v{r}i}{anot\adddot}},
- commentary = {{koment\'{a}tor}{komm\adddot}},% FIXME: unsure
- annotations = {{anotatace}{anot\adddot}},
+ commentary = {{koment\'{a}\v{r}}{kom\adddot}},
+ annotations = {{anotace}{anot\adddot}},
introduction = {{\'{u}vod}{\'{u}v\adddot}},
foreword = {{p\v{r}edmluva}{p\v{r}edml\adddot}},
afterword = {{doslov}{dosl\adddot}},
- editortr = {{editor a p\v{r}ekladatel}{ed\adddotspace a p\v{r}ekl\adddot}},
- editorstr = {{edito\v{r}i a p\v{r}ekladatel\'{e}}{ed\adddotspace a p\v{r}ekl\adddot}},
- editorco = {{editor a koment\'{a}tor}{ed\adddotspace a kom\adddot}},
- editorsco = {{editor a koment\'{a}to\v{r}i}{ed\adddotspace a kom\adddot}},
- editoran = {{editor a anot\'{a}tor}{ed\adddotspace a anot\adddot}},
- editorsan = {{editor a anot\'{a}to\v{r}i}{ed\adddotspace a anot\adddot}},
- editorin = {{editor a \'{u}vod}{ed\adddotspace \'{u}v\adddot}},
- editorsin = {{edito\v{r}i a \'{u}vod}{ed\adddotspace a \'{u}v\adddot}},
- editorfo = {{editor a p\v{r}edmluva}{ed\adddotspace a p\v{r}edml\adddot}},
- editorsfo = {{edito\v{r}i a p\v{r}edmluva}{ed\adddotspace a p\v{r}edml\adddot}},
- editoraf = {{editor a doslov}{ed\adddotspace a dosl\adddot}},
- editorsaf = {{edito\v{r}i a doslov}{ed\adddotspace a dosl\adddot}},
+ editortr = {{editor a p\v{r}ekladatel}%
+ {ed\adddotspace a p\v{r}ekl\adddot}},
+ editorstr = {{edito\v{r}i a p\v{r}ekladatel\'{e}}%
+ {ed\adddotspace a p\v{r}ekl\adddot}},
+ editorco = {{editor a koment\'{a}tor}%
+ {ed\adddotspace a kom\adddot}},
+ editorsco = {{editor a koment\'{a}to\v{r}i}%
+ {ed\adddotspace a kom\adddot}},
+ editoran = {{editor a anot\'{a}tor}%
+ {ed\adddotspace a anot\adddot}},
+ editorsan = {{editor a anot\'{a}to\v{r}i}%
+ {ed\adddotspace a anot\adddot}},
+ editorin = {{editor a \'{u}vod}%
+ {ed\adddotspace a \'{u}v\adddot}},
+ editorsin = {{edito\v{r}i a \'{u}vod}%
+ {ed\adddotspace a \'{u}v\adddot}},
+ editorfo = {{editor a p\v{r}edmluva}%
+ {ed\adddotspace a p\v{r}edml\adddot}},
+ editorsfo = {{edito\v{r}i a p\v{r}edmluva}%
+ {ed\adddotspace a p\v{r}edml\adddot}},
+ editoraf = {{editor a doslov}%
+ {ed\adddotspace a dosl\adddot}},
+ editorsaf = {{edito\v{r}i a doslov}%
+ {ed\adddotspace a dosl\adddot}},
editortrco = {{editor, p\v{r}eklad\ a koment\'{a}tor}%
{ed.,\addabbrvspace p\v{r}ekl\adddot\ a kom\adddot}},% FIXME: hruznost
editorstrco = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a koment\'{a}to\v{r}i}%
@@ -119,191 +137,227 @@
editorstran = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a anot\'{a}to\v{r}i}%
{ed.,\addabbrvspace p\v{r}ekl\adddot\ a anot\adddot}},
editortrin = {{editor, p\v{r}ekladatel\ a \'{u}vod}%
- {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}v\adddot}},
editorstrin = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a \'{u}vod}%
- {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace p\v{r}ekl\adddot\ a \'{u}v\adddot}},
editortrfo = {{editor, p\v{r}ekladatel\ a p\v{r}edmluva}%
{ed.,\addabbrvspace p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
editorstrfo = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a p\v{r}edmluva}%
{ed.,\addabbrvspace p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
- editortraf = {{editor, p\v{r}ekladatel\ a doslov}%
- {ed.,\addabbrvspace p\v{r}ekl\adddot\ a afterw\adddot}},
- editorstraf = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a doslov}%
- {ed.,\addabbrvspace p\v{r}ekl\adddot\ a afterw\adddot}},
+ editortraf = {{editor, p\v{r}ekladatel\ a doslov}%
+ {ed.,\addabbrvspace p\v{r}ekl\adddot\ a dosl\adddot}},
+ editorstraf = {{edito\v{r}i, p\v{r}ekladatel\'{e}\ a doslov}%
+ {ed.,\addabbrvspace p\v{r}ekl\adddot\ a dosl\adddot}},
editorcoin = {{editor, koment\'{a}tor\ a \'{u}vod}%
- {ed.,\addabbrvspace kom\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}},
editorscoin = {{edito\v{r}i, koment\'{a}to\v{r}i\ a \'{u}vod}%
- {ed.,\addabbrvspace kom\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace kom\adddot\ a \'{u}v\adddot}},
editorcofo = {{editor, koment\'{a}tor\ a p\v{r}edmluva}%
{ed.,\addabbrvspace kom\adddot\ a p\v{r}edml\adddot}},
editorscofo = {{edito\v{r}i, koment\'{a}to\v{r}i\ a p\v{r}edmluva}%
{ed.,\addabbrvspace kom\adddot\ a p\v{r}edml\adddot}},
- editorcoaf = {{editor, koment\'{a}tor\ a doslov}%
+ editorcoaf = {{editor, koment\'{a}tor\ a doslov}%
{ed.,\addabbrvspace kom\adddot\ a dosl\adddot}},
- editorscoaf = {{edito\v{r}i, koment\'{a}to\v{r}i\ a doslov}%
+ editorscoaf = {{edito\v{r}i, koment\'{a}to\v{r}i\ a doslov}%
{ed.,\addabbrvspace kom\adddot\ a dosl\adddot}},
editoranin = {{editor, anot\'{a}tor\ a \'{u}vod}%
- {ed.,\addabbrvspace anot\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}},
editorsanin = {{edito\v{r}i, anot\'{a}to\v{r}i\ a \'{u}vod}%
- {ed.,\addabbrvspace anot\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace anot\adddot\ a \'{u}v\adddot}},
editoranfo = {{editor, anot\'{a}tor\ a p\v{r}edmluva}%
{ed.,\addabbrvspace anot\adddot\ a p\v{r}edml\adddot}},
editorsanfo = {{edito\v{r}i, anot\'{a}to\v{r}i\ a p\v{r}edmluva}%
{ed.,\addabbrvspace anot\adddot\ a p\v{r}edml\adddot}},
- editoranaf = {{editor, anot\'{a}tor\ a doslov}{ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
- editorsanaf = {{edito\v{r}i, anot\'{a}to\v{r}i\ a doslov}%
+ editoranaf = {{editor, anot\'{a}tor\ a doslov}%
+ {ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
+ editorsanaf = {{edito\v{r}i, anot\'{a}to\v{r}i\ a doslov}%
{ed.,\addabbrvspace anot\adddot\ a dosl\adddot}},
editortrcoin = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a \'{u}vod}%
- {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
editorstrcoin = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a \'{u}vod}%
- {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
editortrcofo = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a p\v{r}edmluva}%
{ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
editorstrcofo = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a p\v{r}edmluva}%
{ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
- editortrcoaf = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a doslov}%
+ editortrcoaf = {{editor, p\v{r}ekladatel, koment\'{a}tor\ a doslov}%
{ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a dosl\adddot}},
- editorstrcoaf = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a doslov}%
+ editorstrcoaf = {{edito\v{r}i, p\v{r}ekladatel\'{e}, koment\'{a}to\v{r}i\ a doslov}%
{ed.,\addabbrvspace p\v{r}ekl., kom\adddot\ a dosl\adddot}},
editortranin = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a \'{u}vod}%
- {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
editorstranin = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a \'{u}vod}%
- {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
+ {ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
editortranfo = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a p\v{r}edmluva}%
{ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
editorstranfo = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a p\v{r}edmluva}%
{ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
- editortranaf = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a doslov}%
+ editortranaf = {{editor, p\v{r}ekladatel, anot\'{a}tor\ a doslov}%
{ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a dosl\adddot}},
- editorstranaf = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a doslov}%
+ editorstranaf = {{edito\v{r}i, p\v{r}ekladatel\'{e}, anot\'{a}to\v{r}i\ a doslov}%
{ed.,\addabbrvspace p\v{r}ekl., anot\adddot\ a dosl\adddot}},
- translatorco = {{p\v{r}ekladatel a koment\'{a}tor}{p\v{r}ekl\adddot\ a kom\adddot}},
- translatorsco = {{p\v{r}ekladatel\'{e} a koment\'{a}to\v{r}i}{p\v{r}ekl\adddot\ a kom\adddot}},
- translatoran = {{p\v{r}ekladatel a anot\'{a}tor}{p\v{r}ekl\adddot\ a anot\adddot}},
- translatorsan = {{p\v{r}ekladatel\'{e} a anot\'{a}to\v{r}i}{p\v{r}ekl\adddot\ a anot\adddot}},
- translatorin = {{p\v{r}eklad a \'{u}vod}{p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
- translatorsin = {{p\v{r}eklad a \'{u}vod}{p\v{r}ekl\adddot\ a \'{u}vod\adddot}},
- translatorfo = {{p\v{r}eklad a p\v{r}edmluva}{p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
- translatorsfo = {{p\v{r}eklad a p\v{r}edmluva}{p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
- translatoraf = {{p\v{r}eklad a doslov}{p\v{r}ekl\adddot\ a dosl\adddot}},
- translatorsaf = {{p\v{r}eklad a doslov}{p\v{r}ekl\adddot\ a dosl\adddot}},
- translatorcoin = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}{p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
- translatorscoin = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}{p\v{r}ekl., kom\adddot\ a \'{u}vod\adddot}},
- translatorcofo = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}{p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
- translatorscofo = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}{p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
- translatorcoaf = {{p\v{r}eklad, koment\'{a}\v{r}\ a doslov}{p\v{r}ekl., kom\adddot\ a dosl\adddot}},
- translatorscoaf = {{p\v{r}eklad, koment\'{a}\v{r}\ a doslov}{p\v{r}ekl., kom\adddot\ a dosl\adddot}},
- translatoranin = {{p\v{r}eklad, anotace,\ a \'{u}vod}{p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
- translatorsanin = {{p\v{r}eklad, anotace,\ a \'{u}vod}{p\v{r}ekl., anot\adddot\ a \'{u}vod\adddot}},
- translatoranfo = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}{p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
- translatorsanfo = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}{p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
- translatoranaf = {{p\v{r}eklad, anotace,\ a doslov}{p\v{r}ekl., anot\adddot\ a dosl\adddot}},
- translatorsanaf = {{p\v{r}eklad, anotace,\ a doslov}{p\v{r}ekl., anot\adddot\ a dosl\adddot}},
-% organizer = {{}{}},% FIXME: missing
-% organizers = {{}{}},% FIXME: missing
-% byorganizer = {{}{}},% FIXME: missing
- byauthor = {{by}{by}},
- byeditor = {{editov\'{a}no}{ed\adddotspace}},
- bycompiler = {{sestaveno}{comp\adddotspace}},
- byredactor = {{redigov\'{a}no}{red\adddotspace}},
- byfounder = {{zalo\v{z}eno}{found\adddotspace}},
- bycontinuator = {{pokra\v{c}ov\'{a}no}{cont\adddotspace}},
- bycollaborator = {{ve spolupr\'{a}ci s}{ve spol\adddotspace s}},% FIXME: unsure
+ translatorco = {{p\v{r}ekladatel a koment\'{a}tor}%
+ {p\v{r}ekl\adddot\ a kom\adddot}},
+ translatorsco = {{p\v{r}ekladatel\'{e} a koment\'{a}to\v{r}i}%
+ {p\v{r}ekl\adddot\ a kom\adddot}},
+ translatoran = {{p\v{r}ekladatel a anot\'{a}tor}%
+ {p\v{r}ekl\adddot\ a anot\adddot}},
+ translatorsan = {{p\v{r}ekladatel\'{e} a anot\'{a}to\v{r}i}%
+ {p\v{r}ekl\adddot\ a anot\adddot}},
+ translatorin = {{p\v{r}eklad a \'{u}vod}%
+ {p\v{r}ekl\adddot\ a \'{u}v\adddot}},
+ translatorsin = {{p\v{r}eklad a \'{u}vod}%
+ {p\v{r}ekl\adddot\ a \'{u}v\adddot}},
+ translatorfo = {{p\v{r}eklad a p\v{r}edmluva}%
+ {p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
+ translatorsfo = {{p\v{r}eklad a p\v{r}edmluva}%
+ {p\v{r}ekl\adddot\ a p\v{r}edml\adddot}},
+ translatoraf = {{p\v{r}eklad a doslov}%
+ {p\v{r}ekl\adddot\ a dosl\adddot}},
+ translatorsaf = {{p\v{r}eklad a doslov}%
+ {p\v{r}ekl\adddot\ a dosl\adddot}},
+ translatorcoin = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}%
+ {p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
+ translatorscoin = {{p\v{r}eklad, koment\'{a}\v{r}\ a \'{u}vod}%
+ {p\v{r}ekl., kom\adddot\ a \'{u}v\adddot}},
+ translatorcofo = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}%
+ {p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
+ translatorscofo = {{p\v{r}eklad, koment\'{a}\v{r}\ a p\v{r}edmluva}%
+ {p\v{r}ekl., kom\adddot\ a p\v{r}edml\adddot}},
+ translatorcoaf = {{p\v{r}eklad, koment\'{a}\v{r}\ a doslov}%
+ {p\v{r}ekl., kom\adddot\ a dosl\adddot}},
+ translatorscoaf = {{p\v{r}eklad, koment\'{a}\v{r}\ a doslov}%
+ {p\v{r}ekl., kom\adddot\ a dosl\adddot}},
+ translatoranin = {{p\v{r}eklad, anotace,\ a \'{u}vod}%
+ {p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
+ translatorsanin = {{p\v{r}eklad, anotace,\ a \'{u}vod}%
+ {p\v{r}ekl., anot\adddot\ a \'{u}v\adddot}},
+ translatoranfo = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}%
+ {p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
+ translatorsanfo = {{p\v{r}eklad, anotace,\ a p\v{r}edmluva}%
+ {p\v{r}ekl., anot\adddot\ a p\v{r}edml\adddot}},
+ translatoranaf = {{p\v{r}eklad, anotace,\ a doslov}%
+ {p\v{r}ekl., anot\adddot\ a dosl\adddot}},
+ translatorsanaf = {{p\v{r}eklad, anotace,\ a doslov}%
+ {p\v{r}ekl., anot\adddot\ a dosl\adddot}},
+ organizer = {{organiz\'{a}tor}{org\adddot}},% FIXME: unsure
+ organizers = {{organiz\'{a}to\v{r}i}{org\adddot}},% FIXME: unsure
+ byorganizer = {{organizov\'{a}no}{org\adddot}},% FIXME: unsure
+ byauthor = {{}{}},
+ byeditor = {{editov\'{a}no}{ed\adddot}},
+ bycompiler = {{sestaveno}{sest\adddot}},
+ byredactor = {{redigov\'{a}no}{red\adddot}},
+ byreviser = {{korigov\'{a}no}{kor\adddot}},
+ byreviewer = {{recenzov\'{a}no}{recenz\adddot}},
+ byfounder = {{zalo\v{z}eno}{zal\adddot}},
+ bycontinuator = {{pokra\v{c}ov\'{a}no}{pokr\adddot}},
+ bycollaborator = {{ve spolupr\'{a}ci s\addnbspace}{ve spol\adddotspace s\addnbspace}},
bytranslator = {{p\v{r}elo\v{z}eno \lbx@lfromlang}{p\v{r}el\adddot\ \lbx@sfromlang}},
- bycommentator = {{komentov\'{a}no}{kom\adddotspace}},
- byannotator = {{anotov\'{a}no}{anot\adddotspace}},
- withcommentator = {{s koment\'{a}\v{r}em}{s kom\adddotspace}},%mozna: s komentarem od?
- withannotator = {{s anotacemi od}{s anot\adddot\ od}},
- withintroduction = {{s \'{u}vodem od}{u \'{u}v\adddot\ od}},
- withforeword = {{s p\v{r}edmluvou od}{s p\v{r}edml\adddot\ od}},
- withafterword = {{s doslovem}{s dosl\adddot\ }},
- byeditortr = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang\ }%
- {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang\ }},
- byeditorco = {{editov\'{a}no a komentov\'{a}no}{ed\adddotspace a kom\adddot\ }},
- byeditoran = {{editov\'{a}no a anotov\'{a}no}{ed\adddotspace a anot\adddot\ }},
- byeditorin = {{editov\'{a}no, s \'{u}vodem}{ed.,\addabbrvspace s \'{u}vodem}},
- byeditorfo = {{editov\'{a}no, s p\v{r}edmluvou}{ed.,\addabbrvspace s p\v{r}edml., }},
- byeditoraf = {{editov\'{a}no, s doslovem}{ed.,\addabbrvspace s dosl.,}},
+ bycommentator = {{komentov\'{a}no}{kom\adddot}},
+ byannotator = {{anotov\'{a}no}{anot\adddot}},
+ withcommentator = {{s\addnbspace koment\'{a}\v{r}em od}{s\addnbspace kom\adddot\ od}},
+ withannotator = {{s\addnbspace anotacemi od}{s\addnbspace anot\adddot\ od}},
+ withintroduction = {{s\addnbspace \'{u}vodem od}{s\addnbspace \'{u}v\adddot\ od}},
+ withforeword = {{s\addnbspace p\v{r}edmluvou od}{s\addnbspace p\v{r}edml\adddot\ od}},
+ withafterword = {{s\addnbspace doslovem od}{s\addnbspace dosl\adddot\ od}},
+ byeditortr = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang}%
+ {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang}},
+ byeditorco = {{editov\'{a}no a komentov\'{a}no}%
+ {ed\adddotspace a kom\adddot}},
+ byeditoran = {{editov\'{a}no a anotov\'{a}no}%
+ {ed\adddotspace a anot\adddot}},
+ byeditorin = {{editov\'{a}no, s\addnbspace \'{u}vodem}%
+ {ed.,\addabbrvspace s\addnbspace \'{u}v\adddot}},
+ byeditorfo = {{editov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+ {ed.,\addabbrvspace s\addnbspace p\v{r}edml\adddot}},
+ byeditoraf = {{editov\'{a}no, s\addnbspace doslovem}%
+ {ed.,\addabbrvspace s\addnbspace dosl\adddot}},
byeditortrco = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom\adddot\ }},
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom\adddot}},
byeditortran = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot\adddot\ }},
- byeditortrin = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang, s \'{u}vodem}%
- {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang, s \'{u}vodem}},
- byeditortrfo = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang, s p\v{r}edmluvou}%
- {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang, s p\v{r}edmluvou}},
- byeditortraf = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang, s doslovem}%
- {ed\adddotspace a p\v{r}ekl\adddot\ \lbx@sfromlang, s doslovem}},
- byeditorcoin = {{editov\'{a}no a komentov\'{a}no, s \'{u}vodem}{ed\adddotspace a kom., s \'{u}vodem}},
- byeditorcofo = {{editov\'{a}no a komentov\'{a}no, s p\v{r}edmluvou}{ed\adddotspace a kom., s p\v{r}edml\adddot}},
- byeditorcoaf = {{editov\'{a}no a komentov\'{a}no, s doslovem}{ed\adddotspace a kom., s dosl.}},
- byeditoranin = {{editov\'{a}no a anotov\'{a}no, s \'{u}vodem}{ed\adddotspace a anot., s \'{u}vodem}},
- byeditoranfo = {{editov\'{a}no a anotov\'{a}no, s p\v{r}edmluvou}{ed\adddotspace a anot., s p\v{r}edml\adddot}},
- byeditoranaf = {{editov\'{a}no a anotov\'{a}no, s doslovem}{ed\adddotspace a anot., s dosl\adddot}},
- byeditortrcoin = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s \'{u}vodem}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s \'{u}vodem}},
- byeditortrcofo = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s p\v{r}edmluvou }%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s p\v{r}edml\adddot}},
- byeditortrcoaf = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s doslovem}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s dosl\adddot}},
- byeditortranin = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s \'{u}vodem}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot\adddot, s \'{u}vodem}},
- byeditortranfo = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s p\v{r}edmluvou}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot, s p\v{r}edml\adddot}},
- byeditortranaf = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s doslovem}%
- {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot, s dosl\adddot}},
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot\adddot}},
+ byeditortrin = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang, s\addnbspace \'{u}vodem}%
+ {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\adddot}},
+ byeditortrfo = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang, s\addnbspace p\v{r}edmluvou}%
+ {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang, s\addnbspace p\v{r}edml\adddot}},
+ byeditortraf = {{editov\'{a}no a p\v{r}elo\v{z}eno \lbx@lfromlang, s\addnbspace doslovem}%
+ {ed\adddotspace a p\v{r}el\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}},
+ byeditorcoin = {{editov\'{a}no a komentov\'{a}no, s\addnbspace \'{u}vodem}%
+ {ed\adddotspace a kom., s\addnbspace \'{u}v\adddot}},
+ byeditorcofo = {{editov\'{a}no a komentov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+ {ed\adddotspace a kom., s\addnbspace p\v{r}edml\adddot}},
+ byeditorcoaf = {{editov\'{a}no a komentov\'{a}no, s\addnbspace doslovem}%
+ {ed\adddotspace a kom., s\addnbspace dosl\adddot}},
+ byeditoranin = {{editov\'{a}no a anotov\'{a}no, s\addnbspace \'{u}vodem}%
+ {ed\adddotspace a anot., s\addnbspace \'{u}v\adddot}},
+ byeditoranfo = {{editov\'{a}no a anotov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+ {ed\adddotspace a anot., s\addnbspace p\v{r}edml\adddot}},
+ byeditoranaf = {{editov\'{a}no a anotov\'{a}no, s\addnbspace doslovem}%
+ {ed\adddotspace a anot., s\addnbspace dosl\adddot}},
+ byeditortrcoin = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s\addnbspace \'{u}vodem}%
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s\addnbspace \'{u}v\adddot}},
+ byeditortrcofo = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s\addnbspace p\v{r}edmluvou }%
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s\addnbspace p\v{r}edml\adddot}},
+ byeditortrcoaf = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s\addnbspace doslovem}%
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s\addnbspace dosl\adddot}},
+ byeditortranin = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s\addnbspace \'{u}vodem}%
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot\adddot, s\addnbspace \'{u}v\adddot}},
+ byeditortranfo = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s\addnbspace p\v{r}edml\adddot}},
+ byeditortranaf = {{editov\'{a}no, p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s\addnbspace doslovem}%
+ {ed.,\addabbrvspace p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s\addnbspace dosl\adddot}},
bytranslatorco = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a kom\adddot\ }},
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a kom\adddot}},
bytranslatoran = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a anot\adddot\ }},
- bytranslatorin = {{p\v{r}elo\v{z}eno \lbx@lfromlang, s \'{u}vodem}%
- {p\v{r}el\adddot\ \lbx@sfromlang, s \'{u}vodem}},
- bytranslatorfo = {{p\v{r}elo\v{z}eno \lbx@lfromlang, s p\v{r}edmluvou}%
- {p\v{r}el\adddot\ \lbx@sfromlang, s p\v{r}edml\adddot}},
- bytranslatoraf = {{p\v{r}elo\v{z}eno \lbx@lfromlang, s doslovem}%
- {p\v{r}el\adddot\ \lbx@sfromlang, s dosl\adddot}},
- bytranslatorcoin = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s \'{u}vodem}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s \'{u}vodem}},
- bytranslatorcofo = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s p\v{r}edmluvou}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s p\v{r}edml\adddot}},
- bytranslatorcoaf = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}ns doslovem}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s dosl\adddot}},
- bytranslatoranin = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s \'{u}vodem}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s \'{u}vodem}},
- bytranslatoranfo = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s p\v{r}edmluvou}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s p\v{r}edml\adddot}},
- bytranslatoranaf = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s doslovem}%
- {p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s dosl\adddot}},
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a anot\adddot}},
+ bytranslatorin = {{p\v{r}elo\v{z}eno \lbx@lfromlang, s\addnbspace \'{u}vodem}%
+ {p\v{r}el\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\adddot}},
+ bytranslatorfo = {{p\v{r}elo\v{z}eno \lbx@lfromlang, s\addnbspace p\v{r}edmluvou}%
+ {p\v{r}el\adddot\ \lbx@sfromlang, s\addnbspace p\v{r}edml\adddot}},
+ bytranslatoraf = {{p\v{r}elo\v{z}eno \lbx@lfromlang, s\addnbspace doslovem}%
+ {p\v{r}el\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}},
+ bytranslatorcoin = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s\addnbspace \'{u}vodem}%
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s\addnbspace \'{u}v\adddot}},
+ bytranslatorcofo = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s\addnbspace p\v{r}edml\adddot}},
+ bytranslatorcoaf = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a komentov\'{a}no, s\addnbspace doslovem}%
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a kom., s\addnbspace dosl\adddot}},
+ bytranslatoranin = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s\addnbspace \'{u}vodem}%
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s\addnbspace \'{u}v\adddot}},
+ bytranslatoranfo = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s\addnbspace p\v{r}edmluvou}%
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s\addnbspace p\v{r}edml\adddot}},
+ bytranslatoranaf = {{p\v{r}elo\v{z}eno \lbx@lfromlang\ a anotov\'{a}no, s\addnbspace doslovem}%
+ {p\v{r}el\adddot\ \lbx@sfromlang\ a anot., s\addnbspace dosl\adddot}},
and = {{a}{a}},
andothers = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
volume = {{svazek}{sv\adddot}},
volumes = {{svazky}{sv\adddot}},
involumes = {{in}{in}},
- jourvol = {{ro\v{c}n\'ik}{ro\v{c}\adddot}},
- jourser = {{\v{r}ada}{\v{r}\adddot}},% m\r{u}\v{z}e b\'{a}t t\'{e}\v{z} s\'{e}rie, ale \v{r}ada zn\'{i} l\'{e}pe
+ jourvol = {{ro\v{c}n\'{\i}k}{ro\v{c}\adddot}},
+ jourser = {{\v{r}ada}{\v{r}\adddot}},% FIXME: s\'{e}rie ?
book = {{kniha}{kniha}},
part = {{\v{c}\'{a}st}{\v{c}\'{a}st}},
- issue = {{\v{c}\'{i}slo}{\v{c}\'{i}slo}},
- newseries = {{nov\'{a} \v{r}ada}{n. \v{r}ada\adddot}},% FIXME: unsure
- oldseries = {{star\'{a} \v{r}ada}{st. \v{r}ada\adddot}},
- edition = {{vyd\'{a}n\'{i}}{vyd\adddot}},
- reprint = {{reprint}{repr\adddot}},
- reprintof = {{reprint}{repr\adddotspace}},
- reprintas = {{reprintov\'{a}no jako}{repr\adddotspace jako}},
- reprintfrom = {{reprintov\'{a}no z}{repr\adddotspace z}},
- reviewof = {{review of}{rev\adddotspace of}},
- translationof = {{p\v{r}eklad}{p\v{r}ekl\adddotspace}},
+ issue = {{\v{c}\'{\i}slo}{\v{c}\'{\i}slo}},
+ newseries = {{nov\'{a} \v{r}ada}{n\adddotspace \v{r}ada\adddot}},% FIXME: unsure
+ oldseries = {{star\'{a} \v{r}ada}{st\adddotspace \v{r}ada\adddot}},
+ edition = {{vyd\'{a}n\'{\i}}{vyd\adddot}},
+ reprint = {{dotisk}{dotisk}},
+ reprintof = {{dotisk}{dotisk}},
+ reprintas = {{dotisknuto jako}{dotisknuto jako}},
+ reprintfrom = {{dotisknuto z\addnbspace}{dotisknuto z\addnbspace}},
+ reviewof = {{recenze}{recenz\adddot}},
+ translationof = {{p\v{r}eklad}{p\v{r}ekl\adddot}},
translationas = {{p\v{r}elo\v{z}eno jako}{p\v{r}el\adddotspace jako}},
- translationfrom = {{p\v{r}elo\v{z}eno z}{p\v{r}el\adddotspace}},
+ translationfrom = {{p\v{r}elo\v{z}eno z\addnbspace}{p\v{r}el\adddotspace z\addnbspace}},
origpubas = {{p\r{u}vodn\v{e} vyd\'{a}no jako}{p\r{u}v\adddotspace vyd\adddotspace jako}},
- origpubin = {{p\r{u}vodn\v{e} vyd\'{a}no v}{p\r{u}v\adddotspace vyd\adddotspace v}},
- astitle = {{jako}{as}},
- bypublisher = {{od}{od}},% nejist\'{e}
- nodate = {{n\adddot d\adddot}{n\adddot d\adddot}},%FIXME
+ origpubin = {{p\r{u}vodn\v{e} vyd\'{a}no v\addnbspace roce}{p\r{u}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
+ astitle = {{jako}{jako}},
+ bypublisher = {{}{}},
+ nodate = {{nedatov\'{a}no}{b\adddot r\adddot}},% bez roku
page = {{strana}{s\adddot}},
pages = {{strany}{s\adddot}},
- column = {{sloupek}{sl\adddot}},% nebo sloupec?
+ column = {{sloupec}{sl\adddot}},
columns = {{sloupce}{sl\adddot}},
line = {{\v{r}\'{a}dek}{\v{r}\adddot}},
lines = {{\v{r}\'{a}dky}{\v{r}\adddot}},
@@ -313,46 +367,45 @@
sections = {{sekce}{\S\S}},
paragraph = {{odstavec}{ods\adddot}},
paragraphs = {{odstavce}{ods\adddot}},
-% pagetotal = {{}{}},% FIXME: missing
-% pagetotals = {{}{}},% FIXME: missing
-% columntotal = {{}{}},% FIXME: missing
-% columntotals = {{}{}},% FIXME: missing
-% linetotal = {{}{}},% FIXME: missing
-% linetotals = {{}{}},% FIXME: missing
-% versetotal = {{}{}},% FIXME: missing
-% versetotals = {{}{}},% FIXME: missing
-% sectiontotal = {{}{}},% FIXME: missing
-% sectiontotals = {{}{}},% FIXME: missing
-% paragraphtotal = {{}{}},% FIXME: missing
-% paragraphtotals = {{}{}},% FIXME: missing
- in = {{in}{in}},% Pouziti napriklad u sborniku nebo
- inseries = {{in}{in}},% casopisu, zni to lip new "v".
- % V pripade potreby pouzit lokalni lbx soubor
- ofseries = {{z}{z}},% taky prostor pro lokalni lbx
- number = {{\v{c}\'{i}slo}{\v{c}\adddot}},
+ pagetotal = {{strana}{s\adddot}},
+ pagetotals = {{strany}{s\adddot}},
+ columntotal = {{sloupec}{sl\adddot}},
+ columntotals = {{sloupce}{sl\adddot}},
+ linetotal = {{\v{r}\'{a}dek}{\v{r}\adddot}},
+ linetotals = {{\v{r}\'{a}dky}{\v{r}\adddot}},
+ versetotal = {{ver\v{s}}{v\adddot}},
+ versetotals = {{ver\v{s}e}{v\adddot}},
+ sectiontotal = {{sekce}{\S}},
+ sectiontotals = {{sekce}{\S\S}},
+ paragraphtotal = {{odstavec}{ods\adddot}},
+ paragraphtotals = {{odstavce}{ods\adddot}},
+ in = {{in}{in}},
+ inseries = {{in}{in}},
+ ofseries = {{z}{z}},
+ number = {{\v{c}\'{\i}slo}{\v{c}\adddot}},
chapter = {{kapitola}{kap\adddot}},
-% bathesis = {{}{}},% FIXME: missing
- mathesis = {{diplomov\'{a} pr\'{a}ce}{dipl\addabbrvspace}},
- phdthesis = {{diserta\v{c}n\'{i}\addabbrvspace pr\'{a}ce}{dis\addabbrvspace}},
- candthesis = {{kandid\'{a}tsk\'{a} pr\'{a}ce}{kand\adddotspace pr\adddotspace}},% mozna,
+ bathesis = {{bakal\'{a}\v{r}sk\'{a} pr\'{a}ce}{bak\adddotspace pr\adddot}},
+ mathesis = {{diplomov\'{a} pr\'{a}ce}{dipl\adddotspace pr\adddot}},
+ phdthesis = {{diserta\v{c}n\'{\i} pr\'{a}ce}{dis\adddotspace pr\adddot}},
+ candthesis = {{kandid\'{a}tsk\'{a} pr\'{a}ce}{kand\adddotspace pr\adddot}},% FIXME: unsure
resreport = {{v\'{y}zkumn\'{a} zpr\'{a}va}{v\'{y}zk\adddot\ zpr\adddot}},
techreport = {{technick\'{a} zpr\'{a}va}{tech\adddotspace zpr\adddot}},
- software = {{po\v{c}\'{i}ta\v{c}ov\'{y} software}{soft\adddot}},
+ software = {{po\v{c}\'{\i}ta\v{c}ov\'{y} software}{soft\adddot}},
datacd = {{CD-ROM}{CD-ROM}},
audiocd = {{audio CD}{audio CD}},
- version = {{verze}{ver\adddotspace}},
- url = {{dostupn\'y z WWW}{WWW}},
-% urlfrom = {{}{}},% FIXME: missing
- urlseen = {{citov\'ano}{cit\adddot}},
- inpreparation = {{v p\v{r}\'{i}prav\v{e}}{v p\v{r}\'{i}prav\v{e}}},
- submitted = {{odesl\'{a}no}{odes\adddotspace}},
- forthcoming = {{budouc\'{i}}{bud\adddotspace}},
- inpress = {{v tisku}{v tisku}},
- prepublished = {{p\v{r}ed publikov\'{a}n\'{i}m}{p\v{r}ed \adddotspace}},
- citedas = {{d\'{a}le citov\'{a}no jako}{d\'{a}le citov\'{a}no jako}},
+ version = {{verze}{ver\adddot}},
+ url = {{URL}{URL}},
+ urlfrom = {{dostupn\'{e} z\addnbspace}{dostupn\'{e} z\addnbspace}},
+ urlseen = {{citov\'{a}no}{cit\adddot}},
+ inpreparation = {{v\addnbspace p\v{r}\'{\i}prav\v{e}}{v\addnbspace p\v{r}\'{\i}prav\v{e}}},
+ submitted = {{odesl\'{a}no}{odesl\adddot}},
+ forthcoming = {{budouc\'{\i}}{bud\adddot}},
+ inpress = {{v\addnbspace tisku}{v\addnbspace tisku}},
+ prepublished = {{p\v{r}ed publikov\'{a}n\'{\i}m}{p\v{r}ed publ\adddot}},
+ citedas = {{d\'{a}le citov\'{a}no jako}{d\'{a}le cit\adddotspace jako}},
thiscite = {{zvl\'{a}\v{s}t\v{e}}{zvl\adddot}},
- seenote = {{viz pozn\'{a}mka}{viz poz\adddot}},
- quotedin = {{citov\'{a}no v}{cit\adddotspace v}},
+ seenote = {{viz pozn\'{a}mka}{viz pozn\adddot}},
+ quotedin = {{citov\'{a}no v\addnbspace}{cit\adddotspace v\addnbspace}},
idem = {{idem}{idem}},
idemsm = {{idem}{idem}},
idemsf = {{eadem}{eadem}},
@@ -370,105 +423,113 @@
passim = {{passim}{pass\adddot}},
see = {{viz}{viz}},
seealso = {{viz t\'{e}\v{z}}{viz t\'{e}\v{z}}},
- backrefpage = {{citov\'{a}no na stran\v{e}}{cit\adddotspace na s\adddot}},
+ backrefpage = {{citov\'{a}no na stran\v{e}}{cit\adddotspace na str\adddot}},
backrefpages = {{citov\'{a}no na stran\'{a}ch}{cit\adddotspace na s\adddot}},
- january = {{ledna}{led\adddot}},
- february = {{\'{u}nora}{\'{u}n\adddot}},
- march = {{b\v{r}ezna}{b\v{r}ez\adddot}},
- april = {{dubna}{dub\adddot}},
- may = {{kvetna}{kv\v{e}t\adddot}},
- june = {{\v{c}ervna}{\v{c}erv\adddot}},
- july = {{\v{c}ervence}{\v{c}vc}},
- august = {{srpna}{srp\adddot}},
- september = {{z\'{a}\v{r}\'{i}}{z\'{a}\v{r}\adddot}},
- october = {{\v{r}\'{i}jna}{\v{r}\'{i}j\adddot}},
- november = {{listopadu}{lis\adddot}},
- december = {{prosince}{pros\adddot}},
- langamerican = {{americk\'{a} angli\v{c}tina}{am\adddot angl\adddot}},
- langbrazilian = {{brazilsk\'{a} portugal\v{s}tina}{braz\adddot portugal\adddot}},
-% langbulgarian = {{}{}},% FIXME: missing
-% langcatalan = {{}{}},% FIXME: missing
+ january = {{leden}{led\adddot}},
+ february = {{\'{u}nor}{\'{u}n\adddot}},
+ march = {{b\v{r}ezen}{b\v{r}ez\adddot}},
+ april = {{duben}{dub\adddot}},
+ may = {{kv\v{e}ten}{kv\v{e}t\adddot}},
+ june = {{\v{c}erven}{\v{c}vn\adddot}},
+ july = {{\v{c}ervenec}{\v{c}vc\adddot}},
+ august = {{srpen}{srp\adddot}},
+ september = {{z\'{a}\v{r}\'{\i}}{z\'{a}\v{r}\adddot}},
+ october = {{\v{r}\'{\i}jen}{\v{r}\'{\i}j\adddot}},
+ november = {{listopad}{lis\adddot}},
+ december = {{prosinec}{pros\adddot}},
+ langamerican = {{americk\'{a} angli\v{c}tina}{am\adddot\ angl\adddot}},
+ langbrazilian = {{brazilsk\'{a} portugal\v{s}tina}{braz\adddot\ portugal\adddot}},
+ langbulgarian = {{bulhar\v{s}tina}{bulh\adddot}},
+ langcatalan = {{katal\'{a}n\v{s}tina}{katal\adddot}},
langcroatian = {{chorvat\v{s}tina}{chorv\adddot}},
-% langczech = {{}{}},% FIXME: missing
+ langczech = {{\v{c}e\v{s}tina}{\v{c}e\v{s}tina}},
langdanish = {{d\'{a}n\v{s}tina}{d\'{a}n\adddot}},
- langdutch = {{holand\v{s}tina}{hol.\adddot}},
+ langdutch = {{holand\v{s}tina}{hol\adddot}},
langenglish = {{angli\v{c}tina}{angl\adddot}},
-% langestonian = {{}{}},% FIXME: missing
+ langestonian = {{eston\v{s}tina}{est\adddot}},
langfinnish = {{fin\v{s}tina}{fin\adddot}},
langfrench = {{francouz\v{s}tina}{franc\adddot}},
langgalician = {{galicij\v{s}tina}{gal\adddot}},
langgerman = {{n\v{e}m\v{c}ina}{n\v{e}m\adddot}},
langgreek = {{\v{r}e\v{c}tina}{\v{r}e\v{c}\adddot}},
-% langhungarian = {{}{}}, % FIXME: missing
+ langhungarian = {{ma\v{d}ar\v{s}tina}{ma\v{d}\adddot}},
langitalian = {{ital\v{s}tina}{ital\adddot}},
+ langjapanese = {{japon\v{s}tina}{jap\adddot}},
langlatin = {{latina}{lat\adddot}},
-% langlatvian = {{}{}},% FIXME: missing
- langnorwegian = {{nor\v{s}tina}{nor\v{s}\adddot}},
-% langpolish = {{}{}},% FIXME: missing
- langportuguese = {{portugal\v{s}tina}{port\adddot}},
-% langslovak = {{}{}},% FIXME: missing
-% langslovene = {{}{}},% FIXME: missing
+ langlatvian = {{loty\v{s}tina}{lot\adddot}},
+ langnorwegian = {{nor\v{s}tina}{nor\adddot}},
+ langpolish = {{pol\v{s}tina}{pol\adddot}},
+ langportuguese = {{portugal\v{s}tina}{portugal\adddot}},
+ langrussian = {{ru\v{s}tina}{ru\v{s}tina}},
+ langserbian = {{srb\v{s}tina}{srb\adddot}},
+ langslovak = {{sloven\v{s}tina}{sloven\v{s}tina}},
+ langslovene = {{slovin\v{s}tina}{slovin\v{s}tina}},
langspanish = {{\v{s}pan\v{e}l\v{s}tina}{\v{s}pa\v{n}\adddot}},
langswedish = {{\v{s}v\'{e}d\v{s}tina}{\v{s}v\'{e}d\adddot}},
- fromamerican = {{z americk\'{e} angli\v{c}tiny}{z amer\adddot angl\adddot}},
- frombrazilian = {{z brazilsk\'{e} portugal\v{s}tiny}{z braz\adddotspace port\adddot}},
-% frombulgarian = {{}{}},% FIXME: missing
-% fromcatalan = {{}{}},% FIXME: missing
- fromcroatian = {{z chorvat\v{s}tiny}{z chorv.}},
-% fromczech = {{}{}},% FIXME: missing
- fromdanish = {{z d\'{a}n\v{s}tiny}{z d\'{a}n\adddot}},
- fromdutch = {{z holand\v{s}tiny}{z hol\adddot}},
- fromenglish = {{z angli\v{c}tiny}{z angl\adddot}},
-% fromestonian = {{}{}},% FIXME: missing
- fromfinnish = {{z fin\v{s}tiny}{z fin.}},
- fromfrench = {{z francouz\v{s}tiny}{z franc\adddot}},
- fromgalician = {{z galicij\v{s}tiny}{z gal\adddot}},
- fromgerman = {{z n\v{e}m\v{c}iny}{z n\v{e}m\adddot}},
- fromgreek = {{z \v{r}e\v{c}tiny}{z \v{r}e\v{c}\adddot}},
-% fromhungarian = {{}{}}, % FIXME: missing
- fromitalian = {{z ital\v{s}tiny}{z ital\adddot}},
- fromlatin = {{z latiny}{z lat\adddot}},
-% fromlatvian = {{}{}},% FIXME: missing
- fromnorwegian = {{z nor\v{s}tiny}{z nor\adddot}},
-% frompolish = {{}{}},% FIXME: missing
- fromportuguese = {{z portugal\v{s}tiny}{z portugal\v{s}tiny}},
-% fromslovak = {{}{}},% FIXME: missing
-% fromslovene = {{}{}},% FIXME: missing
+ langukrainian = {{ukrajin\v{s}tina}{ukr\adddot}},
+ fromamerican = {{z\addnbspace americk\'{e} angli\v{c}tiny}{z\addnbspace amer\adddot\ angl\adddot}},
+ frombrazilian = {{z\addnbspace brazilsk\'{e} portugal\v{s}tiny}{z\addnbspace braz\adddotspace portugal\adddot}},
+ frombulgarian = {{z\addnbspace bulhar\v{s}tiny}{z\addnbspace bulh\adddot}},
+ fromcatalan = {{z\addnbspace katal\'{a}n\v{s}tiny}{z\addnbspace katal\adddot}},
+ fromcroatian = {{z\addnbspace chorvat\v{s}tiny}{z\addnbspace chorv\adddot}},
+ fromczech = {{z\addnbspace \v{c}e\v{s}tiny}{z\addnbspace \v{c}e\v{s}tiny}},
+ fromdanish = {{z\addnbspace d\'{a}n\v{s}tiny}{z\addnbspace d\'{a}n\adddot}},
+ fromdutch = {{z\addnbspace holand\v{s}tiny}{z\addnbspace hol\adddot}},
+ fromenglish = {{z\addnbspace angli\v{c}tiny}{z\addnbspace angl\adddot}},
+ fromestonian = {{z\addnbspace eston\v{s}tiny}{z\addnbspace est\adddot}},
+ fromfinnish = {{z\addnbspace fin\v{s}tiny}{z\addnbspace fin\adddot}},
+ fromfrench = {{z\addnbspace francouz\v{s}tiny}{z\addnbspace franc\adddot}},
+ fromgalician = {{z\addnbspace galicij\v{s}tiny}{z\addnbspace gal\adddot}},
+ fromgerman = {{z\addnbspace n\v{e}m\v{c}iny}{z\addnbspace n\v{e}m\adddot}},
+ fromgreek = {{z\addnbspace \v{r}e\v{c}tiny}{z\addnbspace \v{r}e\v{c}\adddot}},
+ fromhungarian = {{z\addnbspace ma\v{d}ar\v{s}tiny}{z\addnbspace ma\v{d}\adddot}},
+ fromitalian = {{z\addnbspace ital\v{s}tiny}{z\addnbspace ital\adddot}},
+ fromjapanese = {{z\addnbspace japon\v{s}tiny}{z\addnbspace jap\adddot}},
+ fromlatin = {{z\addnbspace latiny}{z\addnbspace lat\adddot}},
+ fromlatvian = {{z\addnbspace loty\v{s}tiny}{z\addnbspace lot\adddot}},
+ fromnorwegian = {{z\addnbspace nor\v{s}tiny}{z\addnbspace nor\adddot}},
+ frompolish = {{z\addnbspace pol\v{s}tiny}{z\addnbspace pol\adddot}},
+ fromportuguese = {{z\addnbspace portugal\v{s}tiny}{z\addnbspace portugal\adddot}},
+ fromrussian = {{z\addnbspace ru\v{s}tiny}{z\addnbspace ru\v{s}tiny}},
+ fromserbian = {{zo srb\v{s}tiny}{zo srb\adddot}},
+ fromslovak = {{ze sloven\v{s}tiny}{ze sloven\v{s}tiny}},
+ fromslovene = {{ze slovin\v{s}tiny}{ze slovin\v{s}tiny}},
fromspanish = {{ze \v{s}pan\v{e}l\v{s}tiny}{ze \v{s}pa\v{n}\adddot}},
fromswedish = {{ze \v{s}v\'{e}d\v{s}tiny}{ze \v{s}v\'{e}d\adddot}},
+ fromukrainian = {{z\addnbspace ukrajin\v{s}tiny}{z\addnbspace ukr\adddot}},
countryde = {{N\v{e}mecko}{DE}},
countryeu = {{Evropsk\'{a} unie}{EU}},
countryep = {{Evropsk\'{a} unie}{EP}},
countryfr = {{Francie}{FR}},
countryuk = {{Velk\'{a} Brit\'{a}nie}{GB}},
- countryus = {{Spojen\'{e} St\'{a}ty Americk\'{e}}{US}},
+ countryus = {{Spojen\'{e} st\'{a}ty americk\'{e}}{US}},
patent = {{patent}{pat\adddot}},
patentde = {{n\v{e}meck\'{y} patent}{n\v{e}m\adddot\ pat\adddot}},
patenteu = {{evropsk\'{y} patent}{evr\adddot\ pat\adddot}},
patentfr = {{francouzsk\'{y} patent}{franc\adddot\ pat\adddot}},
- patentuk = {{britsk\'{y} patent}{britsk\'{y} pat\adddot}},
- patentus = {{americk\'{y} patent}{US\adddotspace pat\adddot}},
+ patentuk = {{britsk\'{y} patent}{brit\adddot\ pat\adddot}},
+ patentus = {{US patent}{US pat\adddot}},
patreq = {{patentov\'{a} \v{z}\'{a}dost}{pat\adddot\ \v{z}\'{a}d\adddot}},
patreqde = {{n\v{e}meck\'{a} patentov\'{a} \v{z}\'{a}dost}{n\v{e}meck\'{a} pat\adddot\ \v{z}\'{a}d\adddot}},
- patreqeu = {{evropsk\'{a} patentov\'{a} \v{z}\'{a}dost}{ev\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
+ patreqeu = {{evropsk\'{a} patentov\'{a} \v{z}\'{a}dost}{evr\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
patreqfr = {{francouzsk\'{a} patentov\'{a} \v{z}\'{a}dost}{franc\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
patrequk = {{britsk\'{a} patentov\'{a} \v{z}\'{a}dost}{brit\adddot\ pat\adddot\ \v{z}\'{a}d\adddot}},
- patrequs = {{US\adddotspace patentov\'{a} \v{z}\'{a}dost}{US\adddotspace pat\adddot\ \v{z}\'{a}d\adddot}},
+ patrequs = {{US patentov\'{a} \v{z}\'{a}dost}{US pat\adddot\ \v{z}\'{a}d\adddot}},
file = {{soubor}{soub\adddot}},
library = {{knihovna}{knih\adddot}},
abstract = {{abstrakt}{abst\adddot}},
annotation = {{anotace}{anot\adddot}},
-% commonera = {{}{}},
-% beforecommonera = {{}{}},
- annodomini = {{n\adddotspace l\adddot}{n\adddotspace l\adddot}},
- beforechrist = {{p\v{r}\adddotspace n\adddotspace l\adddot}{p\v{r}\adddotspace n\adddotspace l\adddot}},
-% circa = {{}{}},% FIXME: missing
-% spring = {{}{}},% FIXME: missing
-% summer = {{}{}},% FIXME: missing
-% autumn = {{}{}},% FIXME: missing
-% winter = {{}{}},% FIXME: missing
- am = {{dop\adddot}{dop\adddot}},
- pm = {{odp\adddot}{odp\adddot}},
+ commonera = {{n\'{a}\v{s} letopo\v{c}et}{n\adddotspace l\adddot}},
+ beforecommonera = {{p\v{r}ed na\v{s}\'{\i}m letopo\v{c}tem}{p\v{r}\adddotspace n\adddotspace l\adddot}},
+ annodomini = {{po Kristu}{po Kr\adddot}},
+ beforechrist = {{p\v{r}ed Kristem}{p\v{r}\adddotspace Kr\adddot}},
+ circa = {{cirka}{ca\adddot}},
+ spring = {{jaro}{jaro}},
+ summer = {{l\'{e}to}{l\'{e}to}},
+ autumn = {{podzim}{podzim}},
+ winter = {{zima}{zima}},
+ am = {{AM}{AM}},
+ pm = {{PM}{PM}},
}
\endinput
diff --git a/macros/latex/contrib/biblatex/latex/lbx/danish.lbx b/macros/latex/contrib/biblatex/latex/lbx/danish.lbx
index 2c57242bd9..2b360a0c0c 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/danish.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/danish.lbx
@@ -36,13 +36,17 @@
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -245,7 +249,7 @@
byreviewer = {{bed\o mt af}{bed\adddotspace af}},
byfounder = {{stiftet af}{stiftet af}},
bycontinuator = {{videref\o rt af}{videref\adddotspace af}},
- bycollaborator = {{i samarbejde med}{i samarb\adddotspace m\adddotspace}},
+ bycollaborator = {{i samarbejde med}{i samarb\adddotspace m\adddot}},
bytranslator = {{oversat \lbx@lfromlang\ af}%
{overs\adddot \lbx@sfromlang\ af}},
bycommentator = {{kommenteret af}{komm\adddot\ af}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx b/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx
index 6d6822fd72..880c0643dc 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/dutch.lbx
@@ -57,13 +57,17 @@
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -474,14 +478,17 @@
langjapanese = {{Japaans}{Japaans}},
langlatin = {{Latijn}{Latijn}},
langlatvian = {{Lets}{Lets}},
+ langlithuanian = {{Litouws}{Litouws}},
langnorwegian = {{Noors}{Noors}},
langpolish = {{Pools}{Pools}},
langportuguese = {{Portugees}{Portugees}},
langrussian = {{Russisch}{Russisch}},
+ langserbian = {{Servisch}{Servisch}},
langslovak = {{Slowaaks}{Slowaaks}},% FIXME: or Slovaaks
langslovene = {{Sloveens}{Sloveens}},
langspanish = {{Spaans}{Spaans}},
langswedish = {{Zweeds}{Zweeds}},
+ langturkish = {{Turks}{Turks}},
langukrainian = {{Oekra\"iens}{Oekra\"iens}},
fromamerican = {{uit het Amerikaans Engels}{uit het Amerikaans Engels}},
frombrazilian = {{uit het Braziliaans Portugees}{uit het Braziliaans Portugees}},
@@ -503,14 +510,17 @@
fromjapanese = {{uit het Japaans}{uit het Japaans}},
fromlatin = {{uit het Latijn}{uit het Latijn}},
fromlatvian = {{uit het Lets}{uit het Lets}},
+ fromlithuanian = {{uit het Litouws}{uit het Litouws}},
fromnorwegian = {{uit het Noors}{uit het Noors}},
frompolish = {{uit het Pools}{uit het Pools}},
fromportuguese = {{uit het Portugees}{uit het Portugees}},
fromrussian = {{uit het Russisch}{uit het Russisch}},
+ fromserbian = {{uit het Servisch}{uit het Servisch}},
fromslovak = {{uit het Slowaaks}{uit het Slowaaks}},% FIXME: or Slovaaks
fromslovene = {{uit het Sloveens}{uit het Sloveens}},
fromspanish = {{uit het Spaans}{uit het Spaans}},
fromswedish = {{uit het Zweeds}{uit het Zweeds}},
+ fromturkish = {{uit het Turks}{uit het Turks}},
fromukrainian = {{uit het Oekra\"iens}{uit het Oekra\"iens}},
countryde = {{Duitsland}{DE}},
countryeu = {{Europese Unie}{EU}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/english.lbx b/macros/latex/contrib/biblatex/latex/lbx/english.lbx
index 109014dafb..1ade8c7f81 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/english.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/english.lbx
@@ -50,13 +50,17 @@ canadian,australian,newzealand,USenglish,UKenglish}
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -329,11 +333,11 @@ canadian,australian,newzealand,USenglish,UKenglish}
byeditortrcoaf = {{edited, translated \lbx@lfromlang\finalandcomma\ and commented, with an afterword, by}%
{ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and comm., with an afterw., by}},
byeditortranin = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated, with an introduction, by}%
- {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot, with an introd., by}},
+ {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot., with an introd., by}},
byeditortranfo = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated, with a foreword, by}%
- {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot, with a forew., by}},
+ {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot., with a forew., by}},
byeditortranaf = {{edited, translated \lbx@lfromlang\finalandcomma\ and annotated, with an afterword, by}%
- {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot, with an afterw., by}},
+ {ed.,\addabbrvspace trans\adddot\ \lbx@sfromlang\finalandcomma\ and annot., with an afterw., by}},
bytranslatorco = {{translated \lbx@lfromlang\ and commented by}%
{trans\adddot\ \lbx@sfromlang\ and comm\adddot\ by}},
bytranslatoran = {{translated \lbx@lfromlang\ and annotated by}%
@@ -485,14 +489,17 @@ canadian,australian,newzealand,USenglish,UKenglish}
langjapanese = {{Japanese}{Japanese}},
langlatin = {{Latin}{Latin}},
langlatvian = {{Latvian}{Latvian}},
+ langlithuanian = {{Lithuanian}{Lithuanian}},
langnorwegian = {{Norwegian}{Norwegian}},
langpolish = {{Polish}{Polish}},
langportuguese = {{Portuguese}{Portuguese}},
langrussian = {{Russian}{Russian}},
+ langserbian = {{Serbian}{Serbian}},
langslovak = {{Slovak}{Slovak}},
langslovene = {{Slovene}{Slovene}},
langspanish = {{Spanish}{Spanish}},
langswedish = {{Swedish}{Swedish}},
+ langturkish = {{Turkish}{Turkish}},
langukrainian = {{Ukrainian}{Ukrainian}},
fromamerican = {{from the American}{from the American}},
frombrazilian = {{from the Brazilian}{from the Brazilian}},
@@ -514,14 +521,17 @@ canadian,australian,newzealand,USenglish,UKenglish}
fromjapanese = {{from the Japanese}{from the Japanese}},
fromlatin = {{from the Latin}{from the Latin}},
fromlatvian = {{from the Latvian}{from the Latvian}},
+ fromlithuanian = {{from the Lithuanian}{from the Lithuanian}},
fromnorwegian = {{from the Norwegian}{from the Norwegian}},
frompolish = {{from the Polish}{from the Polish}},
fromportuguese = {{from the Portuguese}{from the Portuguese}},
fromrussian = {{from the Russian}{from the Russian}},
+ fromserbian = {{from the Serbian}{from the Serbian}},
fromslovak = {{from the Slovak}{from the Slovak}},
fromslovene = {{from the Slovene}{from the Slovene}},
fromspanish = {{from the Spanish}{from the Spanish}},
fromswedish = {{from the Swedish}{from the Swedish}},
+ fromturkish = {{from the Turkish}{from the Turkish}},
fromukrainian = {{from the Ukrainian}{from the Ukrainian}},
countryde = {{Germany}{DE}},
countryeu = {{European Union}{EU}},
@@ -568,7 +578,7 @@ canadian,australian,newzealand,USenglish,UKenglish}
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\ifdateyearsequal{#2}{#2end}
@@ -607,7 +617,7 @@ canadian,australian,newzealand,USenglish,UKenglish}
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\ifdateyearsequal{#2}{#2end}
@@ -637,12 +647,12 @@ canadian,australian,newzealand,USenglish,UKenglish}
{\mkdaterangefullextra{#1}{#2}}
{\lbx@us@mkdaterangetruncextra@long@i{#1}{#2}}}
-\protected\gdef\lbx@us@mkdaterangetruncextra@long#1#2{%
+\protected\gdef\lbx@us@mkdaterangetruncextra@long@i#1#2{%
\begingroup
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\ifdateyearsequal{#2}{#2end}
@@ -678,12 +688,12 @@ canadian,australian,newzealand,USenglish,UKenglish}
{\mkdaterangefullextra{#1}{#2}}
{\lbx@us@mkdaterangetruncextra@short@i{#1}{#2}}}
-\protected\gdef\lbx@us@mkdaterangetruncextra@short#1#2{%
+\protected\gdef\lbx@us@mkdaterangetruncextra@short@i#1#2{%
\begingroup
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\ifdateyearsequal{#2}{#2end}
diff --git a/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx b/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx
index 2b0b32f115..07b58d529d 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/estonian.lbx
@@ -56,17 +56,22 @@
{\printlist[sfromoriglanguage]{origlanguage}\space}}%
\savebibmacro{in:}%
\renewbibmacro{in:}{%
- \iffieldequalstr{entrytype}{article}
+ \ifentrytype{article}
{}
- {\printtext{\bibstring{in}\intitlepunct}}}%
+ {\bibstring{in}%
+ \printunit{\intitlepunct}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -276,7 +281,7 @@
byfounder = {{asutanud}{asutanud}},
bycontinuator = {{j\"{a}tkanud}{j\"{a}tkanud}},
bycollaborator = {{koost\"{o}\"{o}s}{koost\"{o}\"{o}s}},
- bytranslator = {{\lbx@lfromlang t\~{o}lkinud}{\lbx@sfromlang t\~{o}lk\adddotspace}},
+ bytranslator = {{\lbx@lfromlang t\~{o}lkinud}{\lbx@sfromlang t\~{o}lk\adddot}},
bycommentator = {{kommenteerinud}{kommenteerinud}},
byannotator = {{kommenteerinud}{kommenteerinud}},% FIXME: unsure
withcommentator = {{koos kommentaaridega}{koos kommentaaridega}},% FIXME: commentator name should be in the middle
diff --git a/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx b/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx
index 372b537d97..99db65676d 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/finnish.lbx
@@ -75,17 +75,22 @@
{\printlist[sfromoriglanguage]{origlanguage}\space}}%
\savebibmacro{in:}%
\renewbibmacro{in:}{%
- \iffieldequalstr{entrytype}{article}
+ \ifentrytype{article}
{}
- {\printtext{\bibstring{in}\intitlepunct}}}%
+ {\bibstring{in}%
+ \printunit{\intitlepunct}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/french.lbx b/macros/latex/contrib/biblatex/latex/lbx/french.lbx
index 31f436e1df..d2e441b66e 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/french.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/french.lbx
@@ -1,8 +1,6 @@
\ProvidesFile{french.lbx}
[\abx@lbxid]
-% Translations by non-native speaker: this file needs an overhaul!
-
\DeclareRedundantLanguages{french}{french}
\DeclareBibliographyExtras{%
@@ -66,13 +64,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -110,7 +112,7 @@
\DeclareBibliographyStrings{%
bibliography = {{Bibliographie}{Bibliographie}},
references = {{R\'ef\'erences}{R\'ef\'erences}},
- shorthands = {{Liste des sigles}{Sigles}},
+ shorthands = {{Liste des abr\'eviations}{Abr\'eviations}},
editor = {{\'editeur}{\'ed\adddot}},
editors = {{\'editeurs}{\'ed\adddot}},
compiler = {{compilateur}{comp\adddot}},
@@ -150,13 +152,13 @@
{\'ed\adddotspace et introd\adddot}},
editorsin = {{\'editeurs et introduction}%
{\'ed\adddotspace et introd\adddot}},
- editorfo = {{\'editeur et pr\'efacier}%
+ editorfo = {{\'editeur et pr\'eface}%
{\'ed\adddotspace et pr\'ef\adddot}},
- editorsfo = {{\'editeurs et pr\'efaciers}%
+ editorsfo = {{\'editeurs et pr\'eface}%
{\'ed\adddotspace et pr\'ef\adddot}},
- editoraf = {{\'editeur et postfacier}%
+ editoraf = {{\'editeur et postface}%
{\'ed\adddotspace et postf\adddot}},
- editorsaf = {{\'editeurs et postfaciers}%
+ editorsaf = {{\'editeurs et postface}%
{\'ed\adddotspace et postf\adddot}},
editortrco = {{\'editeur, traducteur et commentateur}%
{\'ed.,\addabbrvspace trad\adddotspace et comm\adddot}},
@@ -170,61 +172,61 @@
{\'ed.,\addabbrvspace trad\adddotspace et introd\adddot}},
editorstrin = {{\'editeurs, traducteurs et introduction}%
{\'ed.,\addabbrvspace trad\adddotspace et introd\adddot}},
- editortrfo = {{\'editeur, traducteur et pr\'efacier}%
+ editortrfo = {{\'editeur, traducteur et pr\'eface}%
{\'ed.,\addabbrvspace trad\adddotspace et pr\'ef\adddot}},
- editorstrfo = {{\'editeurs, traducteurs et pr\'efaciers}%
+ editorstrfo = {{\'editeurs, traducteurs et pr\'eface}%
{\'ed.,\addabbrvspace trad\adddotspace et pr\'ef\adddot}},
- editortraf = {{\'editeur, traducteur et postfacier}%
+ editortraf = {{\'editeur, traducteur et postface}%
{\'ed.,\addabbrvspace trad\adddotspace et postf\adddot}},
- editorstraf = {{\'editeurs, traducteurs et postfaciers}%
+ editorstraf = {{\'editeurs, traducteurs et postface}%
{\'ed.,\addabbrvspace trad\adddot et postf\adddot}},
editorcoin = {{\'editeur, commentateur et introduction}%
{\'ed.,\addabbrvspace comm\adddotspace et introd\adddot}},
editorscoin = {{\'editeurs, commentateurs et introduction}%
{\'ed.,\addabbrvspace comm\adddotspace et introd\adddot}},
- editorcofo = {{\'editeur, commentateur et pr\'efacier}%
+ editorcofo = {{\'editeur, commentateur et pr\'eface}%
{\'ed.,\addabbrvspace comm\adddotspace et pr\'ef\adddot}},
- editorscofo = {{\'editeurs, commentateurs et pr\'efaciers}%
+ editorscofo = {{\'editeurs, commentateurs et pr\'eface}%
{\'ed.,\addabbrvspace comm\adddotspace et pr\'ef\adddot}},
- editorcoaf = {{\'editeur, commentateur et postfacier}%
+ editorcoaf = {{\'editeur, commentateur et postface}%
{\'ed.,\addabbrvspace comm\adddotspace et postf\adddot}},
- editorscoaf = {{\'editeurs, commentateurs et postfaciers}%
+ editorscoaf = {{\'editeurs, commentateurs et postface}%
{\'ed.,\addabbrvspace comm\adddotspace et postf\adddot}},
editoranin = {{\'editeur, annotateur et introduction}%
{\'ed.,\addabbrvspace annot\adddotspace et introd\adddot}},
editorsanin = {{\'editeurs, annotateurs et introduction}%
{\'ed.,\addabbrvspace annot\adddotspace et introd\adddot}},
- editoranfo = {{\'editeur, annotateur et pr\'efacier}%
+ editoranfo = {{\'editeur, annotateur et pr\'eface}%
{\'ed.,\addabbrvspace annot\adddotspace et pr\'ef\adddot}},
- editorsanfo = {{\'editeurs, annotateurs et pr\'efaciers}%
+ editorsanfo = {{\'editeurs, annotateurs et pr\'eface}%
{\'ed.,\addabbrvspace annot\adddotspace et pr\'ef\adddot}},
- editoranaf = {{\'editeur, annotateur et postfacier}%
+ editoranaf = {{\'editeur, annotateur et postface}%
{\'ed.,\addabbrvspace annot\adddotspace et postf\adddot}},
- editorsanaf = {{\'editeurs, annotateurs et postfaciers}%
+ editorsanaf = {{\'editeurs, annotateurs et postface}%
{\'ed.,\addabbrvspace annot\adddotspace et postf\adddot}},
editortrcoin = {{\'editeur, traducteur, commentateur et introduction}%
{\'ed.,\addabbrvspace trad., comm\adddotspace et introd\adddot}},
editorstrcoin = {{\'editeurs, traducteurs, commentateurs et introduction}%
{\'ed.,\addabbrvspace trad., comm\adddotspace et introd\adddot}},
- editortrcofo = {{\'editeur, traducteur, commentateur et pr\'efacier}%
+ editortrcofo = {{\'editeur, traducteur, commentateur et pr\'eface}%
{\'ed.,\addabbrvspace trad., comm\adddotspace et pr\'ef\adddot}},
- editorstrcofo = {{\'editeurs, traducteurs, commentateurs et pr\'efaciers}%
+ editorstrcofo = {{\'editeurs, traducteurs, commentateurs et pr\'eface}%
{\'ed.,\addabbrvspace trad., comm\adddotspace et pr\'ef\adddot}},
- editortrcoaf = {{\'editeur, traducteur, commentateur et postfacier}%
+ editortrcoaf = {{\'editeur, traducteur, commentateur et postface}%
{\'ed.,\addabbrvspace trad., comm\adddotspace et postf\adddot}},
- editorstrcoaf = {{\'editeurs, traducteurs, commentateurs et postfaciers}%
+ editorstrcoaf = {{\'editeurs, traducteurs, commentateurs et postface}%
{\'ed.,\addabbrvspace trad., comm\adddotspace et postf\adddot}},
editortranin = {{\'editeur, traducteur, annotateur et introduction}%
{\'ed.,\addabbrvspace trad., annot\adddotspace et introd\adddot}},
editorstranin = {{\'editeurs, traducteurs, annotateurs et introduction}%
{\'ed.,\addabbrvspace trad., annot\adddotspace et introd\adddot}},
- editortranfo = {{\'editeur, traducteur, annotateur et pr\'efacier}%
+ editortranfo = {{\'editeur, traducteur, annotateur et pr\'eface}%
{\'ed.,\addabbrvspace trad., annot\adddotspace et pr\'ef\adddot}},
- editorstranfo = {{\'editeurs, traducteurs, annotateurs et pr\'efaciers}%
+ editorstranfo = {{\'editeurs, traducteurs, annotateurs et pr\'eface}%
{\'ed.,\addabbrvspace trad., annot\adddotspace et pr\'ef\adddot}},
- editortranaf = {{\'editeur, traducteur, annotateur et postfacier}%
+ editortranaf = {{\'editeur, traducteur, annotateur et postface}%
{\'ed.,\addabbrvspace trad., annot\adddotspace et postf\adddot}},
- editorstranaf = {{\'editeurs, traducteurs, annotateurs et postfaciers}%
+ editorstranaf = {{\'editeurs, traducteurs, annotateurs et postface}%
{\'ed.,\addabbrvspace trad., annot\adddotspace et postf\adddot}},
translatorco = {{traducteur et commentateur}%
{trad\adddotspace et comm\adddot}},
@@ -385,7 +387,7 @@
origpubin = {{publi\'e \`a l'origine en}{pub\adddotspace \`a l'orig\adddotspace en}},
astitle = {{sous le titre}{sous le titre}},
bypublisher = {{par}{par}},
- nodate = {{pas\space de\space date}{{}p\adddotspace d\adddot}},
+ nodate = {{sans\space date}{{}s\adddotspace d\adddot}},
page = {{page}{p\adddot}},
pages = {{pages}{p\adddot}},
column = {{colonne}{col\adddot}},
@@ -394,10 +396,10 @@
lines = {{lignes}{l\adddot}},
verse = {{vers}{v\adddot}},
verses = {{vers}{v\adddot}},
- section = {{section}{\S}},
- sections = {{sections}{\S}},
- paragraph = {{paragraphe}{par\adddot}},
- paragraphs = {{paragraphes}{par\adddot}},
+ section = {{section}{sect\adddot}},
+ sections = {{sections}{sect\adddot}},
+ paragraph = {{paragraphe}{\S}},
+ paragraphs = {{paragraphes}{\S}},
pagetotal = {{page}{p\adddot}},
pagetotals = {{pages}{p\adddot}},
columntotal = {{colonne}{col\adddot}},
@@ -406,10 +408,10 @@
linetotals = {{lignes}{l\adddot}},
versetotal = {{vers}{v\adddot}},
versetotals = {{vers}{v\adddot}},
- sectiontotal = {{section}{\S}},
- sectiontotals = {{sections}{\S}},
- paragraphtotal = {{paragraphe}{par\adddot}},
- paragraphtotals = {{paragraphes}{par\adddot}},
+ sectiontotal = {{section}{sect\adddot}},
+ sectiontotals = {{sections}{sect\adddot}},
+ paragraphtotal = {{paragraphe}{\S}},
+ paragraphtotals = {{paragraphes}{\S}},
in = {{in}{in}},
inseries = {{in}{in}},
ofseries = {{de}{de}},
@@ -458,11 +460,11 @@
backrefpages = {{cf\adddotspace pages}{cf\adddotspace p\adddot}},
january = {{janvier}{jan\adddot}},
february = {{f\'evrier}{f\'ev\adddot}},
- march = {{mars}{mar\adddot}},
+ march = {{mars}{mars}},
april = {{avril}{avr\adddot}},
may = {{mai}{mai}},
june = {{juin}{juin}},
- july = {{juillet}{juil\adddot}},
+ july = {{juillet}{juill\adddot}},
august = {{ao\^ut}{ao\^ut}},
september = {{septembre}{sept\adddot}},
october = {{octobre}{oct\adddot}},
@@ -492,6 +494,7 @@
langpolish = {{polonais}{polonais}},
langportuguese = {{portugais}{portugais}},
langrussian = {{russe}{russe}},
+ langserbian = {{serbe}{serbe}},
langslovak = {{slovaque}{slovaque}},
langslovene = {{slov\`ene}{slov\`ene}},
langspanish = {{espagnol}{espagnol}},
@@ -521,6 +524,7 @@
frompolish = {{du polonais}{du polonais}},
fromportuguese = {{du portugais}{du portugais}},
fromrussian = {{du russe}{du russe}},
+ fromserbian = {{du serbe}{du serbe}},
fromslovak = {{du slovaque}{du slovaque}},
fromslovene = {{du slov\`ene}{du slov\`ene}},
fromspanish = {{de l'espagnol}{de l'espagnol}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/galician.lbx b/macros/latex/contrib/biblatex/latex/lbx/galician.lbx
index 5cd3085e00..293fe87520 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/galician.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/galician.lbx
@@ -43,13 +43,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -426,7 +430,7 @@ nodate = {{sen data}{s\adddot d\adddot}},
sequens = {{sq\adddot}{sq\adddot}},
sequentes = {{sqq\adddot}{sqq\adddot}},
passim = {{p\'assim}{p\'ass\adddot}},
- see = {{v\'exase}{vid\adddotspace}},
+ see = {{v\'exase}{vid\adddot}},
seealso = {{v\'exase tam\'en}{vid\adddotspace tam\'en}},
backrefpage = {{v\'exase p\'axina}{vid\adddotspace p\adddot}},
backrefpages = {{v\'exanse p\'axinas}{vid\adddotspace pp\adddot}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/german.lbx b/macros/latex/contrib/biblatex/latex/lbx/german.lbx
index d133f04c53..3aba7d6739 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/german.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/german.lbx
@@ -50,13 +50,17 @@
{}
{\printlist[sfromoriglanguage]{origlanguage}\space}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -118,141 +122,141 @@
foreword = {{Vorwort}{Vorw\adddot}},
afterword = {{Nachwort}{Nachw\adddot}},
editortr = {{Herausgeber und \"Ubersetzer}%
- {Hrsg\adddot\ und \"Ubers\adddot}},
+ {Hrsg\adddotspace und \"Ubers\adddot}},
editorstr = {{Herausgeber und \"Ubersetzer}%
- {Hrsg\adddot\ und \"Ubers\adddot}},
+ {Hrsg\adddotspace und \"Ubers\adddot}},
editorco = {{Herausgeber und Kommentator}%
- {Hrsg\adddot\ und Komm\adddot}},
+ {Hrsg\adddotspace und Komm\adddot}},
editorsco = {{Herausgeber und Kommentatoren}%
- {Hrsg\adddot\ und Komm\adddot}},
+ {Hrsg\adddotspace und Komm\adddot}},
editoran = {{Herausgeber und Kommentator}%
- {Hrsg\adddot\ und Komm\adddot}},
+ {Hrsg\adddotspace und Komm\adddot}},
editorsan = {{Herausgeber und Kommentatoren}%
- {Hrsg\adddot\ und Komm\adddot}},
+ {Hrsg\adddotspace und Komm\adddot}},
editorin = {{Herausgabe und Einleitung}%
- {Hrsg\adddot\ und Einl\adddot}},
+ {Hrsg\adddotspace und Einl\adddot}},
editorsin = {{Herausgeber und Einleitung}%
- {Hrsg\adddot\ und Einl\adddot}},
+ {Hrsg\adddotspace und Einl\adddot}},
editorfo = {{Herausgeber und Vorwort}%
- {Hrsg\adddot\ und Vorw\adddot}},
+ {Hrsg\adddotspace und Vorw\adddot}},
editorsfo = {{Herausgabe und Vorwort}%
- {Hrsg\adddot\ und Vorw\adddot}},
+ {Hrsg\adddotspace und Vorw\adddot}},
editoraf = {{Herausgabe und Nachwort}%
- {Hrsg\adddot\ und Nachw\adddot}},
+ {Hrsg\adddotspace und Nachw\adddot}},
editorsaf = {{Herausgabe und Nachwort}%
- {Hrsg\adddot\ und Nachw\adddot}},
+ {Hrsg\adddotspace und Nachw\adddot}},
editortrco = {{Herausgeber, \"Ubersetzer und Kommentator}%
- {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
editorstrco = {{Herausgeber, \"Ubersetzer und Kommentatoren}%
- {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
editortran = {{Herausgeber, \"Ubersetzer und Kommentator}%
- {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
editorstran = {{Herausgeber, \"Ubersetzer und Kommentatoren}%
- {Hrsg., \"Ubers\adddot\ und Komm\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Komm\adddot}},
editortrin = {{Herausgabe, \"Ubersetzung und Einleitung}%
- {Hrsg., \"Ubers\adddot\ und Einl\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Einl\adddot}},
editorstrin = {{Herausgabe, \"Ubersetzung und Einleitung}%
- {Hrsg., \"Ubers\adddot\ und Einl\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Einl\adddot}},
editortrfo = {{Herausgabe, \"Ubersetzung und Vorwort}%
- {Hrsg., \"Ubers\adddot\ und Vorw\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Vorw\adddot}},
editorstrfo = {{Herausgabe, \"Ubersetzung und Vorwort}%
- {Hrsg., \"Ubers\adddot\ und Vorw\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Vorw\adddot}},
editortraf = {{Herausgabe, \"Ubersetzung und Nachwort}%
- {Hrsg., \"Ubers\adddot\ und Nachw\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Nachw\adddot}},
editorstraf = {{Herausgabe, \"Ubersetzung und Nachwort}%
- {Hrsg., \"Ubers\adddot\ und Nachw\adddot}},
+ {Hrsg., \"Ubers\adddotspace und Nachw\adddot}},
editorcoin = {{Herausgabe, Kommentar und Einleitung}%
- {Hrsg., Komm\adddot\ und Einl\adddot}},
+ {Hrsg., Komm\adddotspace und Einl\adddot}},
editorscoin = {{Herausgabe, Kommentar und Einleitung}%
- {Hrsg., Komm\adddot\ und Einl\adddot}},
+ {Hrsg., Komm\adddotspace und Einl\adddot}},
editorcofo = {{Herausgabe, Kommentar und Vorwort}%
- {Hrsg., Komm\adddot\ und Vorw\adddot}},
+ {Hrsg., Komm\adddotspace und Vorw\adddot}},
editorscofo = {{Herausgabe, Kommentar und Vorwort}%
- {Hrsg., Komm\adddot\ und Vorw\adddot}},
+ {Hrsg., Komm\adddotspace und Vorw\adddot}},
editorcoaf = {{Herausgabe, Kommentar und Nachwort}%
- {Hrsg., Komm\adddot\ und Nachw\adddot}},
+ {Hrsg., Komm\adddotspace und Nachw\adddot}},
editorscoaf = {{Herausgabe, Kommentar und Nachwort}%
- {Hrsg., Komm\adddot\ und Nachw\adddot}},
+ {Hrsg., Komm\adddotspace und Nachw\adddot}},
editoranin = {{Herausgabe, Erl\"auterungen und Einleitung}%
- {Hrsg., Erl\"aut\adddot\ und Einl\adddot}},
+ {Hrsg., Erl\"aut\adddotspace und Einl\adddot}},
editorsanin = {{Herausgabe, Erl\"auterungen und Einleitung}%
- {Hrsg., Erl\"aut\adddot\ und Einl\adddot}},
+ {Hrsg., Erl\"aut\adddotspace und Einl\adddot}},
editoranfo = {{Herausgabe, Erl\"auterungen und Vorwort}%
- {Hrsg., Erl\"aut\adddot\ und Vorw\adddot}},
+ {Hrsg., Erl\"aut\adddotspace und Vorw\adddot}},
editorsanfo = {{Herausgabe, Erl\"auterungen und Vorwort}%
- {Hrsg., Erl\"aut\adddot\ und Vorw\adddot}},
+ {Hrsg., Erl\"aut\adddotspace und Vorw\adddot}},
editoranaf = {{Herausgabe, Erl\"auterungen und Nachwort}%
- {Hrsg., Erl\"aut\adddot\ und Nachw\adddot}},
+ {Hrsg., Erl\"aut\adddotspace und Nachw\adddot}},
editorsanaf = {{Herausgabe, Erl\"auterungen und Nachwort}%
- {Hrsg., Erl\"aut\adddot\ und Nachw\adddot}},
+ {Hrsg., Erl\"aut\adddotspace und Nachw\adddot}},
editortrcoin = {{Herausgabe, \"Ubersetzung, Kommentar und Einleitung}%
- {Hrsg., \"Ubers., Komm\adddot\ und Einl\adddot}},
+ {Hrsg., \"Ubers., Komm\adddotspace und Einl\adddot}},
editorstrcoin = {{Herausgabe, \"Ubersetzung, Kommentar und Einleitung}%
- {Hrsg., \"Ubers., Komm\adddot\ und Einl\adddot}},
+ {Hrsg., \"Ubers., Komm\adddotspace und Einl\adddot}},
editortrcofo = {{Herausgabe, \"Ubersetzung, Kommentar und Vorwort}%
- {Hrsg., \"Ubers., Komm\adddot\ und Vorw\adddot}},
+ {Hrsg., \"Ubers., Komm\adddotspace und Vorw\adddot}},
editorstrcofo = {{Herausgabe, \"Ubersetzung, Kommentar und Vorwort}%
- {Hrsg., \"Ubers., Komm\adddot\ und Vorw\adddot}},
+ {Hrsg., \"Ubers., Komm\adddotspace und Vorw\adddot}},
editortrcoaf = {{Herausgabe, \"Ubersetzung, Kommentar und Nachwort}%
- {Hrsg., \"Ubers., Komm\adddot\ und Nachw\adddot}},
+ {Hrsg., \"Ubers., Komm\adddotspace und Nachw\adddot}},
editorstrcoaf = {{Herausgabe, \"Ubersetzung, Kommentar und Nachwort}%
- {Hrsg., \"Ubers., Komm\adddot\ und Nachw\adddot}},
+ {Hrsg., \"Ubers., Komm\adddotspace und Nachw\adddot}},
editortranin = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Einleitung}%
- {Hrsg., \"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+ {Hrsg., \"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
editorstranin = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Einleitung}%
- {Hrsg., \"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+ {Hrsg., \"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
editortranfo = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Vorwort}%
- {Hrsg., \"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+ {Hrsg., \"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
editorstranfo = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Vorwort}%
- {Hrsg., \"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+ {Hrsg., \"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
editortranaf = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Nachwort}%
- {Hrsg., \"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+ {Hrsg., \"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
editorstranaf = {{Herausgabe, \"Ubersetzung, Erl\"auterungen und Nachwort}%
- {Hrsg., \"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+ {Hrsg., \"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
translatorco = {{\"Ubersetzung und Kommentar}%
- {\"Ubers\adddot\ und Komm\adddot}},
+ {\"Ubers\adddotspace und Komm\adddot}},
translatorsco = {{\"Ubersetzung und Kommentar}%
- {\"Ubers\adddot\ und Komm\adddot}},
+ {\"Ubers\adddotspace und Komm\adddot}},
translatoran = {{\"Ubersetzung und Erl\"auterungen}%
- {\"Ubers\adddot\ und Erl\"aut\adddot}},
+ {\"Ubers\adddotspace und Erl\"aut\adddot}},
translatorsan = {{\"Ubersetzung und Erl\"auterungen}%
- {\"Ubers\adddot\ und Erl\"aut\adddot}},
+ {\"Ubers\adddotspace und Erl\"aut\adddot}},
translatorin = {{\"Ubersetzung und Einleitung}%
- {\"Ubers\adddot\ und Einl\adddot}},
+ {\"Ubers\adddotspace und Einl\adddot}},
translatorsin = {{\"Ubersetzung und Einleitung}%
- {\"Ubers\adddot\ und Einl\adddot}},
+ {\"Ubers\adddotspace und Einl\adddot}},
translatorfo = {{\"Ubersetzung und Vorwort}%
- {\"Ubers\adddot\ und Vorw\adddot}},
+ {\"Ubers\adddotspace und Vorw\adddot}},
translatorsfo = {{\"Ubersetzung und Vorwort}%
- {\"Ubers\adddot\ und Vorw\adddot}},
+ {\"Ubers\adddotspace und Vorw\adddot}},
translatoraf = {{\"Ubersetzung und Nachwort}%
- {\"Ubers\adddot\ und Nachw\adddot}},
+ {\"Ubers\adddotspace und Nachw\adddot}},
translatorsaf = {{\"Ubersetzung und Nachwort}%
- {\"Ubers\adddot\ und Nachw\adddot}},
+ {\"Ubers\adddotspace und Nachw\adddot}},
translatorcoin = {{\"Ubersetzung, Kommentar und Einleitung}%
- {\"Ubers., Komm\adddot\ und Einl\adddot}},
+ {\"Ubers., Komm\adddotspace und Einl\adddot}},
translatorscoin = {{\"Ubersetzung, Kommentar und Einleitung}%
- {\"Ubers., Komm\adddot\ und Einl\adddot}},
+ {\"Ubers., Komm\adddotspace und Einl\adddot}},
translatorcofo = {{\"Ubersetzung, Kommentar und Vorwort}%
- {\"Ubers., Komm\adddot\ und Vorw\adddot}},
+ {\"Ubers., Komm\adddotspace und Vorw\adddot}},
translatorscofo = {{\"Ubersetzung, Kommentar und Vorwort}%
- {\"Ubers., Komm\adddot\ und Vorw\adddot}},
+ {\"Ubers., Komm\adddotspace und Vorw\adddot}},
translatorcoaf = {{\"Ubersetzung, Kommentar und Nachwort}%
- {\"Ubers., Komm\adddot\ und Nachw\adddot}},
+ {\"Ubers., Komm\adddotspace und Nachw\adddot}},
translatorscoaf = {{\"Ubersetzung, Kommentar und Nachwort}%
- {\"Ubers., Komm\adddot\ und Nachw\adddot}},
+ {\"Ubers., Komm\adddotspace und Nachw\adddot}},
translatoranin = {{\"Ubersetzung, Erl\"auterungen und Einleitung}%
- {\"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+ {\"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
translatorsanin = {{\"Ubersetzung, Erl\"auterungen und Einleitung}%
- {\"Ubers., Erl\"aut\adddot\ und Einl\adddot}},
+ {\"Ubers., Erl\"aut\adddotspace und Einl\adddot}},
translatoranfo = {{\"Ubersetzung, Erl\"auterungen und Vorwort}%
- {\"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+ {\"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
translatorsanfo = {{\"Ubersetzung, Erl\"auterungen und Vorwort}%
- {\"Ubers., Erl\"aut\adddot\ und Vorw\adddot}},
+ {\"Ubers., Erl\"aut\adddotspace und Vorw\adddot}},
translatoranaf = {{\"Ubersetzung, Erl\"auterungen und Nachwort}%
- {\"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+ {\"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
translatorsanaf = {{\"Ubersetzung, Erl\"auterungen und Nachwort}%
- {\"Ubers., Erl\"aut\adddot\ und Nachw\adddot}},
+ {\"Ubers., Erl\"aut\adddotspace und Nachw\adddot}},
% organizer = {{}{}},% FIXME: missing
% organizers = {{}{}},% FIXME: missing
% byorganizer = {{}{}},% FIXME: missing
@@ -263,84 +267,84 @@
byreviser = {{\"uberarbeitet von}{\"uberarb\adddotspace von}},
byreviewer = {{rezensiert von}{rez\adddotspace von}},
byfounder = {{begr\"undet von}{begr\adddotspace von}},
- bycontinuator = {{fortgef\"urt von}{fortgef\adddotspace von}},
+ bycontinuator = {{fortgef\"uhrt von}{fortgef\adddotspace von}},
bycollaborator = {{unter Mitarbeit von}{unter Mitarb\adddotspace von}},
- bytranslator = {{\lbx@lfromlang \"ubersetzt von}{\lbx@sfromlang \"ubers\adddot\ von}},
- bycommentator = {{kommentiert von}{komm\adddot\ von}},
- byannotator = {{erl\"autert von}{erl\"aut\adddot\ von}},
- withcommentator = {{mit einem Kommentar von}{mit einem Komm\adddot\ von}},
- withannotator = {{mit Erl\"auterungen von}{mit Erl\"aut\adddot\ von}},
- withintroduction = {{mit einer Einleitung von}{mit einer Einl\adddot\ von}},
- withforeword = {{mit einem Vorwort von}{mit einem Vorw\adddot\ von}},
- withafterword = {{mit einem Nachwort von}{mit einem Nachw\adddot\ von}},
+ bytranslator = {{\lbx@lfromlang \"ubersetzt von}{\lbx@sfromlang \"ubers\adddotspace von}},
+ bycommentator = {{kommentiert von}{komm\adddotspace von}},
+ byannotator = {{erl\"autert von}{erl\"aut\adddotspace von}},
+ withcommentator = {{mit einem Kommentar von}{mit einem Komm\adddotspace von}},
+ withannotator = {{mit Erl\"auterungen von}{mit Erl\"aut\adddotspace von}},
+ withintroduction = {{mit einer Einleitung von}{mit einer Einl\adddotspace von}},
+ withforeword = {{mit einem Vorwort von}{mit einem Vorw\adddotspace von}},
+ withafterword = {{mit einem Nachwort von}{mit einem Nachw\adddotspace von}},
byeditortr = {{herausgegeben und \lbx@lfromlang \"ubersetzt von}%
- {hrsg\adddotspace und \lbx@sfromlang \"ubers\adddot\ von}},
+ {hrsg\adddotspace und \lbx@sfromlang \"ubers\adddotspace von}},
byeditorco = {{herausgegeben und kommentiert von}%
- {hrsg\adddotspace und komm\adddot\ von}},
+ {hrsg\adddotspace und komm\adddotspace von}},
byeditoran = {{herausgegeben und erl\"autert von}%
- {hrsg\adddotspace und erl\"aut\adddot\ von}},
+ {hrsg\adddotspace und erl\"aut\adddotspace von}},
byeditorin = {{herausgegeben und mit einer Einleitung versehen von}%
- {hrsg\adddotspace und mit einer Einl\adddot\ vers\adddot\ von}},
+ {hrsg\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
byeditorfo = {{herausgegeben und mit einem Vorwort versehen von}%
- {hrsg\adddotspace und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {hrsg\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
byeditoraf = {{herausgegeben und mit einem Nachwort versehen von}%
- {hrsg\adddotspace und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {hrsg\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
byeditortrco = {{herausgegeben, \lbx@lfromlang \"ubersetzt und kommentiert von}%
- {hrsg., \lbx@sfromlang \"ubers\adddot\ und komm\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers\adddotspace und komm\adddotspace von}},
byeditortran = {{herausgegeben, \lbx@lfromlang \"ubersetzt und erl\"autert von}%
- {hrsg., \lbx@sfromlang \"ubers\adddot\ und erl\"aut\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers\adddotspace und erl\"aut\adddotspace von}},
byeditortrin = {{herausgegeben, \lbx@lfromlang \"ubersetzt und mit einer Einleitung versehen von}%
- {hrsg., \lbx@sfromlang \"ubers\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
byeditortrfo = {{herausgegeben, \lbx@lfromlang \"ubersetzt und mit einem Vorwort versehen von}%
- {hrsg., \lbx@sfromlang \"ubers\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
byeditortraf = {{herausgegeben, \lbx@lfromlang \"ubersetzt und mit einem Nachwort versehen von}%
- {hrsg., \lbx@sfromlang \"ubers\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
byeditorcoin = {{herausgegeben, kommentiert und mit einer Einleitung versehen von}%
- {hrsg., komm\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {hrsg., komm\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
byeditorcofo = {{herausgegeben, kommentiert und mit einem Vorwort versehen von}%
- {hrsg., komm\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {hrsg., komm\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
byeditorcoaf = {{herausgegeben, kommentiert und mit einem Nachwort versehen von}%
- {hrsg., komm\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {hrsg., komm\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
byeditoranin = {{herausgegeben, erl\"autert und mit einer Einleitung versehen von}%
- {hrsg., erl\"aut\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {hrsg., erl\"aut\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
byeditoranfo = {{herausgegeben, erl\"autert und mit einem Vorwort versehen von}%
- {hrsg., erl\"aut\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {hrsg., erl\"aut\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
byeditoranaf = {{herausgegeben, erl\"autert und mit einem Nachwort versehen von}%
- {hrsg., erl\"aut\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {hrsg., erl\"aut\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
byeditortrcoin = {{herausgegeben, \lbx@lfromlang \"ubersetzt, kommentiert und mit einer Einleitung versehen von}%
- {hrsg., \lbx@sfromlang \"ubers., komm\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers., komm\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
byeditortrcofo = {{herausgegeben, \lbx@lfromlang \"ubersetzt, kommentiert und mit einem Vorwort versehen von}%
- {hrsg., \lbx@sfromlang \"ubers., komm\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers., komm\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
byeditortrcoaf = {{herausgegeben, \lbx@lfromlang \"ubersetzt, kommentiert und mit einem Nachwort versehen von}%
- {hrsg., \lbx@sfromlang \"ubers., komm\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers., komm\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
byeditortranin = {{herausgegeben, \lbx@lfromlang \"ubersetzt, erl\"autert und mit einer Einleitung versehen von}%
- {hrsg., \lbx@sfromlang \"ubers., erl\"aut\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers., erl\"aut\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
byeditortranfo = {{herausgegeben, \lbx@lfromlang \"ubersetzt, erl\"autert und mit einem Vorwort versehen von}%
- {hrsg., \lbx@sfromlang \"ubers., erl\"aut\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers., erl\"aut\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
byeditortranaf = {{herausgegeben, \lbx@lfromlang \"ubersetzt, erl\"autert und mit einem Nachwort versehen von}%
- {hrsg., \lbx@sfromlang \"ubers., erl\"aut\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {hrsg., \lbx@sfromlang \"ubers., erl\"aut\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
bytranslatorco = {{\lbx@lfromlang \"ubersetzt und kommentiert von}%
- {\lbx@sfromlang \"ubers\adddot\ und komm\adddot\ von}},
+ {\lbx@sfromlang \"ubers\adddotspace und komm\adddotspace von}},
bytranslatoran = {{\lbx@lfromlang \"ubersetzt und erl\"autert von}%
- {\lbx@sfromlang \"ubers\adddot\ und erl\"aut\adddot\ von}},
+ {\lbx@sfromlang \"ubers\adddotspace und erl\"aut\adddotspace von}},
bytranslatorin = {{\lbx@lfromlang \"ubersetzt und mit einer Einleitung versehen von}%
- {\lbx@sfromlang \"ubers\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
bytranslatorfo = {{\lbx@lfromlang \"ubersetzt und mit einem Vorwort versehen von}%
- {\lbx@sfromlang \"ubers\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
bytranslatoraf = {{\lbx@lfromlang \"ubersetzt und mit einem Nachwort versehen von}%
- {\lbx@sfromlang \"ubers\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
bytranslatorcoin = {{\lbx@lfromlang \"ubersetzt, kommentiert und mit einer Einleitung versehen von}%
- {\lbx@sfromlang \"ubers., komm\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers., komm\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
bytranslatorcofo = {{\lbx@lfromlang \"ubersetzt, kommentiert und mit einem Vorwort versehen von}%
- {\lbx@sfromlang \"ubers., komm\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers., komm\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
bytranslatorcoaf = {{\lbx@lfromlang \"ubersetzt, kommentiert und mit einem Nachwort versehen von}%
- {\lbx@sfromlang \"ubers., komm\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers., komm\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
bytranslatoranin = {{\lbx@lfromlang \"ubersetzt, erl\"autert und mit einer Einleitung versehen von}%
- {\lbx@sfromlang \"ubers., erl\"aut\adddot\ und mit einer Einl\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers., erl\"aut\adddotspace und mit einer Einl\adddotspace vers\adddotspace von}},
bytranslatoranfo = {{\lbx@lfromlang \"ubersetzt, erl\"autert und mit einem Vorwort versehen von}%
- {\lbx@sfromlang \"ubers., erl\"aut\adddot\ und mit einem Vorw\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers., erl\"aut\adddotspace und mit einem Vorw\adddotspace vers\adddotspace von}},
bytranslatoranaf = {{\lbx@lfromlang \"ubersetzt, erl\"autert und mit einem Nachwort versehen von}%
- {\lbx@sfromlang \"ubers., erl\"aut\adddot\ und mit einem Nachw\adddot\ vers\adddot\ von}},
+ {\lbx@sfromlang \"ubers., erl\"aut\adddotspace und mit einem Nachw\adddotspace vers\adddotspace von}},
and = {{und}{und}},
andothers = {{u.\,a\adddot}{u.\,a\adddot}},
andmore = {{u.\,a\adddot}{u.\,a\adddot}},
@@ -367,7 +371,7 @@
origpubin = {{zuerst publiziert in}{zuerst publ\adddotspace in}},
astitle = {{unter dem Titel}{unter dem Titel}},
bypublisher = {{von}{von}},
- nodate = {{ohne\space Datum}{{}o\adddot D\adddot}},
+ nodate = {{ohne\space Datum}{{}o.\,D\adddot}},
page = {{Seite}{S\adddot}},
pages = {{Seiten}{S\adddot}},
column = {{Spalte}{Sp\adddot}},
@@ -417,7 +421,7 @@
prepublished = {{Vorver\"offentlichung}{Vorver\"offentlichung}},
citedas = {{im folgenden zitiert als}{im folgenden zit\adddotspace als}},
thiscite = {{hier}{hier}},
- seenote = {{siehe Anmerkung}{s\adddotspace Anm\adddot}},
+ seenote = {{siehe Anmerkung}{s.~Anm\adddot}},
quotedin = {{zitiert nach}{zit\adddotspace nach}},
idem = {{derselbe}{ders\adddot}},
idemsf = {{dieselbe}{dies\adddot}},
@@ -435,7 +439,7 @@
sequentes = {{ff\adddot}{ff\adddot}},
passim = {{passim}{pass\adddot}},
see = {{siehe}{siehe}},
- seealso = {{siehe auch}{s.\,auch}},
+ seealso = {{siehe auch}{s.~auch}},
backrefpage = {{siehe Seite}{siehe S\adddot}},
backrefpages = {{siehe Seiten}{siehe S\adddot}},
january = {{Januar}{Jan\adddot}},
@@ -470,14 +474,17 @@
langjapanese = {{Japanisch}{Japanisch}},
langlatin = {{Lateinisch}{Lateinisch}},
langlatvian = {{Lettisch}{Lettisch}},
+ langlithuanian = {{Litauisch}{Litauisch}},
langnorwegian = {{Norwegisch}{Norwegisch}},
langpolish = {{Polnisch}{Polnisch}},
langportuguese = {{Portugiesisch}{Portugiesisch}},
langrussian = {{Russisch}{Russisch}},
+ langserbian = {{Serbisch}{Serbisch}},
langslovak = {{Slowakisch}{Slowakisch}},
langslovene = {{Slowenisch}{Slowenisch}},
langspanish = {{Spanisch}{Spanisch}},
langswedish = {{Schwedisch}{Schwedisch}},
+ langturkish = {{T\"urkisch}{T\"urkisch}},
langukrainian = {{Ukrainisch}{Ukrainisch}},
fromamerican = {{aus dem Amerikanischen}{aus dem Amerikanischen}},
frombrazilian = {{aus dem Brasilianischen}{aus dem Brasilianischen}},
@@ -499,14 +506,17 @@
fromjapanese = {{aus dem Japanischen}{aus dem Japanischen}},
fromlatin = {{aus dem Lateinischen}{aus dem Lateinischen}},
fromlatvian = {{aus dem Lettischen}{aus dem Lettischen}},
+ fromlithuanian = {{aus dem Litauischen}{aus dem Litauischen}},
fromnorwegian = {{aus dem Norwegischen}{aus dem Norwegischen}},
frompolish = {{aus dem Polnischen}{aus dem Polnischen}},
fromportuguese = {{aus dem Portugiesischen}{aus dem Portugiesischen}},
fromrussian = {{aus dem Russischen}{aus dem Russischen}},
+ fromserbian = {{aus dem Serbian}{aus dem Serbian}},
fromslovak = {{aus dem Slowakischen}{aus dem Slowakischen}},
fromslovene = {{aus dem Slowenischen}{aus dem Slowenischen}},
fromspanish = {{aus dem Spanischen}{aus dem Spanischen}},
fromswedish = {{aus dem Schwedischen}{aus dem Schwedischen}},
+ fromturkish = {{aus dem T\"urkischen}{T\"urkischen}},
fromukrainian = {{aus dem Ukrainischen}{aus dem Ukrainischen}},
countryde = {{Deutschland}{DE}},
countryep = {{Europ\"aische Union}{EP}},
@@ -516,29 +526,29 @@
countryus = {{USA}{US}},
patent = {{Patent}{Pat\adddot}},
patentde = {{deutsches Patent}{dt\adddotspace Pat\adddot}},
- patenteu = {{europ\"aisches Patent}{europ\adddot\ Pat\adddot}},
- patentfr = {{franz\"osisches Patent}{frz\adddot\ Pat\adddot}},
- patentuk = {{britisches Patent}{brit\adddot\ Pat\adddot}},
+ patenteu = {{europ\"aisches Patent}{europ\adddotspace Pat\adddot}},
+ patentfr = {{franz\"osisches Patent}{frz\adddotspace Pat\adddot}},
+ patentuk = {{britisches Patent}{brit\adddotspace Pat\adddot}},
patentus = {{US-Patent}{US-Pat\adddot}},
patreq = {{Patentanmeldung}{Patentanmeld\adddot}},
patreqde = {{deutsche Patentanmeldung}{dt\adddotspace Patentanmeld\adddot}},
- patreqeu = {{europ\"aische Patentanmeldung}{europ\adddot\ Patentanmeld\adddot}},
- patreqfr = {{franz\"osische Patentanmeldung}{frz\adddot\ Patentanmeld\adddot}},
- patrequk = {{britische Patentanmeldung}{brit\adddot\ Patentanmeld\adddot}},
+ patreqeu = {{europ\"aische Patentanmeldung}{europ\adddotspace Patentanmeld\adddot}},
+ patreqfr = {{franz\"osische Patentanmeldung}{frz\adddotspace Patentanmeld\adddot}},
+ patrequk = {{britische Patentanmeldung}{brit\adddotspace Patentanmeld\adddot}},
patrequs = {{US-Patentanmeldung}{US-Patentanmeld\adddot}},
file = {{Datei}{Datei}},
library = {{Bibliothek}{Bibliothek}},
abstract = {{Zusammenfassung}{Zusammenfassung}},
annotation = {{Anmerkungen}{Anmerkungen}},
- commonera = {{unserer Zeitrechnung}{u\adddotspace Z\adddot}},
- beforecommonera = {{vor unserer Zeitrechnung}{v\adddotspace u\adddotspace Z\adddot}},
- annodomini = {{n\adddotspace Chr\adddot}{n\adddotspace Chr\adddot}},
- beforechrist = {{v\adddotspace Chr\adddot}{v\adddotspace Chr\adddot}},
+ commonera = {{u.\,Z\adddot}{u.\,Z\adddot}},
+ beforecommonera = {{v.\,u.\,Z\adddot}{v.\,u.\,Z\adddot}},
+ annodomini = {{n.\,Chr\adddot}{n.\,Chr\adddot}},
+ beforechrist = {{v.\,Chr\adddot}{v.\,Chr\adddot}},
circa = {{circa}{ca\adddot}},
- spring = {{Fr\"uhling}{Fr\adddot}},
- summer = {{Sommer}{So\adddot}},
- autumn = {{Herbst}{He\adddot}},
- winter = {{Winter}{Wi\adddot}},
+ spring = {{Fr\"uhling}{Frühling}},
+ summer = {{Sommer}{Sommer}},
+ autumn = {{Herbst}{Herbst}},
+ winter = {{Winter}{Winter}},
am = {{vorm\adddot}{vorm\adddot}},
pm = {{nachm\adddot}{nachm\adddot}},
}
diff --git a/macros/latex/contrib/biblatex/latex/lbx/greek.lbx b/macros/latex/contrib/biblatex/latex/lbx/greek.lbx
index 69f2fd708b..6d86ddc4a4 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/greek.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/greek.lbx
@@ -15,7 +15,7 @@
{}
{\PackageError{biblatex}
{Greek requires UTF-8 support}
- {The 'greek.lbx' file requires UTF-8 encoding but you
+ {The file 'greek.lbx' requires UTF-8 encoding but you
seem\MessageBreak to be using a different encoding.
This is a fatal error. I will\MessageBreak abort loading
greek.lbx now.}%
@@ -78,13 +78,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx b/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx
index 0429de4e13..dc3ff3207a 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/icelandic.lbx
@@ -56,13 +56,17 @@
% \bibstring{bytranslator}%
% }}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/italian.lbx b/macros/latex/contrib/biblatex/latex/lbx/italian.lbx
index 07339b2653..b0469ad796 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/italian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/italian.lbx
@@ -43,13 +43,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -280,7 +284,7 @@
newseries = {{nuova serie}{nuova ser\adddot}},
oldseries = {{vecchia serie}{vecchia ser\adddot}},
edition = {{edizione}{ed\adddot}},
- reprint = {{ristampa}{rist\adddotspace}},
+ reprint = {{ristampa}{rist\adddot}},
reprintof = {{ristampa di}{rist\adddotspace di}},
% reprintas = {{}{}},% FIXME: missing
% reprintfrom = {{}{}},% FIXME: missing
diff --git a/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx b/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx
index 33a95360cb..137e97e6dd 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/latvian.lbx
@@ -83,13 +83,17 @@
{}
{\adddot}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -146,7 +150,7 @@
% this redefines \mkpageprefix to put the page number as suffix
\savecommand\blx@mkpageprefix
\protected\long\def\blx@mkpageprefix#1[#2]#3{%
- \blx@mkpageprefix@i[#2]{#3}%
+ \blx@mkpageprefix@i[{#2}]{#3}%
\ifnumeral{#3}
{\ppspace\bibstring{#1}}
{\ifnumerals{#3}
@@ -716,7 +720,7 @@
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\ifdateyearsequal{#2}{#2end}
@@ -754,7 +758,7 @@
\blx@metadateinfo{#2}%
\iffieldundef{#2year}
{\blx@nounit}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\ifdateyearsequal{#2}{#2end}
diff --git a/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx b/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx
new file mode 100644
index 0000000000..60d5476076
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/lbx/lithuanian.lbx
@@ -0,0 +1,838 @@
+\ProvidesFile{lithuanian.lbx}
+[\abx@lbxid]
+
+\DeclareRedundantLanguages{lithuanian}{lithuanian}
+
+% This file requires UTF-8 support!
+
+\lbx@ifutfinput
+ {}
+ {\PackageError{biblatex}
+ {Lithuanian requires UTF-8 support}
+ {The file 'lithuanian.lbx' requires UTF-8 encoding but you
+ seem\MessageBreak to be using a different encoding.
+ This is a fatal error. I will\MessageBreak abort loading
+ russian.lbx now.}%
+ \endinput}
+
+\DeclareBibliographyExtras{%
+ \DeclareCapitalPunctuation{.:!?}%
+ \protected\def\bibrangedash{%
+ \textendash\penalty\hyphenpenalty}% breakable endash
+ \def\lbx@lt@bibdaterangeseplong{\space\textendash\space}%
+ \def\lbx@lt@bibnumdaterangeseplong{\textendash}%
+ \def\lbx@lt@bibdaterangesepshort{\textendash}%
+ \let\lbx@lt@bibnumdaterangesepshort\lbx@lt@bibdaterangesepshort
+ \savecommand\bibdatesep
+ \protected\def\bibdatesep{\nobreakspace}%
+ \let\finalandcomma=\empty
+ \let\finalandsemicolon=\empty
+ \undef\mkbibordinal
+ \protected\def\mkbibmascord#1{\stripzeros{#1}-as}%
+ \protected\def\mkbibfemord#1{\stripzeros{#1}-a}%
+ \undef\mkbibneutord
+ \savecommand\mkbibordedition
+ \savecommand\mkbibordseries
+ \def\mkbibordedition{\mkbibmascord}%
+ \def\mkbibordseries{\mkbibfemord}%
+ \savecommand\lbx@lfromlang
+ \savecommand\lbx@sfromlang
+ \def\lbx@lfromlang{%
+ \iflistundef{origlanguage}
+ {}
+ {\printlist[lfromoriglanguage]{origlanguage}\space}}%
+ \def\lbx@sfromlang{%
+ \iflistundef{origlanguage}
+ {}
+ {\printlist[sfromoriglanguage]{origlanguage}\space}}%
+ \let\lbx@lt@ifdayrange\@secondoftwo
+ \def\lbx@lt@ifdropdaystring{\lbx@lt@ifdayrange}%
+ \let\lbx@lt@ifmonthrange\@secondoftwo
+ \def\lbx@lt@ifdropmonthstring{\lbx@lt@ifmonthrange}%
+ \let\lbx@lt@ifyearrange\@secondoftwo
+ \def\lbx@lt@ifdropyearstring{\lbx@lt@ifyearrange}%
+ \protected\def\mkbibdatelong#1#2#3{%
+ \iffieldundef{#1}
+ {}
+ {\iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}%
+ \stripzeros{\thefield{#1}}%
+ \lbx@lt@ifdropyearstring
+ {}
+ {\addnbspace\bibstring{year}}}%
+ \iffieldundef{#2}{}{\addnbspace}}%
+ \iffieldundef{#2}
+ {}
+ {\lbx@lt@mkgenmonth{\thefield{#2}}%
+ \iffieldundef{#3}
+ {\lbx@lt@ifdropmonthstring
+ {}
+ {\addnbspace\bibstring{month}}}
+ {\addnbspace}}%
+ \iffieldundef{#3}
+ {}
+ {\stripzeros{\thefield{#3}}%
+ \lbx@lt@ifdropdaystring{}{\addnbspace\bibstring{day}}}%
+ }%
+ \protected\def\mkbibdateshort#1#2#3{%
+ \iffieldundef{#1}
+ {}
+ {\iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}%
+ \forcezerosy{\thefield{#1}}}}%
+ \iffieldundef{#2}
+ {}
+ {\iffieldundef{#1}{}{\bibdatesep}%
+ \forcezerosmdt{\thefield{#2}}}%
+ \iffieldundef{#3}
+ {}
+ {\iffieldundef{#2}{}{\bibdatesep}%
+ \forcezerosmdt{\thefield{#3}}}%
+ }%
+ \let\mkbibseasondatelong\mkbibseasondateshort
+ \savecommand\mkdaterangefull
+ \savecommand\mkdaterangefullextra
+ \savecommand\mkdaterangetrunc
+ \savecommand\mkdaterangetruncextra
+ \protected\def\mkdaterangefull{%
+ \lbx@lt@mkdaterangefull}%
+ \protected\def\mkdaterangefullextra{%
+ \lbx@lt@mkdaterangefullextra}%
+ \protected\def\mkdaterangetrunc{%
+ \lbx@lt@mkdaterangetrunc}%
+ \protected\def\mkdaterangetruncextra{%
+ \lbx@lt@mkdaterangetruncextra}%
+ \savecommand\bibtimesep
+ \protected\def\bibtimesep{.}%
+ \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
+ \iffieldundef{#4}{}
+ {\bibtimezonesep
+ \mkbibtimezone{\thefield{#4}}}}%
+ \csletcs{mkbibtime12h}{mkbibtime24h}%
+ \protected\def\mkbibseasondateshort#1#2{%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}%
+ \iffieldundef{#1}{}{\addspace}%
+ \mkbibseason{\thefield{#2}}%
+ }%
+ \let\mkbibseasondatelong\mkbibseasondateshort
+}%
+
+\UndeclareBibliographyExtras{%
+ \restorecommand\bibdatesep
+ \restorecommand\mkbibordedition
+ \restorecommand\mkbibordseries
+ \restorecommand\lbx@lfromlang
+ \restorecommand\lbx@sfromlang
+ \restorecommand\bibtimesep
+ \restorecommand\mkdaterangefull
+ \restorecommand\mkdaterangefullextra
+ \restorecommand\mkdaterangetrunc
+ \restorecommand\mkdaterangetruncextra
+}
+
+\NewBibliographyString{%
+ genjanuary,
+ genfebruary,
+ genmarch,
+ genapril,
+ genmay,
+ genjune,
+ genjuly,
+ genaugust,
+ genseptember,
+ genoctober,
+ gennovember,
+ gendecember,
+ year,
+ month,
+ day,
+}
+
+\DeclareBibliographyStrings{%
+ bibliography = {{Bibliografija}{Bibliografija}},
+ references = {{Literatūros sąrašas}{Literatūra}},
+ shorthands = {{Santrumpų sąrašas}{Santrumpos}},
+ editor = {{sudarytojas}{sud\adddot}},
+ editors = {{sudarytojai}{sud\adddot}},
+ compiler = {{parengėjas}{pareng\adddot}},% FIXME: unsure
+ compilers = {{parengėjai}{pareng\adddot}},% FIXME: unsure
+ redactor = {{redaktorius}{red\adddot}},
+ redactors = {{redaktoriai}{red\adddot}},
+ reviser = {{korektorius}{kor\adddot}},
+ revisers = {{korektoriai}{kor\adddot}},
+ founder = {{pradininkas}{prad\adddot}},% FIXME: unsure
+ founders = {{pradininkai}{prad\adddot}},% FIXME: unsure
+ continuator = {{tęsėjas}{tęs\adddot}},
+ continuators = {{tęsėjai}{tęs\adddot}},
+ collaborator = {{bendradarbis}{bendr\adddot}},
+ collaborators = {{bendradarbiai}{bendr\adddot}},
+ translator = {{vertėjas}{vert\adddot}},
+ translators = {{vertėjai}{vert\adddot}},
+ commentator = {{komentarų autorius}{koment\adddotspace aut\adddot}},
+ commentators = {{komentarų autoriai}{koment\adddotspace aut\adddot}},
+ annotator = {{paaiškinimų autorius}{paaišk\adddotspace aut\adddot}},
+ annotators = {{paaiškinimų autoriai}{paaišk\adddotspace aut\adddot}},
+ commentary = {{komentarai}{koment\adddot}},
+ annotations = {{paaiškinimai}{paaišk\adddot}},
+ introduction = {{įvadas}{įv\adddot}},
+ foreword = {{pratarmė}{prat\adddot}},
+ afterword = {{pabaigos žodis}{pab\adddotspace žodis}},
+ editortr = {{sudarytojas ir vertėjas}%
+ {sud\adddotspace ir vert\adddot}},
+ editorstr = {{sudarytojai ir vertėjai}%
+ {sud\adddotspace ir vert\adddot}},
+ editorco = {{sudarytojas ir komentarų autorius}%
+ {sud\adddotspace ir koment\adddotspace aut\adddot}},
+ editorsco = {{sudarytojai ir komentarų autoriai}%
+ {sud\adddotspace ir koment\adddotspace aut\adddot}},
+ editoran = {{sudarytojas ir paaiškinimų autorius}%
+ {sud\adddotspace ir paaišk\adddotspace aut\adddot}},
+ editorsan = {{sudarytojai ir paaiškinimų autoriai}%
+ {sud\adddotspace ir paaišk\adddotspace aut\adddot}},
+ editorin = {{sudarytojas ir įvado autorius}%
+ {sud\adddotspace ir įv\adddotspace aut\adddot}},
+ editorsin = {{sudarytojai ir įvado autoriai}%
+ {sud\adddotspace ir įv\adddotspace aut\adddot}},
+ editorfo = {{sudarytojas ir pratarmės autorius}%
+ {sud\adddotspace ir prat\adddotspace aut\adddot}},
+ editorsfo = {{sudarytojai ir pratarmės autoriai}%
+ {sud\adddotspace ir prat\adddotspace aut\adddot}},
+ editoraf = {{sudarytojas ir pabaigos žodžio autorius}%
+ {sud\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorsaf = {{sudarytojai ir pabaigos žodžio autoriai}%
+ {sud\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editortrco = {{sudarytojas, vertėjas ir komentarų autorius}%
+ {sud., vert\adddotspace ir koment\adddotspace aut\adddot}},
+ editorstrco = {{sudarytojai, vertėjai ir komentarų autoriai}%
+ {sud., vert\adddotspace ir koment\adddotspace aut\adddot}},
+ editortran = {{sudarytojas, vertėjas ir paaiškinimų autorius}%
+ {sud., vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+ editorstran = {{sudarytojai, vertėjai ir paaiškinimų autoriai}%
+ {sud., vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+ editortrin = {{sudarytojas, vertėjas ir įvado autorius}%
+ {sud., vert\adddotspace ir įv\adddotspace aut\adddot}},
+ editorstrin = {{sudarytojai, vertėjai ir įvado autoriai}%
+ {sud., vert\adddotspace ir įv\adddotspace aut\adddot}},
+ editortrfo = {{sudarytojas, vertėjas ir pratarmės autorius}%
+ {sud., vert\adddotspace ir pratarmės\adddotspace aut\adddot}},
+ editorstrfo = {{sudarytojai, vertėjai ir pratarmės autoriai}%
+ {sud., vert\adddotspace ir prat\adddotspace aut\adddot}},
+ editortraf = {{sudarytojas, vertėjas ir pabaigos žodžio autorius}%
+ {sud., vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorstraf = {{sudarytojai, vertėjai ir pabaigos žodžio autoriai}%
+ {sud., vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorcoin = {{sudarytojas, komentarų ir įvado autorius}%
+ {sud., koment\adddotspace ir įv\adddotspace aut\adddot}},
+ editorscoin = {{sudarytojai, komentarų ir įvado autoriai}%
+ {sud., koment\adddotspace ir įv\adddotspace aut\adddot}},
+ editorcofo = {{sudarytojas, komentarų ir pratarmės autorius}%
+ {sud., koment\adddotspace ir prat\adddotspace aut\adddot}},
+ editorscofo = {{sudarytojai, komentarų ir pratarmės autoriai}%
+ {sud., koment\adddotspace ir prat\adddotspace aut\adddot}},
+ editorcoaf = {{sudarytojas, komentarų ir pabaigos žodžio autorius}%
+ {sud., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorscoaf = {{sudarytojai, komentarų ir pabaigos žodžio autoriai}%
+ {sud., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editoranin = {{sudarytojas, paaiškinimų ir įvado autorius}%
+ {sud., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+ editorsanin = {{sudarytojai, paaiškinimų ir įvado autoriai}%
+ {sud., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+ editoranfo = {{sudarytojas, paaiškinimų ir pratarmės autorius}%
+ {sud., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+ editorsanfo = {{sudarytojai, paaiškinimų ir pratarmės autoriai}%
+ {sud., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+ editoranaf = {{sudarytojas, paaiškinimų ir pabaigos žodžio autorius}%
+ {sud., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorsanaf = {{sudarytojai, paaiškinimų ir pabaigos žodžio autoriai}%
+ {sud., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editortrcoin = {{sudarytojas, vertėjas, komentarų ir įvado autorius}%
+ {sud., vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+ editorstrcoin = {{sudarytojai, vertėjai, komentarų ir įvado autoriai}%
+ {sud., vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+ editortrcofo = {{sudarytojas, vertėjas, komentarų ir pratarmės autorius}%
+ {sud., vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+ editorstrcofo = {{sudarytojai, vertėjai, komentarų ir pratarmės autoriai}%
+ {sud., vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+ editortrcoaf = {{sudarytojas, vertėjas, komentarų ir pabaigos žodžio autorius}%
+ {sud., vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorstrcoaf = {{sudarytojai, vertėjai, komentarų ir pabaigos žodžio autoriai}%
+ {sud., vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editortranin = {{sudarytojas, vertėjas, paaiškinimų ir įvado autorius}%
+ {sud., vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+ editorstranin = {{sudarytojai, vertėjai, paaiškinimų ir įvado autoriai}%
+ {sud., vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+ editortranfo = {{sudarytojas, vertėjas, paaiškinimų ir pratarmės autorius}%
+ {sud., vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+ editorstranfo = {{sudarytojai, vertėjai, paaiškinimų ir pratarmės autoriai}%
+ {sud., vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+ editortranaf = {{sudarytojas, vertėjas, paaiškinimų ir pabaigos žodžio autorius}%
+ {sud., vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ editorstranaf = {{sudarytojai, vertėjai, paaiškinimų ir pabaigos žodžio autoriai}%
+ {sud., vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ translatorco = {{vertėjas ir komentarų autorius}%
+ {vert\adddotspace ir koment\adddotspace aut\adddot}},
+ translatorsco = {{vertėjai ir komentarų autoriai}%
+ {vert\adddotspace ir koment\adddotspace aut\adddot}},
+ translatoran = {{vertėjas ir paaiškinimų autorius}%
+ {vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+ translatorsan = {{vertėjai ir paaiškinimų autoriai}%
+ {vert\adddotspace ir paaišk\adddotspace aut\adddot}},
+ translatorin = {{vertėjas ir įvado autorius}%
+ {vert\adddotspace ir įv\adddotspace aut\adddot}},
+ translatorsin = {{vertėjai ir įvado autoriai}%
+ {vert\adddotspace ir įv\adddotspace aut\adddot}},
+ translatorfo = {{vertėjas ir pratarmės autorius}%
+ {vert\adddotspace ir prat\adddotspace aut\adddot}},
+ translatorsfo = {{vertėjai ir pratarmės autoriai}%
+ {vert\adddotspace ir prat\adddotspace aut\adddot}},
+ translatoraf = {{vertėjas ir pabaigos žodžio autorius}%
+ {vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ translatorsaf = {{vertėjai ir pabaigos žodžio autoriai}%
+ {vert\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ translatorcoin = {{vertėjas, komentarų ir įvado autorius}%
+ {vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+ translatorscoin = {{vertėjai, komentarų ir įvado autoriai}%
+ {vert., koment\adddotspace ir įv\adddotspace aut\adddot}},
+ translatorcofo = {{vertėjas, komentarų ir pratarmės autorius}%
+ {vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+ translatorscofo = {{vertėjai, komentarų ir pratarmės autoriai}%
+ {vert., koment\adddotspace ir prat\adddotspace aut\adddot}},
+ translatorcoaf = {{vertėjas, komentarų ir pabaigos žodžio autorius}%
+ {vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ translatorscoaf = {{vertėjai, komentarų ir pabaigos žodžio autoriai}%
+ {vert., koment\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ translatoranin = {{vertėjas, paaiškinimų ir įvado autorius}%
+ {vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+ translatorsanin = {{vertėjai, paaiškinimų ir įvado autoriai}%
+ {vert., paaišk\adddotspace ir įv\adddotspace aut\adddot}},
+ translatoranfo = {{vertėjas, paaiškinimų ir pratarmės autorius}%
+ {vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+ translatorsanfo = {{vertėjai, paaiškinimų ir pratarmės autoriai}%
+ {vert., paaišk\adddotspace ir prat\adddotspace aut\adddot}},
+ translatoranaf = {{vertėjas, paaiškinimų ir pabaigos žodžio autorius}%
+ {vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ translatorsanaf = {{vertėjai, paaiškinimų ir pabaigos žodžio autoriai}%
+ {vert., paaišk\adddotspace ir pab\adddotspace žodžio aut\adddot}},
+ organizer = {{organizatorius}{org\adddot}},
+ organizers = {{organizatoriai}{org\adddot}},
+ byorganizer = {{organizavo}{org\adddot}},
+% byauthor = {{}{}}, %or sukūrė, or parašė
+ byeditor = {{sudarė}{sud\adddotspace}},
+ bycompiler = {{parengė}{pareng\adddotspace}},
+ byredactor = {{redagavo}{red\adddotspace}},
+ byreviser = {{tikrino}{tikr\adddotspace}},
+ byreviewer = {{recenzavo}{rec\adddotspace}},
+ byfounder = {{pradėjo}{prad\adddotspace}},
+ bycontinuator = {{tęsė}{tęs\adddotspace}},
+ bycollaborator = {{bendradarbiaujant su}{bendradarb\adddotspace su}},% FIXME: unsure
+ bytranslator = {{\lbx@lfromlang išvertė}{\lbx@sfromlang vert\adddot}},
+ bycommentator = {{komentarus parengė}{koment\adddot}},
+ byannotator = {{paaiškinimus parengė}{paaišk\adddot}},
+ withcommentator = {{komentarų autorius}{koment\adddotspace aut\adddot}},
+ withannotator = {{paaiškinimų autorius}{paaišk\adddotspace aut\adddot}},
+ withintroduction = {{įvado autorius}{įv\adddotspace aut\adddot}},
+ withforeword = {{pratarmės autorius}{prat\adddotspace aut\adddot}},
+ withafterword = {{pabaigos žodžio autorius}{pab\adddotspace žodžio aut\adddot}},
+ byeditortr = {{sudarė ir \lbx@lfromlang išvertė}%
+ {sud\adddotspace ir \lbx@sfromlang vert\adddot}},
+ byeditorco = {{sudarė ir komentarus parengė}%
+ {sud\adddotspace ir koment\adddotspace parengė}},
+ byeditoran = {{sudarė ir paaiškinimus parengė}%
+ {sud\adddotspace ir paaišk\adddotspace parengė}},
+ byeditorin = {{sudarė ir įvadą parašė}%
+ {sud\adddotspace ir įv\adddotspace parašė}},
+ byeditorfo = {{sudarė ir pratarmę parašė}%
+ {sud\adddotspace ir prat\adddotspace parašė}},
+ byeditoraf = {{sudarė ir pabaigos žodį parašė}%
+ {sud\adddotspace ir pab\adddotspace žodį parašė}},
+ byeditortrco = {{sudarė, \lbx@lfromlang išvertė ir komentarus parengė}%
+ {sud., \lbx@sfromlang vert\adddotspace ir koment\adddotspace parengė}},
+ byeditortran = {{sudarė, \lbx@lfromlang išvertė ir paaiškinimus parengė}%
+ {sud., \lbx@sfromlang vert\adddotspace ir paaišk\adddotspace parengė}},
+ byeditortrin = {{sudarė, \lbx@lfromlang išvertė ir įvadą parašė}%
+ {sud., \lbx@sfromlang vert\adddotspace ir įv\adddotspace parašė}},
+ byeditortrfo = {{sudarė, \lbx@lfromlang išvertė ir pratarmę parašė}%
+ {sud., \lbx@sfromlang vert\adddotspace ir prat\adddotspace parašė}},
+ byeditortraf = {{sudarė, \lbx@lfromlang išvertė ir pabaigos žodį parašė}%
+ {sud., \lbx@sfromlang vert\adddotspace ir pab\adddotspace žodį parašė}},
+ byeditorcoin = {{sudarė, komentarus parengė ir įvadą parašė}%
+ {sud., koment\adddotspace ir įv\adddotspace parašė}},
+ byeditorcofo = {{sudarė, komentarus parengė ir pratarmę parašė}%
+ {sud., koment\adddotspace ir prat\adddotspace parašė}},
+ byeditorcoaf = {{sudarė, komentarus parengė ir pabaigos žodį parašė}%
+ {sud., koment\adddotspace ir pab\adddotspace žodį parašė}},
+ byeditoranin = {{sudarė, paaiškinimus parengė ir įvadą parašė}%
+ {sud., paaišk\adddotspace ir įv\adddotspace parašė}},
+ byeditoranfo = {{sudarė, paaiškinimus parengė ir pratarmę parašė}%
+ {sud., paaišk\adddotspace ir prat\adddotspace parašė}},
+ byeditoranaf = {{sudarė, paaiškinimus parengė ir pabaigos žodį parašė}%
+ {sud., paaišk\adddotspace ir pab\adddotspace žodį parašė}},
+ byeditortrcoin = {{sudarė, \lbx@lfromlang išvertė, komentarus parengė ir įvadą parašė}%
+ {sud., \lbx@sfromlang vert\adddot, koment\adddotspace ir įvad\adddotspace parašė}},
+ byeditortrcofo = {{sudarė, \lbx@lfromlang išvertė, komentarus parengė ir pratarmę parašė}%
+ {sud., \lbx@sfromlang vert\adddot, koment\adddotspace ir prat\adddotspace parašė}},
+ byeditortrcoaf = {{sudarė, \lbx@lfromlang išvertė, komentarus ir pabaigos žodį parašė}%
+ {sud., \lbx@sfromlang vert\adddot, koment\adddotspace ir pab\adddotspace žodį parašė}},
+ byeditortranin = {{sudarė, \lbx@lfromlang išvertė, paaiškinimus parengė ir įvadą parašė}%
+ {sud., \lbx@sfromlang vert\adddot, paaišk\adddotspace ir pab\adddotspace žodį parašė}},
+ byeditortranfo = {{sudarė, \lbx@lfromlang išvertė, paaiškinimus parengė ir pratarmę parašė}%
+ {sud., \lbx@sfromlang vert\adddot, paaišk\adddotspace ir prat\adddotspace parašė}},
+ byeditortranaf = {{sudarė, \lbx@lfromlang išvertė, paaiškinimus parengė ir pabaigos žodį parašė}%
+ {sud., \lbx@sfromlang vert\adddot, paaišk\adddotspace ir pab\adddotspace žodį parašė}},
+ bytranslatorco = {{\lbx@lfromlang išvertė ir komentarus parengė}%
+ {\lbx@sfromlang vert\adddotspace ir koment\adddotspace parengė}},
+ bytranslatoran = {{\lbx@lfromlang išvertė ir paaiškinimus parengė}%
+ {\lbx@sfromlang vert\adddotspace ir paaišk\adddotspace parengė}},
+ bytranslatorin = {{\lbx@lfromlang išvertė ir įvadą parašė}%
+ {\lbx@sfromlang vert\adddotspace ir įv\adddotspace parašė}},
+ bytranslatorfo = {{\lbx@lfromlang išvertė ir pratarmę parašė}%
+ {\lbx@sfromlang vert\adddotspace ir prat\adddotspace parašė}},
+ bytranslatoraf = {{\lbx@lfromlang išvertė ir pabaigos žodį parašė}%
+ {\lbx@sfromlang vert\adddotspace ir pab\adddotspace žodį parašė}},
+ bytranslatorcoin = {{\lbx@lfromlang išvertė, komentarus parengė ir įvadą parašė}%
+ {\lbx@sfromlang vert\adddot, koment\adddotspace ir įv\adddotspace parašė}},
+ bytranslatorcofo = {{\lbx@lfromlang išvertė, komentarus parengė ir pratarmę parašė}%
+ {\lbx@sfromlang vert\adddot, koment\adddotspace ir prat\adddotspace parašė}},
+ bytranslatorcoaf = {{\lbx@lfromlang išvertė, komentarus parengė ir pabaigos žodį parašė}%
+ {\lbx@sfromlang vert\adddot, koment\adddotspace ir pab\adddotspace žodį parašė}},
+ bytranslatoranin = {{\lbx@lfromlang išvertė, paaiškinimus parengė ir įvadą parašė}%
+ {\lbx@sfromlang vert\adddot, paaišk\adddotspace ir įv\adddotspace parašė}},
+ bytranslatoranfo = {{\lbx@lfromlang išvertė, paaiškinimus parengė ir pratarmę parašė}%
+ {\lbx@sfromlang vert\adddot, paaišk\adddotspace ir prat\adddotspace parašė}},
+ bytranslatoranaf = {{\lbx@lfromlang išvertė, paaiškinimus parengė ir pabaigos žodį parašė}%
+ {\lbx@sfromlang vert\adddot, paaišk\adddotspace ir pab\adddotspace žodį parašė}}, %
+ and = {{ir}{ir}},
+ andothers = {{ir kiti}{ir kt\adddot}},
+ andmore = {{ir taip toliau}{ir t\adddotspace t\adddot}},
+ volume = {{tomas}{t\adddot}},
+ volumes = {{tomai}{t\adddot}},
+% involumes = {{}{}},
+ jourvol = {{tomas}{t\adddot}},
+ jourser = {{serija}{ser\adddot}},
+ book = {{knyga}{kn\adddot}},
+ part = {{dalis}{d\adddot}},
+ issue = {{numeris}{Nr.}},
+ newseries = {{nauja serija}{nauj\adddotspace ser\adddot}},
+ oldseries = {{sena serija}{sen\adddotspace ser\adddot}},
+ edition = {{leidimas}{leid\adddot}},
+ reprint = {{pakartotinis leidimas}{pakartot\adddotspace leid\adddot}},
+ reprintof = {{pakartotinis leidimas}{pakartot\adddotspace leid\adddot}},% FIXME: unsure
+ reprintas = {{perspausdinta kaip}{perspausdinta kaip}},
+ reprintfrom = {{perspausdinta iš}{perspausdinta iš}},
+ reviewof = {{recenzija}{rec\adddotspace}},
+ translationof = {{versta iš leidinio}{vert\adddotspace iš leid\adddot}},
+ translationas = {{išversta kaip}{išversta kaip}},
+ translationfrom = {{vertimas iš}{vert\adddotspace iš}},
+ origpubas = {{originaliai publikuotas kaip}{orig\adddotspace publ\adddotspace kaip}},
+ origpubin = {{originaliai publikuotas}{orig\adddotspace publ\adddotspace}},
+ astitle = {{pavadinimu}{pavadinimu}},%or kaip
+ bypublisher = {{leidykloje}{leidykloje}},% FIXME: unsure
+ page = {{puslapis}{p\adddot}},
+ pages = {{puslapiai}{p\adddot}},
+ column = {{skiltis}{skilt\adddot}},
+ columns = {{skiltys}{skilt\adddot}},
+ line = {{eilutė}{eil\adddot}},
+ lines = {{eilutės}{eil\adddot}},
+ nodate = {{sine anno}{s\adddotspace a\adddot}},
+ verse = {{eilutė}{eil\adddot}},
+ verses = {{eilutės}{eil\adddot}},
+ section = {{paragrafas}{paragr\adddot}},
+ sections = {{paragrafai}{paragr\adddot}},
+ paragraph = {{pastraipa}{pastr\adddot}},
+ paragraphs = {{pastraipos}{pastr\adddot}},
+ pagetotal = {{puslapis}{p\adddot}},
+ pagetotals = {{puslapiai}{p\adddot}},
+ columntotal = {{skiltis}{skilt\adddot}},
+ columntotals = {{skiltys}{skilt\adddot}},
+ linetotal = {{eilutė}{eil\adddot}},
+ linetotals = {{eilutės}{eil\adddot}},
+ versetotal = {{eilutė}{eil\adddot}},
+ versetotals = {{eilutės}{eil\adddot}},
+ sectiontotal = {{paragrafas}{paragr\adddot}},
+ sectiontotals = {{paragrafai}{paragr\adddot}},
+ paragraphtotal = {{pastraipa}{pastr\adddot}},
+ paragraphtotals = {{pastraipos}{pastr\adddot}},
+ in = {{in}{in}},
+% inseries = {{}{}},%or in
+ ofseries = {{iš}{iš}},
+ number = {{numeris}{Nr\adddot}},
+ chapter = {{skyrius}{sk\adddot}},
+ bathesis = {{bakalauro darbas}{bak\adddotspace darb\adddot}},
+ mathesis = {{magistro darbas}{mag\adddotspace darb\adddot}},
+ phdthesis = {{disertacija}{disert\adddot}},
+ candthesis = {{disertacija}{disert\adddot}},
+ resreport = {{mokslinė ataskaita}{moksl\adddotspace atask\adddot}},
+ techreport = {{techninė ataskaita}{techn\adddotspace atask\adddot}},
+ software = {{programinė įranga}{PĮ}},
+ datacd = {{CD-ROM}{CD-ROM}},
+ audiocd = {{audio CD}{audio CD}},
+ version = {{versija}{vers\adddot}},
+ url = {{interaktyvus}{interaktyvus}},
+ urlfrom = {{pasiekiamas per}{pasiekiamas per}},
+ urlseen = {{tikrinta}{tikrinta}},
+ inpreparation = {{rengiamas}{rengiamas}},
+ submitted = {{pateiktas}{pateiktas}},
+ forthcoming = {{pasirodysiantis}{pasirodysiantis}},
+ inpress = {{spaudoje}{spaudoje}},
+ prepublished = {{išankstinė publikacija}{išankstinė publ\adddot}},
+ citedas = {{nuo šiol cituojamas kaip}{nuo šiol}},
+ thiscite = {{čia}{čia}},
+ seenote = {{žiūrėk nuorodą}{žr\adddotspace nuor\adddot}},
+ quotedin = {{cituota}{cituota}},
+ idem = {{tas pats}{t\adddotspace p\adddot}},
+ idemsm = {{tas pats}{t\adddotspace p\adddot}},
+ idemsf = {{ta pati}{t\adddotspace p\adddot}},
+ idemsn = {{tas pats}{t\adddotspace p\adddot}},
+ idempm = {{tie patys}{t\adddotspace p\adddot}},
+ idempf = {{tos pačios}{t\adddotspace p\adddot}},
+ idempn = {{tie patys}{t\adddotspace p\adddot}},
+ idempp = {{tie patys}{t\adddotspace p\adddot}},
+ ibidem = {{ten pat}{ten pat}},
+ opcit = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+ loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+ confer = {{palygink}{plg\adddot}},
+ sequens = {{ir sekantis}{ir kt\adddot}},
+ sequentes = {{ir sekantys}{ir kt\adddot}},
+ passim = {{passim}{pass\adddot}},
+ see = {{žiūrėk}{žr\adddot}},
+ seealso = {{taip pat žiūrėk}{t\adddotspace p\adddotspace žr\adddot}},
+ backrefpage = {{cituota puslapyje}{cit\adddotspace psl\adddot}},
+ backrefpages = {{cituota puslapiuose}{cit\adddotspace psl\adddot}},
+ january = {{sausis}{saus\adddot}},
+ february = {{vasaris}{vas\adddot}},
+ march = {{kovas}{kov\adddot}},
+ april = {{balandis}{bal\adddot}},
+ may = {{gegužė}{geg\adddot}},
+ june = {{birželis}{birž\adddot}},
+ july = {{liepa}{liepa}},
+ august = {{rugpjūtis}{rugpj\adddot}},
+ september = {{rugsėjis}{rugs\adddot}},
+ october = {{spalis}{spal\adddot}},
+ november = {{lapkritis}{lapkr\adddot}},
+ december = {{gruodis}{gruod\adddot}},
+ genjanuary = {{sausio}{saus\adddot}},
+ genfebruary = {{vasario}{vas\adddot}},
+ genmarch = {{kovo}{kov\adddot}},
+ genapril = {{balandžio}{bal\adddot}},
+ genmay = {{gegužės}{geg\adddot}},
+ genjune = {{birželio}{birž\adddot}},
+ genjuly = {{liepos}{liep\adddot}},
+ genaugust = {{rugpjūčio}{rugpj\adddot}},
+ genseptember = {{rugsėjo}{rugs\adddot}},
+ genoctober = {{spalio}{spal\adddot}},
+ gennovember = {{lapkričio}{lapkr\adddot}},
+ gendecember = {{gruodžio}{gruod\adddot}},
+ langamerican = {{amerikiečių kalba}{amer\adddotspace k\adddot}},
+ langbrazilian = {{brazilų kalba}{braz\adddotspace k\adddot}},
+ langbulgarian = {{bulgarų kalba}{bulgarų k\adddot}},
+ langcatalan = {{katalonų kalba}{katalonų k\adddot}},
+ langcroatian = {{kroatų kalba}{kroatų k\adddot}},
+ langczech = {{čekų kalba}{čekų k\adddot}},
+ langdanish = {{danų kalba}{danų k\adddot}},
+ langdutch = {{olandų kalba}{olandų k\adddot}},
+ langenglish = {{anglų kalba}{anglų k\adddot}},
+ langestonian = {{estų kalba}{estų k\adddot}},
+ langfinnish = {{suomių kalba}{suomių k\adddot}},
+ langfrench = {{prancūzų kalba}{pranc\adddotspace k\adddot}},
+ langgerman = {{vokiečių kalba}{vok\adddotspace k\adddot}},
+ langgreek = {{graikų kalba}{graikų k\adddot}},
+ langhungarian = {{vengrų kalba}{vengrų k\adddot}},
+ langitalian = {{italų kalba}{it\adddotspace k\adddot}},
+ langjapanese = {{japonų kalba}{japonų k\adddot}},
+ langlatin = {{lotynų kalba}{lot\adddotspace k\adddot}},
+ langlatvian = {{latvių kalba}{latv\adddotspace k\adddot}},
+ langlithuanian = {{lietuvių kalba}{liet\adddotspace k\adddot}},
+ langnorwegian = {{norvegų kalba}{norv\adddotspace k\adddot}},
+ langpolish = {{lenkų kalba}{lenkų k\adddot}},
+ langportuguese = {{portugalų kalba}{portug\adddotspace k\adddot}},
+ langrussian = {{rusų kalba}{rusų k\adddot}},
+ langserbian = {{serbų kalba}{serbų k\adddot}},
+ langslovak = {{slovakų kalba}{slovakų k\adddot}},
+ langslovene = {{slovėnų kalba}{slovėnų k\adddot}},
+ langspanish = {{ispanų kalba}{isp\adddotspace k\adddot}},
+ langswedish = {{švedų kalba}{švedų k\adddot}},
+ langturkish = {{turkų kalba}{turkų k\adddot}},
+ langukrainian = {{ukrainiečių kalba}{ukrain\adddotspace k\adddot}},
+ fromamerican = {{iš amerikiečių kalbos}{iš amer\adddotspace k\adddot}},
+ frombrazilian = {{iš brazilų kalbos}{iš braz\adddotspace k\adddot}},
+ frombulgarian = {{iš bulgarų kalbos}{iš bulgarų k\adddot}},
+ fromcatalan = {{iš katalonų kalbos}{iš katalonų k\adddot}},
+ fromcroatian = {{iš kroatų kalbos}{iš kroatų k\adddot}},
+ fromczech = {{iš čekų kalbos}{iš čekų k\adddot}},
+ fromdanish = {{iš danų kalbos}{iš danų k\adddot}},
+ fromdutch = {{iš olandų kalbos}{iš olandų k\adddot}},
+ fromenglish = {{iš anglų kalbos}{iš anglų k\adddot}},
+ fromestonian = {{iš estų kalbos}{iš estų k\adddot}},
+ fromfinnish = {{iš suomių kalbos}{iš suomių k\adddot}},
+ fromfrench = {{iš prancūzų kalbos}{iš pranc\adddotspace k\adddot}},
+ fromgerman = {{iš vokiečių kalbos}{iš vok\adddotspace k\adddot}},
+ fromgreek = {{iš graikų kalbos}{iš graikų k\adddot}},
+ fromhungarian = {{iš vengrų kalbos}{iš vengrų k\adddot}},
+ fromitalian = {{iš italų kalbos}{iš italų k\adddot}},
+ fromjapanese = {{iš japonų kalbos}{iš japonų k\adddot}},
+ fromlatin = {{iš lotynų kalbos}{iš lot\adddotspace k\adddot}},
+ fromlatvian = {{iš latvių kalbos}{iš latvių k\adddot}},
+ fromnorwegian = {{iš norvegų kalbos}{iš norv\adddotspace k\adddot}},
+ frompolish = {{iš lenkų kalbos}{iš lenkų k\adddot}},
+ fromportuguese = {{iš portugalų kalbos}{iš portug\adddotspace k\adddot}},
+ fromrussian = {{iš rusų kalbos}{iš rusų k\adddot}},
+ fromserbian = {{iš serbų kalbos}{iš serbų k\adddot}},
+ fromslovak = {{iš slovakų kalbos}{iš slovakų k\adddot}},
+ fromslovene = {{iš slovėnų kalbos}{iš slovėnų k\adddot}},
+ fromspanish = {{iš ispanų kalbos}{iš isp\adddotspace k\adddot}},
+ fromswedish = {{iš švedų kalbos}{iš švedų k\adddot}},
+ fromturkish = {{iš turkų kalbos}{iš turkų k\adddot}},
+ fromukrainian = {{iš ukrainiečių kalbos}{iš ukrain\adddotspace k\adddot}},
+ countryde = {{Vokietija}{DE}},
+ countryeu = {{Europos Sąjunga}{EU}},
+ countryep = {{Europos Sąjunga}{EP}},
+ countryfr = {{Prancūzija}{FR}},
+ countryuk = {{Didžioji Britanija}{DB}},
+ countryus = {{Jungtinės Amerikos Valstijos}{JAV}},
+ patent = {{patentas}{pat\adddot}},
+ patentde = {{vokiškas patentas}{vokiškas pat\adddot}},
+ patenteu = {{europinis patentas}{europinis pat\adddot}},
+ patentfr = {{prancūziškas patentas}{prancūziškas pat\adddot}},
+ patentuk = {{angliškas patentas}{angliškas pat\adddot}},
+ patentus = {{JAV\addspace patentas}{JAV\addspace pat\adddot}},
+ patreq = {{patento prašymas}{pat\adddotspace praš\adddot}},
+ patreqde = {{vokiško patento prašymas}{vokiško pat\adddotspace praš\adddot}},
+ patreqeu = {{europinio patento prašymas}{europinio pat\adddotspace praš\adddot}},
+ patreqfr = {{prancūziško patento prašymas}{prancūziško pat\adddotspace praš\adddot}},
+ patrequk = {{angliško patento prašymas}{angliško pat\adddotspace praš\adddot}},
+ patrequs = {{JAV\addspace patento prašymas}{JAV\addspace pat\adddot\ praš\adddot}},
+ file = {{byla}{b\adddot}},
+ library = {{biblioteka}{bibl\adddot}},
+ abstract = {{santrauka}{santr\adddot}},
+ annotation = {{paaiškinimas}{paaišk\adddot}},
+ commonera = {{mūsų eros}{m\adddotspace e\adddot}},
+ beforecommonera = {{prieš mūsų erą}{pr\adddotspace m\adddotspace e\adddot}},
+ annodomini = {{po Kristaus gimimo}{po\space Kr\adddot}},
+ beforechrist = {{prieš Kristaus giminimą}{pr\adddotspace Kr\adddot}},
+ circa = {{apie}{apie}},
+ spring = {{pavasaris}{pav\adddot}},
+ summer = {{vasara}{vas\adddot}},
+ autumn = {{ruduo}{ruduo}},
+ winter = {{žiema}{žiema}},
+% am = {{}{}},
+% pm = {{}{}},
+ year = {{m\adddot}{m\adddot}},
+ month = {{mėn\adddot}{mėn\adddot}},
+ day = {{d\adddot}{d\adddot}},
+}
+
+
+\protected\gdef\lbx@lt@mkgenmonth#1{%
+ \ifcase0#1\relax
+ #1\BibliographyWarning{Month out of range}%
+ \or\abx@bibmonth{genjanuary}%
+ \or\abx@bibmonth{genfebruary}%
+ \or\abx@bibmonth{genmarch}%
+ \or\abx@bibmonth{genapril}%
+ \or\abx@bibmonth{genmay}%
+ \or\abx@bibmonth{genjune}%
+ \or\abx@bibmonth{genjuly}%
+ \or\abx@bibmonth{genaugust}%
+ \or\abx@bibmonth{genseptember}%
+ \or\abx@bibmonth{genoctober}%
+ \or\abx@bibmonth{gennovember}%
+ \or\abx@bibmonth{gendecember}%
+ \else
+ #1\BibliographyWarning{Month out of range}%
+ \fi}%
+
+\protected\gdef\lbx@lt@ifdayrange@i#1{%
+ \ifboolexpr{not test {\iffieldundef{#1endyear}}
+ and test {\iffieldsequal{#1year}{#1endyear}}
+ and test {\iffieldsequal{#1month}{#1endmonth}}
+ and (test {\iffieldundef{#1hour}}
+ or not togl {blx@#1dateusetime})}}
+
+\protected\gdef\lbx@lt@ifmonthrange@i#1{%
+ \ifboolexpr{not test {\iffieldundef{#1endyear}}
+ and test {\iffieldsequal{#1year}{#1endyear}}
+ and test {\iffieldundef{#1day}}
+ and test {\iffieldundef{#1endday}}}}
+
+\protected\gdef\lbx@lt@ifyearrange@i#1{%
+ \ifboolexpr{not test {\iffieldundef{#1endyear}}
+ and test {\iffieldundef{#1month}}
+ and test {\iffieldundef{#1endmonth}}}}
+
+\gdef\lbx@lt@ifdatenumrange{%
+ \lbx@lt@ifyearrange
+ {\@firstoftwo}
+ {\lbx@lt@ifdayrange}}
+
+\protected\gdef\lbx@lt@mkdaterangetrunc#1#2{%
+ \blx@if@printanytimes{#2}
+ {\mkdaterangefull{#1}{#2}}
+ {\lbx@lt@mkdaterangetrunc@i{#1}{#2}}}
+
+\protected\gdef\lbx@lt@mkdaterangetrunc@i#1#2{%
+ \begingroup
+ \blx@metadateinfo{#2}%
+ \edef\lbx@lt@ifdayrange{\lbx@lt@ifdayrange@i{#2}}%
+ \edef\lbx@lt@ifmonthrange{\lbx@lt@ifmonthrange@i{#2}}%
+ \edef\lbx@lt@ifyearrange{\lbx@lt@ifyearrange@i{#2}}%
+ \iffieldundef{#2year}
+ {}
+ {\printtext[{#2date}]{%
+ \datecircaprint
+ \iffieldundef{#2season}
+ {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+ \blx@printtime{#2}{}}%
+ {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+ \dateeraprint{#2year}%
+ \dateuncertainprint
+ \iffieldundef{#2endyear}
+ {}
+ {\iffieldequalstr{#2endyear}{}
+ {\mbox{\csuse{lbx@lt@bibdaterangesep#1}}}
+ {\lbx@lt@ifdatenumrange
+ {\csuse{lbx@lt@bibnumdaterangesep#1}}
+ {\csuse{lbx@lt@bibdaterangesep#1}}%
+ \let\lbx@lt@ifdropdaystring\@secondoftwo
+ \let\lbx@lt@ifdropmonthstring\@secondoftwo
+ \let\lbx@lt@ifdropyearstring\@secondoftwo
+ \enddatecircaprint
+ \iffieldundef{#2season}
+ {\iffieldsequal{#2year}{#2endyear}
+ {\iffieldsequal{#2month}{#2endmonth}
+ {\csuse{mkbibdate#1}{}{}{#2endday}}
+ {\csuse{mkbibdate#1}{}{#2endmonth}{#2endday}}}
+ {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}%
+ \blx@printtime{#2}{end}}
+ {\iffieldsequal{#2year}{#2endyear}
+ {\csuse{mkbibseasondate#1}{}{#2endseason}}
+ {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+ \enddateuncertainprint
+ \dateeraprint{#2endyear}}}}}%
+ \endgroup}
+
+\protected\gdef\lbx@lt@mkdaterangetruncextra#1#2{%
+ \blx@if@printanytimes{#2}
+ {\mkdaterangefullextra{#1}{#2}}
+ {\lbx@lt@mkdaterangetruncextra@i{#1}{#2}}}
+
+\protected\gdef\lbx@lt@mkdaterangetruncextra@i#1#2{%
+ \begingroup
+ \blx@metadateinfo{#2}%
+ \edef\lbx@lt@ifdayrange{\lbx@lt@ifdayrange@i{#2}}%
+ \edef\lbx@lt@ifmonthrange{\lbx@lt@ifmonthrange@i{#2}}%
+ \edef\lbx@lt@ifyearrange{\lbx@lt@ifyearrange@i{#2}}%
+ \iffieldundef{#2year}
+ {}
+ {\printtext[{#2date}]{%
+ \datecircaprint
+ \iffieldundef{#2season}
+ {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+ \blx@printtime{#2}{}}%
+ {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+ \dateeraprint{#2year}%
+ \dateuncertainprint
+ \iffieldundef{#2endyear}
+ {\printfield{extradate}}
+ {\iffieldequalstr{#2endyear}{}
+ {\printfield{extradate}%
+ \mbox{\csuse{lbx@lt@bibdaterangesep#1}}}
+ {\lbx@lt@ifdatenumrange
+ {\csuse{lbx@lt@bibnumdaterangesep#1}}
+ {\csuse{lbx@lt@bibdaterangesep#1}}%
+ \let\lbx@lt@ifdropdaystring\@secondoftwo
+ \let\lbx@lt@ifdropmonthstring\@secondoftwo
+ \let\lbx@lt@ifdropyearstring\@secondoftwo
+ \enddatecircaprint
+ \iffieldundef{#2season}
+ {\iffieldsequal{#2year}{#2endyear}
+ {\iffieldsequal{#2month}{#2endmonth}
+ {\csuse{mkbibdate#1}{}{}{#2endday}}
+ {\csuse{mkbibdate#1}{}{#2endmonth}{#2endday}}}
+ {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}%
+ \blx@printtime{#2}{end}}
+ {\iffieldsequal{#2year}{#2endyear}
+ {\csuse{mkbibseasondate#1}{}{#2endseason}}
+ {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+ \printfield{extradate}%
+ \enddateuncertainprint
+ \dateeraprint{#2endyear}}}}}%
+ \endgroup}
+
+\protected\gdef\lbx@lt@mkdaterangefull#1#2{%
+ \begingroup
+ \blx@metadateinfo{#2}%
+ \iffieldundef{#2year}
+ {\blx@nounit}
+ {\printtext[{#2date}]{%
+ \datecircaprint
+ % Such a season component can only come from an ISO8601 season which replaces
+ % a normal month so if it exists, we know that a normal date print is ruled out
+ \iffieldundef{#2season}
+ {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+ % Optionally print the time after the date
+ \blx@printtime{#2}{}}
+ {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+ \dateuncertainprint
+ \dateeraprint{#2year}%
+ \iffieldundef{#2endyear}
+ {}
+ {\iffieldequalstr{#2endyear}{}
+ {\mbox{\csuse{lbx@lt@bibdaterangesep#1}}}
+ {\csuse{lbx@lt@bibdaterangesep#1}%
+ \enddatecircaprint
+ \iffieldundef{#2endseason}
+ {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+ % Optionally print the time after the date
+ \blx@printtime{#2}{end}}
+ {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}%
+ \enddateuncertainprint
+ \dateeraprint{#2endyear}}}}}%
+ \endgroup}
+
+\protected\gdef\lbx@lt@mkdaterangefullextra#1#2{%
+ \begingroup
+ \blx@metadateinfo{#2}%
+ \iffieldundef{#2year}
+ {\blx@nounit}
+ {\printtext[{#2date}]{%
+ \datecircaprint
+ % Such a season component can only come from an ISO8601 season which replaces
+ % a normal month so if it exists, we know that a normal date print is ruled out
+ \iffieldundef{#2season}
+ {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
+ % Optionally print the time after the date
+ \blx@printtime{#2}{}}
+ {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+ \dateuncertainprint
+ \dateeraprint{#2year}%
+ \iffieldundef{#2endyear}
+ {\printfield{extradate}}
+ {\iffieldequalstr{#2endyear}{}
+ {\printfield{extradate}%
+ \mbox{\csuse{lbx@lt@bibdaterangesep#1}}}
+ {\csuse{lbx@lt@bibdaterangesep#1}%
+ \enddatecircaprint
+ \iffieldundef{#2endseason}
+ {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
+ % Optionally print the time after the date
+ \blx@printtime{#2}{end}}
+ {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+ \printfield{extradate}%
+ \enddateuncertainprint
+ \dateeraprint{#2endyear}}}}%
+ \endgroup}
+
+\endinput
diff --git a/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx b/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx
index f94e50eaa8..73bfdebbea 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/magyar.lbx
@@ -29,7 +29,8 @@
\protected\def\mkbibmascord{\mkbibordinal}%
\protected\def\mkbibfemord{\mkbibordinal}%
\protected\def\mkbibneutord{\mkbibordinal}%
- \let\lbx@hu@dayrange\@secondoftwo
+ \let\lbx@hu@ifdayrange\@secondoftwo
+ \def\lbx@hu@ifplainday{\lbx@hu@ifdayrange}%
\protected\def\mkbibdatelong#1#2#3{%
\iffieldundef{#1}
{}
@@ -45,7 +46,7 @@
\iffieldundef{#3}{}{\nobreakspace}}%
\iffieldundef{#3}
{}
- {\lbx@hu@dayrange{\thefield{#3}}{\mkbibordinal{\thefield{#3}}}}%
+ {\lbx@hu@ifplainday{\thefield{#3}}{\mkbibordinal{\thefield{#3}}}}%
}%
\protected\def\mkbibdateshort#1#2#3{%
\iffieldundef{#1}
@@ -62,7 +63,7 @@
\iffieldundef{#3}{}{\nobreakspace}}%
\iffieldundef{#3}
{}
- {\mkdayzeros{\thefield{#3}}\lbx@hu@dayrange{}{\adddot}}%
+ {\mkdayzeros{\thefield{#3}}\lbx@hu@ifdayrange{}{\adddot}}%
}%
\let\mkbibseasondatelong\mkbibseasondateshort
\savecommand\mkdaterangecomp
@@ -77,21 +78,25 @@
\lbx@hu@mkdaterangetruncextra{long}}%
\protected\def\mkdaterangeterseextra{%
\lbx@hu@mkdaterangetruncextra{short}}%
-\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
\csletcs{mkbibtime12h}{mkbibtime24h}%
\protected\def\mkbibseasondateshort#1#2{%
\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}%
- \iffieldundef{#1}{}{\adddot\space}
+ \iffieldundef{#1}{}{\adddot\space}%
\mkbibseason{\thefield{#2}}%
}%
\let\mkbibseasondatelong\mkbibseasondateshort
@@ -111,7 +116,7 @@
% this redefines \mkpageprefix to put the page number as suffix
\savecommand\blx@mkpageprefix
\protected\long\def\blx@mkpageprefix#1[#2]#3{%
- \blx@mkpageprefix@i[#2]{#3}%
+ \blx@mkpageprefix@i[{#2}]{#3}%
\ifnumeral{#3}
{\ppspace\bibstring{#1}}
{\ifnumerals{#3}
@@ -139,12 +144,12 @@
\mkpageprefix[pagination][\lbx@hu@mkdottednormrange]{#1}}%
\savefieldformat{chapter}%
\DeclareFieldFormat{chapter}{%
- \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+ \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
\addnbspace
\bibstring{chapter}}%
\savefieldformat{volume}%
\DeclareFieldFormat{volume}{%
- \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+ \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
\addnbspace
\bibstring{volume}}%
\savefieldformat{part}%
@@ -160,7 +165,7 @@
\bibstring{part}}%
\savefieldformat{version}%
\DeclareFieldFormat{version}{%
- \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+ \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
\addnbspace
\bibstring{version}}%
}
@@ -462,7 +467,7 @@
% translationfrom = {{}{}},% FIXME need example
reviewof = {{recenzi\'oja}{rec\adddot}},% FIXME swap word order
origpubas = {{eredeti c\'ime}{ered\adddotspace c\'im}},
- origpubin = {{eredeti kiad\'as}{ered\adddotspace kiad\adddotspace}},
+ origpubin = {{eredeti kiad\'as}{ered\adddotspace kiad\adddot}},
% astitle = {{}{}},% FIXME need example
% bypublisher = {{\addcomma}{\addcomma}},% FIXME: this is a cludge that can not be guaranteed to work in most situations, so it stays commented out
nodate = {{\'ev n\'elk\"ul}{\'e\adddotspace n\adddot}},
@@ -641,7 +646,7 @@
pm = {{d\'elut\'an}{du\adddot}},
}
-\protected\gdef\lbx@hu@dayrange@i#1{%
+\protected\gdef\lbx@hu@ifdayrange@i#1{%
\ifboolexpr{not test {\iffieldundef{#1endyear}}
and test {\iffieldsequal{#1year}{#1endyear}}
and test {\iffieldsequal{#1month}{#1endmonth}}
@@ -656,10 +661,10 @@
\protected\gdef\lbx@hu@mkdaterangetrunc@i#1#2{%
\begingroup
\blx@metadateinfo{#2}%
- \edef\lbx@hu@dayrange{\lbx@hu@dayrange@i{#2}}%
+ \edef\lbx@hu@ifdayrange{\lbx@hu@ifdayrange@i{#2}}%
\iffieldundef{#2year}
{}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
@@ -671,8 +676,8 @@
{}
{\iffieldequalstr{#2endyear}{}
{\mbox{\bibdaterangesep}}
- {\lbx@hu@dayrange{\bibrangedash}{\bibdaterangesep}%
- \let\lbx@hu@dayrange\@secondoftwo
+ {\lbx@hu@ifdayrange{\bibrangedash}{\bibdaterangesep}%
+ \let\lbx@hu@ifplainday\@secondoftwo
\enddatecircaprint
\iffieldundef{#2season}
{\iffieldsequal{#2year}{#2endyear}
@@ -696,10 +701,10 @@
\protected\gdef\lbx@hu@mkdaterangetruncextra@i#1#2{%
\begingroup
\blx@metadateinfo{#2}%
- \edef\lbx@hu@dayrange{\lbx@hu@dayrange@i{#2}}%
+ \edef\lbx@hu@ifdayrange{\lbx@hu@ifdayrange@i{#2}}%
\iffieldundef{#2year}
{}
- {\printtext[#2date]{%
+ {\printtext[{#2date}]{%
\datecircaprint
\iffieldundef{#2season}
{\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
@@ -712,8 +717,8 @@
{\iffieldequalstr{#2endyear}{}
{\printfield{extradate}%
\mbox{\bibdaterangesep}}
- {\lbx@hu@dayrange{\bibrangedash}{\bibdaterangesep}%
- \let\lbx@hu@dayrange\@secondoftwo
+ {\lbx@hu@ifdayrange{\bibrangedash}{\bibdaterangesep}%
+ \let\lbx@hu@ifplainday\@secondoftwo
\enddatecircaprint
\iffieldundef{#2season}
{\iffieldsequal{#2year}{#2endyear}
diff --git a/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx b/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx
index c03ddca2da..76aa28fee6 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/norsk.lbx
@@ -36,13 +36,17 @@
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/polish.lbx b/macros/latex/contrib/biblatex/latex/lbx/polish.lbx
index 7618a69ec5..50ae2383f4 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/polish.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/polish.lbx
@@ -44,13 +44,17 @@
\def\mkbibordedition{\mkbibneutord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx b/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx
index 3526b7968f..d408904515 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/portuguese.lbx
@@ -43,13 +43,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/russian.lbx b/macros/latex/contrib/biblatex/latex/lbx/russian.lbx
index bc7817c546..7d2cf694b1 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/russian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/russian.lbx
@@ -9,7 +9,7 @@
{}
{\PackageError{biblatex}
{Russian requires UTF-8 support}
- {The 'russian.lbx' file requires UTF-8 encoding but you
+ {The file 'russian.lbx' requires UTF-8 encoding but you
seem\MessageBreak to be using a different encoding.
This is a fatal error. I will\MessageBreak abort loading
russian.lbx now.}%
@@ -70,13 +70,17 @@
\def\mkbibordedition{\mkbibneutord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx b/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx
new file mode 100644
index 0000000000..52faffd931
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/lbx/serbian.lbx
@@ -0,0 +1,440 @@
+\ProvidesFile{serbian.lbx}
+[\abx@lbxid]
+
+% Translator's notes:
+%
+% This file is generated from a template and YAML localization string
+% collection by a script
+% You can said files at https://gitlab.com/andrejr/biblatex-serbian.
+% Please don't modify this file by hand -- contribute your changes upstream and
+% then send a pull request with the generated file to the official biblatex
+% repo (https://github.com/plk/biblatex).
+%
+% This is done so we could generate both `serbian.lbx` (Latin) and
+% `serbianc.lbx` (Cyrillic) from the same set of localization strings.
+
+
+\DeclareRedundantLanguages{serbian}{serbian}
+
+\DeclareBibliographyExtras{%
+ \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}%
+ \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+ \protected\def\mkbibmascord{\mkbibordinal}%
+ \protected\def\mkbibfemord{\mkbibordinal}%
+ \protected\def\mkbibneutord{\mkbibordinal}%
+ \protected\def\bibtimesep{.}%
+ %\savecommand\mkbibordedition
+ %\savecommand\mkbibordseries
+ \def\mkbibordedition{\mkbibordinal}%
+ \def\mkbibordseries{\mkbibfemord}%
+ \protected\def\mkbibdatelong#1#2#3{%
+ % day field
+ \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}% if day exists, display
+ \iffieldundef{#2}{}{\nobreakspace}}% space before month if month exists
+ % month field
+ \iffieldundef{#2}{}{\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}% space before year if year exists
+ % year field
+ \iffieldbibstring{#1}% year
+ {\bibstring{\thefield{#1}}}%
+ {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}%
+ \protected\def\mkbibdateshort#1#2#3{%
+ \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addnbspace}}%
+ \iffieldundef{#2}{}{\mkbibordinal{\thefield{#2}}%
+ \iffieldundef{#1}{}{\addnbspace}}%
+ \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}%
+ {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}}%
+ \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
+ \iffieldundef{#4}{}
+ {\bibtimezonesep
+ \mkbibtimezone{\thefield{#4}}}}%
+ \expandafter\protected\expandafter\def\csname mkbibtime12h%
+ \endcsname#1#2#3#4{%
+ \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep%
+ \forcezerosmdt{\thefield{#2}}%
+ \iffieldundef{#3}{}
+ {\bibtimesep%
+ \forcezerosmdt{\thefield{#3}}}%
+ \space
+ \ifnumless{\thefield{#1}}{12}
+ {\bibstring{am}}
+ {\bibstring{pm}}%
+ \iffieldundef{#4}{}
+ {\space\bibtimezonesep%
+ \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+ \protected\def\mkbibseasondateshort#1#2{%
+ \mkbibseason{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+ \protected\def\mkbibseasondatelong#1#2{%
+ \mkbibseason{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+}
+
+\DeclareBibliographyStrings{%
+ abstract = {{apstrakt}{apstrakt}},
+ afterword = {{pogovor}{pogovor}},
+ am = {{AM}{AM}},
+ and = {{i}{i}},
+ andmore = {{i drugi}{i\addabbrvspace dr\adddot}},
+ andothers = {{i drugi}{i\addabbrvspace dr\adddot}},
+ annodomini = {{posle Hrista}{p\adddotspace Hr\adddot}},
+ annotation = {{bele\v ska}{bel\adddot}},
+ annotations = {{bele\v ske}{bel\adddot}},
+ annotator = {{autor bele\v zaka}{aut\adddot\ bel\adddot}},
+ annotators = {{autori bele\v zaka}{aut\adddot\ bel\adddot}},
+ april = {{april}{apr\adddot}},
+ astitle = {{pod naslovom}{pod naslovom}},
+ audiocd = {{audio CD}{audio CD}},
+ august = {{avgust}{avg\adddot}},
+ autumn = {{jesen}{jesen}},
+ backrefpage = {{citirano na stranici}{cit\adddot\ na str\adddot}},
+ backrefpages = {{citirano na stranicama}{cit\adddot\ na str\adddot}},
+ bathesis = {{ba\v celor rad}{BA\addabbrvspace rad}},
+ beforechrist = {{pre Hrista}{pr\adddotspace Hr\adddot}},
+ beforecommonera = {{pre nove ere}{pre\addabbrvspace n\adddotspace e\adddot}},
+ bibliography = {{Bibliografija}{Bibliografija}},
+ book = {{knjiga}{knj\adddot}},
+ byannotator = {{autor bele\v zaka}{autor bele\v zaka}},
+ byauthor = {{autor}{autor}},
+ bycollaborator = {{u saradnji sa}{u saradnji sa}},
+ bycommentator = {{komentar}{komentar}},
+ bycompiler = {{odabir}{odabir}},
+ bycontinuator = {{autor nastavka}{autor nastavka}},
+ byeditor = {{urednik}{urednik}},
+ byeditoraf = {{obrada i pogovor}{obrada i pogovor}},
+ byeditoran = {{obrada i bele\v ske}{obrada i bele\v ske}},
+ byeditoranaf = {{obrada, bele\v ske i pogovor}{obrada, bele\v ske i pogovor}},
+ byeditoranfo = {{obrada, bele\v ske i predgovor}{obrada, bele\v ske i predgovor}},
+ byeditoranin = {{obrada, bele\v ske i uvod}{obrada, bele\v ske i uvod}},
+ byeditorco = {{obrada i komentar}{obrada i komentar}},
+ byeditorcoaf = {{obrada, komentar i pogovor}{obrada, komentar i pogovor}},
+ byeditorcofo = {{obrada, komentar i predgovor}{obrada, komentar i predgovor}},
+ byeditorcoin = {{obrada, komentar i uvod}{obrada, komentar i uvod}},
+ byeditorfo = {{obrada i predgovor}{obrada i predgovor}},
+ byeditorin = {{obrada i uvod}{obrada i uvod}},
+ byeditortr = {{obrada i prevod}{obrada i prevod}},
+ byeditortraf = {{obrada, prevod i pogovor}{obrada, prevod i pogovor}},
+ byeditortran = {{obrada, prevod i bele\v ske}{obrada, prevod i bele\v ske}},
+ byeditortranaf = {{obrada, prevod, bele\v ske i pogovor}{obrada, prevod, bele\v ske i pogovor}},
+ byeditortranfo = {{obrada, prevod, bele\v ske i predgovor}{obrada, prevod, bele\v ske i predgovor}},
+ byeditortranin = {{obrada, prevod, bele\v ske i uvod}{obrada, prevod, bele\v ske i uvod}},
+ byeditortrco = {{obrada, prevod i komentar}{obrada, prevod i komentar}},
+ byeditortrcoaf = {{obrada, prevod, komentar i pogovor}{obrada, prevod, komentar i pogovor}},
+ byeditortrcofo = {{obrada, prevod, komentar i predgovor}{obrada, prevod, komentar i predgovor}},
+ byeditortrcoin = {{obrada, prevod, komentar i uvod}{obrada, prevod, komentar i uvod}},
+ byeditortrfo = {{obrada, prevod i predgovor}{obrada, prevod i predgovor}},
+ byeditortrin = {{obrada, prevod i uvod}{obrada, prevod i uvod}},
+ byfounder = {{osniva\v c}{osniva\v c}},
+ byorganizer = {{organizator}{organizator}},
+ bypublisher = {{izdava\v c}{izdava\v c}},
+ byredactor = {{redaktor}{redaktor}},
+ byreviewer = {{recenzent}{recenzent}},
+ byreviser = {{korektor}{korektor}},
+ bytranslator = {{prevod}{prevod}},
+ bytranslatoraf = {{prevod i pogovor}{prevod i pogovor}},
+ bytranslatoran = {{prevod i bele\v ske}{prevod i bele\v ske}},
+ bytranslatoranaf = {{prevod, bele\v ske i pogovor}{prevod, bele\v ske i pogovor}},
+ bytranslatoranfo = {{prevod, bele\v ske i predgovor}{prevod, bele\v ske i predgovor}},
+ bytranslatoranin = {{prevod, bele\v ske i uvod}{prevod, bele\v ske i uvod}},
+ bytranslatorco = {{prevod i komentar}{prevod i komentar}},
+ bytranslatorcoaf = {{prevod, komentar i pogovor}{prevod, komentar i pogovor}},
+ bytranslatorcofo = {{prevod, komentar i predgovor}{prevod, komentar i predgovor}},
+ bytranslatorcoin = {{prevod, komentar i uvod}{prevod, komentar i uvod}},
+ bytranslatorfo = {{prevod i predgovor}{prevod i predgovor}},
+ bytranslatorin = {{prevod i uvod}{prevod i uvod}},
+ candthesis = {{kandidatski rad}{kandidatski rad}},
+ chapter = {{glava}{glava}},
+ circa = {{cirka}{cca}},
+ citedas = {{citirano kao}{cit\adddotspace kao}},
+ collaborator = {{saradnik}{sar\adddot}},
+ collaborators = {{saradnici}{sar\adddot}},
+ column = {{stupac}{stupac}},
+ columns = {{stupci}{stupci}},
+ columntotal = {{stupac}{stupac}},
+ columntotals = {{stupci}{stupci}},
+ commentary = {{komentar}{kom\adddot}},
+ commentator = {{komentator}{kom\adddot}},
+ commentators = {{komentatori}{kom\adddot}},
+ commonera = {{nove ere}{n.\addnbspace e\adddot}},
+ compiler = {{prire\dj iva\v c}{prire\dj iva\v c}},
+ compilers = {{priredili}{priredili}},
+ confer = {{cf\adddot}{cf\adddot}},
+ continuator = {{nastavlja\v c}{nast\adddot}},
+ continuators = {{nastavlja\v ci}{nast\adddot}},
+ countryde = {{Nema\v cka}{DE}},
+ countryep = {{Evropska unija}{EP}},
+ countryeu = {{Evropska unija}{EU}},
+ countryfr = {{Francuska}{FR}},
+ countryuk = {{Velika Britanija}{GB}},
+ countryus = {{Sjedinjene Ameri\v cke Dr\v zave}{SAD}},
+ datacd = {{CD-ROM}{CD-ROM}},
+ december = {{decembar}{dec\adddot}},
+ edition = {{izdanje}{izdanje}},
+ editor = {{urednik}{ur\adddot}},
+ editoraf = {{urednik i autor pogovora}{urednik i autor pogovora}},
+ editoran = {{urednik i autor bele\v zaka}{urednik i autor bele\v zaka}},
+ editoranaf = {{urednik, autor bele\v zaka i autor pogovora}{urednik, autor bele\v zaka i autor pogovora}},
+ editoranfo = {{urednik, autor bele\v zaka i autor predgovora}{urednik, autor bele\v zaka i autor predgovora}},
+ editoranin = {{urednik, autor bele\v zaka i autor uvoda}{urednik, autor bele\v zaka i autor uvoda}},
+ editorco = {{urednik i komentator}{urednik i komentator}},
+ editorcoaf = {{urednik, komentator i autor pogovora}{urednik, komentator i autor pogovora}},
+ editorcofo = {{urednik, komentator i autor predgovora}{urednik, komentator i autor predgovora}},
+ editorcoin = {{urednik, komentator i autor uvoda}{urednik, komentator i autor uvoda}},
+ editorfo = {{urednik i autor predgovora}{urednik i autor predgovora}},
+ editorin = {{urednik i autor uvoda}{urednik i autor uvoda}},
+ editors = {{urednici}{urednici}},
+ editorsaf = {{urednici i pisci pogovora}{urednici i pisci pogovora}},
+ editorsan = {{urednici i autori bele\v zaka}{urednici i autori bele\v zaka}},
+ editorsanaf = {{urednici, autori bele\v zaka i autori pogovora}{urednici, autori bele\v zaka i autori pogovora}},
+ editorsanfo = {{urednici, autori bele\v zaka i autori predgovora}{urednici, autori bele\v zaka i autori predgovora}},
+ editorsanin = {{urednici, autori bele\v zaka i autori uvoda}{urednici, autori bele\v zaka i autori uvoda}},
+ editorsco = {{urednici i komentatori}{urednici i komentatori}},
+ editorscoaf = {{urednici, komentatori i pisci pogovora}{urednici, komentatori i pisci pogovora}},
+ editorscofo = {{urednici, komentatori i autori predgovora}{urednici, komentatori i autori predgovora}},
+ editorscoin = {{urednici, komentatori i autori uvoda}{urednici, komentatori i autori uvoda}},
+ editorsfo = {{urednici i pisci predgovora}{urednici i pisci predgovora}},
+ editorsin = {{urednici i autori uvoda}{urednici i autori uvoda}},
+ editorstr = {{urednici i prevodioci}{urednici i prevodioci}},
+ editorstraf = {{urednici, prevodioci i autori pogovora}{urednici, prevodioci i autori pogovora}},
+ editorstran = {{urednici, prevodioci i autori bele\v zaka}{urednici, prevodioci i autori bele\v zaka}},
+ editorstranaf = {{urednici, prevodioci, autori bele\v zaka i pisci pogovora}{urednici, prevodioci, autori bele\v zaka i pisci pogovora}},
+ editorstranfo = {{urednici, prevodioci, autori bele\v zaka i autori predgovora}{urednici, prevodioci, autori bele\v zaka i autori predgovora}},
+ editorstranin = {{urednici, prevodioci, autori bele\v zaka i autori uvoda}{urednici, prevodioci, autori bele\v zaka i autori uvoda}},
+ editorstrco = {{urednici, prevodioci i komentatori}{urednici, prevodioci i komentatori}},
+ editorstrcoaf = {{urednici, prevodioci, komentatori i pisci pogovora}{urednici, prevodioci, komentatori i pisci pogovora}},
+ editorstrcofo = {{urednici, prevodioci, komentatori i autori predgovora}{urednici, prevodioci, komentatori i autori predgovora}},
+ editorstrcoin = {{urednici, prevodioci, komentatori i autori uvoda}{urednici, prevodioci, komentatori i autori uvoda}},
+ editorstrfo = {{urednici, prevodioci i autori predgovora}{urednici, prevodioci i autori predgovora}},
+ editorstrin = {{urednici, prevodioci i autori uvoda}{urednici, prevodioci i autori uvoda}},
+ editortr = {{urednik i prevodilac}{urednik i prevodilac}},
+ editortraf = {{urednik, prevodilac i autor pogovora}{urednik, prevodilac i autor pogovora}},
+ editortran = {{urednik, prevodilac i autor bele\v zaka}{urednik, prevodilac i autor bele\v zaka}},
+ editortranaf = {{urednik, prevodilac, autor bele\v zaka i autor pogovora}{urednik, prevodilac, autor bele\v zaka i autor pogovora}},
+ editortranfo = {{urednik, prevodilac, autor bele\v zaka i autor predgovora}{urednik, prevodilac, autor bele\v zaka i autor predgovora}},
+ editortranin = {{urednik, prevodilac, autor bele\v zaka i autor uvoda}{urednik, prevodilac, autor bele\v zaka i autor uvoda}},
+ editortrco = {{urednik, prevodilac i komentator}{urednik, prevodilac i komentator}},
+ editortrcoaf = {{urednik, prevodilac, komentator i autor pogovora}{urednik, prevodilac, komentator i autor pogovora}},
+ editortrcofo = {{urednik, prevodilac, komentator i autor predgovora}{urednik, prevodilac, komentator i autor predgovora}},
+ editortrcoin = {{urednik, prevodilac, komentator i autor uvoda}{urednik, prevodilac, komentator i autor uvoda}},
+ editortrfo = {{urednik, prevodilac i autor predgovora}{urednik, prevodilac i autor predgovora}},
+ editortrin = {{urednik, prevodilac i autor uvoda}{urednik, prevodilac i autor uvoda}},
+ february = {{februar}{feb\adddot}},
+ file = {{datoteka}{datoteka}},
+ foreword = {{predgovor}{predgovor}},
+ forthcoming = {{dolaze\'ce}{dolaze\'ce}},
+ founder = {{osniva\v c}{osn\adddot}},
+ founders = {{osniva\v ci}{osn\adddot}},
+ fromamerican = {{sa ameri\v ckog}{sa ameri\v ckog}},
+ frombrazilian = {{sa brazilskog}{sa brazilskog}},
+ frombulgarian = {{sa bugarskog}{sa bugarskog}},
+ fromcatalan = {{sa katalonskog}{sa katalonskog}},
+ fromcroatian = {{sa hrvatskog}{sa hrvatskog}},
+ fromczech = {{sa \v ce\v skog}{sa \v ce\v skog}},
+ fromdanish = {{sa danskog}{sa danskog}},
+ fromdutch = {{sa holandskog}{sa holandskog}},
+ fromenglish = {{sa engleskog}{sa engleskog}},
+ fromestonian = {{sa estonskog}{sa estonskog}},
+ fromfinnish = {{sa finskog}{sa finskog}},
+ fromfrench = {{sa francuskog}{sa francuskog}},
+ fromgalician = {{sa galicijskog}{sa galicijskog}},
+ fromgerman = {{sa nema\v ckog}{sa nema\v ckog}},
+ fromgreek = {{sa gr\v ckog}{sa gr\v ckog}},
+ fromhungarian = {{sa ma\dj arskog}{sa ma\dj arskog}},
+ fromitalian = {{sa italijanskog}{sa italijanskog}},
+ fromjapanese = {{sa japanskog}{sa japanskog}},
+ fromlatin = {{sa latinskog}{sa latinskog}},
+ fromlatvian = {{sa letonskog}{sa letonskog}},
+ fromnorwegian = {{sa norve\v skog}{sa norve\v skog}},
+ frompolish = {{sa poljskog}{sa poljskog}},
+ fromportuguese = {{sa portugalskog}{sa portugalskog}},
+ fromrussian = {{sa ruskog}{sa ruskog}},
+ fromslovak = {{sa slova\v ckog}{sa slova\v ckog}},
+ fromslovene = {{sa slovena\v ckog}{sa slovena\v ckog}},
+ fromspanish = {{sa \v spanskog}{sa \v spanskog}},
+ fromswedish = {{sa \v svedskog}{sa \v svedskog}},
+ fromukrainian = {{sa ukrajinskog}{sa ukrajinskog}},
+ ibidem = {{ibidem}{ibid\adddot}},
+ idem = {{idem}{idem}},
+ idempf = {{eaedem}{eaedem}},
+ idempm = {{eidem}{eidem}},
+ idempn = {{eadem}{eadem}},
+ idempp = {{eidem}{eidem}},
+ idemsf = {{eadem}{eadem}},
+ idemsm = {{idem}{idem}},
+ idemsn = {{idem}{idem}},
+ in = {{u}{u}},
+ inpreparation = {{u pripremi}{u pripremi}},
+ inpress = {{u \v stampi}{u \v stampi}},
+ inseries = {{u}{u}},
+ introduction = {{uvod}{uv\adddot}},
+ involumes = {{u}{u}},
+ issue = {{izdanje}{izdanje}},
+ january = {{januar}{jan\adddot}},
+ jourser = {{serija}{ser\adddot}},
+ jourvol = {{sveska}{sv\adddot}},
+ july = {{jul}{jul}},
+ june = {{jun}{jun}},
+ langamerican = {{ameri\v cki}{ameri\v cki}},
+ langbrazilian = {{brazilski}{brazilski}},
+ langbulgarian = {{bugarski}{bugarski}},
+ langcatalan = {{katalanski}{katalanski}},
+ langcroatian = {{hrvatski}{hrvatski}},
+ langczech = {{\v ce\v ski}{\v ce\v ski}},
+ langdanish = {{danski}{danski}},
+ langdutch = {{holandski}{holandski}},
+ langenglish = {{engleski}{engleski}},
+ langestonian = {{estonski}{estonski}},
+ langfinnish = {{finski}{finski}},
+ langfrench = {{francuski}{francuski}},
+ langgalician = {{galicijski}{galicijski}},
+ langgerman = {{nema\v cki}{nema\v cki}},
+ langgreek = {{gr\v cki}{gr\v cki}},
+ langhungarian = {{ma\dj arski}{ma\dj arski}},
+ langitalian = {{italijanski}{italijanski}},
+ langjapanese = {{japanski}{japanski}},
+ langlatin = {{latinski}{latinski}},
+ langlatvian = {{letonski}{letonski}},
+ langnorwegian = {{norve\v ski}{norve\v ski}},
+ langpolish = {{poljski}{poljski}},
+ langportuguese = {{portugalski}{portugalski}},
+ langrussian = {{ruski}{ruski}},
+ langslovak = {{slova\v cki}{slova\v cki}},
+ langslovene = {{slovena\v cki}{slovena\v cki}},
+ langspanish = {{\v spanski}{\v spanski}},
+ langswedish = {{\v svedski}{\v svedski}},
+ langukrainian = {{ukrajinski}{ukrajinski}},
+ library = {{biblioteka}{biblioteka}},
+ line = {{red}{r\adddot}},
+ lines = {{redovi}{r\adddot}},
+ linetotal = {{red}{r\adddot}},
+ linetotals = {{redovi}{r\adddot}},
+ loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+ march = {{mart}{mar\adddot}},
+ mathesis = {{master rad}{master rad}},
+ may = {{maj}{maj}},
+ newseries = {{nova serija}{nova serija}},
+ nodate = {{bez datuma}{bez datuma}},
+ november = {{novembar}{nov\adddot}},
+ number = {{broj}{br\adddot}},
+ october = {{oktobar}{okt\adddot}},
+ ofseries = {{serija}{ser\adddot}},
+ oldseries = {{stara serija}{stara serija}},
+ opcit = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+ organizer = {{organizator}{org\adddot}},
+ organizers = {{organizatori}{org\adddot}},
+ origpubas = {{originalno izdato kao}{originalno izdato kao}},
+ origpubin = {{originalno izdato}{originalno izdato}},
+ page = {{strana}{str\adddot}},
+ pages = {{strane}{str\adddot}},
+ pagetotal = {{strana}{str\adddot}},
+ pagetotals = {{strane}{str\adddot}},
+ paragraph = {{pasus}{pas\adddot}},
+ paragraphs = {{pasusi}{pas\adddot}},
+ paragraphtotal = {{pasus}{pas\adddot}},
+ paragraphtotals = {{pasusi}{pas\adddot}},
+ part = {{deo}{deo}},
+ passim = {{passim}{pass\adddot}},
+ patent = {{patent}{pat\adddot}},
+ patentde = {{nema\v cki patent}{nem\adddot\ pat\adddot}},
+ patenteu = {{evropski patent}{evr\adddot\ pat\adddot}},
+ patentfr = {{francuski patent}{franc\adddot\ pat\adddot}},
+ patentuk = {{britanski patent}{brit\adddot\ pat\adddot}},
+ patentus = {{SAD patent}{SAD pat\adddot}},
+ patreq = {{zahtev za patent}{zahtev za patent}},
+ patreqde = {{nema\v cki zahtev za patent}{nema\v cki zahtev za patent}},
+ patreqeu = {{evropski zahtev za patent}{evropski zahtev za patent}},
+ patreqfr = {{francuski zahtev za patent}{francuski zahtev za patent}},
+ patrequk = {{britanski zahtev za patent}{britanski zahtev za patent}},
+ patrequs = {{SAD zahtev za patent}{SAD zahtev za patent}},
+ phdthesis = {{doktorska teza}{doktorska teza}},
+ pm = {{PM}{PM}},
+ prepublished = {{preliminarno izdanje}{preliminarno izdanje}},
+ quotedin = {{citirano u}{cit\adddotspace u}},
+ redactor = {{redaktor}{red\adddot}},
+ redactors = {{redaktori}{red\adddot}},
+ references = {{Literatura}{Literatura}},
+ reprint = {{reprint}{reprint}},
+ reprintas = {{ponovo izdato kao kao}{ponovo izdato kao kao}},
+ reprintfrom = {{reprint iz}{reprint iz}},
+ reprintof = {{reprint}{reprint}},
+ resreport = {{istra\v ziva\v cki izve\v staj}{istra\v ziva\v cki izve\v staj}},
+ reviewof = {{recenzija}{recenzija}},
+ reviser = {{korektor}{korektor}},
+ revisers = {{korektori}{korektori}},
+ section = {{sekcija}{sek\adddot}},
+ sections = {{sekcije}{sek\adddot}},
+ sectiontotal = {{sekcija}{sek\adddot}},
+ sectiontotals = {{sekcije}{sek\adddot}},
+ see = {{vidi}{vidi}},
+ seealso = {{vidi\addabbrvspace i}{vidi}},
+ seenote = {{vidi fusnotu}{vidi fusnotu}},
+ september = {{septembar}{sept\adddot}},
+ sequens = {{sq\adddot}{sq\adddot}},
+ sequentes = {{sqq\adddot}{sqq\adddot}},
+ shorthands = {{Spisak skra\'cenica}{Skra\'cenice}},
+ software = {{ra\v cunarski softver}{ra\v c\adddot\ softver}},
+ spring = {{prole\'ce}{prole\'ce}},
+ submitted = {{poslato}{poslato}},
+ summer = {{leto}{leto}},
+ techreport = {{tehni\v cki izve\v staj}{tehn\adddotspace izv\adddot}},
+ thiscite = {{posebno}{posebno}},
+ translationas = {{prevedeno kao}{prevedeno kao}},
+ translationfrom = {{prevedeno sa}{prevedeno sa}},
+ translationof = {{prevod}{prevod}},
+ translator = {{prevodilac}{prevodilac}},
+ translatoraf = {{prevodilac i autor pogovora}{prevodilac i autor pogovora}},
+ translatoran = {{prevodilac i anotator}{prevodilac i anotator}},
+ translatoranaf = {{prevodilac, autor anotacija i autor pogovora}{prevodilac, autor anotacija i autor pogovora}},
+ translatoranfo = {{prevodilac, autor anotacija i autor predgovora}{prevodilac, autor anotacija i autor predgovora}},
+ translatoranin = {{prevodilac, autor anotacija i autor uvoda}{prevodilac, autor anotacija i autor uvoda}},
+ translatorco = {{prevodilac i komentator}{prevodilac i komentator}},
+ translatorcoaf = {{prevodilac, komentar i autor pogovora}{prevodilac, komentar i autor pogovora}},
+ translatorcofo = {{prevodilac, komentar i autor predgovora}{prevodilac, komentar i autor predgovora}},
+ translatorcoin = {{prevodilac, komentar i autor uvoda}{prevodilac, komentar i autor uvoda}},
+ translatorfo = {{prevodilac i autor predgovora}{prevodilac i autor predgovora}},
+ translatorin = {{prevodilac i autor uvoda}{prevodilac i autor uvoda}},
+ translators = {{prevodioci}{prevodioci}},
+ translatorsaf = {{prevodilac i autor pogovora}{prevodilac i autor pogovora}},
+ translatorsan = {{prevodioci i autori bele\v ski}{prevodioci i autori bele\v ski}},
+ translatorsanaf = {{prevodilac, autor anotacija i autor pogovora}{prevodilac, autor anotacija i autor pogovora}},
+ translatorsanfo = {{prevodilac, autor anotacija i autor predgovora}{prevodilac, autor anotacija i autor predgovora}},
+ translatorsanin = {{prevodilac, autor anotacija i autor uvoda}{prevodilac, autor anotacija i autor uvoda}},
+ translatorsco = {{prevodioci i komentatori}{prevodioci i komentatori}},
+ translatorscoaf = {{prevodilac, komentar i autor pogovora}{prevodilac, komentar i autor pogovora}},
+ translatorscofo = {{prevodilac, komentar i autor predgovora}{prevodilac, komentar i autor predgovora}},
+ translatorscoin = {{prevodilac, komentar i autor uvoda}{prevodilac, komentar i autor uvoda}},
+ translatorsfo = {{prevodilac i autor predgovora}{prevodilac i autor predgovora}},
+ translatorsin = {{prevodilac i autor uvoda}{prevodilac i autor uvoda}},
+ url = {{adresa}{adresa}},
+ urlfrom = {{dostupno na}{dostupno na}},
+ urlseen = {{pose\'ceno}{pose\'ceno}},
+ verse = {{strofa}{str\adddot}},
+ verses = {{strofe}{str\adddot}},
+ versetotal = {{strofa}{str\adddot}},
+ versetotals = {{strofe}{str\adddot}},
+ version = {{verzija}{verzija}},
+ volume = {{sveska}{sv\adddot}},
+ volumes = {{sveske}{sv\adddot}},
+ winter = {{zima}{zima}},
+ withafterword = {{sa pogovorom}{sa pogovorom}},
+ withannotator = {{sa bele\v skama}{sa bele\v skama}},
+ withcommentator = {{sa komentarom}{sa komentarom}},
+ withforeword = {{sa predgovorom}{sa predgovorom}},
+ withintroduction = {{sa uvodom}{sa uvodom}},
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx b/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx
new file mode 100644
index 0000000000..1e11519af0
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/lbx/serbianc.lbx
@@ -0,0 +1,449 @@
+\ProvidesFile{serbianc.lbx}
+[\abx@lbxid]
+
+% Translator's notes:
+%
+% This file is generated from a template and YAML localization string
+% collection by a script
+% You can said files at https://gitlab.com/andrejr/biblatex-serbian.
+% Please don't modify this file by hand -- contribute your changes upstream and
+% then send a pull request with the generated file to the official biblatex
+% repo (https://github.com/plk/biblatex).
+%
+% This is done so we could generate both `serbian.lbx` (Latin) and
+% `serbianc.lbx` (Cyrillic) from the same set of localization strings.
+
+\lbx@ifutfinput
+ {}
+ {\PackageError{biblatex}
+ {Serbian Cyrillic biblatex localization requires UTF-8 support}
+ {The 'serbianc.lbx' file requires UTF-8 encoding but you
+ seem\MessageBreak to be using a different encoding.
+ This is a fatal error. I will\MessageBreak abort loading
+ serbianc.lbx now.}%
+ \endinput}
+
+\DeclareRedundantLanguages{serbianc}{serbianc}
+
+\DeclareBibliographyExtras{%
+ \protected\def\bibrangedash{\textendash\penalty\hyphenpenalty}%
+ \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+ \protected\def\mkbibmascord{\mkbibordinal}%
+ \protected\def\mkbibfemord{\mkbibordinal}%
+ \protected\def\mkbibneutord{\mkbibordinal}%
+ \protected\def\bibtimesep{.}%
+ %\savecommand\mkbibordedition
+ %\savecommand\mkbibordseries
+ \def\mkbibordedition{\mkbibordinal}%
+ \def\mkbibordseries{\mkbibfemord}%
+ \protected\def\mkbibdatelong#1#2#3{%
+ % day field
+ \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}% if day exists, display
+ \iffieldundef{#2}{}{\nobreakspace}}% space before month if month exists
+ % month field
+ \iffieldundef{#2}{}{\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}% space before year if year exists
+ % year field
+ \iffieldbibstring{#1}% year
+ {\bibstring{\thefield{#1}}}%
+ {\dateeraprintpre{#1}\mkbibordinal{\thefield{#1}}}}%
+ \protected\def\mkbibdateshort#1#2#3{%
+ \iffieldundef{#3}{}{\mkbibordinal{\thefield{#3}}%
+ \iffieldundef{#2}{}{\addnbspace}}%
+ \iffieldundef{#2}{}{\mkbibordinal{\thefield{#2}}%
+ \iffieldundef{#1}{}{\addnbspace}}%
+ \iffieldbibstring{#1}{\bibstring{\thefield{#1}}}%
+ {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}}%
+ \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
+ \iffieldundef{#4}{}
+ {\bibtimezonesep
+ \mkbibtimezone{\thefield{#4}}}}%
+ \expandafter\protected\expandafter\def\csname mkbibtime12h%
+ \endcsname#1#2#3#4{%
+ \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep%
+ \forcezerosmdt{\thefield{#2}}%
+ \iffieldundef{#3}{}
+ {\bibtimesep%
+ \forcezerosmdt{\thefield{#3}}}%
+ \space
+ \ifnumless{\thefield{#1}}{12}
+ {\bibstring{am}}
+ {\bibstring{pm}}%
+ \iffieldundef{#4}{}
+ {\space\bibtimezonesep%
+ \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+ \protected\def\mkbibseasondateshort#1#2{%
+ \mkbibseason{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+ \protected\def\mkbibseasondatelong#1#2{%
+ \mkbibseason{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}\adddot}%
+}
+
+\DeclareBibliographyStrings{%
+ abstract = {{апстракт}{апстракт}},
+ afterword = {{поговор}{поговор}},
+ am = {{AM}{AM}},
+ and = {{и}{и}},
+ andmore = {{и други}{и\addabbrvspace др\adddot}},
+ andothers = {{и други}{и\addabbrvspace др\adddot}},
+ annodomini = {{после Христа}{п\adddotspace Хр\adddot}},
+ annotation = {{белешка}{бел\adddot}},
+ annotations = {{белешке}{бел\adddot}},
+ annotator = {{аутор бележака}{аут\adddot\ бел\adddot}},
+ annotators = {{аутори бележака}{аут\adddot\ бел\adddot}},
+ april = {{април}{апр\adddot}},
+ astitle = {{под насловом}{под насловом}},
+ audiocd = {{аудио ЦД}{аудио ЦД}},
+ august = {{август}{авг\adddot}},
+ autumn = {{јесен}{јесен}},
+ backrefpage = {{цитирано на страници}{цит\adddot\ на стр\adddot}},
+ backrefpages = {{цитирано на страницама}{цит\adddot\ на стр\adddot}},
+ bathesis = {{бачелор рад}{БА\addabbrvspace рад}},
+ beforechrist = {{пре Христа}{пр\adddotspace Хр\adddot}},
+ beforecommonera = {{пре нове ере}{пре\addabbrvspace н\adddotspace е\adddot}},
+ bibliography = {{Библиографија}{Библиографија}},
+ book = {{књига}{књ\adddot}},
+ byannotator = {{аутор бележака}{аутор бележака}},
+ byauthor = {{аутор}{аутор}},
+ bycollaborator = {{у сарадњи са}{у сарадњи са}},
+ bycommentator = {{коментар}{коментар}},
+ bycompiler = {{одабир}{одабир}},
+ bycontinuator = {{аутор наставка}{аутор наставка}},
+ byeditor = {{уредник}{уредник}},
+ byeditoraf = {{обрада и поговор}{обрада и поговор}},
+ byeditoran = {{обрада и белешке}{обрада и белешке}},
+ byeditoranaf = {{обрада, белешке и поговор}{обрада, белешке и поговор}},
+ byeditoranfo = {{обрада, белешке и предговор}{обрада, белешке и предговор}},
+ byeditoranin = {{обрада, белешке и увод}{обрада, белешке и увод}},
+ byeditorco = {{обрада и коментар}{обрада и коментар}},
+ byeditorcoaf = {{обрада, коментар и поговор}{обрада, коментар и поговор}},
+ byeditorcofo = {{обрада, коментар и предговор}{обрада, коментар и предговор}},
+ byeditorcoin = {{обрада, коментар и увод}{обрада, коментар и увод}},
+ byeditorfo = {{обрада и предговор}{обрада и предговор}},
+ byeditorin = {{обрада и увод}{обрада и увод}},
+ byeditortr = {{обрада и превод}{обрада и превод}},
+ byeditortraf = {{обрада, превод и поговор}{обрада, превод и поговор}},
+ byeditortran = {{обрада, превод и белешке}{обрада, превод и белешке}},
+ byeditortranaf = {{обрада, превод, белешке и поговор}{обрада, превод, белешке и поговор}},
+ byeditortranfo = {{обрада, превод, белешке и предговор}{обрада, превод, белешке и предговор}},
+ byeditortranin = {{обрада, превод, белешке и увод}{обрада, превод, белешке и увод}},
+ byeditortrco = {{обрада, превод и коментар}{обрада, превод и коментар}},
+ byeditortrcoaf = {{обрада, превод, коментар и поговор}{обрада, превод, коментар и поговор}},
+ byeditortrcofo = {{обрада, превод, коментар и предговор}{обрада, превод, коментар и предговор}},
+ byeditortrcoin = {{обрада, превод, коментар и увод}{обрада, превод, коментар и увод}},
+ byeditortrfo = {{обрада, превод и предговор}{обрада, превод и предговор}},
+ byeditortrin = {{обрада, превод и увод}{обрада, превод и увод}},
+ byfounder = {{оснивач}{оснивач}},
+ byorganizer = {{организатор}{организатор}},
+ bypublisher = {{издавач}{издавач}},
+ byredactor = {{редактор}{редактор}},
+ byreviewer = {{рецензент}{рецензент}},
+ byreviser = {{коректор}{коректор}},
+ bytranslator = {{превод}{превод}},
+ bytranslatoraf = {{превод и поговор}{превод и поговор}},
+ bytranslatoran = {{превод и белешке}{превод и белешке}},
+ bytranslatoranaf = {{превод, белешке и поговор}{превод, белешке и поговор}},
+ bytranslatoranfo = {{превод, белешке и предговор}{превод, белешке и предговор}},
+ bytranslatoranin = {{превод, белешке и увод}{превод, белешке и увод}},
+ bytranslatorco = {{превод и коментар}{превод и коментар}},
+ bytranslatorcoaf = {{превод, коментар и поговор}{превод, коментар и поговор}},
+ bytranslatorcofo = {{превод, коментар и предговор}{превод, коментар и предговор}},
+ bytranslatorcoin = {{превод, коментар и увод}{превод, коментар и увод}},
+ bytranslatorfo = {{превод и предговор}{превод и предговор}},
+ bytranslatorin = {{превод и увод}{превод и увод}},
+ candthesis = {{кандидатски рад}{кандидатски рад}},
+ chapter = {{глава}{глава}},
+ circa = {{цирка}{cca}},
+ citedas = {{цитирано као}{цит\adddotspace као}},
+ collaborator = {{сарадник}{сар\adddot}},
+ collaborators = {{сарадници}{сар\adddot}},
+ column = {{ступац}{ступац}},
+ columns = {{ступци}{ступци}},
+ columntotal = {{ступац}{ступац}},
+ columntotals = {{ступци}{ступци}},
+ commentary = {{коментар}{ком\adddot}},
+ commentator = {{коментатор}{ком\adddot}},
+ commentators = {{коментатори}{ком\adddot}},
+ commonera = {{нове ере}{н.\addnbspace е\adddot}},
+ compiler = {{приређивач}{приређивач}},
+ compilers = {{приредили}{приредили}},
+ confer = {{cf\adddot}{cf\adddot}},
+ continuator = {{настављач}{наст\adddot}},
+ continuators = {{настављачи}{наст\adddot}},
+ countryde = {{Немачка}{ДЕ}},
+ countryep = {{Европска унија}{ЕП}},
+ countryeu = {{Европска унија}{ЕУ}},
+ countryfr = {{Француска}{ФР}},
+ countryuk = {{Велика Британија}{ГБ}},
+ countryus = {{Сједињене Америчке Државе}{САД}},
+ datacd = {{CD-ROM}{CD-ROM}},
+ december = {{децембар}{дец\adddot}},
+ edition = {{издање}{издање}},
+ editor = {{уредник}{ур\adddot}},
+ editoraf = {{уредник и аутор поговора}{уредник и аутор поговора}},
+ editoran = {{уредник и аутор бележака}{уредник и аутор бележака}},
+ editoranaf = {{уредник, аутор бележака и аутор поговора}{уредник, аутор бележака и аутор поговора}},
+ editoranfo = {{уредник, аутор бележака и аутор предговора}{уредник, аутор бележака и аутор предговора}},
+ editoranin = {{уредник, аутор бележака и аутор увода}{уредник, аутор бележака и аутор увода}},
+ editorco = {{уредник и коментатор}{уредник и коментатор}},
+ editorcoaf = {{уредник, коментатор и аутор поговора}{уредник, коментатор и аутор поговора}},
+ editorcofo = {{уредник, коментатор и аутор предговора}{уредник, коментатор и аутор предговора}},
+ editorcoin = {{уредник, коментатор и аутор увода}{уредник, коментатор и аутор увода}},
+ editorfo = {{уредник и аутор предговора}{уредник и аутор предговора}},
+ editorin = {{уредник и аутор увода}{уредник и аутор увода}},
+ editors = {{уредници}{уредници}},
+ editorsaf = {{уредници и писци поговора}{уредници и писци поговора}},
+ editorsan = {{уредници и аутори бележака}{уредници и аутори бележака}},
+ editorsanaf = {{уредници, аутори бележака и аутори поговора}{уредници, аутори бележака и аутори поговора}},
+ editorsanfo = {{уредници, аутори бележака и аутори предговора}{уредници, аутори бележака и аутори предговора}},
+ editorsanin = {{уредници, аутори бележака и аутори увода}{уредници, аутори бележака и аутори увода}},
+ editorsco = {{уредници и коментатори}{уредници и коментатори}},
+ editorscoaf = {{уредници, коментатори и писци поговора}{уредници, коментатори и писци поговора}},
+ editorscofo = {{уредници, коментатори и аутори предговора}{уредници, коментатори и аутори предговора}},
+ editorscoin = {{уредници, коментатори и аутори увода}{уредници, коментатори и аутори увода}},
+ editorsfo = {{уредници и писци предговора}{уредници и писци предговора}},
+ editorsin = {{уредници и аутори увода}{уредници и аутори увода}},
+ editorstr = {{уредници и преводиоци}{уредници и преводиоци}},
+ editorstraf = {{уредници, преводиоци и аутори поговора}{уредници, преводиоци и аутори поговора}},
+ editorstran = {{уредници, преводиоци и аутори бележака}{уредници, преводиоци и аутори бележака}},
+ editorstranaf = {{уредници, преводиоци, аутори бележака и писци поговора}{уредници, преводиоци, аутори бележака и писци поговора}},
+ editorstranfo = {{уредници, преводиоци, аутори бележака и аутори предговора}{уредници, преводиоци, аутори бележака и аутори предговора}},
+ editorstranin = {{уредници, преводиоци, аутори бележака и аутори увода}{уредници, преводиоци, аутори бележака и аутори увода}},
+ editorstrco = {{уредници, преводиоци и коментатори}{уредници, преводиоци и коментатори}},
+ editorstrcoaf = {{уредници, преводиоци, коментатори и писци поговора}{уредници, преводиоци, коментатори и писци поговора}},
+ editorstrcofo = {{уредници, преводиоци, коментатори и аутори предговора}{уредници, преводиоци, коментатори и аутори предговора}},
+ editorstrcoin = {{уредници, преводиоци, коментатори и аутори увода}{уредници, преводиоци, коментатори и аутори увода}},
+ editorstrfo = {{уредници, преводиоци и аутори предговора}{уредници, преводиоци и аутори предговора}},
+ editorstrin = {{уредници, преводиоци и аутори увода}{уредници, преводиоци и аутори увода}},
+ editortr = {{уредник и преводилац}{уредник и преводилац}},
+ editortraf = {{уредник, преводилац и аутор поговора}{уредник, преводилац и аутор поговора}},
+ editortran = {{уредник, преводилац и аутор бележака}{уредник, преводилац и аутор бележака}},
+ editortranaf = {{уредник, преводилац, аутор бележака и аутор поговора}{уредник, преводилац, аутор бележака и аутор поговора}},
+ editortranfo = {{уредник, преводилац, аутор бележака и аутор предговора}{уредник, преводилац, аутор бележака и аутор предговора}},
+ editortranin = {{уредник, преводилац, аутор бележака и аутор увода}{уредник, преводилац, аутор бележака и аутор увода}},
+ editortrco = {{уредник, преводилац и коментатор}{уредник, преводилац и коментатор}},
+ editortrcoaf = {{уредник, преводилац, коментатор и аутор поговора}{уредник, преводилац, коментатор и аутор поговора}},
+ editortrcofo = {{уредник, преводилац, коментатор и аутор предговора}{уредник, преводилац, коментатор и аутор предговора}},
+ editortrcoin = {{уредник, преводилац, коментатор и аутор увода}{уредник, преводилац, коментатор и аутор увода}},
+ editortrfo = {{уредник, преводилац и аутор предговора}{уредник, преводилац и аутор предговора}},
+ editortrin = {{уредник, преводилац и аутор увода}{уредник, преводилац и аутор увода}},
+ february = {{фебруар}{феб\adddot}},
+ file = {{датотека}{датотека}},
+ foreword = {{предговор}{предговор}},
+ forthcoming = {{долазеће}{долазеће}},
+ founder = {{оснивач}{осн\adddot}},
+ founders = {{оснивачи}{осн\adddot}},
+ fromamerican = {{са америчког}{са америчког}},
+ frombrazilian = {{са бразилског}{са бразилског}},
+ frombulgarian = {{са бугарског}{са бугарског}},
+ fromcatalan = {{са каталонског}{са каталонског}},
+ fromcroatian = {{са хрватског}{са хрватског}},
+ fromczech = {{са чешког}{са чешког}},
+ fromdanish = {{са данског}{са данског}},
+ fromdutch = {{са холандског}{са холандског}},
+ fromenglish = {{са енглеског}{са енглеског}},
+ fromestonian = {{са естонског}{са естонског}},
+ fromfinnish = {{са финског}{са финског}},
+ fromfrench = {{са француског}{са француског}},
+ fromgalician = {{са галицијског}{са галицијског}},
+ fromgerman = {{са немачког}{са немачког}},
+ fromgreek = {{са грчког}{са грчког}},
+ fromhungarian = {{са мађарског}{са мађарског}},
+ fromitalian = {{са италијанског}{са италијанског}},
+ fromjapanese = {{са јапанског}{са јапанског}},
+ fromlatin = {{са латинског}{са латинског}},
+ fromlatvian = {{са летонског}{са летонског}},
+ fromnorwegian = {{са норвешког}{са норвешког}},
+ frompolish = {{са пољског}{са пољског}},
+ fromportuguese = {{са португалског}{са португалског}},
+ fromrussian = {{са руског}{са руског}},
+ fromslovak = {{са словачког}{са словачког}},
+ fromslovene = {{са словеначког}{са словеначког}},
+ fromspanish = {{са шпанског}{са шпанског}},
+ fromswedish = {{са шведског}{са шведског}},
+ fromukrainian = {{са украјинског}{са украјинског}},
+ ibidem = {{ibidem}{ibid\adddot}},
+ idem = {{idem}{idem}},
+ idempf = {{eaedem}{eaedem}},
+ idempm = {{eidem}{eidem}},
+ idempn = {{eadem}{eadem}},
+ idempp = {{eidem}{eidem}},
+ idemsf = {{eadem}{eadem}},
+ idemsm = {{idem}{idem}},
+ idemsn = {{idem}{idem}},
+ in = {{у}{у}},
+ inpreparation = {{у припреми}{у припреми}},
+ inpress = {{у штампи}{у штампи}},
+ inseries = {{у}{у}},
+ introduction = {{увод}{ув\adddot}},
+ involumes = {{у}{у}},
+ issue = {{издање}{издање}},
+ january = {{јануар}{јан\adddot}},
+ jourser = {{серија}{сер\adddot}},
+ jourvol = {{свеска}{св\adddot}},
+ july = {{јул}{јул}},
+ june = {{јун}{јун}},
+ langamerican = {{амерички}{амерички}},
+ langbrazilian = {{бразилски}{бразилски}},
+ langbulgarian = {{бугарски}{бугарски}},
+ langcatalan = {{каталански}{каталански}},
+ langcroatian = {{хрватски}{хрватски}},
+ langczech = {{чешки}{чешки}},
+ langdanish = {{дански}{дански}},
+ langdutch = {{холандски}{холандски}},
+ langenglish = {{енглески}{енглески}},
+ langestonian = {{естонски}{естонски}},
+ langfinnish = {{фински}{фински}},
+ langfrench = {{француски}{француски}},
+ langgalician = {{галицијски}{галицијски}},
+ langgerman = {{немачки}{немачки}},
+ langgreek = {{грчки}{грчки}},
+ langhungarian = {{мађарски}{мађарски}},
+ langitalian = {{италијански}{италијански}},
+ langjapanese = {{јапански}{јапански}},
+ langlatin = {{латински}{латински}},
+ langlatvian = {{летонски}{летонски}},
+ langnorwegian = {{норвешки}{норвешки}},
+ langpolish = {{пољски}{пољски}},
+ langportuguese = {{португалски}{португалски}},
+ langrussian = {{руски}{руски}},
+ langslovak = {{словачки}{словачки}},
+ langslovene = {{словеначки}{словеначки}},
+ langspanish = {{шпански}{шпански}},
+ langswedish = {{шведски}{шведски}},
+ langukrainian = {{украјински}{украјински}},
+ library = {{библиотека}{библиотека}},
+ line = {{ред}{р\adddot}},
+ lines = {{редови}{р\adddot}},
+ linetotal = {{ред}{р\adddot}},
+ linetotals = {{редови}{р\adddot}},
+ loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+ march = {{март}{мар\adddot}},
+ mathesis = {{мастер рад}{мастер рад}},
+ may = {{мај}{мај}},
+ newseries = {{нова серија}{нова серија}},
+ nodate = {{без датума}{без датума}},
+ november = {{новембар}{нов\adddot}},
+ number = {{број}{бр\adddot}},
+ october = {{октобар}{окт\adddot}},
+ ofseries = {{серија}{сер\adddot}},
+ oldseries = {{стара серија}{стара серија}},
+ opcit = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+ organizer = {{организатор}{орг\adddot}},
+ organizers = {{организатори}{орг\adddot}},
+ origpubas = {{оригинално издато као}{оригинално издато као}},
+ origpubin = {{оригинално издато}{оригинално издато}},
+ page = {{страна}{стр\adddot}},
+ pages = {{стране}{стр\adddot}},
+ pagetotal = {{страна}{стр\adddot}},
+ pagetotals = {{стране}{стр\adddot}},
+ paragraph = {{пасус}{пас\adddot}},
+ paragraphs = {{пасуси}{пас\adddot}},
+ paragraphtotal = {{пасус}{пас\adddot}},
+ paragraphtotals = {{пасуси}{пас\adddot}},
+ part = {{део}{део}},
+ passim = {{passim}{pass\adddot}},
+ patent = {{патент}{пат\adddot}},
+ patentde = {{немачки патент}{нем\adddot\ пат\adddot}},
+ patenteu = {{европски патент}{евр\adddot\ пат\adddot}},
+ patentfr = {{француски патент}{франц\adddot\ пат\adddot}},
+ patentuk = {{британски патент}{брит\adddot\ пат\adddot}},
+ patentus = {{САД патент}{САД пат\adddot}},
+ patreq = {{захтев за патент}{захтев за патент}},
+ patreqde = {{немачки захтев за патент}{немачки захтев за патент}},
+ patreqeu = {{европски захтев за патент}{европски захтев за патент}},
+ patreqfr = {{француски захтев за патент}{француски захтев за патент}},
+ patrequk = {{британски захтев за патент}{британски захтев за патент}},
+ patrequs = {{САД захтев за патент}{САД захтев за патент}},
+ phdthesis = {{докторска теза}{докторска теза}},
+ pm = {{PM}{PM}},
+ prepublished = {{прелиминарно издање}{прелиминарно издање}},
+ quotedin = {{цитирано у}{цит\adddotspace у}},
+ redactor = {{редактор}{ред\adddot}},
+ redactors = {{редактори}{ред\adddot}},
+ references = {{Литература}{Литература}},
+ reprint = {{репринт}{репринт}},
+ reprintas = {{поново издато као као}{поново издато као као}},
+ reprintfrom = {{репринт из}{репринт из}},
+ reprintof = {{репринт}{репринт}},
+ resreport = {{истраживачки извештај}{истраживачки извештај}},
+ reviewof = {{рецензија}{рецензија}},
+ reviser = {{коректор}{коректор}},
+ revisers = {{коректори}{коректори}},
+ section = {{секција}{сек\adddot}},
+ sections = {{секције}{сек\adddot}},
+ sectiontotal = {{секција}{сек\adddot}},
+ sectiontotals = {{секције}{сек\adddot}},
+ see = {{види}{види}},
+ seealso = {{види\addabbrvspace и}{види}},
+ seenote = {{види фусноту}{види фусноту}},
+ september = {{септембар}{септ\adddot}},
+ sequens = {{sq\adddot}{sq\adddot}},
+ sequentes = {{sqq\adddot}{sqq\adddot}},
+ shorthands = {{Списак скраћеница}{Скраћенице}},
+ software = {{рачунарски софтвер}{рач\adddot\ софтвер}},
+ spring = {{пролеће}{пролеће}},
+ submitted = {{послато}{послато}},
+ summer = {{лето}{лето}},
+ techreport = {{технички извештај}{техн\adddotspace изв\adddot}},
+ thiscite = {{посебно}{посебно}},
+ translationas = {{преведено као}{преведено као}},
+ translationfrom = {{преведено са}{преведено са}},
+ translationof = {{превод}{превод}},
+ translator = {{преводилац}{преводилац}},
+ translatoraf = {{преводилац и аутор поговора}{преводилац и аутор поговора}},
+ translatoran = {{преводилац и анотатор}{преводилац и анотатор}},
+ translatoranaf = {{преводилац, аутор анотација и аутор поговора}{преводилац, аутор анотација и аутор поговора}},
+ translatoranfo = {{преводилац, аутор анотација и аутор предговора}{преводилац, аутор анотација и аутор предговора}},
+ translatoranin = {{преводилац, аутор анотација и аутор увода}{преводилац, аутор анотација и аутор увода}},
+ translatorco = {{преводилац и коментатор}{преводилац и коментатор}},
+ translatorcoaf = {{преводилац, коментар и аутор поговора}{преводилац, коментар и аутор поговора}},
+ translatorcofo = {{преводилац, коментар и аутор предговора}{преводилац, коментар и аутор предговора}},
+ translatorcoin = {{преводилац, коментар и аутор увода}{преводилац, коментар и аутор увода}},
+ translatorfo = {{преводилац и аутор предговора}{преводилац и аутор предговора}},
+ translatorin = {{преводилац и аутор увода}{преводилац и аутор увода}},
+ translators = {{преводиоци}{преводиоци}},
+ translatorsaf = {{преводилац и аутор поговора}{преводилац и аутор поговора}},
+ translatorsan = {{преводиоци и аутори белешки}{преводиоци и аутори белешки}},
+ translatorsanaf = {{преводилац, аутор анотација и аутор поговора}{преводилац, аутор анотација и аутор поговора}},
+ translatorsanfo = {{преводилац, аутор анотација и аутор предговора}{преводилац, аутор анотација и аутор предговора}},
+ translatorsanin = {{преводилац, аутор анотација и аутор увода}{преводилац, аутор анотација и аутор увода}},
+ translatorsco = {{преводиоци и коментатори}{преводиоци и коментатори}},
+ translatorscoaf = {{преводилац, коментар и аутор поговора}{преводилац, коментар и аутор поговора}},
+ translatorscofo = {{преводилац, коментар и аутор предговора}{преводилац, коментар и аутор предговора}},
+ translatorscoin = {{преводилац, коментар и аутор увода}{преводилац, коментар и аутор увода}},
+ translatorsfo = {{преводилац и аутор предговора}{преводилац и аутор предговора}},
+ translatorsin = {{преводилац и аутор увода}{преводилац и аутор увода}},
+ url = {{адреса}{адреса}},
+ urlfrom = {{доступно на}{доступно на}},
+ urlseen = {{посећено}{посећено}},
+ verse = {{строфа}{стр\adddot}},
+ verses = {{строфе}{стр\adddot}},
+ versetotal = {{строфа}{стр\adddot}},
+ versetotals = {{строфе}{стр\adddot}},
+ version = {{верзија}{верзија}},
+ volume = {{свеска}{св\adddot}},
+ volumes = {{свеске}{св\adddot}},
+ winter = {{зима}{зима}},
+ withafterword = {{са поговором}{са поговором}},
+ withannotator = {{са белешкама}{са белешкама}},
+ withcommentator = {{са коментаром}{са коментаром}},
+ withforeword = {{са предговором}{са предговором}},
+ withintroduction = {{са уводом}{са уводом}},
+}
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx b/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx
index 4548ff67df..2e7201e9c8 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/slovak.lbx
@@ -40,13 +40,17 @@
{\bibstring{\thefield{#1}}}
{\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -74,62 +78,34 @@
}
\DeclareBibliographyStrings{%
- bibliography = {{Zoznam bibliografick\'{y}ch odkazov}%
- {Bibliografia}},
- references = {{Cit\'{a}cie}% % ISO 690 -- section 2.15
- {Cit\'{a}cie}},
- shorthands = {{Zoznam skratiek}%
- {Skratky}},
- editor = {{editor}%
- {ed\adddot}},
- editors = {{editori}%
- {ed\adddot}},
- compiler = {{zostavovate\v{l}}% % ISO 690 -- section 5.1 -- c)
- {zost\adddot}},
- compilers = {{zostavovatelia}%
- {zost\adddot}},
- redactor = {{redaktor}%
- {red\adddot}},
- redactors = {{redaktori}%
- {red\adddot}},
- reviser = {{korektor}%
- {kor\adddot}},
- revisers = {{korektori}%
- {kor\adddot}},
- founder = {{zakladate\v{l}}%
- {zakl\adddot}},
- founders = {{zakladatelia}%
- {zakl\adddot}},
- continuator = {{pokra\v{c}ovate\v{l}}%
- {pokr\adddot}},
- continuators = {{pokra\v{c}ovatelia}%
- {pokr\adddot}},
- collaborator = {{spolupracovn\'{i}k}%
- {spoluprac\adddot}},
- collaborators = {{spolupracovn\'{i}ci}%
- {spoluprac\adddot}},
- translator = {{prekladate\v{l}}%
- {prekl\adddot}},
- translators = {{prekladatelia}%
- {prekl\adddot}},
- commentator = {{koment\'{a}tor}%
- {kom\adddot}},
- commentators = {{koment\'{a}tori}%
- {kom\adddot}},
- annotator = {{anot\'{a}tor}%
- {anot\adddot}},
- annotators = {{anot\'{a}tori}%
- {anot\adddot}},
- commentary = {{koment\'{a}r}%
- {kom\adddot}},
- annotations = {{anot\'{a}cia}%
- {anot\adddot}},
- introduction = {{\'{u}vod}%
- {\'{u}v\adddot}},
- foreword = {{predhovor}%
- {predh\adddot}},
- afterword = {{doslov}%
- {dosl\adddot}},
+ bibliography = {{Zoznam literat\'{u}ry}{Bibliografia}},
+ references = {{Referencie}{Referencie}},
+ shorthands = {{Zoznam skratiek}{Skratky}},
+ editor = {{editor}{ed\adddot}},
+ editors = {{editori}{ed\adddot}},
+ compiler = {{zostavovate\v{l}}{zost\adddot}},
+ compilers = {{zostavovatelia}{zost\adddot}},
+ redactor = {{redaktor}{red\adddot}},
+ redactors = {{redaktori}{red\adddot}},
+ reviser = {{korektor}{kor\adddot}},
+ revisers = {{korektori}{kor\adddot}},
+ founder = {{zakladate\v{l}}{zakl\adddot}},
+ founders = {{zakladatelia}{zakl\adddot}},
+ continuator = {{pokra\v{c}ovate\v{l}}{pokr\adddot}},% FIXME: unsure
+ continuators = {{pokra\v{c}ovatelia}{pokr\adddot}},% FIXME: unsure
+ collaborator = {{spolupracovn\'{\i}k}{spoluprac\adddot}},
+ collaborators = {{spolupracovn\'{\i}ci}{spoluprac\adddot}},
+ translator = {{prekladate\v{l}}{prekl\adddot}},
+ translators = {{prekladatelia}{prekl\adddot}},
+ commentator = {{koment\'{a}tor}{kom\adddot}},
+ commentators = {{koment\'{a}tori}{kom\adddot}},
+ annotator = {{anot\'{a}tor}{anot\adddot}},
+ annotators = {{anot\'{a}tori}{anot\adddot}},
+ commentary = {{koment\'{a}r}{kom\adddot}},
+ annotations = {{anot\'{a}cie}{anot\adddot}},
+ introduction = {{\'{u}vod}{\'{u}v\adddot}},
+ foreword = {{predhovor}{predh\adddot}},
+ afterword = {{doslov}{dosl\adddot}},
editortr = {{editor a prekladate\v{l}}%
{ed\adddotspace a prekl\adddot}},
editorstr = {{editori a prekladatelia}%
@@ -230,97 +206,84 @@
{prekl\adddot\ a anot\adddot}},
translatorsan = {{prekladatelia a anot\'{a}tori}%
{prekl\adddot\ a anot\adddot}},
- translatorin = {{prekladate\v{l} a \'{u}vod}%
+ translatorin = {{preklad a \'{u}vod}%
{prekl\adddot\ a \'{u}v\adddot}},
- translatorsin = {{prekladatelia a \'{u}vod}%
+ translatorsin = {{preklad a \'{u}vod}%
{prekl\adddot\ a \'{u}v\adddot}},
- translatorfo = {{prekladate\v{l} a predhovor}%
+ translatorfo = {{preklad a predhovor}%
{prekl\adddot\ a predh\adddot}},
- translatorsfo = {{prekladatelia a predhovor}%
+ translatorsfo = {{preklad a predhovor}%
{prekl\adddot\ a predh\adddot}},
- translatoraf = {{prekladate\v{l} a doslov}%
+ translatoraf = {{preklad a doslov}%
{prekl\adddot\ a dosl\adddot}},
- translatorsaf = {{prekladatelia a doslov}%
+ translatorsaf = {{preklad a doslov}%
{prekl\adddot\ a dosl\adddot}},
- translatorcoin = {{prekladate\v{l}, koment\'{a}tor\ a \'{u}vod}%
+ translatorcoin = {{preklad, koment\'{a}r\ a \'{u}vod}%
{prekl., kom\adddot\ a \'{u}v\adddot}},
- translatorscoin = {{prekladatelia, koment\'{a}tori\ a \'{u}vod}%
+ translatorscoin = {{preklad, koment\'{a}r\ a \'{u}vod}%
{prekl., kom\adddot\ a \'{u}v\adddot}},
- translatorcofo = {{prekladate\v{l}, koment\'{a}tor\ a predhovor}%
+ translatorcofo = {{preklad, koment\'{a}r\ a predhovor}%
{prekl., kom\adddot\ a predh\adddot}},
- translatorscofo = {{prekladatelia, koment\'{a}tori\ a predhovor}%
+ translatorscofo = {{preklad, koment\'{a}r\ a predhovor}%
{prekl., kom\adddot\ a predh\adddot}},
- translatorcoaf = {{prekladate\v{l}, koment\'{a}tor\ a doslov}%
+ translatorcoaf = {{preklad, koment\'{a}r\ a doslov}%
{prekl., kom\adddot\ a dosl\adddot}},
- translatorscoaf = {{prekladatelia, koment\'{a}tori\ a doslov}%
+ translatorscoaf = {{preklad, koment\'{a}r\ a doslov}%
{prekl., kom\adddot\ a dosl\adddot}},
- translatoranin = {{prekladate\v{l}, anot\'{a}tor\ a \'{u}vod}%
+ translatoranin = {{preklad, anot\'{a}cia\ a \'{u}vod}%
{prekl., anot\adddot\ a \'{u}v\adddot}},
- translatorsanin = {{prekladatelia, anot\'{a}tori\ a \'{u}vod}%
+ translatorsanin = {{preklad, anot\'{a}cie\ a \'{u}vod}%
{prekl., anot\adddot\ a \'{u}v\adddot}},
- translatoranfo = {{prekladate\v{l}, anot\'{a}tor\ a predhovor}%
+ translatoranfo = {{preklad, anot\'{a}cia\ a predhovor}%
{prekl., anot\adddot\ a predh\adddot}},
- translatorsanfo = {{prekladatelia, anot\'{a}tori\ a predhovor}%
+ translatorsanfo = {{preklad, anot\'{a}cie\ a predhovor}%
{prekl., anot\adddot\ a predh\adddot}},
- translatoranaf = {{prekladate\v{l}, anot\'{a}tor\ a doslov}%
+ translatoranaf = {{preklad, anot\'{a}cia\ a doslov}%
{prekl., anot\adddot\ a dosl\adddot}},
- translatorsanaf = {{prekladatelia, anot\'{a}tori\ a doslov}%
+ translatorsanaf = {{preklad, anot\'{a}cie\ a doslov}%
{prekl., anot\adddot\ a dosl\adddot}},
-% organizer = {{}{}},% FIXME: missing
-% organizers = {{}{}},% FIXME: missing
-% byorganizer = {{}{}},% FIXME: missing
- byauthor = {{}%
- {}},
- byeditor = {{editovan\'{e}}%
- {ed\adddot}},
- bycompiler = {{zostaven\'{e}}%
- {zost\adddot}},
- byredactor = {{redigovan\'{e}}%
- {red\adddot}},
- byfounder = {{zalo\v{z}en\'{e}}%
- {zal\adddot}},
- bycontinuator = {{pokra\v{c}ovan\'{e}}%
- {pokr\adddot}},
- bycollaborator = {{v\addnbspace spolupr\'{a}ci s}%
- {v\addnbspace spol\adddotspace s}},
- bytranslator = {{prelo\v{z}en\'{e} \lbx@lfromlang}%
- {prel\adddot\ \lbx@sfromlang}},
- bycommentator = {{komentovan\'{e}}%
- {kom\adddot}},
- byannotator = {{anotovan\'{e}}%
- {anot\adddot}},
- withcommentator = {{s\addnbspace koment\'{a}rom od}%
- {s\addnbspace kom\adddotspace od}},
- withannotator = {{s\addnbspace anot\'{a}ciami od}%
- {s\addnbspace anot\adddot\ od}},
- withintroduction = {{s\addnbspace \'{u}vodom od}%
- {s\addnbspace \'{u}v\adddot\ od}},
- withforeword = {{s\addnbspace predhovorom od}%
- {s\addnbspace predh\adddot\ od}},
- withafterword = {{s\addnbspace doslovom od}%
- {s\addnbspace dosl\adddot\ od}},
- byeditortr = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang\ }%
- {ed\adddotspace a prel\adddot\ \lbx@sfromlang\ }},
+ organizer = {{organiz\'{a}tor}{org\adddot}},% FIXME: unsure
+ organizers = {{organiz\'{a}tori}{org\adddot}},% FIXME: unsure
+ byorganizer = {{organizovan\'{e}}{org\adddot}},% FIXME: unsure
+ byauthor = {{}{}},
+ byeditor = {{editovan\'{e}}{ed\adddot}},
+ bycompiler = {{zostaven\'{e}}{zost\adddot}},
+ byredactor = {{redigovan\'{e}}{red\adddot}},
+ byreviser = {{korigovan\'{e}}{kor\adddot}},
+ byreviewer = {{recenzovan\'{e}}{recenz\adddot}},
+ byfounder = {{zalo\v{z}en\'{e}}{zal\adddot}},
+ bycontinuator = {{pokra\v{c}ovan\'{e}}{pokr\adddot}},
+ bycollaborator = {{v\addnbspace spolupr\'{a}ci s\addnbspace}{v\addnbspace spol\adddotspace s\addnbspace}},
+ bytranslator = {{prelo\v{z}en\'{e} \lbx@lfromlang}{prel\adddot\ \lbx@sfromlang}},
+ bycommentator = {{komentovan\'{e}}{kom\adddot}},
+ byannotator = {{anotovan\'{e}}{anot\adddot}},
+ withcommentator = {{s\addnbspace koment\'{a}rom od}{s\addnbspace kom\adddot\ od}},
+ withannotator = {{s\addnbspace anot\'{a}ciami od}{s\addnbspace anot\adddot\ od}},
+ withintroduction = {{s\addnbspace \'{u}vodom od}{s\addnbspace \'{u}v\adddot\ od}},
+ withforeword = {{s\addnbspace predhovorom od}{s\addnbspace predh\adddot\ od}},
+ withafterword = {{s\addnbspace doslovom od}{s\addnbspace dosl\adddot\ od}},
+ byeditortr = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang}%
+ {ed\adddotspace a prel\adddot\ \lbx@sfromlang}},
byeditorco = {{editovan\'{e} a komentovan\'{e}}%
- {ed\adddotspace a kom\adddot\ }},
+ {ed\adddotspace a kom\adddot}},
byeditoran = {{editovan\'{e} a anotovan\'{e}}%
- {ed\adddotspace a anot\adddot\ }},
+ {ed\adddotspace a anot\adddot}},
byeditorin = {{editovan\'{e}, s\addnbspace \'{u}vodom}%
{ed.,\addabbrvspace s\addnbspace \'{u}v\adddot}},
byeditorfo = {{editovan\'{e}, s\addnbspace predhovorom}%
- {ed.,\addabbrvspace s\addnbspace predh.,}},
+ {ed.,\addabbrvspace s\addnbspace predh\adddot}},
byeditoraf = {{editovan\'{e}, s\addnbspace doslovom}%
- {ed.,\addabbrvspace s\addnbspace dosl.,}},
+ {ed.,\addabbrvspace s\addnbspace dosl\adddot}},
byeditortrco = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a komentovan\'{e}}%
- {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom\adddot\ }},
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a kom\adddot}},
byeditortran = {{editovan\'{e}, prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}}%
- {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot\ }},
+ {ed.,\addabbrvspace prel\adddot\ \lbx@sfromlang\ a anot\adddot}},
byeditortrin = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace \'{u}vodom}%
{ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace \'{u}v\adddot}},
byeditortrfo = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace predhovorom}%
{ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace predh\adddot}},
byeditortraf = {{editovan\'{e} a prelo\v{z}en\'{e} \lbx@lfromlang, s\addnbspace doslovom}%
- {ed\adddotspace a prekl\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}},
+ {ed\adddotspace a prel\adddot\ \lbx@sfromlang, s\addnbspace dosl\adddot}},
byeditorcoin = {{editovan\'{e} a komentovan\'{e}, s\addnbspace \'{u}vodom}%
{ed\adddotspace a kom., s\addnbspace \'{u}v\adddot}},
byeditorcofo = {{editovan\'{e} a komentovan\'{e}, s\addnbspace predhovorom}%
@@ -367,356 +330,206 @@
{prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace predh\adddot}},
bytranslatoranaf = {{prelo\v{z}en\'{e} \lbx@lfromlang\ a anotovan\'{e}, s\addnbspace doslovom}%
{prel\adddot\ \lbx@sfromlang\ a anot., s\addnbspace dosl\adddot}},
- and = {{a}%
- {a}},
- andothers = {{et\addabbrvspace al\adddot}% %et\addabbrvspace alii
- {et\addabbrvspace al\adddot}},
- andmore = {{et\addabbrvspace al\adddot}% %et\addabbrvspace alii
- {et\addabbrvspace al\adddot}},
- volume = {{zv\"{a}zok}%
- {zv\adddot}},
- volumes = {{zv\"{a}zky}%
- {zv\adddot}},
- involumes = {{in}%
- {in}},
- jourvol = {{ro\v{c}n\'{i}k}%
- {ro\v{c}\adddot}},
- jourser = {{ed\'{i}cia}% % ISO 690 -- section 2.17
- {ed\adddot}},
- book = {{kniha}%
- {kniha}},
- part = {{\v{c}as\v{t}}%
- {\v{c}as\v{t}}},
- issue = {{\v{c}\'{i}slo}%
- {\v{c}\'{i}slo}},
- newseries = {{nov\'{a} ed\'{i}cia}% % ISO 690 -- section 2.17
- {n\adddotspace ed\adddot}},
- oldseries = {{star\'{a} ed\'{i}cia}% % ISO 690 -- section 2.17
- {st\adddotspace ed\adddot}},
- edition = {{vydanie}%
- {vyd\adddot}},
- reprint = {{dotla\v{c}}%
- {dotl\adddot}},
- reprintof = {{dotla\v{c}}%
- {dotl\adddot}},
- reprintas = {{dotla\v{c}en\'{e} ako}%
- {dotl\adddotspace ako}},
- reprintfrom = {{dotla\v{c}en\'{e} z}%
- {dotl\adddotspace z}},
- reviewof = {{hodnotenie}%
- {hodn\adddot}},
- translationof = {{preklad}%
- {prekl\adddot}},
- translationas = {{prelo\v{z}en\'{e} ako}%
- {prel\adddotspace ako}},
- translationfrom = {{prelo\v{z}en\'{e} z}%
- {prel\adddotspace z}},
- origpubas = {{p\^{o}vodne vydan\'{e} ako}%
- {p\^{o}v\adddotspace vyd\adddotspace ako}},
- origpubin = {{p\^{o}vodne vydan\'{e} v\addnbspace roku}%
- {p\^{o}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
- astitle = {{ako}%
- {ako}},
- bypublisher = {{}%
- {}},
- page = {{strana}%
- {s\adddot}},
- pages = {{strany}%
- {s\adddot}},
- column = {{st\'{l}pec}%
- {st\'{l}p\adddot}},
- columns = {{st\'{l}pce}%
- {st\'{l}p\adddot}},
- line = {{riadok}%
- {r\adddot}},
- lines = {{riadky}%
- {r\adddot}},
- nodate = {{nedatovan\'{e}}% % ISO 690 -- section 9.3.4
- {b\adddotspace r\adddot}}, % bez roku
- verse = {{ver\v{s}}%
- {v\adddot}},
- verses = {{ver\v{s}e}%
- {v\adddot}},
- section = {{paragraf}%
- {\S}},
- sections = {{paragrafy}%
- {\S\S}},
- paragraph = {{odsek}%
- {ods\adddot}},
- paragraphs = {{odseky}%
- {ods\adddot}},
- in = {{in}%
- {in}},
- inseries = {{v}%
- {v}},
- ofseries = {{z}%
- {z}},
- number = {{\v{c}\'{i}slo}%
- {\v{c}\adddot}},
- chapter = {{kapitola}%
- {kap\adddot}},
-% bathesis = {{}{}},% FIXME: missing
- mathesis = {{diplomov\'{a} pr\'{a}ca}%
- {dipl\adddotspace pr\adddot}},
- phdthesis = {{dizerta\v{c}n\'{a} pr\'{a}ca}%
- {diz\adddotspace pr\adddot}},
- candthesis = {{kandid\'{a}tska pr\'{a}ca}%
- {kand\adddotspace pr\adddot}},
- resreport = {{v\'{y}skumn\'{a} spr\'{a}va}%
- {v\'{y}sk\adddot\ spr\adddot}},
- techreport = {{technick\'{a} spr\'{a}va}%
- {tech\adddotspace spr\adddot}},
- software = {{po\v{c}\'{i}ta\v{c}ov\'{y} softv\'{e}r}%
- {soft\adddot}},
- datacd = {{CD-ROM}%
- {CD-ROM}},
- audiocd = {{audio CD}%
- {audio CD}},
- version = {{verzia}%
- {ver\adddot}},
- url = {{url}%
- {url}},
- urlfrom = {{dostupn\'{e} z}% % ISO 690 -- section 15.2.6
- {dostupn\'{e} z}},
- urlseen = {{citovane\'{e}}%
- {cit\adddot}},
- inpreparation = {{v\addnbspace pr\'{i}prave}%
- {v\addnbspace pr\'{i}prave}},
- submitted = {{predlo\v{z}en\'{e}}%
- {predl\adddot}},
- forthcoming = {{prijat\'{e}}%
- {prij\adddot}},
- inpress = {{v\addnbspace tla\v{c}i}%
- {v\addnbspace tla\v{c}i}},
- prepublished = {{pred publikovan\'{i}m}%
- {pred publ\adddot}},
- citedas = {{\v{d}alej citovan\'{e} ako}%
- {\v{d}alej cit\adddotspace ako}},
- thiscite = {{obzvl\'{a}\v{s}\v{t}}%
- {obzvl\adddot}},
- seenote = {{vi\v{d} pozn\'{a}mka}%
- {vi\v{d} pozn\adddot}},
- quotedin = {{citovan\'{e} v}%
- {cit\adddotspace v}},
- idem = {{idem}%
- {idem}},
- idemsm = {{idem}%
- {idem}},
- idemsf = {{eadem}%
- {eadem}},
- idemsn = {{idem}%
- {idem}},
- idempm = {{eidem}%
- {eidem}},
- idempf = {{eaedem}%
- {eaedem}},
- idempn = {{eadem}%
- {eadem}},
- idempp = {{eidem}%
- {eidem}},
- ibidem = {{ibidem}%
- {ibid\adddot}},
- opcit = {{op\adddotspace cit\adddot}%
- {op\adddotspace cit\adddot}},
- loccit = {{loc\adddotspace cit\adddot}%
- {loc\adddotspace cit\adddot}},
- confer = {{cf\adddot}%
- {cf\adddot}},
- sequens = {{sq\adddot}%
- {sq\adddot}},
- sequentes = {{sqq\adddot}%
- {sqq\adddot}},
- passim = {{passim}%
- {pass\adddot}},
- see = {{vi\v{d}}%
- {vi\v{d}}},
- seealso = {{vi\v{d} tie\v{z}}%
- {vi\v{d} tie\v{z}}},
- backrefpage = {{citovan\'{e} na strane}%
- {cit\adddotspace na s\adddot}},
- backrefpages = {{citovan\'{e} na stran\'{a}ch}%
- {cit\adddotspace na str\adddot}},
- january = {{janu\'{a}r}%
- {jan\adddot}},
- february = {{febru\'{a}r}%
- {feb\adddot}},
- march = {{marec}%
- {mar\adddot}},
- april = {{apr\'{i}l}%
- {apr\adddot}},
- may = {{m\'{a}j}%
- {m\'{a}j}},
- june = {{j\'{u}n}%
- {j\'{u}n}},
- july = {{j\'{u}l}%
- {j\'{u}l}},
- august = {{august}%
- {aug\adddot}},
- september = {{september}%
- {sept\adddot}},
- october = {{okt\'{o}ber}%
- {okt\adddot}},
- november = {{november}%
- {nov\adddot}},
- december = {{december}%
- {dec\adddot}},
- langamerican = {{americk\'{a} angli\v{c}tina}%
- {am\adddot angl\adddot}},
- langbrazilian = {{braz\'{i}lska portugal\v{c}ina}%
- {braz\adddot portugal\adddot}},
-% langbulgarian = {{}{}},% FIXME: missing
- langcatalan = {{katal\'{a}n\v{c}ina}%
- {katal\adddot}},
- langcroatian = {{chorv\'{a}t\v{c}ina}%
- {chorv\adddot}},
- langczech = {{\v{c}e\v{s}tina}%
- {\v{c}e\v{s}tina}},
- langdanish = {{d\'{a}n\v{c}ina}%
- {d\'{a}n\adddot}},
- langdutch = {{holand\v{c}ina}%
- {hol\adddot}},
- langenglish = {{angli\v{c}tina}%
- {angl\adddot}},
-% langestonian = {{}{}},% FIXME: missing
- langfinnish = {{f\'{i}n\v{c}ina}%
- {f\'{i}n\adddot}},
- langfrench = {{franc\'{u}z\v{s}tina}%
- {franc\adddot}},
- langgalician = {{gal\'icij\v{c}ina}%
- {gal\adddot}},
- langgerman = {{nem\v{c}ina}%
- {nem\adddot}},
- langgreek = {{gr\'{e}\v{c}tina}%
- {gr\'{e}\v{c}tina}},
-% langhungarian = {{}{}}, % FIXME: missing
- langitalian = {{talian\v{c}ina}%
- {tal\adddot}},
- langjapanese = {{japon\v{c}ina}%
- {jap\adddot}},
- langlatin = {{latin\v{c}ina}%
- {lat\adddot}},
-% langlatvian = {{}{}},% FIXME: missing
- langnorwegian = {{n\'{o}r\v{c}ina}%
- {n\'{o}r\adddot}},
- langpolish = {{po\v{l}\v{s}tina}%
- {po\v{l}\adddot}},
- langportuguese = {{portugal\v{c}ina}%
- {portugal\adddot}},
- langrussian = {{ru\v{s}tina}%
- {ru\v{s}tina}},
- langslovak = {{sloven\v{c}ina}%
- {sloven\v{c}ina}},
- langslovene = {{slovin\v{c}ina}%
- {slovin\v{c}ina}},
- langspanish = {{\v{s}paniel\v{c}ina}%
- {\v{s}pan\adddot}},
- langswedish = {{\v{s}v\'{e}d\v{c}ina}%
- {\v{s}v\'{e}d\adddot}},
- fromamerican = {{z\addnbspace americkej angli\v{c}tiny}%
- {z\addnbspace amer\adddot angl\adddot}},
- frombrazilian = {{z\addnbspace braz\'{i}lskej portugal\v{c}iny}%
- {z\addnbspace braz\adddotspace portugal\adddot}},
-% frombulgarian = {{}{}},% FIXME: missing
- fromcatalan = {{z\addnbspace katal\'{a}n\v{c}iny}%
- {z\addnbspace katal\adddot}},
- fromcroatian = {{z\addnbspace chorvat\v{c}iny}%
- {z\addnbspace chorv\adddot}},
- fromczech = {{z\addnbspace \v{c}e\v{s}tiny}%
- {z\addnbspace \v{c}e\v{s}tiny}},
- fromdanish = {{z\addnbspace d\'{a}n\v{c}iny}%
- {z\addnbspace d\'{a}n\adddot}},
- fromdutch = {{z\addnbspace holand\v{c}iny}%
- {z\addnbspace hol\adddot}},
- fromenglish = {{z\addnbspace angli\v{c}tiny}%
- {z\addnbspace angl\adddot}},
-% fromestonian = {{}{}},% FIXME: missing
- fromfinnish = {{z\addnbspace f\'{i}n\v{c}iny}%
- {z\addnbspace f\'{i}n\adddot}},
- fromfrench = {{z\addnbspace franc\'{u}z\v{s}tiny}%
- {z\addnbspace franc\adddot}},
- fromgalician = {{z\addnbspace gal\'icij\v{c}ina}%
- {z\addbnspace gal\adddot}},
- fromgerman = {{z\addnbspace nem\v{c}iny}%
- {z\addnbspace nem\adddot}},
- fromgreek = {{z\addnbspace gr\'{e}\v{c}tiny}%
- {z\addnbspace gr\'{e}\v{c}tiny}},
-% fromhungarian = {{}{}}, % FIXME: missing
- fromitalian = {{z\addnbspace talian\v{c}iny}%
- {z\addnbspace tal\adddot}},
- fromjapanese = {{z\addnbspace japon\v{c}iny}%
- {z\addnbspace jap\adddot}},
- fromlatin = {{z\addnbspace latin\v{c}iny}%
- {z\addnbspace lat\adddot}},
-% fromlatvian = {{}{}},% FIXME: missing
- fromnorwegian = {{z\addnbspace n\'{o}r\v{c}iny}%
- {z\addnbspace n\'{o}r\adddot}},
- frompolish = {{z\addnbspace po\v{l}\v{s}tiny}%
- {z\addnbspace po\v{l}\adddot}},
- fromportuguese = {{z\addnbspace portugal\v{c}iny}%
- {z\addnbspace portugal\adddot}},
- fromrussian = {{z\addnbspace ru\v{s}tiny}%
- {z\addnbspace ru\v{s}tiny}},
- fromslovak = {{zo sloven\v{c}iny}%
- {zo sloven\v{c}iny}},
- fromslovene = {{zo slovin\v{c}iny}%
- {zo slovin\v{c}iny}},
- fromspanish = {{zo \v{s}paniel\v{c}iny}%
- {zo \v{s}pan\adddot}},
- fromswedish = {{zo \v{s}v\'{e}d\v{c}iny}%
- {zo \v{s}v\'{e}d\adddot}},
- countryde = {{Nemecko}%
- {DE}},
- countryeu = {{Eur\'{o}pska \'{u}nia}%
- {EU}},
- countryep = {{Eur\'{o}pska \'{u}nia}%
- {EP}},
- countryfr = {{Franc\'{u}zsko}%
- {FR}},
- countryuk = {{Ve\v{l}k\'{a} Brit\'{a}nia}%
- {GB}},
- countryus = {{Spojen\'{e} \v{S}t\'{a}ty Americk\'{e}}%
- {US}},
- patent = {{patent}%
- {pat\adddot}},
- patentde = {{nemeck\'{y} patent}%
- {nem\adddot\ pat\adddot}},
- patenteu = {{eur\'{o}psky patent}%
- {eur\adddot\ pat\adddot}},
- patentfr = {{franc\'{u}zsky patent}%
- {franc\adddot\ pat\adddot}},
- patentuk = {{britsk\'{y} patent}%
- {britsk\'{y} pat\adddot}},
- patentus = {{americk\'{y} patent}%
- {US\adddotspace pat\adddot}},
- patreq = {{patentov\'{a} \v{z}iados\v{t}}%
- {pat\adddot\ \v{z}iad\adddot}},
- patreqde = {{nemeck\'{a} patentov\'{a} \v{z}iados\v{t}}%
- {nem\adddot\ pat\adddot\ \v{z}iad\adddot}},
- patreqeu = {{eur\'{o}pska patentov\'{a} \v{z}iados\v{t}}%
- {eur\adddot\ pat\adddot\ \v{z}iad\adddot}},
- patreqfr = {{franc\'{u}zska patentov\'{a} \v{z}iados\v{t}}%
- {franc\adddot\ pat\adddot\ \v{z}iad\adddot}},
- patrequk = {{britsk\'{a} patentov\'{a} \v{z}iados\v{t}}%
- {brit\adddot\ pat\adddot\ \v{z}iad\adddot}},
- patrequs = {{US\adddotspace patentov\'{a} \v{z}iados\v{t}}%
- {US\adddotspace pat\adddot\ \v{z}iad\adddot}},
- file = {{s\'{u}bor}%
- {s\'{u}b\adddot}},
- library = {{kni\v{z}nica}%
- {kni\v{z}nica}},
- abstract = {{abstrakt}%
- {abst\adddot}},
- annotation = {{anot\'{a}cia}%
- {anot\adddot}},
- commonera = {{n\'a\v{s}ho letopo\v{c}tu}{n\adddotspace l\adddot}},
- beforecommonera = {{pred na\v{s}\'{\i}m letopo\v{c}tom}{pred\ n\adddotspace l\adddot}},
- annodomini = {{po Kristovi}{po\ Kr\adddot}},
- beforechrist = {{pred Kristom}{pred\ Kr\adddot}},
-% circa = {{}{}},% FIXME: missing
-% spring = {{}{}},% FIXME: missing
-% summer = {{}{}},% FIXME: missing
-% autumn = {{}{}},% FIXME: missing
-% winter = {{}{}},% FIXME: missing
+ and = {{a}{a}},
+ andothers = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
+ andmore = {{et\addabbrvspace al\adddot}{et\addabbrvspace al\adddot}},
+ volume = {{zv\"{a}zok}{zv\adddot}},
+ volumes = {{zv\"{a}zky}{zv\adddot}},
+ involumes = {{in}{in}},
+ jourvol = {{ro\v{c}n\'{\i}k}{ro\v{c}\adddot}},
+ jourser = {{ed\'{\i}cia}{ed\adddot}},
+ book = {{kniha}{kniha}},
+ part = {{\v{c}as\v{t}}{\v{c}as\v{t}}},
+ issue = {{\v{c}\'{\i}slo}{\v{c}\'{\i}slo}},
+ newseries = {{nov\'{a} ed\'{\i}cia}{n\adddotspace ed\adddot}},
+ oldseries = {{star\'{a} ed\'{\i}cia}{st\adddotspace ed\adddot}},
+ edition = {{vydanie}{vyd\adddot}},
+ reprint = {{dotla\v{c}}{dotl\adddot}},
+ reprintof = {{dotla\v{c}}{dotl\adddot}},
+ reprintas = {{dotla\v{c}en\'{e} ako}{dotl\adddotspace ako}},
+ reprintfrom = {{dotla\v{c}en\'{e} z\addnbspace}{dotl\adddotspace z\addnbspace}},
+ reviewof = {{recenzia}{recenz\adddot}},
+ translationof = {{preklad}{prekl\adddot}},
+ translationas = {{prelo\v{z}en\'{e} ako}{prel\adddotspace ako}},
+ translationfrom = {{prelo\v{z}en\'{e} z\addnbspace}{prel\adddotspace z\addnbspace}},
+ origpubas = {{p\^{o}vodne vydan\'{e} ako}{p\^{o}v\adddotspace vyd\adddotspace ako}},
+ origpubin = {{p\^{o}vodne vydan\'{e} v\addnbspace roku}{p\^{o}v\adddotspace vyd\adddotspace v\addnbspace r\adddot}},
+ astitle = {{ako}{ako}},
+ bypublisher = {{}{}},
+ nodate = {{nedatovan\'{e}}{b\adddot r\adddot}},% bez roku
+ page = {{strana}{s\adddot}},
+ pages = {{strany}{s\adddot}},
+ column = {{st\'{l}pec}{st\'{l}p\adddot}},
+ columns = {{st\'{l}pce}{st\'{l}p\adddot}},
+ line = {{riadok}{r\adddot}},
+ lines = {{riadky}{r\adddot}},
+ verse = {{ver\v{s}}{v\adddot}},
+ verses = {{ver\v{s}e}{v\adddot}},
+ section = {{sekcia}{\S}},
+ sections = {{sekcie}{\S\S}},
+ paragraph = {{odsek}{ods\adddot}},
+ paragraphs = {{odseky}{ods\adddot}},
+ pagetotal = {{strana}{s\adddot}},
+ pagetotals = {{strany}{s\adddot}},
+ columntotal = {{st\'{l}pec}{st\'{l}p\adddot}},
+ columntotals = {{st\'{l}pce}{st\'{l}p\adddot}},
+ linetotal = {{riadok}{r\adddot}},
+ linetotals = {{riadky}{r\adddot}},
+ versetotal = {{ver\v{s}}{v\adddot}},
+ versetotals = {{ver\v{s}e}{v\adddot}},
+ sectiontotal = {{sekcia}{\S}},
+ sectiontotals = {{sekcie}{\S\S}},
+ paragraphtotal = {{odsek}{ods\adddot}},
+ paragraphtotals = {{odseky}{ods\adddot}},
+ in = {{in}{in}},
+ inseries = {{in}{in}},
+ ofseries = {{z}{z}},
+ number = {{\v{c}\'{\i}slo}{\v{c}\adddot}},
+ chapter = {{kapitola}{kap\adddot}},
+ bathesis = {{bakal\'{a}rska pr\'{a}ca}{bak\adddotspace pr\adddot}},
+ mathesis = {{diplomov\'{a} pr\'{a}ca}{dipl\adddotspace pr\adddot}},
+ phdthesis = {{dizerta\v{c}n\'{a} pr\'{a}ca}{diz\adddotspace pr\adddot}},
+ candthesis = {{kandid\'{a}tska pr\'{a}ca}{kand\adddotspace pr\adddot}},% FIXME: unsure
+ resreport = {{v\'{y}skumn\'{a} spr\'{a}va}{v\'{y}sk\adddot\ spr\adddot}},
+ techreport = {{technick\'{a} spr\'{a}va}{tech\adddotspace spr\adddot}},
+ software = {{po\v{c}\'{\i}ta\v{c}ov\'{y} softv\'{e}r}{soft\adddot}},
+ datacd = {{CD-ROM}{CD-ROM}},
+ audiocd = {{audio CD}{audio CD}},
+ version = {{verzia}{ver\adddot}},
+ url = {{URL}{URL}},
+ urlfrom = {{dostupn\'{e} z\addnbspace}{dostupn\'{e} z\addnbspace}},
+ urlseen = {{citovan\'{e}}{cit\adddot}},
+ inpreparation = {{v\addnbspace pr\'{\i}prave}{v\addnbspace pr\'{\i}prave}},
+ submitted = {{odoslan\'{e}}{odosl\adddot}},
+ forthcoming = {{bud\'{u}ce}{bud\adddot}},
+ inpress = {{v\addnbspace tla\v{c}i}{v\addnbspace tla\v{c}i}},
+ prepublished = {{pred publikovan\'{\i}m}{pred publ\adddot}},
+ citedas = {{\v{d}alej citovan\'{e} ako}{\v{d}alej cit\adddotspace ako}},
+ thiscite = {{obzvl\'{a}\v{s}\v{t}}{obzvl\adddot}},
+ seenote = {{vi\v{d} pozn\'{a}mka}{vi\v{d} pozn\adddot}},
+ quotedin = {{citovan\'{e} v\addnbspace}{cit\adddotspace v\addnbspace}},
+ idem = {{idem}{idem}},
+ idemsm = {{idem}{idem}},
+ idemsf = {{eadem}{eadem}},
+ idemsn = {{idem}{idem}},
+ idempm = {{eidem}{eidem}},
+ idempf = {{eaedem}{eaedem}},
+ idempn = {{eadem}{eadem}},
+ idempp = {{eidem}{eidem}},
+ ibidem = {{ibidem}{ibid\adddot}},
+ opcit = {{op\adddotspace cit\adddot}{op\adddotspace cit\adddot}},
+ loccit = {{loc\adddotspace cit\adddot}{loc\adddotspace cit\adddot}},
+ confer = {{cf\adddot}{cf\adddot}},
+ sequens = {{sq\adddot}{sq\adddot}},
+ sequentes = {{sqq\adddot}{sqq\adddot}},
+ passim = {{passim}{pass\adddot}},
+ see = {{vi\v{d}}{vi\v{d}}},
+ seealso = {{vi\v{d} tie\v{z}}{vi\v{d} tie\v{z}}},
+ backrefpage = {{citovan\'{e} na strane}{cit\adddotspace na str\adddot}},
+ backrefpages = {{citovan\'{e} na stran\'{a}ch}{cit\adddotspace na s\adddot}},
+ january = {{janu\'{a}r}{jan\adddot}},
+ february = {{febru\'{a}r}{feb\adddot}},
+ march = {{marec}{mar\adddot}},
+ april = {{apr\'{\i}l}{apr\adddot}},
+ may = {{m\'{a}j}{m\'{a}j}},
+ june = {{j\'{u}n}{j\'{u}n}},
+ july = {{j\'{u}l}{j\'{u}l}},
+ august = {{august}{aug\adddot}},
+ september = {{september}{sept\adddot}},
+ october = {{okt\'{o}ber}{okt\adddot}},
+ november = {{november}{nov\adddot}},
+ december = {{december}{dec\adddot}},
+ langamerican = {{americk\'{a} angli\v{c}tina}{am\adddot\ angl\adddot}},
+ langbrazilian = {{braz\'{\i}lska portugal\v{c}ina}{braz\adddot\ portugal\adddot}},
+ langbulgarian = {{bulhar\v{c}ina}{bulh\adddot}},
+ langcatalan = {{katal\'{a}n\v{c}ina}{katal\adddot}},
+ langcroatian = {{chorv\'{a}t\v{c}ina}{chorv\adddot}},
+ langczech = {{\v{c}e\v{s}tina}{\v{c}e\v{s}tina}},
+ langdanish = {{d\'{a}n\v{c}ina}{d\'{a}n\adddot}},
+ langdutch = {{holand\v{c}ina}{hol\adddot}},
+ langenglish = {{angli\v{c}tina}{angl\adddot}},
+ langestonian = {{est\'{o}n\v{c}ina}{est\adddot}},
+ langfinnish = {{f\'{\i}n\v{c}ina}{f\'{\i}n\adddot}},
+ langfrench = {{franc\'{u}z\v{s}tina}{franc\adddot}},
+ langgalician = {{gal\'{\i}cij\v{c}ina}{gal\adddot}},
+ langgerman = {{nem\v{c}ina}{nem\adddot}},
+ langgreek = {{gr\'{e}\v{c}tina}{gr\'{e}\v{c}tina}},
+ langhungarian = {{ma\v{d}ar\v{c}ina}{ma\v{d}\adddot}},
+ langitalian = {{talian\v{c}ina}{tal\adddot}},
+ langjapanese = {{japon\v{c}ina}{jap\adddot}},
+ langlatin = {{latin\v{c}ina}{lat\adddot}},
+ langlatvian = {{loty\v{s}tina}{lot\adddot}},
+ langnorwegian = {{n\'{o}r\v{c}ina}{n\'{o}r\adddot}},
+ langpolish = {{po\v{l}\v{s}tina}{po\v{l}\adddot}},
+ langportuguese = {{portugal\v{c}ina}{port\adddot}},
+ langrussian = {{ru\v{s}tina}{ru\v{s}tina}},
+ langserbian = {{srb\v{c}ina}{srb\adddot}},
+ langslovak = {{sloven\v{c}ina}{sloven\v{c}ina}},
+ langslovene = {{slovin\v{c}ina}{slovin\v{c}ina}},
+ langspanish = {{\v{s}paniel\v{c}ina}{\v{s}pan\adddot}},
+ langswedish = {{\v{s}v\'{e}d\v{c}ina}{\v{s}v\'{e}d\adddot}},
+ langukrainian = {{ukrajin\v{c}ina}{ukr\adddot}},
+ fromamerican = {{z\addnbspace americkej angli\v{c}tiny}{z\addnbspace amer\adddot\ angl\adddot}},
+ frombrazilian = {{z\addnbspace braz\'{\i}lskej portugal\v{c}iny}{z\addnbspace braz\adddotspace portugal\adddot}},
+ frombulgarian = {{z\addnbspace bulhar\v{c}iny}{z\addnbspace bulh\adddot}},
+ fromcatalan = {{z\addnbspace katal\'{a}n\v{c}iny}{z\addnbspace katal\adddot}},
+ fromcroatian = {{z\addnbspace chorvat\v{c}iny}{z\addnbspace chorv\adddot}},
+ fromczech = {{z\addnbspace \v{c}e\v{s}tiny}{z\addnbspace \v{c}e\v{s}tiny}},
+ fromdanish = {{z\addnbspace d\'{a}n\v{c}iny}{z\addnbspace d\'{a}n\adddot}},
+ fromdutch = {{z\addnbspace holand\v{c}iny}{z\addnbspace hol\adddot}},
+ fromenglish = {{z\addnbspace angli\v{c}tiny}{z\addnbspace angl\adddot}},
+ fromestonian = {{z\addnbspace est\'{o}n\v{c}iny}{z\addnbspace est\adddot}},
+ fromfinnish = {{z\addnbspace f\'{\i}n\v{c}iny}{z\addnbspace f\'{\i}n\adddot}},
+ fromfrench = {{z\addnbspace franc\'{u}z\v{s}tiny}{z\addnbspace franc\adddot}},
+ fromgalician = {{z\addnbspace gal\'{\i}cij\v{c}ina}{z\addbnspace gal\adddot}},
+ fromgerman = {{z\addnbspace nem\v{c}iny}{z\addnbspace nem\adddot}},
+ fromgreek = {{z\addnbspace gr\'{e}\v{c}tiny}{z\addnbspace gr\'{e}\v{c}tiny}},
+ fromhungarian = {{z\addnbspace ma\v{d}ar\v{c}iny}{z\addnbspace ma\v{d}\adddot}},
+ fromitalian = {{z\addnbspace talian\v{c}iny}{z\addnbspace tal\adddot}},
+ fromjapanese = {{z\addnbspace japon\v{c}iny}{z\addnbspace jap\adddot}},
+ fromlatin = {{z\addnbspace latin\v{c}iny}{z\addnbspace lat\adddot}},
+ fromlatvian = {{z\addnbspace loty\v{s}tiny}{z\addnbspace lot\adddot}},
+ fromnorwegian = {{z\addnbspace n\'{o}r\v{c}iny}{z\addnbspace n\'{o}r\adddot}},
+ frompolish = {{z\addnbspace po\v{l}\v{s}tiny}{z\addnbspace po\v{l}\adddot}},
+ fromportuguese = {{z\addnbspace portugal\v{c}iny}{z\addnbspace portugal\adddot}},
+ fromrussian = {{z\addnbspace ru\v{s}tiny}{z\addnbspace ru\v{s}tiny}},
+ fromserbian = {{zo srb\v{c}iny}{zo srb\adddot}},
+ fromslovak = {{zo sloven\v{c}iny}{zo sloven\v{c}iny}},
+ fromslovene = {{zo slovin\v{c}iny}{zo slovin\v{c}iny}},
+ fromspanish = {{zo \v{s}paniel\v{c}iny}{zo \v{s}pan\adddot}},
+ fromswedish = {{zo \v{s}v\'{e}d\v{c}iny}{zo \v{s}v\'{e}d\adddot}},
+ fromukrainian = {{z\addnbspace ukrajin\v{c}iny}{z\addnbspace ukr\adddot}},
+ countryde = {{Nemecko}{DE}},
+ countryeu = {{Eur\'{o}pska \'{u}nia}{EU}},
+ countryep = {{Eur\'{o}pska \'{u}nia}{EP}},
+ countryfr = {{Franc\'{u}zsko}{FR}},
+ countryuk = {{Ve\v{l}k\'{a} Brit\'{a}nia}{GB}},
+ countryus = {{Spojen\'{e} \v{s}t\'{a}ty americk\'{e}}{US}},
+ patent = {{patent}{pat\adddot}},
+ patentde = {{nemeck\'{y} patent}{nem\adddot\ pat\adddot}},
+ patenteu = {{eur\'{o}psky patent}{eur\adddot\ pat\adddot}},
+ patentfr = {{franc\'{u}zsky patent}{franc\adddot\ pat\adddot}},
+ patentuk = {{britsk\'{y} patent}{brit\adddot\ pat\adddot}},
+ patentus = {{US patent}{US pat\adddot}},
+ patreq = {{patentov\'{a} \v{z}iados\v{t}}{pat\adddot\ \v{z}iad\adddot}},
+ patreqde = {{nemeck\'{a} patentov\'{a} \v{z}iados\v{t}}{nem\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patreqeu = {{eur\'{o}pska patentov\'{a} \v{z}iados\v{t}}{eur\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patreqfr = {{franc\'{u}zska patentov\'{a} \v{z}iados\v{t}}{franc\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patrequk = {{britsk\'{a} patentov\'{a} \v{z}iados\v{t}}{brit\adddot\ pat\adddot\ \v{z}iad\adddot}},
+ patrequs = {{US patentov\'{a} \v{z}iados\v{t}}{US pat\adddot\ \v{z}iad\adddot}},
+ file = {{s\'{u}bor}{s\'{u}b\adddot}},
+ library = {{kni\v{z}nica}{kni\v{z}nica}},
+ abstract = {{abstrakt}{abst\adddot}},
+ annotation = {{anot\'{a}cia}{anot\adddot}},
+ commonera = {{n\'{a}\v{s}ho letopo\v{c}tu}{n\adddotspace l\adddot}},
+ beforecommonera = {{pred na\v{s}\'{\i}m letopo\v{c}tom}{pred n\adddotspace l\adddot}},
+ annodomini = {{po Kristovi}{po Kr\adddot}},
+ beforechrist = {{pred Kristom}{pred Kr\adddot}},
+ circa = {{cirka}{ca\adddot}},
+ spring = {{jar}{jar}},
+ summer = {{leto}{leto}},
+ autumn = {{jese\v{n}}{jese\v{n}}},
+ winter = {{zima}{zima}},
am = {{AM}{AM}},
pm = {{PM}{PM}},
}
diff --git a/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx b/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx
index 225361ed45..d1c1df5f41 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/slovene.lbx
@@ -40,13 +40,17 @@
\def\mkbibordedition{\mkbibordinal}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx b/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx
index 3326fe55d2..9f07124a8d 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/spanish.lbx
@@ -53,13 +53,17 @@
\def\mkbibordedition{\mkbibfemord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
diff --git a/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx b/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx
index d0b3cf1747..2ac4fb301b 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/swedish.lbx
@@ -77,13 +77,17 @@
Swedish dates. Using format 'short' instead}%
\mkdaterangefull{short}}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%
@@ -332,7 +336,7 @@
origpubin = {{ursprungligen publicerad}{ursprungligen publ\adddot}},
astitle = {{som}{som}},
bypublisher = {{av}{av}},
- nodate = {{u\adddot d\adddot}{n\adddot d\adddot}},%FIXME
+ nodate = {{u\adddot\,\aa \adddot}{u\adddot\,\aa \adddot}},
page = {{sidan}{s\adddot}},
pages = {{sidorna}{s\adddot}},
column = {{spalt}{sp\adddot}},
diff --git a/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx b/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx
new file mode 100644
index 0000000000..ad999c180e
--- /dev/null
+++ b/macros/latex/contrib/biblatex/latex/lbx/turkish.lbx
@@ -0,0 +1,552 @@
+\ProvidesFile{turkish.lbx}
+[\abx@lbxid]
+
+\DeclareRedundantLanguages{turkish}{turkish}
+
+\DeclareBibliographyExtras{%
+ \DeclareCapitalPunctuation{.!?}%
+ \protected\def\bibrangedash{%
+ \textendash\penalty\hyphenpenalty}% breakable dash
+ \let\finalandcomma=\empty
+ \let\finalandsemicolon=\empty
+ \protected\def\mkbibordinal#1{\stripzeros{#1}\adddot}%
+ \protected\def\mkbibmascord{\mkbibordinal}%
+ \protected\def\mkbibfemord{\mkbibordinal}%
+ \protected\def\mkbibneutord{\mkbibordinal}%
+ \protected\def\mkbibdatelong#1#2#3{%
+ \iffieldundef{#3}
+ {}
+ {\thefield{#3}%
+ \iffieldundef{#2}{}{\nobreakspace}}%
+ \iffieldundef{#2}
+ {}
+ {\mkbibmonth{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}}%
+ \iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}}%
+ \protected\def\mkbibdateshort#1#2#3{%
+ \iffieldundef{#3}
+ {}
+ {\mkdayzeros{\thefield{#3}}%
+ \iffieldundef{#2}{}{/}}%
+ \iffieldundef{#2}
+ {}
+ {\mkmonthzeros{\thefield{#2}}%
+ \iffieldundef{#1}{}{/}}%
+ \iffieldbibstring{#1}
+ {\bibstring{\thefield{#1}}}
+ {\dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}}%
+ \expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
+ \iffieldundef{#4}{}
+ {\bibtimezonesep
+ \mkbibtimezone{\thefield{#4}}}}%
+ \expandafter\protected\expandafter\def\csname mkbibtime12h\endcsname#1#2#3#4{%
+ \stripzeros{\mktimehh{\thefield{#1}}}\bibtimesep
+ \forcezerosmdt{\thefield{#2}}%
+ \iffieldundef{#3}{}
+ {\bibtimesep
+ \forcezerosmdt{\thefield{#3}}}%
+ \space
+ \ifnumless{\thefield{#1}}{12}
+ {\bibstring{am}}
+ {\bibstring{pm}}%
+ \iffieldundef{#4}{}
+ {\space\bibtimezonesep
+ \parentext{\mkbibtimezone{\thefield{#4}}}}}%
+ \protected\def\mkbibseasondateshort#1#2{%
+ \mkbibseason{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}%
+ \protected\def\mkbibseasondatelong#1#2{%
+ \mkbibseason{\thefield{#2}}%
+ \iffieldundef{#1}{}{\space}%
+ \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}%
+ \savecommand\lbx@lfromlang
+ \savecommand\lbx@sfromlang
+ \def\lbx@lfromlang{%
+ \iflistundef{origlanguage}
+ {}
+ {\printlist[lfromoriglanguage]{origlanguage}\space}}%
+ \def\lbx@sfromlang{%
+ \iflistundef{origlanguage}
+ {}
+ {\printlist[sfromoriglanguage]{origlanguage}\space}}%
+}
+
+\UndeclareBibliographyExtras{%
+ \restorecommand\lbx@lfromlang
+ \restorecommand\lbx@sfromlang
+}
+
+\DeclareBibliographyStrings{%
+ bibliography = {{Kaynak\c{c}a}{Kaynak\c{c}a}},
+ references = {{Kaynaklar}{Kaynaklar}},
+ shorthands = {{K\i saltmalar dizini}{K\i saltmalar}},
+ editor = {{edit\"{o}r}{ed\adddot}},
+ editors = {{edit\"{o}rler}{ed\adddot}},
+ compiler = {{derleyen}{der\adddot}},
+ compilers = {{derleyenler}{der\adddot}},
+ redactor = {{yay\i na haz\i rlayan}{yay\adddot\ haz\adddot}},
+ redactors = {{yay\i na haz\i rlayanlar}{yay\adddot\ haz\adddot}},
+ reviser = {{tashih eden}{tashih\adddot}},
+ revisers = {{tashih edenler}{tashih\adddot}},
+ founder = {{kurucu}{kur\adddot}},
+ founders = {{kurucular}{kur\adddot}},
+ continuator = {{tamamlayan}{tam\adddot}},
+ continuators = {{tamamlayanlar}{tam\adddot}},
+ collaborator = {{ortak}{ortak}},
+ collaborators = {{ortaklar}{ortaklar}},
+ translator = {{\c{c}eviren}{\c{c}ev\adddot}},
+ translators = {{\c{c}evirenler}{\c{c}ev\adddot}},
+ commentator = {{yorumlayan}{yrm\adddot}},
+ commentators = {{yorumlayanlar}{yrm\adddot}},
+ annotator = {{a\c{c}\i klayan}{a\c{c}\i k\adddot}},
+ annotators = {{a\c{c}\i klayanlar}{a\c{c}\i k\adddot}},
+ commentary = {{yorum}{yrm\adddot}},
+ annotations = {{a\c{c}\i klamalar}{a\c{c}\i k\adddot}},
+ introduction = {{giri\c{s}}{gir\adddot}},
+ foreword = {{\"{o}ns\"{o}z}{\"{o}ns\adddot}},
+ afterword = {{sons\"{o}z}{sons\adddot}},
+ editortr = {{edit\"{o}r ve \c{c}eviren}%
+ {ed\adddot\ ve \c{c}ev\adddot}},
+ editorstr = {{edit\"{o}rler ve \c{c}evirenler}%
+ {ed\adddot\ ve \c{c}ev\adddot}},
+ editorco = {{edit\"{o}r ve yorumlayan}%
+ {ed\adddot\ ve yrm\adddot}},
+ editorsco = {{edit\"{o}rler ve yorumlayanlar}%
+ {ed\adddot\ ve yrm\adddot}},
+ editoran = {{edit\"{o}r ve a\c{c}\i klayan}%
+ {ed\adddot\ ve a\c{c}\i k\adddot}},
+ editorsan = {{edit\"{o}rler ve a\c{c}\i klayanlar}%
+ {ed\adddot\ ve a\c{c}\i k\adddot}},
+ editorin = {{edit\"{o}r ve giri\c{s}}%
+ {ed\adddot\ ve gir\adddot}},
+ editorsin = {{edit\"{o}rler ve giri\c{s}}%
+ {ed\adddot\ ve gir\adddot}},
+ editorfo = {{edit\"{o}r ve \"{o}ns\"{o}z}%
+ {ed\adddot\ ve \"{o}ns\adddot}},
+ editorsfo = {{edit\"{o}rler ve \"{o}ns\"{o}z}%
+ {ed\adddot\ ve \"{o}ns\adddot}},
+ editoraf = {{edit\"{o}r ve sons\"{o}z}%
+ {ed\adddot\ ve sons\adddot}},
+ editorsaf = {{edit\"{o}rler ve sons\"{o}z}%
+ {ed\adddot\ ve sons\adddot}},
+ editortrco = {{edit\"{o}r, \c{c}eviren and yorumlayan}%
+ {ed\adddot, \c{c}ev\adddot\ ve yrm\adddot}},
+ editorstrco = {{edit\"{o}rler, \c{c}evirenler ve yorumlayanlar}%
+ {ed\adddot, \c{c}ev\adddot\ ve yrm\adddot}},
+ editortran = {{edit\"{o}r, \c{c}eviren ve a\c{c}\i klayan}%
+ {ed\adddot, \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+ editorstran = {{edit\"{o}rler, \c{c}evirenler ve a\c{c}\i klayanlar}%
+ {ed\adddot, \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+ editortrin = {{edit\"{o}r, \c{c}eviren ve giri\c{s}}%
+ {ed\adddot, \c{c}ev\adddot\ ve gir\adddot}},
+ editorstrin = {{edit\"{o}rler, \c{c}evirenler ve giri\c{s}}%
+ {ed\adddot, \c{c}ev\adddot\ ve gir\adddot}},
+ editortrfo = {{edit\"{o}r, \c{c}eviren ve \"{o}ns\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+ editorstrfo = {{edit\"{o}rler, \c{c}evirenler ve \"{o}ns\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+ editortraf = {{edit\"{o}r, \c{c}eviren ve sons\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot\ ve sons\adddot}},
+ editorstraf = {{edit\"{o}rler, \c{c}evirenler ve sons\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot\ ve sons\adddot}},
+ editorcoin = {{edit\"{o}r, yorumlayan ve giri\c{s}}%
+ {ed\adddot, yrm\adddot\ ve gir\adddot}},
+ editorscoin = {{edit\"{o}rler, yorumlayanlar ve giri\c{s}}%
+ {ed\adddot, yrm\adddot\ ve gir\adddot}},
+ editorcofo = {{edit\"{o}r, yorumlayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ editorscofo = {{edit\"{o}rler, yorumlayanlar ve \"{o}ns\"{o}z}%
+ {ed\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ editorcoaf = {{edit\"{o}r, yorumlayan ve sons\"{o}z}%
+ {ed\adddot, yrm\adddot\ ve sons\adddot}},
+ editorscoaf = {{edit\"{o}rler, yorumlayanlar ve sons\"{o}z}%
+ {ed\adddot, yrm\adddot\ ve sons\adddot}},
+ editoranin = {{edit\"{o}r, a\c{c}\i klayan ve giri\c{s}}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ editorsanin = {{edit\"{o}rler, a\c{c}\i klayanlar ve giri\c{s}}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ editoranfo = {{edit\"{o}r, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ editorsanfo = {{edit\"{o}rler, a\c{c}\i klayanlar ve \"{o}ns\"{o}z}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ editoranaf = {{edit\"{o}r, a\c{c}\i klayan ve sons\"{o}z}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ editorsanaf = {{edit\"{o}rler, a\c{c}\i klayanlar ve sons\"{o}z}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ editortrcoin = {{edit\"{o}r, \c{c}eviren, yorumlayan ve giri\c{s}}%
+ {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+ editorstrcoin = {{edit\"{o}rler, \c{c}evirenler, yorumlayanlar ve giri\c{s}}%
+ {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+ editortrcofo = {{edit\"{o}r, \c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ editorstrcofo = {{edit\"{o}rler, \c{c}evirenler, yorumlayanlar ve \"{o}ns\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ editortrcoaf = {{edit\"{o}r, \c{c}eviren, yorumlayan ve sons\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+ editorstrcoaf = {{edit\"{o}rler, \c{c}evirenler, yorumlayanlar ve sons\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+ editortranin = {{edit\"{o}r, \c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+ {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ editorstranin = {{edit\"{o}rler, \c{c}evirenler, a\c{c}\i klayanlar ve giri\c{s}}%
+ {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ editortranfo = {{edit\"{o}r, \c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ editorstranfo = {{edit\"{o}rler, \c{c}evirenler, a\c{c}\i klayanlar ve \"{o}ns\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ editortranaf = {{edit\"{o}r, \c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ editorstranaf = {{edit\"{o}rler, \c{c}evirenler, a\c{c}\i klayanlar ve sons\"{o}z}%
+ {ed\adddot, \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ translatorco = {{\c{c}eviren ve yorumlayan}%
+ {\c{c}ev\adddot\ ve yrm\adddot}},
+ translatorsco = {{\c{c}evirenler ve yorumlayanlar}%
+ {\c{c}ev\adddot\ ve yrm\adddot}},
+ translatoran = {{\c{c}eviren ve a\c{c}\i klayan}%
+ {\c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+ translatorsan = {{\c{c}evirenler ve a\c{c}\i klayanlar}%
+ {\c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+ translatorin = {{\c{c}eviren ve giri\c{s}}%
+ {\c{c}ev\adddot\ ve gir\adddot}},
+ translatorsin = {{\c{c}evirenler ve giri\c{s}}%
+ {\c{c}ev\adddot\ ve gir\adddot}},
+ translatorfo = {{\c{c}eviren ve \"{o}ns\"{o}z}%
+ {\c{c}ev\adddot\ ve \"{o}ns\adddot}},
+ translatorsfo = {{\c{c}evirenler ve \"{o}ns\"{o}z}%
+ {\c{c}ev\adddot\ ve \"{o}ns\adddot}},
+ translatoraf = {{\c{c}eviren ve sons\"{o}z}%
+ {\c{c}ev\adddot\ ve sons\adddot}},
+ translatorsaf = {{\c{c}evirenler ve sons\"{o}z}%
+ {\c{c}ev\adddot\ ve sons\adddot}},
+ translatorcoin = {{\c{c}eviren, yorumlayan ve giri\c{s}}%
+ {\c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+ translatorscoin = {{\c{c}evirenler, yorumlayanlar ve giri\c{s}}%
+ {\c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+ translatorcofo = {{\c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+ {\c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ translatorscofo = {{\c{c}evirenler, yorumlayanlar ve \"{o}ns\"{o}z}%
+ {\c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ translatorcoaf = {{\c{c}eviren, yorumlayan ve sons\"{o}z}%
+ {\c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+ translatorscoaf = {{\c{c}evirenler, yorumlayanlar ve sons\"{o}z}%
+ {\c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+ translatoranin = {{\c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+ {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ translatorsanin = {{\c{c}evirenler, a\c{c}\i klayanlar ve giri\c{s}}%
+ {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ translatoranfo = {{\c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+ {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ translatorsanfo = {{\c{c}evirenler, a\c{c}\i klayanlar ve \"{o}ns\"{o}z}%
+ {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ translatoranaf = {{\c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+ {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ translatorsanaf = {{\c{c}evirenler, a\c{c}\i klayanlar ve sons\"{o}z}%
+ {\c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ organizer = {{organizat\"{o}r}{org\adddot}},
+ organizers = {{organizat\"{o}rler}{org\adddot}},
+ byorganizer = {{organizat\"{o}r}{org\adddot}},
+ byauthor = {{yazar}{yazar}},
+ byeditor = {{edit\"{o}r}{ed\adddot}},
+ bycompiler = {{derleyen}{der\adddot}},
+ byredactor = {{yay\i na haz\i rlayan}{yay\adddot\ haz\adddot}},
+ byreviser = {{tashih}{tashih}},
+ byreviewer = {{de\u{g}erlendiren}{de\u{g}\adddot}},
+ byfounder = {{kurucu}{kur\adddot}},
+ bycontinuator = {{tamamlayan}{tam\adddot}},
+ bycollaborator = {{ortakla\c{s}a yapanlar}{ortak\adddot\ yap\adddot}},
+ bytranslator = {{\lbx@lfromlang \c{c}eviren}{\lbx@sfromlang \c{c}ev\adddot}},
+ bycommentator = {{yorumlayan}{yrm\adddot}},
+ byannotator = {{a\c{c}\i klayan}{a\c{c}\i k\adddot}},
+ withcommentator = {{yorumlar\i yla katk\i da bulunan}{yrm\adddot\ kat\adddot\ bul\adddot}},
+ withannotator = {{a\c{c}\i klamalar\i yla katk\i da bulunan}{a\c{c}\i k\adddot\ kat\adddot\ bul\adddot}},
+ withintroduction = {{giri\c{si yazan}}{gir\adddot\ yaz\adddot}},
+ withforeword = {{\"{o}ns\"{o}z\"{u} yazan}{\"{o}ns\adddot\ yaz\adddot}},%
+ withafterword = {{sons\"{o}z\"{u} yazan}{sons\adddot\ yaz\adddot}},
+ byeditortr = {{edit\"{o}r ve \lbx@lfromlang \c{c}eviren}%
+ {ed\adddot\ ve \lbx@sfromlang \c{c}ev\adddot}},
+ byeditorco = {{edit\"{o}r ve yorumlayan}%
+ {ed\adddot\ ve yrm\adddot}},
+ byeditoran = {{edit\"{o}r ve a\c{c}\i klayan}%
+ {ed\adddot\ ve a\c{c}\i k\adddot}},
+ byeditorin = {{edit\"{o}r ve giri\c{s}}%
+ {ed\adddot\ ve gir\adddot}},
+ byeditorfo = {{edit\"{o}r ve \"{o}ns\"{o}z}%
+ {ed\adddot\ ve \"{o}ns\adddot}},
+ byeditoraf = {{edit\"{o}r ve sons\"{o}z}%
+ {ed\adddot\ ve sons\adddot}},
+ byeditortrco = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren ve yorumlayan}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot\ ve yrm\adddot}},
+ byeditortran = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren ve a\c{c}\i klayan}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+ byeditortrin = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren ve giri\c{s}}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot\ ve gir\adddot}},
+ byeditortrfo = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren ve \"{o}ns\"{o}z}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+ byeditortraf = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren ve sons\"{o}z}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot\ ve sons\adddot}},
+ byeditorcoin = {{edit\"{o}r, yorumlayan ve giri\c{s}}%
+ {ed\adddot, yrm\adddot\ ve gir\adddot}},
+ byeditorcofo = {{edit\"{o}r, yorumlayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ byeditorcoaf = {{edit\"{o}r, yorumlayan ve sons\"{o}z}%
+ {ed\adddot, yrm\adddot\ ve sons\adddot}},
+ byeditoranin = {{edit\"{o}r, a\c{c}\i klayan ve giri\c{s}}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ byeditoranfo = {{edit\"{o}r, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ byeditoranaf = {{edit\"{o}r, a\c{c}\i klayan ve sons\"{o}z}%
+ {ed\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ byeditortrcoin = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren, yorumlayan ve giri\c{s}}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+ byeditortrcofo = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ byeditortrcoaf = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren, yorumlayan ve sons\"{o}z}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+ byeditortranin = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ byeditortranfo = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ byeditortranaf = {{edit\"{o}r, \lbx@lfromlang \c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+ {ed\adddot, \lbx@sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ bytranslatorco = {{\lbx@lfromlang \c{c}eviren ve yorumlayan}%
+ {\lbx@sfromlang \c{c}ev\adddot\ ve yrm\adddot}},
+ bytranslatoran = {{\lbx@lfromlang \c{c}eviren ve a\c{c}\i klayan}%
+ {\lbx@sfromlang \c{c}ev\adddot\ ve a\c{c}\i k\adddot}},
+ bytranslatorin = {{\lbx@lfromlang \c{c}eviren ve giri\c{s}}%
+ {\lbx@sfromlang \c{c}ev\adddot\ ve gir\adddot}},
+ bytranslatorfo = {{\lbx@lfromlang \c{c}eviren ve \"{o}ns\"{o}z}%
+ {\lbx@sfromlang \c{c}ev\adddot\ ve \"{o}ns\adddot}},
+ bytranslatoraf = {{\lbx@lfromlang \c{c}eviren ve sons\"{o}z}%
+ {\lbx@sfromlang \c{c}ev\adddot\ ve sons\adddot}},
+ bytranslatorcoin = {{\lbx@lfromlang \c{c}eviren, yorumlayan ve giri\c{s}}%
+ {\lbx@sfromlang \c{c}ev\adddot, yrm\adddot\ ve gir\adddot}},
+ bytranslatorcofo = {{\lbx@lfromlang \c{c}eviren, yorumlayan ve \"{o}ns\"{o}z}%
+ {\lbx@sfromlang \c{c}ev\adddot, yrm\adddot\ ve \"{o}ns\adddot}},
+ bytranslatorcoaf = {{\lbx@lfromlang \c{c}eviren, yorumlayan ve sons\"{o}z}%
+ {\lbx@sfromlang \c{c}ev\adddot, yrm\adddot\ ve sons\adddot}},
+ bytranslatoranin = {{\lbx@lfromlang \c{c}eviren, a\c{c}\i klayan ve giri\c{s}}%
+ {\lbx@sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve gir\adddot}},
+ bytranslatoranfo = {{\lbx@lfromlang \c{c}eviren, a\c{c}\i klayan ve \"{o}ns\"{o}z}%
+ {\lbx@sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve \"{o}ns\adddot}},
+ bytranslatoranaf = {{\lbx@lfromlang \c{c}eviren, a\c{c}\i klayan ve sons\"{o}z}%
+ {\lbx@sfromlang \c{c}ev\adddot, a\c{c}\i k\adddot\ ve sons\adddot}},
+ and = {{ve}{ve}},
+ andothers = {{ve di\u{g}erleri}{ve di\u{g}\adddot}},
+ andmore = {{ve di\u{g}erleri}{ve di\u{g}\adddot}},
+ volume = {{cilt}{c\adddot}},
+ volumes = {{cilt}{c\adddot}},
+ involumes = {{i\c{c}inde}{i\c{c}inde}},
+ jourvol = {{cilt}{c\adddot}},
+ jourser = {{seri}{seri}},
+ book = {{kitap}{kitap}},
+ part = {{k\i s\i m}{k\i s\i m}},
+ issue = {{say\i}{say\i}},
+ newseries = {{yeni seri}{yeni seri}},
+ oldseries = {{eski seri}{eski seri}},
+ edition = {{bask\i}{bs\adddot}},
+ reprint = {{yeni bask\i s\i}{yeni bask\i s\i}},
+ reprintof = {{yeni bask\i s\i}{yeni bask\i s\i}},
+ reprintas = {{yeni bask\i s\i}{yeni bask\i s\i}},
+ reprintfrom = {{yeni bask\i s\i}{yeni bask\i s\i}},
+ reviewof = {{derlenen eser}{der\adddot\ eser}},
+ translationof = {{\c{c}evirilen eser}{\c{c}ev\adddot\ eser}},
+ translationas = {{\c{c}evirilen eser}{\c{c}ev\adddot\ eser}},
+ translationfrom = {{\c{c}evirilen eser}{\c{c}ev\adddot\ eser}},
+ origpubas = {{as\i l eser}{as\i l eser}},
+ origpubin = {{as\i l eser yay\i n tarihi}{as\i l eser yay\i n tarihi}},
+ astitle = {{yeni ba\c{s}l\i k}{yeni ba\c{s}l\i k}},
+ bypublisher = {{yay\i n evi}{yay\i n evi}},
+ nodate = {{tarih yok}{t\adddot y\adddot}},
+ page = {{sayfa}{s\adddot}},
+ pages = {{sayfalar}{ss\adddot}},
+ column = {{s\"{u}tun}{s\"{u}t\adddot}},
+ columns = {{s\"{u}tunlar}{s\"{u}t\adddot}},
+ line = {{sat\i r}{sat\adddot}},
+ lines = {{sat\i rlar}{sat\adddot}},
+ verse = {{m\i sra}{m\i s\adddot}},
+ verses = {{m\i sralar}{m\i s\adddot}},
+ section = {{b\"{o}l\"{u}m}{b\"{o}l\adddot}},
+ sections = {{b\"{o}l\"{u}mler}{b\"{o}l\adddot}},
+ paragraph = {{paragraf}{par\adddot}},
+ paragraphs = {{paragraflar}{par\adddot}},
+ pagetotal = {{toplam sayfa}{s\adddot}},
+ pagetotals = {{toplam sayfalar}{ss\adddot}},
+ columntotal = {{toplam s\"{u}tun}{s\"{u}t\adddot}},
+ columntotals = {{toplam s\"{u}tunlar}{s\"{u}t\adddot}},
+ linetotal = {{toplam sat\i r}{sat\adddot}},
+ linetotals = {{toplam sat\i rlar}{sat\adddot}},
+ versetotal = {{toplam m\i sra}{m\i s\adddot}},
+ versetotals = {{toplam m\i sralar}{m\i s\adddot}},
+ sectiontotal = {{toplam b\"{o}l\"{u}m}{b\"{o}l\adddot}},
+ sectiontotals = {{toplam b\"{o}l\"{u}mler}{b\"{o}l\adddot}},
+ paragraphtotal = {{toplam paragraf}{par\adddot}},
+ paragraphtotals = {{toplam paragraflar}{par\adddot}},
+ in = {{i\c{c}inde}{i\c{c}inde}},
+ inseries = {{serilerde}{serilerde}},
+ ofseries = {{serilerde}{serilerde}},
+ number = {{numara}{no\adddot}},
+ chapter = {{b\"{o}l\"{u}m}{b\"{o}l\adddot}},
+ bathesis = {{lisans tezi}{lis\adddot\ tezi}},
+ mathesis = {{y\"{u}ksek lisans tezi}{y\"{u}k\adddot\ lis\adddot\ tezi}},
+ phdthesis = {{doktora tezi}{dok\adddot\ tezi}},
+ candthesis = {{aday tezi}{aday tezi}},
+ resreport = {{ara\c{s}t\i rma raporu}{ara\c{s}\adddot\ rap\adddot}},
+ techreport = {{teknik rapor}{tek\adddot\ rap\adddot}},
+ software = {{bilgisayar yaz\i l\i m\i}{bilg\adddot\ yaz\adddot}},
+ datacd = {{CD}{CD}},
+ audiocd = {{ses CD'si}{ses CD'si}},
+ version = {{versiyon}{ver\adddot}},
+ url = {{eri\c{s}im adresi}{eri\c{s}im adresi}},
+ urlfrom = {{eri\c{s}im adresi}{eri\c{s}im adresi}},
+ urlseen = {{eri\c{s}im tarihi}{eri\c{s}im tarihi}},
+ inpreparation = {{haz\i rl\i k a\c{s}amas\i nda}{haz\i rl\i k a\c{s}amas\i nda}},
+ submitted = {{g\"{o}nderilmi\c{s}tir}{g\"{o}nderilmi\c{s}tir}},
+ forthcoming = {{yak\i nda}{yak\i nda}},
+ inpress = {{bas\i m a\c{s}amas\i nda}{bas\i m a\c{s}amas\i nda}},
+ prepublished = {{taslak bas\i m\i}{taslak bas\i m\i}},
+ citedas = {{at\i f olarak}{at\i f olarak}},
+ thiscite = {{\"{o}zellikle}{\"{o}z\adddot\ bkz\adddot}},
+ seenote = {{nota bak\i n\i z}{nota bkz\adddot}},
+ quotedin = {{al\i nt\i}{al\i nt\i}},
+ idem = {{ayn\i}{ayn\i}},
+ idemsm = {{ayn\i}{ayn\i}},
+ idemsf = {{ayn\i}{ayn\i}},
+ idemsn = {{ayn\i}{ayn\i}},
+ idempm = {{ayn\i lar\i}{ayn\i lar\i}},
+ idempf = {{ayn\i lar\i}{ayn\i lar\i}},
+ idempn = {{ayn\i lar\i}{ayn\i lar\i}},
+ idempp = {{ayn\i lar\i}{ayn\i lar\i}},
+ ibidem = {{ayn{\i} yer}{ayn{\i} yer}},
+ opcit = {{at\i f yap\i lan \c{c}al\i\c{s}ma}{at\i f yap\adddot\ \c{c}al\adddot}},
+ loccit = {{at\i f yap\i lan yer}{at\i f yap\adddot\ yer}},
+ confer = {{kar\c{s}\i la\c{s}t\i r}{kar\c{s}\adddot}},
+ sequens = {{takip eden}{takip eden}},
+ sequentes = {{takip eden}{takip eden}},
+ passim = {{rastgele}{rastgele}},
+ see = {{bak\i n\i z}{bkz\adddot}},
+ seealso = {{ayr\i ca bak\i n\i z}{ayr\i ca bkz\adddot}},
+ backrefpage = {{sayfada g\"{o}sterilmi\c{s}tir}{say\adddot\ g\"{o}s\adddot}},
+ backrefpages = {{sayfalarda g\"{o}sterilmi\c{s}tir}{say\adddot\ g\"{o}s\adddot}},
+ january = {{Ocak}{Ocak}},
+ february = {{\c{S}ubat}{\c{S}ub\adddot}},
+ march = {{Mart}{Mar\adddot}},
+ april = {{Nisan}{Nis\adddot}},
+ may = {{May\i s}{May\adddot}},
+ june = {{Haziran}{Haz\adddot}},
+ july = {{Temmuz}{Tem\adddot}},
+ august = {{A\u{g}ustos}{A\u{g}us\adddot}},
+ september = {{Eyl\"{u}l}{Eyl\adddot}},
+ october = {{Ekim}{Ekim}},
+ november = {{Kas\i m}{Kas\adddot}},
+ december = {{Aral\i k}{Ara\adddot}},
+ langamerican = {{Amerikanca}{Amerikanca}},
+ langbrazilian = {{Brezilyanca}{Brezilyanca}},
+ langbulgarian = {{Bulgarca}{Bulgarca}},
+ langcatalan = {{Katalanca}{Katalanca}},
+ langcroatian = {{H\i rvat\c{c}a}{H\i rvat\c{c}a}},
+ langczech = {{\c{C}ek\c{c}e}{\c{C}ek\c{c}e}},
+ langdanish = {{Danimarkanca}{Danimarkanca}},
+ langdutch = {{Flemenk\c{c}e}{Flemenk\c{c}e}},
+ langenglish = {{\.{I}ngilizce}{\.{I}ngilizce}},
+ langestonian = {{Estonca}{Estonca}},
+ langfinnish = {{Fince}{Fince}},
+ langfrench = {{Frans\i zca}{Frans\i zca}},
+ langgalician = {{Galce}{Galce}},
+ langgerman = {{Almanca}{Almanca}},
+ langgreek = {{Yunanca}{Yunanca}},
+ langhungarian = {{Macarca}{Macarca}},
+ langitalian = {{\.{I}talyanca}{\.{I}talyanca}},
+ langjapanese = {{Japonca}{Japonca}},
+ langlatin = {{Latince}{Latince}},
+ langlatvian = {{Letonca}{Letonca}},
+ langlithuanian = {{Litvanca}{Litvanca}},
+ langnorwegian = {{Norve\c{c}\c{c}e}{Norve\c{c}\c{c}e}},
+ langpolish = {{Polonyaca}{Polonyaca}},
+ langportuguese = {{Portekizce}{Portekizce}},
+ langrussian = {{Rus\c{c}a}{Rus\c{c}a}},
+ langserbian = {{S\i rp\c{c}a}{S\i rp\c{c}a}},
+ langslovak = {{Slovak\c{c}a}{Slovak\c{c}a}},
+ langslovene = {{Slovence}{Slovence}},
+ langspanish = {{\.{I}spanyolca}{\.{I}spanyolca}},
+ langswedish = {{\.{I}sve\c{c}\c{c}e}{\.{I}sve\c{c}\c{c}e}},
+ langukrainian = {{Ukraynaca}{Ukraynaca}},
+ fromamerican = {{Amerikanca'dan}{Amerikanca'dan}},
+ frombrazilian = {{Brezilyanca'dan}{Brezilyanca'dan}},
+ frombulgarian = {{Bulgarca'dan}{Bulgarca'dan}},
+ fromcatalan = {{Katalanca'dan}{Katalanca'dan}},
+ fromcroatian = {{H\i rvat\c{c}a'dan}{H\i rvat\c{c}a'dan}},
+ fromczech = {{\c{C}ek\c{c}e'den}{\c{C}ek\c{c}e'den}},
+ fromdanish = {{Danimarkanca'dan}{Danimarkanca'dan}},
+ fromdutch = {{Flemenk\c{c}e'den}{Flemenk\c{c}e'den}},
+ fromenglish = {{\.{I}ngilizce'den}{\.{I}ngilizce'den}},
+ fromestonian = {{Estonyaca'dan}{Estonyaca'dan}},
+ fromfinnish = {{Fince'den}{Fince'den}},
+ fromfrench = {{Frans\i zca'dan}{Frans\i zca'dan}},
+ fromgalician = {{Galyaca'dan}{Galyaca'dan}},
+ fromgerman = {{Almanca'dan}{Almanca'dan}},
+ fromgreek = {{Yunanca'dan}{Yunanca'dan}},
+ fromhungarian = {{Macarca'dan}{Macarca'dan}},
+ fromitalian = {{\.{I}talyanca'dan}{\.{I}talyanca'dan}},
+ fromjapanese = {{Japonca'dan}{Japonca'dan}},
+ fromlatin = {{Latince'den}{Latince'den}},
+ fromlatvian = {{Latvianca'dan}{Latvianca'dan}},
+ fromlithuanian = {{Litvanca'dan}{Litvanca'dan}},
+ fromnorwegian = {{Norve\c{c}\c{c}e'den}{Norve\c{c}\c{c}e'den}},
+ frompolish = {{Polonyaca'dan}{Polonyaca'dan}},
+ fromportuguese = {{Portekizce'den}{Portekizce'den}},
+ fromrussian = {{Rus\c{c}a'dan}{Rus\c{c}a'dan}},
+ fromserbian = {{S\i rp\c{c}a'dan}{S\i rp\c{c}a'dan}},
+ fromslovak = {{Slovak\c{c}a'dan}{Slovak\c{c}a'dan}},
+ fromslovene = {{Slovence'den}{Slovence'den}},
+ fromspanish = {{\.{I}spanyolca'dan}{\.{I}spanyolca'dan}},
+ fromswedish = {{\.{I}sve\c{c}\c{c}e'den}{\.{I}sve\c{c}\c{c}e'den}},
+ fromukrainian = {{Ukraynaca'dan}{Ukraynaca'dan}},
+ countryde = {{Almanya}{DE}},
+ countryeu = {{Avrupa Birli\u{g}i}{AB}},
+ countryep = {{Avrupa Birli\u{g}i}{AB}},
+ countryfr = {{Fransa}{FR}},
+ countryuk = {{Birle\c{s}ik Krall\i k}{BK}},
+ countryus = {{Amerika Birle\c{s}ik Devletleri}{ABD}},
+ patent = {{patent}{pat\adddot}},
+ patentde = {{Alman patenti}{Alman pat\adddot}},
+ patenteu = {{Avrupa patenti}{Avrupa pat\adddot}},
+ patentfr = {{Frans\i z patenti}{Frans\i z pat\adddot}},
+ patentuk = {{\.{I}ngiliz patenti}{\.{I}ngiliz pat\adddot}},
+ patentus = {{Amerika patenti}{Amerika pat\adddot}},
+ patreq = {{patent beklemede}{pat\adddot\ bek\adddot}},
+ patreqde = {{Alman patenti beklemede}{Alman pat\adddot\ bek\adddot}},
+ patreqeu = {{Avrupa patenti beklemede}{Avrupa pat\adddot\ bek\adddot}},
+ patreqfr = {{Frans\i z patenti beklemede}{Frans\i z pat\adddot\ bek\adddot}},
+ patrequk = {{\.{I}ngiliz patenti beklemede}{\.{I}ngiliz pat\adddot\ bek\adddot}},
+ patrequs = {{Amerika patenti beklemede}{Amerika pat\adddot\ bek\adddot}},
+ file = {{dosya}{dosya}},
+ library = {{k\"{u}t\"{u}phane}{k\"{u}t\"{u}phane}},
+ abstract = {{\"{o}zet}{\"{o}zet}},
+ annotation = {{a\c{c}\i klama}{a\c{c}\i klama}},
+ commonera = {{milattan sonra}{MS}},
+ beforecommonera = {{milattan \"{o}nce}{M\"{O}}},
+ annodomini = {{milattan sonra}{MS}},
+ beforechrist = {{milattan \"{o}nce}{M\"{O}}},
+ circa = {{yakla\c{s}\i k olarak}{yak\adddot}},
+ spring = {{\.{I}lkbahar}{\.{I}lkbahar}},
+ summer = {{Yaz}{Yaz}},
+ autumn = {{Sonbahar}{Sonbahar}},
+ winter = {{K\i \c{s}}{K\i \c{s}}},
+ am = {{\"{o}\u{g}leden \"{o}nce}{\"{O}\"{O}}},
+ pm = {{\"{o}\u{g}leden sonra}{\"{O}S}},
+}
+
+\endinput
diff --git a/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx b/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx
index b5be8984c5..19b2a2e189 100644
--- a/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx
+++ b/macros/latex/contrib/biblatex/latex/lbx/ukrainian.lbx
@@ -70,13 +70,17 @@
\def\mkbibordedition{\mkbibneutord}%
\def\mkbibordseries{\mkbibfemord}%
\expandafter\protected\expandafter\def\csname mkbibtime24h\endcsname#1#2#3#4{%
- \iffieldundef{#1}{}
- {\printtext{\mktimezeros{\thefield{#1}}}\setunit{\bibtimesep}}%
- \iffieldundef{#2}{}
- {\printtext{\mktimezeros{\thefield{#2}}}\setunit{\bibtimesep}}%
- \iffieldundef{#3}{}
- {\printtext{\mktimezeros{\thefield{#3}}}}%
- \setunit{}%
+ \iffieldundef{#1}
+ {}
+ {\mktimezeros{\thefield{#1}}%
+ \iffieldundef{#2}{}{\bibtimesep}}%
+ \iffieldundef{#2}
+ {}
+ {\mktimezeros{\thefield{#2}}%
+ \iffieldundef{#3}{}{\bibtimesep}}%
+ \iffieldundef{#3}
+ {}
+ {\mktimezeros{\thefield{#3}}}%
\iffieldundef{#4}{}
{\bibtimezonesep
\mkbibtimezone{\thefield{#4}}}}%