texlive[51953] Master/texmf-dist: biblatex (24aug19)

commits+karl at tug.org commits+karl at tug.org
Sat Aug 24 22:53:27 CEST 2019


Revision: 51953
          http://tug.org/svn/texlive?view=revision&revision=51953
Author:   karl
Date:     2019-08-24 22:53:26 +0200 (Sat, 24 Aug 2019)
Log Message:
-----------
biblatex (24aug19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib
    trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst
    trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
    trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/01-introduction-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/02-annotations-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/03-localization-keys-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/04-delimiters-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/16-numeric-prefixed-1-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/17-numeric-prefixed-2-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/18-numeric-hybrid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/19-alphabetic-prefixed-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/30-style-numeric-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/40-style-alphabetic-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/41-style-alphabetic-verb-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/42-style-alphabetic-template-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/82-style-debug-bibtex.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/90-related-entries-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/91-sorting-schemes-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/92-bibliographylists-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/93-nameparts-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/94-labelprefix-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/95-customlists-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/96-dates-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/97-annotations-biber.pdf
    trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
    trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def
    trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
    trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx
    trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx

Modified: trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib
===================================================================
--- trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/bibtex/bib/biblatex/biblatex/biblatex-examples.bib	2019-08-24 20:53:26 UTC (rev 51953)
@@ -946,7 +946,7 @@
   annotation   = {A single volume from the critical edition of Nietzsche's
                   works. This \texttt{book} entry explicitly refers to the first
                   volume only. Note the \texttt{title} and \texttt{maintitle}
-                  fields. Also note the \texttt{sorttitle} 
+                  fields. Also note the \texttt{sorttitle}
                   field. We want this entry to be listed after the entry
                   referring to the entire edition},
 }
@@ -1138,7 +1138,7 @@
                   \texttt{isbn} field},
 }
 
- at InCollection{gaonkar:in,
+ at incollection{gaonkar:in,
   author       = {Gaonkar, Dilip Parameshwar},
   editor       = {Gaonkar, Dilip Parameshwar},
   title        = {On Alternative Modernities},
@@ -1169,6 +1169,9 @@
                   \texttt{editoratype} fields},
 }
 
+% booktitle and booksubtitle are only needed for BibTeX's less sophisticated
+% inheritance set-up to make sure westfahl:space shows correctly.
+% With Biber they are not needed.
 @collection{westfahl:frontier,
   editor       = {Westfahl, Gary},
   title        = {Space and Beyond},
@@ -1181,8 +1184,8 @@
   booktitle    = {Space and Beyond},
   booksubtitle = {The Frontier Theme in Science Fiction},
   annotation   = {This is a \texttt{collection} entry. Note the format of the
-                  \texttt{location} field as well as the \texttt{subtitle} and
-                  \texttt{booksubtitle} fields},
+                  \texttt{location} field as well as the \texttt{subtitle}
+                  field},
 }
 
 @inbook{kant:kpv,

Modified: trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/bibtex/bst/biblatex/biblatex.bst	2019-08-24 20:53:26 UTC (rev 51953)
@@ -168,7 +168,10 @@
     warningmsg }
 
 INTEGERS { ctrl.debug ctrl.bibtex8 ctrl.maxline ctrl.sorting ctrl.cssort
-           ctrl.maxnames ctrl.minnames ctrl.maxalphanames ctrl.minalphanames
+           ctrl.maxcitenames ctrl.mincitenames
+           ctrl.maxsortnames ctrl.minsortnames
+           ctrl.nohashothers ctrl.nosortothers
+           ctrl.maxalphanames ctrl.minalphanames
            ctrl.useauthor ctrl.useeditor ctrl.usetranslator
            ctrl.useprefix ctrl.labelalpha ctrl.singletitle
            ctrl.labeldate citecount
@@ -180,7 +183,7 @@
            last.name last.hash last.year last.extra }
 
 FUNCTION {initialize} {
-  "$Revision: 3.11 $"
+  "$Revision: 3.13 $"
   #12 entry.max$ substring$
   #-3 entry.max$ substring$
   "Biblatex version: " swap$ * top$
@@ -193,8 +196,12 @@
    #1   'ctrl.useeditor :=
    #0   'ctrl.usetranslator :=
    #0   'ctrl.useprefix :=
-   #1   'ctrl.minnames :=
-  #99   'ctrl.maxnames :=
+  #99   'ctrl.maxcitenames :=
+   #1   'ctrl.mincitenames :=
+  #99   'ctrl.maxsortnames :=
+   #1   'ctrl.minsortnames :=
+   #0   'ctrl.nohashothers :=
+   #0   'ctrl.nosortothers :=
    #1   'ctrl.minalphanames :=
    #3   'ctrl.maxalphanames :=
   #79   'ctrl.maxline :=
@@ -551,8 +558,8 @@
   tempctrc #0 =
     { tempctrb 'tempctrc := }
     { tempctrb tempctrc >
-        { ctrl.minnames 'tempctrc := }
-        { ctrl.maxnames 'tempctrc := }
+        { ctrl.mincitenames 'tempctrc := }
+        { ctrl.maxcitenames 'tempctrc := }
       if$
     }
   if$
@@ -568,6 +575,8 @@
   templist andothers
   tempctrb #0 >
   or
+  ctrl.nohashothers not
+  and
     { "+" * }
     'skip$
   if$
@@ -580,7 +589,7 @@
         'skip$
       if$
     }
-    { ctrl.maxnames shortname:hash }
+    { ctrl.maxcitenames shortname:hash }
   if$
 }
 
@@ -903,9 +912,9 @@
     { tempctrb #1 - 'tempctrb := }
     'skip$
   if$
-  tempctrb ctrl.maxnames >
-    { ctrl.minnames 'tempctrc := }
-    { ctrl.maxnames 'tempctrc := }
+  tempctrb ctrl.maxsortnames >
+    { ctrl.minsortnames 'tempctrc := }
+    { ctrl.maxsortnames 'tempctrc := }
   if$
   ""
   { duplicate$ text.length$ entry.max$ #50 - <
@@ -944,6 +953,8 @@
   templist andothers
   tempctrb #0 >
   or
+  ctrl.nosortothers not
+  and
     { delimiter.2 * "zzzz" * }
     'skip$
   if$
@@ -1314,6 +1325,11 @@
       templist andothers
         { tempctrb #1 - 'tempctrb :=
           "more" tempstrga * #1 output:write:bool
+          % not actually required, biblatex should resolve this
+          tempstrga push:labelname =
+            { "morelabelname" #1 output:write:bool }
+            'skip$
+          if$
         }
         'skip$
       if$
@@ -1895,18 +1911,18 @@
   input:control:parse str.to.int
 }
 
-% This version corresponds to the .bbl version, *not* the biblatex version!
+% This version corresponds to the .bcf version, *not* the biblatex version!
 FUNCTION {input:control:version} {
   input:control:parse
-  "$Revision: 3.0 $"
+  "$Revision: 3.6 $"
   #12 entry.max$ substring$
   #-3 entry.max$ substring$
   'tempstrga :=
   duplicate$ tempstrga =
     { pop$ }
-    { "bbl version mismatch: biblatex.bst has " tempstrga *
+    { "bcf version mismatch: biblatex.bst has " tempstrga *
       ", but biblatex.sty has " * swap$ * warning$
-      "         The bbl version need not be the same as the biblatex version."
+      "         The bcf version need not be the same as the biblatex version."
       top$
       pop$ "" }
   if$
@@ -1929,8 +1945,12 @@
           input:control:options 'ctrl.labeldate :=
           input:control:options 'ctrl.singletitle :=
           input:control:options 'ctrl.sorting :=
-          input:control:options 'ctrl.maxnames :=
-          input:control:options 'ctrl.minnames :=
+          input:control:options 'ctrl.maxcitenames :=
+          input:control:options 'ctrl.mincitenames :=
+          input:control:options 'ctrl.maxsortnames :=
+          input:control:options 'ctrl.minsortnames :=
+          input:control:options 'ctrl.nohashothers :=
+          input:control:options 'ctrl.nosortothers :=
           input:control:options 'ctrl.maxalphanames :=
           input:control:options 'ctrl.minalphanames :=
           input:control:options 'ctrl.maxline :=
@@ -2125,9 +2145,9 @@
     { tempctrb #1 - 'tempctrb := }
     'skip$
   if$
-  tempctrb ctrl.maxnames >
-    { ctrl.minnames 'tempctrc := }
-    { ctrl.maxnames 'tempctrc := }
+  tempctrb ctrl.maxcitenames >
+    { ctrl.mincitenames 'tempctrc := }
+    { ctrl.maxcitenames 'tempctrc := }
   if$
   ""
   { duplicate$ text.length$ entry.max$ #50 - <
@@ -2157,11 +2177,14 @@
   templist andothers
   tempctrb #0 >
   or
+  ctrl.nohashothers not
+  and
     { delimiter.2 * "zzzz" * }
     'skip$
   if$
 }
 
+
 FUNCTION {makelabel:name:full} {
   duplicate$ num.names$ #1 =
     { #1
@@ -2235,9 +2258,9 @@
     { tempctrb #1 - 'tempctrb := }
     'skip$
   if$
-  tempctrb ctrl.maxnames >
-    { ctrl.minnames 'tempctrc := }
-    { ctrl.maxnames 'tempctrc := }
+  tempctrb ctrl.maxcitenames >
+    { ctrl.mincitenames 'tempctrc := }
+    { ctrl.maxcitenames 'tempctrc := }
   if$
   ""
   { tempctra tempctrc > not
@@ -2256,6 +2279,8 @@
   templist andothers
   tempctrb #0 >
   or
+  ctrl.nohashothers not
+  and
     { "+" * }
     'skip$
   if$
@@ -2282,6 +2307,8 @@
     }
   while$
   templist andothers
+  ctrl.nohashothers not
+  and
     { "+" * }
     'skip$
   if$
@@ -2730,7 +2757,7 @@
 % This version corresponds to the .bbl version, *not* the biblatex version!
 FUNCTION {output:main:begin} {
   "% $ biblatex auxiliary file $"                               write$ newline$
-  "% $ biblatex bbl format version " "$Revision: 3.0 $"
+  "% $ biblatex bbl format version " "$Revision: 3.1 $"
   #12 entry.max$ substring$ #-3 entry.max$ substring$ * " $" *  write$ newline$
   "% Do not modify the above lines!"                            write$ newline$
   "%"                                                           write$ newline$

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/CHANGES.md	2019-08-24 20:53:26 UTC (rev 51953)
@@ -1,3 +1,105 @@
+# 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
+  them and pass them out in the `.bbl`.
+  This should not adversely affect any code using the documented
+  `\Decalare...Option` interface, so should be uncritical for most users.
+- Add `\DeclareBiblatexOption` as a convenient interface to declare the same
+  option in different scopes. This should help avoid code duplication.
+  For example
+  ```
+  \DeclareBibliographyOption[boolean]{noroman}[true]{%
+    \settoggle{blx at noroman}{#1}}
+  \DeclareTypeOption[boolean]{noroman}[true]{%
+    \settoggle{blx at noroman}{#1}}
+  \DeclareEntryOption[boolean]{noroman}[true]{%
+    \settoggle{blx at noroman}{#1}}
+  ```
+  can be replaced with
+  ```
+  \DeclareBiblatexOption{global,type,entry}[boolean]{noroman}[true]{%
+    \settoggle{blx at noroman}{#1}}
+  ```
+- Following the introduction of `\DeclareBiblatexOption` extend the scope
+  of a few options (`abbreviate`, `citetracker`, `clearlang`, `dataonly`,
+  `dateabbrev`, `<namepart>inits`, `ibidtracker`, `idemtracker`, `labelalpha`,
+  `labelnumber`, `labeltitle`, `labeltitleyear`, `labeldateparts`,
+  `loccittracker`, `opcittracker`, `singletitle`, `skipbib`, `skipbiblist`,
+  `skipbiblab` `terseinits`, `uniquelist`, `uniquename`, `uniquetitle`,
+  `uniquebaretitle`, `uniquework`, `uniqueprimaryauthor`).
+- Furthermore, the standard style options `doi`, `eprint`, `isbn`, `url`,
+  `related` are now available also on a per-type and per-entry level.
+  The same holds for `mergedate`, `subentry` and the options of `reading.bbx`.
+  This change has the potential to clash with custom styles that already define
+  the standard options at these scopes.
+- Promote `@software` to regular entry type and define `@dataset`.
+  `@software` is aliased to the `@misc` driver,
+  `@dataset` has a dedicated driver.
+- Add `\ifvolcite` test to check if the current citation is in a `\volcite`
+  context.
+- Add the special fields `volcitevolume` and `volcitepages` for finer control
+  over the `\volcite` postnote.
+- Add `\AtVolcite` hook to initialise `\volcite` commands.
+- Add `\mkbibcompletename` as well as `\mkbibcompletename<formatorder>`
+  to format complete names.
+  The commands are analogous to `\mkbibname<namepart>` but apply to
+  the entire name printed in format order `<formatorder>`.
+  By default the predefined macros all expand to `\mkbibcompletename`.
+- Add `multiprenotedelim` and `multipostnotedelim` and make all
+ `(pre|post)notedelim`-like commands context sensitive.
+- Add rudimentary support for `labelprefix` with BibTeX backend.
+  Biber implements `labelprefix` via `refcontext`s, but BibTeX does not
+  actually support `refcontext`s. The user interface is retained, but BibTeX's
+  "`refcontext`s" support only the emulation of `labelprefix` and nothing more.
+  There might be subtle differences between Biber's and BibTeX's
+  `labelprefix` behaviour, but it should be better than nothing.
+  If you need full `labelprefix` support, please consider switching to Biber.
+- Add `\thefirstlistitem`, `\strfirstlistitem` and `\usefirstlistitem` to
+  grab and use the first item of a field.
+- Add `\isdot` to the format for `journaltitle` so that `.`s at the end of the
+  `journal(title)` field are automatically treated as abbreviation dots and not
+  sentence-ending periods. To restore the old behaviour add
+  ```
+  \DeclareFieldFormat{journaltitle}{\mkbibemph{#1}}
+  ```
+  to the preamble.
+- Add second optional item post processing argument to `\mkcomprange`,
+  `\mknormrange` and `\mkfirstpage`. It can be used to post process
+  every number item in the formatted range separately. It can for
+  example turn cardinal ranges into ordinal ranges (this is done in
+  the Latvian localisation module).
+- Add further customisation options for strings typeset with `url`'s `\url`
+  command (mainly URLs and DOIs). It is now possible to add a bit of
+  stretchable space after characters with `biburlnumskip`, `biburlucskip`
+  and `biburlucskip`. The previously hard-coded (stretacheble) space
+  `\biburlbigskip` as well as the penalties `biburlbigbreakpenalty` and
+  `biburlbreakpenalty` are also configurable now.
+- Add `\DeclarePrintbibliographyDefaults` to set default values for some
+  option keys to `\printbibliography` and friends.
+- `\nocite` is now enabled in the bibliography (previously it was
+  deactivated in the bibliography).
+  Please report any issues that this may cause.
+- The internals macros `\abx at aux@cite`, `\abx at aux@refcontext`
+  and `\abx at aux@biblist` are now called every time an entry is cite
+  (and appears in a bibliography or biblist, respectively).
+  This helps to avoid unwanted side-effects when writing to aux files
+  is disabled.
+- `\nohyphenation` and `\textnohyphenation` now rely on a (fake)
+  language without hyphenation patterns instead of `\lefthyphenmin`,
+  which means that the command can now be used anywhere in a paragraph,
+  see also <https://texfaq.org/FAQ-hyphoff>.
+  Note that switching languages with `babel` *within* those commands
+  removes the hyphenation protection.
+- Allow `doi` field for `@online` entries. This field was previously
+  not printed in the `@online` driver. In case DOIs appear where
+  they should not appear the output of earlier versions can be
+  recreated with
+  ```
+  \ExecuteBibliographyOptions[online]{doi=false}
+  ```
+  since the `doi` option is now available on a per-type level.
+
+
 # RELEASE NOTES FOR VERSION 3.12
 - **INCOMPATIBLE CHANGE** The syntax for defining data annotations in the
   BibLaTeXML data source format has changed to accommodate named

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/biblatex.tex	2019-08-24 20:53:26 UTC (rev 51953)
@@ -28,10 +28,7 @@
 }
 \KOMAoptions{numbers=noenddot}
 \addtokomafont{title}{\sffamily}
-\addtokomafont{paragraph}{\spotcolor}
-\addtokomafont{section}{\spotcolor}
-\addtokomafont{subsection}{\spotcolor}
-\addtokomafont{subsubsection}{\spotcolor}
+\addtokomafont{disposition}{\spotcolor}
 \addtokomafont{descriptionlabel}{\spotcolor}
 \setkomafont{caption}{\bfseries\sffamily\spotcolor}
 \setkomafont{captionlabel}{\bfseries\sffamily\spotcolor}
@@ -39,9 +36,14 @@
 \pretocmd{\bibfield}{\sloppy}{}{}
 \pretocmd{\bibtype}{\sloppy}{}{}
 \makeatletter
-\patchcmd{\paragraph}
-  {3.25ex \@plus1ex \@minus.2ex}{-3.25ex\@plus -1ex \@minus -.2ex}{}{}
-\patchcmd{\paragraph}{-1em}{1.5ex \@plus .2ex}{}{}
+\RedeclareSectionCommand[%
+  beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
+  afterskip=1.5ex \@plus .2ex,%
+]{paragraph}
+\RedeclareSectionCommand[%
+  beforeskip=-3.25ex\@plus -1ex \@minus -.2ex,%
+  indent=\z@,%
+]{subparagraph}
 \makeatother
 
 \MakeAutoQuote{«}{»}
@@ -48,6 +50,8 @@
 \MakeAutoQuote*{<}{>}
 \MakeShortVerb{\|}
 
+\newcommand*{\allowbreakhere}{\discretionary{}{}{}}
+
 \newcommand*{\biber}{\sty{biber}\xspace}
 \newcommand*{\biblatex}{\sty{biblatex}\xspace}
 \newcommand*{\biblatexml}{\sty{biblatexml}\xspace}
@@ -58,9 +62,9 @@
   title={The \biblatex Package},
   subtitle={Programmable Bibliographies and Citations},
   url={\biblatexhome},
-  author={Philipp Lehman \\(with Philip Kime, Moritz Wemheuer, Audrey Boruvka and Joseph Wright)},
+  author={Philip Kime, Moritz Wemheuer, Philipp Lehman},
   email={},
-  revision={3.12},
+  revision={3.13},
   date={\today}}
 
 \hypersetup{%
@@ -136,6 +140,17 @@
   \leavevmode\marginpar{\CSdelim}}
 
 
+\newcommand*{\seestyleexample}[1]{%
+  \leavevmode
+  \marginpar{%
+    \raggedright
+    \footnotesize
+    Style example:\\
+    \href{file:examples/#1.pdf}{local},
+    \href{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/#1.pdf}
+    {online}.}%
+  \ignorespaces}
+
 % following snippet is based on code by Michael Ummels (TeX Stack Exchange)
 % <http://tex.stackexchange.com/a/13073/8305>
 \makeatletter
@@ -177,7 +192,14 @@
 
 \subsection{Acknowledgements}
 
-The language modules of this package are made possible thanks to the following contributors:
+The package was originally written by Philipp Lehman and much of his excellent
+original code remains in the core. Philip Kime took over the package in
+2012 with Moritz Wemheuer making regular and valuable contributions from 2017.
+The main authors would like to acknowledge the valuable help of Audrey
+Boruvka and Joseph Wright who helped with the transition of ownership in
+2012 and following years.
+
+The language modules of this package are made possible thanks to the following contributors:\\
 Augusto Ritter Stoffel, Mateus Araújo, Gustavo Barros (Brazilian);
 Kaloyan Ganev (Bulgarian);
 Sebastià Vila-Marta (Catalan);
@@ -248,6 +270,8 @@
 \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.
 
+Please note that \biblatex can only detect the language (\eg \texttt{english}, \texttt{german}), but not the language variant (\eg \texttt{british}, \texttt{austrian}) and other properties (\eg \texttt{spelling=new} for \texttt{german}) when used with \sty{polyglossia}. To remind you of these shortcomings \biblatex will issue a warning message when it is loaded together with \sty{polyglossia}, the warning message tells you how to silence it should you want to do so.
+
 \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/}
 
@@ -358,6 +382,8 @@
 \sffamily\bfseries\spotcolor Biber version
   & \sffamily\bfseries\spotcolor \biblatex\ version\\
 \midrule
+2.13 & 3.13\\
+2.12 & 3.12\\
 2.11 & 3.11\\
 2.10 & 3.10\\
 2.9 & 3.9\\
@@ -411,6 +437,8 @@
 
 The lists below indicate the fields supported by each entry type. Note that the mapping of fields to an entry type is ultimately at the discretion of the bibliography style. The lists below therefore serve two purposes. They indicate the fields supported by the standard styles which come with this package and they also serve as a model for custom styles. Note that the <required> fields are not strictly required in all cases, see \secref{bib:use:key} for details. The fields marked as <optional> are optional in a technical sense. Bibliographical formatting rules usually require more than just the <required> fields. The default data model defined a few constraints for the format of date fields, ISBNs and some special fields like \bibfield{gender} but the constraints are only used if validating against the data model with \biber's \opt{--validate-datamodel} option. Generic fields like \bibfield{abstract} and \bibfield{annotation} or \bibfield{label} and \bibfield{shorthand} are not included in the lists below because they are independent of the entry type. The special fields discussed in \secref{bib:fld:spc}, which are also independent of the entry type, are not included in the lists either. See the default data model specification in the file \file{blx-dm.def} which comes with \biblatex for a complete specification.
 
+The <alias> relation referred to in this subsection is the <soft alias> defined with \cmd{DeclareBibliographyAlias}. That means that the alias will use the same bibliography driver as the type it is aliased to, but that its type-specific formatting is still handled independently of the aliased type.
+
 \begin{typelist}
 
 \typeitem{article}
@@ -481,6 +509,13 @@
 
 Supplemental material in a \bibtype{collection}. This type is similar to \bibtype{suppbook} but related to the \bibtype{collection} entry type. The standard styles will treat this entry type as an alias for \bibtype{incollection}.
 
+\typeitem{dataset}
+
+A data set or a similar collection of (mostly) raw data.
+
+\reqitem{author/editor, title, year/date}
+\optitem{subtitle, titleaddon, language, edition, type, series, number, version, note, organization, publisher, location, addendum, pubstate, doi, eprint, eprintclass, eprinttype, url, urldate}
+
 \typeitem{manual}
 
 Technical or other documentation, not necessarily in printed form. The \bibfield{author} or \bibfield{editor} is omissible in terms of \secref{bib:use:key}.
@@ -499,8 +534,8 @@
 
 An online resource. \bibfield{author}, \bibfield{editor}, and \bibfield{year} are omissible in terms of \secref{bib:use:key}. This entry type is intended for sources such as web sites which are intrinsically online resources. Note that all entry types support the \bibfield{url} field. For example, when adding an article from an online journal, it may be preferable to use the \bibtype{article} type and its \bibfield{url} field.
 
-\reqitem{author/editor, title, year/date, url}
-\optitem{subtitle, titleaddon, language, version, note, organization, month, addendum, pubstate, doi, eprint, eprintclass, eprinttype, urldate}
+\reqitem{author/editor, title, year/date, doi/eprint/url}
+\optitem{subtitle, titleaddon, language, version, note, organization, month, addendum, pubstate, eprintclass, eprinttype, urldate}
 
 \typeitem{patent}
 
@@ -564,6 +599,10 @@
 
 An entry set. This entry type is special, see \secref{use:use:set} for details.
 
+\typeitem{software}
+
+Computer software. The standard styles will treat this entry type as an alias for \bibtype{misc}.
+
 \typeitem{thesis}
 
 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.
@@ -584,7 +623,7 @@
 
 \typeitem{custom[a--f]}
 
-Custom types for special bibliography styles. The standard styles defined no bibliography drivers for these types.
+Custom types for special bibliography styles. The standard styles defined no bibliography drivers for these types and will fall back to using the driver for \bibtype{misc}.
 
 \end{typelist}
 
@@ -591,7 +630,7 @@
 \subsubsection{Type Aliases}
 \label{bib:typ:als}
 
-The entry types listed in this section are provided for backwards compatibility with traditional \bibtex styles. These aliases are resolved by the backend as the data is processed. Bibliography styles will see the entry type the alias points to, not the alias name. All unknown entry types are generally exported as \bibtype{misc}.
+The entry types listed in this section are provided for backwards compatibility with traditional \bibtex styles. These aliases are resolved by the backend as the data is processed. Bibliography styles will see the entry type the alias points to, not the alias name. This <hard alias> is unlike the <soft alias> relation in the previous subsection. The relevant mappings for the \opt{bibtex} driver can be found in~\secref{apx:maps:bibtex}.
 
 \begin{typelist}
 
@@ -670,10 +709,6 @@
 
 Reviews of some other work. This is a more specific variant of the \bibtype{article} type. The standard styles will treat this entry type as an alias for \bibtype{article}.
 
-\typeitem{software}
-
-Computer software.
-
 \typeitem{standard}
 
 National and international standards issued by a standards body such as the International Organization for Standardization.
@@ -715,7 +750,7 @@
 
 \item[Literal lists] in the strict sense are handled as described above. The individual items are simply printed as is. Typical examples of such literal lists are \bibfield{publisher} and \bibfield{location}.
 
-\item[Key lists] are a variant of literal lists which may hold printable data or localisation keys. For each item in the list, a test is performed to determine whether it is a known localisation key (the localisation keys defined by default are listed in \secref{aut:lng:key}). If so, the localised string is printed. If not, the item is printed as is. A typical example of a key list is \bibfield{language}.
+\item[Key lists] are a variant of literal lists which may hold printable data or localisation keys. For each item in the list, styles should perform a test to determine whether it is a known localisation key (the localisation keys defined by default are listed in \secref{aut:lng:key}). If so, the localised string should be printed. If not, the item should be printed as is. The standard styles are set up to exhibit this behaviour for all key lists listed below. New key lists do not automatically perform this test, it has to be implemented explicitly via the list format. A typical example of a key list is \bibfield{language}.
 
 \end{description}
 \end{description}
@@ -744,7 +779,7 @@
 
 \item[Pattern fields] A literal field which must match a particular pattern. An example is the \bibfield{gender} field from \secref{bib:fld:spc}.
 
-\item[Key fields] May hold printable data or localisation keys. A test is performed to determine whether the value of the field is a known localisation key (the localisation keys defined by default are listed in \secref{aut:lng:key}). If so, the localised string is printed. If not, the value is printed as is. A typical example is the \bibfield{type} field.
+\item[Key fields] May hold printable data or localisation keys. Styles should perform a test to determine whether the value of the field is a known localisation key (the localisation keys defined by default are listed in \secref{aut:lng:key}). If so, the localised string should be printed. If not, the value should be printed as is. The standard styles are set up to handle all key fields listed below in that way. New key fields do not automatically perform the test, it has to be enabled explicitly in the field format. A typical example is the \bibfield{type} field.
 
 \item[Code fields] Holds \tex code.
 
@@ -818,7 +853,7 @@
 
 \fielditem{date}{date}
 
-The publication date. See also \bibfield{month} and \bibfield{year} as well as \secref{bib:use:dat}.
+The publication date. See also \bibfield{month} and \bibfield{year} as well as \secref{bib:use:dat,bib:use:yearordate}.
 
 \fielditem{doi}{verbatim}
 
@@ -862,7 +897,7 @@
 
 \fielditem{eid}{literal}
 
-The electronic identifier of an \bibtype{article}.
+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.
 
 \fielditem{entrysubtype}{literal}
 
@@ -942,7 +977,7 @@
 
 \fielditem{issue}{literal}
 
-The issue of a journal. This field is intended for journals whose individual issues are identified by a designation such as <Spring> or <Summer> rather than the month or a number. The placement of \bibfield{issue} is similar to \bibfield{month} and \bibfield{number}, integer ranges and short designators are better written to the \bibfield{number} field. See also \bibfield{month}, \bibfield{number}, and \secref{bib:use:iss}.
+The issue of a journal. This field is intended for journals whose individual issues are identified by a designation such as <Spring> or <Summer> rather than the month or a number. The placement of \bibfield{issue} is similar to \bibfield{month} and \bibfield{number}. Integer ranges and short designators are better written to the \bibfield{number} field. See also \bibfield{month}, \bibfield{number} and \secref{bib:use:iss, bib:use:issnum}.
 
 \fielditem{issuesubtitle}{literal}
 
@@ -996,7 +1031,7 @@
 
 The publication month. This must be an integer, not an ordinal or a string. Don't say |month={January}| but |month={1}|. The bibliography style converts this to a language dependent string or ordinal where required. This field is a literal field only when given
 explicitly in the data (for plain \bibtex compatibility for example). It is
-however better to use the \bibfield{date} field as this supports many more features. See \secref{bib:use:dat}.
+however better to use the \bibfield{date} field as this supports many more features. See \secref{bib:use:dat,bib:use:yearordate}.
 
 \fielditem{nameaddon}{literal}
 
@@ -1008,8 +1043,10 @@
 
 \fielditem{number}{literal}
 
-The number of a journal or the volume\slash number of a book in a \bibfield{series}. See also \bibfield{issue} as well as \secref{bib:use:ser, bib:use:iss}. With \bibtype{patent} entries, this is the number or record token of a patent or patent request. Normally this field will be an integer or an integer range, but in certain cases it may also contain «S1», «Suppl.\ 1», in these cases the output should be scrutinised carefully.
+The number of a journal or the volume\slash number of a book in a \bibfield{series}. See also \bibfield{issue} as well as \secref{bib:use:ser, bib:use:iss, bib:use:issnum}. With \bibtype{patent} entries, this is the number or record token of a patent or patent request. Normally this field will be an integer or an integer range, but it may also be a short designator that is not entirely numeric such as «S1», «Suppl.\ 2», «3es». In these cases the output should be scrutinised carefully.
 
+Since \bibfield{number} is---maybe counterintuitively given its name---a literal field, sorting templates will not treat its contents as integers, but as literal strings, which means that «11» may sort between «1» and «2». If integer sorting is desired, the field can be declared an integer field in a custom data model (see \secref{aut:ctm:dm}). But then the sorting of non-integer values is not well defined.
+
 \listitem{organization}{literal}
 
 The organization(s) that published a \bibtype{manual} or an \bibtype{online} resource, or sponsored a conference. See also \secref{bib:use:and}.
@@ -1036,7 +1073,7 @@
 
 \fielditem{pages}{range}
 
-One or more page numbers or page ranges. If the work is published as part of another one, such as an article in a journal or a collection, this field holds the relevant page range in that other work. It may also be used to limit the reference to a specific part of a work (a chapter in a book, for example).
+One or more page numbers or page ranges. If the work is published as part of another one, such as an article in a journal or a collection, this field holds the relevant page range in that other work. It may also be used to limit the reference to a specific part of a work (a chapter in a book, for example). For papers in electronic journals with a non-classical pagination setup the \bibfield{eid} field may be more suitable.
 
 \fielditem{pagetotal}{literal}
 
@@ -1143,7 +1180,7 @@
 The year of publication. This field is a literal field only when given
 explicitly in the data (for plain \bibtex compatibility for example). It is
 however better to use the \bibfield{date} field as this is compatible with
-plain years too and supports many more features. See \secref{bib:use:dat}.
+plain years too and supports many more features. See \secref{bib:use:dat,bib:use:yearordate}.
 
 \end{fieldlist}
 
@@ -1400,7 +1437,7 @@
 \item The fields \bibfield{institution}, \bibfield{organization}, and \bibfield{publisher} as well as the aliases \bibfield{address} and \bibfield{school}. See \secref{bib:fld:dat, bib:fld:als, bib:use:and} for details.
 \item The handling of certain types of titles. See \secref{bib:use:ttl} for details.
 \item The field \bibfield{series}. See \secref{bib:fld:dat, bib:use:ser} for details.
-\item The fields \bibfield{year} and \bibfield{month}. See \secref{bib:fld:dat, bib:use:dat, bib:use:iss} for details.
+\item The fields \bibfield{year} and \bibfield{month}. See \secref{bib:fld:dat, bib:use:dat, bib:use:yearordate, bib:use:iss} for details.
 \item The field \bibfield{edition}. See \secref{bib:fld:dat} for details.
 \item The field \bibfield{key}. See \secref{bib:use:key} for details.
 \end{itemize}
@@ -1723,11 +1760,21 @@
 \label{bib:use:tab2}
 \end{table}
 
+\subsubsection{Year, Month and Date}
+\label{bib:use:yearordate}
+
+The fields \bibfield{year} and \bibfield{month} are still supported by \biblatex, but the full set of date features (day and time precision, ranges, \dots) can only be used with \bibfield{date}. It is therefore recommended to prefer \bibfield{date} over \bibfield{year} and \bibfield{month} unless backwards compatibility of the \file{bib} file with classical \bibtex is required.
+
 \subsubsection{Months and Journal Issues}
 \label{bib:use:iss}
 
 The \bibfield{month} field is an integer field. The bibliography style converts the month to a language"=dependent string as required. For backwards compatibility, you may also use the following three"=letter abbreviations in the \bibfield{month} field: \texttt{jan}, \texttt{feb}, \texttt{mar}, \texttt{apr}, \texttt{may}, \texttt{jun}, \texttt{jul}, \texttt{aug}, \texttt{sep}, \texttt{oct}, \texttt{nov}, \texttt{dec}. Note that these abbreviations are \bibtex strings which must be given without any braces or quotes. When using them, don't say |month={jan}| or |month="jan"| but |month=jan|. It is not possible to specify a month such as |month={8/9}|. Use the \bibfield{date} field for date ranges instead. Quarterly journals are typically identified by a designation such as <Spring> or <Summer> which should be given in the \bibfield{issue} field. The placement of the \bibfield{issue} field in \bibtype{article} entries is similar to and overrides the \bibfield{month} field.
 
+\subsubsection{Journal Numbers and Issues}
+\label{bib:use:issnum}
+
+The words <number> and <issue> are often used synonymously by journals to refer to the subdvision of a \bibfield{volume}. The fact that \biblatex's data model has fields of both names can sometimes lead to confusion about which field should be used. First and foremost the word that the journal uses for the subdivsion of a \bibfield{volume} should be of minor importance, what matters is the role in the data model. As a rule of thumb \bibfield{number} is the right field in most circumstances. In the standard styles \bibfield{number} modifies \bibfield{volume}, whereas \bibfield{issue} modifies the date (year) of the entry. Numeric identifiers and short designators that are not necessarily (entirely) numeric such as <A>, <S1>, <C2>, <Suppl.\ 3>, <4es> would go into the \bibfield{number} field, because they usually modify the \bibfield{volume}. The output of---especially longer---non-numeric input for \bibfield{number} should be checked since it could potentially look odd with some styles. The field \bibfield{issue} can be used for designations such as <Spring>, <Winter> or <Michaelmas term> if that is commonly used to refer to the journal.
+
 \subsubsection{Pagination}
 \label{bib:use:pag}
 
@@ -2031,10 +2078,6 @@
 
 This option sets the global sorting locale. Every sorting template inherits this locale if none is specified using the \prm{locale} option to \cmd{printbibliography}. Setting this to \opt{auto} requests that it be set to the \sty{babel}/\sty{polyglossia} main document language identifier, if these packages are used and \texttt{en\_US} otherwise. \biber will map \sty{babel}/\sty{polyglossia} language identifiers into sensible locale identifiers (see the \biber documentation). You can therefore specify either a normal locale identifier like \texttt{de\_DE\_phonebook}, \texttt{es\_ES} or one of the supported \sty{babel}/\sty{polyglossia} language identifiers if the mapping \biber makes of this is fine for you.
 
-\boolitem[true]{related}
-
-Whether or not to use information from related entries or not. See \secref{use:rel}.
-
 \boolitem[false]{sortcites}
 
 Whether or not to sort citations if multiple entry keys are passed to a citation command. If this option is enabled, citations are sorted according to the current bibliography context sorting template (see \secref{use:bib:context}). This feature works with all citation styles.
@@ -2094,11 +2137,12 @@
 
 \optitem[autobib]{language}{\opt{autobib}, \opt{autocite}, \opt{auto}, \prm{language}}
 
-This option controls multilingual support. By default \biblatex automatically picks up the active surrounding language from the \sty{babel}/\sty{polyglossia} package (and fall back to English if \sty{babel}/\sty{polyglossia} is not available). \opt{autobib} switches the language for each entry in the bibliography using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{autocite} switches the language for each citation using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{auto} is a shorthand to set both \opt{autobib} and \opt{autocite}. It is also possible to select the package language manually. In this case, the language chosen will override the \bibfield{langid} of entries and you should still choose a language switching environment with the \opt{autolang} option to select how the switch to the manually chosen language is handled. Please refer to \tabref{bib:fld:tab1} for a list of supported languages and the corresponding identifiers.
+This option controls multilingual support. By default \biblatex automatically picks up the active surrounding language from the \sty{babel}/\sty{polyglossia} package\footnote{Note that \biblatex can only detect the base language (\eg \texttt{english}), but not the language variant (\eg \texttt{british}) or other properties (\eg \texttt{spelling=new} for \texttt{german}) from \sty{polyglossia}. That means that the \biblatex localisation of the base language is used for all variants, even for variants whose <\sty{babel} equivalent> has a localisation of its own. To remind you of these shortcomings a warning will be issued if \biblatex is used with \sty{polyglossia}, the warning explains how it can be disabled.} (and fall back to English if \sty{babel}/\sty{polyglossia} is not available). \opt{autobib} switches the language for each entry in the bibliography using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{autocite} switches the language for each citation using the \bibfield{langid} field and the language environment specified by the \opt{autolang} option. \opt{auto} is a shorthand to set both \opt{autobib} and \opt{autocite}. It is also possible to select the package language manually. In this case, the language chosen will override the \bibfield{langid} of entries and you should still choose a language switching environment with the \opt{autolang} option to select how the switch to the manually chosen language is handled. Please refer to \tabref{bib:fld:tab1} for a list of supported languages and the corresponding identifiers.
 
 \boolitem[true]{clearlang}
 
 If this option is enabled, \biblatex will automatically clear the \bibfield{language} field of all entries whose language matches the \sty{babel}/\sty{polyglossia} language of the document (or the language specified explicitly with the \opt{language} option) in order to omit redundant language specifications. The language mappings required by this feature are provided by the \cmd{DeclareRedundantLanguages} command from \secref{aut:lng:cmd}.
+This option is also settable on a per-type and per-entry basis.
 
 \optitem[none]{autolang}{\opt{none}, \opt{hyphen}, \opt{other}, \opt{other*}, \opt{langname}}
 
@@ -2253,15 +2297,17 @@
 \item[none] Disable this feature.
 \item[part] Perform a reset at every \cmd{part} command.
 \item[chapter] Perform a reset at every \cmd{chapter} command.
+\item[chapter+] Perform a reset at every \cmd{chapter} and \cmd{part} command.
 \item[section] Perform a reset at every \cmd{section} command.
+\item[section+] Perform a reset at every \cmd{section}, \prm{chapter} (if supported by the class) and \cmd{part} command.
 \item[subsection] Perform a reset at every \cmd{subsection} command.
+\item[subsection+] Perform a reset at every \cmd{subsection}, \cmd{section}, \prm{chapter} (if supported by the class) and \cmd{part} command.
 \end{valuelist}
-%
-The starred versions of these commands will not trigger a reset.
 
 \boolitem[true]{abbreviate}
 
 Whether or not to use long or abbreviated strings in citations and in the bibliography. This option affects the localisation modules. If this option is enabled, key terms such as <editor> are abbreviated. If not, they are written out.
+This option is also settable on a per-type or per-entry basis.
 
 \optitem[comp]{date}{\opt{year}, \opt{short}, \opt{long}, \opt{terse}, \opt{comp}, \opt{ymd}, \opt{iso}}
 
@@ -2338,6 +2384,7 @@
 \boolitem[true]{dateabbrev}
 
 This option controls whether \texttt{long} and \texttt{comp} dates are printed with long or abbreviated month/season names. The option is similar to the generic \opt{abbreviate} option but specific to the date formatting.
+This option is also settable on a per-type and per-entry basis.
 
 \boolitem[false]{datecirca}
 
@@ -2475,7 +2522,7 @@
 \paragraph{Style-specific}
 \label{use:opt:pre:bbx}
 
-The following options are provided by the standard styles (as opposed to the core package). Technically, they are preamble options like those in \secref{use:opt:pre:gen}.
+The following options are provided by all standard bibliography styles (as opposed to the core package). The options are available as preamble options like those in \secref{use:opt:pre:gen} and at a per-type and per-entry scope.
 
 \begin{optionlist}
 
@@ -2495,8 +2542,100 @@
 
 This option controls whether \bibfield{eprint} information is printed.
 
+\boolitem[true]{related}
+
+Whether to use information from related entries or not. See \secref{use:rel}.
+
 \end{optionlist}
 
+\subparagraph{\texttt{alphabetic}/\texttt{numeric}} Additionally, styles of the \texttt{alphabetic} and \texttt{numeric} family support the \opt{subentry} option in global, per-type and per-entry scope.
+
+\begin{optionlist}
+
+\boolitem[false]{subentry}
+
+This option affects the handling of citations to set members and the display of sets in the bibliography. If the option is enabled, citations to individual set members feature an additional letter that identifies the member, that letter is also printed in the bibliography. If the option is disabled, a citation to the member of a set will display just as a citation to the entire set and there will be no additional letters in the bibliography entries enumerating the members.
+
+Suppose \texttt{key1} and \texttt{key2} are members of the set \texttt{set1}. With \opt{subentry} set to \texttt{true} in a numeric style a citation to \texttt{key1} will show as <[1a]> and a citation to \texttt{key2} as <[1b]>, while the entire set \texttt{set1} will be cited as <[1]>. Furthermore <(a)> and <(b)> will be added in front of the entry data for the set members in the bibliography entry for the set. With \opt{subentry} set to \texttt{false} citations to all three keys will show as <[1]>, no additional letter will be printed in the bibliography.
+
+\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}
+
+\boolitem[true]{dashed}
+
+This option controls whether recurrent the same author\slash editor list in the bibliography are replaced by a dash (\cmd{bibnamdeash}, see \secref{use:fmt:fmt}). If the option is enabled, subsequent mentions of the same name list at the beginning of an entry are replaced by a dash provided the entry is not the first on the current page. If the option is disabled, name lists are never replaced by a dash.
+
+\end{optionlist}
+
+\subparagraph{\texttt{authoryear}} Bibliography styles of the \texttt{authoryear} family provide the option \opt{mergedate} in global, per-type and per-entry scope.
+
+\begin{optionlist}
+
+\optitem[true]{mergedate}{\opt{false}, \opt{minimum}, \opt{basic}, \opt{compact}, \opt{maximum}, \opt{true}}
+
+This option controls whether and how the date specification in the entry is merged with the date label shown directly after the author\slash editor list.
+
+\begin{valuelist}
+\item[false] Strictly separate the date specification shown in the entry (styled with \opt{date}) from the date label (styled with \opt{labeldate}). The date will always be shown twice.
+\item[minimum] Omit the date specification whenever it coincides \emph{exactly}---including \bibfield{extradate} information---with the output of the date label.
+\item[basic] Similar to \opt{minimum}, but the date specification will also be omitted if it differs from the date label only by the absence of the \bibfield{extradate} letter.
+\item[compact] Merges all date specifications with the date label. The date format of that merged date label is controlled by \opt{date}, not \opt{labeldate}, even if it is printed in the position of the date label. The \bibfield{issue} field is not merged.
+\item[maximum] Like \opt{compact}, but if present the \bibfield{issue} field will also be moved into the date label at the beginning of the entry.
+\item[true] An alias for \opt{compact}.
+\end{valuelist}
+
+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.
+
+\begin{optionlist}
+
+\boolitem[false]{ibidpage}
+
+Whether \emph{ibidem} without page reference means <same work> or <same work + same page>. If set to \texttt{true} a page range postnote will be suppressed in an \emph{ibidem} citation if the last citation was to the same page range. With \texttt{ibidpage=false} the postnote is not omitted. Citations to different page ranges than the previous always produce the page ranges with either setting.
+
+\end{optionlist}
+
+\subparagraph{\texttt{verbose}} All citation styles of the \texttt{verbose} family provide the global option \opt{citepages}.
+
+\begin{optionlist}
+
+\optitem[permit]{citepages}{\opt{permit}, \opt{suppress}, \opt{omit}, \opt{separate}}
+
+This option controls the output of the \bibfield{page}\slash\bibfield{pagetotal} field in the full citation in combination with a postnote containing a page range. The option can be used to suppress references to two page ranges in full citations like the following
+
+\begin{quote}
+Author. \enquote{Title.} In: \emph{Book,} pp.\,100--150, p.\,125.
+\end{quote}
+
+Here <p.\,125> is the \bibfield{postnote} argument and <pp.\,100--150> is the value of the \bibfield{pages} field.
+
+\begin{valuelist}
+\item[permit] Allow duplication of page specifications, i.e.\ print both \bibfield{page}\slash\bibfield{pagetotal} and \bibfield{postnote}.
+\item[suppress] Unconditionally suppress the \bibfield{pages}\slash \bibfield{pagetotal} fields in citations, regardless of the \bibfield{postnote}.
+\item[omit] Suppress the \bibfield{pages}\slash \bibfield{pagetotal} if the \bibfield{postnote} contains a page range. They are still printed if there is no \bibfield{postnote} or if the \bibfield{postnote} is not a number or range.
+\item[separate] Separate the \bibfield{pages}\slash \bibfield{pagetotal} from the \bibfield{postnote} if the latter contains a page range. The string \texttt{thiscite} is added to separate the two page ranges.
+\end{valuelist}
+
+\end{optionlist}
+
+\subparagraph{\texttt{verbose-trad}} The citation styles of the \texttt{verbose-trad} family support the global option \opt{strict}.
+
+\begin{optionlist}
+
+\boolitem[false]{strict}
+
+This option allows to restrict the use of the scholarly abbreviations <ibid.> and <op.~cit.> to avoid ambiguities. If the option is set to \texttt{true} these terms will only be used if the relevant work was cited in the same or previous footnote.
+
+\end{optionlist}
+
+\subparagraph{\texttt{reading}} The \texttt{reading} style supports a number of additional options, but these are not of general interest and can be found in the style example.
+
+
 \paragraph{Internal}
 \label{use:opt:pre:int}
 
@@ -2540,6 +2679,7 @@
 \end{valuelist}
 
 Note that this tracker is disabled in all floats, 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}}
 
@@ -2554,6 +2694,7 @@
 \end{valuelist}
 
 Note that this tracker is disabled in all floats, 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}}
 
@@ -2568,6 +2709,7 @@
 \end{valuelist}
 
 Note that this tracker is disabled in all floats, 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}}
 
@@ -2582,6 +2724,7 @@
 \end{valuelist}
 
 Note that this tracker is disabled in all floats, 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}}
 
@@ -2596,6 +2739,7 @@
 \end{valuelist}
 
 Note that this tracker is disabled in all floats, see \secref{aut:cav:flt}.
+This option is also settable on a per-type or per-entry basis.
 
 \boolitem[true]{parentracker}
 
@@ -2607,16 +2751,22 @@
 
 \boolitem[false]{$<$namepart$>$inits}
 
-When enabled, all $<$namepart$>$ name parts will be rendered as initials. The option will affect the \cmd{if$<$namepart$>$inits} test from \secref{aut:aux:tst}. The valid name parts are defined in the data model by the \cmd{DeclareDatamodelConstant} command (\secref{aut:bbx:drv}).
+The option sets the \cmd{if$<$namepart$>$inits} test from \secref{aut:aux:tst}. \texttt{$<$namepart$>$} is any valid name part as defined in the data model by the \cmd{DeclareDatamodelConstant} command (\secref{aut:bbx:drv}). For the given name, for example, the option becomes \opt{giveninits}.
+This option is also settable on a per-type, per-entry, per-name and per-namelist basis.
 
+If \opt{giveninits} is set to \opt{true}, the default name formats will only render the given name initials and not the full given name. The standard styles only use the test \cmd{ifgiveninits} and hence only respond to the option \opt{giveninits}. Setting the option for a name part different from \texttt{given} has no effect on the default name formats.
+
+Note that sorting and name uniqueness are not automatically affected by this option, that have to be requested explicitly via \cmd{DeclareSortingNamekeyTemplate} and the \opt{uniquename} option (or \cmd{DeclareUniquenameTemplate}), respectively. A warning will be issued if \opt{giveninits} is used together with \opt{uniquename} set to one of the \opt{full} values and \opt{uniquename} is automatically set to the corresponding \opt{init} value.
+
 \boolitem[false]{terseinits}
 
 This option controls the format of all initials generated by \biblatex. If enabled, initials are rendered using a terse format without dots and spaces. For example, the initials of Donald Ervin Knuth would be rendered as <D.~E.> by default, and as <DE> if this option is enabled. The option will affect the \cmd{ifterseinits} test from \secref{aut:aux:tst}. The option works by redefining some macros which control the format of initials. See \secref{use:cav:nam} for details.
+This option is also settable on a per-type, per-entry, per-name and per-namelist basis.
 
 \boolitem[false]{labelalpha}
 
 Whether or not to provide the special fields \bibfield{labelalpha} and \bibfield{extraalpha}, see \secref{aut:bbx:fld} for details.
-This option is also settable on a per-type basis. See also \opt{maxalphanames} and \opt{minalphanames}. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
+This option is also settable on a per-type and per-entry basis. See also \opt{maxalphanames} and \opt{minalphanames}. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
 
 \intitem[3]{maxalphanames}
 
@@ -2629,7 +2779,7 @@
 \boolitem[false]{labelnumber}
 
 Whether or not to provide the special field \bibfield{labelnumber}, see \secref{aut:bbx:fld} for details.
-This option is also settable on a per-type basis.
+This option is also settable on a per-type and per-entry basis.
 
 \boolitem[false]{noroman}
 
@@ -2639,16 +2789,16 @@
 
 \boolitem[false]{labeltitle}
 
-Whether or not to provide the special field \bibfield{extratitle}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitle} information. This option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
+Whether or not to provide the special field \bibfield{extratitle}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitle} information. This option is also settable on a per-type and per-entry basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
 
 \boolitem[false]{labeltitleyear}
 
-Whether or not to provide the special field \bibfield{extratitleyear}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitleyear} information. This option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
+Whether or not to provide the special field \bibfield{extratitleyear}, see \secref{aut:bbx:fld} for details. Note that the special field \bibfield{labeltitle} is always provided and this option controls rather whether \bibfield{labeltitle} is used to generate \bibfield{extratitleyear} information. This option is also settable on a per-type and per-entry basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
 
 \boolitem[false]{labeldateparts}
 
 Whether or not to provide the special fields \bibfield{labelyear}, \bibfield{labelmonth}, \bibfield{labelday}, \bibfield{labelendyear}, \bibfield{labelendmonth}, \bibfield{labelendday}, \bibfield{labelhour}, \bibfield{labelendhour}, \bibfield{labelminute}, \bibfield{labelendminute}, \bibfield{labelsecond}, \bibfield{labelendsecond}, \bibfield{labelseason}, \bibfield{labelendseason}, \bibfield{labeltimezone}, \bibfield{labelendtimeone} and \bibfield{extradate}, see \secref{aut:bbx:fld} for details.
-This option is also settable on a per-type basis. Table \ref{use:opt:tab1} summarises the various \opt{extra*} disambiguation counters and what they track.
+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}
 \footnotesize
@@ -2673,31 +2823,32 @@
 \boolitem[false]{singletitle}
 
 Whether or not to provide the data required by the \cmd{ifsingletitle} test, see \secref{aut:aux:tst} for details. See \tabref{use:opt:wu} for details on what determines the data for this test.
-This option is also settable on a per-type basis.
+This option is also settable on a per-type and per-entry basis.
 
 \boolitem[false]{uniquetitle}
 
 Whether or not to provide the data required by the \cmd{ifuniquetitle} test, see \secref{aut:aux:tst} for details. See \tabref{use:opt:wu} for details on what determines the data for this test.
-This option is also settable on a per-type basis.
+This option is also settable on a per-type and per-entry basis.
 
 \boolitem[false]{uniquebaretitle}
 
 Whether or not to provide the data required by the \cmd{ifuniquebaretitle} test, see \secref{aut:aux:tst} for details. See \tabref{use:opt:wu} for details on what determines the data for this test.
-This option is also settable on a per-type basis.
+This option is also settable on a per-type and per-entry basis.
 
 \boolitem[false]{uniquework}
 
 Whether or not to provide the data required by the \cmd{ifuniquework} test, see \secref{aut:aux:tst} for details. See \tabref{use:opt:wu} for details on what determines the data for this test.
-This option is also settable on a per-type basis.
+This option is also settable on a per-type and per-entry basis.
 
 \boolitem[false]{uniqueprimaryauthor}
 
 Whether or not to provide the data required by the \cmd{ifuniqueprimaryauthor} test, see \secref{aut:aux:tst} for details.
+This option is also settable on a per-type and per-entry basis.
 
 \optitem[false]{uniquename}{\opt{true}, \opt{false}, \opt{init}, \opt{full}, \opt{allinit}, \opt{allfull},
 \opt{mininit}, \opt{minfull}}
 
-Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate individual names in the \bibfield{labelname} list. This option is also settable on a per-type basis. The possible choices are:
+Whether or not to update the \cnt{uniquename} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate individual names in the \bibfield{labelname} list. This option is also settable on a per-type, per-entry, per-namelist and per-name basis. The possible choices are:
 
 \begin{valuelist}
 \item[true] An alias for \opt{full}.
@@ -2714,7 +2865,7 @@
 
 \optitem[false]{uniquelist}{\opt{true}, \opt{false}, \opt{minyear}}
 
-Whether or not to update the \cnt{uniquelist} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate the \bibfield{labelname} list if it has become ambiguous after \opt{maxnames}\slash \opt{minnames} truncation. Essentially, it overrides \opt{maxnames}\slash \opt{minnames} on a per-field basis. This option is also settable on a per-type basis. The possible choices are:
+Whether or not to update the \cnt{uniquelist} counter, see \secref{aut:aux:tst} for details. This feature will disambiguate the \bibfield{labelname} list if it has become ambiguous after \opt{maxnames}\slash \opt{minnames} truncation. Essentially, it overrides \opt{maxnames}\slash \opt{minnames} on a per-field basis. This option is also settable on a per-type, per-entry and per-namelist basis. The possible choices are:
 
 \begin{valuelist}
 \item[true] Disambiguate the \bibfield{labelname} list.
@@ -2724,6 +2875,66 @@
 %
 Note that the \opt{uniquelist} option will also affect the \cmd{ifsingletitle} test and the \bibfield{extradate} and \bibfield{extraname} fields. See \secref{aut:cav:amb} for further details and practical examples.
 
+\boolitem[false]{nohashothers}
+
+By default, name lists which are truncated with <et al>--either explicitly by <and others> in the data source or the \opt{uniquelist} and \opt{min/maxnames} options--result in different name list hashes (and therefore different \opt{extraname} and \opt{extradate} values) and different sorting. This option allows this behaviour to be tuned. When set to \prm{true}, \biber ignores <et al> truncations for the purposes of generating name list hashes. Consider:
+
+\begin{lstlisting}{}
+Jones 1972
+Jones/and others 1972
+Smith 2000
+Smith/Vogel/Beast/Tremble 2000
+\end{lstlisting}
+%
+With \kvopt{maxnames}{3}, \kvopt{minnames}{1}, \kvopt{nohashothers}{false}, the result would be:
+
+\begin{lstlisting}{}
+  Jones 1972
+  Jones et al 1972
+  Smith 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
+  Smith 2000a
+  Smith et al 2000b
+\end{lstlisting}
+
+If desired, this could be further simplified with:
+
+\begin{ltxexample}
+  \DefineBibliographyStrings{english}{andothers={}}
+\end{ltxexample}
+%
+To obtain:
+
+\begin{lstlisting}{}
+  Jones 1972a
+  Jones 1972b
+  Smith 2000a
+  Smith 2000b
+\end{lstlisting}
+%
+Note that the \opt{nohashothers} option will affect the \bibfield{extradate} and \bibfield{extraname} fields.
+
+This option is also settable on a per-type, per-entry and per-namelist basis.
+
+\boolitem[false]{nosortothers}
+
+The option  has a related to effect to \opt{nohashothers} but applies to sorting--the visible list of names (which is the \opt{minsortnames} value) used to determine sorting will ignore any truncation. This means that with \kvopt{nosortothers}{true}, the name lists:
+
+\begin{lstlisting}{}
+Jones, Smith
+Jones, Smith et al
+\end{lstlisting}
+%
+will sort exactly the same. The default setting of \opt{nosortothers} always sorts in the order shown in the example, that is, by default, truncated names lists always sort after any name lists identical to the point of truncation.
+
+This option is also settable on a per-type, per-entry and per-namelist basis.
 \end{optionlist}
 
 \begin{table}
@@ -2824,15 +3035,6 @@
 
 The \opt{indexing} option is also settable per-type or per-entry basis. See \secref{use:opt:pre:gen} for details.
 
-\end{optionlist}
-
-\paragraph{Type/Entry Options}
-\label{use:opt:bib:ded}
-
-The following options are settable on a per"=type basis or on a per"=entry in the \bibfield{options} field. They are not available globally.
-
-\begin{optionlist}
-
 \boolitem[false]{skipbib}
 
 If this option is enabled, the entry is excluded from the bibliography but it may still be cited.
@@ -2840,7 +3042,7 @@
 
 \boolitem[false]{skipbiblist}
 
-If this option is enabled, the entry is excluded from and bibliography lists. It is still included in the bibliography and it may also be cited by shorthand etc.
+If this option is enabled, the entry is excluded from bibliography lists. It is still included in the bibliography and it may also be cited by shorthand etc.
 This option is also settable on a per-type basis.
 
 \boolitem[false]{skiplab}
@@ -2904,7 +3106,7 @@
 \subsection{Standard Styles}
 \label{use:xbx}
 
-This section provides a short description of all bibliography and citation styles which come with the \biblatex package. If you want to write your own styles, see \secref{aut}.
+This section provides a short description of all bibliography and citation styles which come with the \biblatex package. Each style is further illustrated in a style example which is linked in the right margin. The local link may not be available if this document does not reside in the expected folder structure. If you want to write your own styles, see \secref{aut}.
 
 \subsubsection{Citation Styles}
 \label{use:xbx:cbx}
@@ -2913,76 +3115,76 @@
 
 \begin{marglist}
 
-\item[numeric]
+\item[numeric]\seestyleexample{30-style-numeric-biber}
 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]
+\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.
 
-\item[numeric-verb]
+\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.
 
-\item[alphabetic]
+\item[alphabetic]\seestyleexample{40-style-alphabetic-biber}
 This style implements an alphabetic citation scheme similar to the \path{alpha.bst} style of traditional \bibtex. The alphabetic labels resemble a compact author"=year style to some extent, but the way they are employed is similar to a numeric citation scheme. For example, instead of «Jones 1995» this style would use the label «[Jon95]». «Jones and Williams 1986» would be rendered as «[JW86]». This style should be employed in conjunction with an alphabetic 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{labelalpha}{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 «[SGW(c)]» which point to a subentry in a set (the third one in this example). See the style example for details.
 
-\item[alphabetic-verb]
+\item[alphabetic-verb]\seestyleexample{41-style-alphabetic-verb-biber}
 A verbose variant of the \texttt{alphabetic} 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 «[Doe92; Doe95; Jon98]» this style would print «[Doe92]; [Doe95]; [Jon98]». It is intended for in-text citations. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labelalpha}{true}. It also provides the subentry option.
 
-\item[authoryear]
+\item[authoryear]\seestyleexample{50-style-authoryear-biber}
 This style implements an author"=year citation scheme. If the bibliography contains two or more works by the same author which were all published in the same year, a letter is appended to the year. For example, this style would print citations such as «Doe 1995a; Doe 1995b; Jones 1998». This style should be employed in conjunction with an author"=year bibliography style which prints the corresponding labels in the bibliography. It is primarily intended for in-text citations, but it could also be used with citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labeldateparts}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}.
 
-\item[authoryear-comp]
+\item[authoryear-comp]\seestyleexample{52-style-authoryear-comp-biber}
 A compact variant of the \texttt{authoryear} style which prints the author only once if subsequent references passed to a single citation command share the same author. If they share the same year as well, the year is also printed only once. For example, instead of «Doe 1995b; Doe 1992; Jones 1998; Doe 1995a» this style would print «Doe 1992, 1995a,b; Jones 1998». It is primarily intended for in-text citations, but it could also be used with citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{sortcites}{true}, \kvopt{labeldateparts}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}.
 
-\item[authoryear-ibid]
+\item[authoryear-ibid]\seestyleexample{51-style-authoryear-ibid-biber}
 A variant of the \texttt{authoryear} style which replaces repeated citations by the abbreviation \emph{ibidem} unless the citation is the first one on the current page or double-page spread, or the \emph{ibidem} would be ambiguous in the sense of the package option \kvopt{ibidtracker}{constrict}. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labeldateparts}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}, \kvopt{ibidtracker}{constrict}, \kvopt{pagetracker}{true}. This style also provides an additional preamble option called \opt{ibidpage}. See the style example for details.
 
-\item[authoryear-icomp]
+\item[authoryear-icomp]\seestyleexample{53-style-authoryear-icomp-biber}
 A style combining \texttt{authoryear-comp} and \texttt{authoryear-ibid}. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{labeldateparts}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}, \kvopt{ibidtracker}{constrict}, \kvopt{pagetracker}{true}, \kvopt{sortcites}{true}. This style also provides an additional preamble option called \opt{ibidpage}. See the style example for details.
 
-\item[authortitle]
+\item[authortitle]\seestyleexample{60-style-authortitle-biber}
 This style implements a simple author"=title citation scheme. It will make use of the \bibfield{shorttitle} field, if available. It is intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}.
 
-\item[authortitle-comp]
+\item[authortitle-comp]\seestyleexample{62-style-authortitle-comp-biber}
 A compact variant of the \texttt{authortitle} style which prints the author only once if subsequent references passed to a single citation command share the same author. For example, instead of «Doe, \emph{First title}; Doe, \emph{Second title}» this style would print «Doe, \emph{First title}, \emph{Second title}». It is intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{sortcites}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}.
 
-\item[authortitle-ibid]
+\item[authortitle-ibid]\seestyleexample{61-style-authortitle-ibid-biber}
 A variant of the \texttt{authortitle} style which replaces repeated citations by the abbreviation \emph{ibidem} unless the citation is the first one on the current page or double-page spread, or the \emph{ibidem} would be ambiguous in the sense of the package option \kvopt{ibidtracker}{constrict}. It is intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}, \kvopt{ibidtracker}{constrict}, \kvopt{pagetracker}{true}. This style also provides an additional preamble option called \opt{ibidpage}. See the style example for details.
 
-\item[authortitle-icomp]
+\item[authortitle-icomp]\seestyleexample{63-style-authortitle-icomp-biber}
 A style combining the features of \texttt{authortitle-comp} and \texttt{authortitle-ibid}. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}, \kvopt{ibidtracker}{constrict}, \kvopt{pagetracker}{true}, \kvopt{sortcites}{true}. This style also provides an additional preamble option called \opt{ibidpage}. See the style example for details.
 
-\item[authortitle-terse]
+\item[authortitle-terse]\seestyleexample{64-style-authortitle-terse-biber}
 A terse variant of the \texttt{authortitle} style which only prints the title if the bibliography contains more than one work by the respective author\slash editor. This style will make use of the \bibfield{shorttitle} field, if available. It is suitable for in-text citations as well as citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{singletitle}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}.
 
-\item[authortitle-tcomp]
+\item[authortitle-tcomp]\seestyleexample{65-style-authortitle-tcomp-biber}
 A style combining the features of \texttt{authortitle-comp} and \texttt{authortitle-terse}. This style will make use of the \bibfield{shorttitle} field, if available. It is suitable for in-text citations as well as citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{sortcites}{true}, \kvopt{singletitle}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}.
 
-\item[authortitle-ticomp]
+\item[authortitle-ticomp]\seestyleexample{66-style-authortitle-ticomp-biber}
 A style combining the features of \texttt{authortitle-icomp} and \texttt{authortitle-terse}. In other words: a variant of the \texttt{authortitle-tcomp} style with an \emph{ibidem} feature. This style is suitable for in-text citations as well as citations given in footnotes. It will set the following package options at load time: \kvopt{autocite}{inline}, \kvopt{ibidtracker}{constrict}, \kvopt{pagetracker}{true}, \kvopt{sortcites}{true}, \kvopt{singletitle}{true}, \kvopt{uniquename}{full}, \kvopt{uniquelist}{true}. This style also provides an additional preamble option called \opt{ibidpage}. See the style example for details.
 
-\item[verbose]
+\item[verbose]\seestyleexample{70-style-verbose-biber}
 A verbose citation style which prints a full citation similar to a bibliography entry when an entry is cited for the first time, and a short citation afterwards. If available, the \bibfield{shorttitle} field is used in all short citations. If the \bibfield{shorthand} field is defined, the shorthand is introduced on the first citation and used as the short citation thereafter. This style may be used without a list of references and shorthands since all bibliographic data is provided on the first citation. It is intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}. This style also provides an additional preamble option called \opt{citepages}. See the style example for details.
 
-\item[verbose-ibid]
+\item[verbose-ibid]\seestyleexample{71-style-verbose-ibid-biber}
 A variant of the \texttt{verbose} style which replaces repeated citations by the abbreviation \emph{ibidem} unless the citation is the first one on the current page or double-page spread, or the \emph{ibidem} would be ambiguous in the sense of \kvopt{ibidtracker}{strict}. This style is intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}, \kvopt{ibidtracker}{constrict}, \kvopt{pagetracker}{true}. This style also provides additional preamble options called \opt{ibidpage} and \opt{citepages}. See the style example for details.
 
-\item[verbose-note]
+\item[verbose-note]\seestyleexample{72-style-verbose-note-biber}
 This style is similar to the \texttt{verbose} style in that it prints a full citation similar to a bibliography entry when an entry is cited for the first time, and a short citation afterwards. In contrast to the \texttt{verbose} style, the short citation is a pointer to the footnote with the full citation. If the bibliography contains more than one work by the respective author\slash editor, the pointer also includes the title. If available, the \bibfield{shorttitle} field is used in all short citations. If the \bibfield{shorthand} field is defined, it is handled as with the \texttt{verbose} style. This style may be used without a list of references and shorthands since all bibliographic data is provided on the first citation. It is exclusively intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}, \kvopt{singletitle}{true}. This style also provides additional preamble options called \opt{pageref} and \opt{citepages}. See the style example for details.
 
-\item[verbose-inote]
+\item[verbose-inote]\seestyleexample{73-style-verbose-inote-biber}
 A variant of the \texttt{verbose"=note} style which replaces repeated citations by the abbreviation \emph{ibidem} unless the citation is the first one on the current page or double-page spread, or the \emph{ibidem} would be ambiguous in the sense of \kvopt{ibidtracker}{strict}. This style is exclusively intended for citations given in footnotes. It will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}, \kvopt{ibidtracker}{constrict}, \kvopt{singletitle}{true}, \kvopt{pagetracker}{true}. This style also provides additional preamble options called \opt{ibidpage}, \opt{pageref}, and \opt{citepages}. See the style example for details.
 
-\item[verbose-trad1]
+\item[verbose-trad1]\seestyleexample{74-style-verbose-trad1-biber}
 This style implements a traditional citation scheme. It is similar to the \texttt{verbose} style in that it prints a full citation similar to a bibliography entry when an item is cited for the first time, and a short citation afterwards. Apart from that, it uses the scholarly abbreviations \emph{ibidem}, \emph{idem}, \emph{op.~cit.}, and \emph{loc.~cit.} to replace recurrent authors, titles, and page numbers in repeated citations in a special way. If the \bibfield{shorthand} field is defined, the shorthand is introduced on the first citation and used as the short citation thereafter. This style may be used without a list of references and shorthands since all bibliographic data is provided on the first citation. It is intended for citations given in footnotes. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}, \kvopt{ibidtracker}{constrict}, \kvopt{idemtracker}{constrict}, \kvopt{opcittracker}{context}, \kvopt{loccittracker}{context}. This style also provides additional preamble options called \opt{ibidpage}, \opt{strict}, and \opt{citepages}. See the style example for details.
 
-\item[verbose-trad2]
+\item[verbose-trad2]\seestyleexample{75-style-verbose-trad2-biber}
 Another traditional citation scheme. It is also similar to the \texttt{verbose} style but uses scholarly abbreviations like \emph{ibidem} and \emph{idem} in repeated citations. In contrast to the \texttt{verbose-trad1} style, the logic of the \emph{op.~cit.} abbreviations is different in this style and \emph{loc.~cit.} is not used at all. It is in fact more similar to \texttt{verbose-ibid} and \texttt{verbose-inote} than to \texttt{verbose-trad1}. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}, \kvopt{ibidtracker}{constrict}, \kvopt{idemtracker}{constrict}. This style also provides additional preamble options called \opt{ibidpage}, \opt{strict}, and \opt{citepages}. See the style example for details.
 
-\item[verbose-trad3]
+\item[verbose-trad3]\seestyleexample{76-style-verbose-trad3-biber}
 Yet another traditional citation scheme. It is similar to the \texttt{verbose-trad2} style but uses the scholarly abbreviations \emph{ibidem} and \emph{op.~cit.} in a slightly different way. The style will set the following package options at load time: \kvopt{autocite}{footnote}, \kvopt{citetracker}{context}, \kvopt{ibidtracker}{constrict}, \kvopt{loccittracker}{constrict}. This style also provides additional preamble options called \opt{strict} and \opt{citepages}. See the style example for details.
 
-\item[reading]
+\item[reading]\seestyleexample{80-style-reading-biber}
 A citation style which goes with the bibliography style by the same name. It simply loads the \texttt{authortitle} style.
 
 \end{marglist}
@@ -2991,10 +3193,10 @@
 
 \begin{marglist}
 
-\item[draft]
+\item[draft]\seestyleexample{81-style-draft-biber}
 A draft style which uses the entry keys in citations. The style will set the following package options at load time: \kvopt{autocite}{plain}.
 
-\item[debug]
+\item[debug]\seestyleexample{82-style-debug-biber}
 This style prints the entry key rather than some kind of label. It is intended for debugging only and will set the following package options at load time: \kvopt{autocite}{plain}.
 
 \end{marglist}
@@ -3006,22 +3208,22 @@
 
 \begin{marglist}
 
-\item[numeric]
+\item[numeric]\seestyleexample{30-style-numeric-biber}
 This style prints a numeric label similar to the standard bibliographic facilities of \latex. It is intended for use in conjunction with a numeric citation style. Note that the \bibfield{shorthand} field overrides the default label. The style will set the following package options at load time: \kvopt{labelnumber}{true}. This style also provides an additional preamble option called \opt{subentry} which affects the formatting of entry sets. If this option is enabled, all members of a set are marked with a letter which may be used in citations referring to a set member rather than the entire set. See the style example for details.
 
-\item[alphabetic]
+\item[alphabetic]\seestyleexample{40-style-alphabetic-biber}
 This style prints an alphabetic label similar to the \path{alpha.bst} style of traditional \bibtex. It is intended for use in conjunction with an alphabetic citation style. Note that the \bibfield{shorthand} field overrides the default label. The style will set the following package options at load time: \kvopt{labelalpha}{true}, \kvopt{sorting}{anyt}.
 
-\item[authoryear]
+\item[authoryear]\seestyleexample{50-style-authoryear-biber}
 This style differs from the other styles in that the publication date is not printed towards the end of the entry but rather after the author\slash editor. It is intended for use in conjunction with an author"=year citation style. Recurring author and editor names are replaced by a dash unless the entry is the first one on the current page or double-page spread. This style provides an additional preamble option called \opt{dashed} which controls this feature. It also provided a preamble option called \opt{mergedate}. See the style example for details. The style will set the following package options at load time: \kvopt{labeldateparts}{true}, \kvopt{sorting}{nyt}, \kvopt{pagetracker}{true}, \kvopt{mergedate}{true}.
 
-\item[authortitle]
+\item[authortitle]\seestyleexample{60-style-authortitle-biber}
 This style does not print any label at all. It is intended for use in conjunction with an author"=title citation style. Recurring author and editor names are replaced by a dash unless the entry is the first one on the current page or double-page spread. This style also provides an additional preamble option called \opt{dashed} which controls this feature. See the style example for details. The style will set the following package options at load time: \kvopt{pagetracker}{true}.
 
-\item[verbose]
+\item[verbose]\seestyleexample{70-style-verbose-biber}
 This style is similar to the \texttt{authortitle} style. It also provides an additional preamble option called \opt{dashed}. See the style example for details. The style will set the following package options at load time: \kvopt{pagetracker}{true}.
 
-\item[reading]
+\item[reading]\seestyleexample{80-style-reading-biber}
 This special bibliography style is designed for personal reading lists, annotated bibliographies, and similar applications. It optionally includes the fields \bibfield{annotation}, \bibfield{abstract}, \bibfield{library}, and \bibfield{file} in the bibliography. If desired, it also adds various kinds of short headers to the bibliography. This style also provides the additional preamble options \opt{entryhead}, \opt{entrykey}, \opt{annotation}, \opt{abstract}, \opt{library}, and \opt{file} which control whether or not the corresponding items are printed in the bibliography. See the style example for details. See also \secref{use:use:prf}. The style will set the following package options at load time: \kvopt{loadfiles}{true}, \kvopt{entryhead}{true}, \kvopt{entrykey}{true}, \kvopt{annotation}{true}, \kvopt{abstract}{true}, \kvopt{library}{true}, \kvopt{file}{true}.
 
 \end{marglist}
@@ -3030,10 +3232,10 @@
 
 \begin{marglist}
 
-\item[draft]
+\item[draft]\seestyleexample{81-style-draft-biber}
 This draft style includes the entry keys in the bibliography. The bibliography will be sorted by entry key. The style will set the following package options at load time: \kvopt{sorting}{debug}.
 
-\item[debug]
+\item[debug]\seestyleexample{82-style-debug-biber}
 This style prints all bibliographic data in tabular format. It is intended for debugging only and will set the following package options at load time: \kvopt{sorting}{debug}.
 
 \end{marglist}
@@ -3216,39 +3418,39 @@
 
 \cmditem{iffieldannotation}[field][annotationname]{annotation}{true}{false}
 
-Executes \prm{true} if the data field \prm{field} has an annotation \prm{annotation} for the annotation called \prm{annotationname} and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives.
+Executes \prm{true} if the data field \prm{field} has an annotation \prm{annotation} for the annotation called \prm{annotationname} and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives.
 
 \cmditem{ifitemannotation}[field][annotationname][item]{annotation}{true}{false}
 
-Executes \prm{true} if the item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used.
+Executes \prm{true} if the item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used.
 
 \cmditem{ifpartannotation}[field][annotationname][item]{part}{annotation}{true}{false}
 
-Executes \prm{true} if the part named \prm{part} in item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument.
+Executes \prm{true} if the part named \prm{part} in item \prm{item} in the data field \prm{field} has an annotation \prm{annotation} and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument.
 
 Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to test annotations for dates.
 
 \cmditem{ifdateannotation}[annotationname]{datetype}{annotation}{true}{false}
 
-Executes \prm{true} if the date field \prm{datetype} has an annotation \prm{annotation} and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{ifdateannotation} will be used.
+Executes \prm{true} if the date field \prm{datetype} has an annotation \prm{annotation} and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{ifdateannotation} will be used.
 
 \cmditem{hasfieldannotation}[field][annotationname]{true}{false}
 
-Executes \prm{true} if the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives.
+Executes \prm{true} if the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives.
 
 \cmditem{hasitemannotation}[field][annotationname][item]{true}{false}
 
-Executes \prm{true} if the item \prm{item} in the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used.
+Executes \prm{true} if the item \prm{item} in the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{iffieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used.
 
 \cmditem{haspartannotation}[field][annotationname][item]{part}{true}{false}
 
-Executes \prm{true} if the part named \prm{part} in the item \prm{item} in the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument.
+Executes \prm{true} if the part named \prm{part} in the item \prm{item} in the data field \prm{field} has a literal annotation \prm{annotationname} defined and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{ifitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument.
 
 Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to test the existence of annotations for dates.
 
 \cmditem{hasdateannotation}[annotationname]{datetype}{true}{false}
 
-Executes \prm{true} if the date field \prm{datetype} has any annotation \prm{annotationname} defined and false otherwise. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{ifdateannotation} will be used.
+Executes \prm{true} if the date field \prm{datetype} has any annotation \prm{annotationname} defined and false otherwise. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{ifdateannotation} will be used.
 
 \end{ltxsyntax}
 %
@@ -3291,21 +3493,21 @@
 
 \cmditem{getfieldannotation}[field][annotationname]
 
-Retrieves any literal annotation for the field \prm{field}. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives.
+Retrieves any literal annotation for the field \prm{field}. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). If \prm{field} is not given, the current data field as indicated by \cmd{currentfield}, \cmd{currentlist} or \cmd{currentname} (see \secref{aut:bib:fmt}) is assumed. Of course, this is only possible if these commands are defined, that is, inside formatting directives.
 
 \cmditem{getitemannotation}[field][annotationname][item]
 
-Retrieves any literal annotation for the item \prm{item} in the field \prm{field}. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{getfieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used.
+Retrieves any literal annotation for the item \prm{item} in the field \prm{field}. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The optional argument \prm{field} can be inferred if not provided as with \cmd{getfieldannotation}. If \prm{item} is not given, the number of the item currently being processed as given by \cnt{listcount} is used.
 
 \cmditem{getpartannotation}[field][annotationname][item]{part}
 
-Retrieves any literal annotation for the part \prm{part}. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{getitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument.
+Retrieves any literal annotation for the part \prm{part}. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The two optional arguments \prm{field} and \prm{item} can be inferred as in \cmd{getitemannotation}. The parameter \prm{part} can never be inferred and is therefore a mandatory argument.
 
 Date fields are special and handled in a context where \cmd{currentfield} is not accessible. Thus there is a fourth command to access literal annotations for dates.
 
 \cmditem{getdateannotation}[annotationname]{datetype}
 
-Retrieve a literal annotation for the datefield \prm{datetype}. If \prm{annotatationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{getdateannotation} will be used.
+Retrieve a literal annotation for the datefield \prm{datetype}. If \prm{annotationname} is not given, then the annotation named <default> is assumed (this is the name given to annotations defined without an explicit name). The \prm{datetype} argument is mandatory, because it cannot be inferred in most contexts where \cmd{getdateannotation} will be used.
 
 \end{ltxsyntax}
 %
@@ -3337,11 +3539,14 @@
 
 \cmditem{addbibresource}[options]{resource}
 
-Adds a \prm{resource}, such as a \file{.bib} file, to the default resource list. This command is only available in the preamble. It replaces the \cmd{bibliography} legacy command. Note that files must be specified with their full name, including the extension. Do not omit the \file{.bib} extension from the filename. Also note that the \prm{resource} is a single resource. If the resources contain duplicate entries (that is, duplicate \bibfield{entrykey}s), it is backend dependent what then happens. For example, by default \biber will ignore further occurrence of \bibfield{entrykey}s unless its \opt{--noskipduplicates} options is used. Invoke \cmd{addbibresource} multiple times to add more resources, for example:
+Adds a \prm{resource}, such as a \file{.bib} file, to the default resource list. This command is only available in the preamble. It replaces the \cmd{bibliography} legacy command. Note that files must be specified with their full name, including the extension. With \biber, the resource name can be a BSD-style glob pattern. This only makes sense when resources refer to files with an absolute or relative path and does not work when looking for data resources in \biber s input/output directories or with resources located by \prm{kpsewhich} etc. When running on Windows, \biber will switch to a Windows compatible globbing mode where backslashes are also useable as path separators and case does not matter. If the resources contain duplicate entries (that is, duplicate \bibfield{entrykey}s), it is backend dependent what then happens. For example, by default \biber will ignore further occurrence of \bibfield{entrykey}s unless its \opt{--noskipduplicates} options is used. Invoke \cmd{addbibresource} multiple times to add more resources, for example:
 
 \begin{ltxexample}
 \addbibresource{bibfile1.bib}
 \addbibresource{bibfile2.bib}
+\addbibresource{bibfiles/bibfile*.bib}
+\addbibresource{bibfile-num?.bib}
+\addbibresource{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}
@@ -3423,11 +3628,11 @@
 
 The postnote is an arbitrary piece of text to be printed after the list of references. This option selects the postnote \prm{name}, as defined with \cmd{defbibnote}. By default, no postnote is printed. The note is printed in the standard text font. It is not affected by \cmd{bibsetup} and \cmd{bibfont} but it may contain its own font declarations. See \secref{use:bib:nts} for details.
 
-\intitem[current section]{section}
+\intitem[\normalfont\em current section]{section}
 
 Print only entries cited in reference section \prm{integer}. The reference sections are numbered starting at~1. All citations given outside a \env{refsection} environment are assigned to section~0. See \secref{use:bib:sec} for details and \secref{use:use:mlt} for usage examples.
 
-\intitem[0]{segment}
+\intitem{segment}
 
 Print only entries cited in reference segment \prm{integer}. The reference segments are numbered starting at~1. All citations given outside a \env{refsegment} environment are assigned to segment~0. See \secref{use:bib:seg} for details and \secref{use:use:mlt} for usage examples. Remember that segments within a section are numbered local to the section so the segment you request will be the nth segment in the requested (or currently active enclosing) section.
 
@@ -3503,6 +3708,19 @@
 
 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]
+
+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
+\begin{itemize}
+  \item \opt{env}
+  \item \opt{heading}
+  \item \opt{title}
+  \item \opt{prenote}
+  \item \opt{postnote}
+  \item \opt{filter}
+\end{itemize}
+
 \end{ltxsyntax}
 %
 To print a bibliography with a different sorting template than the global sorting template, use the bibliography context switching commands from \secref{use:bib:context}.
@@ -4030,7 +4248,7 @@
 \cmditem{assignrefcontextentries*}[key=value, \dots]{*}
 
 \end{ltxsyntax}
-These commands automate putting citations into refcontexts when the default behaviour is not sufficient. The \prm{key=value} options are as for \cmd{DeclareRefcontext}. The default behaviour is that the data for a citation is drawn from the refcontext of the last bibliography in which it was printed. 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}
@@ -4069,7 +4287,7 @@
 \subsection{Citation Commands}
 \label{use:cit}
 
-All citation commands generally take one mandatory and two optional arguments. The \prm{prenote} is text to be printed at the beginning of the citation. This is usually a notice such as <see> or <compare>. The \prm{postnote} is text to be printed at the very end of the citation. This is usually a page number. If only one of these arguments is given, it is taken as a postnote. If you want to specify a prenote but no postnote, you need to leave the second optional argument empty, as in |\cite[see][]{key}|. The \prm{key} argument to all citation commands is mandatory. This is the entry key or a comma"=separated list of keys corresponding to the entry keys in the \sty{bib} file. In sum, all basic citations commands listed further down have the following syntax:
+All citation commands generally take one mandatory and two optional arguments. The \prm{prenote} is text to be printed at the beginning of the citation. This is usually a notice such as <see> or <compare>. The \prm{postnote} is text to be printed at the very end of the citation. This is usually a page number. If only one of these arguments is given, it is taken as a postnote. If you want to specify a prenote but no postnote, you need to leave the second optional argument empty, as in |\cite[see][]{key}|. The \prm{key} argument to all citation commands is mandatory. This is the entry key or a comma"=separated list of keys corresponding to the entry keys in the \file{bib} file. In sum, all basic citations commands listed further down have the following syntax:
 
 \begin{ltxsyntax}
 
@@ -4289,63 +4507,63 @@
 
 Similar to \cmd{fullcite} but puts the entire citation in a footnote and adds a period at the end.
 
-\cmditem{volcite}[prenote]{volume}[page]{key}
-\cmditem{Volcite}[prenote]{volume}[page]{key}
+\cmditem{volcite}[prenote]{volume}[pages]{key}
+\cmditem{Volcite}[prenote]{volume}[pages]{key}
 
-These commands are similar to \cmd{cite} and \cmd{Cite} but intended for references to multi"=volume works which are cited by volume and page number. Instead of the \prm{postnote}, they take a mandatory \prm{volume} and an optional \prm{page} argument. Since they merely compose the postnote and pass it to the \cmd{cite} command provided by the citation style as a \prm{postnote} argument, these commands are style independent. The format of the volume portion is controlled by the field formatting directive \opt{volcitevolume}, the format of the page/text portion is controlled by the field formatting directive \opt{volcitepages} (\secref{aut:fmt:ich}). The delimiter printed between the volume portion and the page/text portion may be modified by redefining the macro \cmd{volcitedelim} (\secref{aut:fmt:fmt}).
+These commands are similar to \cmd{cite} and \cmd{Cite} but intended for references to multi"=volume works which are cited by volume and page number. Instead of the \prm{postnote}, they take a mandatory \prm{volume} and an optional \prm{pages} argument. Since they merely compose the postnote and pass it to the \cmd{cite} command provided by the citation style as a \prm{postnote} argument, these commands are style independent. The volume and pages/text portion are formatted with the macro \cmd{mkvolcitenote} when they are passed on to the citation command. Additionally they are made available in the special fields \bibfield{volcitevolume} and \bibfield{volcitevolume} (\secref{aut:cbx:fld}) The format of the volume portion is controlled by the field formatting directive \opt{volcitevolume}, the format of the pages/text portion is controlled by the field formatting directive \opt{volcitepages} (\secref{aut:fmt:ich}). The delimiter printed between the volume portion and the pages/text portion may be modified by redefining the macro \cmd{volcitedelim} (\secref{aut:fmt:fmt}).
 
-\cmditem{volcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
-\cmditem{Volcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
+\cmditem{volcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
+\cmditem{Volcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
 
 The multicite version of \cmd{volcite} and \cmd{Volcite}, respectively.
 
-\cmditem{pvolcite}[prenote]{volume}[page]{key}
-\cmditem{Pvolcite}[prenote]{volume}[page]{key}
+\cmditem{pvolcite}[prenote]{volume}[pages]{key}
+\cmditem{Pvolcite}[prenote]{volume}[pages]{key}
 
 Similar to \cmd{volcite} but based on \cmd{parencite}.
 
-\cmditem{pvolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
-\cmditem{Pvolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
+\cmditem{pvolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
+\cmditem{Pvolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
 
 The multicite version of \cmd{pvolcite} and \cmd{Pvolcite}, respectively.
 
-\cmditem{fvolcite}[prenote]{volume}[page]{key}
-\cmditem{ftvolcite}[prenote]{volume}[page]{key}
+\cmditem{fvolcite}[prenote]{volume}[pages]{key}
+\cmditem{ftvolcite}[prenote]{volume}[pages]{key}
 
 Similar to \cmd{volcite} but based on \cmd{footcite} and \cmd{footcitetext}, respectively.
 
-\cmditem{fvolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
-\cmditem{Fvolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
+\cmditem{fvolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
+\cmditem{Fvolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
 
 The multicite version of \cmd{fvolcite} and \cmd{Fvolcite}, respectively.
 
-\cmditem{svolcite}[prenote]{volume}[page]{key}
-\cmditem{Svolcite}[prenote]{volume}[page]{key}
+\cmditem{svolcite}[prenote]{volume}[pages]{key}
+\cmditem{Svolcite}[prenote]{volume}[pages]{key}
 
 Similar to \cmd{volcite} but based on \cmd{smartcite}.
 
-\cmditem{svolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
-\cmditem{Svolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
+\cmditem{svolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
+\cmditem{Svolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
 
 The multicite version of \cmd{svolcite} and \cmd{Svolcite}, respectively.
 
-\cmditem{tvolcite}[prenote]{volume}[page]{key}
-\cmditem{Tvolcite}[prenote]{volume}[page]{key}
+\cmditem{tvolcite}[prenote]{volume}[pages]{key}
+\cmditem{Tvolcite}[prenote]{volume}[pages]{key}
 
 Similar to \cmd{volcite} but based on \cmd{textcite}.
 
-\cmditem{tvolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
-\cmditem{Tvolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
+\cmditem{tvolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
+\cmditem{Tvolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
 
 The multicite version of \cmd{tvolcite} and \cmd{Tvolcite}, respectively.
 
-\cmditem{avolcite}[prenote]{volume}[page]{key}
-\cmditem{Avolcite}[prenote]{volume}[page]{key}
+\cmditem{avolcite}[prenote]{volume}[pages]{key}
+\cmditem{Avolcite}[prenote]{volume}[pages]{key}
 
 Similar to \cmd{volcite} but based on \cmd{autocite}.
 
-\cmditem{avolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
-\cmditem{Avolcites}(multiprenote)(multipostnote)[prenote]{volume}[page]{key}|\\...|[prenote]{volume}[page]{key}
+\cmditem{avolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
+\cmditem{Avolcites}(multiprenote)(multipostnote)[prenote]{volume}[pages]{key}|\\...|[prenote]{volume}[pages]{key}
 
 The multicite version of \cmd{avolcite} and \cmd{Avolcite}, respectively.
 
@@ -4425,6 +4643,14 @@
 
 Similar to \cmd{psq} but indicates an open-ended page range. See \secref{use:cav:pag} for further details and usage instructions. The suffix printed is the localisation string \texttt{sequentes}, see \secref{aut:lng:key}. This command is only available locally in citations and the bibliography.
 
+\cmditem{pnfmt}{text}
+
+This command formats is argument \prm{text} in the same format as \bibfield{postnote}. The command can be used to format a page range while adding additional text in the postnote argument of a cite command.
+
+\begin{ltxexample}
+\autocite[\pnfmt{378-381, 383} and more]{sigfridsson}
+\end{ltxexample}
+
 \cmditem{RN}{integer}
 
 This command prints an integer as an uppercase Roman numeral. The formatting applied to the numeral may be modified by redefining the macro \cmd{RNfont}.
@@ -4621,28 +4847,28 @@
 The punctuation printed between bibliography subentries of an entry set. The default definition is a semicolon and a space.
 
 \csitem{bibnamedelima}
-This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically after the first name element if the element is less than three characters long and before the last element. The default definition is an interword space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
+This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically by the backend after the first name element if the element is less than three characters long and before the last element. The default definition is \cmd{addhighpenspace}, \ie a space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibnamedelimb}
-This delimiter is inserted between the elements which make up a name part where \cmd{bibnamedelima} does not apply. The default definition is an interword space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
+This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically by the backend between all name elements where \cmd{bibnamedelima} does not apply. The default definition is \cmd{addlowpenspace}, \ie a space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibnamedelimc}
-This delimiter controls the spacing between name parts. It is inserted between the name prefix and the family name if \kvopt{useprefix}{true}. The default definition is an interword space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
+This delimiter controls the spacing between name parts. The default name formats use it between the name prefix and the family name if \kvopt{useprefix}{true}. The default definition is \cmd{addhighpenspace}, \ie a space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibnamedelimd}
-This delimiter is inserted between all name parts where \cmd{bibnamedelimc} does not apply. The default definition is an interword space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
+This delimiter controls the spacing between name parts. The default name formats use it between all name parts where \cmd{bibnamedelimc} does not apply. The default definition is \cmd{addlowpenspace}, \ie a space penalized by the value of the \cnt{lownamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibnamedelimi}
 This delimiter replaces \cmd{bibnamedelima/b} after initials. Note that this only applies to initials given as such in the \file{bib} file, not to the initials automatically generated by \biblatex which use their own set of delimiters.
 
 \csitem{bibinitperiod}
-The punctuation inserted after initials unless \cmd{bibinithyphendelim} applies. The default definition is a period (\cmd{adddot}). Please refer to \secref{use:cav:nam} for further details.
+The punctuation inserted automatically by the backend after all initials unless \cmd{bibinithyphendelim} applies. The default definition is a period (\cmd{adddot}). Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibinitdelim}
-The spacing inserted between multiple initials unless \cmd{bibinithyphendelim} applies. The default definition is an unbreakable interword space. Please refer to \secref{use:cav:nam} for further details.
+The spacing inserted automatically by the backend between multiple initials unless \cmd{bibinithyphendelim} applies. The default definition is an unbreakable interword space. Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibinithyphendelim}
-The punctuation inserted between the initials of hyphenated name parts, replacing \cmd{bibinitperiod} and \cmd{bibinitdelim}. The default definition is a period followed by an unbreakable hyphen. Please refer to \secref{use:cav:nam} for further details.
+The punctuation inserted automatically by the backend between the initials of hyphenated name parts, replacing \cmd{bibinitperiod} and \cmd{bibinitdelim}. The default definition is a period followed by an unbreakable hyphen. Please refer to \secref{use:cav:nam} for further details.
 
 \csitem{bibindexnamedelima}
 Replaces \cmd{bibnamedelima} in the index.
@@ -4669,7 +4895,7 @@
 Replaces \cmd{bibinithyphendelim} in the index.
 
 \csitem{revsdnamepunct}
-The punctuation to be printed between the first and family name parts when a name is reversed. Here is an example showing a name with the default comma as \cmd{revsdnamedelim}:
+The punctuation to be printed between the given and family name parts when a name is reversed. The default is a comma. Here is an example showing a name with the default comma as \cmd{revsdnamedelim}:
 
 \begin{ltxexample}
 Jones<<,>> Edward
@@ -4738,36 +4964,6 @@
 \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.
 
-\csitem{datecircadelim}\CSdelimMark
-When formatting dates with the global option \opt{datecirca} enabled, the delimiter printed after any localised <circa> term. Defaults to interword space.
-
-\csitem{dateeradelim}\CSdelimMark
-When formatting dates with the global option \opt{dateera} set, the delimiter printed before the localisation era term. Defaults to interword space.
-
-\csitem{dateuncertainprint}
-Prints date uncertainty information when the global option \opt{dateuncertain} is enabled and the \cmd{ifdateuncertain} test is true. By default, prints the language specific \cmd{bibdateuncertain} string (\secref{use:fmt:lng}).
-
-\csitem{enddateuncertainprint}
-Prints date uncertainty information when the global option \opt{dateuncertain} is enabled and the \cmd{ifenddateuncertain} test is true. By default, prints the language specific \cmd{bibdateuncertain} string (\secref{use:fmt:lng}).
-
-\csitem{datecircaprint}
-Prints date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifdatecirca} test is true. By default, prints the <circa> localised term (\secref{aut:lng:key:dt}) and the \opt{datecircadelim} delimiter.
-
-\csitem{enddatecircaprint}
-Prints date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifenddatecirca} test is true. By default, prints the <circa> localised term (\secref{aut:lng:key:dt}) and the \opt{datecircadelim} delimiter.
-
-\csitem{datecircaprintiso}
-Prints \acr{ISO8601-2} format date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifdatecirca} test is true. Prints \cmd{textasciitilde}.
-
-\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}
-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}
-Prints date era information when the global option \opt{dateera} is set to <astronomical>. By default, prints \opt{bibdataeraprefix}. Detects whether the start or end year era information is to be printed by looking at the \prm{yearfield} name passed to it.
-
 \csitem{textcitedelim}
 Similar to \cmd{multicitedelim}, but used by \cmd{textcite} and related commands (\secref{use:cit:cbx}). The default is a comma plus an interword space. The standard styles modify this provisional definition to ensure that the delimiter before the final citation is the localised term <and>, separated by interword spaces. See also \cmd{finalandcomma} and \cmd{finalandsemicolon} in \secref{use:fmt:lng}.
 
@@ -4784,13 +4980,13 @@
 The delimiter printed between the substitute for the labelname when it does not exist (usually the label or title in standard styles) and the year in author-year citation and bibliography styles. This is only used when there is no labelname since when the labelname exists, \cmd{nameyeardelim} is used. The default definition is an interword space.
 
 \csitem{authortypedelim}\CSdelimMark
-The delimiter printed between the author and the \texttt{authortype}.
+The delimiter printed between the author and the \texttt{authortype}. The default is a comma followed by a space.
 
 \csitem{editortypedelim}\CSdelimMark
-The delimiter printed between the editor and the \texttt{editor} or \texttt{editortype} string.
+The delimiter printed between the editor and the \texttt{editor} or \texttt{editortype} string. The default is a comma followed by a space.
 
 \csitem{translatortypedelim}\CSdelimMark
-The delimiter printed between the translator and the \texttt{translator} string.
+The delimiter printed between the translator and the \texttt{translator} string. The default is a comma followed by a space.
 
 \csitem{labelalphaothers}
 A string to be appended to the non"=numeric portion of the \bibfield{labelalpha} field (\ie the field holding the citation label used by alphabetic citation styles) if the number of authors\slash editors exceeds the \opt{maxalphanames} threshold or the \bibfield{author}\slash \bibfield{editor} list was truncated in the \file{bib} file with the keyword <\texttt{and others}>. This will typically be a single character such as a plus sign or an asterisk. The default is a plus sign. This command may also be redefined to an empty string to disable this feature. In any case, it must be redefined in the preamble.
@@ -4805,15 +5001,28 @@
 %
 If \cmd{sortalphaothers} is not redefined, it defaults to \cmd{labelalphaothers}.
 
-\csitem{prenotedelim}
+\csitem{volcitedelim}
+The delimiter printed between the volume portion and the page/text portion of \cmd{volcite} and related commands (\secref{use:cit:spc}).
+
+\cmditem{mkvolcitenote}{volume}{pages}
+
+This macro formats the \prm{volume} and \prm{pages} arguments of \cmd{volcite} and related commands (\secref{use:cit:spc}) when they are passed on to the underlying citation command.
+
+\csitem{prenotedelim}\CSdelimMark
 The delimiter printed after the \prm{prenote} argument of a citation command. See \secref{use:cit} for details. The default is an interword space.
 
-\csitem{postnotedelim}
+\csitem{postnotedelim}\CSdelimMark
 The delimiter printed before the \prm{postnote} argument of a citation command. See \secref{use:cit} for details. The default is a comma plus an interword space.
 
-\csitem{extpostnotedelim}
+\csitem{extpostnotedelim}\CSdelimMark
 The delimiter printed between the citation and the parenthetical \prm{postnote} argument of a citation command when the postnote occurs outside of the citation parentheses. In the standard styles, this occurs when the citation uses the shorthand field of the entry. See \secref{use:cit} for details. The default is an interword space.
 
+\csitem{multiprenotedelim}\CSdelimMark
+The delimiter printed after the \prm{multiprenote} argument of a citation command. See \secref{use:cit} for details. The default is \cs{prenotedelim}.
+
+\csitem{multipostnotedelim}\CSdelimMark
+The delimiter printed before the \prm{multipostnote} argument of a citation command. See \secref{use:cit} for details. The default is \cs{postnotedelim}.
+
 \cmditem{mkbibname<namepart>}{text}
 This command, which takes one argument, is used to format the name part <namepart> of name list fields. The default datamodel defines the name parts <family>, <given>, <prefix> and <suffix> and therefore the following macros are automatically defined:
 
@@ -4832,6 +5041,48 @@
 \mkbibnameaffix
 \end{ltxexample}
 
+\csitem{mkbibcompletenamefamily}{text}
+This command, which takes one argument, is used to format the complete name in \texttt{family} format order.
+
+\csitem{mkbibcompletenamefamilygiven}{text}
+This command, which takes one argument, is used to format the complete name in \texttt{family-given} format order.
+
+\csitem{mkbibcompletenamegivenfamily}{text}
+This command, which takes one argument, is used to format the complete name in \texttt{given-family} format order.
+
+\cmditem{mkbibcompletename}{text}
+The initial value of all default formatting hooks \cmd{mkbibcompletename<formatorder>}.
+
+\csitem{datecircadelim}\CSdelimMark
+When formatting dates with the global option \opt{datecirca} enabled, the delimiter printed after any localised <circa> term. Defaults to interword space.
+
+\csitem{dateeradelim}\CSdelimMark
+When formatting dates with the global option \opt{dateera} set, the delimiter printed before the localisation era term. Defaults to interword space.
+
+\csitem{dateuncertainprint}
+Prints date uncertainty information when the global option \opt{dateuncertain} is enabled and the \cmd{ifdateuncertain} test is true. By default, prints the language specific \cmd{bibdateuncertain} string (\secref{use:fmt:lng}).
+
+\csitem{enddateuncertainprint}
+Prints date uncertainty information when the global option \opt{dateuncertain} is enabled and the \cmd{ifenddateuncertain} test is true. By default, prints the language specific \cmd{bibdateuncertain} string (\secref{use:fmt:lng}).
+
+\csitem{datecircaprint}
+Prints date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifdatecirca} test is true. By default, prints the <circa> localised term (\secref{aut:lng:key:dt}) and the \opt{datecircadelim} delimiter.
+
+\csitem{enddatecircaprint}
+Prints date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifenddatecirca} test is true. By default, prints the <circa> localised term (\secref{aut:lng:key:dt}) and the \opt{datecircadelim} delimiter.
+
+\csitem{datecircaprintiso}
+Prints \acr{ISO8601-2} format date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifdatecirca} test is true. Prints \cmd{textasciitilde}.
+
+\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}
+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}
+Prints date era information when the global option \opt{dateera} is set to <astronomical>. By default, prints \opt{bibdataeraprefix}. Detects whether the start or end year era information is to be printed by looking at the \prm{yearfield} name passed to it.
+
 \csitem{relatedpunct}
 The separator between the \bibfield{relatedtype} bibliography localisation string and the data from the first related entry. Here is an example with \cmd{relatedpunct} set to a dash:
 
@@ -5011,6 +5262,10 @@
 
 The language specific marker which separates time components. Defaults to a colon.
 
+\csitem{bibutctimezone}
+
+The language specific string printed for the UTC timezone. Defaults to <Z>.
+
 \csitem{bibtimezonesep}
 
 The language specific marker which separates an optional time zone component from a time. Empty by default.
@@ -5078,7 +5333,7 @@
 
 \lenitem{bibhang}
 
-The hanging indentation of the bibliography, if applicable. This length is initialized to \cmd{parindent} at load-time.
+The hanging indentation of the bibliography, if applicable. This length is initialized to \cmd{parindent} at load-time. If \cmd{parindent} is zero length for some reason, \cmd{bibhang} will default to \texttt{1em}.
 
 \lenitem{biblabelsep}
 
@@ -5112,6 +5367,42 @@
 
 Similar to \cnt{highnamepenalty}. Please refer to \secref{use:cav:nam,use:fmt:fmt} for explanation. The counter is initialized to half the \cmd{hyphenpenalty} at load-time. Use a higher value if you dislike the respective linebreaks. If you do not mind them at all, set this counter to zero.
 
+\cntitem{biburlnumpenalty}
+
+If this counter is set to a value greater than zero, \biblatex will permit linebreaks after numbers in all strings formatted with the \cmd{url} command from the \sty{url} package. This will affect \acr{url}s and \acr{doi}s in the bibliography. The breakpoints will be penalized by the value of this counter. If \acr{url}s and/or \acr{doi}s in the bibliography run into the margin, try setting this counter to a value greater than zero but less than 10000 (you normally want to use a high value like 9000). Setting the counter to zero disables this feature. This is the default setting.
+
+\cntitem{biburlucpenalty}
+
+Similar to \cnt{biburlnumpenalty}, except that it will add a breakpoint after all uppercase letters.
+
+\cntitem{biburllcpenalty}
+
+Similar to \cnt{biburlnumpenalty}, except that it will add a breakpoint after all lowercase letters.
+
+\cntitem{biburlbigbreakpenalty}
+
+The \sty{biblatex} version of \sty{url}'s \len{UrlBigBreakPenalty}. The default value is \texttt{100}.
+
+\cntitem{biburlbreakpenalty}
+
+The \sty{biblatex} version of \sty{url}'s \len{UrlBreakPenalty}. The default value is \texttt{200}.
+
+\lenitem{biburlbigskip}
+
+The \sty{biblatex} version of \len{Urlmuskip}. This length holds the additional (stretchable) space inserted around breakable characters in the \cmd{url} command from the \sty{url} package. The default value is \texttt{0mu plus 3mu}.
+
+\lenitem{biburlnumskip}
+
+The additional space inserted after numbers in strings formatted with the \cmd{url} command from the \sty{url} package. This will affect \acr{url}s and \acr{doi}s in the bibliography. If \acr{url}s and/or \acr{doi}s in the bibliography run into the margin, it may help to set this length to add some small stretchable space, for example \texttt{0mu plus 1mu}. The default setting is \texttt{0mu}. This value is only used if \cnt{biburlnumpenalty} is set to a value different from zero.
+
+\lenitem{biburlucskip}
+
+Similar to \cnt{biburlnumskip}, except that it will add space after all uppercase letters.
+
+\lenitem{biburllcskip}
+
+Similar to \cnt{biburlnumskip}, except that it will add space after all uppercase letters.
+
 \end{ltxsyntax}
 
 \subsubsection{All-purpose Commands}
@@ -5143,7 +5434,7 @@
 
 \csitem{nohyphenation}
 
-A generic switch which suppresses hyphenation locally. Its scope should normally be confined to a group.
+A generic switch which suppresses hyphenation locally. Its scope should normally be confined to a group. The command uses a language without hyphenation patterns to suppress hyphenation. The idea was taken from Peter Wilson's \sty{hyphenat} package. Note that this command should only be used for small portions of text and that its effects are negated if \sty{babel}/\sty{polyglossia} is used to switch the language while it is active.
 
 \cmditem{textnohyphenation}{text}
 
@@ -5247,9 +5538,13 @@
 \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 number as a prefix following Hungarian convention, and all formats of fields involving pages were modified so that page ranges are printed as ordinal ranges. 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.
+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}
 
@@ -6080,6 +6375,8 @@
 
 If a bibliography driver covers more than one entry type, this command may be used to define an alias where \prm{entrytype} is the name of a defined driver. This command is optional. The \prm{alias} argument may also be an asterisk. In this case, the \prm{entrytype} driver serves as a fallback which is used if no specific driver for an entry has been defined.
 
+Note that an alias declared with \cmd{DeclareBibliographyAlias} only <reroutes> the bibliography driver from \prm{alias} to \prm{entrytype}. Type-specific formatting directives still operate with the old \prm{alias} name. \cmd{DeclareBibliographyAlias} thus provides only a <soft> alias. If a complete alias is desired so that \prm{alias} and \prm{entrytype} are completely indistinguishable and use the same type-specific formatting, an approach with source mapping would be more appropriate (cf.~the mappings for \secref{bib:typ:als} in \secref{apx:maps:bibtex}, this would give a <hard> alias).
+
 \cmditem{DeclareBibliographyOption}[datatype]{key}[value]{code}
 
 This command defines additional preamble options in \keyval format. The \prm{key} is the option key. The \prm{code} is arbitrary \tex code to be executed whenever the option is used. The value passed to the option is passed on to the \prm{code} as |#1|. The optional \prm{value} is a default value to be used if the bare key is given without any value. This is useful for boolean switches.
@@ -6095,10 +6392,18 @@
 \DeclareDatamodelConstant[type=list]{optiondatatypes}{boolean,integer,string,xml}
 \end{ltxexample}
 
+\cmditem{DeclareTypeOption}[datatype]{key}[value]{code}
+
+Similar to \cmd{DeclareBibliographyOption} but defines options which are settable on a per"=type basis using the optional argument of \cmd{ExecuteBibliographyOptions} (see \secref{use:cfg:opt}). The \prm{code} is executed whenever \biblatex prepares the data of an entry of the type for which the option has been set for use by a citation command or a bibliography driver.
+
 \cmditem{DeclareEntryOption}[datatype]{key}[value]{code}
 
 Similar to \cmd{DeclareBibliographyOption} but defines options which are settable on a per"=entry basis in the \bibfield{options} field from \secref{bib:fld:spc}. The \prm{code} is executed whenever \biblatex prepares the data of the entry for use by a citation command or a bibliography driver.
 
+\cmditem{DeclareBiblatexOption}{scope,\dots}[datatype]{key}[value]{code}
+
+This command is a convenient interface to declare an option for several scopes at once. The \prm{scope} argument may be a comma"=separated list of scopes for which the option will be declared. Currently the scopes \opt{global}, \opt{type}, \opt{entry}, \opt{namelist} and \opt{name} are supported, the first three of which are equivalent to defining the option with \cmd{DeclareBibliographyOption}, \cmd{DeclareTypeOption} and \cmd{DeclareEntryOption}, respectively.
+
 \end{ltxsyntax}
 
 \subsubsection{Bibliography Environments}
@@ -6215,9 +6520,9 @@
                                     {prefix,family,suffix,given}
 \end{ltxexample}
 %
-This can be customised to add more name parts to deal with things like patronymics (see the example file \file{93-nameparts.tex}). Naturally this needs an extended name format for data sources. \biblatexml (\secref{apx:biblatexml}) handles this natively and there is an extended name format which can handle custom nameparts available when using \biber (see \biber documentation).
+This can be customised to add more name parts to deal with things like patronymics (see the example file \file{93-nameparts.tex}). This needs an extended name format for data sources since the standard \bibtex name format is very limited. \biblatexml (\secref{apx:biblatexml}) handles this natively and there is an extended name format which can handle custom nameparts when using \biber (see \biber documentation).
 
-Inside name formats, the nameparts constant declaration makes available two or three macros for each name part defined in the datamodel:
+Inside name formats, the <nameparts> constant declaration makes available two or three macros for each name part defined in the datamodel:
 
 \begin{ltxexample}
 \namepart<namepart>   \% The full <namepart>
@@ -6291,9 +6596,15 @@
 
 The entry key of an item in the \file{bib} file. This is the string used by \biblatex and the backend to identify an entry in the \file{bib} file.
 
-\fielditem{childentrykey}{string}\DeprecatedMark
+Note that the set of characters allowed and usable in the string for \bibfield{entrykey} depends on the backend (\biber, \bibtex) as well as the \latex engine (\pdflatex, \lualatex, \xelatex).
+Generally, ASCII-letters (\texttt{a-z}, \texttt{A-Z}) and numbers (\texttt{0-9}) are safe, so are the punctuation characters full stop (\texttt{.}) and solidus (\texttt{/}). The punctuation characters \texttt{-\_:;!?} are also safe even if they are made active by \sty{babel}/\sty{polyglossia}. If a Unicode engine is used, non-ASCII characters are also acceptable.
+Curly braces (\texttt{\{\}}), commas, spaces, backslashes (\texttt{\textbackslash}), hashes (\texttt{\#}), percent characters (\texttt{\%}) and tildes (\texttt{\textasciitilde}) are always forbidden. \biber additionally forbids round brackets (\texttt{()}), quotation marks (\texttt{\textquotedbl}, \texttt{\textquotesingle}), and the equals sign (\texttt{=}).
+The \bibfield{entrykey} is case sensitive, but it is not recommended to exploit that fact too much by introducing two different entries whose key differs only in capitalisation (\eg\ \texttt{sigfridsson} and \texttt{Sigfridsson}).
+For full portability it is advisable to stick to a scheme of lowercase (and if so desired uppercase) ASCII-letters, numbers and a small set of acceptable punctuation characters, say \texttt{.:-}.
 
-This field is no longer necessary or recommended. For backwards
+\fielditem{childentrykey}{string}
+
+This field is no longer necessary or recommended.\DeprecatedMark For backwards
 compatibility, it is merely a copy of the \bibfield{entrykey} field in any
 set children.
 
@@ -6340,9 +6651,9 @@
 
 The entry type (\bibtype{book}, \bibtype{inbook}, etc.), given in lowercase letters.
 
-\fielditem{childentrytype}{string}\DeprecatedMark
+\fielditem{childentrytype}{string}
 
-This field is no longer necessary or recommended. For backwards
+This field is no longer necessary or recommended.\DeprecatedMark For backwards
 compatibility, it is merely a copy of the \bibfield{entrytype} field in any
 set children.
 
@@ -7022,6 +7333,14 @@
 
 The \prm{multipostnote} argument passed to a multicite command. This field is specific to citations and not available in the bibliography. If the \prm{multipostnote} argument is missing or empty, this field is undefined.
 
+\fielditem{volcitevolume}{literal}
+
+The \prm{volume} argument passed to \cmd{volcite} or a related citation command (\secref{use:cit:spc}). This field is specific to \cmd{volcite} citations and not available in the bibliography or other citations.
+
+\fielditem{volcitepages}{literal}
+
+The \prm{pages} argument passed to \cmd{volcite} or a related citation command (\secref{use:cit:spc}). This field is specific to \cmd{volcite} citations and not available in the bibliography or other citations. If the \prm{pages} argument is missing or empty, this field is undefined.
+
 \fielditem{postpunct}{punctuation command}
 
 The trailing punctuation argument implicitly passed to a citation command. This field is specific to citations and not available in the bibliography. If the character following a given citation command is not specified in \cmd{DeclareAutoPunctuation} (\secref{aut:pct:cfg}), this field is undefined.
@@ -7159,7 +7478,7 @@
 
 \cmditem{DeclareFieldInputHandler}{field}{code}
 
-This command can be used to define a data input handler for \prm{field} when it is read from the \file{.bbl}. Within the \prm{code}, the macro \cmd{NewValue} contains the value of the field. For example, to ignore the \bibfield{volumes} field when it appears, you could do
+This command can be used to define a data input handler for \prm{field} when it is read from the \file{.bbl}. The \prm{code} is passed one argument (\lstinline{#1}), which contains the input field value, it should then redefine the command \cmd{NewValue}, which holds the desired output field value. For example, to ignore the \bibfield{volumes} field when it appears, you could do
 
 \begin{ltxexample}
 \DeclareFieldInputHandler{volumes}{\def\NewValue{}}
@@ -7167,15 +7486,23 @@
 %
 Generally, you would want to use \cmd{DeclareSourcemap} (see \secref{aut:ctm:map}) to remove and modify fields but this alternative method may be useful in some circumstances when the emphasis is on appearance rather than data since the \prm{code} can be arbitraty \tex.
 
+In general, \cmd{DeclareFieldInputHandler} should not be used to apply formatting to a field, since that should happen with \cmd{DeclareFieldFormat}, so the following is just a toy example that shows how \cmd{DeclareFieldInputHandler} works.
+
+\begin{ltxexample}
+\DeclareFieldInputHandler{volumes}{\def\NewValue{\textbf{#1}}}
+\end{ltxexample}
+
 \cmditem{DeclareListInputHandler}{list}{code}
 
 As \cmd{DeclareFieldInputHandler} but for lists. Within the \prm{code}, the macro \cmd{NewValue}
 contains the value of the list and \cmd{NewCount} contains the number of items in the list.
+Note that \cmd{NewValue} as well as the single argument to \prm{code} contain the internal representation of the list.
 
 \cmditem{DeclareNameInputHandler}{name}{code}
 
 As \cmd{DeclareFieldInputHandler} but for names. Within the \prm{code}, the macro \cmd{NewValue}
 contains the value of the name, \cmd{NewCount} contains the number of individual names in the name and \cmd{NewOption} contains any per-name options passed in the \file{.bbl}.
+Note that \cmd{NewValue} as well as the single argument to \prm{code} contain the internal representation of the name list.
 
 \end{ltxsyntax}
 
@@ -7545,6 +7872,7 @@
 \boolitem[false]{entrynocite}
 \boolitem[false]{entrynull}
 \boolitem[false]{append}
+\boolitem[false]{appendstrict}
 \boolitem[false]{final}
 \boolitem[false]{null}
 \boolitem[false]{origfield}
@@ -7597,8 +7925,9 @@
   exists then the map step is ignored. If \texttt{final} is also true for
   this step, then processing of the parent map stops at this point. If
   \texttt{append} is true, then the value to set is appended to the current
-  value of \prm{entryfield}. The value to set is specified by a mandatory
-  one and only one of the following options:
+  value of \prm{entryfield}. \texttt{appendstrict} only appends to
+  \prm{entryfield} if \prm{entryfield} is not empty. The value to set is
+  specified by a mandatory one and only one of the following options:
   \begin{itemize}
     \item\ \texttt{fieldvalue} --- The \texttt{fieldset} \prm{entryfield} is set to the \texttt{fieldvalue} \prm{string}
     \item\ \texttt{null} --- The \texttt{fieldset} \prm{entryfield} is ignored, as if it did not exist in the datasource
@@ -8074,7 +8403,7 @@
 
 Constraints of type <data> put restrictions on the value of a field. Constraints of type <mandatory> specify which fields or combinations of fields an entrytype should have. Constraints of type <conditional> allow more sophisticated conditional and quantified field constraints.
 
-\choitem{datatype}{integer, isbn, issn, ismn, date, pattern}
+\choitem{datatype}{integer, isbn, issn, ismn, datepart, pattern}
 
 For constraints of type \prm{data}, constrain field values to be the given datatype.
 
@@ -8226,7 +8555,7 @@
 
 \cmditem{field}[options]{field}
 
-If \prm{field} is non-empty, use it as the current label \cmd{labelelement}, subject to the options below. Useful values for \prm{field} are typically the name list type fields, date fields, and title fields. You may also use the `citekey' pseudo-field to specify the citation key as part of the label. Name list fields are treated specially and when a name list field is specified, the template defined with \cmd{DeclareLabelalphaNameTemplate} is used to extract parts from the name which then returns the string that the \cmd{field} option uses.
+If \prm{field} is non-empty, use it as the current label \cmd{labelelement}, subject to the options below. Useful values for \prm{field} are typically the name list type fields, date fields, and title fields. You may also use the `citekey' or `entrykey` pseudo-fields to specify the citation/entry key as part of the label. Name list fields are treated specially and when a name list field is specified, the template defined with \cmd{DeclareLabelalphaNameTemplate} is used to extract parts from the name which then returns the string that the \cmd{field} option uses.
 
 \begin{optionlist*}
 
@@ -8294,11 +8623,11 @@
 By default, for name list fields, the names used range from the first name to the \cnt{maxalphanames}\slash \cnt{minalphanames} truncation. This option can be used to override this with an explicit range of names to consider. The plus <+> sign is a special end of range marker denoting the truncation point of max/minalphanames. The range separator can be any number of characters with the Unicode Dash property. For example:
 
 \begin{lstlisting}[language=xml]
-name=3     -> Use first 3 names in the name list
-name={2-3} -> Use second and thirds names only
-name={-3}  -> Same as 1-3
-name={2-}  -> Use all names starting with the second name (ignoring max/minalphanames truncation)
-name={2-+} -> Use all names starting with the second name (respecting max/minalphanames truncation)
+names=3     -> Use first 3 names in the name list
+names={2-3} -> Use second and thirds names only
+names={-3}  -> Same as 1-3
+names={2-}  -> Use all names starting with the second name (ignoring max/minalphanames truncation)
+names={2-+} -> Use all names starting with the second name (respecting max/minalphanames truncation)
 \end{lstlisting}
 
 \valitem[empty]{namessep}{string}
@@ -8343,7 +8672,7 @@
 
 \boolitem[false]{compound}
 
-For static (non-varwidth) disambiguation in \cmd{DeclareLabelalphaTemplate}, nameparts separated by whitespace or hyphens (compound names) as separate names for label generation. This means that when forming a label out of, for example the surname <Ballam Forsyth> with a 1 character, left-side substring, this name would give <BF> with \kvopt{compound}{true} and <B> with \kvopt{compound}{false}. The short form \opt{compound} is equivalent to \kvopt{compound}{true}.
+For static (non-varwidth) disambiguation in \cmd{DeclareLabelalphaTemplate}, treat nameparts separated by whitespace or hyphens (compound names) as separate names for label generation. This means that when forming a label out of, for example the surname <Ballam Forsyth> with a 1 character, left-side substring, this name would give <BF> with \kvopt{compound}{true} and <B> with \kvopt{compound}{false}. The short form \opt{compound} is equivalent to \kvopt{compound}{true}.
 
 \intitem[1]{strwidth}
 
@@ -9448,6 +9777,18 @@
 
 Similar to \cmd{thelist}, except that the list internal representation is automatically sanitized such that its value may safely be used in the formation of a control sequence name.
 
+\cmditem{thefirstlistitem}{literal list}
+
+Expands to the unformatted first item in \prm{literal list}. If the \prm{literal list} is undefined, this command expands to an empty string.
+
+\cmditem{strfirstlistitem}{literal list}
+
+Similar to \cmd{thefirstlistitem}, except that the item is automatically sanitized such that its value may safely be used in the formation of a control sequence name.
+
+\cmditem{usefirstlistitem}{command}{literal list}
+
+Executes \prm{command} using the unformatted first item of \prm{literal list} as its argument.
+
 \cmditem{thename}{name list}
 
 Expands to the unformatted \prm{name list}. If the list is undefined, this command expands to an empty string. Note that this command will dump the \prm{name list} in the internal format used by this package. This format is not suitable for printing.
@@ -9898,7 +10239,11 @@
 \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.
+
 \cmditem{ifbibliography}{true}{false}
 
 Expands to \prm{true} when located in a bibliography, and to \prm{false} otherwise. Note that this command is responsive to the outermost context in which it is used. For example, if a driver defined with \cmd{DeclareBibliographyDriver} executes a citation command defined with \cmd{DeclareCiteCommand}, any \cmd{ifbibliography} tests in the citation code will yield \prm{true}. See \secref{aut:cav:mif} for a practical example.
@@ -10126,7 +10471,36 @@
 title = {The {\TeX book}},
 \end{lstlisting}
 %
-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 \texttt{title} and other \texttt{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:
+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.
+\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.
+\end{itemize}
+
+For most intents and purposes the following rules should give a sensible result.
+\begin{itemize}\setlength{\labelsep}{1em}
+  \item Protect all words whose case should not be changed by wrapping them in one pair of braces.
+  \item If words are already in the braced argument of a command such as \cmd{mkbibquote} or \cmd{emph}, they are automatically protected.
+  \begin{itemize}
+    \item To \emph{undo} this protection wrap the command in braces again.
+    \item It is not possible to selectively re-apply protection if it has been undone with an additional pair of braces. If a more fine-grained control is needed, work-arounds like splitting the argument could be tried.
+  \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},
+\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:
 \begin{ltxexample}
 \DeclareFieldFormat{titlecase}{<<\MakeSentenceCase*{#1}>>}
 \end{ltxexample}
@@ -10194,8 +10568,8 @@
 \label{aut:aux:tab1}
 \end{table}
 
-\cmditem{mkcomprange}[postpro]{text}
-\cmditem*{mkcomprange*}[postpro]{text}
+\cmditem{mkcomprange}[postpro][itempostpro]{text}
+\cmditem*{mkcomprange*}[postpro][itempostpro]{text}
 
 This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and compress them. For example, «125--129» may be formatted as «125--9». You may configure the behavior of \cmd{mkcomprange} by adjusting the \latex counters \cnt{mincomprange}, \cnt{maxcomprange}, and \cnt{mincompwidth}, as illustrated in \tabref{aut:aux:tab1}. The default settings are \texttt{10}, \texttt{100000}, and \texttt{1}, respectively. This means that the command tries to compress as much as possible by default. Use \cmd{setcounter} to adjust the parameters. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. This is important if you want to combine \cmd{mkcomprange} with other formatting macros which also need to parse their \prm{text} argument, such as \cmd{mkpageprefix}. Simply nesting these commands will not work as expected. Use the \prm{postpro} argument to set up the processing chain as follows:
 
@@ -10216,16 +10590,18 @@
 pp. 5, 123-9, 423-39
 p. 5, pp. 123-9, pp. 423-39
 \end{ltxexample}
+%
+The second optional argument \prm{itempostpro} is used to post-process each individual number item in the formatted list. It can be used to convert numbers from cardinals to ordinals. If only one optional argument is present, it is treated as \prm{postpro}.
 
-\cmditem{mknormrange}[postpro]{text}
-\cmditem*{mknormrange*}[postpro]{text}
+\cmditem{mknormrange}[postpro][itempostpro]{text}
+\cmditem*{mknormrange*}[postpro][itempostpro]{text}
 
-This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and will normalise them. The command is similar to \cmd{mkcomprange} except that the page ranges will not be compressed. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values.
+This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and will normalise them. The command is similar to \cmd{mkcomprange} except that the page ranges will not be compressed. The scanner recognises \cmd{bibrangedash} and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \cmd{bibrangedash}. Lists of ranges delimited with \cmd{bibrangessep} are also supported. The scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \cmd{bibrangessep}. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. The second optional argument \prm{itempostpro} is used to post-process each individual number item in the formatted list. It can be used to convert numbers from cardinals to ordinals. If only one optional argument is present, it is treated as \prm{postpro}.
 
-\cmditem{mkfirstpage}[postpro]{text}
-\cmditem*{mkfirstpage*}[postpro]{text}
+\cmditem{mkfirstpage}[postpro][itempostpro]{text}
+\cmditem*{mkfirstpage*}[postpro][itempostpro]{text}
 
-This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and print the start page of the range only. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. Lists of ranges delimited with \cmd{bibrangessep} are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. For example:
+This command, which is intended for use in field formatting directives, will parse its \prm{text} argument for page ranges and print the start page of the range only. The scanner recognizes \cmd{bibrangedash} and hyphens as range dashes. Lists of ranges delimited with \cmd{bibrangessep} are also supported. If you want to hide a character from the list/range scanner for some reason, wrap the character or the entire string in curly braces. The optional \prm{postpro} argument specifies a macro to be used for post-processing the \prm{text}. See \cmd{mkcomprange} on how to use this argument. The starred version of this command differs from the regular one in the way the \prm{postpro} argument is applied to a list of values. The second optional argument \prm{itempostpro} is used to post-process each individual number item in the formatted list. It can be used to convert numbers from cardinals to ordinals. If only one optional argument is present, it is treated as \prm{postpro}. For example:
 
 \begin{ltxexample}
 \mkfirstpage[\mkpageprefix]{5, 123-129, 423-439}
@@ -11434,7 +11810,27 @@
 This section corresponds to \secref{use:fmt:fmt} in the user part of the manual. The commands and hooks discussed here are meant to be redefined by users, but bibliography and citation styles may provide a default definition which is different from the package default. These commands are defined in \path{biblatex.def}. Note that all commands starting with \cmd{mk\dots} take one mandatory argument.
 
 \begin{ltxsyntax}
+\csitem{bibsetup}
+Arbitrary code to be executed at the beginning of the bibliography, intended for commands which affect the layout of the bibliography.
 
+\csitem{bibfont}
+Arbitrary code setting the font used in the bibliography. This is very similar to \cmd{bibsetup} but intended for switching fonts.
+
+\csitem{citesetup}
+Arbitrary code to be executed at the beginning of each citation command.
+
+\csitem{newblockpunct}
+The separator inserted between <blocks> in the sense explained in \secref{aut:pct:new}. The default definition is controlled by the package option \opt{block} (see \secref{use:opt:pre:gen}).
+
+\csitem{newunitpunct}
+The separator inserted between <units> in the sense explained in \secref{aut:pct:new}. This will usually be a period or a comma plus an interword space. The default definition is a period and a space.
+
+\csitem{finentrypunct}
+The punctuation printed at the very end of every bibliography entry, usually a period. The default definition is a period.
+
+\csitem{entrysetpunct}
+The punctuation printed between bibliography subentries of an entry set. The default definition is a semicolon and a space.
+
 \csitem{bibnamedelima}
 This delimiter controls the spacing between the elements which make up a name part. It is inserted automatically by the backend after the first name element if the element is less than three characters long and before the last element. The default definition is \cmd{addhighpenspace}, \ie a space penalized by the value of the \cnt{highnamepenalty} counter (\secref{use:fmt:len}). Please refer to \secref{use:cav:nam} for further details.
 
@@ -11504,89 +11900,143 @@
 \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{multinamedelim}
-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.
+\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.
 
-\csitem{finalnamedelim}
-Use this command instead of \cmd{multinamedelim} before the final name in a name list.
+\csitem{finalnamedelim}\CSdelimMark
+Use this command instead of \cmd{multinamedelim} before the final name in a name list. The default is the localised term <and>, separated by interword spaces.
 
-\csitem{revsdnamedelim}
+\csitem{revsdnamedelim}\CSdelimMark
 The extra delimiter to be printed after the first name in a name list consisting of two names (in addition to \cmd{finalnamedelim}) if the first name is reversed. This command should be incorporated in all formatting directives for name lists.
 
-\csitem{andothersdelim}
-The delimiter to be printed before the localisation string <\texttt{andothers}> if a name list like \bibfield{author} or \bibfield{editor} is truncated. This command should be incorporated in all formatting directives for name lists.
+\csitem{andothersdelim}\CSdelimMark
+The delimiter to be printed before the localisation string <\texttt{andothers}> if a name list like \bibfield{author} or \bibfield{editor} is truncated. This command should be incorporated in all formatting directives for name lists. The default is an interword space.
 
-\csitem{multilistdelim}
-The delimiter to be printed between multiple items in a literal list like \bibfield{publisher} or \bibfield{location} if there are more than two names in the list. If there are only two items in the list, use the \cmd{finallistdelim} instead. This command should be incorporated in all formatting directives for literal lists.
+\csitem{multilistdelim}\CSdelimMark
+The delimiter to be printed between multiple items in a literal list like \bibfield{publisher} or \bibfield{location} if there are more than two names in the list. If there are only two items in the list, use the \cmd{finallistdelim} instead. This command should be incorporated in all formatting directives for literal lists. The default is a comma plus an interword space.
 
-\csitem{finallistdelim}
-Use this command instead of \cmd{multilistdelim} before the final item in a literal list.
+\csitem{finallistdelim}\CSdelimMark
+Use this command instead of \cmd{multilistdelim} before the final item in a literal list. The default is the localised term <and>, separated by interword spaces.
 
-\csitem{andmoredelim}
-The delimiter to be printed before the localisation string <\texttt{andmore}> if a literal list like \bibfield{publisher} or \bibfield{location} is truncated. This command should be incorporated in all formatting directives for literal lists.
+\csitem{andmoredelim}\CSdelimMark
+The delimiter to be printed before the localisation string <\texttt{andmore}> if a literal list like \bibfield{publisher} or \bibfield{location} is truncated. This command should be incorporated in all formatting directives for literal lists. The default is an interword space.
 
 \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 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{supercitedelim}
-Similar to \cmd{multinamedelim}, but intended for the \cmd{supercite} command only.
+Similar to \cmd{multinamedelim}, but intended for the \cmd{supercite} command only. The default is a comma.
 
 \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.
+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.
 
 \csitem{textcitedelim}
-Similar to \cmd{multicitedelim}, but intended for \cmd{textcite} and related commands (\secref{use:cit:cbx}).
+Similar to \cmd{multicitedelim}, but intended for \cmd{textcite} and related commands (\secref{use:cit:cbx}). The default is a comma plus an interword space. The standard styles modify this provisional definition to ensure that the delimiter before the final citation is the localised term <and>, separated by interword spaces.
 
-\csitem{nametitledelim}
-The delimiter to be printed between the author\slash editor and the title. This command should be incorporated in the definition of all citation commands of author-title and some verbose citation styles and in the bibliography drivers---in author-year bibliographies \cs{nametitledelim} may be printed between the author\slash editor-year block and the title.
+\csitem{nametitledelim}\CSdelimMark
+The delimiter to be printed between the author\slash editor and the title. This command should be incorporated in the definition of all citation commands of author-title and some verbose citation styles and in the bibliography drivers---in author-year bibliographies \cs{nametitledelim} may be printed between the author\slash editor-year block and the title. The default definition inside bibliographies is the now deprecated \cmd{labelnamepunct} (for backwrds compatibility reasons) and is a comma plus an interword space otherwise.
 
-\csitem{nameyeardelim}
-The delimiter to be printed between the author\slash editor and the year. This command should be incorporated in the definition of all citation commands of author-year citation styles and in the bibliography drivers.
+\csitem{nameyeardelim}\CSdelimMark
+The delimiter to be printed between the author\slash editor and the year. This command should be incorporated in the definition of all citation commands of author-year citation styles and in the bibliography drivers. The default definition is an interword space.
 
-\csitem{namelabeldelim}
-The delimiter printed between the name\slash title and the label. This command should be incorporated in the definition of all citation commands of alphabetic and numeric citation styles.
+\csitem{namelabeldelim}\CSdelimMark
+The delimiter printed between the name\slash title and the label. This command should be incorporated in the definition of all citation commands of alphabetic and numeric citation styles. The default definition is an interword space.
 
-\csitem{nonameyeardelim}
-The delimiter printed between the substitute for the labelname when it does not exist (usually the label or title in standard styles) and the year in author-year citation styles and the bibliography. This is only used when there is no labelname since when the labelname exists, \cmd{nameyeardelim} is used.
+\csitem{nonameyeardelim}\CSdelimMark
+The delimiter printed between the substitute for the labelname when it does not exist (usually the label or title in standard styles) and the year citation styles and the bibliography drivers. This command should be incorporated in the definition of all citation commands of author-year citation styles and in the bibliography drivers. The default definition is an interword space.
 
-\csitem{authortypedelim}
-The delimiter printed between the author and the \texttt{authortype}.
+\csitem{authortypedelim}\CSdelimMark
+The delimiter printed between the author and the \texttt{authortype}. The default is a comma followed by a space.
 
-\csitem{editortypedelim}
-The delimiter printed between the editor and the \texttt{editor} or \texttt{editortype} string.
+\csitem{editortypedelim}\CSdelimMark
+The delimiter printed between the editor and the \texttt{editor} or \texttt{editortype} string. The default is a comma followed by a space.
 
-\csitem{translatortypedelim}
-The delimiter printed between the translator and the \texttt{translator} string.
+\csitem{translatortypedelim}\CSdelimMark
+The delimiter printed between the translator and the \texttt{translator} string. The default is a comma followed by a space.
 
+\csitem{labelalphaothers}
+A string to be appended to the non"=numeric portion of the \bibfield{labelalpha} field (\ie the field holding the citation label used by alphabetic citation styles) if the number of authors\slash editors exceeds the \opt{maxalphanames} threshold or the \bibfield{author}\slash \bibfield{editor} list was truncated in the \file{bib} file with the keyword <\texttt{and others}>. This will typically be a single character such as a plus sign or an asterisk. The default is a plus sign. This command may also be redefined to an empty string to disable this feature. In any case, it must be redefined in the preamble.
+
+\csitem{sortalphaothers}
+Similar to \cmd{labelalphaothers} but used in the sorting process. Setting it to a different value is advisable if the latter contains formatting commands. If \cmd{sortalphaothers} is not redefined, it defaults to \cmd{labelalphaothers}.
+
 \csitem{volcitedelim}
 The delimiter to be printed between the volume portion and the page/text portion of \cmd{volcite} and related commands (\secref{use:cit:spc}).
 
-\csitem{prenotedelim}
-The delimiter to be printed after the \prm{prenote} argument of a citation command.
+\csitem{prenotedelim}\CSdelimMark
+The delimiter to be printed after the \prm{prenote} argument of a citation command. The default is an interword space.
 
-\csitem{postnotedelim}
-The delimiter to be printed before the \prm{postnote} argument of a citation command.
+\csitem{postnotedelim}\CSdelimMark
+The delimiter to be printed before the \prm{postnote} argument of a citation command. The default is a comma plus an interword space.
 
-\csitem{extpostnotedelim}
-The delimiter printed between the citation and the parenthetical \prm{postnote} argument of a citation command when the postnote occurs outside of the citation parentheses. In the standard styles, this occurs when the citation uses the shorthand field of the entry.
+\csitem{extpostnotedelim}\CSdelimMark
+The delimiter printed between the citation and the parenthetical \prm{postnote} argument of a citation command when the postnote occurs outside of the citation parentheses. In the standard styles, this occurs when the citation uses the shorthand field of the entry. The default is an interword space.
 
-\cmditem{mkbibnamefamily}{text}
-Formatting hook for the family name, to be used in all formatting directives for name lists.
+\csitem{multiprenotedelim}\CSdelimMark
+The delimiter to be printed after the \prm{multiprenote} argument of a citation command.
 
-\cmditem{mkbibnamegiven}{text}
-Similar to \cmd{mkbibnamefamily}, but intended for the given name.
+\csitem{multipostnotedelim}\CSdelimMark
+The delimiter to be printed before the \prm{multipostnote} argument of a citation command.
 
-\cmditem{mkbibnameprefix}{text}
-Similar to \cmd{mkbibnamefamily}, but intended for the name prefix.
+\cmditem{mkbibname<namepart>}{text}
+Formatting hook for the name part <namepart>, to be used in all formatting directives for name lists. The default datamodel defines the name parts <family>, <given>, <prefix> and <suffix> and therefore the following macros are automatically defined:
 
-\cmditem{mkbibnamesuffix}{text}
-Similar to \cmd{mkbibnamefamily}, but intended for the name suffix.
+\begin{ltxexample}
+\mkbibnamefamily
+\mkbibnamegiven
+\mkbibnameprefix
+\mkbibnamesuffix
+\end{ltxexample}
 
+\cmditem{mkbibcompletename<formatorder>}{text}
+Formatting hook for the complete name in format order <formatorder>. The default styles use the name format orders <family>, <family-given> and <given-family>, therefore the following macros are automatically defined:
+
+\begin{ltxexample}
+\mkbibcompletenamefamily
+\mkbibcompletenamefamilygiven
+\mkbibcompletenamegivenfamily
+\end{ltxexample}
+%
+These formatting hooks should enclose the complete name in the bibliography macro \cmd{name:<formatorder>}. Initially all hooks expand to \cmd{mkbibcompletename}.
+
+\cmditem{mkbibcompletename}{text}
+The initial value of all default formatting hooks \cmd{mkbibcompletename<formatorder>}.
+
+\csitem{datecircadelim}\CSdelimMark
+When formatting dates with the global option \opt{datecirca} enabled, the delimiter printed after any localised <circa> term. Defaults to interword space.
+
+\csitem{dateeradelim}\CSdelimMark
+When formatting dates with the global option \opt{dateera} set, the delimiter printed before the localisation era term. Defaults to interword space.
+
+\csitem{dateuncertainprint}
+Prints date uncertainty information when the global option \opt{dateuncertain} is enabled and the \cmd{ifdateuncertain} test is true. By default, prints the language specific \cmd{bibdateuncertain} string (\secref{use:fmt:lng}).
+
+\csitem{enddateuncertainprint}
+Prints date uncertainty information when the global option \opt{dateuncertain} is enabled and the \cmd{ifenddateuncertain} test is true. By default, prints the language specific \cmd{bibdateuncertain} string (\secref{use:fmt:lng}).
+
+\csitem{datecircaprint}
+Prints date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifdatecirca} test is true. By default, prints the <circa> localised term (\secref{aut:lng:key:dt}) and the \opt{datecircadelim} delimiter.
+
+\csitem{enddatecircaprint}
+Prints date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifenddatecirca} test is true. By default, prints the <circa> localised term (\secref{aut:lng:key:dt}) and the \opt{datecircadelim} delimiter.
+
+\csitem{datecircaprintiso}
+Prints \acr{ISO8601-2} format date circa information when the global option \opt{datecirca} is enabled and the \cmd{ifdatecirca} test is true. Prints \cmd{textasciitilde}.
+
+\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}
+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}
+Prints date era information when the global option \opt{dateera} is set to <astronomical>. By default, prints \opt{bibdataeraprefix}. Detects whether the start or end year era information is to be printed by looking at the \prm{yearfield} name passed to it.
+
 \csitem{relatedpunct}
-The separator between the relatedtype bibliography localisation string and the data from the first related entry.
+The separator between the \bibfield{relatedtype} bibliography localisation string and the data from the first related entry.
 
 \csitem{relateddelim}
-The separator between the data of multiple related entries. The default definition is a linebreak.
+The generic separator between the data of multiple related entries. The default definition is an optional dot plus linebreak.
 
 \csitem{relateddelim$<$relatedtype$>$}
 The separator between the data of multiple related entries inside related entries of type <relatedtype>. There is no default, if such a type-specific delimiter does not exist, \cmd{relateddelim} is used.
@@ -11608,7 +12058,7 @@
 
 \csitem{bibrangedash}
 
-The language specific range dash. Defaults to \cmd{textendash}.
+The language specific dash to be used for ranges of numbers. Defaults to \cmd{textendash}.
 
 \csitem{bibrangessep}
 
@@ -11659,6 +12109,10 @@
 
 The language specific marker which separates an optional time zone component from a time. Empty by default.
 
+\csitem{bibtzminsep}
+
+The language specific marker which separates hour and minute component of offset timezones. Defaults to a \cmd{bibtimesep}.
+
 \csitem{bibdatetimesep}
 
 The language specific separator printed between date and time components when printing time components along with date components (see the \opt{$<$datetype$>$dateusetime} option in \secref{use:opt:pre:gen}). Defaults to a space for non-\acr{ISO8601-2} output formats, and 'T' for \acr{ISO8601-2} output format.
@@ -11710,28 +12164,44 @@
 
 \lenitem{biblabelsep}
 
-The horizontal space between entries and their corresponding labels. Bibliography styles which use \env{list} environments and print a label should set \len{labelsep} to \len{biblabelsep} in the definition of the respective environment.
+The horizontal space between entries and their corresponding labels. Bibliography styles which use \env{list} environments and print a label should set \len{labelsep} to \len{biblabelsep} in the definition of the respective environment. This length is initialized to twice the value of \cmd{labelsep} at load-time.
 
 \lenitem{bibitemsep}
 
-The vertical space between the individual entries in the bibliography. Bibliography styles using \env{list} environments should set \len{itemsep} to \len{bibitemsep} in the definition of the respective environment.
+The vertical space between the individual entries in the bibliography. Bibliography styles using \env{list} environments should set \len{itemsep} to \len{bibitemsep} in the definition of the respective environment. This length is initialized to \cmd{itemsep} at load-time.
 
+\lenitem{bibnamesep}
+
+Vertical space to be inserted between two entries in the bibliography whenever an entry starts with a name which is different from the initial name of the previous entry. The default value is zero. Setting this length to a positive value greater than \len{bibitemsep} will group the bibliography by author\slash editor name. Note that \len{bibitemsep}, \len{bibnamesep}, and \len{bibinitsep} obey the rules for \cmd{addvspace}, that is, when vertical space introduced by any of these commands immediately follows on from space introduced by another of them, the resulting total space is equal to the largest of them.
+
+\lenitem{bibinitsep}
+
+Vertical space to be inserted between two entries in the bibliography whenever an entry starts with a letter which is different from the initial letter of the previous entry. The default value is zero. Setting this length to a positive value greater than \len{bibitemsep} will group the bibliography alphabetically. Note that \len{bibitemsep}, \len{bibnamesep}, and \len{bibinitsep} obey the rules for \cmd{addvspace}, that is, when vertical space introduced by any of these commands immediately follows on from space introduced by another of them, the resulting total space is equal to the largest of them.
+
 \lenitem{bibparsep}
 
-The vertical space between paragraphs within an entry in the bibliography. Bibliography styles using \env{list} environments should set \len{parsep} to \len{bibparsep} in the definition of the respective environment.
+The vertical space between paragraphs within an entry in the bibliography. Bibliography styles using \env{list} environments should set \len{parsep} to \len{bibparsep} in the definition of the respective environment. The default value is zero.
 
 \cntitem{abbrvpenalty}
 
-The penalty used by \cmd{addabbrvspace}, \cmd{addabthinspace}, and \cmd{adddotspace}, see \secref{aut:pct:spc} for details.
+The penalty used by \cmd{addabbrvspace}, \cmd{addabthinspace}, and \cmd{adddotspace}, see \secref{aut:pct:spc} for details. This counter is initialized to \cmd{hyphenpenalty} at load-time.
 
+\cntitem{highnamepenalty}
+
+The penalty used by \cmd{addhighpenspace} and \cmd{addhpthinspace}, see \secref{aut:pct:spc} for details. The counter is initialized to \cmd{hyphenpenalty} at load-time.
+
 \cntitem{lownamepenalty}
 
-The penalty used by \cmd{addlowpenspace} and \cmd{addlpthinspace}, see \secref{aut:pct:spc} for details.
+The penalty used by \cmd{addlowpenspace} and \cmd{addlpthinspace}, see \secref{aut:pct:spc} for details. The counter is initialized to half the \cmd{hyphenpenalty} at load-time.
 
-\cntitem{highnamepenalty}
+\cntitem{biburlbigbreakpenalty}
 
-The penalty used by \cmd{addhighpenspace} and \cmd{addhpthinspace}, see \secref{aut:pct:spc} for details.
+The \sty{biblatex} version of \sty{url}'s \len{UrlBigBreakPenalty}. The default value is \texttt{100}.
 
+\cntitem{biburlbreakpenalty}
+
+The \sty{biblatex} version of \sty{url}'s \len{UrlBreakPenalty}. The default value is \texttt{200}.
+
 \cntitem{biburlnumpenalty}
 
 If this counter is set to a value greater than zero, \biblatex will permit linebreaks after numbers in all strings formatted with the \cmd{url} command from the \sty{url} package. This will affect \acr{url}s and \acr{doi}s in the bibliography. The breakpoints will be penalized by the value of this counter. If \acr{url}s and/or \acr{doi}s in the bibliography run into the margin, try setting this counter to a value greater than zero but less than 10000 (you normally want to use a high value like 9000). Setting the counter to zero disables this feature. This is the default setting.
@@ -11744,6 +12214,22 @@
 
 Similar to \cnt{biburlnumpenalty}, except that it will add a breakpoint after all lowercase letters.
 
+\lenitem{biburlbigskip}
+
+The \sty{biblatex} version of \len{Urlmuskip}. This length holds the additional (stretchable) space inserted around breakable characters in the \cmd{url} command from the \sty{url} package. The default value is \texttt{0mu plus 3mu}.
+
+\lenitem{biburlnumskip}
+
+The additional space inserted after numbers in strings formatted with the \cmd{url} command from the \sty{url} package. This will affect \acr{url}s and \acr{doi}s in the bibliography. If \acr{url}s and/or \acr{doi}s in the bibliography run into the margin, it may help to set this length to add some small stretchable space, for example \texttt{0mu plus 1mu}. The default setting is \texttt{0mu}. This value is only used if \cnt{biburlnumpenalty} is set to a value different from zero.
+
+\lenitem{biburlucskip}
+
+Similar to \cnt{biburlnumskip}, except that it will add space after all uppercase letters.
+
+\lenitem{biburllcskip}
+
+Similar to \cnt{biburlnumskip}, except that it will add space after all uppercase letters.
+
 \end{ltxsyntax}
 
 \subsubsection{Auxiliary Commands and Hooks}
@@ -12089,7 +12575,7 @@
 \cmditem{AtUsedriver}{code}
 \cmditem*{AtUsedriver}*{code}
 
-Appends the \prm{code} to an internal hook executed when initializing \cmd{uisedriver}. The starred variant of the command clears the initialisation hook, so the defaults can be overwritten. This command may only be used in the preamble.
+Appends the \prm{code} to an internal hook executed when initializing \cmd{usedriver}. The starred variant of the command clears the initialisation hook, so the defaults can be overwritten. This command may only be used in the preamble.
 The default setting is:
 
 \begin{ltxexample}
@@ -12128,6 +12614,17 @@
 
 Similar to \cmd{AtEveryMultiCite} but only affecting the next multicite command. The internal hook is cleared after being executed once. This command may be used in the document body.
 
+\cmditem{AtVolcite}{code}
+\cmditem*{AtVolcite}*{code}
+
+Appends the \prm{code} to an internal hook executed when initializing \cmd{volcite}. The starred variant of the command clears the initialisation hook, so the defaults can be overwritten. This command may only be used in the preamble.
+The default setting is:
+
+\begin{ltxexample}
+\AtVolcite{%
+  \DeclareFieldAlias{postnote}{volcitenote}}
+\end{ltxexample}
+
 \cmditem{AtDataInput}[entrytype]{code}
 
 Appends the \prm{code} to an internal hook executed once for every entry as the bibliographic data is imported from the \file{bbl} file. The \prm{entrytype} is the entry type the \prm{code} applies to. If it applies to all entry types, omit the optional argument. The \prm{code} is executed immediately after the entry has been imported. This command may only be used in the preamble. Note that \prm{code} may be executed multiple times for an entry. This occurs when the same entry is cited in different \env{refsection} environments or the \opt{sorting} option settings incorporate more than one sorting template. The \cnt{refsection} counter holds the number of the respective reference section while the data is imported.
@@ -12164,6 +12661,10 @@
 
 Executes and clears the internal hook corresponding to \cmd{AtNextMultiCite}.
 
+\cmditem{UseVolciteHook}
+
+Executes the internal hook corresponding to \cmd{AtVolcite}.
+
 \cmditem{DeferNextCitekeyHook}
 
 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}).
@@ -12454,7 +12955,7 @@
 Smith, Doe and Jones 2005
 \end{lstlisting}
 %
-The \opt{uniquelist} option overrides \opt{maxnames}\slash \opt{minnames} on a per-entry basis. Essentially, what happens is that the <et al.> part of the citation is expanded to the point of no ambiguity~-- but no further than that. \opt{uniquelist} may also be combined with \opt{uniquename}. Consider the following data:
+The \opt{uniquelist} option overrides \opt{maxnames}\slash \opt{minnames} on a per-entry basis. Essentially, what happens is that the <et al.> part of the citation is expanded to the point of no ambiguity---but no further than that. \opt{uniquelist} may also be combined with \opt{uniquename}. Consider the following data:
 
 \begin{lstlisting}{}
 John Doe/Allan Johnson/William Jones  2009
@@ -12902,7 +13403,7 @@
 
 These are the driver default source mappings.
 
-\subsection{\opt{bibtex}}
+\subsection{\opt{bibtex}}\label{apx:maps:bibtex}
 The \opt{bibtex} driver is of course the most comprehensive and mature of the \biblatex/\biber supported data formats. These source mapping defaults are how the aliases from sections \secref{bib:typ:als} and \secref{bib:fld:als} are implemented.
 
 \begin{ltxexample}
@@ -13422,120 +13923,123 @@
 \endhead
 \bottomrule
 \endfoot
-abbreviate	&\+&\+&\_&\_&\_&\_&\_\\
-alldates	&\+&\+&\_&\_&\_&\_&\_\\
-alldatesusetime	&\+&\+&\_&\_&\_&\_&\_\\
-alltimes	&\+&\+&\_&\_&\_&\_&\_\\
-arxiv		&\+&\+&\_&\_&\_&\_&\_\\
-autocite	&\+&\+&\_&\_&\_&\_&\_\\
-autopunct	&\+&\+&\_&\_&\_&\_&\_\\
-autolang		&\+&\+&\_&\_&\_&\_&\_\\
-backend		&\+&\_&\_&\_&\_&\_&\_\\
-backref		&\+&\+&\_&\_&\_&\_&\_\\
-backrefsetstyle	&\+&\+&\_&\_&\_&\_&\_\\
-backrefstyle	&\+&\+&\_&\_&\_&\_&\_\\
-bibencoding	&\+&\+&\_&\_&\_&\_&\_\\
-bibstyle	&\+&\_&\_&\_&\_&\_&\_\\
-bibwarn		&\+&\+&\_&\_&\_&\_&\_\\
-block		&\+&\+&\_&\_&\_&\_&\_\\
-citecounter	&\+&\+&\_&\_&\_&\_&\_\\
-citereset	&\+&\+&\_&\_&\_&\_&\_\\
-citestyle	&\+&\_&\_&\_&\_&\_&\_\\
-citetracker	&\+&\+&\_&\_&\_&\_&\_\\
-clearlang	&\+&\+&\_&\_&\_&\_&\_\\
-datamodel &\+&\_&\_&\_&\_&\_&\_\\
-dataonly	&\_&\_&\_&\+&\+&\_&\_\\
-date		&\+&\+&\_&\_&\_&\_&\_\\
-labeldate		&\+&\+&\_&\_&\_&\_&\_\\
-$<$datetype$>$date		&\+&\+&\_&\_&\_&\_&\_\\
-dateabbrev	&\+&\+&\_&\_&\_&\_&\_\\
-datecirca &\+&\+&\_&\_&\_&\_&\_\\
-dateera &\+&\+&\_&\_&\_&\_&\_\\
-dateerauto &\+&\+&\_&\_&\_&\_&\_\\
-dateuncertain &\+&\+&\_&\_&\_&\_&\_\\
-datezeros	&\+&\+&\_&\_&\_&\_&\_\\
-defernumbers	&\+&\+&\_&\_&\_&\_&\_\\
-doi		&\+&\+&\_&\_&\_&\_&\_\\ % style
-eprint		&\+&\+&\_&\_&\_&\_&\_\\ % style
-$<$namepart$>$inits	&\+&\+&\_&\_&\_&\_&\_\\
-gregorianstart &\+&\+&\_&\_&\_&\_&\_\\
-hyperref	&\+&\+&\_&\_&\_&\_&\_\\
-ibidtracker	&\+&\+&\_&\_&\_&\_&\_\\
-idemtracker	&\+&\+&\_&\_&\_&\_&\_\\
-indexing	&\+&\+&\_&\+&\+&\_&\_\\
-isbn		&\+&\+&\_&\_&\_&\_&\_\\ % style
-julian &\+&\+&\_&\_&\_&\_&\_\\
-labelalpha	&\+&\+&\_&\+&\_&\_&\_\\
-labelalphanametemplatename	&\_&\_&\+&\_&\+&\+&\+\\
-labelnamefield  &\_&\_&\_&\_&\+&\_&\_\\
-labelnumber	&\+&\+&\_&\+&\_&\_&\_\\
-labeltitle	&\+&\+&\_&\+&\_&\_&\_\\
-labeltitlefield &\_&\_&\_&\_&\+&\_&\_\\
-labeltitleyear	&\+&\+&\_&\+&\_&\_&\_\\
-labeldateparts	&\+&\+&\_&\+&\_&\_&\_\\
-labeltime	&\+&\+&\_&\_&\_&\_&\_\\
-labeldateusetime	&\+&\+&\_&\_&\_&\_&\_\\
-labelprefix &\_&\_&\+&\_&\_&\_&\_\\
-$<$datetype$>$time	&\+&\+&\_&\_&\_&\_&\_\\
-$<$datetype$>$dateusetime	&\+&\+&\_&\_&\_&\_&\_\\
-language	&\+&\+&\_&\_&\_&\_&\_\\
-loadfiles	&\+&\+&\_&\_&\_&\_&\_\\
-loccittracker	&\+&\+&\_&\_&\_&\_&\_\\
-maxalphanames	&\+&\+&\_&\+&\+&\_&\_\\
-maxbibnames	&\+&\+&\_&\+&\+&\_&\_\\
-maxcitenames	&\+&\+&\_&\+&\+&\_&\_\\
-maxsortnames	&\+&\+&\_&\+&\+&\_&\_\\
-maxitems	&\+&\+&\_&\+&\+&\_&\_\\
-maxnames	&\+&\+&\_&\+&\+&\_&\_\\
-maxparens	&\+&\+&\_&\_&\_&\_&\_\\
-mcite		&\+&\_&\_&\_&\_&\_&\_\\
-minalphanames	&\+&\+&\_&\+&\+&\_&\_\\
-minbibnames	&\+&\+&\_&\+&\+&\_&\_\\
-mincitenames	&\+&\+&\_&\+&\+&\_&\_\\
-minsortnames	&\+&\+&\_&\+&\+&\_&\_\\
-mincrossrefs	&\+&\+&\_&\_&\_&\_&\_\\
-minxrefs	&\+&\+&\_&\_&\_&\_&\_\\
-minitems	&\+&\+&\_&\+&\+&\_&\_\\
-minnames	&\+&\+&\_&\+&\+&\_&\_\\
-nametemplates &\_&\_&\+&\_&\+&\+&\+\\
-natbib		&\+&\_&\_&\_&\_&\_&\_\\
-noinherit		&\_&\_&\_&\_&\+&\_&\_\\
-notetype	&\+&\+&\_&\_&\_&\_&\_\\
-opcittracker	&\+&\+&\_&\_&\_&\_&\_\\
-openbib		&\+&\+&\_&\_&\_&\_&\_\\
-pagetracker	&\+&\+&\_&\_&\_&\_&\_\\
-parentracker	&\+&\+&\_&\_&\_&\_&\_\\
-punctfont	&\+&\+&\_&\_&\_&\_&\_\\
-refsection	&\+&\+&\_&\_&\_&\_&\_\\
-refsegment	&\+&\+&\_&\_&\_&\_&\_\\
-safeinputenc	&\+&\+&\_&\_&\_&\_&\_\\
-seconds	&\+&\+&\_&\_&\_&\_&\_\\
-singletitle	&\+&\+&\_&\+&\_&\_&\_\\
-skipbib		&\_&\_&\_&\+&\+&\_&\_\\
-skipbiblist	&\_&\_&\_&\+&\+&\_&\_\\
-skiplab		&\_&\_&\_&\+&\+&\_&\_\\
-sortcase	&\+&\+&\_&\_&\_&\_&\_\\
-sortcites	&\+&\+&\_&\_&\_&\_&\_\\
-sorting		&\+&\+&\_&\_&\_&\_&\_\\
-sortingnamekeytemplatename 	&\_&\_&\+&\_&\+&\+&\+\\
-sortlocale	&\+&\+&\_&\_&\_&\_&\_\\
-sortlos		&\+&\+&\_&\_&\_&\_&\_\\
-sortupper	&\+&\+&\_&\_&\_&\_&\_\\
-style		&\+&\_&\_&\_&\_&\_&\_\\
-terseinits	&\+&\+&\_&\_&\_&\_&\_\\
-texencoding	&\+&\+&\_&\_&\_&\_&\_\\
-timezeros	&\+&\+&\_&\_&\_&\_&\_\\
-timezones	&\+&\+&\_&\_&\_&\_&\_\\
-uniquelist	&\+&\+&\_&\+&\+&\_&\_\\
-uniquename	&\+&\+&\_&\+&\+&\_&\_\\
-uniquenametemplatename	&\_&\_&\+&\_&\+&\+&\+\\
-uniquetitle	&\+&\+&\_&\+&\_&\_&\_\\
-uniquebaretitle	&\+&\+&\_&\+&\_&\_&\_\\
-uniquework	&\+&\+&\_&\+&\_&\_&\_\\
-uniqueprimaryauthor	&\+&\+&\_&\_&\_&\_&\_\\
-url		&\+&\+&\_&\_&\_&\_&\_\\
-useprefix	&\+&\+&\_&\+&\+&\+&\+\\
-use$<$name$>$	&\+&\+&\_&\+&\+&\_&\_\\
+abbreviate                        &\+&\+&\_&\+&\+&\_&\_\\
+alldates                          &\+&\+&\_&\_&\_&\_&\_\\
+alldatesusetime                   &\+&\+&\_&\_&\_&\_&\_\\
+alltimes                          &\+&\+&\_&\_&\_&\_&\_\\
+arxiv                             &\+&\+&\_&\_&\_&\_&\_\\
+autocite                          &\+&\+&\_&\_&\_&\_&\_\\
+autopunct                         &\+&\+&\_&\_&\_&\_&\_\\
+autolang                          &\+&\+&\_&\_&\_&\_&\_\\
+backend                           &\+&\_&\_&\_&\_&\_&\_\\
+backref                           &\+&\+&\_&\_&\_&\_&\_\\
+backrefsetstyle                   &\+&\+&\_&\_&\_&\_&\_\\
+backrefstyle                      &\+&\+&\_&\_&\_&\_&\_\\
+bibencoding                       &\+&\+&\_&\_&\_&\_&\_\\
+bibstyle                          &\+&\_&\_&\_&\_&\_&\_\\
+bibwarn                           &\+&\+&\_&\_&\_&\_&\_\\
+block                             &\+&\+&\_&\_&\_&\_&\_\\
+citecounter                       &\+&\+&\_&\_&\_&\_&\_\\
+citereset                         &\+&\+&\_&\_&\_&\_&\_\\
+citestyle                         &\+&\_&\_&\_&\_&\_&\_\\
+citetracker                       &\+&\+&\_&\+&\+&\_&\_\\
+clearlang                         &\+&\+&\_&\+&\+&\_&\_\\
+datamodel                         &\+&\_&\_&\_&\_&\_&\_\\
+dataonly                          &\+&\+&\_&\+&\+&\_&\_\\
+date                              &\+&\+&\_&\_&\_&\_&\_\\
+labeldate                         &\+&\+&\_&\_&\_&\_&\_\\
+$<$datetype$>$date                &\+&\+&\_&\_&\_&\_&\_\\
+dateabbrev                        &\+&\+&\_&\+&\+&\_&\_\\
+datecirca                         &\+&\+&\_&\_&\_&\_&\_\\
+dateera                           &\+&\+&\_&\_&\_&\_&\_\\
+dateerauto                        &\+&\+&\_&\_&\_&\_&\_\\
+dateuncertain                     &\+&\+&\_&\_&\_&\_&\_\\
+datezeros                         &\+&\+&\_&\_&\_&\_&\_\\
+defernumbers                      &\+&\+&\_&\_&\_&\_&\_\\
+doi                               &\+&\+&\_&\+&\+&\_&\_\\ % style
+eprint                            &\+&\+&\_&\+&\+&\_&\_\\ % style
+$<$namepart$>$inits               &\+&\+&\_&\+&\+&\+&\+\\
+gregorianstart                    &\+&\+&\_&\_&\_&\_&\_\\
+hyperref                          &\+&\+&\_&\_&\_&\_&\_\\
+ibidtracker                       &\+&\+&\_&\+&\+&\_&\_\\
+idemtracker                       &\+&\+&\_&\+&\+&\_&\_\\
+indexing                          &\+&\+&\_&\+&\+&\_&\_\\
+isbn                              &\+&\+&\_&\+&\+&\_&\_\\ % style
+julian                            &\+&\+&\_&\_&\_&\_&\_\\
+labelalpha                        &\+&\+&\_&\+&\+&\_&\_\\
+labelalphanametemplatename        &\_&\_&\+&\_&\+&\+&\+\\
+labelnamefield                    &\_&\_&\_&\_&\+&\_&\_\\
+labelnumber                       &\+&\+&\_&\+&\+&\_&\_\\
+labeltitle                        &\+&\+&\_&\+&\+&\_&\_\\
+labeltitlefield                   &\_&\_&\_&\_&\+&\_&\_\\
+labeltitleyear                    &\+&\+&\_&\+&\+&\_&\_\\
+labeldateparts                    &\+&\+&\_&\+&\+&\_&\_\\
+labeltime                         &\+&\+&\_&\_&\_&\_&\_\\
+labeldateusetime                  &\+&\+&\_&\_&\_&\_&\_\\
+labelprefix                       &\_&\_&\+&\_&\_&\_&\_\\
+$<$datetype$>$time                &\+&\+&\_&\_&\_&\_&\_\\
+$<$datetype$>$dateusetime         &\+&\+&\_&\_&\_&\_&\_\\
+language                          &\+&\+&\_&\_&\_&\_&\_\\
+loadfiles                         &\+&\+&\_&\_&\_&\_&\_\\
+loccittracker                     &\+&\+&\_&\+&\+&\_&\_\\
+maxalphanames                     &\+&\+&\_&\+&\+&\_&\_\\
+maxbibnames                       &\+&\+&\_&\+&\+&\_&\_\\
+maxcitenames                      &\+&\+&\_&\+&\+&\_&\_\\
+maxsortnames                      &\+&\+&\_&\+&\+&\_&\_\\
+maxitems                          &\+&\+&\_&\+&\+&\_&\_\\
+maxnames                          &\+&\+&\_&\+&\+&\_&\_\\
+maxparens                         &\+&\+&\_&\_&\_&\_&\_\\
+mcite                             &\+&\_&\_&\_&\_&\_&\_\\
+minalphanames                     &\+&\+&\_&\+&\+&\_&\_\\
+minbibnames                       &\+&\+&\_&\+&\+&\_&\_\\
+mincitenames                      &\+&\+&\_&\+&\+&\_&\_\\
+minsortnames                      &\+&\+&\_&\+&\+&\_&\_\\
+mincrossrefs                      &\+&\+&\_&\_&\_&\_&\_\\
+minxrefs                          &\+&\+&\_&\_&\_&\_&\_\\
+minitems                          &\+&\+&\_&\+&\+&\_&\_\\
+minnames                          &\+&\+&\_&\+&\+&\_&\_\\
+nametemplates                     &\_&\_&\+&\_&\+&\+&\+\\
+natbib                            &\+&\_&\_&\_&\_&\_&\_\\
+nohashothers                      &\+&\+&\_&\+&\+&\+&\_\\
+nosortothers                      &\+&\+&\_&\+&\+&\+&\_\\
+noinherit                         &\_&\_&\_&\_&\+&\_&\_\\
+notetype                          &\+&\+&\_&\_&\_&\_&\_\\
+opcittracker                      &\+&\+&\_&\+&\+&\_&\_\\
+openbib                           &\+&\+&\_&\_&\_&\_&\_\\
+pagetracker                       &\+&\+&\_&\_&\_&\_&\_\\
+parentracker                      &\+&\+&\_&\_&\_&\_&\_\\
+punctfont                         &\+&\+&\_&\_&\_&\_&\_\\
+refsection                        &\+&\+&\_&\_&\_&\_&\_\\
+refsegment                        &\+&\+&\_&\_&\_&\_&\_\\
+related                           &\+&\+&\_&\+&\+&\_&\_\\ % style
+safeinputenc                      &\+&\+&\_&\_&\_&\_&\_\\
+seconds                           &\+&\+&\_&\_&\_&\_&\_\\
+singletitle                       &\+&\+&\_&\+&\+&\_&\_\\
+skipbib                           &\+&\+&\_&\+&\+&\_&\_\\
+skipbiblist                       &\+&\+&\_&\+&\+&\_&\_\\
+skiplab                           &\+&\+&\_&\+&\+&\_&\_\\
+sortcase                          &\+&\+&\_&\_&\_&\_&\_\\
+sortcites                         &\+&\+&\_&\_&\_&\_&\_\\
+sorting                           &\+&\+&\_&\_&\_&\_&\_\\
+sortingnamekeytemplatename        &\_&\_&\+&\_&\+&\+&\+\\
+sortlocale                        &\+&\+&\_&\_&\_&\_&\_\\
+sortlos                           &\+&\+&\_&\_&\_&\_&\_\\
+sortupper                         &\+&\+&\_&\_&\_&\_&\_\\
+style                             &\+&\_&\_&\_&\_&\_&\_\\
+terseinits                        &\+&\+&\_&\+&\+&\+&\+\\
+texencoding                       &\+&\+&\_&\_&\_&\_&\_\\
+timezeros                         &\+&\+&\_&\_&\_&\_&\_\\
+timezones                         &\+&\+&\_&\_&\_&\_&\_\\
+uniquelist                        &\+&\+&\_&\+&\+&\+&\_\\
+uniquename                        &\+&\+&\_&\+&\+&\+&\+\\
+uniquenametemplatename            &\_&\_&\+&\_&\+&\+&\+\\
+uniquetitle                       &\+&\+&\_&\+&\+&\_&\_\\
+uniquebaretitle                   &\+&\+&\_&\+&\+&\_&\_\\
+uniquework                        &\+&\+&\_&\+&\+&\_&\_\\
+uniqueprimaryauthor               &\+&\+&\_&\+&\+&\_&\_\\
+url                               &\+&\+&\_&\+&\+&\_&\_\\ % style
+useprefix                         &\+&\+&\_&\+&\+&\+&\+\\
+use$<$name$>$                     &\+&\+&\_&\+&\+&\_&\_\\
 \end{longtable}
 \endgroup
 
@@ -13545,6 +14049,31 @@
 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.13}{2019-08-17}
+\item Added new \bibtype{dataset} entry type\see{bib:typ:blx}
+\item Promoted \bibtype{software} to regular entry type\see{bib:typ:blx}
+\item Added \bibfield{entrykey} alias for entry keys in labels\see{aut:ctm:lab}
+\item Added \opt{appendstrict} sourcemapping option\see{aut:ctm:map}
+\item Added \opt{nohashothers} and \opt{nosortothers}\see{use:opt:pre:int}
+\item Enhanced \cmd{addbibresource} with globbing\see{use:bib:res}
+\item Added \cmd{DeclareBiblatexOption}\see{aut:bbx:bbx}
+\item Expanded scope possibilities for several options\see{apx:opt}
+\item Added \cmd{ifvolcite} test\see{aut:aux:tst}
+\item Added special fields \bibfield{volcitevolume} and \bibfield{volcitepages}%
+  \see{aut:cbx:fld}
+\item Added \cmd{AtVolcite} hook\see{aut:fmt:hok}
+\item Added \cmd{pnfmt} \see{use:cit:msc}
+\item Added \cmd{mkbibcompletename} and \cmd{mkbibcompletename<formatorder>}\see{use:fmt:fmt}
+\item Made \cmd{postnotedelim} and friends context sensitive\see{use:fmt:fmt}
+\item Added \cmd{multipostnotedelim} and \cmd{multiprenotedelim}\see{use:fmt:fmt}
+\item Added \cmd{thefirstlistitem} and friends\see{aut:aux:dat}
+\item Added \prm{itempostpro} argument to \cmd{mkcomprange}, \cmd{mknormrange} and \cmd{mkfirstpage}\see{aut:aux:msc}
+\item Added \len{biburlbigskip} and friends\see{use:fmt:len}
+\item Added \cnt{biburlbigbreakpenalty} and \cnt{biburlbreakpenalty} and friends\see{use:fmt:len}
+\item Added \cmd{DeclarePrintbibliographyDefaults}\see{use:bib:bib}
+\item Added \bibfield{doi} to \bibtype{online}\see{bib:typ:blx}
+\end{release}
+
 \begin{release}{3.12}{2018-10-30}
 \item Added literal and named annotation functionality\see{use:annote}
 \item Added \cmd{ifnocite}\see{aut:aux:tst}
@@ -13644,6 +14173,7 @@
 \item Added \bibfield{namehash} and \bibfield{fullhash} for all name list fields\see{aut:bbx:fld:gen}
 \item Generalised \opt{giveninits} option to all nameparts\see{use:opt:pre:int}
 \item Added \opt{inits} option to \cmd{DeclareSortingNamekeyScheme}\see{aut:ctm:srt}
+\item Removed option \opt{sortgiveninits}. Use the option \opt{inits} to \cmd{DeclareSortingNamekeyScheme} instead
 \item Added \cmd{DeclareLabelalphaNameTemplate}\see{aut:ctm:lab}
 \item Added full \acr{EDTF} Levels 0 and 1 compliance for parsing and printing times\see{bib:use:dat}
 \item Changed dates to be fully \acr{EDTF} Levels 0 and 1 compliant. Associated tests and localisation strings\see{bib:use:dat}
@@ -13685,7 +14215,7 @@
 \item New sourcemapping options for creating new entries dynamically and looping over map steps\see{aut:ctm:map}
 \item Added \opt{noalphaothers} and enhanced name range selection in \cmd{DeclareLabelalphaTemplate}\see{aut:ctm:lab}
 \item Added \cmd{DeclareDatamodelConstant}\see{aut:ctm:dm}
-\item Renamed \opt{firstinits} and \opt{sortfirstinits}
+\item Renamed \opt{firstinits} to \opt{giveninits} and \opt{sortfirstinits} to \opt{sortgiveninits}\see{use:opt:pre:int}
 \item Added \cmd{DeclareSortingNamekeyScheme}\see{aut:ctm:srt}
 \item Removed messy experimental endnote and zoterordf support for \biber
 \item Added \cmd{nonameyeardelim}\see{use:fmt:fmt}

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/10-references-per-section-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/11-references-by-section-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/12-references-by-segment-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/13-references-by-keyword-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/14-references-by-category-bibtex.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-biber.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/15-references-by-type-bibtex.pdf
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/20-indexing-single-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/21-indexing-multiple-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/22-indexing-subentry-bibtex.pdf
===================================================================
(Binary files differ)

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/31-style-numeric-comp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/32-style-numeric-verb-bibtex.pdf
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/50-style-authoryear-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/51-style-authoryear-ibid-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/52-style-authoryear-comp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/53-style-authoryear-icomp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/60-style-authortitle-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/61-style-authortitle-ibid-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/62-style-authortitle-comp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/63-style-authortitle-icomp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/64-style-authortitle-terse-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/65-style-authortitle-tcomp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/66-style-authortitle-ticomp-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/70-style-verbose-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/71-style-verbose-ibid-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/72-style-verbose-note-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/73-style-verbose-inote-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/74-style-verbose-trad1-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/75-style-verbose-trad2-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/76-style-verbose-trad3-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/80-style-reading-bibtex.pdf
===================================================================
(Binary files differ)

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/81-style-draft-bibtex.pdf
===================================================================
(Binary files differ)

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

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

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

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

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

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

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

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

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

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

Modified: trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/doc/latex/biblatex/examples/biblatex-examples.bib	2019-08-24 20:53:26 UTC (rev 51953)
@@ -946,7 +946,7 @@
   annotation   = {A single volume from the critical edition of Nietzsche's
                   works. This \texttt{book} entry explicitly refers to the first
                   volume only. Note the \texttt{title} and \texttt{maintitle}
-                  fields. Also note the \texttt{sorttitle} 
+                  fields. Also note the \texttt{sorttitle}
                   field. We want this entry to be listed after the entry
                   referring to the entire edition},
 }
@@ -1138,7 +1138,7 @@
                   \texttt{isbn} field},
 }
 
- at InCollection{gaonkar:in,
+ at incollection{gaonkar:in,
   author       = {Gaonkar, Dilip Parameshwar},
   editor       = {Gaonkar, Dilip Parameshwar},
   title        = {On Alternative Modernities},
@@ -1169,6 +1169,9 @@
                   \texttt{editoratype} fields},
 }
 
+% booktitle and booksubtitle are only needed for BibTeX's less sophisticated
+% inheritance set-up to make sure westfahl:space shows correctly.
+% With Biber they are not needed.
 @collection{westfahl:frontier,
   editor       = {Westfahl, Gary},
   title        = {Space and Beyond},
@@ -1181,8 +1184,8 @@
   booktitle    = {Space and Beyond},
   booksubtitle = {The Frontier Theme in Science Fiction},
   annotation   = {This is a \texttt{collection} entry. Note the format of the
-                  \texttt{location} field as well as the \texttt{subtitle} and
-                  \texttt{booksubtitle} fields},
+                  \texttt{location} field as well as the \texttt{subtitle}
+                  field},
 }
 
 @inbook{kant:kpv,

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/alphabetic.bbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -6,7 +6,7 @@
 
 \providebool{bbx:subentry}
 
-\DeclareBibliographyOption[boolean]{subentry}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{subentry}[true]{%
   \setbool{bbx:subentry}{#1}}
 
 \DeclareNameAlias{author}{default}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/authoryear.bbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -9,7 +9,7 @@
      \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx at lasthash}}}
     {\renewbibmacro*{bbx:savehash}{}}}
 
-\DeclareBibliographyOption[boolean]{mergedate}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{mergedate}[true]{%
   \ifcsdef{bbx at opt@mergedate@#1}
     {\csuse{bbx at opt@mergedate@#1}}
     {\PackageError{biblatex}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/numeric.bbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -6,7 +6,7 @@
 
 \providebool{bbx:subentry}
 
-\DeclareBibliographyOption[boolean]{subentry}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{subentry}[true]{%
   \setbool{bbx:subentry}{#1}}
 
 \DeclareNameAlias{author}{default}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/reading.bbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -102,21 +102,21 @@
 \newbool{bbx:library}
 \newbool{bbx:file}
 
-\DeclareBibliographyOption[boolean]{entryhead}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{entryhead}[true]{%
   \ifcsdef{bbx at item@#1}
     {\letcs\bbx at item{bbx at item@#1}}
     {\PackageError{biblatex}
        {Invalid option 'header=#1'}
        {Valid values: header=true, false, full, name.}}}
-\DeclareBibliographyOption[boolean]{entrykey}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{entrykey}[true]{%
   \setbool{bbx:entrykey}{#1}}
-\DeclareBibliographyOption[boolean]{annotation}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{annotation}[true]{%
   \setbool{bbx:annotation}{#1}}
-\DeclareBibliographyOption[boolean]{abstract}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{abstract}[true]{%
   \setbool{bbx:abstract}{#1}}
-\DeclareBibliographyOption[boolean]{library}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{library}[true]{%
   \setbool{bbx:library}{#1}}
-\DeclareBibliographyOption[boolean]{file}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{file}[true]{%
   \setbool{bbx:file}{#1}}
 
 \ExecuteBibliographyOptions{loadfiles,entryhead,entrykey,annotation,abstract,library,file}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/bbx/standard.bbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -7,15 +7,15 @@
 \newtoggle{bbx:eprint}
 \newtoggle{bbx:related}
 
-\DeclareBibliographyOption[boolean]{isbn}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{isbn}[true]{%
   \settoggle{bbx:isbn}{#1}}
-\DeclareBibliographyOption[boolean]{url}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{url}[true]{%
   \settoggle{bbx:url}{#1}}
-\DeclareBibliographyOption[boolean]{doi}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{doi}[true]{%
   \settoggle{bbx:doi}{#1}}
-\DeclareBibliographyOption[boolean]{eprint}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{eprint}[true]{%
   \settoggle{bbx:eprint}{#1}}
-\DeclareBibliographyOption[boolean]{related}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{related}[true]{%
   \settoggle{bbx:related}{#1}}
 
 \ExecuteBibliographyOptions{isbn,url,doi,eprint,related}
@@ -343,6 +343,45 @@
     {}%
   \usebibmacro{finentry}}
 
+\DeclareBibliographyDriver{dataset}{%
+  \usebibmacro{bibindex}%
+  \usebibmacro{begentry}%
+  \usebibmacro{author/editor+others/translator+others}%
+  \setunit{\printdelim{nametitledelim}}\newblock
+  \usebibmacro{title}%
+  \newunit
+  \printlist{language}%
+  \newunit\newblock
+  \usebibmacro{byauthor}%
+  \newunit\newblock
+  \usebibmacro{byeditor+others}%
+  \newunit\newblock
+  \printfield{type}%
+  \newunit
+  \printfield{edition}%
+  \newunit
+  \printfield{version}%
+  \newunit\newblock
+  \usebibmacro{series+number}%
+  \newunit\newblock
+  \printfield{note}%
+  \newunit\newblock
+  \printlist{organization}%
+  \newunit
+  \usebibmacro{publisher+location+date}%
+  \newunit\newblock
+  \usebibmacro{doi+eprint+url}%
+  \newunit\newblock
+  \usebibmacro{addendum+pubstate}%
+  \setunit{\bibpagerefpunct}\newblock
+  \usebibmacro{pageref}%
+  \newunit\newblock
+  \iftoggle{bbx:related}
+    {\usebibmacro{related:init}%
+     \usebibmacro{related}}
+    {}%
+  \usebibmacro{finentry}}
+
 \DeclareBibliographyDriver{manual}{%
   \usebibmacro{bibindex}%
   \usebibmacro{begentry}%
@@ -446,6 +485,10 @@
   \newunit\newblock
   \usebibmacro{date}%
   \newunit\newblock
+  \iftoggle{bbx:doi}
+    {\printfield{doi}}
+    {}%
+  \newunit\newblock
   \iftoggle{bbx:eprint}
     {\usebibmacro{eprint}}
     {}%
@@ -713,6 +756,7 @@
 \DeclareBibliographyAlias{inreference}{incollection}
 \DeclareBibliographyAlias{suppperiodical}{article}
 \DeclareBibliographyAlias{review}{article}
+\DeclareBibliographyAlias{software}{misc}
 \DeclareBibliographyAlias{*}{misc}
 
 \newbibmacro*{maintitle+title}{%
@@ -921,7 +965,11 @@
           \ifnumgreater{\value{bbx:relatedcount}}{1}
             {\ifcsundef{relateddelim\strfield{relatedtype}}
               {\printunit{\relateddelim}}
-              {\printunit{\csuse{relateddelim\strfield{relatedtype}}}}}
+              {\expandafter\expandafter\expandafter\expandafter\expandafter
+               \expandafter\expandafter\printunit
+               \expandafter\expandafter\expandafter\expandafter\expandafter
+               \expandafter\expandafter{%
+                 \csuse{relateddelim\strfield{relatedtype}}}}}
             {}}%
         \ifbibmacroundef{related:\strfield{relatedtype}}
           {\appto{\do}{\usebibmacro{related:default}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.def	2019-08-24 20:53:26 UTC (rev 51953)
@@ -97,9 +97,11 @@
 \newcommand*{\multicitedelim}{\addsemicolon\space}
 \newcommand*{\compcitedelim}{\addcomma\space}
 \newcommand*{\supercitedelim}{\addcomma}
-\newcommand*{\prenotedelim}{\addspace}
-\newcommand*{\postnotedelim}{\addcomma\space}
-\newcommand*{\extpostnotedelim}{\addspace}
+\DeclareDelimFormat{prenotedelim}{\addspace}
+\DeclareDelimFormat{postnotedelim}{\addcomma\space}
+\DeclareDelimAlias{multiprenotedelim}{prenotedelim}
+\DeclareDelimAlias{multipostnotedelim}{postnotedelim}
+\DeclareDelimFormat{extpostnotedelim}{\addspace}
 \newcommand*{\volcitedelim}{\addcomma\space}
 \newcommand*{\textcitedelim}{%
   \iffinalcitedelim
@@ -243,30 +245,64 @@
 
 % Local setup for \url; see comments in url.sty for details.
 
+\newcounter{biburlbigbreakpenalty}
+\newcounter{biburlbreakpenalty}
 \newcounter{biburlnumpenalty}
 \newcounter{biburlucpenalty}
 \newcounter{biburllcpenalty}
 
+\setcounter{biburlbigbreakpenalty}{100}
+\setcounter{biburlbreakpenalty}{200}
+
+\newmuskip\biburlbigskip
+\newmuskip\biburlnumskip
+\newmuskip\biburlucskip
+\newmuskip\biburllcskip
+
+% I'd have preferred \setlength here, but calc does not support
+% muglue (yet?).
+% https://github.com/plk/biblatex/issues/889
+% See also https://tex.stackexchange.com/q/188215/
+\biburlbigskip=0mu plus 3mu\relax
+\biburlnumskip=0mu\relax
+\biburlucskip=0mu\relax
+\biburllcskip=0mu\relax
+
 \newcommand*{\biburlsetup}{%
-  \Urlmuskip=0mu plus 3mu\relax
-  \mathchardef\UrlBigBreakPenalty=100\relax
-  \mathchardef\UrlBreakPenalty=200\relax
+  \Urlmuskip\biburlbigskip
+  \mathchardef\UrlBigBreakPenalty=\value{biburlbigbreakpenalty}\relax
+  \mathchardef\UrlBreakPenalty=\value{biburlbreakpenalty}\relax
   \def\UrlBigBreaks{\do\:\do\-}%
   \def\UrlBreaks{%
     \do\.\do\@\do\/\do\\\do\!\do\_\do\|\do\;\do\>\do\]\do\)\do\}%
     \do\,\do\?\do\'\do\+\do\=\do\#\do\$\do\&\do\*\do\^\do\"}%
   \ifnumgreater{\value{biburlnumpenalty}}{0}
-    {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlnumpenalty}}}}%
+    {\def\do##1{%
+       \appto\UrlSpecials{%
+         \do##1{%
+           \mathchar`##1
+           \mskip\biburlnumskip
+           \penalty\value{biburlnumpenalty}}}}%
      \do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9\do\0}
     {}%
   \ifnumgreater{\value{biburlucpenalty}}{0}
-    {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburlucpenalty}}}}%
+    {\def\do##1{%
+       \appto\UrlSpecials{%
+         \do##1{%
+           \mathchar`##1
+           \mskip\biburlucskip
+           \penalty\value{biburlucpenalty}}}}%
      \do\A\do\B\do\C\do\D\do\E\do\F\do\G\do\H\do\I\do\J
      \do\K\do\L\do\M\do\N\do\O\do\P\do\Q\do\R\do\S\do\T
      \do\U\do\V\do\W\do\X\do\Y\do\Z}
     {}%
   \ifnumgreater{\value{biburllcpenalty}}{0}
-    {\def\do##1{\appto\UrlSpecials{\do##1{\mathchar`##1 \penalty\value{biburllcpenalty}}}}%
+    {\def\do##1{%
+       \appto\UrlSpecials{%
+         \do##1{%
+           \mathchar`##1
+           \mskip\biburllcskip
+           \penalty\value{biburllcpenalty}}}}%
      \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j
      \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t
      \do\u\do\v\do\w\do\x\do\y\do\z}
@@ -503,7 +539,7 @@
 \DeclareFieldFormat{isbn}{\mkbibacro{ISBN}\addcolon\space #1}
 \DeclareFieldFormat{isrn}{\mkbibacro{ISRN}\addcolon\space #1}
 \DeclareFieldFormat{issn}{\mkbibacro{ISSN}\addcolon\space #1}
-\DeclareFieldFormat{journaltitle}{\mkbibemph{#1}}
+\DeclareFieldFormat{journaltitle}{\mkbibemph{#1\isdot}}
 \DeclareFieldFormat{issuetitle}{\mkbibemph{#1}}
 \DeclareFieldFormat{maintitle}{\mkbibemph{#1}}
 \DeclareFieldFormat{booktitle}{\mkbibemph{#1}}
@@ -842,7 +878,7 @@
       {\namepartprefix}
       {\namepartsuffix}}%
   \usebibmacro{name:andothers}}
-  
+
 \DeprecateNameFormatWithReplacement{last-first}{family-given}
 
 
@@ -955,64 +991,92 @@
 % Auxiliary macros for name formatting directives
 % ------------------------------------------------------------------
 
+\newcommand{\mkbibcompletename}[1]{#1}
+
+\newcommand{\mkbibcompletenamefamily}{\mkbibcompletename}
+
 \newbibmacro*{name:family}[4]{%
   \ifuseprefix
     {\usebibmacro{name:delim}{#3#1}%
      \usebibmacro{name:hook}{#3#1}%
-     \ifdefvoid{#3}
-       {}
-       {\ifcapital
-          {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
-          {\mkbibnameprefix{#3}\isdot}%
-        \ifprefchar{}{\bibnamedelimc}}}
+     \mkbibcompletenamefamily{%
+       \ifdefvoid{#3}
+         {}
+         {\ifcapital
+            {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
+            {\mkbibnameprefix{#3}\isdot}%
+          \ifprefchar{}{\bibnamedelimc}}%
+       \mkbibnamefamily{#1}\isdot}}
     {\usebibmacro{name:delim}{#1}%
-     \usebibmacro{name:hook}{#1}}%
-  \mkbibnamefamily{#1}\isdot}%
+     \usebibmacro{name:hook}{#1}%
+     \mkbibcompletenamefamily{%
+       \mkbibnamefamily{#1}\isdot}}}%
 \newbibmacro*{name:last}[4]{% legacy alias
   \blx at warning@noline{%
     'name:last' is deprecated, please use 'name:family'}%
   \usebibmacro{name:family}{#1}{#2}{#3}{#4}}
 
+\newcommand{\mkbibcompletenamegivenfamily}{\mkbibcompletename}
+
 \newbibmacro*{name:given-family}[4]{%
   \usebibmacro{name:delim}{#2#3#1}%
   \usebibmacro{name:hook}{#2#3#1}%
-  \ifdefvoid{#2}{}{\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
-  \ifdefvoid{#3}{}{%
-    \mkbibnameprefix{#3}\isdot
-    \ifprefchar
+  \mkbibcompletenamegivenfamily{%
+    \ifdefvoid{#2}
       {}
-      {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
-  \mkbibnamefamily{#1}\isdot
-  \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}
+      {\mkbibnamegiven{#2}\isdot\bibnamedelimd}%
+    \ifdefvoid{#3}
+      {}
+      {\mkbibnameprefix{#3}\isdot
+       \ifprefchar
+         {}
+         {\ifuseprefix{\bibnamedelimc}{\bibnamedelimd}}}%
+    \mkbibnamefamily{#1}\isdot
+    \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}}}
 \newbibmacro*{name:first-last}[4]{% legacy alias
   \blx at warning@noline{%
     'name:first-last' is deprecated, please use 'name:given-family'}%
   \usebibmacro{name:given-family}{#1}{#2}{#3}{#4}}
 
+\newcommand{\mkbibcompletenamefamilygiven}{\mkbibcompletename}
+
 \newbibmacro*{name:family-given}[4]{%
   \ifuseprefix
     {\usebibmacro{name:delim}{#3#1}%
      \usebibmacro{name:hook}{#3#1}%
-     \ifdefvoid{#3}{}{%
-       \ifcapital
-         {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
-         {\mkbibnameprefix{#3}\isdot}%
-       \ifprefchar{}{\bibnamedelimc}}%
-     \mkbibnamefamily{#1}\isdot
-     \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
-     \ifdefvoid{#2}{}{\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}
+     \mkbibcompletenamefamilygiven{%
+       \ifdefvoid{#3}
+         {}
+         {\ifcapital
+            {\mkbibnameprefix{\MakeCapital{#3}}\isdot}
+            {\mkbibnameprefix{#3}\isdot}%
+          \ifprefchar{}{\bibnamedelimc}}%
+       \mkbibnamefamily{#1}\isdot
+       \ifdefvoid{#4}
+         {}
+         {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
+       \ifdefvoid{#2}
+         {}
+         {\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}}
     {\usebibmacro{name:delim}{#1}%
      \usebibmacro{name:hook}{#1}%
-     \mkbibnamefamily{#1}\isdot
-     \ifdefvoid{#4}{}{\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
-     \ifboolexpe{%
-       test {\ifdefvoid{#2}}
-       and
-       test {\ifdefvoid{#3}}}
-       {}
-       {\revsdnamepunct}%
-     \ifdefvoid{#2}{}{\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
-     \ifdefvoid{#3}{}{\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}
+     \mkbibcompletenamefamilygiven{%
+       \mkbibnamefamily{#1}\isdot
+       \ifdefvoid{#4}
+         {}
+         {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
+       \ifboolexpe{%
+         test {\ifdefvoid{#2}}
+         and
+         test {\ifdefvoid{#3}}}
+         {}
+         {\revsdnamepunct}%
+       \ifdefvoid{#2}
+         {}
+         {\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
+       \ifdefvoid{#3}
+         {}
+         {\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}}
 \newbibmacro*{name:last-first}[4]{% legacy alias
   \blx at warning@noline{%
     'name:last-first' is deprecated, please use 'name:family-given'}%
@@ -1170,11 +1234,12 @@
      \@firstofone #1% remove spurious braces
      \ifdefvoid{#4}{}{ #4}%
      \ifdefvoid{#2}{}{, #2}%
-     \actualoperator
-     \ifdefvoid{#3}{}{\MakeCapital{#3} }%
-     #1%
-     \ifdefvoid{#4}{}{ #4}%
-     \ifdefvoid{#2}{}{, #2}}
+     \ifdefvoid{#3}{}{%
+       \actualoperator
+       \MakeCapital{#3} %
+       #1%
+       \ifdefvoid{#4}{}{ #4}%
+       \ifdefvoid{#2}{}{, #2}}}
     {\@firstofone #1% remove spurious braces
      \ifdefvoid{#4}{}{ #4}%
      \ifboolexpe{%
@@ -2143,7 +2208,7 @@
 
 \DeclareCiteCommand{\notecite}
   {\printfield{prenote}%
-   \setunit*{\prenotedelim}}
+   \setunit*{\printdelim{prenotedelim}}}
   {\nocite{\thefield{entrykey}}}
   {}
   {\printfield{postnote}}
@@ -2150,7 +2215,7 @@
 
 \DeclareCiteCommand{\pnotecite}[\mkbibparens]
   {\printfield{prenote}%
-   \setunit*{\prenotedelim}}
+   \setunit*{\printdelim{prenotedelim}}}
   {\nocite{\thefield{entrykey}}}
   {}
   {\printfield{postnote}}
@@ -2157,7 +2222,7 @@
 
 \DeclareCiteCommand{\fnotecite}[\mkbibfootnote]
   {\printfield{prenote}%
-   \setunit*{\prenotedelim}}
+   \setunit*{\printdelim{prenotedelim}}}
   {\nocite{\thefield{entrykey}}}
   {}
   {\printfield{postnote}}
@@ -2262,12 +2327,12 @@
   \iffieldundef{prenote}
     {}
     {\printfield{prenote}%
-     \setunit{\prenotedelim}}}
+     \setunit{\printdelim{prenotedelim}}}}
 
 \newbibmacro*{postnote}{%
   \iffieldundef{postnote}
     {}
-    {\setunit{\postnotedelim}%
+    {\setunit{\printdelim{postnotedelim}}%
      \printfield{postnote}}}
 
 % multicite commands
@@ -2276,12 +2341,12 @@
   \iffieldundef{multiprenote}
     {}
     {\printfield{multiprenote}%
-     \prenotedelim}}
+     \printdelim{multiprenotedelim}}}
 
 \newbibmacro*{multipostnote}{%
   \iffieldundef{multipostnote}
     {}
-    {\postnotedelim
+    {\printdelim{multipostnotedelim}
      \printfield{multipostnote}}}
 
 % ------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/biblatex.sty	2019-08-24 20:53:26 UTC (rev 51953)
@@ -12,8 +12,8 @@
 % particular purpose.
 
 % Set up the version strings here
-\def\abx at date{2018/11/02}
-\def\abx at version{3.12}
+\def\abx at date{2019/08/17}
+\def\abx at version{3.13}
 \def\abx at bbxid{\abx at date\space v\abx at version\space biblatex bibliography style (PK/MW)}
 \def\abx at cbxid{\abx at date\space v\abx at version\space biblatex citation style (PK/MW)}
 \def\abx at lbxid{\abx at date\space v\abx at version\space biblatex localization (PK/MW)}
@@ -22,12 +22,12 @@
 % This is not updated by build script as the control file version
 % does not necessarily change with the package version.
 % This is used when writing the .bcf
-\def\blx at bcfversion{3.5}
+\def\blx at bcfversion{3.6}
 
 % This is not updated by build script as the bbl version
 % does not necessarily change with the package version.
 % This is used when checking the .bbl
-\def\blx at bblversion{3.0}
+\def\blx at bblversion{3.1}
 
 \NeedsTeXFormat{LaTeX2e}[2005/12/01]
 \ProvidesPackage{biblatex}
@@ -209,7 +209,18 @@
       {\def\blx at sortlocale{english}}}
     {}%
   \@ifpackageloaded{polyglossia}
-    {% This is required for languages which are never explicitly selected
+    {% polyglossia support is not great when it comes to language variants,
+     % so we better warn about it.
+     \ifundef\blx at nowarnpolyglossia
+       {\blx at warning@noline{%
+          Package 'polyglossia' detected.\MessageBreak
+          Please note that biblatex's polyglossia\MessageBreak
+          interface has some rough edges.\MessageBreak
+          Language variants are not picked up correctly.\MessageBreak
+          You can disable this warning by defining the macro\MessageBreak
+          '\string\blx at nowarnpolyglossia' in the preamble}}
+       {}%
+     % This is required for languages which are never explicitly selected
      % This check because \xpg at loaded is not defined in polyglossia <= v1.42.0
      \ifundef\xpg at loaded
        {\let\xpg at loaded\@empty
@@ -510,7 +521,30 @@
 \let\HAR at checkdef\@empty
 
 \providecommand{\@gobblefive}[5]{}
+\providecommand{\@gobblethree}[3]{}
 
+% etoolbox helpers
+
+% \ifinlist{<item>}{<list>} is not a good idea
+% for printable stuff according to the etoolbox docs
+% for \ifinlist (p. 31)
+\newrobustcmd{\blx at ifprintableinlist}[2]{%
+  \begingroup
+    \def\blx at tempa{\endgroup
+      \@secondoftwo}%
+    \renewcommand*{\do}[1]{%
+      \ifstrequal{##1}{#1}
+        {\def\blx at tempa{\endgroup
+           \@firstoftwo}%
+         \listbreak}
+        {}}%
+    \dolistloop{#2}%
+  \expandafter\blx at tempa}
+
+\newrobustcmd{\blx at ifprintableinlistcs}[2]{%
+  \expandafter\blx at ifprintableinlistcs@i\csname #2\endcsname{#1}}
+\long\def\blx at ifprintableinlistcs@i#1#2{\blx at ifprintableinlist{#2}{#1}}
+
 \ifundef\pdf at mdfivesum
   {\let\blx at mdfivesum\@firstofone
    \blx at warning@noline{Command '\string\pdf at mdfivesum' undefined.\MessageBreak
@@ -651,9 +685,8 @@
 \expandafter\newcount\csname blx at sectionciteorder@0\endcsname
 \newcount\blx at entrysetcounter
 
-
-\def\blx at uniquename{0}
-\def\blx at uniquelist{0}
+\def\blx at uniquename{false}
+\def\blx at uniquelist{false}
 \def\blx at maxbibnames{0}
 \def\blx at minbibnames{0}
 \def\blx at maxcitenames{0}
@@ -660,18 +693,10 @@
 \def\blx at mincitenames{0}
 \def\blx at maxsortnames{0}
 \def\blx at minsortnames{0}
-\def\blx at maxbibnames@type{\blx at maxbibnames}
-\def\blx at minbibnames@type{\blx at minbibnames}
-\def\blx at maxcitenames@type{\blx at maxcitenames}
-\def\blx at mincitenames@type{\blx at mincitenames}
-\def\blx at maxsortnames@type{\blx at maxsortnames}
-\def\blx at minsortnames@type{\blx at minsortnames}
 \def\blx at maxalphanames{0}
 \def\blx at minalphanames{0}
 \def\blx at maxitems{0}
 \def\blx at minitems{0}
-\def\blx at maxitems@type{\blx at maxitems}
-\def\blx at minitems@type{\blx at minitems}
 
 \newlength{\labelnumberwidth}
 \newlength{\labelalphawidth}
@@ -721,17 +746,11 @@
 \newtoggle{blx at labeltitleyear}
 \newtoggle{blx at labeldateparts}
 \newtoggle{blx at natbib}
-\newtoggle{blx at noroman}
 \newtoggle{blx at mcite}
 \newtoggle{blx at loadfiles}
-\newtoggle{blx at singletitle}
 \newtoggle{blx at sortsets}
 \newtoggle{blx at crossrefsource}
 \newtoggle{blx at xrefsource}
-\newtoggle{blx at uniqueprimaryauthor}
-\newtoggle{blx at uniquetitle}
-\newtoggle{blx at uniquebaretitle}
-\newtoggle{blx at uniquework}
 \newtoggle{blx at terseinits}
 \newtoggle{blx at useprefix}
 \newtoggle{blx at addset}
@@ -741,11 +760,20 @@
 \newtoggle{blx at skipbiblist}
 \newtoggle{blx at skiplab}
 \newtoggle{blx at citation}
+\newtoggle{blx at volcite}
 \newtoggle{blx at bibliography}
 \newtoggle{blx at citeindex}
 \newtoggle{blx at bibindex}
 \newtoggle{blx at localnumber}
 \newtoggle{blx at refcontext}
+\newtoggle{blx at noroman}
+\newtoggle{blx at nohashothers}
+\newtoggle{blx at nosortothers}
+\newtoggle{blx at singletitle}
+\newtoggle{blx at uniquebaretitle}
+\newtoggle{blx at uniqueprimaryauthor}
+\newtoggle{blx at uniquetitle}
+\newtoggle{blx at uniquework}
 
 \newcommand*{\blx at xifstrequal}[2]{%
   \begingroup
@@ -1176,10 +1204,10 @@
         See the biblatex manual for valid option keys and possible values}
        {#2}}}
 
-\def\blx at err@optdef#1{%
+\def\blx at err@optdef#1#2{%
   \blx at error
-    {Conflicting options}
-    {The option '#1' is already defined}}
+    {Option '#1' already defined}
+    {The option '#1' is already defined in scope '#2'}}
 
 \def\blx at err@nodocdiv#1{%
   \blx at error
@@ -1991,8 +2019,13 @@
 \providerobustcmd*{\allowhyphens}{%
   \nobreak\hskip\z at skip}
 
+% Idea from Peter Wilson's hyphenat package
+% https://ctan.org/pkg/hyphenat
+% also https://texfaq.org/FAQ-hyphoff
+\newlanguage\blx at langwohyphens
+
 \providerobustcmd*{\nohyphenation}{%
-  \lefthyphenmin\@m}
+  \language\blx at langwohyphens}
 
 \providerobustcmd*{\textnohyphenation}[1]{%
   \bgroup\nohyphenation#1\egroup}
@@ -2034,7 +2067,7 @@
           Using fallback driver}%
         \csuse{blx at bbx@*}}
        {\blx at error
-          {No driver found}
+          {No driver for '\abx at field@entrytype' found}
           {I can't find a driver for the entry type
            '\abx at field@entrytype'\MessageBreak
            and there is no fallback driver either}}}}
@@ -2185,6 +2218,85 @@
        {\csname abx at list@#1\endcsname}}
     {}}
 
+\def\blx at imc@thefirstlistitem#1{%
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \blx at imc@thefirstlistitem at grab
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  {\csuse{abx at list@#1}}}
+
+\def\blx at imc@thefirstlistitem at grab#1{%
+  \blx at imc@thefirstlistitem at grab@i
+  #1{}{}%
+  \blx at imc@thefirstlistitem at grab@i at end}
+\def\blx at imc@thefirstlistitem at grab@i#1#2\blx at imc@thefirstlistitem at grab@i at end{#1}
+
+% {<command>}{<field>}
+% needs 7 levels of expansion, i.e. 2^7-1=127 '\expandafter's
+\def\blx at imc@usefirstlistitem#1#2{%
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter
+  #1%
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter\expandafter\expandafter\expandafter
+  \expandafter\expandafter
+  {\blx at imc@thefirstlistitem{#2}}}
+
+\def\blx at imc@strfirstlistitem#1{%
+  \ifcsdef{abx at list@#1}
+    {\blx at imc@usefirstlistitem{\detokenize}{#1}}
+    {}}
+
 % {<namelist>}
 \def\blx at imc@thename#1{\csuse{abx at name@#1}}
 
@@ -3100,25 +3212,32 @@
     {\blx at range@aux\blx at normrange@i}}
 
 \def\blx at range@aux#1{%
-  \@ifnextchar[{#1}{#1[\@firstofone]}}
+  \@ifnextchar[{\blx at range@aux at i#1}{#1[\@firstofone][\@firstofone]}}
 
-\def\blx at normrange@i[#1]#2{%
+\def\blx at range@aux at i#1[#2]{%
+  \@ifnextchar[{#1[#2]}{#1[#2][\@firstofone]}}
+
+\def\blx at normrange@i[#1][#2]#3{%
   \let\blx at tempa\@empty
   \protected\def\blx at range@out at value{\appto\blx at tempa}%
+  \def\blx at range@out at item@process{#2}%
   \let\blx at range@out at delim\blx at range@out at value
-  \let\blx at range@split\blx at normrange@split
+  \let\blx at range@split\blx at genrange@split
   \let\blx at range@process\blx at normrange@process
-  \blx at range@chunk{#2}%
+  \blx at range@chunk{#3}%
+  \begingroup
   \edef\blx at tempa{\endgroup
     \unexpanded{#1}{\expandonce\blx at tempa}}%
-  \blx at tempa}
+  \blx at tempa
+  \endgroup}
 
-\def\blx at normrange@ii[#1]#2{%
+\def\blx at normrange@ii[#1][#2]#3{%
   \protected\def\blx at range@out at value{#1}%
+  \def\blx at range@out at item@process{#2}%
   \let\blx at range@out at delim\@firstofone
-  \let\blx at range@split\blx at normrange@split
+  \let\blx at range@split\blx at genrange@split
   \let\blx at range@process\blx at normrange@process
-  \blx at range@chunk{#2}%
+  \blx at range@chunk{#3}%
   \endgroup}
 
 \def\blx at range@chunk#1{%
@@ -3153,8 +3272,10 @@
     {}}
 
 % Unicode en-dashes are supported in blx-unicode.def
-\def\blx at normrange@split#1{%
-  \def\blx at normrange@abort{\blx at range@out at value{#1}}%
+\def\blx at genrange@split#1{%
+  \edef\blx at normrange@abort{%
+    \blx at range@out at value{%
+      \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
   \blx at imc@ifpages{#1}
     {\blx at normrange@range#1\bibrangedash\bibrangedash&}
     {\blx at normrange@abort}}
@@ -3163,9 +3284,20 @@
   \ifblank{#3}
     {\blx at normrange@hyphen#1--&}
     {\ifblank{#2}
-       {\blx at range@out at value{#1\bibrangedash}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+            \noexpand\bibrangedash}}%
+        \blx at tempc}
        {\ifblank{#1}
-          {\blx at range@out at value{\bibrangedash#2}}
+          {\begingroup
+           \edef\blx at tempc{\endgroup
+             \blx at range@out at value{%
+               \noexpand\bibrangedash
+               \expandonce\blx at range@out at item@process{%
+                 \unexpanded{#2}}}}%
+           \blx at tempc}
           {\blx at range@process{#1}{#2}}}}}
 
 \def\blx at normrange@hyphen#1-#2-#3&{%
@@ -3177,22 +3309,44 @@
           {\def\blx at tempb{#1}}%
         \blx at normrange@hyphen at i#3&}
        {\ifblank{#1}
-          {\blx at range@out at value{\bibrangedash#2}}
+          {\begingroup
+           \edef\blx at tempc{\endgroup
+             \blx at range@out at value{%
+               \noexpand\bibrangedash
+               \expandonce\blx at range@out at item@process{%
+                 \unexpanded{#2}}}}%
+           \blx at tempc}
           {\blx at range@process{#1}{#2}}}}}
 
 \def\blx at normrange@hyphen at i#1-#2&{%
   \ifblank{#1#2}
-    {\expandafter\blx at range@out at value
-     \expandafter{\blx at tempb\bibrangedash}}
+    {\begingroup
+     \edef\blx at tempc{\endgroup
+       \blx at range@out at value{%
+         \expandonce\blx at range@out at item@process{\expandonce\blx at tempb}%
+         \noexpand\bibrangedash}}%
+     \blx at tempc}
     {\notblank{#1}
        {\ifdefempty\blx at tempb
-          {\blx at range@out at value{\bibrangedash#1}}
+          {\begingroup
+           \edef\blx at tempc{\endgroup
+             \blx at range@out at value{%
+               \noexpand\bibrangedash
+               \expandonce\blx at range@out at item@process{%
+                 \unexpanded{#1}}}}%
+           \blx at tempc}
           {\expandafter\blx at range@process
            \expandafter{\blx at tempb}{#1}}}
        {\blx at normrange@hyphen at i#2&}}}
 
 \def\blx at normrange@process#1#2{%
-  \blx at range@out at value{#1\bibrangedash#2}}
+  \begingroup
+  \edef\blx at tempc{\endgroup
+    \blx at range@out at value{%
+      \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+      \noexpand\bibrangedash
+      \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+  \blx at tempc}
 
 % <*>[<postpro>]{<string>}
 \newrobustcmd*{\mkcomprange}{%
@@ -3201,31 +3355,43 @@
     {\blx at range@aux\blx at comprange@ii}
     {\blx at range@aux\blx at comprange@i}}
 
-\def\blx at comprange@i[#1]#2{%
+\def\blx at comprange@i[#1][#2]#3{%
   \let\blx at tempa\@empty
   \protected\def\blx at range@out at value{\appto\blx at tempa}%
+  \def\blx at range@out at item@process{#2}%
   \let\blx at range@out at delim\blx at range@out at value
-  \let\blx at range@split\blx at normrange@split
+  \let\blx at range@split\blx at genrange@split
   \let\blx at range@process\blx at comprange@check
-  \blx at range@chunk{#2}%
+  \blx at range@chunk{#3}%
+  \begingroup
   \edef\blx at tempa{\endgroup
     \unexpanded{#1}{\expandonce\blx at tempa}}%
-  \blx at tempa}
+  \blx at tempa
+  \endgroup}
 
-\def\blx at comprange@ii[#1]#2{%
+\def\blx at comprange@ii[#1][#2]#3{%
   \protected\def\blx at range@out at value{#1}%
+  \def\blx at range@out at item@process{#2}%
   \let\blx at range@out at delim\@firstofone
-  \let\blx at range@split\blx at normrange@split
+  \let\blx at range@split\blx at genrange@split
   \let\blx at range@process\blx at comprange@check
-  \blx at range@chunk{#2}%
+  \blx at range@chunk{#3}%
   \endgroup}
 
 \def\blx at comprange@check#1#2{%
   \blx at imc@ifinteger{#1}
     {\blx at imc@ifinteger{#2}
-       {\blx at comprange@comp{#1}{#2}}
-       {\blx at range@out at value{#1\bibrangedash#2}}}
-    {\blx at range@out at value{#1\bibrangedash#2}}}
+       {\@firstoftwo}
+       {\@secondoftwo}}
+    {\@secondoftwo}
+    {\blx at comprange@comp{#1}{#2}}
+    {\begingroup
+     \edef\blx at tempc{\endgroup
+       \blx at range@out at value{%
+         \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+         \noexpand\bibrangedash
+         \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+     \blx at tempc}}
 
 \def\blx at comprange@comp#1#2{%
   \def\blx at tempb{#1}%
@@ -3255,8 +3421,12 @@
   \else
     \numdef\blx at tempc\blx at tempd
   \fi
-  \edef\blx at tempb{%
-    \blx at range@out at value{\blx at tempb\noexpand\bibrangedash\blx at tempc}}%
+  \begingroup
+  \edef\blx at tempb{\endgroup
+    \blx at range@out at value{%
+      \expandonce\blx at range@out at item@process{\blx at tempb}%
+      \noexpand\bibrangedash
+      \expandonce\blx at range@out at item@process{\blx at tempc}}}%
   \blx at tempb}
 
 \def\blx at comprange@comp at div{%
@@ -3284,32 +3454,35 @@
 \newrobustcmd*{\mkfirstpage}{%
   \begingroup
   \@ifstar
-    {\blx at firstpage\blx at firstpage@ii}
-    {\blx at firstpage\blx at firstpage@i}}
+    {\blx at range@aux\blx at firstpage@ii}
+    {\blx at range@aux\blx at firstpage@i}}
 
-\def\blx at firstpage#1{%
-  \@ifnextchar[{#1}{#1[\@firstofone]}}
-
-\def\blx at firstpage@i[#1]#2{%
+\def\blx at firstpage@i[#1][#2]#3{%
   \let\blx at tempa\@empty
   \protected\def\blx at range@out at value{\appto\blx at tempa}%
+  \def\blx at range@out at item@process{#2}%
   \let\blx at range@out at delim\blx at range@out at value
   \let\blx at range@split\blx at firstpage@split
-  \blx at range@chunk{#2}%
+  \blx at range@chunk{#3}%
+  \begingroup
   \edef\blx at tempa{\endgroup
     \unexpanded{#1}{\expandonce\blx at tempa}}%
-  \blx at tempa}
+  \blx at tempa
+  \endgroup}
 
-\def\blx at firstpage@ii[#1]#2{%
+\def\blx at firstpage@ii[#1][#2]#3{%
   \protected\def\blx at range@out at value{#1}%
+  \def\blx at range@out at item@process{#2}%
   \let\blx at range@out at delim\@firstofone
   \let\blx at range@split\blx at firstpage@split
-  \blx at range@chunk{#2}%
+  \blx at range@chunk{#3}%
   \endgroup}
 
 % Unicode en-dashes are supported in blx-unicode.def
 \def\blx at firstpage@split#1{%
-  \def\blx at firstpage@abort{\blx at range@out at value{#1}}%
+  \edef\blx at firstpage@abort{%
+    \blx at range@out at value{%
+      \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
   \blx at firstpage@range#1\bibrangedash\bibrangedash&}
 
 \def\blx at firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
@@ -3316,8 +3489,17 @@
   \ifblank{#3}
     {\blx at firstpage@hyphen#1--&}
     {\ifblank{#1}
-       {\blx at range@out at value{\bibrangedash#2}}
-       {\blx at range@out at value{#1}}}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \noexpand\bibrangedash
+            \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+        \blx at tempc}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+        \blx at tempc}}}
 
 \def\blx at firstpage@hyphen#1-#2-#3&{%
   \ifblank{#3}
@@ -3325,8 +3507,18 @@
     {\ifblank{#1}
        {\ifblank{#2}
           {\blx at firstpage@hyphen at i#3&}
-          {\blx at range@out at value{\bibrangedash#2}}}
-       {\blx at range@out at value{#1}}}}
+          {\begingroup
+           \edef\blx at tempc{\endgroup
+             \blx at range@out at value{%
+               \noexpand\bibrangedash
+               \expandonce\blx at range@out at item@process{%
+                 \unexpanded{#2}}}}%
+           \blx at tempc}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+        \blx at tempc}}}
 
 \def\blx at firstpage@hyphen at i#1-#2&{%
   \ifblank{#1}
@@ -3333,7 +3525,13 @@
     {\ifblank{#2}
        {\blx at firstpage@abort}
        {\blx at firstpage@hyphen at i#2&}}
-    {\blx at range@out at value{\bibrangedash#1}}}
+    {\begingroup
+     \edef\blx at tempc{\endgroup
+       \blx at range@out at value{%
+         \noexpand\bibrangedash
+         \expandonce\blx at range@out at item@process{%
+           \unexpanded{#1}}}}%
+     \blx at tempc}}
 
 \newcommand*{\ppspace}{\addnbspace}
 \newcommand*{\sqspace}{\addnbspace}
@@ -3489,9 +3687,9 @@
 % {<init>}{<entrytype>}
 \protected\def\blx at imc@usedriver#1#2{%
   \begingroup
+  \delimcontext{bib}%
   \csuse{blx at hook@usedriver}%
   \csuse{blx at hook@bbxinit}#1%
-  \delimcontext{bib}%
   \blx at beglangbib
   \blx at driver{#2}%
   \blx at endlangbib
@@ -3637,7 +3835,9 @@
                and test {\iffieldsequal{#1dateera}{#2dateera}}}}
 
 \blx at regimcs{%
-  \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist \thename \strname
+  \ifdriver \thefield \strfield \csfield \usefield \thelist \strlist
+  \thefirstlistitem \usefirstlistitem \strfirstlistitem
+  \thename \strname
   \clearfield \clearlist \clearname \restorefield \restorelist \restorename
   \ifcategory \ifkeyword
   \ifciteseen  \ifciteibid \ifciteidem \ifopcit \ifloccit
@@ -3660,6 +3860,7 @@
 \appto\blx at blxinit{%
   \def\ifnatbibmode{\iftoggle{blx at natbib}}%
   \def\ifcitation{\iftoggle{blx at citation}}%
+  \def\ifvolcite{\iftoggle{blx at volcite}}%
   \def\ifbibliography{\iftoggle{blx at bibliography}}%
   \def\ifciteindex{\iftoggle{blx at citeindex}}%
   \def\ifbibindex{\iftoggle{blx at bibindex}}%
@@ -3675,6 +3876,7 @@
   \def\ifuniquework{\iftoggle{abx at bool@uniquework}}%
   \def\ifuniqueprimaryauthor{\iftoggle{abx at bool@uniqueprimaryauthor}}%
   \def\ifandothers#1{\iftoggle{abx at bool@more#1}}%
+  \protected\def\pnfmt{\printtext[postnote]}%
   \protected\def\pno{\bibstring{page}}%
   \protected\def\ppno{\bibstring{pages}}%
   \let\nopp\relax
@@ -3692,7 +3894,7 @@
       \protected\def#1{\ERROR}%
     \fi
   }%
-  \docsvlist{\pno,\ppno,\nopp,\psq,\psqq}%
+  \docsvlist{\pnfmt,\pno,\ppno,\nopp,\psq,\psqq}%
 }
 
 %% Global formatting hooks
@@ -4320,26 +4522,16 @@
     {\setkeys{blx at opt@namelist}{#1}}%
   \def\blx at thedata{#2}}
 
-% These are options in the .bbl that biber makes explicit as they are needed in biblatex
-% for various reasons. Not all namelist/name scope options are necessary in the .bbl as
-% some are used by biber only and are not needed by biblatex after biber has finished
-% generating the .bbl
-% Per-namelist options
-\define at key{blx at opt@namelist}{uniquelist}{\c at uniquelist#1\relax}
-\define at key{blx at opt@namelist}{useprefix}{\settoggle{blx at useprefix}{#1}}
-\define at key{blx at opt@namelist}{sortingnamekeytemplatename}{\def\blx at refcontext@sortingnamekeytemplatename{#1}}
-\define at key{blx at opt@namelist}{uniquenametemplatename}{\def\blx at refcontext@uniquenametemplatename{#1}}
-\define at key{blx at opt@namelist}{labelalphanametemplatename}{\def\blx at refcontext@labelalphanametemplatename{#1}}
+% Biber-calculated info passed back to biblatex as an option in the .bbl
+% unlike stuff defined with \DeclareBiblatexOption and
+% \blx at DeclareBackendOption these are not 'real' options
+\define at key{blx at opt@namelist}{ul}{\c at uniquelist#1\relax}
 
-% Per-name options
-\define at key{blx at opt@name}{uniquename}{\c at uniquename#1\relax}
+\define at key{blx at opt@name}{un}{\c at uniquename#1\relax}
 \define at key{blx at opt@name}{uniquepart}{\def\abx at field@uniquepart{#1}}
 \define at key{blx at opt@name}{hash}{\edef\abx at field@hash{\detokenize{#1}}}
-\define at key{blx at opt@name}{useprefix}{\settoggle{blx at useprefix}{#1}}
-\define at key{blx at opt@name}{sortingnamekeytemplatename}{\def\blx at refcontext@sortingnamekeytemplatename{#1}}
-\define at key{blx at opt@name}{uniquenametemplatename}{\def\blx at refcontext@uniquenametemplatename{#1}}
-\define at key{blx at opt@name}{labelalphanametemplatename}{\def\blx at refcontext@labelalphanametemplatename{#1}}
 
+
 \newrobustcmd*{\bibinitperiod}{\adddot}
 \newrobustcmd*{\bibinitdelim}{\addnbspace}
 \newrobustcmd*{\bibinithyphendelim}{.\mbox{-}}
@@ -5398,14 +5590,14 @@
 \def\blx at lbx@input at postprocess@all#1{%
   \blx at lbx@input at postprocess@strings{#1}%
   \blx at lbx@input at postprocess@extras{#1}%
-  \csuse{blx at hook@hyph@#1}}
+  \csuse{blx at hook@hyph@#1}%
+  \blx at maplang{#1}{#1}}
 
 % {<language>}{<lbxfile>}{<message>}
 \def\blx at lbxinput@iv#1#2#3{%
   \begingroup
     \blx at lbx@input at handler{#2.lbx}{#3}
-      {\blx at maplang{#1}{#1}%
-       \let\InheritBibliographyStrings\@gobble
+      {\let\InheritBibliographyStrings\@gobble
        \let\DeclareBibliographyStrings\@gobble
        \let\InheritBibliographyExtras\@gobble
        \let\DeclareBibliographyExtras\@gobble
@@ -5523,6 +5715,29 @@
   \iftoggle{blx at seconds}{}
     {\blx at imc@clearfield{#1#2second}}}
 
+\newcommand*{\blx at if@printtime}[2]{%
+  \ifboolexpr{%
+    togl {blx@#1dateusetime}
+    and
+    not test {\iffieldundef{#1#2hour}}}}
+
+\newcommand*{\blx at if@printanytimes}[1]{%
+  \ifboolexpr{
+       togl {blx@#1dateusetime}
+    and
+    (   not test {\iffieldundef{#1hour}}
+     or not test {\iffieldundef{#1endhour}})}}
+
+% {<datetype>}{'' | end}
+\newrobustcmd*{\blx at printtime}[2]{%
+  \blx at if@printtime{#1}{#2}
+    {\blx at timepre{#1}{#2}%
+     \printtext{\bibdatetimesep}%
+     \printtext[#1time]{%
+       \csuse{mkbibtime\csuse{blx at timeformat@#1time}}
+         {#1#2hour}{#1#2minute}{#1#2second}{#1#2timezone}}}
+    {}}
+
 % {<short|long>}{<datetype>}
 \newrobustcmd*{\mkdaterangefull}[2]{%
   \begingroup
@@ -5546,7 +5761,7 @@
               {\mbox{\bibdaterangesep}}
               {\bibdaterangesep
                \enddatecircaprint
-               \iffieldundef{#2season}
+               \iffieldundef{#2endseason}
                  {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
                   % Optionally print the time after the date
                   \blx at printtime{#2}{end}}
@@ -5555,7 +5770,46 @@
                \dateeraprint{#2endyear}}}}}%
   \endgroup}
 
+\newrobustcmd*{\mkdaterangefullextra}[2]{%
+  \begingroup
+    \blx at metadateinfo{#2}%
+    \iffieldundef{#2year}
+      {\blx at 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 at printtime{#2}{}}
+           {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
+         \dateuncertainprint
+         \dateeraprint{#2year}%
+         \iffieldundef{#2endyear}
+           {\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 at printtime{#2}{end}}
+                   {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
+                 \printfield{extradate}%
+                 \enddateuncertainprint
+                 \dateeraprint{#2endyear}}}}}%
+  \endgroup}
+
 \newrobustcmd*{\mkdaterangetrunc}[2]{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefull{#1}{#2}}
+    {\mkdaterangetrunc at i{#1}{#2}}}
+
+\newrobustcmd*{\mkdaterangetrunc at i}[2]{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -5584,7 +5838,7 @@
               {\mbox{\bibdaterangesep}}
               {\bibdaterangesep
                \enddatecircaprint
-               \iffieldundef{#2season}
+               \iffieldundef{#2endseason}
                  {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
                  {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}%
                \enddateuncertainprint
@@ -5591,41 +5845,12 @@
                \dateeraprint{#2endyear}}}}}%
   \endgroup}
 
-\newrobustcmd*{\mkdaterangefullextra}[2]{%
-  \begingroup
-    \blx at metadateinfo{#2}%
-    \iffieldundef{#2year}
-      {\blx at 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 at printtime{#2}{}}
-           {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
-         \dateuncertainprint
-         \dateeraprint{#2year}%
-         \iffieldundef{#2endyear}
-           {\printfield{extradate}}
-           {\iffieldequalstr{#2endyear}{}
-              {\printfield{extradate}%
-               \printtext{\mbox{\bibdaterangesep}}}
-              {\printtext{%
-                 \bibdaterangesep
-                 \enddatecircaprint
-                 \iffieldundef{#2season}
-                   {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}%
-                    % Optionally print the time after the date
-                    \blx at printtime{#2}{end}}
-                   {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
-                 \printfield{extradate}%
-                 \enddateuncertainprint
-                 \dateeraprint{#2endyear}}}}}%
-  \endgroup}
+\newrobustcmd*{\mkdaterangetruncextra}[2]{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefullextra{#1}{#2}}
+    {\mkdaterangetruncextra at i{#1}{#2}}}
 
-\newrobustcmd*{\mkdaterangetruncextra}[2]{%
+\newrobustcmd*{\mkdaterangetruncextra at i}[2]{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -5656,7 +5881,7 @@
               {\printtext{%
                  \bibdaterangesep
                  \enddatecircaprint
-                 \iffieldundef{#2season}
+                 \iffieldundef{#2endseason}
                    {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
                    {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}}%
                  \printfield{extradate}%
@@ -5776,17 +6001,6 @@
     {}%
   \mkdaterangefullextra{short}{#1}}
 
-% {<datetype>}{'' | end}
-\newrobustcmd*{\blx at printtime}[2]{%
-  \ifboolexpr{%
-    togl {blx@#1dateusetime}
-    and
-    not test {\iffieldundef{#1#2hour}}}
-    {\blx at timepre{#1}{#2}%
-     \printtext{\bibdatetimesep}%
-     \printtext[#1time]{\csuse{mkbibtime\csuse{blx at timeformat@#1time}}{#1#2hour}{#1#2minute}{#1#2second}{#1#2timezone}}}
-    {}}
-
 \newrobustcmd*{\mkdaterangeiso}[1]{%
   \begingroup
     \blx at metadateinfo{#1}%
@@ -6010,6 +6224,7 @@
   \iffieldundef{#1}{}{\space}%
   \dateeraprintpre{#1}\mkyearzeros{\thefield{#1}}}
 
+\newrobustcmd*{\bibdatedash}{\bibrangedash}
 \newrobustcmd*{\finalandcomma}{}
 \newrobustcmd*{\finalandsemicolon}{}
 \newrobustcmd*{\mkbibordinal}[1]{%
@@ -6112,13 +6327,13 @@
 
 % {<language>}{<strings>}
 \def\blx at maplang#1#2{%
-  \csxappto{extras#1}{%
-    \noexpand\blx at resetpunct
-    \expandafter\noexpand\csname abx at extras@#2\endcsname
-    \expandafter\noexpand\csname abx at strings@#2\endcsname}%
-  \csxappto{noextras#1}{%
-    \noexpand\blx at resetpunct
-    \expandafter\noexpand\csname abx at noextras@#2\endcsname}}
+  \csgappto{extras#1}{%
+    \blx at resetpunct
+    \csuse{abx at extras@#2}%
+    \csuse{abx at strings@#2}}%
+  \csgappto{noextras#1}{%
+    \blx at resetpunct
+    \csuse{abx at noextras@#2}}}
 
 %% babel/polyglossia interface
 \def\blx at beglang{\blx at clearlang\begingroup}
@@ -6385,7 +6600,10 @@
   \global\cslet{blx at entryopts@#1}\@empty
   \global\cslet{blx at namelistopts@#1}\@empty
   \global\cslet{blx at nameopts@#1}\@empty}
-\expandafter\expandafter\expandafter\docsvlist\expandafter\expandafter\expandafter{\csname blx at datamodel@constant at optiondatatypes\endcsname}
+\expandafter\expandafter\expandafter
+\docsvlist
+\expandafter\expandafter\expandafter
+{\csname blx at datamodel@constant at optiondatatypes\endcsname}
 
 % Helper for collecting options and datatypes
 % {<datatype>}{<scope>}{<name>}
@@ -6397,122 +6615,176 @@
     {}
     {\listcsgadd{#2@#1}{#3}}}
 
-% date, eventdate, urldate etc.
-\def\abx at dodates{\dolistloop\blx at datamodel@dates}
-% year, endyear, month, endmonth etc.
-\def\abx at dodateparts{\expandafter\docsvlist\expandafter{\blx at dateparts}}
 
-% '', event, url, orig etc.
-\def\do#1{%
-  \blx at stripfromendinto{#1}{date}\blx at datetype
-  \listxadd\blx at datetypes{\blx at datetype}}
-\abx at dodates
-% main date field has an empty prefix (''date) which can't be added to a list
-% and so do it explicity
-% This is one of the few (only?) hard-coded datamodel assumptions but it is
-% very unlikely that anyone would *remove* the main date field in a custom application ...
-\def\abx at dodatetypes{\do{}\dolistloop\blx at datetypes}
+% entry, namelist, name scopes are input/handled on the backend side
+% if we want to see the info back on the biblatex side, we need the backend
+% to pass the info through via the .bbl file
+\def\blx at declareblxopt@extrahandler at entry#1{%
+  \csgdef{blx at bcf@backendout at entry@#1}{1}}
+\def\blx at declareblxopt@extrahandler at namelist#1{%
+  \csgdef{blx at bcf@backendout at namelist@#1}{1}}
+\def\blx at declareblxopt@extrahandler at name#1{%
+  \csgdef{blx at bcf@backendout at name@#1}{1}}
 
-% per-entry inheritance blocking option for biber
-\blx at collectopts{string}{blx at entryopts}{noinherit}
+% {<option scope>}[<datatype>]{<key>}[<value>]{<code>}
+\protected\def\blx at declareblxopt#1{%
+  \@ifnextchar[%]
+    {\blx at declareblxopt@i#1}
+    {\blx at declareblxopt@i#1[]}}
 
-% useprefix namelist/name scope
-\blx at collectopts{boolean}{blx at namelistopts}{useprefix}% for passing to bcf
-\blx at collectopts{boolean}{blx at nameopts}{useprefix}% for passing to the .bcf
-
-% nametemplates meta-option entry/namelist/name scope
-\blx at collectopts{string}{blx at entryopts}{nametemplates}
-\blx at collectopts{string}{blx at namelistopts}{nametemplates}% for passing to bcf
-\blx at collectopts{string}{blx at nameopts}{nametemplates}% for passing to the .bcf
-
-% sortingnamekeytemplate namelist/name scope
-\blx at collectopts{string}{blx at namelistopts}{sortingnamekeytemplatename}% for passing to bcf
-\blx at collectopts{string}{blx at nameopts}{sortingnamekeytemplatename}% for passing to the .bcf
-
-% uniquenametemplate namelist/name scope
-\blx at collectopts{string}{blx at namelistopts}{uniquenametemplatename}% for passing to bcf
-\blx at collectopts{string}{blx at nameopts}{uniquenametemplatename}% for passing to the .bcf
-
-% labelalphanametemplate namelist/name scope
-\blx at collectopts{string}{blx at namelistopts}{labelalphanametemplatename}% for passing to bcf
-\blx at collectopts{string}{blx at nameopts}{labelalphanametemplatename}% for passing to the .bcf
-
-% Misc globalopts
-\blx at collectopts{xml}{blx at globalopts}{datamodel}% for passing to the .bcf
-\blx at collectopts{string}{blx at globalopts}{controlversion}% for passing to the .bcf
-
-\newcommand*{\labelalphaothers}{+}
-\newcommand*{\sortalphaothers}{\labelalphaothers}
-\blx at collectopts{string}{blx at globalopts}{alphaothers}% for passing to the .bcf
-\blx at collectopts{string}{blx at typeopts}{alphaothers}% for passing to the .bcf
-\blx at collectopts{string}{blx at globalopts}{sortalphaothers}% for passing to the .bcf
-\blx at collectopts{string}{blx at typeopts}{sortalphaothers}% for passing to the .bcf
-
-% The Declare*Option macros are for options which need to be visible
-% to biblatex. For options which only biber needs to see, they can be
-% passed to the .bcf directly using \blx at collectopts
-% [<datatype>]{<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareBibliographyOption}[2][]{%
-  \ifblank{#1}
+\def\blx at declareblxopt@i#1[#2]#3{%
+  \begingroup
+  \ifblank{#2}
     {\def\blx at tempa{boolean}}
-    {\ifcsundef{blx at globalopts@#1}
-       {\blx at warn@badoptdt{#1}%
+    {\ifcsundef{blx@#1opts@#2}
+       {\blx at warn@badoptdt{#2}%
         \def\blx at tempa{boolean}}
-       {\def\blx at tempa{#1}}}%
-  \expandafter\blx at collectopts\expandafter{\blx at tempa}{blx at globalopts}{#2}%
+       {\def\blx at tempa{#2}}}%
+  \expandafter\blx at collectopts\expandafter{\blx at tempa}{blx@#1opts}{#3}%
+  \ifcsundef{blx at declareblxopt@extrahandler@#1}
+    {}
+    {\csuse{blx at declareblxopt@extrahandler@#1}{#3}}%
+  \endgroup
   \@ifnextchar[%]
-    {\blx at defbibopt{#2}}
-    {\blx at defbibopt{#2}[]}}
+    {\csuse{blx at defblxopt@#1opt}{#3}}
+    {\csuse{blx at defblxopt@#1opt}{#3}[]}}
 
-\long\def\blx at defbibopt#1[#2]#3{%
+\long\def\blx at defblxopt@globalopt#1[#2]#3{%
   \ifcsundef{KV at blx@opt at ldt@#1}
     {\ifcsundef{KV at blx@opt at pre@#1}
        {\ifblank{#2}
           {\define at key{blx at opt@pre}{#1}{#3}}
           {\define at key{blx at opt@pre}{#1}[#2]{#3}}}
-       {\blx at err@optdef{#1}}}
-    {\blx at err@optdef{#1}}}
+       {\blx at err@optdef{#1}{pre/global}}}
+    {\blx at err@optdef{#1}{ldt/global}}}
 
-% [<datatype>]{<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareTypeOption}[2][]{%
+\long\def\blx at defblxopt@typeentryopt#1#2[#3]#4{%
+  \ifcsundef{KV at blx@opt@#1@#2}
+    {\ifblank{#3}
+       {\define at key{blx at opt@#1}{#2}{#4}}
+       {\define at key{blx at opt@#1}{#2}[#3]{#4}}}
+    {\blx at err@optdef{#2}{#1}}}
+
+\def\blx at defblxopt@typeopt{\blx at defblxopt@typeentryopt{typ}}
+\def\blx at defblxopt@entryopt{\blx at defblxopt@typeentryopt{ent}}
+\def\blx at defblxopt@nameopt{\blx at defblxopt@typeentryopt{name}}
+\def\blx at defblxopt@namelistopt{\blx at defblxopt@typeentryopt{namelist}}
+
+% The Declare*Option macros are for options which need to be visible
+% to biblatex. For options which only biber needs to see, they can be
+% passed to the .bcf directly using \blx at collectopts
+% [<datatype>]{<key>}[<default value>]{<code>}
+\newcommand*{\DeclareBibliographyOption}{\blx at declareblxopt{global}}
+\newcommand*{\DeclareTypeOption}{\blx at declareblxopt{type}}
+\newcommand*{\DeclareEntryOption}{\blx at declareblxopt{entry}}
+
+% we'll assume that \blx at optscopes is non-empty from now on
+\newcommand*{\blx at optscopes}{}
+\forcsvlist{\listadd\blx at optscopes}{global,type,entry}
+
+\long\def\blx at defblxopt@loopscopes at i#1[#2]#3#4{%
+  \csuse{blx at defblxopt@#4opt}{#1}[#2]{#3}}
+
+\long\def\blx at defblxopt@loopscopes#1[#2]#3{%
+  \forlistloop{\blx at defblxopt@loopscopes at i{#1}[#2]{#3}}{\blx at optscopes}}
+
+% {<option scopes>}[<datatype>]{<key>}[<default value>]{<code>}
+\newrobustcmd*{\DeclareBiblatexOption}[1]{%
+  \let\blx at optscopes\@empty
+  \forcsvlist{\listadd\blx at optscopes}{#1}%
+  \blx at DeclareBiblatexOption@i}
+
+\newrobustcmd*{\blx at DeclareBiblatexOption@i}[2][]{%
+  \begingroup
   \ifblank{#1}
     {\def\blx at tempa{boolean}}
-    {\ifcsundef{blx at typeopts@#1}
+    {\let\blx at tempb\@secondoftwo
+     \def\do##1{%
+       \ifcsundef{blx@##1opts@#1}
+         {\let\blx at tempb\@firstoftwo\listbreak}
+         {}}%
+     \dolistloop{\blx at optscopes}%
+     \blx at tempb
        {\blx at warn@badoptdt{#1}%
         \def\blx at tempa{boolean}}
        {\def\blx at tempa{#1}}}%
-    \expandafter\blx at collectopts\expandafter{\blx at tempa}{blx at typeopts}{#2}%
+  \def\do##1{%
+    \expandafter\blx at collectopts\expandafter{\blx at tempa}{blx@##1opts}{#2}%
+    \ifcsundef{blx at declareblxopt@extrahandler@##1}
+      {}
+      {\csuse{blx at declareblxopt@extrahandler@##1}{#2}}}%
+  \dolistloop{\blx at optscopes}%
+  \endgroup
   \@ifnextchar[%]
-    {\blx at deftypeopt{#2}}
-    {\blx at deftypeopt{#2}[]}}
+    {\blx at defblxopt@loopscopes{#2}}
+    {\blx at defblxopt@loopscopes{#2}[]}}
 
-\long\def\blx at deftypeopt#1[#2]#3{%
-  \ifcsundef{KV at blx@opt at typ@#1}
-    {\ifblank{#2}
-       {\define at key{blx at opt@typ}{#1}{#3}}
-       {\define at key{blx at opt@typ}{#1}[#2]{#3}}}
-    {\blx at err@optdef{#1}}}
+% this macro is internal for now because options declared with it need
+% support on the backend side and are not useful for document or style authors
+% {<option scopes>}[<datatype>]{<key>}
+\newrobustcmd*{\blx at DeclareBackendOption}[1]{%
+  \let\blx at optscopes\@empty
+  \forcsvlist{\listadd\blx at optscopes}{#1}%
+  \blx at DeclareBackendOption@i}
 
-% [<datatype>]{<key>}[<value>]{<code>}
-\newrobustcmd*{\DeclareEntryOption}[2][]{%
+\newrobustcmd*{\blx at DeclareBackendOption@i}[2][]{%
+  \begingroup
   \ifblank{#1}
     {\def\blx at tempa{boolean}}
-    {\ifcsundef{blx at entryopts@#1}
+    {\let\blx at tempb\@secondoftwo
+     \def\do##1{%
+       \ifcsundef{blx@##1opts@#1}
+         {\let\blx at tempb\@firstoftwo\listbreak}
+         {}}%
+     \dolistloop{\blx at optscopes}%
+     \blx at tempb
        {\blx at warn@badoptdt{#1}%
         \def\blx at tempa{boolean}}
        {\def\blx at tempa{#1}}}%
-    \expandafter\blx at collectopts\expandafter{\blx at tempa}{blx at entryopts}{#2}%
-  \@ifnextchar[%]
-    {\blx at defentryopt{#2}}
-    {\blx at defentryopt{#2}[]}}
+  \def\do##1{%
+    \expandafter\blx at collectopts\expandafter{\blx at tempa}{blx@##1opts}{#2}}%
+  \dolistloop{\blx at optscopes}%
+  \endgroup}
 
- \long\def\blx at defentryopt#1[#2]#3{%
-  \ifcsundef{KV at blx@opt at ent@#1}
-    {\ifblank{#2}
-       {\define at key{blx at opt@ent}{#1}{#3}}
-       {\define at key{blx at opt@ent}{#1}[#2]{#3}}}
-    {\blx at err@optdef{#1}}}
+% per-entry inheritance blocking option for biber
+\blx at DeclareBackendOption{entry}[string]{noinherit}
 
+
+% nametemplates meta-option entry/namelist/name scope
+% this meta option is resolved by Biber
+\blx at DeclareBackendOption{entry,namelist,name}[string]{nametemplates}
+\gdef\blx at bcf@backendin at entry@nametemplates{sortingnamekeytemplatename,%
+  uniquenametemplatename,labelalphanametemplatename}%
+\gdef\blx at bcf@backendin at namelist@nametemplates{sortingnamekeytemplatename,%
+  uniquenametemplatename,labelalphanametemplatename}%
+\gdef\blx at bcf@backendin at name@nametemplates{sortingnamekeytemplatename,%
+  uniquenametemplatename,labelalphanametemplatename}%
+
+% Misc globalopts
+\blx at DeclareBackendOption{global}[xml]{datamodel}
+\blx at collectopts{string}{blx at globalopts}{controlversion}
+
+\newcommand*{\labelalphaothers}{+}
+\newcommand*{\sortalphaothers}{\labelalphaothers}
+\blx at DeclareBackendOption{global,type}[string]{alphaothers}
+\blx at DeclareBackendOption{global,type}[string]{sortalphaothers}
+
+% date, eventdate, urldate etc.
+\def\abx at dodates{\dolistloop\blx at datamodel@dates}
+% year, endyear, month, endmonth etc.
+\def\abx at dodateparts{\expandafter\docsvlist\expandafter{\blx at dateparts}}
+
+% '', event, url, orig etc.
+\def\do#1{%
+  \blx at stripfromendinto{#1}{date}\blx at datetype
+  \listxadd\blx at datetypes{\blx at datetype}}
+\abx at dodates
+% main date field has an empty prefix (''date) which can't be added to a list
+% and so do it explicity
+% This is one of the few (only?) hard-coded datamodel assumptions but it is
+% very unlikely that anyone would *remove* the main date field in a custom application ...
+\def\abx at dodatetypes{\do{}\dolistloop\blx at datetypes}
+
 % Sanity check on date field names - they *must* end in 'date' to make things easier/possible later
 \def\do#1{%
   \blx at ifstrendswith{#1}{date}
@@ -6519,7 +6791,7 @@
     {}
     {\blx at error
        {Invalid date field name '#1'}
-       {Date fields in the datemodel must end in the string 'date' but '#1' doesn't}}}
+       {Date fields in the datamodel must end in the string 'date' but '#1' doesn't}}}
 \abx at dodates
 
 % date meta-information option fallbacks
@@ -6812,15 +7084,13 @@
     \csdef{if#1inits}{\iftoggle{abx at bool@#1inits}}%
     \appto\blx at TE@hook{%
       \csdef{if#1inits}{\blx at TE{\iftoggle{abx at bool@#1inits}}}}}%
-  \DeclareBibliographyOption[boolean]{#1inits}[true]{%
+  \DeclareBiblatexOption{global,type,entry,namelist,name}[boolean]{#1inits}[true]{%
     \settoggle{abx at bool@#1inits}{##1}}}
 \abx at donameparts
 
 \def\do#1{%
   % Define use<name> options scope for biber
-  \blx at collectopts{boolean}{blx at globalopts}{use#1}%
-  \blx at collectopts{boolean}{blx at typeopts}{use#1}%
-  \blx at collectopts{boolean}{blx at entryopts}{use#1}%
+  \blx at DeclareBackendOption{global,type,entry}[boolean]{use#1}%
   % Define name toggles
   \newtoggle{blx at use#1}\toggletrue{blx at use#1}%
   % Define tests
@@ -7651,8 +7921,11 @@
   \def\do##1{%
     \ifcsundef{abx at field@##1source}
      {}
-     {\csname c@##1\expandafter\endcsname\expandafter\the\csname c@\csuse{abx at field@##1source}\endcsname
-      \csletcs{abx at name@##1}{abx at name@\csuse{abx at field@##1source}}}}%
+     {\csname c@##1\expandafter\endcsname\expandafter
+        \the\csname c@\csuse{abx at field@##1source}\endcsname
+      \csletcs{abx at name@##1}{abx at name@\csuse{abx at field@##1source}}%
+      \csletcs{etb at tgl@abx at bool@more##1}{%
+        etb at tgl@abx at bool@more\csuse{abx at field@##1source}}}}%
   \dolistloop\abx at rnames%
   % Resolve labeldate
   % Note that here we can't refer to labelyear as this is where we create it, hence the
@@ -7980,10 +8253,10 @@
   \csletcs{#1}{abx at tmp@theformat}}
 
 \def\blx at labelwidth@resetlocal{%
-  \locallabelnumberwidth0pt\relax
-  \locallabelalphawidth0pt\relax
+  \locallabelnumberwidth\z@
+  \locallabelalphawidth\z@
   \def\do##1{%
-    \csname local##1width\endcsname0pt\relax}%
+    \csname local##1width\endcsname\z@}%
   \abx at dolabelfields}
 
 \def\blx at labelwidth@settolocal{%
@@ -8215,17 +8488,23 @@
 % {<entrykey>}
 % Get the saved information on which citations were mentioned last run
 \protected\def\abx at aux@cite#1{%
-  \listxadd\blx at lastcites{\detokenize{#1}}}
+  \xifinlist{\detokenize{#1}}\blx at lastcites
+    {}
+    {\listxadd\blx at lastcites{\detokenize{#1}}}}
 
 % {<refcontext>}
 % Get the saved information on which refcontexts were mentioned last run
 \protected\def\abx at aux@refcontext#1{%
-  \listxadd\blx at lastrefcontexts{\detokenize{#1}}}
+  \xifinlist{\detokenize{#1}}\blx at lastrefcontexts
+    {}
+    {\listxadd\blx at lastrefcontexts{\detokenize{#1}}}}
 
 % {<sortingtemplatename>}
 % Get the saved information on which shorthand sorting templates were mentioned last run
 \protected\def\abx at aux@biblist#1{%
-  \listgadd\blx at lastbiblists{#1}}
+  \ifinlist{#1}\blx at lastbiblists
+    {}
+    {\listgadd\blx at lastbiblists{#1}}}
 
 % Here we mustn't change the checksum if we used localnumbers from the
 % .aux file as this means that deferred numbering is
@@ -8372,7 +8651,7 @@
     \advance\blx at tempcnta\@ne}%
   \dolistcsloop{blx at pref@\the\c at refsection @#1}%
   \edef\blx at tempa{\endgroup\noexpand\blx at bbl@listdef
-    {pageref}{\the\blx at tempcnta}{\blx at tempa}}%
+    {pageref}{\the\blx at tempcnta}{\expandonce{\blx at tempa}}}%
   \blx at tempa}
 
 %% Data input
@@ -8700,6 +8979,8 @@
 \define at key{blx at bib2}{check}{\blx at key@bibcheck{#1}}
 \define at key{blx at biblist2}{check}{\blx at key@bibcheck{#1}}
 
+% empty bibcheck does nothing
+\cslet{blx at bibcheck@}\relax
 \def\blx at key@bibcheck#1{%
   \ifcsdef{blx at bibcheck@#1}
     {\letcs\blx at bibcheck{blx at bibcheck@#1}}
@@ -8709,74 +8990,103 @@
        {The check '#1' could not be found.\MessageBreak
         Use \string\defbibcheck\space to define it}}}
 
-\define at key{blx at bhd}{heading}{\blx at key@heading{#1}}
-\define at key{blx at bib2}{heading}{\blx at key@heading{#1}}
-\define at key{blx at biblist2}{heading}{\blx at key@heading{#1}}
-\define at key{blx at bbs}{heading}{\blx at key@heading{#1}}
-\define at key{blx at bbg}{heading}{\blx at key@heading{#1}}
+\def\blx at default@theheading{bibliography}
+\define at key{blx at bibdefaults}{heading}{%
+  \blx at key@heading{\blx at default@theheading}{#1}}
+\define at key{blx at bhd}{heading}{%
+  \blx at key@heading{\blx at theheading}{#1}}
+\define at key{blx at bib2}{heading}{%
+  \blx at key@heading{\blx at theheading}{#1}}
+\define at key{blx at biblist2}{heading}{%
+  \blx at key@heading{\blx at theheading}{#1}}
+\define at key{blx at bbs}{heading}{%
+  \blx at key@heading{\blx at theheading}{#1}}
+\define at key{blx at bbg}{heading}{%
+  \blx at key@heading{\blx at theheading}{#1}}
 
-\def\blx at key@heading#1{%
-  \ifcsundef{blx at head@#1}
+\def\blx at key@heading#1#2{%
+  \ifcsundef{blx at head@#2}
      {\blx at error
-        {Heading '#1' not found}
-        {The heading '#1' could not be found.\MessageBreak
+        {Heading '#2' not found}
+        {The heading '#2' could not be found.\MessageBreak
          Use \string\defbibheading\space to define it}}
-     {\def\blx at theheading{#1}}}
+     {\def#1{#2}}}
 
-\define at key{blx at bib2}{env}{\blx at key@env{#1}}
-\define at key{blx at biblist2}{env}{\blx at key@env{#1}}
-\define at key{blx at bbs}{env}{\blx at key@env{#1}}
-\define at key{blx at bbg}{env}{\blx at key@env{#1}}
-\define at key{blx at bbc}{env}{\blx at key@env{#1}}
+\def\blx at default@theenv{bibliography}
+\define at key{blx at bibdefaults}{env}{%
+  \blx at key@env{\blx at default@theenv}{#1}}
+\define at key{blx at bib2}{env}{\blx at key@env{\blx at theenv}{#1}}
+\define at key{blx at biblist2}{env}{\blx at key@env{\blx at theenv}{#1}}
+\define at key{blx at bbs}{env}{\blx at key@env{\blx at theenv}{#1}}
+\define at key{blx at bbg}{env}{\blx at key@env{\blx at theenv}{#1}}
+\define at key{blx at bbc}{env}{\blx at key@env{\blx at theenv}{#1}}
 
-\def\blx at key@env#1{%
-  \ifcsundef{blx at env@#1}
+\def\blx at key@env#1#2{%
+  \ifcsundef{blx at env@#2}
      {\blx at error
-        {Environment '#1' not found}
-        {The environment '#1' could not be found.\MessageBreak
+        {Environment '#2' not found}
+        {The environment '#2' could not be found.\MessageBreak
          Use \string\defbibenvironment\space to define it}}
-     {\def\blx at theenv{#1}}}
+     {\def#1{#2}}}
 
+\let\blx at default@thetitle\@empty
+\define at key{blx at bibdefaults}{title}{%
+  \def\blx at default@thetitle{#1}}
 \define at key{blx at bhd}{title}{\def\blx at thetitle{#1}}
 \define at key{blx at bib2}{title}{\def\blx at thetitle{#1}}
 \define at key{blx at biblist2}{title}{\def\blx at thetitle{#1}}
 
-\define at key{blx at bib2}{prenote}{\blx at key@prenote{#1}}
-\define at key{blx at biblist2}{prenote}{\blx at key@prenote{#1}}
-\define at key{blx at bbs}{prenote}{\blx at key@prenote{#1}}
-\define at key{blx at bbg}{prenote}{\blx at key@prenote{#1}}
-\define at key{blx at bbc}{prenote}{\blx at key@prenote{#1}}
-\def\blx at key@prenote#1{%
-  \ifcsundef{blx at note@#1}
-     {\blx at error
-        {Note '#1' not found}
-        {The note '#1' could not be found.\MessageBreak
-         Use \string\defbibnote\space to define it}}
-     {\def\blx at theprenote{#1}}}
+\cslet{blx at note@}\@empty
+\def\blx at key@bibnote#1#2{%
+  \ifcsundef{blx at note@#2}
+    {\blx at error
+       {Note '#2' not found}
+       {The note '#2' could not be found.\MessageBreak
+        Use \string\defbibnote\space to define it}}
+    {\def#1{#2}}}
 
-\define at key{blx at bib2}{postnote}{\blx at key@postnote{#1}}
-\define at key{blx at biblist2}{postnote}{\blx at key@postnote{#1}}
-\define at key{blx at bbs}{postnote}{\blx at key@postnote{#1}}
-\define at key{blx at bbg}{postnote}{\blx at key@postnote{#1}}
-\define at key{blx at bbc}{postnote}{\blx at key@postnote{#1}}
+\let\blx at default@theprenote\@empty
+\define at key{blx at bibdefaults}{prenote}{%
+  \blx at key@bibnote{\blx at default@theprenote}{#1}}
+\define at key{blx at bib2}{prenote}{%
+  \blx at key@bibnote{\blx at theprenote}{#1}}
+\define at key{blx at biblist2}{prenote}{%
+  \blx at key@bibnote{\blx at theprenote}{#1}}
+\define at key{blx at bbs}{prenote}{%
+  \blx at key@bibnote{\blx at theprenote}{#1}}
+\define at key{blx at bbg}{prenote}{%
+  \blx at key@bibnote{\blx at theprenote}{#1}}
+\define at key{blx at bbc}{prenote}{%
+  \blx at key@bibnote{\blx at theprenote}{#1}}
 
-\def\blx at key@postnote#1{%
-  \ifcsundef{blx at note@#1}
-     {\blx at error
-        {Note '#1' not found}
-        {The note '#1' could not be found.\MessageBreak
-         Use \string\defbibnote\space to define it}}
-     {\def\blx at thepostnote{#1}}}
+\let\blx at default@thepostnote\@empty
+\define at key{blx at bibdefaults}{postnote}{%
+  \blx at key@bibnote{\blx at default@thepostnote}{#1}}
+\define at key{blx at bib2}{postnote}{%
+  \blx at key@bibnote{\blx at thepostnote}{#1}}
+\define at key{blx at biblist2}{postnote}{%
+  \blx at key@bibnote{\blx at thepostnote}{#1}}
+\define at key{blx at bbs}{postnote}{%
+  \blx at key@bibnote{\blx at thepostnote}{#1}}
+\define at key{blx at bbg}{postnote}{%
+  \blx at key@bibnote{\blx at thepostnote}{#1}}
+\define at key{blx at bbc}{postnote}{%
+  \blx at key@bibnote{\blx at thepostnote}{#1}}
 
+\let\abx at default@locallabelwidth\@gobble
+\define at key{blx at bibdefaults}{locallabelwidth}{%
+  \blx at key@locallabelwidth{\abx at default@locallabelwidth}{#1}}
 \define at key{blx at bib1}{locallabelwidth}[]{}
 \define at key{blx at biblist1}{locallabelwidth}[]{}
-\define at key{blx at bib2}{locallabelwidth}[true]{\blx at key@locallabelwidth{#1}}
-\define at key{blx at biblist2}{locallabelwidth}[true]{\blx at key@locallabelwidth{#1}}
+\define at key{blx at bib2}{locallabelwidth}[true]{%
+  \blx at key@locallabelwidth{\abx at locallabelwidth}{#1}}
+\define at key{blx at biblist2}{locallabelwidth}[true]{%
+  \blx at key@locallabelwidth{\abx at locallabelwidth}{#1}}
 
-\def\blx at key@locallabelwidth#1{%
-  \ifstrequal{#1}{true}
-    {\def\abx at locallabelwidth{\blx at locallabelwidth}}
-    {\let\abx at locallabelwidth\@gobble}}
+\def\blx at key@locallabelwidth#1#2{%
+  \ifstrequal{#2}{true}
+    {\def#1{\blx at locallabelwidth}}
+    {\let#1\@gobble}}
 
 \define at key{blx at bib2}{resetnumbers}[true]{%
   \iftoggle{blx at defernumbers}
@@ -8798,6 +9108,10 @@
           Ignoring 'omitnumbers=true'}}}
     {}}
 
+
+\newrobustcmd*{\DeclarePrintbibliographyDefaults}{%
+  \setkeys{blx at bibdefaults}}
+
 % [<options>]
 \newrobustcmd*{\printbibheading}{%
   \begingroup
@@ -8807,8 +9121,8 @@
     {\blx at printbibheading[]}}
 
 \def\blx at printbibheading[#1]{%
-  \def\blx at theheading{bibliography}%
-  \let\blx at thetitle\@empty
+  \let\blx at theheading\blx at default@theheading
+  \let\blx at thetitle\blx at default@thetitle
   \blx at safe@actives
   \setkeys{blx at bhd}{#1}%
   \blx at rest@actives
@@ -8833,11 +9147,11 @@
 \def\blx at printbibliography[#1]{%
   \toggletrue{blx at tempa}%
   \toggletrue{blx at tempb}%
-  \def\blx at theheading{bibliography}%
-  \def\blx at theenv{bibliography}%
-  \let\blx at theprenote\@empty
-  \let\blx at thepostnote\@empty
-  \let\blx at thetitle\@empty
+  \let\blx at theheading\blx at default@theheading
+  \let\blx at theenv\blx at default@theenv
+  \let\blx at theprenote\blx at default@theprenote
+  \let\blx at thepostnote\blx at default@thepostnote
+  \let\blx at thetitle\blx at default@thetitle
   % defaults
   \let\blx at tempa\@empty% before there is a .bbl, this must not be undef
   \edef\blx at tempe{\the\c at refsection}% default refsection is current
@@ -8885,11 +9199,11 @@
     {\blx at bibbysection[]}}
 
 \def\blx at bibbysection[#1]{%
-  \def\blx at theheading{bibliography}%
-  \def\blx at theenv{bibliography}%
-  \let\blx at theprenote\@empty
-  \let\blx at thepostnote\@empty
-  \let\blx at thetitle\@empty
+  \let\blx at theheading\blx at default@theheading
+  \let\blx at theenv\blx at default@theenv
+  \let\blx at theprenote\blx at default@theprenote
+  \let\blx at thepostnote\blx at default@thepostnote
+  \let\blx at thetitle\blx at default@thetitle
   \c at refsection\z@
   \blx at safe@actives
   \setkeys{blx at bbs}{#1}%
@@ -8924,11 +9238,11 @@
     {\blx at bibbysegment[]}}
 
 \def\blx at bibbysegment[#1]{%
-  \def\blx at theheading{bibliography}%
-  \def\blx at theenv{bibliography}%
-  \let\blx at theprenote\@empty
-  \let\blx at thepostnote\@empty
-  \let\blx at thetitle\@empty
+  \let\blx at theheading\blx at default@theheading
+  \let\blx at theenv\blx at default@theenv
+  \let\blx at theprenote\blx at default@theprenote
+  \let\blx at thepostnote\blx at default@thepostnote
+  \let\blx at thetitle\blx at default@thetitle
   \c at refsegment\@ne
   \blx at safe@actives
   \setkeys{blx at bbg}{#1}%
@@ -8968,11 +9282,11 @@
     {\blx at bibbycategory[]}}
 
 \def\blx at bibbycategory[#1]{%
-  \def\blx at theheading{bibliography}%
-  \def\blx at theenv{bibliography}%
-  \let\blx at theprenote\@empty
-  \let\blx at thepostnote\@empty
-  \let\blx at thetitle\@empty
+  \let\blx at theheading\blx at default@theheading
+  \let\blx at theenv\blx at default@theenv
+  \let\blx at theprenote\blx at default@theprenote
+  \let\blx at thepostnote\blx at default@thepostnote
+  \let\blx at thetitle\blx at default@thetitle
   \c at refsection\z@
   \blx at safe@actives
   \setkeys{blx at bbc}{#1}%
@@ -8986,7 +9300,7 @@
     {}
     {\toggletrue{blx at tempa}%
      \begingroup
-     \blx at key@heading{#1}%
+     \blx at key@heading{\blx at theheading}{#1}%
      \let\blx at tempa\@empty
      \ifcsvoid{blx at dlist@entry@\the\c at refsection @\blx at refcontext@context}
        {}
@@ -9147,6 +9461,10 @@
   \csxdef{blx at assignedrefcontextbib@#1@#2}{\detokenize{#3}}}
 \def\abx at aux@refcontextdefaultsdone{%
   \global\boolfalse{refcontextdefaults}}
+% \abx at aux@defaultlabelprefix is a dummy only used by BibTeX to implement a
+% simple labelprefix not based on full refcontexts, which BibTeX does not
+% support.
+\let\abx at aux@defaultlabelprefix\@gobblethree
 
 \AtEndDocument{%
   % write the .aux to say we don't need to re-run to consume refcontext defaults
@@ -9290,7 +9608,11 @@
     % 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 at edef@refcontext{#2:\blx at tempc/\blx at refcontext@sortingnamekeytemplatename/\blx at refcontext@labelprefix/\blx at refcontext@uniquenametemplatename/\blx at refcontext@labelalphanametemplatename}%
+    \blx at edef@refcontext{#2:\blx at tempc/%
+      \blx at refcontext@sortingnamekeytemplatename/%
+      \blx at refcontext@labelprefix/%
+      \blx at refcontext@uniquenametemplatename/%
+      \blx at refcontext@labelalphanametemplatename}%
   \xifinlist\blx at tempc\blx at sortingtemplatenames
     {}
     {\listxadd\blx at sortingtemplatenames\blx at tempc}%
@@ -9302,8 +9624,8 @@
   % so we can compare on next run
   \xifinlist\blx at tempc\blx at biblists
     {}
-    {\listxadd\blx at biblists\blx at tempc
-     \blx at auxwrite\@mainaux{}{\string\abx at aux@biblist{\blx at tempc}}}%
+    {\listxadd\blx at biblists\blx at tempc}%
+  \blx at auxwrite\@mainaux{}{\string\abx at aux@biblist{\blx at tempc}}%
   \setkeys{blx at biblist1}{#1}% Set section only, if present ...
   \blx at rest@actives
   \ifcsvoid{blx at dlist@list@\blx at tempe @\blx at refcontext@context}
@@ -9430,7 +9752,9 @@
      % Set refcontext from named refcontext, if given
      \ifblank{#2}
        {}
-       {\edef\z{\noexpand\setkeys{blx at refcontext}{\csuse{blx at refcontext@name@#2}}}\z}%
+       {\edef\z{%
+          \noexpand\setkeys{blx at refcontext}{\csuse{blx at refcontext@name@#2}}}%
+        \z}%
      % Override with explicit refcontext keyvals, if given
      \setkeys{blx at refcontext}{#1}%
      % Add the sortingtemplate to the list of sortingtemplates so we can track
@@ -9438,12 +9762,17 @@
      \xifinlist\blx at refcontext@sortingtemplatename\blx at sortingtemplatenames
        {}
        {\listxadd\blx at sortingtemplatenames\blx at refcontext@sortingtemplatename}%
-     \blx at xdef@refcontext{\blx at refcontext@sortingtemplatename/\blx at refcontext@sortingnamekeytemplatename/\blx at refcontext@labelprefix/\blx at refcontext@uniquenametemplatename/\blx at refcontext@labelalphanametemplatename}%
+     \blx at xdef@refcontext{%
+       \blx at refcontext@sortingtemplatename/%
+       \blx at refcontext@sortingnamekeytemplatename/%
+       \blx at refcontext@labelprefix/%
+       \blx at refcontext@uniquenametemplatename/%
+       \blx at refcontext@labelalphanametemplatename}%
      % Add the refcontext to the list of refcontexts so we can compare on next run
      \xifinlist\blx at refcontext@context\blx at refcontexts
        {}
-       {\listxadd\blx at refcontexts\blx at refcontext@context
-        \blx at auxwrite\@mainaux{}{\string\abx at aux@refcontext{\blx at refcontext@context}}}%
+       {\listxadd\blx at refcontexts\blx at refcontext@context}%
+     \blx at auxwrite\@mainaux{}{\string\abx at aux@refcontext{\blx at refcontext@context}}%
      \ifcsundef{blx at sortingtemplate@\blx at refcontext@sortingtemplatename}
        {\blx at err@invopt{sorting=\blx at refcontext@sortingtemplatename}{}}
        {}%
@@ -9466,7 +9795,12 @@
   \gdef\blx at refcontext@sortingnamekeytemplatename{global}%
   \gdef\blx at refcontext@uniquenametemplatename{global}%
   \gdef\blx at refcontext@labelalphanametemplatename{global}%
-  \blx at xdef@refcontext{\blx at refcontext@sortingtemplatename/\blx at refcontext@sortingnamekeytemplatename//\blx at refcontext@uniquenametemplatename/\blx at refcontext@labelalphanametemplatename}}
+  \blx at xdef@refcontext{%
+    \blx at refcontext@sortingtemplatename/%
+    \blx at refcontext@sortingnamekeytemplatename/%
+    /%
+    \blx at refcontext@uniquenametemplatename/%
+    \blx at refcontext@labelalphanametemplatename}}
 
 % Meta option to set all name template options
 \define at key{blx at refcontext}{nametemplates}{%
@@ -9720,64 +10054,185 @@
 % we are prepending to the commands so that the resets happen before
 % the part title is typeset otherwise \cites in there could be "ibid"
 % which makes no sense
+
+% option switch
+%{<option level counter>}{<patch>}{<pre>}{<post>}
+\def\blx at patchsection@switch#1#2#3#4{%
+  \AtEndPreamble{%
+    #3%
+    \ifcase#1
+    \or % 1: part
+      \blx at refpatch@part{#2}%
+    \or % 2: chapter
+      \blx at refpatch@chapter{#2}%
+    \or % 3: section
+      \blx at refpatch@sect{section}{#2}{1}%
+    \or % 4: subsection
+      \blx at refpatch@sect{subsection}{#2}{2}%
+    \or % 5: chapter+ = part, chapter
+      \blx at refpatch@part{#2}%
+      \blx at refpatch@chapter{#2}%
+    \or % 6: section+ = part, chapter, section
+      \blx at refpatch@part{#2}%
+      \ifundef\chapter
+        {}
+        {\blx at refpatch@chapter{#2}}%
+      \blx at refpatch@sect{section}{#2}{1}%
+    \or % 7: subsection+ = part, chapter, section, subsection
+      \blx at refpatch@part{#2}%
+      \ifundef\chapter
+        {}
+        {\blx at refpatch@chapter{#2}}%
+      \blx at refpatch@sect{section}{#2}{1}%
+      \blx at refpatch@sect{subsection}{#2}{2}%
+    \fi
+    #4%
+  }%
+}
+
+%% Patching all the different document classes and their sectioning
+%% commands is ... messy at best
+%% For now we do the big three: (1) Standard classes, (2) KOMA-Script
+%% and (3) memoir.
+%%
+%% Timing of the patch can be tricky.
+%% Ideally we want the code to be executed when all counters have
+%% been increased so the labels attach to the right thing, but
+%% at the same time we want the code to be executed before the heading
+%% is typeset so it already applies to the text in the heading.
+%% Bonus points for actually executing the code on the correct page.
+
+%% memoir has hooks for section headings that we can use here
+%% see 18.25 'Heading Hooks' of the manual (v3.7h, 2018/12/12)
+%% they are in a good position, when the counters have been
+%% increased but heading text not yet typeset.
+%% The manual suggests this hooks have been around since 2005 or so,
+%% so we take them for granted.
+
+%% Newer versions of KOMA-Script (>=3.27) (will) have a hook system
+%% 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.
+
+%% Test for correct KOMA patch method
+% KOMA 3.27 has \AddtoDoHook
+\newcommand*{\blx at ifkoma@AddtoDoHook}{%
+  \ifboolexpr{not test {\ifcsundef{KOMAClassName}}
+              and not test {\ifcsundef{AddtoDoHook}}}}
+
+% KOMA 3.26 has \startsection at secnumdepth for some testing
+\newcommand*{\blx at ifkoma@startsection}{%
+  \ifboolexpr{not test {\ifcsundef{KOMAClassName}}
+              and not test {\ifcsundef{startsection at secnumdepth}}}}
+
+\newcommand*{\blx at ifmemoir}{\@ifclassloaded{memoir}}
+
+% Note that \ExecuteDoHook always feeds an argument to the code, here that is
+% going to be an empty group, which we explicitly gobble to avoid trouble.
+\def\blx at refpatch@koma at AddtoDoHook#1#2{%
+  \AddtoDoHook{heading/begingroup/#1}{#2\@gobble}}
+
+% \part
+\def\blx at refpatch@part at memoir#1{%
+  \apptocmd\mempartinfo{#1}
+    {}{\blx at err@patch{\string\mempartinfo}}%
+  \apptocmd\mempartstarinfo{#1}
+    {}{\blx at err@patch{\string\mempartstarinfo}}}
+
+\def\blx at refpatch@part at std#1{%
+  \toggletrue{blx at tempa}%
+  \def\do##1{%
+    \pretocmd##1{#1}
+      {\togglefalse{blx at tempa}\listbreak}
+      {}}%
+  \docsvlist{%
+    \H at old@part,%    hyperref
+    \NR at part,%       nameref
+    \@part}%         latex/koma-script/memoir
+  \iftoggle{blx at tempa}
+    {\blx at err@patch{\string\@part}}
+    {}%
+  \let\do\noexpand}
+
 \def\blx at refpatch@part#1{%
-    \ifundef\part
-      {\blx at err@nodocdiv{part}}
-      {\toggletrue{blx at tempa}%
-       \def\do##1{%
-         \pretocmd##1{#1}
-           {\togglefalse{blx at tempa}\listbreak}
-           {}}%
-       \docsvlist{%
-         \H at old@part,%    hyperref
-         \NR at part,%       nameref
-         \@part}%         latex/koma-script/memoir
-       \iftoggle{blx at tempa}
-         {\blx at err@patch{\string\@part}}
-         {}%
-       \let\do\noexpand}}
+  \ifundef\part
+    {\blx at err@nodocdiv{part}}
+    {\blx at ifkoma@AddtoDoHook
+       {\blx at refpatch@koma at AddtoDoHook{part}{#1}}
+       {\blx at ifmemoir
+          {\blx at refpatch@part at memoir{#1}}
+          {\blx at refpatch@part at std{#1}}}}}
 
+% \chapter
+\def\blx at refpatch@chapter at memoir#1{%
+  \apptocmd\memchapinfo{#1}
+    {}{\blx at err@patch{\string\memchapinfo}}%
+  \apptocmd\memchapstarinfo{#1}
+    {}{\blx at err@patch{\string\memchapstarinfo}}}
+
+\def\blx at refpatch@chapter at std#1{%
+  \pretocmd\@makechapterhead{#1}
+    {}
+    {\blx at err@patch{\string\@makechapterhead}}
+  \pretocmd\@makeschapterhead{#1}
+    {}
+    {\blx at err@patch{\string\@makeschapterhead}}}
+
 \def\blx at refpatch@chapter#1{%
   \ifundef\chapter
     {\blx at err@nodocdiv{chapter}}
-    {% the \ifcsundef{KOMAClassName} should be redundant, but you never know
-     \ifboolexpr{test {\ifcsundef{KOMAClassName}}
-                 or test {\ifcsundef{startsection at secnumdepth}}}
-       {\pretocmd\@makechapterhead{#1}
-          {}
-          {\blx at err@patch{\string\@makechapterhead}}
-        \pretocmd\@makeschapterhead{#1}
-          {}
-          {\blx at err@patch{\string\@makeschapterhead}}}
-       {% <- new KOMA >= 3.26 defines \startsection at secnumdepth
-        \At at startsection{\ifnumequal{\startsection at secnumdepth}{0}{#1}{}}}}}
+    {\blx at ifkoma@AddtoDoHook
+       {\blx at refpatch@koma at AddtoDoHook{chapter}{#1}}
+       {\blx at ifmemoir
+          {\blx at refpatch@chapter at memoir{#1}}
+          {\blx at refpatch@chapter at std{#1}}}}}
 
-\def\blx at refpatch@sect#1{%
+% \section, \subsection
+% {<section csname>}{<precode>}{<section level number>}
+\def\blx at refpatch@sect#1#2#3{%
   \ifcsundef{#1}
     {\blx at err@nodocdiv{#1}\@gobbletwo}
-    {% the \ifcsundef{KOMAClassName} should be redundant, but you never know
-     \ifboolexpr{test {\ifcsundef{KOMAClassName}}
-                 or test {\ifcsundef{startsection at secnumdepth}}}
-       {\blx at refpatch@sect at i}
-       {\blx at refpatch@sect at koma}}}
+    {\blx at ifkoma@AddtoDoHook
+       {\blx at refpatch@koma at AddtoDoHook{#1}{#2}}
+       {\blx at ifkoma@startsection
+          {\blx at refpatch@sect at koma@startsection{#2}{#3}}
+          {\blx at ifmemoir
+             {\blx at refpatch@sect at memoir{#1}{#2}}
+             {\blx at refpatch@sect at std{#2}{#3}}}}}}
 
 % KOMA >= 3.26 defines \startsection at secnumdepth to check the sectioning level,
-% so we can now use \At at startsection
-\def\blx at refpatch@sect at koma#1#2{%
+% so we can now use \At at startsection.
+% Starting from 3.27 we use AddtoDoHook, so this is a short-lived
+% intermezzo.
+\def\blx at refpatch@sect at koma@startsection#1#2{%
   \At at startsection{\ifnumequal{\startsection at secnumdepth}{#2}{#1}{}}}
 
-\edef\blx at refpatch@sect at i#1#2{%
+\edef\blx at refpatch@sect at memoir#1#2{%
+  \apptocmd\noexpand\memsecinfo
+    {\noexpand\blx at refpatch@sect at memoir@i{\string#1}{#1}{#2}}
+    {}{\noexpand\blx at err@patch{\string\memsecinfo}}%
+  \apptocmd\noexpand\memsecstarinfo
+    {\noexpand\blx at refpatch@sect at memoir@i{\string#1}{#1}{#2}}
+    {}{\noexpand\blx at err@patch{\string\memsecstarinfo}}}
+
+\def\blx at refpatch@sect at memoir@i#1#2#3{%
+  \ifstrequal{#1}{#2}{#3}{}}
+
+\edef\blx at refpatch@sect at std#1#2{%
   \def\noexpand\do##1{%
     \pretocmd##1%
-      {\noexpand\blx at refpatch@sect at ii{#1}{#2}{\string#2}}
+      {\noexpand\blx at refpatch@sect at std@i{#1}{#2}{\string#2}}
       {\togglefalse{blx at tempa}\noexpand\listbreak}
       {}}%
-  \noexpand\blx at refpatch@sect at iii}
+  \noexpand\blx at refpatch@sect at std@ii}
 
-\def\blx at refpatch@sect at ii#1#2#3{%
+\def\blx at refpatch@sect at std@i#1#2#3{%
   \ifnumequal{#2}{#3}{#1}{}}
 
-\def\blx at refpatch@sect at iii{%
+\def\blx at refpatch@sect at std@ii{%
   \toggletrue{blx at tempa}%
   \docsvlist{%       order does matter:
     \H at old@sectm at m,% memoir+hyperref (what a mess...)
@@ -10050,12 +10505,14 @@
   \blx at bibreq{#1}%
   \ifinlist{#1}\blx at cites
     {}
-    {\listgadd{\blx at cites}{#1}%
-     \blx at auxwrite\@mainaux{}{\string\abx at aux@cite{#1}}}%
+    {\listgadd{\blx at cites}{#1}}%
+  \blx at auxwrite\@mainaux{}{\string\abx at aux@cite{#1}}%
   \ifinlistcs{#1}{blx at segm@\the\c at refsection @\the\c at refsegment}
     {}
     {\listcsgadd{blx at segm@\the\c at refsection @\the\c at refsegment}{#1}}%
-  \blx at auxwrite\@mainaux{}{\string\abx at aux@segm{\the\c at refsection}{\the\c at refsegment}{\detokenize{#1}}}%
+  \blx at auxwrite\@mainaux{}{\string\abx at aux@segm{\the\c at refsection}%
+                                               {\the\c at refsegment}%
+                                               {\detokenize{#1}}}%
   \blx at ifdata{#1}
     {}
     {\ifcsdef{blx at miss@\the\c at refsection}
@@ -10065,7 +10522,9 @@
        {\blx at logreq@active{#2{#1}}}}}
 
 \protected\def\abx at aux@segm#1#2#3{%
-  \listcsxadd{blx at segm@#1@#2}{\detokenize{#3}}}
+  \xifinlistcs{\detokenize{#3}}{blx at segm@#1@#2}
+    {}
+    {\listcsxadd{blx at segm@#1@#2}{\detokenize{#3}}}}
 
 \def\blx at nocitation@all{%
   \ifinlist{*}\blx at nocites
@@ -10120,7 +10579,8 @@
        {}
        {\blx at error
           {Conflicting definitions of '\blx at tempa'}
-          {The entry set '\blx at tempa' been defined before.\MessageBreak
+          {The entry set '\blx at tempa' has been defined before.%
+           \MessageBreak
            old: \blx at tempa\space = %
            \csuse{blx at set@\the\c at refsection @\blx at tempa}\MessageBreak
            new: \blx at tempa\space = \blx at tempb\MessageBreak
@@ -10778,7 +11238,7 @@
     {\global\cslet{blx at pref@#3@\detokenize{#2}}\@empty
      \expandafter\blx at onlypreamble\csname blx at pref@#3@\detokenize{#2}\endcsname}
     {}%
-  \ifinlistcs{#4}{blx at pref@#3@\detokenize{#2}}
+  \blx at ifprintableinlistcs{#4}{blx at pref@#3@\detokenize{#2}}
     {}
     {\listcsgadd{blx at pref@#3@\detokenize{#2}}{#4}}%
   \blx at addpagesum{#1}{#5}}
@@ -10850,11 +11310,9 @@
 \def\blx at nocite#1{%
   \@bsphack
   \AfterPreamble{%
-    \iftoggle{blx at bibliography}
-      {}
-      {\ifstrequal{*}{#1}
-        {\blx at nocitation@all}
-        {\blx at xsanitizeafter{\forcsvlist\blx at nocite@do}{#1}}}}%
+    \ifstrequal{*}{#1}
+      {\blx at nocitation@all}
+      {\blx at xsanitizeafter{\forcsvlist\blx at nocite@do}{#1}}}%
   \@esphack}
 
 \def\blx at nocite@do#1{%
@@ -11038,7 +11496,10 @@
       {\def\abx at field@prenote{##1}}%
     \ifblank{##2}
       {\let\blx at thenotecheck\relax}
-      {\def\abx at field@postnote{##2}}%
+      {\def\abx at field@postnote{##2}%
+       \iftoggle{blx at volcite}
+         {\blx at defvolcitepostnote##2}
+         {}}%
     \def\blx at precode{\delimcontext{#1}#2}%
     \def\blx at loopcode{#3}%
     \def\blx at dlimcode{#4}%
@@ -11479,6 +11940,7 @@
     \def\iffieldbibstring#1{\blx at TE{\blx at imc@iffieldbibstring{#1}}}%
     \def\ifnatbibmode{\blx at TE{\iftoggle{blx at natbib}}}%
     \def\ifcitation{\blx at TE{\iftoggle{blx at citation}}}%
+    \def\ifvolcite{\blx at TE{\iftoggle{blx at volcite}}}%
     \def\ifbibliography{\blx at TE{\iftoggle{blx at bibliography}}}%
     \def\ifciteindex{\blx at TE{\iftoggle{blx at citeindex}}}%
     \def\ifbibindex{\blx at TE{\iftoggle{blx at bibindex}}}%
@@ -11818,7 +12280,9 @@
 % {<macro>}[<pre>]{<vol>}[<post>] => <macro>{<pre>}{{<vol>}{<post>}}
 
 \newrobustcmd*{\volcitecmd}{%
-  \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
+  \AtNextCite{%
+    \toggletrue{blx at volcite}%
+    \csuse{blx at hook@volcite}}%
   \begingroup\let\blx at citeargs\blx at volciteargs}
 
 \protected\def\blx at volciteargs#1{%
@@ -11836,7 +12300,9 @@
   \blx at citeargs@iii{#1{#2}{{#3}{#4}}}}
 
 \newrobustcmd*{\multivolcitecmd}{%
-  \AtNextCite{\DeclareFieldAlias{postnote}{volcitenote}}%
+  \AtNextCite{%
+    \toggletrue{blx at volcite}%
+    \csuse{blx at hook@volcite}}%
   \def\blx at hook@mcite at before{%
     \global\undef\blx at hook@mcite at before
     \let\blx at citeargs\blx at volmciteargs}}
@@ -11846,6 +12312,24 @@
     {\blx at volciteargs@i{#1}}
     {\blx at volciteargs@i{#1}[]}}
 
+\long\def\blx at defvolcitepostnote#1#2{%
+  \def\abx at field@volcitevolume{#1}%
+  \ifblank{#2}
+    {}
+    {\def\abx at field@volcitepages{#2}}}
+
+\newrobustcmd*{\AtVolcite}{%
+  \@ifstar
+    {\global\undef\blx at hook@volcite
+     \gappto\blx at hook@volcite}
+    {\gappto\blx at hook@volcite}}
+\@onlypreamble\AtVolcite
+\def\blx at imc@UseVolciteHook{\csuse{blx at hook@volcite}}
+\blx at regimcs{\UseVolciteHook}
+
+\AtVolcite{%
+  \DeclareFieldAlias{postnote}{volcitenote}}
+
 %% Control file
 
 \begingroup
@@ -12092,8 +12576,14 @@
   ~~<bcf:optionscope type="#1">\blx at nl
   #2%
   ~~</bcf:optionscope>\blx at nl}
-\xdef\blx at xml@option at scope#1#2{%
+\xdef\blx at xml@option at scope#1#2{% GLOBAL/TYPE scope
   ~~~~<bcf:option datatype="#1">#2</bcf:option>\blx at nl}
+\xdef\blx at xml@option at entryscope#1#2{% ENTRY scope
+  ~~~~<bcf:option datatype="#1"\noexpand\ifcsdef{blx at bcf@backendout at entry@#2}{ backendout="1"}{}\noexpand\ifcsdef{blx at bcf@backendin at entry@#2}{ backendin="\noexpand\csuse{blx at bcf@backendin at entry@#2}"}{}>#2</bcf:option>\blx at nl}
+\xdef\blx at xml@option at namelistscope#1#2{% NAMELIST scope
+  ~~~~<bcf:option datatype="#1"\noexpand\ifcsdef{blx at bcf@backendout at namelist@#2}{ backendout="1"}{}\noexpand\ifcsdef{blx at bcf@backendin at namelist@#2}{ backendin="\noexpand\csuse{blx at bcf@backendin at namelist@#2}"}{}>#2</bcf:option>\blx at nl}
+\xdef\blx at xml@option at namescope#1#2{% NAME scope
+  ~~~~<bcf:option datatype="#1"\noexpand\ifcsdef{blx at bcf@backendout at name@#2}{ backendout="1"}{}\noexpand\ifcsdef{blx at bcf@backendin at name@#2}{ backendin="\noexpand\csuse{blx at bcf@backendin at name@#2}"}{}>#2</bcf:option>\blx at nl}
 \endgroup
 
 \def\blx at bcf@options at global{%
@@ -12119,7 +12609,13 @@
     \blx at xml@svalue{mincitenames}{\blx at mincitenames}%
     \blx at xml@svalue{minsortnames}{\blx at minsortnames}%
     \blx at xml@svalue{minitems}{\blx at minitems}%
+    \blx at xml@toggle{nohashothers}%
+    \blx at xml@toggle{noroman}%
+    \blx at xml@toggle{nosortothers}%
     \blx at xml@toggle{singletitle}%
+    \blx at xml@toggle{skipbib}%
+    \blx at xml@toggle{skipbiblist}%
+    \blx at xml@toggle{skiplab}%
     \blx at xml@svalue{sortalphaothers}{\sortalphaothers}%
     \blx at xml@svalue{sortlocale}{\blx at sortlocale}%
     \blx at xml@svalue{sortingtemplatename}{\blx at sorting}%
@@ -12155,15 +12651,18 @@
         {\csuse{blx at bcf@labeldatespec@#1}}
         {\blx at bcf@labeldatespec}}%
     \blx at xml@svalue{maxalphanames}{\blx at maxalphanames}%
-    \blx at xml@svalue{maxbibnames}{\blx at maxbibnames@type}%
-    \blx at xml@svalue{maxcitenames}{\blx at maxcitenames@type}%
-    \blx at xml@svalue{maxsortnames}{\blx at maxsortnames@type}%
-    \blx at xml@svalue{maxitems}{\blx at maxitems@type}%
+    \blx at xml@svalue{maxbibnames}{\blx at maxbibnames}%
+    \blx at xml@svalue{maxcitenames}{\blx at maxcitenames}%
+    \blx at xml@svalue{maxsortnames}{\blx at maxsortnames}%
+    \blx at xml@svalue{maxitems}{\blx at maxitems}%
     \blx at xml@svalue{minalphanames}{\blx at minalphanames}%
-    \blx at xml@svalue{minbibnames}{\blx at minbibnames@type}%
-    \blx at xml@svalue{mincitenames}{\blx at mincitenames@type}%
-    \blx at xml@svalue{minsortnames}{\blx at minsortnames@type}%
-    \blx at xml@svalue{minitems}{\blx at minitems@type}%
+    \blx at xml@svalue{minbibnames}{\blx at minbibnames}%
+    \blx at xml@svalue{mincitenames}{\blx at mincitenames}%
+    \blx at xml@svalue{minsortnames}{\blx at minsortnames}%
+    \blx at xml@svalue{minitems}{\blx at minitems}%
+    \blx at xml@toggle{nohashothers}%
+    \blx at xml@toggle{noroman}%
+    \blx at xml@toggle{nosortothers}%
     \blx at xml@toggle{singletitle}%
     \blx at xml@toggle{skipbib}%
     \blx at xml@toggle{skiplab}%
@@ -12239,7 +12738,7 @@
   % ENTRY
   \def\do##1{%
     \begingroup
-    \def\do####1{\xappto\blx at bcf@options at scope@entry{\blx at xml@option at scope{##1}{####1}}}%
+    \def\do####1{\xappto\blx at bcf@options at scope@entry{\blx at xml@option at entryscope{##1}{####1}}}%
     \dolistcsloop{blx at entryopts@##1}%
     \endgroup}%
   \dolistloop\blx at entryopts@datatypes
@@ -12246,7 +12745,7 @@
   % NAMELIST
   \def\do##1{%
     \begingroup
-    \def\do####1{\xappto\blx at bcf@options at scope@namelist{\blx at xml@option at scope{##1}{####1}}}%
+    \def\do####1{\xappto\blx at bcf@options at scope@namelist{\blx at xml@option at namelistscope{##1}{####1}}}%
     \dolistcsloop{blx at namelistopts@##1}%
     \endgroup}%
   \dolistloop\blx at entryopts@datatypes
@@ -12253,7 +12752,7 @@
   % NAME
   \def\do##1{%
     \begingroup
-    \def\do####1{\xappto\blx at bcf@options at scope@name{\blx at xml@option at scope{##1}{####1}}}%
+    \def\do####1{\xappto\blx at bcf@options at scope@name{\blx at xml@option at namescope{##1}{####1}}}%
     \dolistcsloop{blx at nameopts@##1}%
     \endgroup}%
   \dolistloop\blx at entryopts@datatypes
@@ -12669,6 +13168,10 @@
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_append="1"}}
     {}}
+\define at key{blx at sourcemap@step}{appendstrict}[true]{% true|false
+  \ifstrequal{#1}{true}
+    {\appto\blx at tempf{ map\string_appendstrict="1"}}
+    {}}
 \define at key{blx at sourcemap@step}{null}[true]{% true|false
   \ifstrequal{#1}{true}
     {\appto\blx at tempf{ map\string_null="1"}}
@@ -12728,8 +13231,8 @@
     {\listxadd\blx at lantemplatespecs\blx at lantname}%
   \endgroup}
 \@onlypreamble\DeclareLabelalphaNameTemplate
-\blx at collectopts{xml}{blx at globalopts}{labelalphanametemplate}% for passing to the .bcf
-\DeclareEntryOption[string]{labelalphanametemplatename}{%
+\blx at DeclareBackendOption{global}[xml]{labelalphanametemplate}
+\DeclareBiblatexOption{entry,namelist,name}[string]{labelalphanametemplatename}{%
   \def\blx at refcontext@labelalphanametemplatename{#1}}
 
 \newcommand*{\blx at lantem@namepart}[2][]{%
@@ -12771,8 +13274,7 @@
      {\blx at latem{#2}{global}}
      {\forcsvlist{\blx at latem{#2}}{#1}}}
 \@onlypreamble\DeclareLabelalphaTemplate
-\blx at collectopts{xml}{blx at globalopts}{labelalphatemplate}% for passing to the .bcf
-\blx at collectopts{xml}{blx at typeopts}{labelalphatemplate}% for passing to the .bcf
+\blx at DeclareBackendOption{global,type}[xml]{labelalphatemplate}
 
 \def\blx at latem#1#2{%
   \begingroup
@@ -12932,7 +13434,7 @@
 \def\blx at inherit@ii#1#2{%
   \eappto\blx at tempa{\blx at xml@inherit at type{#1}{#2}{}}}
 
-\blx at collectopts{xml}{blx at globalopts}{inheritance}% for passing to the .bcf
+\blx at DeclareBackendOption{global}[xml]{inheritance}
 
 % [<options>]{<source>}{<target>}
 \newcommand*{\blx at inherit@field}[3][]{%
@@ -13016,8 +13518,7 @@
     {\listxadd\blx at translits\blx at tempa}%
   \endgroup}
 \@onlypreamble\DeclareSortTranslit
-\blx at collectopts{xml}{blx at globalopts}{translit}% for passing to the .bcf
-\blx at collectopts{xml}{blx at typeopts}{translit}% for passing to the .bcf
+\blx at DeclareBackendOption{global,type}[xml]{translit}
 
 \newcommand*{\blx at translit@setup}[4][]{%
   \eappto\blx at tempb{%
@@ -13041,8 +13542,8 @@
     {\listxadd\blx at untemplatespecs\blx at untname}%
   \endgroup}
 \@onlypreamble\DeclareUniquenameTemplate
-\blx at collectopts{xml}{blx at globalopts}{uniquenametemplate}% for passing to the .bcf
-\DeclareEntryOption[string]{uniquenametemplatename}{%
+\blx at DeclareBackendOption{global}[xml]{uniquenametemplate}
+\DeclareBiblatexOption{entry,namelist,name}[string]{uniquenametemplatename}{%
   \def\blx at refcontext@uniquenametemplatename{#1}}
 
 \newcommand*{\blx at untemp@namepart}[2][]{%
@@ -13086,8 +13587,8 @@
     {\listxadd\blx at sortingnamekeytemplates\blx at snkname}%
   \endgroup}
 \@onlypreamble\DeclareSortingNamekeyTemplate
-\blx at collectopts{xml}{blx at globalopts}{sortingnamekeytemplate}% for passing to the .bcf
-\DeclareEntryOption[string]{sortingnamekeytemplatename}{%
+\blx at DeclareBackendOption{global}[xml]{sortingnamekeytemplate}
+\DeclareBiblatexOption{entry,namelist,name}[string]{sortingnamekeytemplatename}{%
   \def\blx at refcontext@sortingnamekeytemplatename{#1}}
 
 % User-mode macro for checking sorting name template options
@@ -13159,7 +13660,7 @@
   \global\cslet{blx at sortingtemplate@#2}\blx at tempa
   \endgroup}
 \@onlypreamble\DeclareSortingTemplate
-\blx at collectopts{xml}{blx at globalopts}{sortingtemplate}% for passing to the .bcf
+\blx at DeclareBackendOption{global}[xml]{sortingtemplate}
 
 \define at key{blx at sortdef@sorting}{locale}{% locale name
   \def\blx at templ{#1}}
@@ -13225,7 +13726,7 @@
   \advance\blx at tempcntb\@ne
   \blx at xmlsanitizeafter{\def\blx at tempe}{#1}%
   \eappto\blx at tempb{%
-    \blx at xml@sortitem{order="\the\blx at tempcntb"}{\blx at tempe}}}
+    \blx at xml@sortitem{literal="1" order="\the\blx at tempcntb"}{\blx at tempe}}}
 
 % [<type,type,...>]{<string>}
 \newrobustcmd*{\DeclarePresort}[2][]{%
@@ -13238,9 +13739,7 @@
        {\forcsvlist\blx at undefpresort{#1}}}%
   \endgroup}
 \@onlypreamble\DeclarePresort
-\blx at collectopts{string}{blx at globalopts}{presort}% for passing to the .bcf
-\blx at collectopts{string}{blx at typeopts}{presort}% for passing to the .bcf
-\blx at collectopts{string}{blx at entryopts}{presort}% for passing to the .bcf
+\blx at DeclareBackendOption{global,type,entry}[string]{presort}
 
 \def\blx at defpresort#1#2{%
   \csxdef{blx at bcf@presort@#2}{\blx at xml@presort{#2}{#1}}}
@@ -13250,7 +13749,7 @@
 % {<entrytype,...>}{<field,...>}
 \newrobustcmd*{\DeclareSortExclusion}[2]{%
   \forcsvlist{\blx at sortexclude{#2}}{#1}}
-\blx at collectopts{xml}{blx at typeopts}{sortexclusion}% for passing to the .bcf
+\blx at DeclareBackendOption{type}[xml]{sortexclusion}
 
 % {<field>}{<entrytype>}
 \def\blx at sortexclude#1#2{%
@@ -13269,7 +13768,7 @@
 % {<entrytype,...>}{<field,...>}
 \newrobustcmd*{\DeclareSortInclusion}[2]{%
   \forcsvlist{\blx at sortinclude{#2}}{#1}}
-\blx at collectopts{xml}{blx at typeopts}{sortinclusion}% for passing to the .bcf
+\blx at DeclareBackendOption{type}[xml]{sortinclusion}
 
 % {<field>}{<entrytype>}
 \def\blx at sortinclude#1#2{%
@@ -13294,7 +13793,7 @@
   \global\let\blx at bcf@extradatespec\blx at tempa
   \endgroup}
 \@onlypreamble\DeclareExtradate
-\blx at collectopts{xml}{blx at globalopts}{extradatespec}% for passing to the .bcf
+\blx at DeclareBackendOption{global}[xml]{extradatespec}
 
 \newrobustcmd*{\blx at extradate@scope}[1]{%
   \let\blx at tempb\@empty
@@ -13322,8 +13821,7 @@
   #2%
   \endgroup}
 \@onlypreamble\DeclareLabelname
-\blx at collectopts{xml}{blx at globalopts}{labelnamespec}% for passing to the .bcf
-\blx at collectopts{xml}{blx at typeopts}{labelnamespec}% for passing to the .bcf
+\blx at DeclareBackendOption{global,type}[xml]{labelnamespec}
 
 \newrobustcmd*{\DeclareLabeltitle}[2][]{%
   \begingroup
@@ -13338,8 +13836,7 @@
   #2%
   \endgroup}
 \@onlypreamble\DeclareLabeltitle
-\blx at collectopts{xml}{blx at globalopts}{labeltitlespec}% for passing to the .bcf
-\blx at collectopts{xml}{blx at typeopts}{labeltitlespec}% for passing to the .bcf
+\blx at DeclareBackendOption{global,type}[xml]{labeltitlespec}
 
 \newrobustcmd*{\DeclareLabeldate}[2][]{%
   \begingroup
@@ -13355,8 +13852,7 @@
   #2%
   \endgroup}
 \@onlypreamble\DeclareLabeldate
-\blx at collectopts{xml}{blx at globalopts}{labeldatespec}% for passing to the .bcf
-\blx at collectopts{xml}{blx at typeopts}{labeldatespec}% for passing to the .bcf
+\blx at DeclareBackendOption{global,type}[xml]{labeldatespec}
 
 \newcommand*{\blx at ordered@field}[2][]{%
   \let\blx at tempc\@empty
@@ -13521,7 +14017,7 @@
 \define at key{blx at opt@pre}{sorting}{%
   \def\blx at sorting{#1}%
   \def\blx at refcontext@sortingtemplatename{#1}}
-\blx at collectopts{string}{blx at globalopts}{sortingtemplatename}% for passing to the .bcf
+\blx at DeclareBackendOption{global}[string]{sortingtemplatename}
 
 \AtEndPreamble{%
   \ifcsdef{blx at sortingtemplate@\blx at sorting}
@@ -13535,7 +14031,12 @@
   \let\blx at refcontext@labelprefix at real\@empty
   \def\blx at refcontext@uniquenametemplatename{global}%
   \def\blx at refcontext@labelalphanametemplatename{global}%
-  \blx at xdef@refcontext{\blx at refcontext@sortingtemplatename/\blx at refcontext@sortingnamekeytemplatename/\blx at refcontext@labelprefix/\blx at refcontext@uniquenametemplatename/\blx at refcontext@labelalphanametemplatename}%
+  \blx at xdef@refcontext{%
+    \blx at refcontext@sortingtemplatename/%
+    \blx at refcontext@sortingnamekeytemplatename/%
+    \blx at refcontext@labelprefix/%
+    \blx at refcontext@uniquenametemplatename/%
+    \blx at refcontext@labelalphanametemplatename}%
   \listxadd\blx at refcontexts\blx at refcontext@context}
 
 \DeclareBibliographyOption[boolean]{sortcase}[true]{%
@@ -13544,89 +14045,51 @@
 \DeclareBibliographyOption[boolean]{sortupper}[true]{%
   \settoggle{blx at sortupper}{#1}}
 
-\DeclareBibliographyOption[integer]{maxnames}{%
+\DeclareBiblatexOption{global,type}[integer]{maxnames}{%
   \numdef\blx at maxcitenames{#1}%
   \numdef\blx at maxbibnames{#1}%
-  \numdef\blx at maxsortnames{#1}}
-\DeclareBibliographyOption[integer]{minnames}{%
+  \numdef\blx at maxsortnames{#1}%
+  \c at maxnames#1\relax}
+\DeclareBiblatexOption{global,type}[integer]{minnames}{%
   \numdef\blx at mincitenames{#1}%
   \numdef\blx at minbibnames{#1}%
-  \numdef\blx at minsortnames{#1}}
-\DeclareTypeOption[integer]{maxnames}{%
-  \numdef\blx at maxcitenames@type{#1}%
-  \numdef\blx at maxbibnames@type{#1}%
-  \numdef\blx at maxsortnames@type{#1}%
-  \c at maxnames#1\relax}
-\DeclareTypeOption[integer]{minnames}{%
-  \numdef\blx at mincitenames@type{#1}%
-  \numdef\blx at minbibnames@type{#1}%
-  \numdef\blx at minsortnames@type{#1}%
+  \numdef\blx at minsortnames{#1}%
   \c at minnames#1\relax}
-\DeclareEntryOption[integer]{maxnames}{%
-  \c at maxnames#1\relax}
-\DeclareEntryOption[integer]{minnames}{%
-  \c at minnames#1\relax}
+% the per-entry option is resolved by Biber directly
+\blx at DeclareBackendOption{entry}[integer]{maxnames}
+\blx at DeclareBackendOption{entry}[integer]{minnames}
+\gdef\blx at bcf@backendin at entry@maxnames{maxcitenames,maxbibnames,maxsortnames}%
+\gdef\blx at bcf@backendin at entry@minnames{mincitenames,minbibnames,minsortnames}%
 
-\DeclareBibliographyOption[integer]{maxbibnames}{%
+
+\DeclareBiblatexOption{global,type,entry}[integer]{maxbibnames}{%
   \numdef\blx at maxbibnames{#1}%
-  \numdef\blx at maxsortnames{#1}}
-\DeclareBibliographyOption[integer]{minbibnames}{%
-  \numdef\blx at minbibnames{#1}%
-  \numdef\blx at minsortnames{#1}}
-\DeclareTypeOption[integer]{maxbibnames}{%
-  \numdef\blx at maxbibnames@type{#1}%
-  \numdef\blx at maxsortnames@type{#1}%
+  \numdef\blx at maxsortnames{#1}%
   \iftoggle{blx at bibliography}
     {\c at maxnames#1\relax}
     {}}
-\DeclareTypeOption[integer]{minbibnames}{%
-  \numdef\blx at minbibnames@type{#1}%
-  \numdef\blx at minsortnames@type{#1}%
+\DeclareBiblatexOption{global,type,entry}[integer]{minbibnames}{%
+  \numdef\blx at minbibnames{#1}%
+  \numdef\blx at minsortnames{#1}%
   \iftoggle{blx at bibliography}
     {\c at minnames#1\relax}
     {}}
-\DeclareEntryOption[integer]{maxbibnames}{%
-  \iftoggle{blx at bibliography}
-    {\c at maxnames#1\relax}
-    {}}
-\DeclareEntryOption[integer]{minbibnames}{%
-  \iftoggle{blx at bibliography}
-    {\c at minnames#1\relax}
-    {}}
 
-\DeclareBibliographyOption[integer]{maxcitenames}{%
-  \numdef\blx at maxcitenames{#1}}
-\DeclareBibliographyOption[integer]{mincitenames}{%
-  \numdef\blx at mincitenames{#1}}
-\DeclareTypeOption[integer]{maxcitenames}{%
-  \numdef\blx at maxcitenames@type{#1}%
+\DeclareBiblatexOption{global,type,entry}[integer]{maxcitenames}{%
+  \numdef\blx at maxcitenames{#1}%
   \iftoggle{blx at bibliography}
     {}
     {\c at maxnames#1\relax}}
-\DeclareTypeOption[integer]{mincitenames}{%
-  \numdef\blx at mincitenames@type{#1}%
+\DeclareBiblatexOption{global,type,entry}[integer]{mincitenames}{%
+  \numdef\blx at mincitenames{#1}%
   \iftoggle{blx at bibliography}
     {}
     {\c at minnames#1\relax}}
-\DeclareEntryOption[integer]{maxcitenames}{%
-  \iftoggle{blx at bibliography}
-    {}
-    {\c at maxnames#1\relax}}
-\DeclareEntryOption[integer]{mincitenames}{%
-  \iftoggle{blx at bibliography}
-    {}
-    {\c at minnames#1\relax}}
 
-\DeclareBibliographyOption[integer]{maxsortnames}{%
+\DeclareBiblatexOption{global,type,entry}[integer]{maxsortnames}{%
   \numdef\blx at maxsortnames{#1}}
-\DeclareBibliographyOption[integer]{minsortnames}{%
+\DeclareBiblatexOption{global,type,entry}[integer]{minsortnames}{%
   \numdef\blx at minsortnames{#1}}
-\DeclareTypeOption[integer]{maxsortnames}{%
-  \numdef\blx at maxsortnames@type{#1}}
-\DeclareTypeOption[integer]{minsortnames}{%
-  \numdef\blx at minsortnames@type{#1}}
-\DeclareEntryOption[integer]{maxsortnames}{}
-\DeclareEntryOption[integer]{minsortnames}{}
 
 \appto\blx at checkoptions@global{%
   \blx at maxmin@num{maxbibnames}{minbibnames}\blx at maxbibnames\blx at minbibnames
@@ -13633,46 +14096,30 @@
   \blx at maxmin@num{maxcitenames}{mincitenames}\blx at maxcitenames\blx at mincitenames
   \blx at maxmin@num{maxsortnames}{minsortnames}\blx at maxsortnames\blx at minsortnames}
 \appto\blx at checkoptions@type{%
-  \blx at maxmin@num{maxbibnames}{minbibnames}\blx at maxbibnames@type\blx at minbibnames@type
-  \blx at maxmin@num{maxcitenames}{mincitenames}\blx at maxcitenames@type\blx at mincitenames@type
-  \blx at maxmin@num{maxsortnames}{minsortnames}\blx at maxsortnames@type\blx at minsortnames@type}
+  \blx at maxmin@num{maxbibnames}{minbibnames}\blx at maxbibnames\blx at minbibnames
+  \blx at maxmin@num{maxcitenames}{mincitenames}\blx at maxcitenames\blx at mincitenames
+  \blx at maxmin@num{maxsortnames}{minsortnames}\blx at maxsortnames\blx at minsortnames}
 \appto\blx at checkoptions@entry{%
   \blx at maxmin@cnt{maxnames}{minnames}\c at maxnames\c at minnames}
 
-\DeclareBibliographyOption[integer]{maxitems}{%
-  \numdef\blx at maxitems{#1}}
-\DeclareBibliographyOption[integer]{minitems}{%
-  \numdef\blx at minitems{#1}}
-\DeclareTypeOption[integer]{maxitems}{%
-  \numdef\blx at maxitems@type{#1}%
+\DeclareBiblatexOption{global,type,entry}[integer]{maxitems}{%
+  \numdef\blx at maxitems{#1}%
   \c at maxitems#1\relax}
-\DeclareTypeOption[integer]{minitems}{%
-  \numdef\blx at minitems@type{#1}%
+\DeclareBiblatexOption{global,type,entry}[integer]{minitems}{%
+  \numdef\blx at minitems{#1}%
   \c at minitems#1\relax}
-\DeclareEntryOption[integer]{maxitems}{%
-  \c at maxitems#1\relax}
-\DeclareEntryOption[integer]{minitems}{%
-  \c at minitems#1\relax}
 
 \appto\blx at checkoptions@global{%
   \blx at maxmin@num{maxitems}{minitems}\blx at maxitems\blx at minitems}
 \appto\blx at checkoptions@type{%
-  \blx at maxmin@num{maxitems}{minitems}\blx at maxitems@type\blx at minitems@type}
+  \blx at maxmin@num{maxitems}{minitems}\blx at maxitems\blx at minitems}
 \appto\blx at checkoptions@entry{%
   \blx at maxmin@cnt{maxitems}{minitems}\c at maxitems\blx at minitems}
 
-\DeclareBibliographyOption[integer]{maxalphanames}{%
+\DeclareBiblatexOption{global,type,entry}[integer]{maxalphanames}{%
   \numdef\blx at maxalphanames{#1}}
-\DeclareBibliographyOption[integer]{minalphanames}{%
+\DeclareBiblatexOption{global,type,entry}[integer]{minalphanames}{%
   \numdef\blx at minalphanames{#1}}
-\DeclareTypeOption[integer]{maxalphanames}{%
-  \numdef\blx at maxalphanames{#1}}
-\DeclareTypeOption[integer]{minalphanames}{%
-  \numdef\blx at minalphanames{#1}}
-\DeclareEntryOption[integer]{maxalphanames}{%
-  \numdef\blx at maxalphanames{#1}}
-\DeclareEntryOption[integer]{minalphanames}{%
-  \numdef\blx at minalphanames{#1}}
 
 \appto\blx at checkoptions@global{%
   \blx at maxmin@num{maxalphanames}{minalphanames}\blx at maxalphanames\blx at minalphanames}
@@ -13707,7 +14154,7 @@
      #3=#4}
     {}}
 
-\DeclareBibliographyOption[boolean]{terseinits}[true]{%
+\DeclareBiblatexOption{global,type,entry,namelist,name}[boolean]{terseinits}[true]{%
   \ifstrequal{#1}{true}
     {\toggletrue{blx at terseinits}
      \renewrobustcmd*{\bibinitperiod}{}
@@ -13718,12 +14165,12 @@
      \renewrobustcmd*{\bibinitdelim}{\addnbspace}
      \renewrobustcmd*{\bibinithyphendelim}{\adddot\mbox{-}}}}
 
-\DeclareBibliographyOption[boolean]{abbreviate}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{abbreviate}[true]{%
   \ifstrequal{#1}{true}
     {\def\abx at str{abx at sstr}}
     {\def\abx at str{abx at lstr}}}
 
-\DeclareBibliographyOption[boolean]{dateabbrev}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{dateabbrev}[true]{%
   \ifstrequal{#1}{true}
     {\let\abx at bibmonth\blx at imc@bibsstring
      \let\abx at bibseason\blx at imc@bibsstring}
@@ -13736,6 +14183,8 @@
 \DeclareBibliographyOption[string]{language}{%
   \togglefalse{blx at autolangbib}%
   \togglefalse{blx at autolangcite}%
+  \undef\blx at languagename
+  \undef\blx at forcelanguagename
   \ifboolexpr{
     test {\ifstrequal{#1}{auto}}
     or
@@ -13765,7 +14214,7 @@
       {Language '#1' not supported}
       {Failed to find a matching '#1.lbx' file}}}}
 
-\DeclareBibliographyOption[boolean]{clearlang}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{clearlang}[true]{%
   \settoggle{blx at clearlang}{#1}}
 
 \DeclareBibliographyOption[string]{autolang}{%
@@ -13799,12 +14248,8 @@
   \def\blx at hook@initlang{\@quotereset\@ne}%
   \def\blx at hook@endlang{\blx at postpunct}}
 
-\DeclareBibliographyOption[boolean]{indexing}[true]{%
+\DeclareBiblatexOption{global,type,entry}[string]{indexing}[true]{%
   \blx at opt@index{#1}}
-\DeclareTypeOption[boolean]{indexing}[true]{%
-  \blx at opt@index{#1}}
-\DeclareEntryOption[boolean]{indexing}[true]{%
-  \blx at opt@index{#1}}
 \def\blx at opt@index#1{%
   \ifcsdef{blx at opt@index@#1}
     {\csuse{blx at opt@index@#1}}
@@ -13833,7 +14278,7 @@
 \DeclareBibliographyOption[boolean]{sortsets}[true]{%
   \settoggle{blx at sortsets}{#1}}
 
-\DeclareBibliographyOption[boolean]{hyperref}[true]{%
+\DeclareBibliographyOption[string]{hyperref}[true]{%
   \ifcsdef{blx at opt@hyperref@#1}
     {\letcs\blx at hyperref{blx at opt@hyperref@#1}}
     {\blx at err@invopt{hyperref=#1}{}}}
@@ -13929,7 +14374,7 @@
   \def\newblockpunct{%
     \unspace\penalty-9\relax\space}}
 
-\DeclareBibliographyOption[boolean]{pagetracker}[true]{%
+\DeclareBibliographyOption[string]{pagetracker}[true]{%
   \ifcsdef{blx at opt@pagetracker@#1}
     {\csuse{blx at opt@pagetracker@#1}}
     {\blx at err@invopt{pagetracker=#1}{}}}
@@ -13962,7 +14407,7 @@
     \blx at opt@pagetracker at page
   \fi}
 
-\DeclareBibliographyOption[boolean]{citecounter}[true]{%
+\DeclareBibliographyOption[string]{citecounter}[true]{%
   \ifcsdef{blx at opt@citecounter@#1}
     {\csuse{blx at opt@citecounter@#1}}
     {\blx at err@invopt{citecounter=#1}{}}}
@@ -13984,7 +14429,7 @@
   \let\abx at aux@count\@gobbletwo
   \let\abx at aux@fncount\@gobbletwo}
 
-\DeclareBibliographyOption[boolean]{citetracker}[true]{%
+\DeclareBiblatexOption{global,type,entry}[string]{citetracker}[true]{%
   \ifcsdef{blx at opt@citetracker@#1}
     {\csuse{blx at opt@citetracker@#1}}
     {\blx at err@invopt{citetracker=#1}{}}}
@@ -14015,7 +14460,7 @@
     \blx at ifcitesingle{\blx at citetracker@context}{}}%
   \booltrue{citetracker}}
 
-\DeclareBibliographyOption[boolean]{ibidtracker}[true]{%
+\DeclareBiblatexOption{global,type,entry}[string]{ibidtracker}[true]{%
   \ifcsdef{blx at opt@ibidtracker@#1}
     {\csuse{blx at opt@ibidtracker@#1}}
     {\blx at err@invopt{ibidtracker=#1}{}}}
@@ -14044,7 +14489,7 @@
   \let\blx at ibidreset\blx at ibidreset@context
   \booltrue{citetracker}}
 
-\DeclareBibliographyOption[boolean]{idemtracker}[true]{%
+\DeclareBiblatexOption{global,type,entry}[string]{idemtracker}[true]{%
   \ifcsdef{blx at opt@idemtracker@#1}
     {\csuse{blx at opt@idemtracker@#1}}
     {\blx at err@invopt{idemtracker=#1}{}}}
@@ -14073,7 +14518,7 @@
   \let\blx at idemreset\blx at idemreset@context
   \booltrue{citetracker}}
 
-\DeclareBibliographyOption[boolean]{opcittracker}[true]{%
+\DeclareBiblatexOption{global,type,entry}[string]{opcittracker}[true]{%
   \ifcsdef{blx at opt@opcittracker@#1}
     {\csuse{blx at opt@opcittracker@#1}}
     {\blx at err@invopt{opcittracker=#1}{}}}
@@ -14102,7 +14547,7 @@
   \let\blx at opcitreset\blx at opcitreset@context
   \booltrue{citetracker}}
 
-\DeclareBibliographyOption[boolean]{loccittracker}[true]{%
+\DeclareBiblatexOption{global,type,entry}[string]{loccittracker}[true]{%
   \ifcsdef{blx at opt@loccittracker@#1}
     {\csuse{blx at opt@loccittracker@#1}}
     {\blx at err@invopt{loccittracker=#1}{}}}
@@ -14398,96 +14843,79 @@
   \iftoggle{blx at labelnumber}
     {}
     {\setkeys{blx at opt@pre}{defernumbers=false}}}
-\DeclareTypeOption[boolean]{labelnumber}[true]{%
+\DeclareBiblatexOption{type,entry}[boolean]{labelnumber}[true]{%
   \settoggle{blx at labelnumber}{#1}}
 
-\DeclareBibliographyOption[boolean]{labelalpha}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{labelalpha}[true]{%
   \settoggle{blx at labelalpha}{#1}}
-\DeclareTypeOption[boolean]{labelalpha}[true]{%
-  \settoggle{blx at labelalpha}{#1}}
 
-\DeclareBibliographyOption[boolean]{labeltitle}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{labeltitle}[true]{%
   \settoggle{blx at labeltitle}{#1}}
-\DeclareTypeOption[boolean]{labeltitle}[true]{%
-  \settoggle{blx at labeltitle}{#1}}
 
-\DeclareBibliographyOption[boolean]{labeltitleyear}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{labeltitleyear}[true]{%
   \settoggle{blx at labeltitleyear}{#1}}
-\DeclareTypeOption[boolean]{labeltitleyear}[true]{%
-  \settoggle{blx at labeltitleyear}{#1}}
 
-\DeclareBibliographyOption[boolean]{labeldateparts}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{labeldateparts}[true]{%
   \settoggle{blx at labeldateparts}{#1}}
-\DeclareTypeOption[boolean]{labeldateparts}[true]{%
-  \settoggle{blx at labeldateparts}{#1}}
 
-\DeclareBibliographyOption[boolean]{uniquelist}[true]{%
+\DeclareBiblatexOption{global,type}[string]{uniquelist}[true]{%
   \ifcsdef{blx at opt@uniquelist@#1}
     {\letcs\blx at uniquelist{blx at opt@uniquelist@#1}}
     {\blx at err@invopt{uniquelist=#1}{}}}
-\DeclareTypeOption[boolean]{uniquelist}[true]{%
-  \ifcsdef{blx at opt@uniquelist@#1}
-    {\letcs\blx at uniquelist{blx at opt@uniquelist@#1}}
-    {\blx at err@invopt{uniquelist=#1}{}}}
-\DeclareEntryOption[boolean]{uniquelist}[true]{%
-  \ifcsdef{blx at opt@uniquelist@#1}
-    {\letcs\blx at uniquelist{blx at opt@uniquelist@#1}}
-    {\blx at err@invopt{uniquelist=#1}{}}}
-\def\blx at opt@uniquelist at false{0}
-\def\blx at opt@uniquelist at true{1}
-\def\blx at opt@uniquelist at minyear{2}
+\def\blx at opt@uniquelist at false{false}
+\def\blx at opt@uniquelist at true{true}
+\def\blx at opt@uniquelist at minyear{minyear}
 
-\DeclareBibliographyOption[boolean]{uniquename}[true]{%
+\blx at DeclareBackendOption{entry,namelist}[string]{uniquelist}
+
+\DeclareBiblatexOption{global,type}[boolean]{nohashothers}[true]{%
+  \settoggle{blx at nohashothers}{#1}}
+\blx at DeclareBackendOption{entry,namelist}[boolean]{nohashothers}
+
+\DeclareBiblatexOption{global,type}[boolean]{nosortothers}[true]{%
+  \settoggle{blx at nosortothers}{#1}}
+\blx at DeclareBackendOption{entry,namelist}[boolean]{nosortothers}
+
+\DeclareBiblatexOption{global,type}[string]{uniquename}[true]{%
   \ifcsdef{blx at opt@uniquename@#1}
     {\letcs\blx at uniquename{blx at opt@uniquename@#1}}
     {\blx at err@invopt{uniquename=#1}{}}}
-\DeclareTypeOption[boolean]{uniquename}[true]{%
-  \ifcsdef{blx at opt@uniquename@#1}
-    {\letcs\blx at uniquename{blx at opt@uniquename@#1}}
-    {\blx at err@invopt{uniquename=#1}{}}}
-\DeclareEntryOption[boolean]{uniquename}[true]{%
-  \ifcsdef{blx at opt@uniquename@#1}
-    {\letcs\blx at uniquename{blx at opt@uniquename@#1}}
-    {\blx at err@invopt{uniquename=#1}{}}}
-\def\blx at opt@uniquename at false{0}
-\def\blx at opt@uniquename at init{1}
-\def\blx at opt@uniquename at true{2}
-\def\blx at opt@uniquename at full{2}
-\def\blx at opt@uniquename at allinit{3}
-\def\blx at opt@uniquename at allfull{4}
-\def\blx at opt@uniquename at mininit{5}
-\def\blx at opt@uniquename at minfull{6}
+\def\blx at opt@uniquename at false{false}
+\def\blx at opt@uniquename at init{init}
+\def\blx at opt@uniquename at true{full}
+\def\blx at opt@uniquename at full{full}
+\def\blx at opt@uniquename at allinit{allinit}
+\def\blx at opt@uniquename at allfull{allfull}
+\def\blx at opt@uniquename at mininit{mininit}
+\def\blx at opt@uniquename at minfull{minfull}
 
-\DeclareBibliographyOption[boolean]{noroman}[true]{%
+\blx at DeclareBackendOption{entry,namelist,name}[string]{uniquename}
+
+\DeclareBiblatexOption{global,type}[boolean]{noroman}[true]{%
   \settoggle{blx at noroman}{#1}}
-\DeclareTypeOption[boolean]{noroman}[true]{%
-  \settoggle{blx at noroman}{#1}}
-\DeclareEntryOption[boolean]{noroman}[true]{%
-  \settoggle{blx at noroman}{#1}}
+\blx at DeclareBackendOption{entry}[boolean]{noroman}
 
-\DeclareBibliographyOption[boolean]{singletitle}[true]{%
+\DeclareBiblatexOption{global,type}[boolean]{singletitle}[true]{%
   \settoggle{blx at singletitle}{#1}}
-\DeclareTypeOption[boolean]{singletitle}[true]{%
-  \settoggle{blx at singletitle}{#1}}
+\blx at DeclareBackendOption{entry}[boolean]{singletitle}
 
-\DeclareBibliographyOption[boolean]{uniquetitle}[true]{%
+\DeclareBiblatexOption{global,type}[boolean]{uniquetitle}[true]{%
   \settoggle{blx at uniquetitle}{#1}}
-\DeclareTypeOption[boolean]{uniquetitle}[true]{%
-  \settoggle{blx at uniquetitle}{#1}}
+\blx at DeclareBackendOption{entry}[boolean]{uniquetitle}
 
-\DeclareBibliographyOption[boolean]{uniquebaretitle}[true]{%
+\DeclareBiblatexOption{global,type}[boolean]{uniquebaretitle}[true]{%
   \settoggle{blx at uniquebaretitle}{#1}}
-\DeclareTypeOption[boolean]{uniquebaretitle}[true]{%
-  \settoggle{blx at uniquebaretitle}{#1}}
+\blx at DeclareBackendOption{entry}[boolean]{uniquebaretitle}
 
-\DeclareBibliographyOption[boolean]{uniquework}[true]{%
+\DeclareBiblatexOption{global,type}[boolean]{uniquework}[true]{%
   \settoggle{blx at uniquework}{#1}}
-\DeclareTypeOption[boolean]{uniquework}[true]{%
-  \settoggle{blx at uniquework}{#1}}
+\blx at DeclareBackendOption{entry}[boolean]{uniquework}
 
-\DeclareBibliographyOption[boolean]{uniqueprimaryauthor}[true]{%
+\DeclareBiblatexOption{global,type}[boolean]{uniqueprimaryauthor}[true]{%
   \settoggle{blx at uniqueprimaryauthor}{#1}}
+\blx at DeclareBackendOption{entry}[boolean]{uniqueprimaryauthor}
 
+
 \DeclareBibliographyOption[boolean]{defernumbers}[true]{%
   \settoggle{blx at defernumbers}{#1}%
   \iftoggle{blx at defernumbers}
@@ -14498,41 +14926,8 @@
      \let\abx at aux@number\@gobblefive}}
 
 \DeclareBibliographyOption[boolean]{locallabelwidth}[true]{%
-  \blx at key@locallabelwidth{#1}}
+  \blx at key@locallabelwidth{\abx at locallabelwidth}{#1}}
 
-%{<switch>}{<patch>}{<pre>}{<post>}
-\def\blx at patchsection@switch#1#2#3#4{%
-  \AtEndPreamble{%
-    #3%
-    \ifcase#1
-    \or % 1: part
-      \blx at refpatch@part{#2}%
-    \or % 2: chapter
-      \blx at refpatch@chapter{#2}%
-    \or % 3: section
-      \blx at refpatch@sect{section}{#2}{1}%
-    \or % 4: subsection
-      \blx at refpatch@sect{subsection}{#2}{2}%
-    \or % 5: chapter+ = part, chapter
-      \blx at refpatch@part{#2}%
-      \blx at refpatch@chapter{#2}%
-    \or % 6: section+ = part, chapter, section
-      \blx at refpatch@part{#2}%
-      \ifundef\chapter
-        {}
-        {\blx at refpatch@chapter{#2}}%
-      \blx at refpatch@sect{section}{#2}{1}%
-    \or % 7: subsection+ = part, chapter, section, subsection
-      \blx at refpatch@part{#2}%
-      \ifundef\chapter
-        {}
-        {\blx at refpatch@chapter{#2}}%
-      \blx at refpatch@sect{section}{#2}{1}%
-      \blx at refpatch@sect{subsection}{#2}{2}%
-    \fi
-    #4%
-  }%
-}
 
 \DeclareBibliographyOption[string]{refsection}{%
   \ifcsdef{blx at opt@refsection@#1}
@@ -14598,45 +14993,37 @@
 
 % Name field options
 \def\do#1{%
-  \DeclareBibliographyOption[boolean]{use#1}[true]{%
-    \settoggle{blx at use#1}{##1}}
-  \DeclareTypeOption[boolean]{use#1}[true]{%
-    \settoggle{blx at use#1}{##1}}
-  \DeclareEntryOption[boolean]{use#1}[true]{%
+  \DeclareBiblatexOption{global,type,entry}[boolean]{use#1}[true]{%
     \settoggle{blx at use#1}{##1}}}
 \abx at donames
 
 % Entry options
-\DeclareBibliographyOption[boolean]{useprefix}[true]{%
+\DeclareBiblatexOption{global,type,entry,namelist,name}[boolean]{useprefix}[true]{%
   \settoggle{blx at useprefix}{#1}}
-\DeclareTypeOption[boolean]{useprefix}[true]{%
-  \settoggle{blx at useprefix}{#1}}
-\DeclareEntryOption[boolean]{useprefix}[true]{%
-  \settoggle{blx at useprefix}{#1}}
 
-\DeclareTypeOption[boolean]{skipbib}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{skipbib}[true]{%
   \settoggle{blx at skipbib}{#1}}
-\DeclareEntryOption[boolean]{skipbib}[true]{%
-  \settoggle{blx at skipbib}{#1}}
 
-\DeclareTypeOption[boolean]{skipbiblist}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{skipbiblist}[true]{%
   \settoggle{blx at skipbiblist}{#1}}
-\DeclareEntryOption[boolean]{skipbiblist}[true]{%
-  \settoggle{blx at skipbiblist}{#1}}
 
-\DeclareTypeOption[boolean]{skiplab}[true]{%
+\DeclareBiblatexOption{global,type,entry}[boolean]{skiplab}[true]{%
   \settoggle{blx at skiplab}{#1}}
-\DeclareEntryOption[boolean]{skiplab}[true]{%
-  \settoggle{blx at skiplab}{#1}}
 
-\DeclareTypeOption[boolean]{dataonly}[true]{%
+\DeclareBiblatexOption{global,type}[boolean]{dataonly}[true]{%
   \settoggle{blx at skipbib}{#1}%
   \settoggle{blx at skipbiblist}{#1}%
   \settoggle{blx at skiplab}{#1}}
-\DeclareEntryOption[boolean]{dataonly}[true]{%
-  \settoggle{blx at skipbib}{#1}%
-  \settoggle{blx at skipbiblist}{#1}%
-  \settoggle{blx at skiplab}{#1}}
+% the entry option is resolved by Biber
+\blx at DeclareBackendOption{entry}[boolean]{dataonly}
+% This is handled in a special way by by biber. It indicates what to set for various options
+% if the dataonly option is "true". If biber finds dataonly=false
+% in an entry, the booleans here will be reversed (skip*) and the unique* options (which are not
+% booleans) will be ignored, defaulting to higher scope values. biber assumes
+% that \blx at bcf@backendin at entry@* options are boolean options as otherwise, negating them
+% per-entry makes little sense and it is not clear what to do with such lower-scope overrides.
+\gdef\blx at bcf@backendin at entry@dataonly{uniquename=false,uniquelist=false,%
+  skipbib=true,skipbiblist=true,skiplab=true}
 
 % Option processor/scheduler
 \DeclareOption*{%
@@ -14728,19 +15115,19 @@
   \def\do#1{\iftoggle{abx at bool@#1inits}{\toggletrue{abx at bool@xinits}}{}}
   \abx at donameparts
   \iftoggle{abx at bool@xinits}
-    {\ifnumequal\blx at uniquename\blx at opt@uniquename at full
+    {\ifdefstrequal\blx at uniquename\blx at opt@uniquename at full
        {\blx at warn@conflopt{%
           '<namepart>inits' conflicts with 'uniquename=full'.\MessageBreak
           Setting 'uniquename=init'}%
         \setkeys{blx at opt@pre}{uniquename=init}}
        {}%
-     \ifnumequal\blx at uniquename\blx at opt@uniquename at allfull
+     \ifdefstrequal\blx at uniquename\blx at opt@uniquename at allfull
        {\blx at warn@conflopt{%
           '<namepart>inits' conflicts with 'uniquename=allfull'.\MessageBreak
           Setting 'uniquename=allinit}%
         \setkeys{blx at opt@pre}{uniquename=allinit}}
        {}%
-     \ifnumequal\blx at uniquename\blx at opt@uniquename at minfull
+     \ifdefstrequal\blx at uniquename\blx at opt@uniquename at minfull
        {\blx at warn@conflopt{%
           '<namepart>inits' conflicts with 'uniquename=minfull'.\MessageBreak
           Setting 'uniquename=mininit}%
@@ -14748,7 +15135,7 @@
        {}}
     {}%
   \nottoggle{blx at labeldateparts}
-    {\ifnumequal\blx at uniquelist\blx at opt@uniquelist at minyear
+    {\ifdefstrequal\blx at uniquelist\blx at opt@uniquelist at minyear
        {\blx at warn@conflopt{%
           'uniquelist=minyear' requires 'labeldateparts'.\MessageBreak
           Setting 'uniquelist=true'}%
@@ -14886,5 +15273,6 @@
     \let\do\noexpand}}
 
 \def\BiblatexHungarianWarningOff{\global\let\lbx at hu@loadinfo\@empty}
+\def\BiblatexLatvianWarningOff{\global\let\lbx at lv@loadinfo\@empty}
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-bibtex.def	2019-08-24 20:53:26 UTC (rev 51953)
@@ -54,7 +54,7 @@
 
 \def\blx at sig@bib{@Comment{$ biblatex control file $}}
 \edef\blx at ver@bib{%
-  @Comment{$ biblatex bbl format version \blx at bblversion\space $}}
+  @Comment{$ biblatex bcf format version \blx at bcfversion\space $}}
 
 \let\blx at sig@aux\blx at sig@bbl
 \let\blx at ver@aux\blx at ver@bbl
@@ -374,7 +374,7 @@
   \ifcsdef{blx at setp@\the\c at refsection @#1}
     {\blx at citation@set{#1}}
     {\blx at citation@entry{#1}}}
-  
+
 \def\blx at citation@xref#1{%
   \begingroup
   \edef\blx at tempa{blx at refp@\the\c at refsection @%
@@ -395,6 +395,118 @@
       \csname blx at refc@\the\c at refsection @#1\endcsname}\blx at msg@cundef
   \fi}
 
+% refcontexts are out, but we can try to save labelprefix
+
+% Luckily all refcontext names use \blx at refcontext@labelprefix, so if we
+% don't modify that macro, we don't actually change the refcontext.
+% Remember that \blx at refcontext@labelprefix contains a hash of the labelprefix
+% and that \blx at refcontext@labelprefix at real contains the value.
+% Effectively we always stay in \blx at sorting/global/global//global/global,
+% and additionally carry around the labelprefix value
+% in \blx at refcontext@labelprefix at 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.
+% One example is that for BibTeX 'resetnumbers' is explicitly required,
+% while Biber's labelprefix implementation sets 'resetnumbers' implicitly.
+\define at key{blx at refcontext}{labelprefix}{%
+  \xdef\blx at refcontext@labelprefix at real{#1}%
+  \iftoggle{blx at defernumbers}
+    {}%
+    {\iftoggle{blx at labelnumber}
+       {\blx at warning{%
+          Option 'labelprefix' requires global\MessageBreak
+          'defernumbers=true'}}
+       {}}%
+  \ifundef{\blx at bibtexwarn@labelprefix at used}
+    {\blx at warning@noline{%
+       The option 'labelprefix' may need explicit\MessageBreak
+       'resetnumbers' for split bibliographies\MessageBreak
+       and is overall restricted when used with BibTeX.\MessageBreak
+       Consider using Biber instead}%
+     \global\let\blx at bibtexwarn@labelprefix at used\@empty}
+    {}}
+
+\def\blx at warn@bibtexrefcontext#1{%
+  \blx at warning{%
+    The refcontext option\MessageBreak
+    '#1'\MessageBreak
+    is not supported by the BibTeX backend.\MessageBreak
+    Consider switching to Biber instead.\MessageBreak
+    The option will be ignored}}
+
+\def\blx at bibtexrefcontext@disable#1{%
+  \define at key{blx at refcontext}{#1}{%
+    \blx at warn@bibtexrefcontext{#1}}}
+
+\forcsvlist{\blx at bibtexrefcontext@disable}{%
+  nametemplates,sorting,sortingnamekeytemplatename,uniquenametemplatename,
+  labelalphanametemplatename}
+
+\def\blx at assignrefcontext@disable#1{%
+  \blx at warning{%
+    BibTeX does not support refcontext assignments with\MessageBreak
+    '\string\assignrefcontext#1'.\MessageBreak
+    Consider using Biber instead.\MessageBreak
+    Ignoring the refconext assignment}}
+
+\def\blx at assignrefcontextkeyws[#1][#2]#3{%
+  \blx at assignrefcontext@disable{keyws}}
+\def\blx at assignrefcontextcats[#1][#2]#3{%
+  \blx at assignrefcontext@disable{cats}}
+\def\blx at assignrefcontextentries[#1][#2]#3{%
+  \blx at assignrefcontext@disable{entries}}
+
+\apptocmd{\blx at setdefaultrefcontext}
+  {\csxdef{blx at assignedlabelprefix@\the\c at refsection @#1}{%
+     \blx at refcontext@labelprefix at real}}
+  {}
+  {\blx at error
+     {Failed to patch '\string\blx at setdefaultrefcontext'}
+     {Patching '\string\blx at setdefaultrefcontext' failed for some reason.
+      \MessageBreak
+      Please report this bug}}
+
+\def\abx at aux@defaultlabelprefix#1#2#3{%
+  \csgdef{blx at assignedlabelprefix@#1@#2}{#3}}
+
+\apptocmd{\blx at bbl@entry}
+  {\ifcsundef{blx at assignedlabelprefix@\the\c at refsection @\thefield{entrykey}}
+     {}
+     {\blx at bbl@addfield{labelprefix}{%
+        \csuse{blx at assignedlabelprefix@\the\c at refsection
+          @\thefield{entrykey}}}}}
+  {}
+  {\blx at error
+     {Failed to patch '\string\blx at bbl@entry'}
+     {Patching '\string\blx at bbl@entry' failed for some reason.
+      \MessageBreak
+      Please report this bug}}
+
+\AtEndDocument{%
+  % always add default labelprefix declarations to .aux
+  \iftoggle{blx at bbldone}
+    {\def\do#1{%
+       \begingroup
+       \def\do##1{%
+         \blx at auxwrite\@mainaux{}{\string\abx at aux@defaultlabelprefix{#1}{##1}{%
+           \csuse{blx at assignedlabelprefix@#1@##1}}}}%
+       \dolistcsloop{blx at defaultrefcontexts@#1}%
+       \endgroup}
+     \dolistloop\blx at allrefsections}
+    {}}
+
+
+% Translate sorting schemes to BibTeX form
+\def\blx at sorting@none{0}
+\def\blx at sorting@nty{1}
+\def\blx at sorting@nyt{2}
+\def\blx at sorting@nyvt{3}
+\def\blx at sorting@anyt{12}
+\def\blx at sorting@anyvt{13}
+\def\blx at sorting@ynt{21}
+\def\blx at sorting@ydnt{22}
+\def\blx at sorting@debug{99}
+
 % Control file
 
 \edef\blx at ctrl{%
@@ -401,7 +513,7 @@
   \blx at msg@bib
   @Control\string{biblatex-control,\blx at nl
   \space\space options = \string{%
-    \blx at bblversion:%
+    \blx at bcfversion:%
     \noexpand\iftoggle{blx at debug}{1}{0}:%
     \noexpand\iftoggle{blx at bibtex8}{1}{0}:%
     \noexpand\iftoggle{blx at sortcase}{1}{0}:%
@@ -415,6 +527,10 @@
     \noexpand\csuse{blx at sorting@\noexpand\blx at sorting}:%
     \noexpand\blx at maxcitenames:%
     \noexpand\blx at mincitenames:%
+    \noexpand\blx at maxsortnames:%
+    \noexpand\blx at minsortnames:%
+    \noexpand\iftoggle{blx at nohashothers}{1}{0}:%
+    \noexpand\iftoggle{blx at nosortothers}{1}{0}:%
     \noexpand\blx at maxalphanames:%
     \noexpand\blx at minalphanames:%
     \noexpand\blx at maxline:%
@@ -433,18 +549,6 @@
   \blx at auxwrite\blx at write{}{\blx at ctrl}%
   \immediate\closeout\blx at write}
 
-% Translate sorting schemes to BibTeX form
-
-\def\blx at sorting@none{0}
-\def\blx at sorting@nty{1}
-\def\blx at sorting@nyt{2}
-\def\blx at sorting@nyvt{3}
-\def\blx at sorting@anyt{12}
-\def\blx at sorting@anyvt{13}
-\def\blx at sorting@ynt{21}
-\def\blx at sorting@ydnt{22}
-\def\blx at sorting@debug{99}
-
 % Disable some interfaces
 
 \renewrobustcmd*{\DeclareSortingScheme}[3][]{}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-compat.def	2019-08-24 20:53:26 UTC (rev 51953)
@@ -306,8 +306,6 @@
     Please use '\string\mkdaterangeisoextra'}%
   \mkdaterangeisoextra}
 
-\newrobustcmd*{\bibdatedash}{\bibrangedash}%LEGACY(<3.5)
-
 % biblatex < 3.8
 \define at key{blx at refcontext}{sortingnamekeyscheme}{%
   \blx at warning@noline{'sortingnamekeyscheme' is deprecated.\MessageBreak

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-dm.def	2019-08-24 20:53:26 UTC (rev 51953)
@@ -407,6 +407,7 @@
   customd,
   custome,
   customf,
+  dataset,
   inbook,
   incollection,
   inproceedings,
@@ -716,8 +717,7 @@
   year}
 
 \DeclareDatamodelEntryfields[set]{
-  entryset,
-  crossref}
+  entryset}
 
 \DeclareDatamodelEntryfields[article]{
   addendum,
@@ -1035,6 +1035,30 @@
   volume,
   volumes}
 
+\DeclareDatamodelEntryfields[dataset]{
+  addendum,
+  author,
+  doi,
+  edition,
+  editor,
+  editortype,
+  eprint,
+  eprintclass,
+  eprinttype,
+  language,
+  location,
+  note,
+  number,
+  organization,
+  publisher,
+  pubstate,
+  series,
+  subtitle,
+  title,
+  titleaddon,
+  type,
+  version}
+
 \DeclareDatamodelEntryfields[manual]{
   addendum,
   author,
@@ -1063,7 +1087,7 @@
   type,
   version}
 
-\DeclareDatamodelEntryfields[misc]{
+\DeclareDatamodelEntryfields[misc,software]{
   addendum,
   author,
   doi,
@@ -1403,7 +1427,6 @@
 \DeclareDatamodelConstraints[set]{
   \constraint[type=mandatory]{
     \constraintfield{entryset}
-    \constraintfield{crossref}
   }
 }
 
@@ -1456,6 +1479,12 @@
   }
 }
 
+\DeclareDatamodelConstraints[dataset]{
+  \constraint[type=mandatory]{
+    \constraintfield{title}
+  }
+}
+
 \DeclareDatamodelConstraints[manual]{
   \constraint[type=mandatory]{
     \constraintfield{title}
@@ -1462,7 +1491,7 @@
   }
 }
 
-\DeclareDatamodelConstraints[misc]{
+\DeclareDatamodelConstraints[misc,software]{
   \constraint[type=mandatory]{
     \constraintfield{title}
   }
@@ -1471,7 +1500,11 @@
 \DeclareDatamodelConstraints[online]{
   \constraint[type=mandatory]{
     \constraintfield{title}
-    \constraintfield{url}
+    \constraintfieldsor{
+      \constraintfield{url}
+      \constraintfield{doi}
+      \constraintfield{eprint}
+    }
   }
 }
 

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/blx-unicode.def	2019-08-24 20:53:26 UTC (rev 51953)
@@ -45,32 +45,71 @@
   \ifblank{#3}
     {\blx at normrange@endash#1––&}
     {\ifblank{#2}
-       {\blx at range@out at value{#1\bibrangedash}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+            \noexpand\bibrangedash}}%
+        \blx at tempc}
        {\ifblank{#1}
-          {\blx at range@out at value{\bibrangedash#2}}
-          {\blx at range@process{#1}{#2}}}}}
+          {\begingroup
+           \edef\blx at tempc{\endgroup
+             \blx at range@out at value{%
+               \noexpand\bibrangedash
+               \expandonce\blx at range@out at item@process{%
+                 \unexpanded{#2}}}}%
+           \blx at tempc}
+          {\blx at pages@process{#1}{#2}}}}}
 
 \def\blx at normrange@endash#1–#2–#3&{%
   \ifblank{#3}
     {\blx at normrange@hyphen#1--&}
     {\ifblank{#2}
-       {\blx at range@out at value{#1\bibrangedash}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}%
+            \noexpand\bibrangedash}}%
+        \blx at tempc}
        {\ifblank{#1}
-          {\blx at range@out at value{\bibrangedash#2}}
-          {\blx at range@process{#1}{#2}}}}}
+          {\begingroup
+           \edef\blx at tempc{\endgroup
+             \blx at range@out at value{%
+               \noexpand\bibrangedash
+               \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+           \blx at tempc}
+          {\blx at pages@process{#1}{#2}}}}}
 
 \def\blx at firstpage@range#1\bibrangedash#2\bibrangedash#3&{%
   \ifblank{#3}
     {\blx at firstpage@endash#1––&}
     {\ifblank{#1}
-       {\blx at range@out at value{\bibrangedash#2}}
-       {\blx at range@out at value{#1}}}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \noexpand\bibrangedash
+            \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+        \blx at tempc}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+        \blx at tempc}}}
 
 \def\blx at firstpage@endash#1–#2–#3&{%
   \ifblank{#3}
     {\blx at firstpage@hyphen#1--&}
     {\ifblank{#1}
-       {\blx at range@out at value{\bibrangedash#2}}
-       {\blx at range@out at value{#1}}}}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \noexpand\bibrangedash
+            \expandonce\blx at range@out at item@process{\unexpanded{#2}}}}%
+        \blx at tempc}
+       {\begingroup
+        \edef\blx at tempc{\endgroup
+          \blx at range@out at value{%
+            \expandonce\blx at range@out at item@process{\unexpanded{#1}}}}%
+        \blx at tempc}}}
 
 \endinput

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-comp.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -70,8 +70,8 @@
   \ifnameundef{labelname}
     {\setunit{%
        \global\booltrue{cbx:parens}%
-       \extpostnotedelim\bibopenparen}}
-    {\setunit{\postnotedelim}}%
+       \printdelim{extpostnotedelim}\bibopenparen}}
+    {\setunit{\printdelim{postnotedelim}}}%
   \printfield{postnote}%
   \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
     {\setunit{}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ibid.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -72,8 +72,8 @@
        {\bibcloseparen}
        {}}
     {\ifbool{cbx:parens}
-       {\postnotedelim}
-       {\extpostnotedelim\bibopenparen}%
+       {\printdelim{postnotedelim}}
+       {\printdelim{extpostnotedelim}\bibopenparen}%
      \printfield{postnote}\bibcloseparen}}
 
 \DeclareCiteCommand{\cite}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-icomp.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -90,7 +90,7 @@
 \newbibmacro*{cite:postnote}{%
   \ifbool{cbx:loccit}
     {}
-    {\setunit{\postnotedelim}%
+    {\setunit{\printdelim{postnotedelim}}%
      \printfield{postnote}}}
 
 \newbibmacro*{textcite:postnote}{%
@@ -99,8 +99,8 @@
     {\ifnameundef{labelname}
        {\setunit{%
           \global\booltrue{cbx:parens}%
-          \extpostnotedelim\bibopenparen}}
-       {\setunit{\postnotedelim}}%
+          \printdelim{extpostnotedelim}\bibopenparen}}
+       {\setunit{\printdelim{postnotedelim}}}%
      \printfield{postnote}}%
   \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
     {\setunit{}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-tcomp.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -70,10 +70,10 @@
 
 \renewbibmacro*{textcite:postnote}{%
   \ifbool{cbx:parens}
-    {\setunit{\postnotedelim}}
+    {\setunit{\printdelim{postnotedelim}}}
     {\setunit{%
        \global\booltrue{cbx:parens}%
-       \extpostnotedelim\bibopenparen}}%
+       \printdelim{extpostnotedelim}\bibopenparen}}%
   \printfield{postnote}%
   \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
     {\setunit{}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle-ticomp.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -80,10 +80,10 @@
 
 \renewbibmacro*{textcite:postnote}{%
   \ifbool{cbx:parens}
-    {\setunit{\postnotedelim}}
+    {\setunit{\printdelim{postnotedelim}}}
     {\setunit{%
        \global\booltrue{cbx:parens}%
-       \extpostnotedelim\bibopenparen}}%
+       \printdelim{extpostnotedelim}\bibopenparen}}%
   \printfield{postnote}%
   \ifthenelse{\value{multicitecount}=\value{multicitetotal}}
     {\setunit{}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authortitle.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -44,8 +44,8 @@
        {\bibcloseparen}
        {}}
     {\ifbool{cbx:parens}
-       {\postnotedelim}
-       {\extpostnotedelim\bibopenparen}%
+       {\printdelim{postnotedelim}}
+       {\printdelim{extpostnotedelim}\bibopenparen}%
      \printfield{postnote}\bibcloseparen}}
 
 \DeclareCiteCommand{\cite}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear-ibid.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -102,8 +102,8 @@
        {\bibcloseparen}
        {}}
     {\ifbool{cbx:parens}
-       {\postnotedelim}
-       {\extpostnotedelim\bibopenparen}%
+       {\printdelim{postnotedelim}}
+       {\printdelim{extpostnotedelim}\bibopenparen}%
      \printfield{postnote}\bibcloseparen}}
 
 \DeclareCiteCommand{\cite}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/authoryear.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -70,8 +70,8 @@
        {\bibcloseparen}
        {}}
     {\ifbool{cbx:parens}
-       {\setunit{\postnotedelim}}
-       {\setunit{\extpostnotedelim\bibopenparen}}%
+       {\setunit{\printdelim{postnotedelim}}}
+       {\setunit{\printdelim{extpostnotedelim}\bibopenparen}}%
      \printfield{postnote}\bibcloseparen}}
 
 \DeclareCiteCommand{\cite}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/draft.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -27,7 +27,7 @@
        {\bibcloseparen}
        {}}
     {\ifbool{cbx:parens}
-       {\setunit{\postnotedelim}}
+       {\setunit{\printdelim{postnotedelim}}}
        {\setunit{\addspace\bibopenparen}}%
      \printfield{postnote}\bibcloseparen}}
 

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-ibid.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -86,7 +86,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{cite:postnote:ibidpage}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-inote.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -87,7 +87,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{cite:postnote:ibidpage}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-note.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -81,7 +81,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{postnote}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad1.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -87,7 +87,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{cite:postnote:ibidpage}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad2.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -94,7 +94,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{cite:postnote:ibidpage}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose-trad3.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -82,7 +82,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{cite:postnote:ibidpage}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/cbx/verbose.cbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -75,7 +75,7 @@
       {\usebibmacro{cite:postnote:pages}}
       {\usebibmacro{postnote}}}
   \providebibmacro*{cite:postnote:pages}{%
-    \setunit{\postnotedelim}%
+    \setunit{\printdelim{postnotedelim}}%
     \bibstring{thiscite}%
     \setunit{\addspace}%
     \printfield{postnote}}}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/danish.lbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -74,27 +74,27 @@
   references       = {{Litteraturhenvisninger}{Litteratur}},
   shorthands       = {{Forkortelser}{Forkortelser}},
   editor           = {{redakt\o r}{red\adddot}},
-  editors          = {{redakt\o rer}{redd\adddot}},
+  editors          = {{redakt\o rer}{red\adddot}},
   compiler         = {{kompilator}{kompilator}},
   compilers        = {{kompilatorer}{kompilatorer}},
   redactor         = {{medredakt\o r}{medred\adddot}},
-  redactors        = {{medredakt\o rer}{medredd\adddot}},
+  redactors        = {{medredakt\o rer}{medred\adddot}},
   reviser          = {{revision}{rev\adddot}},
-  revisers         = {{revision}{revv\adddot}},
+  revisers         = {{revision}{rev\adddot}},
   founder          = {{stifter}{stifter}},
   founders         = {{stiftere}{stiftere}},
-  continuator      = {{videref{\o}rer}{videref\adddot}},
-  continuators     = {{videref{\o}rere}{videreff\adddot}},
+  continuator      = {{videref\o rer}{videref\adddot}},
+  continuators     = {{videref\o rere}{videref\adddot}},
   collaborator     = {{medarbejder}{medarb\adddot}},
-  collaborators    = {{medarbejdere}{medarbb\adddot}},
+  collaborators    = {{medarbejdere}{medarb\adddot}},
   translator       = {{overs\ae tter}{overs\adddot}},
-  translators      = {{overs\ae ttere}{overss\adddot}},
+  translators      = {{overs\ae ttere}{overs\adddot}},
   commentator      = {{kommentator}{komm\adddot}},
   commentators     = {{kommentatorer}{komm\adddot}},
   annotator        = {{kommentator}{komm\adddot}},
   annotators       = {{kommentatorer}{komm\adddot}},
   commentary       = {{kommentar}{komm\adddot}},
-  annotations      = {{annoteringer}{ann.\adddot}},
+  annotations      = {{annoteringer}{ann\adddot}},
   introduction     = {{indledning}{indl\adddot}},
   foreword         = {{forord}{forord}},
   afterword        = {{efterord}{efterord}},
@@ -101,95 +101,95 @@
   editortr         = {{redakt\o r og overs\ae tter}%
                       {red\adddotspace og overs\adddot}},
   editorstr        = {{redakt\o rer og overs\ae ttere}%
-                      {redd\adddotspace og overss\adddot}},
+                      {red\adddotspace og overs\adddot}},
   editorco         = {{redakt\o r og kommentator}
                       {red\adddotspace og komm\adddot}},
   editorsco        = {{redakt\o rer og kommentatorer}
-                      {redd\adddotspace og komm\adddot}},
+                      {red\adddotspace og komm\adddot}},
   editoran         = {{redakt\o r og kommentator}%
                       {red\adddotspace og komm\adddot}},
   editorsan        = {{redakt\o rer og kommentatorer}%
-                      {redd\adddotspace og komm\adddot}},
+                      {red\adddotspace og komm\adddot}},
   editorin         = {{redaktion og indledning}%
                       {red\adddotspace og indl\adddot}},
   editorsin        = {{redaktion og indledning}%
-                      {redd\adddotspace og indl\adddot}},
+                      {red\adddotspace og indl\adddot}},
   editorfo         = {{redaktion og forord}%
                       {red\adddotspace og forord}},
   editorsfo        = {{redaktion og forord}%
-                      {redd\adddotspace og forord}},
+                      {red\adddotspace og forord}},
   editoraf         = {{redaktion og efterord}%
                       {red\adddotspace og efterord}},
   editorsaf        = {{redaktion og efterord}%
-                      {redd\adddotspace og efterord}},
+                      {red\adddotspace og efterord}},
   editortrco       = {{redakt\o r, overs\ae tter og kommentator}%
                       {red.,\addabbrvspace overs\adddotspace og komm\adddot}},
   editorstrco      = {{redakt\o rer, overs\ae ttere og kommentatorer}%
-                      {redd.,\addabbrvspace overss\adddotspace og komm\adddot}},
+                      {red.,\addabbrvspace overs\adddotspace og komm\adddot}},
   editortran       = {{redakt\o r, overs\ae tter og kommentator}%
                       {red.,\addabbrvspace overs\adddotspace og komm\adddot}},
   editorstran      = {{redakt\o rer, overs\ae ttere og kommentatorer}%
-                      {redd.,\addabbrvspace overss\adddotspace og komm\adddot}},
+                      {red.,\addabbrvspace overs\adddotspace og komm\adddot}},
   editortrin       = {{redaktion, overs\ae ttelse og indledning}%
                       {red.,\addabbrvspace overs\adddotspace og indl\adddot}},
   editorstrin      = {{redaktion, overs\ae ttelse og indledning}%
-                      {redd.,\addabbrvspace overs\adddotspace og indl\adddot}},
+                      {red.,\addabbrvspace overs\adddotspace og indl\adddot}},
   editortrfo       = {{redaktion, overs\ae ttelse og forord}%
                       {red.,\addabbrvspace overs\adddotspace og forord}},
   editorstrfo      = {{redaktion, overs\ae ttelse og forord}%
-                      {redd.,\addabbrvspace overs\adddotspace og forord}},
+                      {red.,\addabbrvspace overs\adddotspace og forord}},
   editortraf       = {{redaktion, overs\ae ttelse og efterord}%
                       {red.,\addabbrvspace overs\adddotspace og efterord}},
   editorstraf      = {{redaktion, overs\ae ttelse og efterord}%
-                      {redd.,\addabbrvspace overs\adddotspace og efterord}},
+                      {red.,\addabbrvspace overs\adddotspace og efterord}},
   editorcoin       = {{redaktion, kommentarer og indledning}%
                       {red.,\addabbrvspace komm\adddotspace og indl\adddot}},
   editorscoin      = {{redaktion, kommentarer og indledning}%
-                      {redd.,\addabbrvspace komm\adddotspace og indl\adddot}},
+                      {red.,\addabbrvspace komm\adddotspace og indl\adddot}},
   editorcofo       = {{redaktion, kommentarer og forord}%
                       {red.,\addabbrvspace komm\adddotspace og forord}},
   editorscofo      = {{redaktion, kommentarer og forord}%
-                      {redd.,\addabbrvspace komm\adddotspace og forord}},
+                      {red.,\addabbrvspace komm\adddotspace og forord}},
   editorcoaf       = {{redaktion, kommentarer og efterord}%
                       {red.,\addabbrvspace komm\adddotspace og efterord}},
   editorscoaf      = {{redaktion, kommentarer og efterord}%
-                      {redd.,\addabbrvspace komm\adddotspace og efterord}},
+                      {red.,\addabbrvspace komm\adddotspace og efterord}},
   editoranin       = {{redaktion, annoteringer og indledning}%
                       {red.,\addabbrvspace ann\adddotspace og indl\adddot}},
   editorsanin      = {{redaktion, \adddotspace og indledning}%
-                      {redd.,\addabbrvspace ann\adddotspace og indl\adddot}},
+                      {red.,\addabbrvspace ann\adddotspace og indl\adddot}},
   editoranfo       = {{redaktion, \adddotspace og forord}%
                       {red.,\addabbrvspace ann\adddotspace og forord}},
   editorsanfo      = {{redaktion, annoteringer og forord}%
-                      {redd.,\addabbrvspace ann\adddotspace og forord}},
+                      {red.,\addabbrvspace ann\adddotspace og forord}},
   editoranaf       = {{redaktion, annoteringer og efterord}%
                       {red.,\addabbrvspace ann\adddotspace og efterord}},
   editorsanaf      = {{redaktion, annoteringer og efterord}%
-                      {redd.,\addabbrvspace ann\adddotspace og efterord}},
+                      {red.,\addabbrvspace ann\adddotspace og efterord}},
   editortrcoin     = {{redaktion, overs\ae ttelse, kommentarer og indledning}%
                       {red.,\addabbrvspace overs., komm\adddotspace og indl\adddot}},
   editorstrcoin    = {{redaktion, overs\ae ttelse, kommentarer og indledning}%
-                      {redd.,\addabbrvspace overs., komm\adddotspace og indl\adddot}},
+                      {red.,\addabbrvspace overs., komm\adddotspace og indl\adddot}},
   editortrcofo     = {{redaktion, overs\ae ttelse, kommentarer og forord}%
                       {red.,\addabbrvspace overs., komm\adddotspace og forord}},
   editorstrcofo    = {{redaktion, overs\ae ttelse, kommentarer og forord}%
-                      {redd.,\addabbrvspace overs., komm\adddotspace og forord}},
+                      {red.,\addabbrvspace overs., komm\adddotspace og forord}},
   editortrcoaf     = {{redaktion, overs\ae ttelse, kommentarer og efterord}%
                       {red.,\addabbrvspace overs., komm\adddotspace og efterord}},
   editorstrcoaf    = {{redaktion, overs\ae ttelse, kommentarer og efterord}%
-                      {redd.,\addabbrvspace overs., komm\adddotspace og efterord}},
+                      {red.,\addabbrvspace overs., komm\adddotspace og efterord}},
   editortranin     = {{redaktion, overs\ae ttelse, annoteringer og indledning}%
                       {red.,\addabbrvspace overs., ann\adddotspace og indl\adddot}},
   editorstranin    = {{redaktion, overs\ae ttelse, annoteringer og indledning}%
-                      {redd.,\addabbrvspace overs., ann\adddotspace og indl\adddot}},
+                      {red.,\addabbrvspace overs., ann\adddotspace og indl\adddot}},
   editortranfo     = {{redaktion, overs\ae ttelse, annoteringer og forord}%
                       {red.,\addabbrvspace overs., ann\adddotspace og forord}},
   editorstranfo    = {{redaktion, overs\ae ttelse, annoteringer og forord}%
-                      {redd.,\addabbrvspace overs., ann\adddotspace og forord}},
+                      {red.,\addabbrvspace overs., ann\adddotspace og forord}},
   editortranaf     = {{redaktion, overs\ae ttelse, annoteringer og efterord}%
                       {red.,\addabbrvspace overs., ann\adddotspace og efterord}},
   editorstranaf    = {{redaktion, overs\ae ttelse, annoteringer og efterord}%
-                      {redd.,\addabbrvspace overs., ann\adddotspace og efterord}},
+                      {red.,\addabbrvspace overs., ann\adddotspace og efterord}},
   translatorco     = {{overs\ae ttelse og kommentarer}%
                       {overs\adddotspace og komm\adddot}},
   translatorsco    = {{overs\ae ttelse og kommentarer}%
@@ -235,14 +235,14 @@
   translatorsanaf  = {{overs\ae ttelse, annoteringer og efterord}%
                       {overs., ann\adddotspace og efterord}},
   organizer        = {{organisator}{org\adddot}},
-  organizers       = {{organisatorer}{orgg\adddot}},
+  organizers       = {{organisatorer}{org\adddot}},
   byorganizer      = {{organiseret af}{org\adddotspace av}},
   byauthor         = {{af}{af}},
-  byeditor         = {{udgivet af}{udg\adddotspace af}},
+  byeditor         = {{redigeret af}{red\adddotspace af}},
   bycompiler       = {{kompileret af}{komp\adddotspace af}},
   byredactor       = {{bearbejdet af}{bearb\adddotspace af}},
   byreviser        = {{revideret af}{rev\adddotspace af}},
-  byreviewer       = {{bed\o mt af}{bed\o mt af}},
+  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}},
@@ -255,52 +255,52 @@
   withintroduction = {{med indledning af}{m\adddotspace indl\adddot\ af}},
   withforeword     = {{med forord af}{m\adddotspace forord af}},
   withafterword    = {{med efterord af}{m\adddotspace efterord af}},
-  byeditortr       = {{udgivet og oversat \lbx at lfromlang\ af}%
-                      {udg\adddotspace og overs\adddot \lbx at sfromlang\ af}},
-  byeditorco       = {{udgivet og kommenteret af}%
-                      {udg\adddotspace og komm\adddot\ af}},
-  byeditoran       = {{udgivet med annoteringer af}%
-                      {udg\adddotspace m\adddotspace ann\adddotspace af}},
-  byeditorin       = {{udgivet med indledning af}%
-                      {udg\adddotspace med indl\adddot\ af}},
-  byeditorfo       = {{udgivet med forord af}%
-                      {udg\adddotspace med forord af}},
-  byeditoraf       = {{udgivet med efterord af}%
-                      {udg\adddotspace med efterord af}},
-  byeditortrco     = {{udgivet, oversat \lbx at lfromlang\ og kommenteret af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og komm\adddot\ af}},
-  byeditortran     = {{udgivet, oversat \lbx at lfromlang\ og annoteret af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og ann\adddot\ af}},
-  byeditortrin     = {{udgivet, oversat \lbx at lfromlang\ og med indledning af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og indl\adddot\ af}},
-  byeditortrfo     = {{udgivet, oversat \lbx at lfromlang\ og med forord af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og forord af}},
-  byeditortraf     = {{udgivet, oversat \lbx at lfromlang\ og med efterord af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og efterord af}},
-  byeditorcoin     = {{udgivet, kommenteret og med indledning af}%
-                      {udg.,\addabbrvspace komm\adddot\ og indl\adddotspace af}},
-  byeditorcofo     = {{udgivet, kommenteret og med forord af}%
-                      {udg.,\addabbrvspace komm\adddot\ og forord af}},
-  byeditorcoaf     = {{udgivet, kommenteret og med efterord af}%
-                      {udg.,\addabbrvspace komm\adddot\ og efterord af}},
-  byeditoranin     = {{udgivet, annoteret og med indledning af}%
-                      {udg.,\addabbrvspace ann\adddot\ og indl\adddot\ af}},
-  byeditoranfo     = {{udgivet, annoteret og med forord af}%
-                      {udg.,\addabbrvspace ann\adddot\ og forord af}},
-  byeditoranaf     = {{udgivet, annoteret og med efterord af}%
-                      {udg.,\addabbrvspace ann\adddot\ og efterord af}},
-  byeditortrcoin   = {{udgivet, oversat \lbx at lfromlang, kommenteret og med indledning af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang, komm\adddot\ og indl\adddot\ af}},
-  byeditortrcofo   = {{udgivet, oversat \lbx at lfromlang, kommenteret og med forord af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang, komm\adddot\ og forord af}},
-  byeditortrcoaf   = {{udgivet, oversat \lbx at lfromlang, kommenteret og med efterord af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang, komm\adddot\ og efterord af}},
-  byeditortranin   = {{udgivet, oversat \lbx at lfromlang, med annoteringer og indledning af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang, ann\adddot\ og indl\adddot\ af}},
-  byeditortranfo   = {{udgivet, oversat \lbx at lfromlang, med annoteringer og forord af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang, ann\adddot\ og forord af}},
-  byeditortranaf   = {{udgivet, oversat \lbx at lfromlang, med annoteringer og efterord af}%
-                      {udg.,\addabbrvspace overs\adddot\ \lbx at sfromlang, ann\adddot\ og efterord af}},
+  byeditortr       = {{redigeret og oversat \lbx at lfromlang\ af}%
+                      {red\adddotspace og overs\adddot \lbx at sfromlang\ af}},
+  byeditorco       = {{redigeret og kommenteret af}%
+                      {red\adddotspace og komm\adddot\ af}},
+  byeditoran       = {{redigeret med annoteringer af}%
+                      {red\adddotspace m\adddotspace ann\adddotspace af}},
+  byeditorin       = {{redigeret med indledning af}%
+                      {red\adddotspace med indl\adddot\ af}},
+  byeditorfo       = {{redigeret med forord af}%
+                      {red\adddotspace med forord af}},
+  byeditoraf       = {{redigeret med efterord af}%
+                      {red\adddotspace med efterord af}},
+  byeditortrco     = {{redigeret, oversat \lbx at lfromlang\ og kommenteret af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og komm\adddot\ af}},
+  byeditortran     = {{redigeret, oversat \lbx at lfromlang\ og annoteret af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og ann\adddot\ af}},
+  byeditortrin     = {{redigeret, oversat \lbx at lfromlang\ og med indledning af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og indl\adddot\ af}},
+  byeditortrfo     = {{redigeret, oversat \lbx at lfromlang\ og med forord af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og forord af}},
+  byeditortraf     = {{redigeret, oversat \lbx at lfromlang\ og med efterord af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang\ og efterord af}},
+  byeditorcoin     = {{redigeret, kommenteret og med indledning af}%
+                      {red.,\addabbrvspace komm\adddot\ og indl\adddotspace af}},
+  byeditorcofo     = {{redigeret, kommenteret og med forord af}%
+                      {red.,\addabbrvspace komm\adddot\ og forord af}},
+  byeditorcoaf     = {{redigeret, kommenteret og med efterord af}%
+                      {red.,\addabbrvspace komm\adddot\ og efterord af}},
+  byeditoranin     = {{redigeret, annoteret og med indledning af}%
+                      {red.,\addabbrvspace ann\adddot\ og indl\adddot\ af}},
+  byeditoranfo     = {{redigeret, annoteret og med forord af}%
+                      {red.,\addabbrvspace ann\adddot\ og forord af}},
+  byeditoranaf     = {{redigeret, annoteret og med efterord af}%
+                      {red.,\addabbrvspace ann\adddot\ og efterord af}},
+  byeditortrcoin   = {{redigeret, oversat \lbx at lfromlang, kommenteret og med indledning af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang, komm\adddot\ og indl\adddot\ af}},
+  byeditortrcofo   = {{redigeret, oversat \lbx at lfromlang, kommenteret og med forord af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang, komm\adddot\ og forord af}},
+  byeditortrcoaf   = {{redigeret, oversat \lbx at lfromlang, kommenteret og med efterord af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang, komm\adddot\ og efterord af}},
+  byeditortranin   = {{redigeret, oversat \lbx at lfromlang, med annoteringer og indledning af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang, ann\adddot\ og indl\adddot\ af}},
+  byeditortranfo   = {{redigeret, oversat \lbx at lfromlang, med annoteringer og forord af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang, ann\adddot\ og forord af}},
+  byeditortranaf   = {{redigeret, oversat \lbx at lfromlang, med annoteringer og efterord af}%
+                      {red.,\addabbrvspace overs\adddot\ \lbx at sfromlang, ann\adddot\ og efterord af}},
   bytranslatorco   = {{oversat \lbx at lfromlang\ med kommentarer af}%
                       {overs\adddot\ \lbx at sfromlang\ m\adddotspace komm\adddot\ af}},
   bytranslatoran   = {{oversat \lbx at lfromlang\ og annoteret af}%
@@ -327,7 +327,7 @@
   andothers        = {{med flere}{m.fl\adddot}},
   andmore          = {{med mere}{m.m\adddot}},
   volume           = {{bind}{bd\adddot}},
-  volumes          = {{bind}{bdd\adddot}},
+  volumes          = {{bind}{bd\adddot}},
   involumes        = {{i}{i}},
   jourvol          = {{\aa rgang}{\aa rg\adddot}},
   jourser          = {{r\ae kke}{rk\adddot}},
@@ -349,40 +349,40 @@
   origpubin        = {{oprindeligt udgivet i}{opr\adddot\ udg\adddot\ i}},
   astitle          = {{under titlen}{under titlen}},
   bypublisher      = {{af}{af}},
-  nodate           = {{udateret}{udat\adddot}},
+  nodate           = {{uden \aa rstal}{u.\aa\adddot}},
   page             = {{side}{s\adddot}},
-  pages            = {{sider}{ss\adddot}},
+  pages            = {{sider}{s\adddot}},
   column           = {{spalte}{sp\adddot}},
-  columns          = {{spalter}{spp\adddot}},
+  columns          = {{spalter}{sp\adddot}},
   line             = {{linje}{l\adddot}},
   lines            = {{linjer}{l\adddot}},
   verse            = {{vers}{v\adddot}},
-  verses           = {{vers}{vv\adddot}},
+  verses           = {{vers}{v\adddot}},
   section          = {{paragraf}{par\adddot}},
-  sections         = {{paragraffer}{parr\adddot}},
+  sections         = {{paragraffer}{par\adddot}},
   paragraph        = {{afsnit}{afsn\adddot}},
-  paragraphs       = {{afsnit}{afsnn\adddot}},
+  paragraphs       = {{afsnit}{afsn\adddot}},
   pagetotal        = {{side}{s\adddot}},
-  pagetotals       = {{sider}{ss\adddot}},
+  pagetotals       = {{sider}{s\adddot}},
   columntotal      = {{spalte}{sp\adddot}},
-  columntotals     = {{spalter}{spp\adddot}},
+  columntotals     = {{spalter}{sp\adddot}},
   line             = {{linje}{l\adddot}},
-  lines            = {{linjer}{ll\adddot}},
+  lines            = {{linjer}{l\adddot}},
   verse            = {{vers}{v\adddot}},
-  verses           = {{vers}{vv\adddot}},
+  verses           = {{vers}{v\adddot}},
   linetotal        = {{linje}{l\adddot}},
-  linetotals       = {{linje}{ll\adddot}},
+  linetotals       = {{linje}{l\adddot}},
   versetotal       = {{vers}{v\adddot}},
-  versetotals      = {{vers}{vv\adddot}},
+  versetotals      = {{vers}{v\adddot}},
   sectiontotal     = {{paragraf}{par\adddot}},
-  sectiontotals    = {{paragraffer}{parr\adddot}},
+  sectiontotals    = {{paragraffer}{par\adddot}},
   paragraphtotal   = {{afsnit}{afsn\adddot}},
-  paragraphtotals  = {{afsnit}{afsnn\adddot}},%
+  paragraphtotals  = {{afsnit}{afsn\adddot}},%
   in               = {{i}{i}},
   inseries         = {{i r\ae kken}{i rk\adddot}},
   ofseries         = {{fra r\ae kken}{fra rk\adddot}},
   number           = {{nummer}{nr\adddot}},
-%  numbers          = {{numre}{nrr\adddot}},
+%  numbers          = {{numre}{nr\adddot}},
   chapter          = {{kapitel}{kap\adddot}},
   bathesis         = {{bachelorafhandling}{bachelorafh\adddot}},
   mathesis         = {{masterafhandling}{masterafh\adddot}},
@@ -396,7 +396,7 @@
   version          = {{version}{vers\adddot}},
   url              = {{webadresse}{webadr\adddot}},
   urlfrom          = {{tilg\ae ngelig fra}{tilg\adddotspace fra}},
-  urlseen          = {{senest bes\o gt}{senest bes\adddot}},
+  urlseen          = {{bes\o gt}{bes\adddot}},
   inpreparation    = {{under udarbejdelse}{under udarb\adddot}},
   submitted        = {{indleveret}{indlev\adddot}},
   forthcoming      = {{under udgivelse}{under udgiv\adddot}},
@@ -424,7 +424,7 @@
   see              = {{se}{s\adddot}},
   seealso          = {{se ogs\aa}{se ogs\aa}},
   backrefpage      = {{se side}{se s\adddot}},
-  backrefpages     = {{se siderne}{se ss\adddot}},
+  backrefpages     = {{se siderne}{se s\adddot}},
   january          = {{januar}{jan\adddot}},
   february         = {{februar}{feb\adddot}},
   march            = {{marts}{mar\adddot}},
@@ -514,7 +514,7 @@
   patrequk         = {{britisk patentans\o gning}{brit\adddot\ pat\adddot\ ans\o gn\adddot}},
   patrequs         = {{amerikansk patentans\o gning}{am\adddot\ pat\adddot\ ans\o gn\adddot}},
   file             = {{fil}{fil}},
-  library          = {{bibliotek}{bibliotek}},
+  library          = {{bibliotek}{bibl\adddot}},
   abstract         = {{resum\'{e}}{resum\'{e}}},
   annotation       = {{kommentarer}{komm\adddot}},
   commonera        = {{efter vor tidsregning}{e\adddot v\adddot t\adddot}},

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/english.lbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -559,6 +559,11 @@
 }
 
 \protected\gdef\lbx at us@mkdaterangetrunc at long#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefull{#1}{#2}}
+    {\lbx at us@mkdaterangetrunc at long@i{#1}{#2}}}
+
+\protected\gdef\lbx at us@mkdaterangetrunc at long@i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -581,7 +586,7 @@
              {\mbox{\bibdaterangesep}}
              {\bibdaterangesep
               \enddatecircaprint
-              \iffieldundef{#2season}
+              \iffieldundef{#2endseason}
                 {\ifdateyearsequal{#2}{#2end}
                   {\iffieldsequal{#2month}{#2endmonth}
                     {\csuse{mkbibdate#1}{#2endyear}{}{#2endday}}
@@ -593,6 +598,11 @@
   \endgroup}
 
 \protected\gdef\lbx at us@mkdaterangetrunc at short#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefull{#1}{#2}}
+    {\lbx at us@mkdaterangetrunc at short@i{#1}{#2}}}
+
+\protected\gdef\lbx at us@mkdaterangetrunc at short@i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -615,14 +625,19 @@
               {\mbox{\bibdaterangesep}}
               {\bibdaterangesep
                \enddatecircaprint
-               \iffieldundef{#2season}
+               \iffieldundef{#2endseason}
                  {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
                  {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}%
                \enddateuncertainprint
                \dateeraprint{#2endyear}}}}}%
-  \endngroup}
+  \endgroup}
 
 \protected\gdef\lbx at us@mkdaterangetruncextra at long#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefullextra{#1}{#2}}
+    {\lbx at us@mkdaterangetruncextra at long@i{#1}{#2}}}
+
+\protected\gdef\lbx at us@mkdaterangetruncextra at long#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -646,7 +661,7 @@
                \mbox{\bibdaterangesep}}
               {\bibdaterangesep
                \enddatecircaprint
-               \iffieldundef{#2season}
+               \iffieldundef{#2endseason}
                  {\ifdateyearsequal{#2}{#2end}
                    {\iffieldsequal{#2month}{#2endmonth}
                       {\csuse{mkbibdate#1}{#2endyear}{}{#2endday}}
@@ -659,6 +674,11 @@
   \endgroup}
 
 \protected\gdef\lbx at us@mkdaterangetruncextra at short#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefullextra{#1}{#2}}
+    {\lbx at us@mkdaterangetruncextra at short@i{#1}{#2}}}
+
+\protected\gdef\lbx at us@mkdaterangetruncextra at short#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -682,7 +702,7 @@
             \mbox{\bibdaterangesep}}
            {\bibdaterangesep
             \enddatecircaprint
-            \iffieldundef{#2season}
+            \iffieldundef{#2endseason}
               {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}
               {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}%
             \printfield{extradate}%

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/latvian.lbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -1,6 +1,20 @@
 \ProvidesFile{latvian.lbx}
 [\abx at lbxid]
 
+\ifundef{\lbx at lv@loadinfo}
+  {\blx at warning@noline{%
+     Latvian localisation module for biblatex loaded.\MessageBreak
+     This module changes more definitions than usual.\MessageBreak
+     Please refer to the documentation for hints and\MessageBreak
+     check the output carefully, especially with non-\MessageBreak
+     standard styles or customisations to field formats.\MessageBreak
+     This warning can be disabled by calling\MessageBreak
+     '\string\BiblatexLatvianWarningOff'\MessageBreak
+     after 'biblatex' has been loaded, but before\MessageBreak
+     the localisation is loaded for the first time}%
+   \global\let\lbx at lv@loadinfo\@empty}
+  {}
+
 \DeclareRedundantLanguages{latvian}{latvian}
 
 \NewBibliographyString{%
@@ -123,6 +137,67 @@
     \expandafter\lbx at lv@makewhendate at i
     \expandafter{\lbx at lv@whendate at formats}}%
   %\lbx at lv@makewhendate{eventdate}%
+  \def\lbx at lv@mkdottednormrange at i#1{%
+    \ifinteger{#1}
+      {\mkbibordinal{#1}}
+      {#1}}
+  \protected\def\lbx at lv@mkdottednormrange#1{%
+    \mknormrange*[\@firstofone][\lbx at lv@mkdottednormrange at i]{#1}}%
+  % this redefines \mkpageprefix to put the page number as suffix
+  \savecommand\blx at mkpageprefix
+  \protected\long\def\blx at mkpageprefix#1[#2]#3{%
+    \blx at mkpageprefix@i[#2]{#3}%
+    \ifnumeral{#3}
+      {\ppspace\bibstring{#1}}
+      {\ifnumerals{#3}
+         {\ppspace\bibstring{#1s}}
+         {\def\pno{\bibstring{#1}}%
+          \def\ppno{\bibstring{#1s}}}}}%
+  % NOTE: a few field formats are redefined here, this overrides
+  % corresponding style and preamble definitions.
+  % If you want to overwrite the changes made here, use
+  % \DefineBibliographyExtras{magyar}{...}
+  % Do not forget to make these changes undone with
+  % \UndefineBibliographyExtras{magyar}{...}
+  % to avoid them spilling out later.
+  \savefieldformat{pages}%
+  \DeclareFieldFormat{pages}{%
+    \mkpageprefix[bookpagination][\lbx at lv@mkdottednormrange]{#1}}%
+  \savefieldformat{postnote}%
+  \DeclareFieldFormat{postnote}{%
+    \mkpageprefix[bookpagination][\lbx at lv@mkdottednormrange]{#1}}%
+  \savefieldformat{volcitepages}%
+  \DeclareFieldFormat{volcitepages}{%
+    \mkpageprefix[pagination][\lbx at lv@mkdottednormrange]{#1}}%
+  \savefieldformat{multipostnote}%
+  \DeclareFieldFormat{multipostnote}{%
+    \mkpageprefix[pagination][\lbx at lv@mkdottednormrange]{#1}}%
+  \savefieldformat{chapter}%
+  \DeclareFieldFormat{chapter}{%
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+    \addnbspace
+    \bibstring{chapter}}%
+  \savefieldformat{volume}%
+  \DeclareFieldFormat{volume}{%
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+    \addnbspace
+    \bibstring{volume}}%
+  \savefieldformat{part}%
+  \DeclareFieldFormat{part}{%
+    \addcomma\space% <- this is *really* bad, don't try this at home
+    % In general leading or trailing punctuation in field formats should be
+    % avoided and should instead be dealt with in the appropriate bibmacros.
+    % The part field is special because its standard definition is '.#1'.
+    % Additionally, \printfield{part} is called all over the place, so we
+    % can't simply redefine a macro here.
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}%
+    \addnbspace
+    \bibstring{part}}%
+  \savefieldformat{version}%
+  \DeclareFieldFormat{version}{%
+    \ifnumerals{#1}{\mkbibordinal{#1}}{#1}
+    \addnbspace
+    \bibstring{version}}%
 }
 
 \UndeclareBibliographyExtras{%
@@ -138,6 +213,16 @@
   %\lbx at lv@restorewhendate{eventdate}%
   \restorecommand\mkdaterangecomp
   \restorecommand\mkdaterangecompextra
+  \restorecommand\mknormrange
+  \restorecommand\blx at mkpageprefix
+  \restorefieldformat{pages}%
+  \restorefieldformat{postnote}%
+  \restorefieldformat{volcitepages}%
+  \restorefieldformat{multipostnote}%
+  \restorefieldformat{chapter}%
+  \restorefieldformat{volume}%
+  \restorefieldformat{part}%
+  \restorefieldformat{version}%
 }
 
 \DeclareBibliographyStrings{%
@@ -518,7 +603,7 @@
   langgalician     = {{galsie\v{s}u}{galsie\v{s}u}},
   langgerman       = {{v\={a}cu}{v\={a}cu}},
   langgreek        = {{grie\c{k}u}{grie\c{k}u}},
-% langhungarian    = {{}{}}, % FIXME: missing
+  langhungarian    = {{ung\={a}ru}{ung\={a}ru}},
   langitalian      = {{it\={a}\c{l}u}{it\={a}\c{l}u}},
   langjapanese     = {{jap\={a}\c{n}u}{jap\={a}\c{n}u}},
   langlatin        = {{lat\={\i}\c{n}u}{lat\={\i}\c{n}u}},
@@ -547,7 +632,7 @@
   fromgalician     = {{no galsie\v{s}u}{no galsie\v{s}u}},
   fromgerman       = {{no v\={a}cu}{no v\={a}cu}},
   fromgreek        = {{no grie\c{k}u}{no grie\c{k}u}},
-% fromhungarian    = {{}{}}, % FIXME: missing
+  fromhungarian    = {{no ung\={a}ru}{no ung\={a}ru}},
   fromitalian      = {{no it\={a}\c{l}u}{no it\={a}\c{l}u}},
   fromjapanese     = {{no jap\={a}\c{n}u}{no jap\={a}\c{n}u}},
   fromlatin        = {{no lat\={\i}\c{n}u}{no lat\={\i}\c{n}u}},
@@ -622,6 +707,11 @@
   \fi}%
 
 \protected\gdef\lbx at lv@mkdaterangetrunc at long#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefull{#1}{#2}}
+    {\lbx at lv@mkdaterangetrunc at long@i{#1}{#2}}}
+
+\protected\gdef\lbx at lv@mkdaterangetrunc at long@i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}
@@ -655,6 +745,11 @@
   \endgroup}
 
 \protected\gdef\lbx at lv@mkdaterangetruncextra at long#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefullextra{#1}{#2}}
+    {\lbx at lv@mkdaterangetruncextra at long@i{#1}{#2}}}
+
+\protected\gdef\lbx at lv@mkdaterangetruncextra at long@i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \iffieldundef{#2year}

Modified: trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx
===================================================================
--- trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx	2019-08-24 20:52:36 UTC (rev 51952)
+++ trunk/Master/texmf-dist/tex/latex/biblatex/lbx/magyar.lbx	2019-08-24 20:53:26 UTC (rev 51953)
@@ -6,10 +6,12 @@
      Hungarian localisation module for biblatex loaded.\MessageBreak
      This module changes more definitions than usual.\MessageBreak
      Please refer to the documentation for hints and\MessageBreak
-     check the output, especially with non-standard\MessageBreak
-     styles or customisations to field formats.\MessageBreak
-     This warning can be disabled with\MessageBreak
-     '\string\BiblatexHungarianWarningOff'}%
+     check the output carefully, especially with non-\MessageBreak
+     standard styles or customisations to field formats.\MessageBreak
+     This warning can be disabled by calling\MessageBreak
+     '\string\BiblatexHungarianWarningOff'\MessageBreak
+     after 'biblatex' has been loaded, but before\MessageBreak
+     the localisation is loaded for the first time}%
    \global\let\lbx at hu@loadinfo\@empty}
   {}
 
@@ -109,15 +111,15 @@
   % this redefines \mkpageprefix to put the page number as suffix
   \savecommand\blx at mkpageprefix
   \protected\long\def\blx at mkpageprefix#1[#2]#3{%
-  \blx at mkpageprefix@i[#2]{#3}%
-  \ifnumeral{#3}
-    {\ppspace\bibstring{#1}}
-    {\ifnumerals{#3}
-       {\ppspace\bibstring{#1s}}
-       {\def\pno{\bibstring{#1}}%
-        \def\ppno{\bibstring{#1s}}}}}%
-  % NOTE: a few field formats are redefined here, this overrides corresponding
-  % style and preamble definitions.
+    \blx at mkpageprefix@i[#2]{#3}%
+    \ifnumeral{#3}
+      {\ppspace\bibstring{#1}}
+      {\ifnumerals{#3}
+         {\ppspace\bibstring{#1s}}
+         {\def\pno{\bibstring{#1}}%
+          \def\ppno{\bibstring{#1s}}}}}%
+  % NOTE: a few field formats are redefined here, this overrides
+  % corresponding style and preamble definitions.
   % If you want to overwrite the changes made here, use
   % \DefineBibliographyExtras{magyar}{...}
   % Do not forget to make these changes undone with
@@ -647,6 +649,11 @@
                    or not togl {blx@#1dateusetime})}}
 
 \protected\gdef\lbx at hu@mkdaterangetrunc#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefull{#1}{#2}}
+    {\lbx at hu@mkdaterangetrunc at i{#1}{#2}}}
+
+\protected\gdef\lbx at hu@mkdaterangetrunc at i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \edef\lbx at hu@dayrange{\lbx at hu@dayrange at i{#2}}%
@@ -682,6 +689,11 @@
   \endgroup}
 
 \protected\gdef\lbx at hu@mkdaterangetruncextra#1#2{%
+  \blx at if@printanytimes{#2}
+    {\mkdaterangefullextra{#1}{#2}}
+    {\lbx at hu@mkdaterangetruncextra at i{#1}{#2}}}
+
+\protected\gdef\lbx at hu@mkdaterangetruncextra at i#1#2{%
   \begingroup
     \blx at metadateinfo{#2}%
     \edef\lbx at hu@dayrange{\lbx at hu@dayrange at i{#2}}%



More information about the tex-live-commits mailing list