summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/biblatex-contrib/biblatex-ext
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-ext')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md223
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md126
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-examples.bib48
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty113
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty450
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty204
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty166
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty169
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty277
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdfbin0 -> 718456 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex3355
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua260
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx24
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx107
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx20
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx126
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx41
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx198
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx153
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx206
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx118
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx57
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx131
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx149
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx167
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx255
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx352
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx173
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx265
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx362
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx140
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx158
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx61
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx150
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx22
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx168
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx166
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def295
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx91
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx158
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx118
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx20
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx137
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx1340
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx91
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx97
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx97
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx91
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx25
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx91
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx91
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx21
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx91
77 files changed, 12534 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md b/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md
new file mode 100644
index 0000000000..bc259954df
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/CHANGES.md
@@ -0,0 +1,223 @@
+# Changelog
+
+## Version 0.8 (2019-08-25)
+See <https://github.com/moewew/biblatex-ext/compare/v0.7a...v0.8>
+
+### Added
+- `\AtIntrocite` to customise initialisation code for introcite
+ citations.
+
+### Changed
+- Require `biblatex` v3.13 (some backwards compatiblity is in place).
+
+## Version 0.7a (2019-04-04)
+See <https://github.com/moewew/biblatex-ext/compare/v0.7...v0.7a>
+
+### Fixed
+- Bug in the `env` option to `\printbibtabular`. The old version would
+ check for a *bib* environment as defined with `\defbibenvironment`
+ and not a *bibtabular* environment as defined with `\defbibtabular`.
+ Hence, the option would throw an error if there was no bib
+ environment of the same name as the *bibtabular* environment passed
+ to `env`.
+
+### Changed
+- `biblatex-ext-doiapi` warns about missing email just a tad earlier.
+
+## Version 0.7 (2019-02-08)
+See <https://github.com/moewew/biblatex-ext/compare/v0.6b...v0.7>
+
+### Added
+- Outer citation delimiters for `\supercite`.
+- `biblatex-ext-oasymb-pict2e` for open access symbols drawn in
+ `pict2e`. The package can be used via the `symbolpackage=pict2e`
+ option to `biblatex-ext-oa` and provides a light-weight alternative
+ to the the symbols drawn with TikZ or the experimental `l3draw`
+ (of LaTeX3 fame).
+- `biblatex-ext-oasymb-l3draw` for open access symbols drawn in
+ `l3draw`. The package can be used via the `symbolpackage=l3draw`
+ option to `biblatex-ext-oa` and provides a LaTeX3 alternative to the
+ the symbols drawn with TikZ or `pict2e`.
+- `\LoadOASymbolPackage`, `\DeclareOASymbol` to load an open access
+ symbol package and set the symbol.
+- `symbolpackage` and `symbol` options for `biblatex-ext-oa`
+ corresponding to `\LoadOASymbolPackage` and `\DeclareOASymbol`,
+ respectively.
+
+### Changed
+- **Incompatible change** Renamed `biblatex-ext-oa-tikzsymbols` to
+ `biblatex-ext-oasymb-tikz` for consistency.
+ No serious impact for end users is expected since the package should
+ normally not be used as a stand-alone package.
+ It should be loaded via `biblatex-ext-oa`.
+
+### Deprecated
+- Deprecate `\DefineTikZOASymbol` in favour of the more universal
+ `\DeclareOASymbol`.
+- Deprecate `\LoadTikZOASymbol` in favour of the more universal
+ `\LoadOASymbolPackage`.
+- Deprecate the `biblatex-ext-oa` option `tikzsymbol` in favour of the
+ new options `symbolpackage` and `symbol`.
+
+
+## Version 0.6b (2019-01-11)
+See <https://github.com/moewew/biblatex-ext/compare/v0.6a...v0.6b>
+
+### Changed
+- `blxextdoiapi.lua` now returns the module as a table.
+
+### Fixed
+- Issue loading `socket.url` with LuaLaTeX 1.07 (TeX Live 2018)
+ (<https://github.com/moewew/biblatex-ext/issues/17>)
+
+
+## Version 0.6a (2019-01-04)
+See <https://github.com/moewew/biblatex-ext/compare/v0.6...v0.6a>
+
+### Changed
+- Only patch bibmacros in `biblatex-ext-oa`. This avoids redefinitions,
+ which could clear out custom definitions.
+- Use socket.url's URL escape/encode function in blxextdoiapi.lua.
+
+### Fixed
+- A bug in deprecation handling.
+
+
+## Version 0.6 (2018-11-23)
+See <https://github.com/moewew/biblatex-ext/compare/v0.5a...v0.6>
+
+### Added
+- `\titleaddonpunct`
+- The package `biblatex-ext-oa` for open access symbols and open access
+ 'detection'.
+ See <https://tex.stackexchange.com/q/459449/>.
+ - The default detection relies on explicit configuration for all URL,
+ DOI and eprint-like and data in the `.bib` file.
+ - There is a Lua module that queries Unpaywall.org by DOI to find
+ open access info.
+ - A support package provides two open access symbols drawn with TikZ.
+
+### Changed
+- `biblatex` 3.12 is now recommended.
+- Synced `mergedate` code with `biblatex` 3.12
+ (<https://github.com/plk/biblatex/pull/810>,
+ <https://github.com/plk/biblatex/issues/752>).
+- Made `introcite` and `dashed` option available on per-entry and
+ per-type basis. (<https://github.com/moewew/biblatex-ext/issues/13>)
+ - `introcite=label` needs support of the bibliography environment,
+ so it is not officially supported if its is not set globally.
+ - Simplify code to set options at all three levels at the same time.
+
+
+## Version 0.5a (2018-10-09)
+See <https://github.com/moewew/biblatex-ext/compare/v0.5...v0.5a>
+
+### Fixed
+- Bug with `\footcites` and `\footcitetexts` in `ext-authoryear.cbx`
+ (<https://github.com/moewew/biblatex-ext/issues/12>)
+
+
+## Version 0.5 (2018-10-02)
+See <https://github.com/moewew/biblatex-ext/compare/v0.4...v0.5>
+
+### Added
+- New `ecomp` style family. The styles of that family compress lists of
+ extradate fields.
+- First implementation of a tabular bibliography based on Audrey's
+ answer to <https://tex.stackexchange.com/q/71088/35864>
+- Outer cite delimiters for `\footcite`.
+- `version` and `pagetotal` bibmacros.
+
+### Changed
+- Use `version` and `pagetotal` macros instead of `\printfield`.
+
+
+## Version 0.4 (2018-06-10)
+See <https://github.com/moewew/biblatex-ext/compare/v0.3...v0.4>
+
+### Changed
+- Renamed `\DeclareOuterCiteDelim` and friends to
+ `\DeclareOuterCiteDelims`, backwards compatibility for most of this
+ change should be available.
+- **Incompatible change** Renamed `\bbx@cite@inxref` to `\bbx@xrefcite`
+ for consistency with other citation commands.
+ There are is no compatibility code set up for this change.
+- **Incompatible change** The "virtual" citation command
+ `\bbx:introcite` is now called `\bbx@introcite`. ("Virtual" because
+ the appearance of the introcite label can be changed mostly as if it
+ were produced by this citation command, but it isn't really produced
+ by a citation command at all.)
+ This means that the delimiter context, inner citation delimiters and
+ wrapper field format are renamed from `bbx:introcite` to
+ `bbx@introcite`.
+ There is no compatibility code set up for this change, but warnings
+ are issued if some typical uses of the old names are detected.
+ This means that people using older code should be warned, but still
+ need to take action themselves. Fortunately the `introcite` feature
+ is quite a prominent bit of the bibliography, so people will probably
+ realise wrong output sooner than later.
+- Renamed option `citeinxref` to `citexref`. Please use the new name.
+ Backwards compatibility is in place.
+
+
+## Version 0.3 (2018-06-04)
+See <https://github.com/moewew/biblatex-ext/compare/v0.2...v0.3>
+
+### Added
+- `titlecase:<titletype>` field formats for finer control over the
+ title casing. The standard styles have the catch-all format
+ `titlecase`.
+ This bundle now has `titlecase:title`, `titlecase:booktitle`,
+ `titlecase:maintitle`, `titlecase:issuetitle` and
+ `titlecase:journaltitle`.
+- Toggle `bbx:introcite:plain:keeprelated` to choose not to suppress
+ the `introcite=plain` cite label for default related entries (other
+ `relatedtype`s may already suppress the cite label without chance of
+ getting it back).
+- `\jourvoldelim`, `\jourserdelim` and `\servoldelim`.
+
+### Changed
+- Turned `extradateonlycompcitedelim` into a context-sensitive
+ delimiter.
+- Various documentation improvements.
+
+
+## Version 0.2 (2018-03-28)
+See <https://github.com/moewew/biblatex-ext/compare/v0.1a...v0.2>
+
+### Added
+- `\voltitledelim`
+
+### Changed
+- **Incompatible change** The lengths for `introcite=label` now work
+ like `\labelwidth` and `\labelsep` in all other lists.
+ `\introcitewidth` controls the maximum length of the label, while
+ `\introcitesep` controls the separation between the end of the label
+ and the beginning of the reference.
+ The total indentation is now `\introcitewidth`+`\introcitesep` and
+ not only `\introcitewidth` as before.
+- **Incompatible change** `\maintitletitledelim` is now truly the
+ punctuation between the `maintitle` and `(book)title` field.
+ What was formerly `\maintitledelim` is now `\voltitledelim`.
+- Renamed `bbx:cite:intro` to `bbx:introcite`.
+- Sync with upstream `biblatex` to add `type` and `event+venue+date` to
+ `@unpublished`
+
+### Fixed
+- Indentation with `introcite=label`.
+- Bug in `@online` printing `organization+location+date`.
+
+
+## Version 0.1a (2018-03-20)
+See <https://github.com/moewew/biblatex-ext/compare/v0.1...v0.1a>
+
+### Fixed
+- Inner cite delims for `authoryear`/`authortitle` and their `-ibid`
+ versions.
+- Delimiters for `\smartcite`.
+ `\smartcite` really behaves like `\parencite` and `\footcite` now.
+ This needed some trickery to get the delimiter context right.
+
+
+## Version 0.1 (2018-03-18)
+- First public release.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md
new file mode 100644
index 0000000000..369bb0ebb7
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/README.md
@@ -0,0 +1,126 @@
+biblatex-ext - Extended biblatex standard styles
+================================================
+
+The `biblatex-ext` bundle provides styles that slightly extend the
+standard styles that ship with `biblatex`. The styles offered in this
+bundle provide a simple interface to change some of the stylistic
+decisions made in the standard styles. At the same time they stay as
+close to their standard counterparts as possible, so that most
+customisation methods can be applied here as well.
+
+The main motivation was to offer `biblatex` styles that place the
+editor of `@incollection` works before the `booktitle`, yet remain
+close to the standard styles in overall look and feel and
+customisability. The code adjustments required for this are not
+particularly complicated once you get the hang of it, but a stable and
+clean solution requires a rewrite of the bibliography driver, easily
+amassing hundred lines of code in the preamble. Some contributed styles
+already place the editor before the `booktitle` (`biblatex-apa` comes
+to mind), but you may not want to buy into all the other changes that
+come with choosing one of them. Styles written for the sole purpose of
+following a particular style guide are not always easily modified and
+may have to go to great lengths to implement the requirements of the
+style guide. The styles of this bundle are intended to be a solid base
+for further customisations.
+
+`biblatex-ext` has an extended version `ext-<style>` for each of
+`biblatex`'s standard styles. The bundle consists of the following
+files
+
+- The base file `ext-standard.bbx`
+- The auxiliary file `ext-biblatex-aux.def`
+- The `alphabetic` style family
+ - `ext-alphabetic.bbx` and `ext-alphabetic.cbx`
+ - `ext-alphabetic-verb.bbx` and `ext-alphabetic-verb.cbx`
+- The `authoryear`/`authortitle` helper file `ext-dashed-common.bbx`
+- The `authortitle` style family
+ - `ext-authortitle-common.bbx`
+ - `ext-authortitle.bbx` and `ext-authortitle.cbx`
+ - `ext-authortitle-comp.bbx` and `ext-authortitle-comp.cbx`
+ - `ext-authortitle-ibid.bbx` and `ext-authortitle-ibid.cbx`
+ - `ext-authortitle-icomp.bbx` and `ext-authortitle-icomp.cbx`
+ - `ext-authortitle-terse.bbx` and `ext-authortitle-terse.cbx`
+ - `ext-authortitle-tcomp.bbx` and `ext-authortitle-tcomp.cbx`
+ - `ext-authortitle-ticomp.bbx` and `ext-authortitle-ticomp.cbx`
+- The `authoryear` style family
+ - `ext-authoryear-common.bbx`
+ - `ext-authoryear.bbx` and `ext-authoryear.cbx`
+ - `ext-authoryear-comp.bbx` and `ext-authoryear-comp.cbx`
+ - `ext-authoryear-ecomp.bbx` and `ext-authoryear-ecomp.cbx`
+ - `ext-authoryear-ibid.bbx` and `ext-authoryear-ibid.cbx`
+ - `ext-authoryear-icomp.bbx` and `ext-authoryear-icomp.cbx`
+ - `ext-authoryear-iecomp.bbx` and `ext-authoryear-iecomp.cbx`
+ - `ext-authoryear-terse.bbx` and `ext-authoryear-terse.cbx`
+ - `ext-authoryear-tcomp.bbx` and `ext-authoryear-tcomp.cbx`
+ - `ext-authoryear-tecomp.bbx` and `ext-authoryear-tecomp.cbx`
+ - `ext-authoryear-ticomp.bbx` and `ext-authoryear-ticomp.cbx`
+ - `ext-authoryear-tiecomp.bbx` and `ext-authoryear-tiecomp.cbx`
+- The `numeric` style family
+ - `ext-numeric.bbx` and `ext-numeric.cbx`
+ - `ext-numeric-comp.bbx` and `ext-numeric-comp.cbx`
+ - `ext-numeric-verb.bbx` and `ext-numeric-verb.cbx`
+- The `verbose` style family
+ - `ext-verbose.bbx` and `ext-verbose.cbx`
+ - `ext-verbose-ibid.bbx` and `ext-verbose-ibid.cbx`
+ - `ext-verbose-note.bbx` and `ext-verbose-note.cbx`
+ - `ext-verbose-inote.bbx` and `ext-verbose-inote.cbx`
+ - `ext-verbose-trad1.bbx` and `ext-verbose-trad1.cbx`
+ - `ext-verbose-trad2.bbx` and `ext-verbose-trad2.cbx`
+ - `ext-verbose-trad3.bbx` and `ext-verbose-trad3.cbx`
+- The package for tabular bibliographies `biblatex-ext-tabular.sty`
+- The package `biblatex-ext-oa.sty`
+ - The support package `biblatex-ext-oa-doiapi.sty`
+ - The Lua module `blxextdoiapi.lua`
+ - The `pict2e` symbol package `biblatex-ext-oasymb-pict2e.sty`
+ - The TikZ symbol package `biblatex-ext-oasymb-tikz.sty`
+ - The `l3draw` symbol package `biblatex-ext-oasymb-l3draw.sty`
+
+All of these files (including `blxextdoiapi.lua`) are runtime files
+that need to be installed where LaTeX can find them.
+It is highly recommended to install this bundle via your TeX
+distribution and not manually. See the documentation for more
+installation instructions.
+
+## Licence
+
+Copyright 2017-2019 Moritz Wemheuer
+
+This work consists of the `.bbx`, `.cbx`, `.def`, `.sty` and `.lua`
+files mentioned above.
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License (LPPL), either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is at
+<http://www.latex-project.org/lppl.txt>
+and version 1.3 or later is part of all distributions of LaTeX
+version 2005/12/01 or later.
+
+This work has the LPPL maintenance status 'maintained'.
+
+The Current Maintainer of the work is Moritz Wemheuer
+ <mwemheu@gmail.com>.
+
+The files `README.md`, `CHANGES.md`, `biblatex-ext.pdf`,
+`biblatex-ext.tex` and `biblatex-ext-examples.bib` in their entirety
+need not be considered part of the work for the purpose of the complete
+distribution clause of the LPPL (v1.3c, Clause 2).
+All conditions of the LPPL still apply to these files as well, in
+particular the files are provided 'as is' with no warranty.
+So each of the files can be considered as a separate work licensed
+under the LPPL, if you will.
+This means that you may distribute the bundle without documentation
+(or the documentation without the rest of the bundle).
+It is, however, strongly advised that at least `README.md` and the PDF
+version of the documentation, `biblatex-ext.pdf`, are supplied
+alongside the work.
+
+
+Please report bugs at <https://github.com/moewew/biblatex-ext>
+or via email.
+Suggestions for improvements and feature request are also very welcome.
+
+The bundle is available on CTAN <https://www.ctan.org/pkg/biblatex-ext>
+and is included in MikTeX and TeX live 2018 or later.
+The development version can be found on GitHub
+<https://github.com/moewew/biblatex-ext>
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-examples.bib b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-examples.bib
new file mode 100644
index 0000000000..dfda83ff67
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-examples.bib
@@ -0,0 +1,48 @@
+@book{appleby:civ,
+ author = {Humphrey Appleby},
+ title = {On the Importance of the Civil Service},
+ date = {1980},
+}
+
+@book{appleby:abl,
+ author = {Humphrey Appleby},
+ title = {On the Ablative in Greek},
+ date = {1982},
+}
+
+@book{elk:bronto,
+ author = {Elk, Anne and Hacker, James and Rumpo, Syd},
+ title = {On the Theory of Brontosauruses},
+ date = {1972},
+ options = {maxnames=1, uniquelist=false},
+}
+
+@book{elk:einio,
+ author = {Elk, Anne and Hacker, James and Pode, Eric},
+ title = {On the Theory of Einiosauruses},
+ date = {1973},
+ options = {maxnames=1, uniquelist=false},
+}
+
+@article{cipriani,
+ author = {Cipriani, Alessandra and Hazra, Rajat Subhra
+ and Ruszel, Wioletta M.},
+ title = {Scaling limit of the odometer in divisible sandpiles},
+ journal = {Probability Theory and Related Fields},
+ date = {2018},
+ volume = {172},
+ number = {3},
+ pages = {829--868},
+ doi = {10.1007/s00440-017-0821-x},
+ doi+an = {=openaccess},
+}
+
+@online{meckes,
+ author = {Elizabeth Meckes and Kathryn Stewart},
+ title = {On the eigenvalues of truncations
+ of random unitary matrices},
+ eprinttype = {arxiv},
+ eprint = {1811.08340},
+ eprintclass = {math.PR},
+ date = {2018-11-20}
+}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty
new file mode 100644
index 0000000000..dba1e204e8
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa-doiapi.sty
@@ -0,0 +1,113 @@
+\ProvidesPackage{biblatex-ext-oa-doiapi}
+ [2019/08/25 v0.8 Obtain open access information from DOI via
+ unpaywall.org and doi.org (MW)]
+
+\RequirePackage{etoolbox}
+
+\protected\def\extblx@oa@api@error#1#2{%
+ \PackageError{biblatex-ext-oa-doiapi}{#1}{#2.}}
+
+\protected\def\extblx@oa@api@warning@noline#1{%
+ \PackageWarningNoLine{biblatex-ext-oa-doiapi}{#1}}
+
+\protected\def\extblx@oa@api@info@noline#1{%
+ \PackageInfo{biblatex-ext-oa-doiapi}{#1\@gobble}}
+
+\let\extblx@oa@api@warning\extblx@oa@api@warning@noline
+\AtEndOfPackage{%
+ \protected\def\extblx@oa@api@warning#1{%
+ \PackageWarning{biblatex-ext-oa-doiapi}{#1}}}
+
+% LuaLaTeX only!
+\ifundef\luatexversion
+ {\extblx@oa@api@error
+ {Not running under LuaLaTeX!\MessageBreak
+ This package needs LuaLaTeX.\MessageBreak
+ I will stop right here}
+ {This package can only be run with LuaLaTeX.\MessageBreak
+ Please see the documentation of biblatex-ext for more information}
+ \endinput}
+ {}
+
+% from Manuel Pégourié-Gonnar's luacode (https://ctan.org/pkg/luacode)
+% licensed under LPPL 1.3c
+\def\extblx@oa@api@luastring#1{"\luaescapestring{#1}"}
+\def\extblx@oa@api@luastringN#1{%
+ \extblx@oa@api@luastring{\unexpanded{#1}}}
+
+% no local here, since that would restrict the assignment to
+% this \directlua only, that would be too local
+\directlua{blxextdoiapi = require("blxextdoiapi")}
+
+% The oai file should contain a (global!) Lua table with the relevant
+% OA data
+\IfFileExists{\jobname.oai}
+ {\extblx@oa@api@info@noline{%
+ Load OA database from\MessageBreak
+ \jobname.oai}%
+ \directlua{dofile(\extblx@oa@api@luastring{\jobname.oai})}}
+ {\extblx@oa@api@info@noline{%
+ No OA database file present at\MessageBreak
+ \jobname.oai}}
+
+\newcommand*{\SetDOIAPIMail}[1]{%
+ \cslet{extblx@oa@api@mailset}\@empty
+ \directlua{
+ blxextdoiapi.mail = \extblx@oa@api@luastring{#1}}}
+
+\newcommand*{\SetDOIAPICacheExpiration}[1]{%
+ \directlua{
+ blxextdoiapi.cache_expire = \extblx@oa@api@luastring{#1}}}
+
+\newcommand*{\IsOpenaccess}[1]{%
+ \directlua{
+ blxextdoiapi.texify_conditional(
+ blxextdoiapi.is_openaccess(\extblx@oa@api@luastring{#1}))}}
+
+\newcommand*{\GetOpenaccessURLWrapped}[1]{%
+ \directlua{
+ blxextdoiapi.get_openaccess_url_tex(\extblx@oa@api@luastring{#1})}}
+
+\newcommand*{\OpenaccessURLisDOI}[1]{%
+ \directlua{
+ blxextdoiapi.texify_conditional(
+ blxextdoiapi.openaccess_url_is_doi(\extblx@oa@api@luastring{#1}))}}
+
+\newcommand*{\extblx@oa@api@getoaurl}[1]{%
+ \directlua{
+ blxextdoiapi.assign_openaccess_url_to
+ (\extblx@oa@api@luastringN{\extblx@oa@url},
+ \extblx@oa@api@luastring{#1})
+ }%
+}
+
+\AtEndPreamble{%
+ \ifcsundef{extblx@oa@api@mailset}
+ {\extblx@oa@api@warning@noline{%
+ No mail address declared.\MessageBreak
+ To access the Unpaywall.org api\MessageBreak
+ an email address is required.\MessageBreak
+ It should be given in the preamble\MessageBreak
+ with '\string\SetDOIAPIMail'.\MessageBreak
+ The API request will fail with a\MessageBreak
+ fatal error if no email is provided}}
+ {}}
+
+\AtEndDocument{%
+ \directlua{%
+ table.tofile(\extblx@oa@api@luastring{\jobname.oai}, oadb, "oadb")}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty
new file mode 100644
index 0000000000..b50f981b74
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oa.sty
@@ -0,0 +1,450 @@
+\ProvidesPackage{biblatex-ext-oa}
+ [2019/08/25 v0.8 mark open access in biblatex bibliographies (MW)]
+
+\protected\def\extblx@oa@error#1#2{%
+ \PackageError{biblatex-ext-oa}{#1}{#2.}}
+
+\protected\def\extblx@oa@warning@noline{%
+ \PackageWarningNoLine{biblatex-ext-oa}}
+
+\let\extblx@oa@warning\extblx@oa@warning@noline
+\AtEndOfPackage{%
+ \protected\def\extblx@oa@warning{%
+ \PackageWarning{biblatex-ext-oa}}}
+
+\@ifpackageloaded{biblatex}
+ {}
+ {\extblx@oa@error
+ {biblatex not loaded!\MessageBreak
+ This package must be loaded after biblatex.\MessageBreak
+ This is a fatal error, the package will not\MessageBreak
+ be loaded}
+ {Load biblatex with '\string\usepackage{biblatex}' before
+ you load 'biblatex-ext-oa'.\MessageBreak
+ Please see the documentation of biblatex-ext for more
+ information}%
+ \endinput}
+
+% xpatch has xapptobibmacro,
+% but I did not want to buy into all of expl3 just for this one macro
+% ... at least for the moment
+% note that this is not nearly as sophisticated as xpatch and does not
+% deal with optional arguments
+\newcommand*{\extblx@oa@apptobibmcro}[1]{%
+ \expandafter\apptocmd
+ \expandafter{\csname abx@macro@\detokenize{#1}\endcsname}}
+
+\newtoggle{extblx@oa@opt@forcedoiapi}
+\DeclareBibliographyOption[string]{openaccess}[true]{%
+ \ifstrequal{#1}{forcedoiapi}
+ {\@firstoftwo}
+ {\ifstrequal{#1}{forceonlydoiapi}
+ {\@firstoftwo}
+ {\@secondoftwo}}
+ {\toggletrue{extblx@oa@opt@forcedoiapi}}
+ {}%
+ \extblx@oa@blxopt@openaccess{#1}}
+\DeclareTypeOption[string]{openaccess}[true]{%
+ \ifstrequal{#1}{forcedoiapi}
+ {\toggletrue{extblx@oa@opt@forcedoiapi}%
+ \csletcs{extblx@oa@url@from}{extblx@oa@url@from@forcedoiapi}}
+ {}%
+ \ifstrequal{#1}{forcedoiapi}
+ {\toggletrue{extblx@oa@opt@forceonlydoiapi}%
+ \csletcs{extblx@oa@url@from}{extblx@oa@url@from@forceonlydoiapi}}
+ {}%
+ \iftoggle{extblx@oa@opt@forcedoiapi}
+ {}
+ {\extblx@oa@blxopt@openaccess{#1}}}
+\DeclareEntryOption[string]{openaccess}[true]{%
+ \iftoggle{extblx@oa@opt@forcedoiapi}
+ {}
+ {\extblx@oa@blxopt@openaccess{#1}}}
+
+\def\extblx@oa@blxopt@openaccess#1{%
+ \ifcsundef{extblx@oa@url@from@#1}
+ {\ifcsundef{extblx@oa@warn@field@\abx@field@entrykey @#1}
+ {\extblx@oa@warning@noline{%
+ Field '#1' not set up for\MessageBreak
+ open access detection.\MessageBreak
+ Ignoring the option\MessageBreak
+ 'openaccess=#1'\MessageBreak
+ for entry '\abx@field@entrykey'}%
+ \global\cslet{extblx@oa@warn@field@\abx@field@entrykey @#1}
+ \@empty}
+ {}}
+ {\csletcs{extblx@oa@url@from}{extblx@oa@url@from@#1}}%
+ \ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@onlydoiapi}
+ {\@firstoftwo}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@doiapi}
+ {\@firstoftwo}
+ {\@secondoftwo}}
+ {\ifextblx@oa@opt@doiapi
+ \else
+ \extblx@oa@error
+ {'openaccess=#1' requires 'doiapi=true'\MessageBreak
+ and LuaLaTeX}
+ {If you want to use 'openaccess=#1', you must load the
+ 'biblatex-ext-oa'\MessageBreak
+ package with the option 'doiapi=true'.
+ That option also requires LuaLaTeX.\MessageBreak
+ Please see the documentation of biblatex-ext for more
+ information}
+ \fi}
+ {}%
+}
+
+% define special detection settings
+% auto, all (=:true), none (=:false),
+% doiapi, forcedoiapi (=doiapi, but overrides more specific options)
+% onlydoiapi, forceonlydoiapi
+\csdef{extblx@oa@url@from@auto}{auto}
+\csdef{extblx@oa@url@from@all}{all}
+\csletcs{extblx@oa@url@from@true}{extblx@oa@url@from@all}
+\csdef{extblx@oa@url@from@none}{none}
+\csletcs{extblx@oa@url@from@false}{extblx@oa@url@from@none}
+\csdef{extblx@oa@url@from@doiapi}{doiapi}
+\csdef{extblx@oa@url@from@onlydoiapi}{onlydoiapi}
+\csletcs{extblx@oa@url@from@forcedoiapi}{extblx@oa@url@from@doiapi}
+\csletcs{extblx@oa@url@from@forceonlydoiapi}
+ {extblx@oa@url@from@onlydoiapi}
+
+% {<field_1,...,field_n>}
+\newrobustcmd*{\DeclareOpenAccessUrlFieldPriority}{%
+ \let\extblx@oa@url@autofields\@empty
+ \forcsvlist{\listadd\extblx@oa@url@autofields}}
+
+% {<macroname>}{<field>}{<url spec>}{<openness>}
+\def\extblx@oa@url@definefieldurl#1#2#3#4{%
+ \csdef{extblx@oa@url@from@#2}{#2}%
+ \ifstrequal{#4}{always}
+ {\csdef{extblx@oa@url@getfromfield@#1}{%
+ \iffieldannotation[#2]{closedaccess}
+ {}
+ {\def\extblx@oa@url{#3}}}}
+ {\csdef{extblx@oa@url@getfromfield@#1}{%
+ \iffieldannotation[#2]{closedaccess}
+ {\@secondoftwo}
+ {\iffieldannotation[#2]{openaccess}
+ {\@firstoftwo}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@#2}
+ {\@firstoftwo}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@all}
+ {\@firstoftwo}
+ {\@secondoftwo}}}}
+ {\def\extblx@oa@url{#3}}
+ {}}}}
+
+% [<openness>]{<field>}{<url spec>}
+\newrobustcmd*{\DeclareOpenAccessFieldUrl}[3][conditional]{%
+ \extblx@oa@url@definefieldurl{#2}{#2}{#3}{#1}}
+% [<openness>]{<eprint type>}{<url spec>}
+\newrobustcmd*{\DeclareOpenAccessEprintUrl}[3][conditional]{%
+ \extblx@oa@url@definefieldurl{eprint@#2}{eprint}{#3}{#1}}
+
+\newrobustcmd*{\DeclareOpenAccessEprintAlias}[2]{%
+ \csdef{extblx@oa@url@getfromfield@eprint@#1}{%
+ \csuse{extblx@oa@url@getfromfield@eprint@#2}}}
+
+\def\extblx@oa@url@undefinefieldurl#1#2{
+ \csundef{extblx@oa@url@from@#2}
+ \csundef{extblx@oa@url@getfromfield@#1}}
+
+\newrobustcmd*{\UndeclareOpenAccessFieldUrl}[1]{%
+ \extblx@oa@url@undefinefieldurl{#1}{#1}}
+\newrobustcmd*{\UndeclareOpenAccessEprintUrl}[1]{%
+ \extblx@oa@url@undefinefieldurl{eprint@#1}{eprint}}
+
+
+\def\extblx@oa@url@processfield@@generic#1{%
+ \csuse{extblx@oa@url@getfromfield@#1}}
+
+\def\extblx@oa@url@processfield@eprint#1{%
+ \iffieldundef{eprinttype}
+ {\csuse{extblx@oa@url@getfromfield@#1}}
+ {\csuse{extblx@oa@url@getfromfield@eprint@\thefield{eprinttype}}}}
+
+\def\extblx@oa@url@processfield#1{%
+ \iffieldundef{#1}
+ {}
+ {\ifcsundef{extblx@oa@url@processfield@#1}
+ {\extblx@oa@url@processfield@@generic{#1}}
+ {\csuse{extblx@oa@url@processfield@#1}{#1}}}}
+
+\newcommand*{\extblx@oa@url@getoaurl}{%
+ \ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@onlydoiapi}
+ {\iffieldundef{doi}
+ {}
+ {\extblx@oa@api@getoaurl{\thefield{doi}}}}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@doiapi}
+ {\iffieldundef{doi}
+ {\forlistloop{\extblx@oa@url@processfield}
+ {\extblx@oa@url@autofields}}
+ {\extblx@oa@api@getoaurl{\thefield{doi}}}}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@none}
+ {}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@all}
+ {\@firstoftwo}
+ {\ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@auto}
+ {\@firstoftwo}
+ {\@secondoftwo}}
+ {\forlistloop{\extblx@oa@url@processfield}
+ {\extblx@oa@url@autofields}}
+ {\extblx@oa@url@processfield{\csuse{extblx@oa@url@from}}}}}}}
+
+
+% deprecated
+\newrobustcmd*{\LoadTikZOASymbol}[1][plos]{%
+ \extblx@oa@warning{%
+ Macro '\string\LoadTikZOASymbol' deprecated.\MessageBreak
+ Please use '\string\LoadOASymbolPackage' or\MessageBreak
+ '\string\DefineOASymbol' instead.\MessageBreak
+ Using '\string\LoadOASymbolPackage'}%
+ \LoadOASymbolPackage[#1]{tikz}}
+\@onlypreamble\LoadTikZOASymbol
+
+
+\newcommand*{\extblx@oa@symbolpackages}{}
+\forcsvlist{\listadd\extblx@oa@symbolpackages}{pict2e,l3draw,tikz}
+
+\newtoggle{extblx@tempa}
+\newcommand*{\extblx@oa@loadoasymbol@errorincompatible}[2]{%
+ \ifstrequal{#1}{#2}
+ {}
+ {\@ifpackageloaded{biblatex-ext-oasymb-#2}
+ {\extblx@oa@error
+ {Incompatible symbol method '#2' already loaded}
+ {Only one symbol package can be loaded.\MessageBreak
+ The symbol method '#2' is already loaded, so '#1' can't be
+ used.\MessageBreak
+ If you ignore this error and press on, I will ignore this
+ command}%
+ \edef\extblx@oa@tempa{\endgroup
+ \noexpand\@firstoftwo}%
+ \listbreak}
+ {}}}
+
+% [<symbol id>]{<method>}
+% first step expands fully(!)
+\newrobustcmd*{\LoadOASymbolPackage}[2][plos]{%
+ \begingroup
+ \edef\extblx@oa@tempa{\endgroup
+ \noexpand\LoadOASymbolPackage@i[#1]{#2}}%
+ \extblx@oa@tempa}
+\@onlypreamble\LoadOASymbolPackage
+
+% second step gives all lowercase
+\def\LoadOASymbolPackage@i[#1]#2{%
+ \begingroup
+ \lowercase{\def\extblx@oa@tempb{#1}}%
+ \lowercase{\def\extblx@oa@tempc{#2}}
+ \edef\extblx@oa@tempa{\endgroup
+ \noexpand\LoadOASymbolPackage@ii[\extblx@oa@tempb]{%
+ \extblx@oa@tempc}}%
+ \extblx@oa@tempa}%
+
+\def\LoadOASymbolPackage@ii[#1]#2{%
+ \ifinlist{#2}{\extblx@oa@symbolpackages}
+ {\begingroup
+ \edef\extblx@oa@tempa{\endgroup
+ \noexpand\@secondoftwo}%
+ \forlistloop
+ {\extblx@oa@loadoasymbol@errorincompatible{#2}}
+ {\extblx@oa@symbolpackages}%
+ \extblx@oa@tempa
+ {}
+ {\@ifpackageloaded{biblatex-ext-oasymb-#2}
+ {\extblx@oa@warning{%
+ Symbol method '#2' already loaded.\MessageBreak
+ I'll behave like '\string\DefineOASymbol'}%
+ \DefineOASymbol[#1]}
+ {\RequirePackage[symbol=#1]{biblatex-ext-oasymb-#2}}}}
+ {\extblx@oa@error
+ {Unknown symbol package/method '#2'}
+ {The symbol method '#2' (package 'biblatex-ext-oasymb-#2') is
+ unknown.\MessageBreak
+ See the documentation for a list of available values}}}
+
+\SetupKeyvalOptions{
+ family=extblx@oa@opt,
+ prefix=extblx@oa@opt@,
+}
+
+\DeclareBoolOption[true]{enable}
+\DeclareBoolOption[false]{doiapi}
+\DeclareStringOption[false]{symbolpackage}
+\DeclareStringOption{symbol}
+
+% deprecated option
+\DeclareStringOption{tikzsymbol}[true]
+
+\def\extblx@oa@opt@tikzsymbol@val@false{}
+\def\extblx@oa@opt@tikzsymbol@val@true{\LoadOASymbolPackage[plos]{tikz}}
+
+\def\extblx@oa@opt@tikzsymbol@process#1{%
+ \begingroup
+ \edef\extblx@oa@tempa{\endgroup
+ \noexpand\extblx@oa@opt@tikzsymbol@process@i{#1}}
+ \extblx@oa@tempa}
+
+\def\extblx@oa@opt@tikzsymbol@process@i#1{%
+ \extblx@oa@warning{%
+ The option 'tikzsymbol' is deprecated.\MessageBreak
+ It has been replaced by the separate options\MessageBreak
+ 'symbolpackage' and 'symbol'.\MessageBreak
+ Setting 'symbolpackage=tikz, symbol=#1'}%
+ \ifcsundef{extblx@oa@opt@tikzsymbol@val@#1}
+ {\LoadOASymbolPackage[#1]{tikz}}
+ {\csuse{extblx@oa@opt@tikzsymbol@val@#1}}}
+
+
+
+
+\ProcessKeyvalOptions*
+
+% deprecated option 'tikzsymbol'
+\ifdefvoid\extblx@oa@opt@tikzsymbol
+ {}
+ {\extblx@oa@opt@tikzsymbol@process{\extblx@oa@opt@tikzsymbol}}
+
+% option 'symbolpackage'
+\ifdefstring{\extblx@oa@opt@symbolpackage}{false}
+ {}
+ {\LoadOASymbolPackage{\extblx@oa@opt@symbolpackage}}
+
+% option 'symbol'
+\ifdefvoid\extblx@oa@opt@symbol
+ {}
+ {\ifundef\DefineOASymbol
+ {\extblx@oa@error
+ {Option 'symbol' used, but no symbol method\MessageBreak
+ has been set and no symbol package loaded}
+ {The option 'symbol' can only be used if\MessageBreak
+ * the option 'symbolpackage' is set to a valid value other
+ than 'false', or\MessageBreak
+ * an open access symbol package has been loaded manually
+ (not recommended)}}
+ {\DefineOASymbol[\extblx@oa@opt@symbol]}}
+
+
+
+\ifbool{extblx@oa@opt@doiapi}
+ {\RequirePackage{biblatex-ext-oa-doiapi}}
+ {}
+
+\def\extbl@oa@bbl@fielddef@bestoaurl#1{%
+ \blx@bbl@fielddef{bestoaurl}{#1}}
+
+\AtDataInput{%
+ \undef\extblx@oa@url
+ \extblx@oa@url@getoaurl
+ \ifundef\extblx@oa@url
+ {}
+ {\expandafter\extbl@oa@bbl@fielddef@bestoaurl
+ \expandafter{\extblx@oa@url}}}
+
+
+
+% based on egreg's (https://tex.stackexchange.com/users/4427/egreg)
+% answer to https://tex.stackexchange.com/a/123451/35864
+% originally CC BY-SA 3.0, but dual-licensed under LPPL
+% see https://tex.meta.stackexchange.com/a/3333/35864
+\newcommand{\extblx@oa@marginmark}{%
+ \strut\vadjust{\extblx@oa@marginmark@do}}
+\newcommand{\extblx@oa@marginmark@do}{%
+ \vbox to 0pt{%
+ \kern-3\dp\strutbox
+ \strut
+ \hfill
+ \rlap{\kern1em
+ \ifhyperref
+ {\href{\thefield{bestoaurl}}}
+ {\@firstofone}%
+ {\oasymbol}}
+ \vss
+ }%
+}
+
+
+\ifbool{extblx@oa@opt@enable}
+ {\csletcs{extblx@oa@url@from}{extblx@oa@url@from@auto}
+ \DeclareOpenAccessFieldUrl{url}{\thefield{url}}
+ \DeclareOpenAccessFieldUrl{doi}{https://doi.org/\thefield{doi}}
+
+ \DeclareOpenAccessEprintUrl{jstor}{%
+ http://www.jstor.org/stable/\thefield{eprint}}
+ \DeclareOpenAccessEprintAlias{JSTOR}{jstor}
+ \DeclareOpenAccessEprintUrl{hdl}{%
+ http://hdl.handle.net/\thefield{eprint}}
+ \DeclareOpenAccessEprintAlias{HDL}{hdl}
+ \DeclareOpenAccessEprintUrl{pubmed}{%
+ http://www.ncbi.nlm.nih.gov/pubmed/\thefield{eprint}}
+ \DeclareOpenAccessEprintAlias{PubMed}{pubmed}
+ \DeclareOpenAccessEprintUrl[always]{arxiv}{%
+ https://arxiv.org/\abx@arxivpath/\thefield{eprint}}
+ \DeclareOpenAccessEprintAlias{arXiv}{arxiv}
+
+ \DeclareOpenAccessUrlFieldPriority{url,eprint,doi}
+
+ \DeclareFieldFormat{bestoaurl}{\url{#1}}
+
+ \newbibmacro*{oamark}{%
+ \iffieldundef{bestoaurl}
+ {}
+ {\extblx@oa@marginmark}}
+
+ % patch begentry bibmacro
+ % safer than \renewbibmacro{begentry} if it contains something,
+ % but uses the internal implementation of bibmacros
+ \extblx@oa@apptobibmcro{begentry}
+ {\usebibmacro{oamark}}
+ {}
+ {\extblx@oa@warning@noline{%
+ Failed to patch 'begentry' bibmacro.\MessageBreak
+ The open access logo may not be displayed at all}}
+
+ \ifbool{extblx@oa@opt@doiapi}
+ {\NewBibliographyString{openaccessat}
+ \DefineBibliographyStrings{english}{
+ openaccessat = {open access version at},
+ }
+ \newbibmacro{api:bestoaurl}{%
+ \ifcsequal{extblx@oa@url@from}{extblx@oa@url@from@doiapi}
+ {\iffieldundef{doi}
+ {\@secondoftwo}
+ {\iffieldundef{bestoaurl}
+ {\@secondoftwo}
+ {\OpenaccessURLisDOI{\thefield{doi}}
+ {\@secondoftwo}
+ {\@firstoftwo}}}}
+ {\@secondoftwo}
+ {\bibstring{openaccessat}%
+ \setunit{\addspace}%
+ \printfield{bestoaurl}%
+ \newunit\newblock}
+ {}}
+
+ \extblx@oa@apptobibmcro{doi+eprint+url}
+ {\newunit\newblock
+ \usebibmacro{api:bestoaurl}}
+ {}
+ {\extblx@oa@warning@noline{%
+ Failed to patch 'doi+eprint+url' bibmacro.\MessageBreak
+ The best open access URL might not be shown}}}}
+ {\csletcs{extblx@oa@url@from}{extblx@oa@url@from@none}}
+
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty
new file mode 100644
index 0000000000..1ff0120b6f
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-l3draw.sty
@@ -0,0 +1,204 @@
+\RequirePackage{expl3}
+
+\ProvidesExplPackage {biblatex-ext-oasymb-l3draw}
+ {2019/08/25} {0.8}
+ {open access symbols with l3draw (MW)}
+
+\RequirePackage{xparse}
+\RequirePackage{l3keys2e}
+\RequirePackage{l3draw}
+
+% PLoS Open Access symbol based on
+% https://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg
+% public domain/CC0 by PLoS & Wikipedia users Nina, Beao and JakobVoss
+
+\color_set:nnn {oasymb_plos_orange} {cmyk} {0, .47, .93, .04}
+\dim_const:Nn \l__extblx_oasymb_scale_plos_dim {.1pt}
+
+\cs_new_protected:Nn \__extblx_oasymb_plos_path:
+{
+ \draw_begin:
+ \draw_path_moveto:n { 47*\l__extblx_oasymb_scale_plos_dim,
+ 73*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_arc:nnn { 000 } { 180 } { 15*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_lineto:n { 6*\l__extblx_oasymb_scale_plos_dim,
+ 73*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_arc:nnn { 180 } { 000 } { 26*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_rectangle_corners:nn { 47*\l__extblx_oasymb_scale_plos_dim,
+ 47*\l__extblx_oasymb_scale_plos_dim }
+ { 58*\l__extblx_oasymb_scale_plos_dim,
+ 73*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_moveto:n { 64*\l__extblx_oasymb_scale_plos_dim,
+ 32*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_arc:nnn { 000 } { 360 } { 32*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_moveto:n { 53*\l__extblx_oasymb_scale_plos_dim,
+ 32*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_arc:nnn { 360 } { 000 } { 21*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_moveto:n { 41*\l__extblx_oasymb_scale_plos_dim,
+ 32*\l__extblx_oasymb_scale_plos_dim }
+ \draw_path_arc:nnn { 000 } { 360 } { 09*\l__extblx_oasymb_scale_plos_dim }
+ \draw_color_fill:n { oasymb_plos_orange }
+ \draw_path_use_clear:n { fill }
+ \draw_end:
+}
+
+
+\box_new:N \l__extblx_oasymb_plos_box
+
+\hbox_set:Nn \l__extblx_oasymb_plos_box { \__extblx_oasymb_plos_path: }
+
+\NewDocumentCommand \extblx_oasymb_draw_plos { }
+{
+ \mode_leave_vertical:
+ \box_use:N \l__extblx_oasymb_plos_box
+}
+
+% LaTeX2e name
+\cs_set_eq:NN \extblx@oasymb@draw@plos \extblx_oasymb_draw_plos
+
+% PLoS symbols is standard
+\NewExpandableDocumentCommand \oasymbol { } { \extblx_oasymb_draw_plos }
+
+% Open-Acess.net Open Acess symbol
+% redrawn in l3draw from
+% http://open-access.net/fileadmin/logos/oa.svg
+% public domain according to
+% https://commons.wikimedia.org/wiki/File:Open_access.svg
+% might be covered by open-access.net's overall CC-BY 4.0 license
+% (https://creativecommons.org/licenses/by/4.0/)
+% see https://open-access.net/impressum/
+% the site states no specific conditions for use of the logo
+% other than
+% "Das Logo der Informationsplattform darf nachgenutzt werden,
+% gerne mit einem Link zu open-access.net"
+% on https://open-access.net/ueber-uns/
+% see also https://open-access.net/community/materialien/
+% logo by
+% Medien + Design
+% Center for Digital Systems
+% Competence Center for E-Learning and Multimedia
+% Freie Universität Berlin
+\color_set:nnn {oasymb_oanet_green} {cmyk} {.45, 0, .49, .62}
+\color_set:nnn {oasymb_oanet_gold} {cmyk} {0, .2, .77, .02}
+\color_set:nnn {oasymb_oanet_intersect} {cmyk} {.06, 0, .6, .43}
+\dim_const:Nn \l__extblx_oasymb_scale_oanet_dim {1.1pt}
+
+\cs_new_protected:Nn \__extblx_oasymb_oanet_path:
+{
+ \draw_begin:
+ \draw_path_moveto:n { 8.3*\l__extblx_oasymb_scale_oanet_dim,
+ 4 *\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_arc:nnn { 000 } { 360 } { 4.3*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_moveto:n { 6.7*\l__extblx_oasymb_scale_oanet_dim,
+ 4 *\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_arc:nnn { 360 } { 000 } { 2.7*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_color_fill:n { oasymb_oanet_green }
+ \draw_path_use_clear:n { fill }
+
+ \draw_path_rectangle_corners:nn { 13.7*\l__extblx_oasymb_scale_oanet_dim,
+ -.1*\l__extblx_oasymb_scale_oanet_dim }
+ { 15.3*\l__extblx_oasymb_scale_oanet_dim,
+ 4 *\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_moveto:n { 13.7*\l__extblx_oasymb_scale_oanet_dim,
+ 4*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_lineto:n { 15.3*\l__extblx_oasymb_scale_oanet_dim,
+ 4*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_arc:nnn { 000 } { 300 } { 4.3*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_moveto:n { (11+cosd(300)*4.3)*\l__extblx_oasymb_scale_oanet_dim,
+ (4+sind(300)*4.3)*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_lineto:n { (11+cosd(300)*2.7)*\l__extblx_oasymb_scale_oanet_dim,
+ (4+sind(300)*2.7)*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_arc:nnn { 300 } { 000 } { 2.7*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_color_fill:n { oasymb_oanet_gold }
+ \draw_path_use_clear:n { fill }
+
+ \draw_path_moveto:n
+ { (4+cosd(035.5)*4.3)*\l__extblx_oasymb_scale_oanet_dim,
+ (4+sind(035.5)*4.3)*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_arc:nnn { 144.5 } { 215.5 }
+ { 4.3*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_moveto:n
+ { (4+cosd(-035.5)*4.3)*\l__extblx_oasymb_scale_oanet_dim,
+ (4+sind(-035.5)*4.3)*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_path_arc:nnn { -035.5 } { 035.5 }
+ { 4.3*\l__extblx_oasymb_scale_oanet_dim }
+ \draw_color_fill:n { oasymb_oanet_intersect }
+ \draw_path_use_clear:n { fill }
+ \draw_end:
+}
+
+
+\box_new:N \l__extblx_oasymb_oanet_box
+
+\hbox_set:Nn \l__extblx_oasymb_oanet_box { \__extblx_oasymb_oanet_path: }
+
+\NewDocumentCommand \extblx_oasymb_draw_oanet { }
+{
+ \mode_leave_vertical:
+ \box_use:N \l__extblx_oasymb_oanet_box
+}
+
+% LaTeX2e name
+\cs_set_eq:NN \extblx@oasymb@draw@oanet \extblx_oasymb_draw_oanet
+
+\msg_new:nnnn { biblatex-ext-oasymb-l3draw } { UnknownSymbol }
+ { Unknown~symbol~'#1'.}
+ { The~symbol~'#1'~does~not~exist.\\
+ Please~consult~the~documentation~for~a~list~of~valid~options. }
+
+\cs_new_protected_nopar:Nn \__extblx_oasymb_define_oasymbol:n
+{
+ \cs_if_exist:cTF {extblx_oasymb_draw_#1}
+ { \cs_set_eq:Nc \oasymbol {extblx_oasymb_draw_#1} }
+ {
+ \msg_error:nnn
+ {biblatex-ext-oasymb-l3draw}
+ {UnknownSymbol}
+ {#1}
+ }
+}
+
+\cs_generate_variant:Nn \__extblx_oasymb_define_oasymbol:n {x}
+
+\NewDocumentCommand \DefineOASymbol { O{plos} }
+{
+ \__extblx_oasymb_define_oasymbol:x {#1}
+}
+
+
+\tl_new:N \l__extblx_oasymb_symbol_tl
+
+\keys_define:nn { biblatex-ext-oasymb-l3draw }
+{
+ symbol .code:n = \DefineOASymbol[#1],
+ symbol .initial:n = plos,
+ plos .value_forbidden:n = true,
+ plos .code:n =
+ {
+ \keys_set:nn { biblatex-ext-oasymb-l3draw } { symbol=plos }
+ },
+ oanet .value_forbidden:n = true,
+ oanet .code:n =
+ {
+ \keys_set:nn { biblatex-ext-oasymb-l3draw } { symbol=oanet }
+ },
+}
+
+
+\ProcessKeysOptions {biblatex-ext-oasymb-l3draw}
+
+
+\tex_endinput:D
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty
new file mode 100644
index 0000000000..ce8fe2411a
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-pict2e.sty
@@ -0,0 +1,166 @@
+\ProvidesPackage{biblatex-ext-oasymb-pict2e}
+ [2019/08/25 v0.8 open access symbols with pict2e (MW)]
+
+\RequirePackage{etoolbox}
+\RequirePackage{kvoptions}
+
+% Internals called 'extblx@oasymb@pict' instead of
+% 'extblx@oasymb@pict2e' to avoid the non-letter "2".
+
+\protected\def\extblx@oasymb@pict@error#1#2{%
+ \PackageError{biblatex-ext-oasymb-pict2e}{#1}{#2.}}
+
+\protected\def\extblx@oasymb@pict@warning@noline{%
+ \PackageWarningNoLine{biblatex-ext-oasymb-pict2e}}
+
+\let\extblx@oasymb@pict@warning\extblx@oasymb@pict@warning@noline
+\AtEndOfPackage{%
+ \protected\def\extblx@oasymb@pict@warning{%
+ \PackageWarning{biblatex-ext-oasymb-pict2e}}}
+
+\RequirePackage{pict2e}
+\RequirePackage{xcolor}
+
+% PLoS Open Access symbol based on
+% https://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg
+% public domain/CC0 by PLoS & Wikipedia users Nina, Beao and JakobVoss
+\definecolor{extblx@oasymb@pict@plos@orange}{HTML}{f68212}
+\newcommand*{\extblx@oasymb@pict@plos@pict}{%
+ \begingroup
+ \setlength{\unitlength}{.1pt}%
+ \begin{picture}(64,99)
+ \color{extblx@oasymb@pict@plos@orange}%
+ \moveto(47,73)\circlearc{32}{73}{15}{000}{180}%
+ \lineto(6,73)\circlearc{32}{73}{26}{180}{0}%
+ \moveto(47,47)\lineto(58,47)\lineto(58,73)\lineto(47,73)\closepath
+ \moveto(64,32)
+ \circlearc{32}{32}{32}{000}{360}%
+ \circlearc{32}{32}{21}{360}{000}%
+ \moveto(41,32)
+ \circlearc{32}{32}{09}{000}{360}%
+ \fillpath
+ \end{picture}%
+ \endgroup
+}
+
+\newsavebox{\extblx@oasymb@pict@plos@box}
+\sbox{\extblx@oasymb@pict@plos@box}{\extblx@oasymb@pict@plos@pict}
+\newcommand*{\extblx@oasymb@pict@plos}{%
+ \usebox{\extblx@oasymb@pict@plos@box}}
+
+% PLoS symbols is standard
+\newcommand*{\oasymbol}{\extblx@oasymb@pict@plos}
+
+% Open-Acess.net Open Acess symbol
+% redrawn with pict2e from
+% http://open-access.net/fileadmin/logos/oa.svg
+% public domain according to
+% https://commons.wikimedia.org/wiki/File:Open_access.svg
+% might be covered by open-access.net's overall CC-BY 4.0 license
+% (https://creativecommons.org/licenses/by/4.0/)
+% see https://open-access.net/impressum/
+% the site states no specific conditions for use of the logo
+% other than
+% "Das Logo der Informationsplattform darf nachgenutzt werden,
+% gerne mit einem Link zu open-access.net"
+% on https://open-access.net/ueber-uns/
+% see also https://open-access.net/community/materialien/
+% logo by
+% Medien + Design
+% Center for Digital Systems
+% Competence Center for E-Learning and Multimedia
+% Freie Universität Berlin
+\definecolor{extblx@oasymb@pict@oanet@green}{HTML}{356031}
+\definecolor{extblx@oasymb@pict@oanet@gold}{HTML}{f9c63a}
+\definecolor{extblx@oasymb@pict@oanet@intersect}{HTML}{89923a}
+
+\newcommand*{\extblx@oasymb@pict@oanet@pict}{%
+ \begingroup
+ \setlength{\unitlength}{1.1pt}%
+ \begin{picture}(15,8)
+ \color{extblx@oasymb@pict@oanet@green}%
+ \moveto(08.3,04)
+ \circlearc{04}{04}{4.3}{000}{360}%
+ \circlearc{04}{04}{2.7}{360}{000}%
+ \fillpath
+ \color{extblx@oasymb@pict@oanet@gold}%
+ \moveto(15.3,04)
+ \circlearc{11}{04}{4.3}{000}{300}%
+ \circlearc{11}{04}{2.7}{300}{000}%
+ \lineto(13.7,-.1)\lineto(15.3,-.1)
+ \fillpath
+ \color{extblx@oasymb@pict@oanet@intersect}
+ \moveto(8.3,4)
+ \circlearc{11}{04}{4.3}{144.5}{215.5}%
+ \circlearc{04}{04}{4.3}{-035.5}{035.5}%
+ \fillpath
+ \end{picture}%
+ \endgroup
+}
+
+\newsavebox{\extblx@oasymb@pict@oanet@box}
+\sbox{\extblx@oasymb@pict@oanet@box}{\extblx@oasymb@pict@oanet@pict}
+\newcommand*{\extblx@oasymb@pict@oanet}{%
+ \usebox{\extblx@oasymb@pict@oanet@box}}
+
+\protected\def\extblx@oasymb@pict@opt@symbol@process#1{%
+ \begingroup
+ \edef\extblx@oasymb@pict@tempa{\endgroup
+ \noexpand\extblx@oasymb@pict@opt@symbol@process@i{#1}}%
+ \extblx@oasymb@pict@tempa}
+
+\def\extblx@oasymb@pict@opt@symbol@process@i#1{%
+ \ifcsundef{extblx@oasymb@pict@#1}
+ {\extblx@oasymb@pict@error
+ {Unknown value\MessageBreak
+ \space\space'#1'\MessageBreak
+ for option 'symbol'}
+ {The symbol '#1' does not exist.\MessageBreak
+ Please consult the documentation for a list of valid options}}
+ {\edef\oasymbol{%
+ \expandonce{\csname extblx@oasymb@pict@#1\endcsname}}}}
+
+\newrobustcmd*{\DefineOASymbol}[1][plos]{%
+ \begingroup
+ \edef\extblx@oasymb@pict@tempa{\endgroup
+ \noexpand\extblx@oasymb@pict@DefineOASymbol@i{#1}}%
+ \extblx@oasymb@pict@tempa}
+
+\protected\def\extblx@oasymb@pict@DefineOASymbol@i#1{%
+ \ifcsundef{extblx@oasymb@pict@#1}
+ {\extblx@oasymb@pict@error
+ {Unknown symbol option\MessageBreak
+ \space\space'#1'}
+ {The symbol '#1' does not exist.\MessageBreak
+ Please consult the documentation for a list of valid options}}
+ {\edef\oasymbol{%
+ \expandonce{\csname extblx@oasymb@pict@#1\endcsname}}}}
+
+\SetupKeyvalOptions{
+ family=extblx@oasymb@pict@opt,
+ prefix=extblx@oasymb@pict@opt@,
+}
+
+\DeclareStringOption[plos]{symbol}
+\DeclareVoidOption{plos}{\csdef{extblx@oasymb@pict@opt@symbol}{plos}}
+\DeclareVoidOption{oanet}{\csdef{extblx@oasymb@pict@opt@symbol}{oanet}}
+
+\ProcessKeyvalOptions*
+
+\extblx@oasymb@pict@opt@symbol@process{%
+ \csuse{extblx@oasymb@pict@opt@symbol}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty
new file mode 100644
index 0000000000..ec5c3c3cea
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-oasymb-tikz.sty
@@ -0,0 +1,169 @@
+\ProvidesPackage{biblatex-ext-oasymb-tikz}
+ [2019/08/25 v0.8 open access symbols with TikZ (MW)]
+
+\RequirePackage{etoolbox}
+\RequirePackage{kvoptions}
+
+\protected\def\extblx@oasymb@tikz@error#1#2{%
+ \PackageError{biblatex-ext-oasymb-tikz}{#1}{#2.}}
+
+\protected\def\extblx@oasymb@tikz@warning@noline{%
+ \PackageWarningNoLine{biblatex-ext-oasymb-tikz}}
+
+\let\extblx@oasymb@tikz@warning\extblx@oasymb@tikz@warning@noline
+\AtEndOfPackage{%
+ \protected\def\extblx@oasymb@tikz@warning{%
+ \PackageWarning{biblatex-ext-oasymb-tikz}}}
+
+\RequirePackage{tikz}
+
+% PLoS Open Access symbol based on
+% https://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg
+% public domain/CC0 by PLoS & Wikipedia users Nina, Beao and JakobVoss
+\definecolor{extblx@oasymb@tikz@plos@orange}{HTML}{f68212}
+\newcommand*{\extblx@oasymb@tikz@plos@tikz}{%
+ \begin{tikzpicture}[x=.1pt,y=.1pt]
+ \begin{scope}
+ \clip (06,73) rectangle ++(52,26);
+ \fill[extblx@oasymb@tikz@plos@orange, even odd rule]
+ (32,73) circle[radius=26]
+ (32,73) circle[radius=15];
+ \end{scope}
+ \fill[extblx@oasymb@tikz@plos@orange, even odd rule]
+ (32,32) circle[radius=32]
+ (32,32) circle[radius=21]
+ (32,32) circle[radius= 9];
+ \fill[extblx@oasymb@tikz@plos@orange]
+ (47,47) rectangle ++ (11,26);
+ \end{tikzpicture}%
+}
+
+\newsavebox{\extblx@oasymb@tikz@plos@box}
+\sbox{\extblx@oasymb@tikz@plos@box}{\extblx@oasymb@tikz@plos@tikz}
+\newcommand*{\extblx@oasymb@tikz@plos}{%
+ \usebox{\extblx@oasymb@tikz@plos@box}}
+
+% PLoS symbols is standard
+\newcommand*{\oasymbol}{\extblx@oasymb@tikz@plos}
+
+% Open-Acess.net Open Acess symbol
+% redrawn with TikZ from
+% http://open-access.net/fileadmin/logos/oa.svg
+% public domain according to
+% https://commons.wikimedia.org/wiki/File:Open_access.svg
+% might be covered by open-access.net's overall CC-BY 4.0 license
+% (https://creativecommons.org/licenses/by/4.0/)
+% see https://open-access.net/impressum/
+% the site states no specific conditions for use of the logo
+% other than
+% "Das Logo der Informationsplattform darf nachgenutzt werden,
+% gerne mit einem Link zu open-access.net"
+% on https://open-access.net/ueber-uns/
+% see also https://open-access.net/community/materialien/
+% logo by
+% Medien + Design
+% Center for Digital Systems
+% Competence Center for E-Learning and Multimedia
+% Freie Universität Berlin
+\definecolor{extblx@oasymb@tikz@oanet@green}{HTML}{356031}
+\definecolor{extblx@oasymb@tikz@oanet@gold}{HTML}{f9c63a}
+\definecolor{extblx@oasymb@tikz@oanet@intersect}{HTML}{89923a}
+
+\newcommand*{\extblx@oasymb@tikz@oanet@tikz}{%
+ \begin{tikzpicture}[x=1.1pt,y=1.1pt]
+ \fill[extblx@oasymb@tikz@oanet@green, even odd rule]
+ ( 4,4) circle[radius=4.3]
+ ( 4,4) circle[radius=2.7];
+ \begin{scope}
+ \clip % this is *terrible*, but it was the only way I could stop
+ % some viewers from adding thin lines that shouldn't be there
+ (11,4) circle[radius=2.7]
+ -- +(-4.3,-4.3) -- +(-4.3,+4.3) -- +(+4.3,+4.3) -- +(+4.3,-4.3)
+ -- +(-4.3,-4.3);
+ \fill[extblx@oasymb@tikz@oanet@gold, even odd rule]
+ (11,4) ++ (0:4.3) arc (0:300:4.3) -- (11,4) ++ (300:4.3) -- cycle
+ (11,4) ++ (0:2.7) arc (0:300:2.7) -- (11,4) ++ (300:2.7) -- cycle;
+ \end{scope}
+ \begin{scope}
+ \clip ( 4,4) circle[radius=4.3];
+ \fill[extblx@oasymb@tikz@oanet@intersect] (11,4) circle[radius=4.3];
+ \end{scope}
+ \fill[extblx@oasymb@tikz@oanet@gold]
+ (11,4) ++ (2.7,.1) rectangle ++(1.6,-4.1);
+ \end{tikzpicture}%
+}
+
+\newsavebox{\extblx@oasymb@tikz@oanet@box}
+\sbox{\extblx@oasymb@tikz@oanet@box}{\extblx@oasymb@tikz@oanet@tikz}
+\newcommand*{\extblx@oasymb@tikz@oanet}{%
+ \usebox{\extblx@oasymb@tikz@oanet@box}}
+
+\protected\def\extblx@oasymb@tikz@opt@symbol@process#1{%
+ \begingroup
+ \edef\extblx@oasymb@tikz@tempa{\endgroup
+ \noexpand\extblx@oasymb@tikz@opt@symbol@process@i{#1}}%
+ \extblx@oasymb@tikz@tempa}
+
+\def\extblx@oasymb@tikz@opt@symbol@process@i#1{%
+ \ifcsundef{extblx@oasymb@tikz@#1}
+ {\extblx@oasymb@tikz@error
+ {Unknown value\MessageBreak
+ \space\space'#1'\MessageBreak
+ for option 'symbol'}
+ {The symbol '#1' does not exist.\MessageBreak
+ Please consult the documentation for a list of valid options}}
+ {\edef\oasymbol{%
+ \expandonce{\csname extblx@oasymb@tikz@#1\endcsname}}}}
+
+\newrobustcmd*{\DefineTikZOASymbol}{%
+ \extblx@oasymb@tikz@warning{%
+ The command '\string\DefineTikZOASymbol'\MessageBreak
+ is deprecated.\MessageBreak
+ Use '\string\DefineOASymbol' instead.\MessageBreak
+ Using '\string\DefineOASymbol'}%
+ \DefineOASymbol}
+
+\newrobustcmd*{\DefineOASymbol}[1][plos]{%
+ \begingroup
+ \edef\extblx@oasymb@tikz@tempa{\endgroup
+ \noexpand\extblx@oasymb@tikz@DefineOASymbol@i{#1}}%
+ \extblx@oasymb@tikz@tempa}
+
+\protected\def\extblx@oasymb@tikz@DefineOASymbol@i#1{%
+ \ifcsundef{extblx@oasymb@tikz@#1}
+ {\extblx@oasymb@tikz@error
+ {Unknown symbol option\MessageBreak
+ \space\space'#1'}
+ {The symbol '#1' does not exist.\MessageBreak
+ Please consult the documentation for a list of valid options}}
+ {\edef\oasymbol{%
+ \expandonce{\csname extblx@oasymb@tikz@#1\endcsname}}}}
+
+\SetupKeyvalOptions{
+ family=extblx@oasymb@tikz@opt,
+ prefix=extblx@oasymb@tikz@opt@,
+}
+
+\DeclareStringOption[plos]{symbol}
+\DeclareVoidOption{plos}{\csdef{extblx@oasymb@tikz@opt@symbol}{plos}}
+\DeclareVoidOption{oanet}{\csdef{extblx@oasymb@tikz@opt@symbol}{oanet}}
+
+\ProcessKeyvalOptions*
+
+\extblx@oasymb@tikz@opt@symbol@process{%
+ \csuse{extblx@oasymb@tikz@opt@symbol}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty
new file mode 100644
index 0000000000..adbe6d3859
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext-tabular.sty
@@ -0,0 +1,277 @@
+\ProvidesPackage{biblatex-ext-tabular}
+ [2019/08/25 v0.8 tabular bibliographies for biblatex (MW)]
+
+% Code based on Audrey's
+% (https://tex.stackexchange.com/users/4483/audrey)
+% answer https://tex.stackexchange.com/a/71454/35864 on TeX.SX
+% relicensed under CC0, see
+% https://tex.meta.stackexchange.com/a/1755/35864
+% ultimately based on LPPL code from biblatex.sty
+% Additional modifications by me in
+% https://tex.stackexchange.com/a/440356/35864
+
+\protected\def\extblxtab@error#1#2{%
+ \PackageError{biblatex-ext-tabular}{#1}{#2.}}
+
+\protected\def\extblxtab@warning@noline{%
+ \PackageWarningNoLine{biblatex-ext-tabular}}
+
+\let\extblxtab@warning\extblxtab@warning@noline
+\AtEndOfPackage{%
+ \protected\def\extblxtab@warning{%
+ \PackageWarning{biblatex-ext-tabular}}}
+
+% user-level command for printing tabular bibliography
+
+\newrobustcmd*{\printbibtabular}{%
+ \begingroup % closed in \extblxtab@bibtabular
+ \delimcontext{bib}%
+ \edef\on@line{\on@line}%
+ \@ifnextchar[%]
+ {\extblxtab@printbibtabular}
+ {\extblxtab@printbibtabular[]}}
+
+\def\extblxtab@key@env#1{%
+ \ifcsundef{extblxtab@env@#1}
+ {\extblxtab@error
+ {Environment '#1' not found}
+ {The environment '#1' could not be found.\MessageBreak
+ Use \string\defbibtabular\space to define it}}
+ {\def\blx@theenv{#1}}}
+
+\def\extblxtab@printbibtabular[#1]{%
+ \toggletrue{blx@tempa}%
+ \toggletrue{blx@tempb}%
+ \def\blx@theheading{bibliography}%
+ \def\blx@theenv{bibtabular}%
+ \let\blx@theprenote\@empty
+ \let\blx@thepostnote\@empty
+ \let\blx@thetitle\@empty
+ \let\blx@key@env\extblxtab@key@env % redirect the 'env' option
+ % to tabular envs
+ % defaults
+ \let\blx@tempa\@empty% before there is a .bbl, this must not be undef
+ \edef\blx@tempe{\the\c@refsection}% default refsection is current
+ \blx@safe@actives
+ \togglefalse{blx@resetnumsexplicit}%
+ % First pass options keys - section and resetnumbers
+ \setkeys{blx@bib1}{#1}%
+ % Is there a user-specified option for resetnumbers
+ % If so, this overrides the default
+ % "labelprefix implies resetnumbers" behaviour
+ \iftoggle{blx@resetnumsexplicit}
+ {}
+ {\ifdefempty\blx@refcontext@labelprefix
+ {}
+ {\setkeys{blx@bib2}{resetnumbers}}}%
+ \blx@rest@actives
+ \ifcsvoid{blx@dlist@entry@\blx@tempe @\blx@refcontext@context}
+ {}
+ {\letcs\blx@tempa{blx@dlist@entry@\blx@tempe
+ @\blx@refcontext@context}}%
+ \blx@safe@actives
+ % Must reset omitnumbers as it's a global macro and if we don't, any
+ % \printbibliography following one with this set will inherit any
+ % previous "true" value
+ \togglefalse{blx@omitnumbers}%
+ \setkeys{blx@bib2}{#1}% ... now we have correct \blx@tempa,
+ % set rest of options
+ \blx@rest@actives
+ % Add datalist to list of seen datalists to prevent duplicates
+ \xifinlist{\blx@refcontext@context @\blx@tempe @entry}\blx@dlistnames
+ {}
+ {\listxadd\blx@dlistnames{\blx@refcontext@context @\blx@tempe
+ @entry}%
+ \csxappto{blx@dlists}{%
+ \blx@xml@dlist{\blx@refcontext@context}{entry}{\blx@tempe}{%
+ \blx@xml@dlist@refcontext
+ {\blx@refcontext@sortingtemplatename}
+ {\blx@refcontext@sortingnamekeytemplatename}
+ {\blx@refcontext@labelprefix}
+ {\blx@refcontext@uniquenametemplatename}
+ {\blx@refcontext@labelalphanametemplatename}}{}}}%
+ \ifdefvoid\blx@tempa
+ {\blx@warn@bibempty\endgroup}
+ {\extblxtab@bibtabular\blx@tempa}}
+
+% underlying macros
+\def\extblxtab@bibtabular#1{%
+ \blx@langstrings
+ \blx@bibheading\blx@theheading\blx@thetitle
+ \blx@bibnote\blx@theprenote
+ \begingroup
+ \blx@bibinit
+ \let\@noitemerr\@empty
+ \let\blx@noitem\blx@warn@bibempty
+ \ifnum\bibinitsep=\z@
+ \let\blx@initsep\relax
+ \fi
+ \ifnum\bibnamesep=\z@
+ \let\blx@namesep\relax
+ \fi
+ \csuse{blx@hook@bibinit}%
+ \csuse{blx@hook@bibinit@next}%
+ % copy filtered list of entries to internal list macro
+ \let\blx@tempb\@empty
+ \def\blx@do##1{%
+ \blx@ifdata{##1}{%
+ \begingroup
+ \blx@getdata{##1}%
+ \blx@bibcheck
+ \iftoggle{blx@skipentry}{}{%
+ \global\let\blx@noitem\@empty
+ \listgadd\blx@tempb{##1}}%
+ \endgroup}{}}%
+ \let\blx@done\relax
+ \blx@listloop{#1}%
+ \begingroup
+ % sane names for wrapper macros
+ \def\plain {\extblxtab@tab@item@plain
+ {\extblxtab@tabrow@entrykey}}%
+ \def\plainlang {\extblxtab@tab@item@plainlang
+ {\extblxtab@tabrow@entrykey}}%
+ \def\anchor {\extblxtab@tab@item@anchor
+ {\extblxtab@tabrow@entrykey}}%
+ \def\anchorlang{\extblxtab@tab@item@anchorlang
+ {\extblxtab@tabrow@entrykey}}%
+ \def\driver {\extblxtab@tab@item@driver
+ {\extblxtab@tabrow@entrykey}}%
+ % tabular output for each item in list
+ % note that each cell is in its own group, hence we need \gdef to
+ % break out of the first cell as soon as the row format has a & in it
+ % since the assignment will be counted as being in the first cell
+ \def\do##1{%
+ \gdef\extblxtab@tabrow@entrykey{##1}%
+ \csuse{extblxtab@tabrow@format@\blx@theenv}}%
+ \csuse{extblxtab@env@\blx@theenv}%
+ \dolistloop{\blx@tempb}%
+ \csuse{extblxtab@endenv@\blx@theenv}%
+ \endgroup
+ \blx@bibnote\blx@thepostnote
+ \endgroup
+ \endgroup % this closes the group opened by \printbibtabular
+}
+
+\def\extblxtab@tab@item@aux@lang#1{%
+ \blx@initunit
+ \blx@beglangbib
+ \bibsentence
+ #1%
+ \blx@postpunct
+ \blx@endlangbib
+}
+
+\def\extblxtab@tab@item@plain#1#2{%
+ \begingroup
+ \blx@getdata{#1}%
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \blx@thelabelnumber
+ \csuse{blx@hook@bibitem}%
+ \blx@execute
+ #2%
+ \endgroup
+}
+
+\def\extblxtab@tab@item@plainlang#1#2{%
+ \extblxtab@tab@item@plain{#1}{%
+ \extblxtab@tab@item@aux@lang{#2}}}
+
+\def\extblxtab@tab@item@anchor#1#2{%
+ \extblxtab@tab@item@plain{#1}{%
+ \addtocounter{instcount}\@ne
+ \blx@anchor
+ \blx@pagetracker
+ #2}}
+
+\def\extblxtab@tab@item@anchorlang#1#2{%
+ \extblxtab@tab@item@anchor{#1}{%
+ \extblxtab@tab@item@aux@lang{#2}}}
+
+\def\extblxtab@tab@item@driver#1#2{%
+ \begingroup
+ \blx@getdata{#1}%
+ \blx@setdefaultrefcontext{#1}%
+ \blx@setoptions@type\abx@field@entrytype
+ \blx@setoptions@entry
+ \blx@thelabelnumber
+ \csuse{blx@hook@bibitem}%
+ \blx@execute
+ #2%
+ \blx@initunit
+ \blx@beglangbib
+ \bibsentence
+ \blx@driver\abx@field@entrytype
+ \blx@postpunct
+ \blx@endlangbib
+ \endgroup
+}
+
+% user-level command for defining tabular bibliography format
+\newrobustcmd*{\defbibtabular}[4]{%
+ \long\csdef{extblxtab@env@#1}{#2}%
+ \long\csdef{extblxtab@endenv@#1}{#3}%
+ \long\csdef{extblxtab@tabrow@format@#1}{#4}}
+
+% error message in case user does not initialise bibtabular
+\defbibtabular{bibtabular}
+ {\extblxtab@error{%
+ tabular bibliography environment\MessageBreak
+ 'bibtabular' undefined}
+ {Please supply a suitable definition with \string\defbibtabular.%
+ \MessageBreak
+ See the documentation for more details}}
+ {\textbf{Error!
+ The tabular bibliography environment `bibtabular' is
+ undefined.
+ No tabular bibliography was produced.
+ Please supply a suitable definition with
+ \mbox{\string\defbibtabular}.
+ See the manual for more information.}}
+ {}
+
+\newrobustcmd*{\defbibtabulartwocolumn}[5]{%
+ \long\csdef{extblxtab@env@#1}{#2}%
+ \long\csdef{extblxtab@endenv@#1}{#3}%
+ \long\csdef{extblxtab@tabrow@format@#1}{%
+ \anchorlang{#4} & \driver{#5}\\
+ }%
+}
+
+% Two useful bibmacros for tabular bibliographies
+
+% print the labelname/sortname with editor or translator string if
+% appropriate
+\newbibmacro*{tabular:sortname}{%
+ \ifnameundef{labelname}
+ {\usebibmacro{labeltitle}}
+ {\printnames[sortname]{labelname}%
+ \iffieldequalstr{labelnamesource}{editor}
+ {\setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{editor+othersstrg}}
+ {\iffieldequalstr{labelnamesource}{translator}
+ {\setunit{\printdelim{translatortypedelim}}%
+ \usebibmacro{translator+othersstrg}}
+ {}}}}
+
+% bibitem hook to suppress redundant sortname list
+% useful for \driver since it usually lives in its own group
+\newbibmacro*{tabular:omitsortname}{%
+ \ifnameundef{labelname}
+ {}
+ {\clearname{\thefield{labelnamesource}}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf
new file mode 100644
index 0000000000..11f1bc404c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex
new file mode 100644
index 0000000000..3d9f5da103
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.tex
@@ -0,0 +1,3355 @@
+\documentclass[DIV=9]{scrartcl}
+\usepackage{ifxetex,ifluatex}
+\newif\iffontspec
+\ifxetex
+ \fontspectrue
+\else\ifluatex
+ \fontspectrue
+\else
+ \fontspecfalse
+\fi\fi
+\iffontspec
+ \usepackage{fontspec}
+\else
+ \usepackage[T1]{fontenc}
+ \usepackage[utf8]{inputenc}
+ \input glyphtounicode
+ \pdfgentounicode=1
+\fi
+\usepackage[french,ngerman,british]{babel}
+\usepackage{csquotes}
+\usepackage[useregional]{datetime2}
+\iffontspec\else
+ \usepackage{lmodern}
+\fi
+\usepackage[mono=false]{libertinus}
+\iffontspec
+ \setmonofont[Scale=0.78]{Bitstream Vera Sans Mono}
+ \usepackage{unicode-math}
+ \setmathfont[Scale=MatchUppercase]{libertinusmath-regular.otf}
+\else
+ \usepackage[libertine]{newtxmath}
+ \usepackage[scaled=0.78]{beramono}
+ \usepackage{bm}
+\fi
+\usepackage{microtype}
+\usepackage{hyphenat}
+\usepackage{booktabs}
+\usepackage{multicol}
+\usepackage[svgnames]{xcolor}
+\usepackage{longtable}
+\usepackage{array}
+\newcolumntype{L}[1]{%
+ >{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
+\usepackage[listings, breakable, skins]{tcolorbox}%
+\usetikzlibrary{arrows.meta}
+\usetikzlibrary{shapes.geometric}
+\usepackage[style=ext-authoryear-iecomp, backend=biber]{biblatex}
+\addbibresource{biblatex-examples.bib}
+\addbibresource{biblatex-ext-examples.bib}
+\usepackage{biblatex-ext-tabular}
+\usepackage{biblatex-ext-oa}
+% Normally, the following packages should not be loaded explicitly.
+% Instead, one of them (and *only* one) should be loaded via
+% biblatex-ext-oa's options.
+\usepackage{biblatex-ext-oasymb-tikz}
+% We need to undefine \oasymbol to be able to load the other packages as well.
+\undef\oasymbol
+\undef\DefineOASymbol
+\usepackage{biblatex-ext-oasymb-l3draw}
+% We need to undefine \oasymbol to be able to load the other packages as well.
+\undef\oasymbol
+\undef\DefineOASymbol
+\usepackage{biblatex-ext-oasymb-pict2e}
+
+\makeatletter
+\defbibcheck{examplebib}{%
+ \xifinlist{\thefield{entrykey}}{\extblxdoc@examplebib@list}
+ {}
+ {\skipentry}}
+
+\newcommand*{\exampleprintbib}[1]{%
+ \nocite{#1}%
+ \let\extblxdoc@examplebib@list\empty
+ \def\do##1{\listeadd\extblxdoc@examplebib@list{\detokenize{##1}}}%
+ \docsvlist{#1}%
+ \printbibliography[check=examplebib, heading=none]}
+
+\newcommand*{\exampleprintbibtab}[1]{%
+ \nocite{#1}%
+ \let\extblxdoc@examplebib@list\empty
+ \def\do##1{\listeadd\extblxdoc@examplebib@list{\detokenize{##1}}}%
+ \docsvlist{#1}%
+ \printbibtabular[check=examplebib, heading=none]}
+
+
+\usepackage{ltxdockit}
+\usepackage{btxdockit}
+\usepackage{cleveref}
+\hypersetup{%
+ colorlinks=true,
+ allcolors=spot,
+ bookmarksopen=false,
+ bookmarksnumbered=false,
+ plainpages=false}
+
+\definecolor{highlight1}{RGB}{240, 0, 0}
+\definecolor{highlight2}{RGB}{0,153, 153}
+\definecolor{spot}{rgb}{0,0.2,0.6}
+
+\lstdefinestyle{extblxstylegeneral}{%
+ aboveskip = {0\p@ \@plus 6\p@},
+ belowskip = {0\p@ \@plus 6\p@},
+ tabsize = 2,
+ breaklines = true,
+ breakatwhitespace = true,
+ keepspaces = true,
+ escapeinside = {(*@}{@*)},
+ moredelim = {[is][\ttfamily\bfseries\color{highlight1}]{|}{|}},
+ moredelim = {[is][\ttfamily\bfseries\color{highlight1}]{|1}{1|}},
+ moredelim = {[is][\ttfamily\bfseries\color{highlight2}]{|2}{2|}},
+}
+
+\lstdefinelanguage{extBibTeX}{%
+ morekeywords=[1]{%
+ @article,@artwork,@audio,@bibnote,@book,@bookinbook,@booklet,%
+ @collection,@commentary,@customa,@customb,@customc,@customd,%
+ @custome,@customf,@inbook,@incollection,@inproceedings,%
+ @inreference,@image,@jurisdiction,@legal,@legislation,@letter,%
+ @dataset,
+ @manual,@misc,@movie,@music,@mvcollection,@mvreference,%
+ @mvproceedings,@mvbook,@online,@patent,@performance,@periodical,%
+ @proceedings,@reference,@report,@review,@set,@software,@standard,%
+ @suppbook,@suppcollection,@suppperiodical,@thesis,@unpublished,@video%
+ },
+ morekeywords=[2]{author,title,date,journal,volume,number,pages,doi,
+ eprint,eprinttype,eprintclass},
+ keywordstyle=[1]{\bfseries\spotcolor},
+ keywordstyle=[2]{\spotcolor},
+ sensitive=false,
+}
+
+\lstdefinestyle{extblxstylelatex}{%
+ language = {[LaTeX]TeX},
+ style = {extblxstylegeneral},
+ moretexcs = {
+ dimexpr,arraybackslash,newcolumntype,anchor,driver,plain,plainlang,
+ anchorlang,
+ thefield,
+ setlength,bibhang,addcomma,adddot,addperiod,addcolon,addspace,
+ addnbspace,
+ mkbibbold,mkbibemph,mkbibbrackets,mkbibparens,
+ usebibmacro,newbibmacro,renewbibmacro,setunit,newunit,printfield,printlist,
+ bibopenparen,bibcloseparen,bibopenbracket,bibclosebracket,
+ iflistundef,iffieldundef,ifnameundef,
+ ExecuteBibliographyOptions,
+ defbibtabular,defbibtabulartwocolumn,defbibenvironment,
+ DeclareFieldFormat,DeclareDelimFormat,DeclareDelimcontextAlias,
+ DeclareInnerCiteDelims,UndeclareInnerCiteDelims,DeclareInnerCiteDelimsAlias,
+ DeclareOuterCiteDelims,UndeclareOuterCiteDelims,DeclareOuterCiteDelimsAlias,
+ introcitepunct,volnumdelim,maintitletitledelim,voltitledelim,sernumdelim,
+ volnumdatedelim,locdatedelim,locpubdelim,publocdelim,pubdatedelim,
+ extradateonlycompcitedelim,introcitesep,introcitewidth,introcitesep,
+ DeclareOpenAccessFieldUrl,DeclareOpenAccessEprintUrl,
+ DeclareOpenAccessEprintAlias,DeclareOpenAccessUrlFieldPriority},
+}
+
+\lstdefinestyle{extblxstylebibtex}{%
+ language = {extBibTeX},
+ style = {extblxstylegeneral},
+}
+
+
+\newcommand*{\highlight}[2][1]{\textcolor{highlight#1}{#2}}
+\newcommand*{\highlightbf}[2][1]{\textcolor{highlight#1}{\textbf{#2}}}
+\DeclareFieldFormat{highlight1}{\textcolor{highlight1}{#1}}
+\DeclareFieldFormat{highlight2}{\textcolor{highlight2}{#1}}
+
+\newtcolorbox{bibexample}[1][]{enhanced,
+ colframe=spot!75!black, colback=spot!5!white,
+ #1}
+\newtcblisting{biblatexcode}{enhanced,
+ colframe=black!75!white, colback=black!5!white,
+ listing only,
+ frame hidden,
+ breakable,
+ listing style=extblxstylelatex}
+\newtcblisting{bibtexfile}{enhanced,
+ colframe=black!75!white, colback=black!5!white,
+ listing only,
+ frame hidden,
+ breakable,
+ listing style = extblxstylebibtex}
+
+\newtcbinputlisting{\inputexamplebibfile}[2][]{%
+ listing file={#2},
+ enhanced,
+ colframe=black!75!white, colback=black!5!white,
+ listing only,
+ frame hidden,
+ breakable,
+ listing style = extblxstylebibtex,
+ #1}
+
+\newtcolorbox{warnbox}[1][]{%
+ enhanced,
+ colframe=red, colback=red!5!white,
+ underlay={%
+ \path[draw=none] (interior.south east)
+ rectangle node{\warnsymbol}
+ ([xshift=15mm,yshift=.1cm]interior.north east);},
+ #1}
+
+\newtcolorbox{remindbox}[1][]{%
+ enhanced,
+ colframe=yellow, colback=yellow!5!white,
+ underlay={%
+ \path[draw=none] (interior.south east)
+ rectangle node{\dbendsymbol}
+ ([xshift=15mm,yshift=.1cm]interior.north east);},
+ #1}
+
+\AtUsedriver*{%
+ \let\newblock\relax
+ \let\abx@macro@bibindex\@empty
+ \let\abx@macro@pageref\@empty}
+
+
+% this is taken from ltxdockit.cls, which is not loaded
+\newrobustcmd*{\fnurl}[1][]{\hyper@normalise\ltd@fnurl{#1}}
+\def\ltd@fnurl#1#2{\footnote{#1\hyper@linkurl{\Hurl{#2}}{#2}}}
+
+\newrobustcmd*{\email}{\hyper@normalise\ltd@email}
+\def\ltd@email#1{\href{mailto:#1}{#1}}
+
+% title
+\providecommand*{\titlepage}{}
+\providecommand*{\titlefont}{}
+\renewrobustcmd*{\titlepage}[1]{\setkeys{ltd@ttp}{#1}}
+\renewcommand*{\titlefont}{\bfseries}
+\define@key{ltd@ttp}{title}{\def\ltd@title@title{#1}}
+\define@key{ltd@ttp}{subtitle}{\def\ltd@title@subtitle{#1}}
+\define@key{ltd@ttp}{url}{\def\ltd@title@url{#1}}
+\define@key{ltd@ttp}{author}{\def\ltd@title@author{#1}}
+\define@key{ltd@ttp}{link}{\def\ltd@title@link{#1}}
+\define@key{ltd@ttp}{revision}{\def\ltd@title@revision{#1}}
+\define@key{ltd@ttp}{date}{\def\ltd@title@date{#1}}
+
+\providecommand*{\printtitlepage}{}
+\renewrobustcmd*{\printtitlepage}{%
+ \begingroup
+ \centering\titlefont
+ \begingroup\LARGE
+ \ifundef\ltd@title@url
+ {\ltd@title@title}
+ {\href{\ltd@title@url}{\ltd@title@title}}%
+ \par
+ \endgroup
+ \vspace{0.25\baselineskip}
+ \begingroup\large
+ \ltd@title@subtitle\par
+ \endgroup
+ \expandafter\url\expandafter{\ltd@title@url}\par
+ \begin{multicols}{2}
+ \raggedleft
+ \ltd@title@author\par
+ \expandafter\email\expandafter{\ltd@title@link}\par
+ \raggedright
+ Version \ltd@title@revision\par\ltd@title@date
+ \end{multicols}
+ \endgroup}
+
+\BeforeStartingTOC[toc]{\begin{multicols}{2}}
+\AfterStartingTOC[toc]{\end{multicols}}
+\BeforeTOCHead[toc]{\pdfbookmark[1]{\contentsname}{contents}}
+
+\newrobustcmd*{\tex}{\TeX}
+\newrobustcmd*{\etex}{\mbox{e-TeX}}
+\newrobustcmd*{\pdftex}{pdf\-\tex}
+\newrobustcmd*{\xetex}{Xe\-\tex}
+\newrobustcmd*{\luatex}{Lua\-\tex}
+\newrobustcmd*{\latex}{\LaTeX}%{La\kern-0.07em TeX}
+\newrobustcmd*{\pdflatex}{pdf\-\latex}
+\newrobustcmd*{\xelatex}{Xe\-\latex}
+\newrobustcmd*{\lualatex}{Lua\-\latex}
+\newrobustcmd*{\miktex}{Mik\-\tex}
+\newrobustcmd*{\texlive}{\tex~live}
+\newrobustcmd*{\bibtex}{Bib\kern-0.07em TeX}
+\newrobustcmd*{\lppl}{\latex{} Project Public License}
+\newrobustcmd*{\pdf}{\acr{PDF}}
+\newrobustcmd*{\utf}{\mbox{\acr{UTF}-8}}
+\newrobustcmd*{\pgftikz}{PGF/Ti\emph{k}Z}
+
+\pdfstringdefDisableCommands{%
+ \def\tex{TeX}%
+ \def\etex{e-TeX}%
+ \def\xetex{XeTeX}%
+ \def\latex{LaTeX}%
+ \def\xelatex{XeLaTeX}%
+ \def\bibtex{BibTeX}%
+ \def\lppl{LaTeX Project Public License}%
+ \def\pdf{PDF}%
+ \def\utf{UTF-8}%
+}
+
+\let\accentcolour\spotcolor
+
+\addtokomafont{section}{\accentcolour}
+\addtokomafont{subsection}{\accentcolour}
+\addtokomafont{subsubsection}{\accentcolour}
+
+\renewcommand*{\verbatimfont}{\ttfamily}
+\renewcommand*{\displayverbfont}{\ttfamily}
+\renewcommand*{\marglistfont}{\accentcolour\sffamily\small}
+\renewcommand*{\margnotefont}{\sffamily\small}
+\renewcommand*{\optionlistfont}{\accentcolour\sffamily\displayverbfont}
+\renewcommand*{\ltxsyntaxfont}{\ttfamily}
+\renewcommand*{\ltxsyntaxlabelfont}{\accentcolour\displayverbfont}
+\renewcommand*{\changelogfont}{\normalfont}
+\renewcommand*{\changeloglabelfont}{\accentcolour\sffamily\bfseries}
+\newcommand*{\stylelistlabelfont}{\accentcolour\sffamily\small}
+\newcommand*{\bibfieldformatfont}{\sffamily}
+\newcommand*{\bibfieldformatlabelfont}{\accentcolour\bibfieldformatfont\small}
+
+\newenvironment*{stylelist}
+ {\list{}{%
+ \setlength{\labelwidth}{\marglistwidth}%
+ \setlength{\labelsep}{\marglistsep}%
+ \setlength{\leftmargin}{0pt}%
+ \renewcommand*{\makelabel}[1]{\hss\stylelistlabelfont##1}}%
+ \def\styleitem##1{%
+ \item[{##1}]%
+ \ltd@pdfbookmark{##1}{##1}}}
+ {\endlist}
+
+\newenvironment*{bibfieldformatlist}
+ {\list{}{%
+ \setlength{\labelwidth}{\marglistwidth}%
+ \setlength{\labelsep}{\marglistsep}%
+ \setlength{\leftmargin}{0pt}%
+ \renewcommand*{\makelabel}[1]{\hss\bibfieldformatlabelfont##1}}%
+ \def\bibfieldformatitem##1{%
+ \item[{##1}]%
+ \ltd@pdfbookmark{##1}{##1}}}
+ {\endlist}
+
+\newenvironment*{keymarglistbook}
+ {\marglist
+ \setlength{\itemsep}{0pt}%
+ \raggedright
+ \let\@@item\item
+ \def\keyitem[##1]{%
+ \@@item[{##1}]%
+ \ltd@pdfbookmark{##1}{##1}}}
+ {\endmarglist}
+
+% modified for correct measurements
+\def\ltd@option@i#1#2#3#4[#5]{%
+ \item[#2]%
+ \ltd@pdfbookmark{#1}{#1}%
+ \begingroup\raggedright
+ \ltd@textverb{=}%
+ \settowidth\@tempdimb{\ltd@textverb{=}}%
+ \settowidth\@tempdimc{\optionlistfont#2}%
+ \ifdim\@tempdimc>\marglistwidth
+ \@tempdimc=\dimexpr\@tempdimc-\marglistwidth\relax
+ \else
+ \@tempdimc=0pt
+ \fi
+ \@tempdima=\dimexpr\linewidth-\@tempdimb-\@tempdimc\relax
+ \ifblank{#4}
+ {}
+ {\settowidth\@tempdimb{default: #4}%
+ \@tempdima=\dimexpr\@tempdima-\@tempdimb-2em\relax}%
+ \parbox[t]{\@tempdima}{\raggedright #3}%
+ \ifblank{#4}
+ {}
+ {\hfill default:~#4}%
+ \ifblank{#5}
+ {}
+ {\marginpar{\margnotefont #5}}%
+ \par\endgroup
+ \nobreak\vspace{\itemsep}}
+
+% inject a label additional to the bookmark so we can link stuff
+\let\exltd@pdfbookmark\ltd@pdfbookmark
+\def\ltd@pdfbookmark#1#2{%
+ \phantomsection\label{exltd@itm@#1}%
+ \exltd@pdfbookmark{#1}{#2}}
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+\newcommand*{\biblatexversion}{\extblx@requiredbiblatexversion}
+\def\exltd@isofydate#1/#2/#3{#1-#2-#3}
+\newcommand*{\biblatexdate}{\extblx@requiredbiblatexdate}
+\expandafter\def\expandafter\biblatexdate\expandafter{%
+ \expandafter\exltd@isofydate\extblx@requiredbiblatexdate}
+
+\AtEndPreamble{%
+ \deflength{\marglistwidth}{(\oddsidemargin+2cm)*85/100}}
+
+\newcommand*{\tikztextmark}[2]{%
+ \tikz[remember picture,baseline,inner sep=0pt]\node [anchor=base] (#1) {#2};}
+
+% *{<cmd>}{<x-shift>}{<y-shift>}
+% unstarred version for commands defined by biblatex-ext
+% starred version for standard biblatex commands
+\def\punctarrow{%
+ \@ifstar\punctarrow@ii\punctarrow@i}
+
+\def\punctarrow@i{%
+ \def\punctarrow@cmdfont{\bfseries}%
+ \def\punctarrow@hyperref##1##2{%
+ \hyperref[exltd@itm@##1]{##2}%
+ }%
+ \punctarrow@iii
+}
+
+\def\punctarrow@ii{
+ \def\punctarrow@cmdfont{\itshape}%
+ \let\punctarrow@hyperref\@secondoftwo
+ \punctarrow@iii
+}
+
+\def\punctarrow@iii#1#2#3{%
+ \ifdimcomp{#2}{<}{0pt}
+ {\def\punctarrow@nodeanchor{east}}
+ {\def\punctarrow@nodeanchor{west}}%
+ \draw[spot,thick,latex-,rounded corners] (#1) |- ++ (#2,#3)
+ node[anchor=\punctarrow@nodeanchor,text = black]
+ {\punctarrow@hyperref{#1}{\punctarrow@cmdfont\cmd{#1}}};%
+}
+
+% By Stefan Kottwitz, see https://tex.stackexchange.com/a/799/35864
+\newcommand*\justify{%
+ \fontdimen2\font=0.4em% interword space
+ \fontdimen3\font=0.2em% interword stretch
+ \fontdimen4\font=0.1em% interword shrink
+ \fontdimen7\font=0.1em% extra space
+ \hyphenchar\font=`\-% allowing hyphenation
+}
+
+% no \mbox here, we may have to break things
+\renewrobustcmd*{\sty}[1]{{\verbatimfont\justify #1}}
+\newrobustcmd*{\blxstyle}[1]{{\verbatimfont\justify #1}}
+\newrobustcmd*{\filename}[1]{{\verbatimfont\justify #1}}
+\renewrobustcmd*{\bibfield}[1]{\sty{#1}}
+\renewrobustcmd*{\opt}[1]{\sty{#1}}
+\newrobustcmd*{\optval}[1]{\sty{#1}}
+\newrobustcmd*{\bibmacro}[1]{\sty{#1}}
+\renewrobustcmd*{\bibtype}[1]{\sty{@#1}}
+\renewrobustcmd*{\cmd}[1]{\sty{\textbackslash #1}}
+\let\cs\cmd
+\newrobustcmd*{\bibfieldformat}[1]{{\bibfieldformatfont #1}}
+
+\newrobustcmd*{\gencode}[1]{{\verbatimfont\justify #1}}
+
+\def\exltd@buildhypercmd@i#1{%
+ \expandafter\newrobustcmd\expandafter*\expandafter
+ {\csname hyper#1@i\endcsname}[2][]{%
+ \hyperref[exltd@itm@##1]{\csname #1\endcsname{##2}}}
+ \csdef{hyper#1}{\@dblarg{\csname hyper#1@i\endcsname}}}
+
+\def\exltd@buildhypercmd{\forcsvlist{\exltd@buildhypercmd@i}}
+
+\exltd@buildhypercmd{cmd,opt,bibmacro,len,blxstyle,sty,bibfield,bibfieldformat,
+ filename}
+
+\newrobustcmd*{\hyperkvopt}[2]{{%
+ \verbatimfont\hyperref[exltd@itm@#1]{#1}\penalty\@M
+ \hskip 0em plus 0.15em\relax
+ =\penalty\hyphenpenalty
+ \hskip 0em plus 0.15em\relax #2}}
+
+\newcommand*{\ctan}{\mkbibacro{CTAN}}
+\newcommand*{\gitbaseurl}{https://github.com/moewew/biblatex-ext}
+\newcommand*{\extblxversion}{0.8}
+\newcommand*{\biber}{Biber}
+\newcommand*{\gitissuelink}[1]{%
+ \href{\gitbaseurl/issues/#1}{issue \##1 on github}}
+
+\newrobustcmd*{\CSdelim}{%
+ \textcolor{spot}{\margnotefont\footnotesize context sensitive}}
+\newrobustcmd*{\CSdelimMark}{%
+ \leavevmode\marginpar{\CSdelim}}
+
+\newcommand*{\mpdl}{$\langle$}
+\newcommand*{\mpdr}{$\rangle$}
+
+\iffontspec
+ \newcommand*{\hmpdl}{$\langle$}
+ \newcommand*{\hmpdr}{$\rangle$}
+\else
+ \newcommand*{\hmpdl}{$\bm{\langle}$}
+ \newcommand*{\hmpdr}{$\bm{\rangle}$}
+\fi
+
+\iffontspec
+\def\textvisiblespace{%
+ \raisebox{-2.2pt}{%
+ \mbox{\kern.04em\vrule \@height.5ex \@width.12ex}%
+ \vbox{\hrule \@width.2em \@height.12ex}%
+ \hbox{\vrule \@height.5ex \@width.12ex}%
+ \kern.04em}}
+\fi
+
+% Bourbaki dangerous bend symbol by Heiko Oberdiek
+% https://tex.stackexchange.com/users/16967/heiko-oberdiek
+% https://tex.stackexchange.com/a/262510/35864
+\newcommand*{\dbendsymbol@tikz}{%
+ \begin{tikzpicture}[
+ line cap=but,
+ line join=round,
+ x=1.2em,
+ line width=2pt,
+ y=2*(height("Z")-\pgflinewidth)*(1-sin(10)),
+ rotate=-10,
+ rounded corners=1.5pt,]
+ \draw (.5,.5) node[scale=2,draw,diamond,fill=yellow,color=yellow] {};
+ \draw (1, 0) -- (0, 0) -- (1, 1) -- (0, 1);
+ \end{tikzpicture}}
+
+\newsavebox{\dbendsymbol@box}
+\sbox{\dbendsymbol@box}{\dbendsymbol@tikz}
+\newcommand*{\dbendsymbol}{\usebox{\dbendsymbol@box}}
+
+\newcommand{\warnsymbol}{%
+ \makebox[2em][c]{%
+ \makebox[0pt][c]{\raisebox{.26em}{\LARGE\bfseries!}}%
+ \makebox[0pt][c]{%
+ \fontsize{40}{40}\selectfont\color{red}$\bigtriangleup$}}}
+
+\newcommand*{\marginwarn}{%
+ \leavevmode\marginpar{\raisebox{-1.5em}{\warnsymbol}}}
+
+\makeatother
+
+\titlepage{%
+ title = {The \sty{biblatex-ext} Bundle},
+ subtitle = {Extensions for the \sty{biblatex} standard styles},
+ url = {\gitbaseurl},
+ author = {Moritz Wemheuer},
+ link = {mwemheu@gmail.com},%
+ revision = {\extblxversion},
+ date = {\DTMDate{2019-08-25}},
+}
+
+\hypersetup{%
+ pdftitle = {The biblatex-ext Bundle},
+ pdfsubject = {Extensions for the \sty{biblatex} standard styles},
+ pdfauthor = {Moritz Wemheuer},
+ pdfkeywords = {latex, biblatex, bibtex, bibliography, references, citation},
+}
+
+\hyphenation{%
+ star-red
+ un-star-red
+ bib-lio-gra-phy
+ white-space
+ bib-open-paren
+ bib-close-paren
+ bib-open-bracket
+ bib-close-bracket
+ main-title-after-title
+ jour-vol-delim
+ in-name-before-title
+ tikz-picture
+ Define-OA-Symbol
+}
+
+
+\begin{document}
+
+\printtitlepage
+\tableofcontents
+
+\section{Introduction}\label{sec:int}
+\subsection{About}
+The \sty{biblatex-ext} bundle provides an extended version of the standard
+styles that come with \sty{biblatex}.
+For each standard style this bundle provides a style with the same name
+prefixed with \blxstyle{ext-} which can be used as a drop-in replacement for the
+standard style~-- for example, the replacement for \blxstyle{authoryear-icomp}
+is called \hyperblxstyle{ext-authoryear-icomp}.
+
+The aim of the styles of this bundle is to offer a simple interface to change
+some of the stylistic decisions made for the standard styles that would
+otherwise need cumbersome and tedious redefinitions.
+Additionally, some customisation features that were not deemed appropriate
+for inclusion in the \sty{biblatex} kernel are provided.
+Other than that the styles are as close to the standard styles as possible.
+They do not attempt to offer options or commands for customisations that
+are already fairly simple to achieve with the tools provided by the standard
+styles.\footnote{Please be gentle and allow for a lot of wiggle room for what
+exactly \enquote{simple} means. And don't get mad if the principle is not
+followed at all times and the occasional solution for things that already are
+\enquote{simple enough} pop up here and there.}
+
+The initial motivation for this bundle was what has now become the option
+\hyperopt{innamebeforetitle}.
+It is fairly straighforward to print the name of the editor of an
+\bibtype{incollection} before the \bibfield{booktitle}.
+But if one does not want to resort to clever tricks,%
+\footnote{See \url{https://tex.stackexchange.com/q/122218/} and
+\url{https://tex.stackexchange.com/q/173638/} for example.}
+the modifications needed to do this in a stable, safe and clean manner by
+redefining the bibliography drivers can easily amass hundred lines of code~--
+code you may not want to see in your preamble.
+Some contributed \sty{biblatex} styles already place the editor in the
+desired position, but you may not want to commit to the other changes implied
+by switching to one of those styles.
+Especially styles written for the sole purpose of implementing the requirements
+of a particular style guide may have to go to great lengths to do so and are
+therefore not as easily modified as the standard styles.
+The styles of this bundle, on the other hand, try to stay as close to the
+standard styles as possible both in output and implementation to allow you
+to customise the styles with minimum additional effort over the standard styles.
+
+
+A few words of warning:
+The styles of this bundle are only really useful if you want to use one of their
+features to avoid having to go through the lengthy and tedious redefinitions the
+standard styles would require.
+Before you get involved in modifying the standard styles or one of the styles
+of this bundle, you may want to have a look at the host of other styles
+available for \sty{biblatex},\fnurl{https://www.ctan.org/topic/biblatex}
+maybe you are lucky and the style you are looking for has already been
+implemented by someone else.
+As was the intention, most methods to modify the standard styles are also
+applicable to the styles of this bundle, but you may break some of their
+features if you happen to modify something that the \blxstyle{ext-} styles
+redefine themselves.
+While many contributed \sty{biblatex} styles are examples of good \sty{biblatex}
+style coding, this can not be said of all of the files included in this bundle.
+Especially the citation styles for compact citations have to work harder
+to implement the citation delimiter feature properly.
+So if you want to get inspired for your \sty{biblatex} coding, be warned that
+terrible things lurk in the \filename{.cbx} files.
+The standard \filename{.cbx} files will give you a much better impression of how
+things should be done.
+
+
+\subsection{Requirements}\label{sec:req}
+The use of the styles requires a current version of the \sty{biblatex} package.
+At the time of writing the latest version of \sty{biblatex} is
+\biblatexversion{} (dated \biblatexdate),
+that version is required for the styles to work properly.
+A warning will be issued if you use an older version.
+You may choose to ignore that warning, but the styles can not be guaranteed to
+work properly in that case:
+you might get other warnings or errors, and some features of the style might
+just fail silently.
+
+Use of the \biber{} backend is strongly encouraged.
+Most of the new features of this bundle do not require \biber{} explicitly in
+their implementation, but many \sty{biblatex} standard features only work
+properly with \biber{}.
+
+\subsection{Compatibility with earlier versions}\label{sec:backw}
+In an ideal world all changes to the styles in this bundle would be fully
+backwards compatible. Unfortunately we do not live in this ideal world.
+Most changes to this bundle should introduce new features that have little
+relevant impact on existing functionality. But the occasional change
+may have more lasting consequences and may cause existing customisations to
+fail.
+In fact all changes have the potential to break someone's code, since
+\sty{biblatex} styles have little to no distinction between public and internal
+code.
+Still, some changes are more likely to be problematic than others and those
+should be kept to a minimum. They can, however, be required to move development
+forward.
+
+If possible, backwards compatiblity measures that allow old code to
+continue to work are in place. Sometimes that is not feasible and in those
+cases the next best solution is to warn if old code is used, so please check
+the log file for warnings~-- especially after an update.
+But at times not even that is possible, so it is always a good idea to consult
+the change history after an update and to examine the output with extra
+scrutiny.
+Higher-level changes are found in the revision history in \cref{sec:log},
+more technical changes and commentary can be found in \filename{CHANGES.md},
+the full set of changes can be investigated by comparing the tagged and
+publicly available source code.
+
+\subsection{Installation}\label{sec:install}
+This style bundle is available on \ctan.%
+\fnurl{https://ctan.org/pkg/biblatex-ext}
+The current release is also available in \miktex{} and \texlive{} 2018 or
+newer.
+If at all possible you should install this bundle via your \tex{} distribution
+(using \miktex{} Console\fnurl{https://miktex.org/howto/miktex-console} or
+\gencode{tlmgr} for \texlive
+\fnurl{https://www.tug.org/texlive/pkginstall.html}).
+If you must install this package manually, get the files from \ctan{}
+and install the \filename{.bbx}, \filename{.cbx}, \filename{.def},
+\filename{.sty} and \filename{.lua} files preferably to
+\path{tex/latex/biblatex-ext} of your local or home \TeX{} tree%
+\fnurl{https://texfaq.org/FAQ-inst-wlcf}, the other
+files (\path{CHANGES.md}, \path{README.md}, \path{biblatex-ext.tex},
+\path{biblatex-ext.pdf} and \path{biblatex-ext-examples.bib}) go into
+\path{doc/latex/biblatex-ext}. You may have to refresh your file name database
+afterwards, so \tex{} can find the files.
+
+\subsection{License}\label{sec:license}
+Permission is granted to copy, distribute and\slash or modify this software
+under the terms of the \lppl, version 1.3c%
+\fnurl{https://www.latex-project.org/lppl/lppl-1-3c.txt}
+or (at your option) any later version%
+\fnurl{https://www.latex-project.org/lppl.txt}.
+This bundle is maintained by Moritz Wemheuer (\textcopyright 2017--2019).
+
+
+\subsection{Feedback}\label{sec:feedback}
+You can use the \sty{biblatex-ext} project page on GitHub%
+\footnote{\url{\gitbaseurl}} to report bugs and
+submit suggestions and feature requests, or you can do so via email.
+
+If you do not want to report a bug or request a feature, but are simply in need
+of assistance, you might want to consider posting your question on the
+\texttt{comp.text.tex} newsgroup or \tex{}~--~\latex{} Stack Exchange.%
+\fnurl{https://tex.stackexchange.com/questions/tagged/biblatex}
+If after a consultation on one of these sites it turns out you have happened
+upon a bug or that you can formulate a request for a new feature that could be
+useful, please head over to GitHub or send me an email.
+
+\section{Use}\label{sec:use}
+The \sty{biblatex-ext} bundle is a collection of \sty{biblatex} style files.
+You can load the styles exactly as you would load the standard styles:
+\begin{biblatexcode}
+\usepackage[style=(*@\prm{style}@*)]{biblatex}
+\end{biblatexcode}
+The naming of the styles follows the scheme
+\mbox{\blxstyle{ext-}\prm{standard style}}, e.g.,
+the style corresponding to \blxstyle{authoryear-icomp} is called
+\hyperblxstyle{ext-authoryear-icomp}.
+
+This manual assumes familiarity with the concepts of \sty{biblatex} and does
+not attempt to explain any of the standard \sty{biblatex} features, so you may
+want to have the \sty{biblatex} documentation%
+\fnurl{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf}
+at hand to fully appreciate what is going on.
+If you are new to \sty{biblatex} the three hundred odd pages of the manual
+can be hard to stomach at first, so you may want to have a look at a more
+gentle introduction.
+Of the many introductory texts and tutorials available on the internet%
+\fnurl{https://tex.stackexchange.com/q/13509/35864}
+the author particularly likes
+Knut Hegna and Dag Langmyhr's \emph{Local Guide to \sty{biblatex}}%
+\fnurl{http://dag.at.ifi.uio.no/public/doc/biblatex-guide.pdf}
+and Paul Stanley's \emph{\sty{biblatex}~-- An Easier Read}%
+\fnurl{https://github.com/PaulStanley/biblatex-tutorial/releases}.
+French speakers may want to consider Maïeul Rouquette's
+\foreignlanguage{french}{\emph{(Xe)\LaTeX{} Appliqué aux sciences humaines}}
+available on \ctan\fnurl{https://ctan.org/pkg/latex-sciences-humaines}.
+If you read German you may be interested in Dominik Waßenhoven's two-part
+series \foreignlanguage{ngerman}{\emph{Bibliographien erstellen mit
+\sty{biblatex}}} in \foreignlanguage{ngerman}{\emph{Die \TeX nische Komödie}}
+2/2008\fnurl{https://www.dante.de/DTK/Ausgaben/2008-2.pdf} (pp.~53--75)
+and 4/2008\fnurl{https://www.dante.de/DTK/Ausgaben/dtk08-4.pdf} (pp.~31--51).
+Please keep in mind that some of these texts were written a while ago and
+that \sty{biblatex} is actively developed: technical details may have changed
+and new features make some things easier.
+
+\clearpage
+\section{Styles}\label{sec:styles}
+This bundle provides an extended version of each standard style as well as a
+few new styles.
+\subsection{Standard styles}\label{sec:styles:standard}
+Please refer to the \sty{biblatex} documentation%
+\fnurl{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf}
+and the style examples%
+\fnurl{http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/examples/}
+for a more detailed description of each standard style.
+The relations between the styles are exactly as in their standard counterparts.
+The \blxstyle{ext-} styles only build on top of the standard files.
+\begin{stylelist}
+\styleitem{ext-numeric}
+An extended version of the standard \blxstyle{numeric} style for citations with
+numeric labels.
+\begin{bibexample}[]
+[1, 2, 5, 6, 7]
+\end{bibexample}
+
+\styleitem{ext-numeric-comp}
+An extended version of the standard \blxstyle{numeric-comp} style.
+Similar to \blxstyle{ext-numeric}, but citation labels are
+compressed to give \enquote{[1--3]} instead of \enquote{[1, 2, 3]}.
+\begin{bibexample}[]
+[1, 2, 5--7]
+\end{bibexample}
+
+\styleitem{ext-numeric-verb}
+An extended version of the standard \blxstyle{numeric-verb} style.
+This style is similar to the \blxstyle{numeric} style, but each citation label
+is in its own set of brackets: \enquote{[1], [2], [3]}.
+\begin{bibexample}[]
+[1], [3], [5], [6], [7]
+\end{bibexample}
+
+\styleitem{ext-alphabetic}
+An extended version of the standard \blxstyle{alphabetic} style for citations
+with alphabetic labels derived from author name and year.
+\begin{bibexample}[]
+[SR98, Knu86c]
+\end{bibexample}
+
+\styleitem{ext-alphabetic-verb}
+An extended version of the standard \blxstyle{alphabetic-verb} style.
+This style is based on \blxstyle{ext-alphabetic}, but like
+\blxstyle{ext-numeric-verb} places each citation label in its own pair of
+brackets: \enquote{[SR98], [Knu86c]}.
+\begin{bibexample}[]
+[SR98], [Knu86c]
+\end{bibexample}
+
+\styleitem{ext-authoryear}
+An extended version of the standard \blxstyle{authoryear} style for citations
+using author name and year.
+\begin{bibexample}
+Sigfridsson and Ryde 1998
+\end{bibexample}
+
+\styleitem{ext-authoryear-comp}
+An extended version of the standard \blxstyle{authoryear-comp} style.
+The style is based on the author-year citations of \blxstyle{ext-authoryear},
+but several works by the same author are compressed by not displaying the
+author multiple times: \enquote{Knuth 1984, 1986} instead of
+\enquote{Knuth 1984; Knuth 1986}.
+\begin{bibexample}
+Knuth 1984, 1986
+\end{bibexample}
+
+\styleitem{ext-authoryear-ibid}
+An extended version of the standard \blxstyle{authoryear-ibid} style.
+This style is similar to \blxstyle{ext-authoryear}, but repeated citations are
+replaced with \enquote{ibidem}.
+\begin{bibexample}
+Knuth 1984\quad ibid.
+\end{bibexample}
+
+\styleitem{ext-authoryear-icomp}
+An extended version of the standard \blxstyle{authoryear-icomp} style.
+This style combines the two styles \blxstyle{ext-authoryear-comp} and
+\blxstyle{ext-authoryear-ibid}.
+\begin{bibexample}
+Knuth 1984, 1986 \quad Sigfridsson and Ryde 1998 \quad ibid.
+\end{bibexample}
+
+\styleitem{ext-authortitle}
+An extended version of the standard \blxstyle{authortitle} style for citations
+by author and title.
+\begin{bibexample}
+Maron, \emph{Animal Triste}
+\end{bibexample}
+
+\styleitem{ext-authortitle-comp}
+An extended version of the standard \blxstyle{authortitle-comp} style.
+This style is based on \blxstyle{ext-authortitle} and compresses several
+citations by the same author just like \blxstyle{ext-author\-year-comp}:
+\enquote{Aristotle, \emph{Physics}, \emph{Poetics}} instead of
+\enquote{Aristotle, \emph{Physics}; Aristotle, \emph{Poetics}}.
+\begin{bibexample}
+Aristotle, \emph{Physics}, \emph{Poetics}
+\end{bibexample}
+
+\styleitem{ext-authortitle-ibid}
+An extended version of the standard \blxstyle{authortitle-ibid} style.
+This style is similar to \blxstyle{ext-authortitle}, but replaces repeated
+citations of the same work with \enquote{ibidem}.
+\begin{bibexample}
+Maron, \emph{Animal Triste}\quad ibid.
+\end{bibexample}
+
+\styleitem{ext-authortitle-icomp}
+An extended version of the standard \blxstyle{authortitle-icomp} style.
+This style combines \blxstyle{ext-authortitle-comp} and
+\blxstyle{ext-authortitle-ibid}.
+\begin{bibexample}
+Aristotle, \emph{Physics}, \emph{Poetics}\quad Maron, \emph{Animal Triste}\quad
+ibid.
+\end{bibexample}
+
+\styleitem{ext-authortitle-terse}
+An extended version of the standard \blxstyle{authortitle-terse} style.
+This style is similar to \blxstyle{ext-authortitle}, but the title is omitted
+in citations if there is only one work by the relevant author.
+\begin{bibexample}
+Sigfridsson and Ryde \quad Aristotle, \emph{Physics}; Aristotle, \emph{Poetics}
+\end{bibexample}
+
+\styleitem{ext-authortitle-tcomp}
+An extended version of the standard \blxstyle{authortitle-tcomp} style.
+This style combines \blxstyle{ext-authortitle-terse} and
+\blxstyle{ext-authortitle-comp}.
+\begin{bibexample}
+Sigfridsson and Ryde \quad Aristotle, \emph{Physics}, \emph{Poetics}
+\end{bibexample}
+
+\styleitem{ext-authortitle-ticomp}
+An extended version of the standard \blxstyle{authortitle-ticomp} style.
+This style combines \blxstyle{ext-authortitle-terse},
+\blxstyle{ext-authortitle-comp} and \blxstyle{ext-authortitle-ibid}.
+\begin{bibexample}
+Aristotle, \emph{Physics}, \emph{Poetics} \quad Sigfridsson and Ryde \quad ibid.
+\end{bibexample}
+
+\styleitem{ext-verbose}
+An extended version of the standard \blxstyle{verbose} style.
+This style shows the full bibliographic reference the first time a work is
+cited.
+
+\styleitem{ext-verbose-ibid}
+An extended version of the standard \blxstyle{verbose-ibid} style.
+Based on \blxstyle{ext-verbose}, repeated citations to the same work are
+replaced with \enquote{ibidem}.
+
+\styleitem{ext-verbose-note}
+An extended version of the standard \blxstyle{verbose-note} style.
+Based on \blxstyle{ext-verbose} and intended for use in footnotes, subsequent
+citations link back to the footnote the entry was cited at first and in full.
+
+\styleitem{ext-verbose-inote}
+An extended version of the standard \blxstyle{verbose-inote} style.
+Similar to \blxstyle{verbose-note}, but repeated citations to the same work are
+replaced with \enquote{ibidem}.
+
+\styleitem{ext-verbose-trad1}
+An extended version of the standard \blxstyle{verbose-trad1} style.
+This style makes extensive use of scholarly abbreviations and is otherwise
+similar to \blxstyle{ext-verbose}.
+
+\styleitem{ext-verbose-trad2}
+An extended version of the standard \blxstyle{verbose-trad2} style.
+The style is similar to \blxstyle{ext-verbose-inote} and
+uses scholarly abbreviations to shorten citations.
+
+\styleitem{ext-verbose-trad3}
+An extended version of the standard \blxstyle{verbose-trad3} style.
+This style is similar to \blxstyle{ext-verbose-trad2}.
+\end{stylelist}
+
+\subsection{New styles}\label{sec:styles:new}
+The following styles are not mere extensions of a particular standard style,
+instead they implement new combinations or extensions of the concepts available
+in the standard styles.
+\begin{stylelist}
+\styleitem{ext-authoryear-ecomp}
+An author-year citation that is even more compact than
+\blxstyle{ext-authoryear-comp}, it compresses lists of \bibfield{extradate}
+letters from \enquote{Knuth 1986a,b,c} to \enquote{Knuth 1986a\bibrangedash c}.
+\begin{bibexample}
+Sigfridsson and Ryde 1998 \quad Knuth 1986a\bibrangedash c
+\end{bibexample}
+
+\styleitem{ext-authoryear-iecomp}
+An author-year citation that is even more compact than
+\blxstyle{ext-authoryear-icomp}, it compresses lists of \bibfield{extradate}
+letters from \enquote{Knuth 1986a,b,c} to \enquote{Knuth 1986a\bibrangedash c}.
+\begin{bibexample}
+Sigfridsson and Ryde 1998 \quad ibid.\quad Knuth 1986a\bibrangedash c
+\end{bibexample}
+
+\styleitem{ext-authoryear-terse}
+An author-year citation style that suppresses years for author lists with only
+one work in the bibliography.
+This style is like \blxstyle{ext-authortitle-terse}, but it is based on
+\blxstyle{ext-authoryear} and not on \blxstyle{ext-authortitle}.
+\begin{bibexample}
+Sigfridsson and Ryde \quad Knuth 1984 \quad Knuth 1986
+\end{bibexample}
+
+\styleitem{ext-authoryear-tcomp}
+A compact author-year citation style that suppresses years for author lists
+with only one work in the bibliography.
+This style is like \blxstyle{ext-authortitle-tcomp}, but it is based on
+\blxstyle{ext-authoryear} and not on \blxstyle{ext-authortitle}.
+\begin{bibexample}
+Sigfridsson and Ryde \quad Knuth 1984, 1986
+\end{bibexample}
+
+\styleitem{ext-authoryear-tecomp}
+A compact author-year citation style that combines
+\blxstyle{ext-authoryear-tcomp} and \blxstyle{ext-authoryear-ecomp}.
+\begin{bibexample}
+Sigfridsson and Ryde \quad Knuth 1984, 1986a\bibrangedash c
+\end{bibexample}
+
+\styleitem{ext-authoryear-ticomp}
+A compact author-year citation style with \enquote{ibidem} function that
+suppresses years for author lists with only one work in the bibliography.
+This style is like \blxstyle{ext-authortitle-ticomp}, but it is based on
+\blxstyle{ext-authoryear} and not on \blxstyle{ext-authortitle}.
+\begin{bibexample}
+Sigfridsson and Ryde \quad ibid. \quad Knuth 1984, 1986
+\end{bibexample}
+
+\styleitem{ext-authoryear-teicomp}
+A compact author-year citation style that combines
+\blxstyle{ext-authoryear-ticomp} and \blxstyle{ext-authoryear-iecomp}.
+\begin{bibexample}
+Sigfridsson and Ryde \quad ibid. \quad Knuth 1984, 1986a\bibrangedash c
+\end{bibexample}
+
+\end{stylelist}
+
+\clearpage
+\section{Options}\label{sec:opt}
+All options of the \sty{biblatex} package are supported and each style supports
+the options of its standard counterpart.
+
+\subsection{General options}\label{sec:opt:gen}
+Additionally, all styles support the following options in global, per-type and
+per-entry scope.
+The default values are such that the styles can be used as drop-in replacement
+for the standard files without significant changes in output.
+
+\begin{optionlist}
+\boolitem[true]{articlein}
+Whether or not to display \enquote{in:} before the journal information in
+\bibtype{article} entries.
+All other entry types are not affected by this option.
+
+\begingroup
+\makeatletter
+\togglefalse{bbx:doi}
+\DeclareFieldFormat{highlighthere}{%
+ \iffieldequalstr{entrykey}{sigfridsson}
+ {\textcolor{highlight1}{#1}}
+ {\iffieldequalstr{entrykey}{westfahl:space}
+ {\textcolor{highlight2}{#1}}
+ {#1}}}
+\renewbibmacro*{in:}{%
+ \blx@begunit\blx@endunit
+ \printtext[highlighthere]{%
+ \printtext{%
+ \bibstring{in}\intitlepunct}}}
+
+\begin{bibexample}[title={\kvopt{articlein}{true}}]
+\toggletrue{bbx:articlein}
+\exampleprintbib{sigfridsson,westfahl:space}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{articlein}{false}}]
+\togglefalse{bbx:articlein}
+\exampleprintbib{sigfridsson,westfahl:space}
+\end{bibexample}
+\makeatother
+\endgroup
+
+\boolitem[false]{citexref}
+This option controls if \bibtype{inbook}, \bibtype{incollection} and
+\bibtype{inproceedings} entries that are tied to a parent entry with
+\bibfield{xref} or \bibfield{crossref} should cite their parent in the
+bibliography if the parent is listed in the bibliography as a separate entry.
+With the default setting \kvopt{citexref}{false} the parent is not cited, the
+entry is shown as in the standard styles. If the option is set to
+\optval{true}, the block following the \enquote{in:} is replaced by a citation
+to the parent entry.
+The option itself does \emph{not} cause the parent entry to be added to the
+bibliography, this needs to happen either explicitly by citing the parent
+(this includes \cmd{nocite}) or implicitly via the \opt{minxrefs} or
+\opt{mincrossrefs} option.
+
+\nocite{westfahl:frontier}
+\begin{bibexample}[title={\kvopt{citexref}{true}}]
+\makeatletter
+\renewbibmacro*{crosscite}[1]{%
+ \printtext[highlight1]{%
+ \iftoggle{bbx:citexref}
+ {\iffieldundef{crossref}
+ {\iffieldundef{xref}
+ {\usebibmacro{#1}}
+ {\printtext{\bbx@xrefcite{\thefield{xref}}}}}
+ {\printtext{\bbx@xrefcite{\thefield{crossref}}}}}
+ {\usebibmacro{#1}}}}
+\makeatother
+\toggletrue{bbx:citexref}
+\exampleprintbib{westfahl:space}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{citexref}{false}}]
+\makeatletter
+\renewbibmacro*{crosscite}[1]{%
+ \printtext[highlight1]{%
+ \iftoggle{bbx:citexref}
+ {\iffieldundef{crossref}
+ {\iffieldundef{xref}
+ {\usebibmacro{#1}}
+ {\printtext{\bbx@xrefcite{\thefield{xref}}}}}
+ {\printtext{\bbx@xrefcite{\thefield{crossref}}}}}
+ {\usebibmacro{#1}}}}
+\makeatother
+\togglefalse{bbx:citexref}
+\exampleprintbib{westfahl:space}
+\end{bibexample}
+
+\boolitem[false]{innamebeforetitle}
+Whether or not the \bibfield{editor} should be moved before the
+\bibfield{booktitle} field for \bibtype{inbook}, \bibtype{incollection} and
+\bibtype{inproceedings} entries.
+
+\begin{bibexample}[title={\kvopt{innamebeforetitle}{true}}]
+\makeatletter
+\renewbibmacro*{bbx:in:editor}[1]{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printtext[highlight1]{%
+ \ifboolexpr{togl {bbx:innameidem} and test {\bbx@ineditoridem}}
+ {\bibstring[\mkibid]{idem\thefield{gender}}}
+ {\printnames[ineditor]{editor}}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{#1}}%
+ \clearname{editor}}
+ {}}
+\makeatother
+\toggletrue{bbx:innamebeforetitle}
+\exampleprintbib{pines}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{innamebeforetitle}{false}}]
+\renewbibmacro*{byeditor+others}{%
+ \ifnameundef{editor}
+ {}
+ {\printtext[highlight1]{%
+ \usebibmacro{byeditor+othersstrg}%
+ \setunit{\addspace}%
+ \printnames[byeditor]{editor}%
+ \newunit}
+ \clearname{editor}}%
+ \usebibmacro{byeditorx}%
+ \usebibmacro{bytranslator+others}}
+\togglefalse{bbx:innamebeforetitle}
+\exampleprintbib{pines}
+\end{bibexample}
+
+\boolitem[false]{innameidem}
+Whether or not the \bibfield{editor} of the \bibfield{booktitle}
+for the entry types \bibtype{inbook}, \bibtype{incollection} and
+\bibtype{inproceedings} is replaced by \enquote{idem} in case the
+\bibfield{editor} and \bibfield{author} name lists coincide.
+This option only has an effect if \hyperopt{innamebeforetitle} is set to
+\optval{true}.
+
+\begin{bibexample}[title={\kvopt{innameidem}{true}}]
+\togglefalse{bbx:isbn}
+\makeatletter
+\renewbibmacro*{bbx:in:editor}[1]{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printtext[highlight1]{%
+ \ifboolexpr{togl {bbx:innameidem} and test {\bbx@ineditoridem}}
+ {\bibstring[\mkibid]{idem\thefield{gender}}}
+ {\printnames[ineditor]{editor}}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{#1}%
+ \clearname{editor}}}
+ {}}
+\makeatother
+\toggletrue{bbx:innamebeforetitle}\toggletrue{bbx:innameidem}
+\exampleprintbib{gaonkar:in}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{innameidem}{false}}]
+\togglefalse{bbx:isbn}
+\makeatletter
+\renewbibmacro*{bbx:in:editor}[1]{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\printtext[highlight1]{%
+ \ifboolexpr{togl {bbx:innameidem} and test {\bbx@ineditoridem}}
+ {\bibstring[\mkibid]{idem\thefield{gender}}}
+ {\printnames[ineditor]{editor}}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{#1}%
+ \clearname{editor}}}
+ {}}
+\makeatother
+\toggletrue{bbx:innamebeforetitle}\togglefalse{bbx:innameidem}
+\exampleprintbib{gaonkar:in}
+\end{bibexample}
+
+
+\boolitem[false]{maintitleaftertitle}
+Whether or not the \bibfield{maintitle} is printed after the
+\bibfield{title} or \bibfield{booktitle} of the work.
+If \opt{maintitleaftertitle} is \optval{true}, the \bibfield{volume} field will
+be printed with the \hyperbibfieldformat{volumeof} format.
+
+\begingroup
+\makeatletter
+\renewbibmacro*{maintitle+title}{%
+ \blx@begunit\blx@endunit
+ \iftoggle{bbx:maintitleaftertitle}
+ {}
+ {\iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\printtext[highlight1]{%
+ \iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \newunit\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\maintitletitledelim}}}}}}%
+ \printtext[highlight2]{\usebibmacro{title}\blx@begunit\blx@endunit}%
+ \printunit{}%
+ \iftoggle{bbx:maintitleaftertitle}
+ {\iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\setunit{\titlemaintitledelim}%
+ \printtext[highlight1]{%
+ \iffieldundef{volume}
+ {}
+ {\printfield[volumeof]{volume}%
+ \printfield{part}%
+ \setunit{\addspace}%
+ \bibstring{ofseries}%
+ \setunit{\addspace}}%
+ \usebibmacro{maintitle}}}}
+ {}}%
+ \newunit}%
+\renewcommand*{\maintitletitledelim}{\highlight{\addcolon\space}}
+\makeatother
+\begin{bibexample}[title={\kvopt{maintitleaftertitle}{true}}]
+\togglefalse{bbx:isbn}
+\toggletrue{bbx:maintitleaftertitle}
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{maintitleaftertitle}{false}}]
+\togglefalse{bbx:isbn}
+\togglefalse{bbx:maintitleaftertitle}
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+\endgroup
+\end{optionlist}
+
+\subsection{Style-specific options}\label{sec:opt:style}
+\begin{optionlist}
+\optitem[true]{dashed}{\optval{true}, \optval{false}, \optval{fullhash},
+ \optval{bibnamehash}}
+
+The \opt{dashed} option of the \hyperblxstyle[ext-authoryear]{authoryear}- and
+\hyperblxstyle[ext-authortitle]{authortitle}-like bibliography styles allows for
+finer control over the dashes than in the standard styles.
+The option is available globally and additionally on a per-type and per-entry
+level.
+
+This option controls whether or not recurring lists of authors/editors in the
+bibliography are replaced with a dash.
+The standard values \optval{true} and \optval{false} are still valid and give
+the exact same output as in the standard styles.
+This means that the output is fully compatible with the standard styles.
+The new values \optval{fullhash} and \optval{bibnamehash} differ in how exactly
+they determine if a list of authors/editors is the same as the previous.
+\begin{valuelist}
+\item[true] An alias for \optval{fullhash}.
+\item[false] Disable this feature.
+\item[bibnamehash] Replace recurring name lists with a dash.
+ Compare name lists using \bibfield{bib\-name\-hash}, taking
+ into account only names that are actually listed in the
+ bibliography account.
+\item[fullhash] Replace recurring name lists with a dash.
+ Compare name lists using \bibfield{fullhash}, taking into
+ account all names in the list, even those that are truncated
+ and do not appear in the bibliography.
+\end{valuelist}
+
+
+\begin{refsection}
+\makeatletter
+Assuming \kvopt{maxnames}{1} and no name list disambiguation
+(\kvopt{uniquelist}{false}), the four entries
+\inputexamplebibfile[listing options={linerange={1-16,18-23,25-25},
+ style = extblxstylebibtex}]
+ {biblatex-ext-examples.bib}
+give
+\renewcommand*{\bibnamedash}{\textbf{\textemdash\addspace}}
+\DeclareFieldFormat{highlighthere}{%
+ \iffieldequalstr{entrykey}{elk:einio}
+ {\highlight[1]{#1}}
+ {\iffieldequalstr{entrykey}{appleby:abl}
+ {\highlight[2]{#1}}
+ {#1}}}
+\renewbibmacro*{author}{%
+ \printtext[highlighthere]{%
+ \ifboolexpr{
+ test \ifuseauthor
+ and
+ not test {\ifnameundef{author}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\printtext{\bibnamedash}}
+ {\usebibmacro{bbx:savehash}%
+ \printnames{author}}%
+ \iffieldundef{authortype}
+ {\setunit{\printdelim{nameyeardelim}}}
+ {\setunit{\printdelim{authortypedelim}}}%
+ \iffieldundef{authortype}
+ {}
+ {\usebibmacro{authorstrg}%
+ \setunit{\printdelim{nameyeardelim}}}}%
+ {\global\undef\bbx@lasthash
+ \usebibmacro{labeltitle}%
+ \setunit*{\printdelim{nonameyeardelim}}}}%
+ \usebibmacro{date+extradate}}
+\let\ExecuteBibliographyOptions\@gobble
+\nocite{elk:bronto,elk:einio,appleby:abl,appleby:civ}
+\begin{bibexample}[title={\kvopt{dashed}{false}}]
+\csuse{extblx@opt@dashed@false}
+\printbibliography[heading=none]
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{dashed}{bibnamehash}}]
+\csuse{extblx@opt@dashed@bibnamehash}
+\printbibliography[heading=none]
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{dashed}{fullhash}}]
+\csuse{extblx@opt@dashed@fullhash}
+\printbibliography[heading=none]
+\end{bibexample}
+\makeatother
+\end{refsection}
+With \kvopt{dashed}{bibnamehash} the dash replaces the name list if they are
+indistinguishable in the bibliography, while with \kvopt{dashed}{fullhash} the
+lists are only replaced if they are indistinguishable in the data source.
+
+
+
+\optitem[false]{introcite}{\optval{false}, \optval{plain}, \optval{label}}
+
+\begin{warnbox}
+The \opt{introcite} option is available for the bibliography styles of the
+\hyperblxstyle[ext-authoryear]{authoryear} and
+\hyperblxstyle[ext-authortitle]{authortitle} family.
+It can not be used with citation styles of the
+\hyperblxstyle[ext-verbose]{verbose} family, where
+it may produce undesired output or errors.
+The option is available globally and on a per-type and per-entry level, where
+only the values \optval{plain} (and the default \optval{false}) are supported.
+\end{warnbox}
+
+This option controls whether or not the citation label is repeated in the
+bibliography.
+There are two possible output formats.
+\begin{valuelist}
+\item[false] Do not show the citation label in the bibliography.
+\item[plain] Show the citation label at the beginning of an entry.
+\item[label] Show the citation label as the label of a list similar to the
+ \hyperblxstyle[ext-numeric]{numeric} or
+ \hyperblxstyle[ext-alphabetic]{alphabetic} styles.
+\end{valuelist}
+
+The difference between \optval{plain} and \optval{label} is that the former
+simply prints the citation label at the beginning of the entry, while the latter
+prints the citation label similar to the item labels in a list or the numeric
+labels in a \hyperblxstyle[ext-numeric]{numeric} bibliography.
+
+\begingroup
+\togglefalse{bbx:doi}
+\setlength{\introcitewidth}{5.5\biblabelsep}
+\DeclareFieldFormat{bbx@introcite}{\highlight{#1}}
+\renewcommand*{\introcitepunct}{\highlight{\addcolon}\space}
+\makeatletter
+\begin{bibexample}[title={\kvopt{introcite}{false}}]
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@false}
+\exampleprintbib{sigfridsson,knuth:ct:a,knuth:ct:b}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{introcite}{plain}}]
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@plain}
+\exampleprintbib{sigfridsson,knuth:ct:a,knuth:ct:b}
+\end{bibexample}
+
+\begin{bibexample}[title={\kvopt{introcite}{label}}]
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@label}
+\exampleprintbib{sigfridsson,knuth:ct:a,knuth:ct:b}
+\end{bibexample}
+\makeatother
+\endgroup
+
+
+The label produced by the \optval{plain} option can be customised as follows.
+\begin{ltxsyntax}
+\csitem{introcitepunct}
+
+The punctuation inserted between the label and the
+rest of the entry with \kvopt{introcite}{plain}.
+The default value is a colon followed by a space.
+\begin{bibexample}
+\togglefalse{bbx:doi}
+\renewcommand*{\introcitepunct}{\highlight{\textbf{\addcolon}\textvisiblespace}}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@plain}
+\exampleprintbib{sigfridsson}
+\end{bibexample}
+\end{ltxsyntax}
+
+\begin{keymarglistbook}
+\keyitem[bbx:introcite:plain:keeprelated] This toggle controls whether or
+ not the citation label is also repeated for default related entries.
+ The default value \optval{false} suppresses the label for related entries.
+\begin{bibexample}[title={\gencode{\string\togglefalse\{%
+ bbx:introcite:plain:keeprelated\}} (default)}]
+\togglefalse{bbx:doi}
+\csletcs{extblx@introcite}{extblx@opt@introcite@plain}
+\exampleprintbib{vizedom:related}
+\end{bibexample}
+\begin{bibexample}[title={\gencode{\string\toggletrue\{%
+ bbx:introcite:plain:keeprelated\}}}]
+\toggletrue{bbx:introcite:plain:keeprelated}
+\renewbibmacro*{related:init}{%
+ \csundef{bbx:relatedloop}%
+ \iftoggle{bbx:introcite:plain:keeprelated}{%
+ \DeclareFieldFormat{bbx@introcite}{\highlight{##1}}%
+ \renewcommand*{\introcitepunct}{\highlight{\addcolon}\space}%
+ }{\renewbibmacro{introcite:plain}{}}}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@plain}
+\exampleprintbib{vizedom:related}
+\end{bibexample}
+Note that the implementation of some related types automatically suppresses
+the introcite label~-- or rather, does not add the label in the first place.
+That means that the resulting bibliography should be checked for consistency
+if the toggle is set to \optval{true}.
+\end{keymarglistbook}
+
+The \optval{label} option can be configured to not allow the label to run into
+the remaining bibliography entry thus creating the appearance of a tabular-like
+bibliography.
+The citation label is not broken across lines, instead it moves the entry text
+into the next line with \cmd{introcitebreak} if the width of the citation is
+greater than \len{introcitewidth}.
+
+\begin{ltxsyntax}
+\lenitem{introcitewidth} The maximum width of the citation label.
+ The initial value is 8 times \len{biblabelsep}.
+\lenitem{introcitesep} This length sets the minimal space between the end of the
+ citation label and the beginning of the rest of the entry.
+ The initial value is \len{biblabelsep}.
+\csitem{introcitebreak} The command to execute if a citation label exceeds
+ \len{introcitewidth}. The default is \cs{leavevmode}\cs{newline}.
+\end{ltxsyntax}
+
+\makeatletter
+\togglefalse{bbx:doi}
+\begingroup
+\setlength{\introcitewidth}{4.2\biblabelsep}
+\setlength{\introcitesep}{3.8\biblabelsep}
+\begin{bibexample}[enhanced, title={Lengths for \kvopt{introcite}{label}},
+overlay={%
+ \draw[highlight1, line width=.24mm,|-|] (frame.west)++(5.5mm,-.38cm) --
+ node [at end, below=1pt] {\len{introcitewidth}} ++
+ (\introcitewidth,0);
+ \draw[highlight2, line width=.24mm,|-|] (frame.west)++
+ (5.5mm+\introcitewidth,-.8mm) -- node [at start, above=2pt]
+ {\len{introcitesep}} ++ (\introcitesep,0);
+ \draw[highlight2, line width=.24mm,|-|] (frame.west)++
+ (5.5mm+\introcitewidth,2.32cm) -- ++ (\introcitesep,0);
+}
+]
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@label}
+\exampleprintbib{sigfridsson,coleridge,geer}
+\end{bibexample}
+\endgroup
+
+\begin{bibexample}[enhanced, title={\kvopt{introcite}{label} with empty
+ \cs{introcitebreak}}]
+\renewcommand*{\introcitebreak}{}
+\setlength{\introcitewidth}{1.8cm}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@label}
+\exampleprintbib{coleridge,geer}
+\end{bibexample}
+
+\begin{bibexample}[enhanced, title={\kvopt{introcite}{label} with
+ \len{introcitewidth} set to zero and \len{introcitesep} equal to
+ \len{bibhang}}]
+\setlength{\introcitewidth}{0pt}
+\setlength{\introcitesep}{\bibhang}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@label}
+\exampleprintbib{sigfridsson,geer}
+\end{bibexample}
+\makeatother
+
+In order to reproduce the citation label accurately in the bibliography,
+some initialisation and housekeeping needs to be done.
+\begin{ltxsyntax}
+\cmditem{AtIntrocite}{code}
+\cmditem*{AtIntrocite}*{code}
+
+Appends the \prm{code} to an internal hook executed when initializing
+\cmd{introcite}.
+The starred variant of the command clears the initialisation hook,
+so the defaults can be overwritten.
+The default settings execute the internal macro
+\cs{extblx@introcite@init}, which makes sure that the label produced
+for introcite takes into account the citation settings and suppresses
+unwanted citation tracking and hyperlinks.
+\end{ltxsyntax}
+
+The appearance of the citation label can be customised mostly as if it were
+produced by a true citation command called \cmd{bbx@introcite}.
+The delimiter context is \gencode{bbx@introcite}, the inner citation delimiters
+can be accessed as \gencode{bbx@introcite} as well.
+The label does not have outer citation delimiters, you can use the wrapper
+field format \gencode{bbx@introcite} instead. In fact this approach is more
+versatile than the outer citation delimiter feature (see the discussion in
+\cref{sec:opt:citedelims}).
+The default settings for \cmd{bbx@introcite} emulate the output of \cmd{cite}.
+
+\begin{bibexample}[title={Example customisations for \kvopt{introcite}{plain}}]
+\begin{lstlisting}[style=extblxstylelatex]
+\DeclareFieldFormat{bbx@introcite}{\mkbibbrackets{#1}}
+\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addcomma\space}
+\UndeclareInnerCiteDelims{bbx@introcite}
+\renewcommand*{\introcitepunct}{\quad}
+\end{lstlisting}
+\tcblower
+\DeclareFieldFormat{bbx@introcite}{\mkbibbrackets{#1}}
+\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addcomma\space}
+\UndeclareInnerCiteDelims{bbx@introcite}
+\renewcommand*{\introcitepunct}{\quad}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@plain}
+\exampleprintbib{sigfridsson}
+\end{bibexample}
+
+\begin{bibexample}[title={Example customisations for \kvopt{introcite}{label}}]
+\begin{lstlisting}[style=extblxstylelatex]
+\DeclareFieldFormat{bbx@introcite}{\mkbibbold{#1}}
+\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addspace}
+\DeclareInnerCiteDelims{bbx@introcite}{\bibopenparen}{\bibcloseparen}
+\setlength{\introcitewidth}{0pt}
+\setlength{\introcitesep}{\bibhang}
+\end{lstlisting}
+\tcblower
+\DeclareFieldFormat{bbx@introcite}{\mkbibbold{#1}}
+\DeclareDelimFormat[bbx@introcite]{nameyeardelim}{\addspace}
+\DeclareInnerCiteDelims{bbx@introcite}{\bibopenparen}{\bibcloseparen}
+\setlength{\introcitewidth}{0pt}
+\setlength{\introcitesep}{\bibhang}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@label}
+\exampleprintbib{coleridge,geer}
+\end{bibexample}
+\csgundef{blx@delimcontextalias@bbx@introcite}
+% because \DeclareDelimcontextAlias is global ... at the moment, this can go
+% with biblatex >= 3.12
+
+If you are using an author-year citation style together with
+\kvopt{introcite}{label} or \kvopt{introcite}{label}, you may be interested in
+combining this with \kvopt{bibstyle}{ext-authortitle} instead to move the year
+back to the end of the entry.
+\makeatletter
+\begin{bibexample}[enhanced, title={\kvopt{introcite}{label} with
+ \kvopt{style}{ext-authoryear} and \kvopt{bibstyle}{ext-authortitle}}]
+\setlength{\introcitewidth}{0pt}
+\setlength{\introcitesep}{\bibhang}
+\bbx@opt@mergedate@false
+\renewbibmacro*{author}{%
+ \ifboolexpr{
+ test \ifuseauthor
+ and
+ not test {\ifnameundef{author}}
+ }
+ {\usebibmacro{bbx:dashcheck}
+ {\bibnamedash}
+ {\printnames{author}%
+ \setunit{\printdelim{authortypedelim}}%
+ \usebibmacro{bbx:savehash}}%
+ \usebibmacro{authorstrg}}
+ {\global\undef\bbx@lasthash}}
+\csuse{extblx@opt@dashed@false}
+\csletcs{extblx@introcite}{extblx@opt@introcite@label}
+\exampleprintbib{sigfridsson,geer}
+\end{bibexample}
+\makeatother
+\end{optionlist}
+
+\clearpage
+\section{Further Customisations}\label{sec:opt:cust}
+Aside from the new options mentioned in the last section the styles of this
+bundle also offer additional field formats, punctuation and delimiter commands,
+a new citation delimiter interface and a few new bibliography macros.
+
+The citation delimiter interface is a novel feature of \sty{biblatex-ext},
+but for the other subsections familiarity with the underlying \sty{biblatex}
+concepts is assumed.
+Some of this is easier understood by looking at the source code directly,
+so it might not be a bad idea to have \filename{ext-standard.bbx} open when
+perusing this section of the manual.
+
+\subsection{Field formats}\label{sec:opt:field}
+The styles of this bundle offer customisable field formats
+in a few places where the standard styles employ hard-coded formatting
+directives instead.
+Field formats can be modified with \cmd{DeclareFieldFormat}.
+
+\begin{bibfieldformatlist}
+\bibfieldformatitem{biblabeldate} The format for the labeldate in the
+ bibliography for \hyperblxstyle[ext-authoryear]{authoryear}-like styles.
+ The default is to wrap the date in round brackets.
+ \begin{bibexample}
+ \togglefalse{bbx:doi}
+ \DeclareFieldFormat{biblabeldate}{\highlight{\bibopenparen}\highlight[2]{#1}%
+ \highlight{\bibcloseparen}}
+ \exampleprintbib{sigfridsson}
+ \end{bibexample}
+
+\bibfieldformatitem{biblistlabeldate} Like \bibfieldformat{biblabeldate},
+ but for bibliography lists created by \cmd{printbiblist}.
+ The default is to use the same format as \hyperbibfieldformat{biblabeldate}.
+
+\bibfieldformatitem{issuedate} The format of the \bibfield{issue} and
+ \bibfield{date} information for \bibtype{article}s. By default this block is
+ wrapped in round brackets.
+ \begin{bibexample}
+ \makeatletter\bbx@opt@mergedate@false\makeatother
+ \togglefalse{bbx:doi}
+ \DeclareFieldFormat{issuedate}{\highlight{\bibopenparen}\highlight[2]{#1}%
+ \highlight{\bibcloseparen}}
+ \exampleprintbib{sigfridsson}
+ \end{bibexample}
+
+\bibfieldformatitem{volumeof} The format for the \bibfield{volume} of a
+ \bibfield{maintitle} used when \hyperkvopt{maintitleaftertitle}{true}.
+ \begin{bibexample}
+ \togglefalse{bbx:isbn}\toggletrue{bbx:maintitleaftertitle}
+ \DeclareFieldFormat{volumeof}{\highlight{\bibstring{volume}}~%
+ \highlight[2]{#1}}
+ \exampleprintbib{knuth:ct:a}
+ \end{bibexample}
+
+\bibfieldformatitem{titlecase:title} The standard styles follow an
+ all-or-nothing approach when it comes to title casing. The field format
+ \bibfieldformat{titlecase} intended to enable sentence case with
+ \cmd{MakeSentenceCase*} is applied to all title-like fields alike. Finer
+ control over the title casing of each field could require involved code.%
+ \fnurl{https://tex.stackexchange.com/a/22981/}
+ The field format \bibfieldformat{titlecase:title} is applied to the fields
+ \bibfield{title} and \bibfield{subtitle}.
+ By default this field format is an alias for \bibfieldformat{titlecase}.
+
+\bibfieldformatitem{titlecase:booktitle}
+ Like \hyperbibfieldformat{titlecase:title}, but controls the title casing
+ of the \bibfield{booktitle} and \bibfield{booksubtitle} fields.
+
+\bibfieldformatitem{titlecase:maintitle}
+ Like \hyperbibfieldformat{titlecase:title}, but controls the title casing
+ of the \bibfield{maintitle} and \bibfield{mainsubtitle} fields.
+
+\bibfieldformatitem{titlecase:journaltitle}
+ Like \hyperbibfieldformat{titlecase:title}, but controls the title casing
+ of the \bibfield{journaltitle} and \bibfield{journalsubtitle} fields.
+
+\bibfieldformatitem{titlecase:issuetitle}
+ Like \hyperbibfieldformat{titlecase:title}, but controls the title casing
+ of the \bibfield{issuetitle} and \bibfield{issuesubtitle} fields.
+
+The \bibfieldformat{citetitle} field format can be used to change the title
+case in author-title citations, so there is no
+\bibfieldformat{citetitle:labeltitle}.
+
+\begin{bibexample}[title={Default output for \bibfieldformat{titlecase}
+ field formats}]%
+\DeclareFieldFormat{titlecase:title}{\highlight[1]{#1}}
+\DeclareFieldFormat{titlecase:journaltitle}{\highlight[2]{#1}}
+\togglefalse{bbx:doi}
+\exampleprintbib{shore}
+\end{bibexample}
+
+\begin{bibexample}[title={Example changes to \bibfieldformat{titlecase} field
+ formats}]%
+\begin{lstlisting}[style=extblxstylelatex]
+\DeclareFieldFormat{titlecase:title}{|1\MakeSentenceCase*{#1}1|}
+\DeclareFieldFormat{titlecase:journaltitle}{|2#12|}
+\end{lstlisting}
+\tcblower
+\DeclareFieldFormat{titlecase:title}{\highlight[1]{\MakeSentenceCase*{#1}}}
+\DeclareFieldFormat{titlecase:journaltitle}{\highlight[2]{#1}}
+\togglefalse{bbx:doi}
+\exampleprintbib{shore}
+\end{bibexample}
+\end{bibfieldformatlist}
+
+\subsection{Punctuation}\label{sec:opt:punct}
+The package provides the following commands to modify the delimiters and
+punctuation between fields.
+Normal punctuation commands should be redefined with \cmd{renewcommand},
+while context-sensitive commands marked with \CSdelim{} should be redefined
+with \cmd{DeclareDelimFormat}.
+A short overview over common punctuation commands defined by \sty{biblatex-ext}
+as well as standard \sty{biblatex} in an example bibliography
+can be found in \cref{sec:punctinuse}.
+\begin{ltxsyntax}
+\csitem{innametitledelim}\CSdelimMark
+Similar to \cmd{nametitledelim}, but for names after the \enquote{in:} if
+\hyperopt{innamebeforetitle} is \optval{true}.
+The default value is that of \cmd{nametitledelim} for all contexts.
+Since the definition of \cmd{nametitledelim} is different for the delimiter
+contexts \optval{bib} and \optval{biblist}, you may have to use the optional
+argument to redefine the delimiter.\footnote{The author admits that it is
+somewhat pointless to make \cmd{innametitledelim} context sensitive.
+But the obvious parallels with \cmd{nametitledelim} were too tempting.
+It is probably too late now.}
+\begin{bibexample}
+\toggletrue{bbx:innamebeforetitle}
+\togglefalse{bbx:isbn}
+\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
+\DeclareDelimFormat{editortypedelim}{\addspace}
+\DeclareDelimFormat[bib,biblist]{innametitledelim}{\highlight{\textbf{%
+ \addperiod}\textvisiblespace}\bibsentence}% <- hacky & hard-coded!
+\exampleprintbib{pines}
+\end{bibexample}
+Note that \bibfieldformat{editortype} and \cmd{editortypedelim}
+were changed for this example to avoid punctuation clashes.
+
+Since \cmd{nametitledelim} and \cmd{innametitledelim} are independent,
+the following output is easily achieved.
+Note that the optional argument to \cmd{DeclareDelimFormat} is used
+to make sure the definitions apply to the bibliography and bibliography lists
+contexts, this is necessary because these contexts have special pre-defined
+values that would otherwise not be redefined.
+\begin{bibexample}[title={Example customisations for \cs{innametitledelim}}]
+\begin{lstlisting}[style=extblxstylelatex]
+\ExecuteBibliographyOptions{innamebeforetitle=true}
+\DeclareDelimFormat[bib,biblist]{nametitledelim}{|1\addcolon\space1|}
+\DeclareDelimFormat[bib,biblist]{innametitledelim}{|2\addcomma\space2|}
+\end{lstlisting}
+\tcblower
+\toggletrue{bbx:innamebeforetitle}
+\DeclareDelimFormat[bib,biblist]{nametitledelim}{\highlightbf[1]{\addcolon}%
+ \space}
+\DeclareDelimFormat[bib,biblist]{innametitledelim}{\highlightbf[2]{\addcomma}%
+ \space}
+\exampleprintbib{gaonkar,gaonkar:in}
+\end{bibexample}
+
+\csitem{maintitletitledelim}
+The punctuation between the \bibfield{maintitle} and \bibfield{title} or
+\bibfield{booktitle} of a work if \hyperopt{maintitleaftertitle} is
+\optval{false}.
+The default is \cs{newunitpunct}.
+\begin{bibexample}
+\togglefalse{bbx:isbn}
+\renewcommand*{\maintitletitledelim}{\highlight{\textbf{\addperiod}%
+ \textvisiblespace}\bibsentence}% <- hacky & hard-coded!
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+\csitem{voltitledelim}
+The punctuation between the \bibfield{volume} and \bibfield{title} or
+\bibfield{booktitle} of a work if \hyperopt{maintitleaftertitle} is
+\optval{false}.
+The default is a colon followed by a space.
+\begin{bibexample}
+\togglefalse{bbx:isbn}
+\renewcommand*{\voltitledelim}{\highlight{\textbf{\addcolon}%
+ \textvisiblespace}\bibsentence}
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+\csitem{titlemaintitledelim}
+The punctuation between the \bibfield{title} or \bibfield{booktitle} and
+\bibfield{maintitle} of a work if \hyperopt{maintitleaftertitle} is
+\optval{true}.
+The default is \cmd{newunitpunct}.
+\begin{bibexample}
+\togglefalse{bbx:isbn}
+\toggletrue{bbx:maintitleaftertitle}
+\renewcommand*{\titlemaintitledelim}{\highlight{\textbf{\addperiod}%
+ \textvisiblespace}\bibsentence}%<- hacky & hard-coded!
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+\csitem{titleaddonpunct}
+The punctuation between \bibfield{title}\slash\bibfield{subtitle} and
+\bibfield{maintitle} as well as other \bibfield{title}-like and
+\bibfield{maintitle}-like fields. The default is \cmd{newunitpunct}
+\begin{bibexample}
+\renewcommand*{\titleaddonpunct}{\highlight{\textbf{\addperiod}%
+ \textvisiblespace}\bibsentence}%<- hacky & hard-coded!
+\exampleprintbib{salam}
+\end{bibexample}
+
+\csitem{jourvoldelim}
+The delimiter between the \bibfield{journaltitle} and \bibfield{volume} fields
+for \bibtype{article} if no \bibfield{series} is present.
+The default is a space.
+\begin{bibexample}
+\togglefalse{bbx:doi}
+\renewcommand*{\jourvoldelim}{\highlight{\textvisiblespace}}
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{sigfridsson}
+\end{bibexample}
+
+\csitem{jourserdelim}
+The delimiter between the \bibfield{journaltitle} and \bibfield{series} fields
+for \bibtype{article}.
+The default is \cmd{newunitpunct}.
+\begin{bibexample}
+\togglefalse{bbx:doi}
+\renewcommand*{\jourserdelim}{\highlight{\textbf{\addperiod}\textvisiblespace}%
+ \bibsentence% <- hacky ...
+ }% <- hard-coded!
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{reese,shore}
+\end{bibexample}
+
+\csitem{servoldelim}
+The delimiter between the \bibfield{series} and \bibfield{volume} fields
+for \bibtype{article}.
+The default is \hypercmd{jourvoldelim}.
+\begin{bibexample}
+\togglefalse{bbx:doi}
+\renewcommand*{\servoldelim}{\highlight{\textvisiblespace}}% <- hard-coded!
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{reese,shore}
+\end{bibexample}
+
+\csitem{volnumdatedelim}
+The delimiter between the \bibfield{volume}, \bibfield{number} block and the
+date information for \bibtype{article}.
+The default is a space.
+\begin{bibexample}
+\togglefalse{bbx:doi}
+\renewcommand*{\volnumdatedelim}{\highlight{\textvisiblespace}}
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{sigfridsson}
+\end{bibexample}
+
+
+\csitem{volnumdelim}
+The delimiter between \bibfield{volume} and \bibfield{number} for
+\bibtype{article}.
+The default is a dot.
+\begin{bibexample}
+\togglefalse{bbx:doi}
+\renewcommand*{\volnumdelim}{\highlightbf{\adddot}}
+\exampleprintbib{sigfridsson}
+\end{bibexample}
+
+\csitem{sernumdelim}
+The delimiter between \bibfield{series} and \bibfield{number} for
+\bibtype{book}- and \bibtype{inbook}-like entries.
+The default is a space.
+\begin{bibexample}
+\renewcommand*{\sernumdelim}{\highlight{\textvisiblespace}}
+\exampleprintbib{coleridge}
+\end{bibexample}
+
+\csitem{locdatedelim}
+The delimiter between \bibfield{location} and \bibfield{date}.
+The default is a comma followed by a space.
+\begin{bibexample}
+\renewcommand*{\locdatedelim}{\highlight{\textbf{\addcomma}\textvisiblespace}}
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{jaffe}
+\end{bibexample}
+
+\csitem{locpubdelim}
+The delimiter between \bibfield{location} and \bibfield{publisher}\slash%
+\bibfield{organization}\slash\bibfield{institution}.
+The default is a colon followed by a space.
+\begin{bibexample}
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\renewcommand*{\locpubdelim}{\highlight{\textbf{\addcolon}\textvisiblespace}}
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+
+\csitem{publocdelim}
+The delimiter between \bibfield{publisher}\slash\bibfield{organization}\slash
+\bibfield{institution} and \bibfield{location}.
+The default is a comma followed by a space.
+This delimiter is not used by the default style, since the standard order of
+fields is \bibfield{location}, \bibfield{publisher}\slash
+\bibfield{organization}\slash\bibfield{institution}, \bibfield{date}.
+You could use \cmd{publocdelim} if you changed the order of these fields to
+\bibfield{publisher}\slash\bibfield{organization}\slash\bibfield{institution},
+\bibfield{location} \bibfield{date} with
+\begin{biblatexcode}
+\renewbibmacro*{pubinstorg+location+date}[1]{%
+ \printlist{#1}%
+ \setunit*{|1\publocdelim1|}%
+ \printlist{location}%
+ \setunit*{|2\locdatedelim2|}%
+ \usebibmacro{date}%
+ \newunit}
+\end{biblatexcode}
+\begin{bibexample}
+\renewcommand*{\publocdelim}{\highlight[1]{\textbf{\addcomma}\textvisiblespace}}
+\renewcommand*{\locdatedelim}{\highlight[2]{%
+ \textbf{\addcomma}\textvisiblespace}}
+\renewbibmacro*{pubinstorg+location+date}[1]{%
+ \printlist{#1}%
+ \setunit*{\publocdelim}%
+ \printlist{location}%
+ \setunit*{\locdatedelim}%
+ \usebibmacro{date}%
+ \newunit}
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+
+\csitem{pubdatedelim}
+The delimiter between \bibfield{publisher}\slash\bibfield{organization}\slash
+\bibfield{institution} and \bibfield{date}.
+The default is a comma followed by a space.
+\begin{bibexample}
+\renewcommand*{\pubdatedelim}{\highlight{\textbf{\addcomma}\textvisiblespace}}
+\makeatletter\bbx@opt@mergedate@false\makeatother
+\exampleprintbib{knuth:ct:a}
+\end{bibexample}
+
+
+\csitem{extradateonlycompcitedelim}\CSdelimMark
+Similar to \cmd{compcitedelim}, but indended for use between compressed
+citations where the second is an \bibfield{extradate} only.
+The default is a comma (\emph{not} followed by a space).
+\begin{bibexample}
+\DeclareDelimFormat{extradateonlycompcitedelim}{\highlightbf{\addcomma}}
+\cite{knuth:ct:b,knuth:ct:c}
+\end{bibexample}
+
+
+\csitem{extradateonlycompciterangedelim}\CSdelimMark
+Similar to \hypercmd{extradateonlycompcitedelim}, but indended for use in a
+compressed list of \bibfield{extradate}s in the \blxstyle{-ecomp} styles.
+The default is \cmd{bibrangedash}.
+\begin{bibexample}
+\DeclareDelimFormat{extradateonlycompciterangedelim}{%
+ \highlightbf{\bibrangedash}}
+\cite{knuth:ct:b,knuth:ct:c,knuth:ct:d}
+\end{bibexample}
+\end{ltxsyntax}
+
+\subsection{Delimiters for citation commands}\label{sec:opt:citedelims}
+The delimiters for citation commands provided by the styles of this bundle
+offer a simple way to customise the bracketing of citation commands.
+
+The citation commands \cmd{cite}, \cmd{parencite} and \cmd{textcite} come with
+two sets of delimiters: A pair of \emph{outer delimiters} wrapped around the
+resulting citation in its entirety and a pair of \emph{inner delimiters} that
+sets off certains bits of the citation label from other information.
+An example for outer delimiters would be the round brackets of \cmd{parencite}
+for \hyperblxstyle[ext-authoryear]{authoryear}-like styles or the
+square brackets of \cmd{cite} for \hyperblxstyle[ext-numeric]{numeric}- or
+\hyperblxstyle[ext-alphabetic]{alphabetic}-like styles.
+Inner delimiters would be the round brackets in \cmd{textcite} around
+the year for \hyperblxstyle[ext-authoryear]{authoryear} or around the title for
+\hyperblxstyle[ext-authortitle]{authortitle}.
+See \cref{tab:citationdelims} for more details.
+
+The delimiters are set up to work as paired delimiters, but you are free to
+use non-matching pairs or to leave the opening or closing delimiter empty.
+If you want to add punctuation, the context-sensitive delimiters
+\gencode{nameyeardelim}, \gencode{nametitledelim},
+\gencode{postnotedelim} and friends are more approriate.
+
+\begin{remindbox}
+Although the outer delimiters can be set up using \cmd{DeclareCiteCommand}'s
+optional \prm{wrapper} argument for most styles, this is not possible for all
+styles.
+Similarly, inner delimiters can be set up with \cmd{DeclareFieldFormat} in some
+styles, but other styles need more intricate implementations.
+This means that the commands discussed here can be used to place the citations
+between delimiters, but not natively to pass the result of a citation to a
+wrapper command as an argument.
+\end{remindbox}
+
+\begin{table}[btph]
+\centering
+\caption[Outer and inner citation delimiters by style]{\highlight[1]{Outer} and
+\highlight[2]{inner} citation delimiters by style. If the style does not use
+the delimiters by default, \mpdl{} and \mpdr{} are substituted in the
+appropriate place.}
+\label{tab:citationdelims}
+\begin{tabular}{@{}llll@{}}
+\toprule
+ & \multicolumn{3}{c}{Citation command}\\
+ \cmidrule(lr){2-4}
+Style family & \cmd{cite} & \cmd{parencite} & \cmd{textcite}\\
+\midrule
+\blxstyle{alphabetic} & \highlightbf[1]{[}Knu84\highlightbf[1]{]} &
+ \highlightbf[1]{[}Knu84\highlightbf[1]{]} & \highlightbf[1]{\hmpdl}Knuth
+ \highlightbf[2]{[}2\highlightbf[2]{]}\highlightbf[1]{\hmpdr}\\
+\blxstyle{numeric} & \highlightbf[1]{[}2\highlightbf[1]{]} &
+ \highlightbf[1]{[}2\highlightbf[1]{]} & \highlightbf[1]{\hmpdl}Knuth
+ \highlightbf[2]{[}2\highlightbf[2]{]}\highlightbf[1]{\hmpdr}\\
+\blxstyle{authortitle} & \highlightbf[1]{\hmpdl}Knuth,
+ \highlightbf[2]{\hmpdl}\emph{\TeX book}\highlightbf[2]{\hmpdr}%
+ \highlightbf[1]{\hmpdr} & \highlightbf[1]{(}Knuth,
+ \highlightbf[2]{\hmpdl}\emph{\TeX book}\highlightbf[2]{\hmpdr}%
+ \highlightbf[1]{)} & \highlightbf[1]{\hmpdl}Knuth \highlightbf[2]{(}%
+ \emph{\TeX book}\highlightbf[2]{)}\highlightbf[1]{\hmpdr}\\
+\blxstyle{authoryear} & \highlightbf[1]{\hmpdl}Knuth
+ \highlightbf[2]{\hmpdl}1984\highlightbf[2]{\hmpdr}%
+ \highlightbf[1]{\hmpdr} & \highlightbf[1]{(}Knuth
+ \highlightbf[2]{\hmpdl}1984\highlightbf[2]{\hmpdr}%
+ \highlightbf[1]{)} & \highlightbf[1]{\hmpdl}Knuth
+ \highlightbf[2]{(}1984\highlightbf[2]{)}\highlightbf[1]{\hmpdr}\\
+\bottomrule
+\end{tabular}
+\end{table}
+
+\begin{ltxsyntax}
+\cmditem{DeclareOuterCiteDelims}{cite command}{opening delimiter}
+ {closing delimiter}
+
+Sets up the outer delimiters for the citation command
+\cmd{\prm{cite command}}. The name of the \prm{cite command}
+is given without leading backslash in the argument, it normally corresponds to
+the delimiter context.
+
+Note that outer citation delimiters are often hard-coded so they usually do not
+respond to delimiter context aliases.
+Inner citation delimiters, on the other hand, usually follow delimiter context
+aliases.
+This may lead to initially surprising results if aliases are used.
+
+You may use almost any input for \prm{opening delimiter} and
+\prm{closing delimiter} as long as typesetting of
+\enquote{\prm{opening delimiter}text\prm{closing delimiter}} does not lead to
+errors when arbitrary grouping such as
+\enquote{\{\prm{opening delimiter}\allowbreak text\}\allowbreak
+\prm{closing delimiter}}
+or \enquote{\prm{opening delimiter}\allowbreak text\allowbreak
+\{\prm{closing delimiter}\}}
+is introduced.
+It can not be guaranteed that the opening and closing delimiters are executed
+at the same level of grouping, let alone in the same group.
+As mentioned above, this approach is not suitable to wrap the citation up in a
+wrapper command, i.e.\ to pass the entire output of the citation command as
+argument to a macro.
+
+Instead of hard-coded \gencode{(}, \gencode{)}, \gencode{[} and \gencode{]}
+their \sty{biblatex} counterparts \cmd{bibopenparen}, \cmd{bibcloseparen},
+\cmd{bibopenbracket} and \cmd{bibclosebracket} are preferable, since these
+commands respond to nesting and check if opening brackets are always closed.
+
+\cmditem{DeclareOuterCiteDelimsAlias}{cite alias}{cite command}
+\cmditem*{DeclareOuterCiteDelimsAlias*}{cite alias}{cite command}
+
+Use the outer delimiters of \cmd{\prm{cite command}} for
+\cmd{\prm{cite alias}} as well.
+The unstarred version uses \cmd{def} assignment while the starred version uses
+\cmd{let}. This means that the starred version copies the values of the
+definitions at the time of executing the aliasing command,
+whereas the alias created by the unstarred version will only evaluate the
+delimiters whenever the citation command is called.
+
+\cmditem{UndeclareOuterCiteDelims}{cite command}
+
+Completely remove the definitions of the outer delimiters for
+\cmd{\prm{cite command}}.
+
+\cmditem{DeclareInnerCiteDelims}{cite command}{opening delimiter}
+ {closing delimiter}
+
+Sets up the inner delimiters for the citation command
+\cmd{\prm{cite command}}.
+
+This command is similar to \hypercmd{DeclareOuterCiteDelims} and the same
+restrictions for the arguments apply.
+
+Note that inner citation delimiters usually follow context delimiter aliases.
+Outer citation delimiters, on the other hand, do not respond to context
+delimiter aliases.
+This may lead to initially surprising results if aliases are used.
+
+\cmditem{DeclareInnerCiteDelimsAlias}{cite alias}{cite command}
+\cmditem*{DeclareInnerCiteDelimsAlias*}{cite alias}{cite command}
+
+Use the inner delimiters of \cmd{\prm{cite command}} for
+\cmd{\prm{cite alias}} as well.
+The unstarred version uses \cmd{def} assignment while the starred version uses
+\cmd{let}. This means that the starred version copies the values of the
+definitions at the time of executing the aliasing command,
+whereas the alias created by the unstarred version will only evaluate the
+delimiters whenever the citation command is called.
+
+\cmditem{UndeclareInnerCiteDelims}{cite command}
+
+Completely remove the definitions of the inner delimiters for
+\cmd{\prm{cite command}}.
+
+\cmditem{RegisterCiteDelims}{modifier}{cite command}
+
+Register a pair of \prm{modifier} citation delimiters for
+\cmd{\prm{cite command}}.
+This command will define a delimiter wrapper command
+\cmd{mk\prm{modifier}\prm{cite command}s} that places its argument between
+the opening delimiter
+\cs{ext\allowbreak blx@\allowbreak cite\allowbreak delim@\allowbreak
+ \prm{cite command}@\allowbreak\prm{modifier}@\allowbreak open} and
+the closing delimiter
+\cs{ext\allowbreak blx@\allowbreak cite\allowbreak delim@\allowbreak
+ \prm{cite command}@\allowbreak\prm{modifier}@\allowbreak close}.
+No error will be raised if the opening or closing delimiters are not defined,
+but an error will be raised if \cmd{mk\prm{modifier}\prm{cite command}s} is
+already defined.
+
+The styles of this bundle only use the values \optval{outer} and \optval{inner}
+for \prm{modifier}, but other values are possible. With \optval{outer} and
+\optval{inner} you can use \hypercmd{DeclareOuterCiteDelims} or
+\hypercmd{DeclareInnerCiteDelims} and friends to define the opening and closing
+delimiters, otherwise you need to define them manually.
+
+All styles of \sty{biblatex-ext} define the wrapper commands listed in
+\cref{tab:delimwrappers}.
+\begin{table}[btph]
+\centering
+\caption{Delimiter wrappers defined by \sty{biblatex-ext}}
+\label{tab:delimwrappers}
+\begin{minipage}{\linewidth}
+\renewcommand\footnoterule{}
+\centering
+\begin{tabular}{@{}lll@{}}
+\toprule
+ & \multicolumn{2}{c}{Modifier} \\
+ \cmidrule(lr){2-3}
+Citation command & Outer & Inner\\
+\midrule
+\cmd{cite} & \cmd{mkoutercitedelims} & \cmd{mkinnercitedelims}\\
+\cmd{parencite} & \cmd{mkouterparencitedelims} & \cmd{mkinnerparencitedelims}\\
+\cmd{textcite} & \cmd{mkoutertextcitedelims} & \cmd{mkinnertextcitedelims}\\
+\cmd{footcite} & \cmd{mkouterfootcitedelims} & \cmd{mkinnerfootcitedelims}\\
+\cmd{supercite}\footnote{If defined by the citation style.}
+ & \cmd{mkoutersupercitedelims} & ---\\
+\cmd{bbx@xrefcite} & \cmd{mkouterbbx@xrefcitedelims} &
+ \cmd{mkinnerbbx@xrefcitedelims}\\
+\enquote{\cmd{bbx@introcite}} & ---%
+ \footnote{Use the field format \bibfieldformat{bbx@introcite} instead,
+ see \cref{sec:opt:style}.} & \cmd{mkinnerbbx@introcitedelims}\\
+\bottomrule
+\end{tabular}
+\end{minipage}
+\end{table}
+
+
+The \hyperblxstyle[ext-authoryear]{authoryear} and
+\hyperblxstyle[ext-authortitle]{authortitle} styles have \cmd{parencite},
+e.g.\ \parencite{knuth:ct:a}, \parencite{sigfridsson}, set up with
+\begin{biblatexcode}
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+\DeclareInnerCiteDelims{parencite}{}{}
+\end{biblatexcode}
+and \cmd{textcite}, e.g.\ \textcite{knuth:ct:a}, \textcite{sigfridsson}, with
+\begin{biblatexcode}
+\DeclareOuterCiteDelims{textcite}{}{}
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+\end{biblatexcode}
+If you wanted \cmd{parencite} of \hyperblxstyle[ext-authoryear]{authoryear}
+to look like \enquote{[Sigfridsson and Worman (1998)]} you would use
+\begin{biblatexcode}
+\DeclareOuterCiteDelims{parencite}{|1\bibopenbracket1|}{|1\bibclosebracket1|}
+\DeclareInnerCiteDelims{parencite}{|2\bibopenparen2|}{|2\bibcloseparen2|}
+\end{biblatexcode}
+\citereset
+\begin{bibexample}
+\DeclareOuterCiteDelims{parencite}{\highlightbf[1]{\bibopenbracket}}{%
+ \highlightbf[1]{\bibclosebracket}}
+\DeclareInnerCiteDelims{parencite}{\highlightbf[2]{\bibopenparen}}{%
+ \highlightbf[2]{\bibcloseparen}}
+\parencite{sigfridsson}\quad\parencite{worman,geer}\quad
+\parencite{knuth:ct:a,knuth:ct:b,knuth:ct:c}
+\end{bibexample}
+\end{ltxsyntax}
+
+\subsection{Selected bibliography macros}\label{sec:opt:bibmacros}
+The following macros are defined in \filename{ext-standard.bbx} and may make
+certain things easier to customise.
+Many of these macros are replacements for bare \cmd{printfield} or
+\cmd{printlist} in the bibliography drivers, or pack a frequently-used
+sequence of commands into one central place.
+
+\begin{keymarglistbook}
+\keyitem[barevolume+volumes]
+A bibliography macro to print the \bibfield{volume}, \bibfield{part} and
+\bibfield{volumes} fields for \bibtype{mvbook}-, \bibtype{book}- and
+\bibtype{inbook}-like entry types.
+If \bibfield{maintitle} is defined, the \bibfield{volume} and \bibfield{part}
+fields will be printed by \bibmacro{maintitle+title} or
+\bibmacro{maintitle+booktitle} instead.
+
+\begin{bibexample}
+\renewbibmacro*{barevolume+volumes}{%
+ \printtext[highlight1]{%
+ \iffieldundef{maintitle}
+ {\printfield{volume}%
+ \printfield{part}}
+ {}%
+ \newunit
+ \printfield{volumes}}}
+\exampleprintbib{knuth:ct,matuz:doody}
+\end{bibexample}
+
+\keyitem[edition]
+A bibliography macro to print the \bibfield{edition} field, this avoids a direct
+\lstinline|\printfield{edition}| in the bibliography drivers.
+
+\keyitem[version]
+Similar to the \hyperbibmacro{edition} bibliography macro, \bibmacro{version}
+prints the \bibfield{version} field, this avoids a direct
+\lstinline|\printfield{version}| in the bibliography drivers.
+
+\keyitem[pagetotal]
+Similar to the \hyperbibmacro{edition} bibliography macro, \bibmacro{pagetotal}
+prints the \bibfield{pagetotal} field, this avoids a direct
+\lstinline|\printfield{pagetotal}| in the bibliography drivers.
+
+\keyitem[in:editor(+others)]
+The bibliography macro to print the \bibfield{editor} before the
+\bibfield{booktitle} for \bibtype{inbook}, \bibtype{incollection} and
+\bibtype{inproceedings} when \hyperopt{innamebeforetitle} is set to
+\optval{true}.
+The \cmd{printname} uses the name format \bibfield{ineditor}.
+
+\keyitem[language]
+A bibliography macro to print the \bibfield{language} field, this avoids a
+direct \lstinline|\printlist{language}| in the bibliography drivers.
+
+\keyitem[note]
+A bibliography macro to print the \bibfield{note} field, this avoids a direct
+\lstinline|\printfield{note}| in the bibliography drivers.
+
+\keyitem[pubinstorg+location+date]
+A general-purpose bibliography macro to catch
+\bibmacro{publisher+location+date},
+\bibmacro{institution+location+date} and \bibmacro{organization+location+date}.
+This bibliography macro has one mandatory argument: the name of a list field,
+sensible values are \bibfield{publisher}, \bibfield{institution} and
+\bibfield{organization}.
+
+\begin{biblatexcode}
+\newbibmacro*{pubinstorg+location+date}[1]{%
+ \printlist{location}%
+ \iflistundef{|#1|}
+ {\setunit*{\locdatedelim}}
+ {\setunit*{\locpubdelim}}%
+ \printlist{|#1|}%
+ \setunit*{\pubdatedelim}%
+ \usebibmacro{date}%
+ \newunit}
+
+\renewbibmacro*{|publisher|+location+date}{%
+ \usebibmacro{pubinstorg+location+date}{|publisher|}}
+
+\renewbibmacro*{|institution|+location+date}{%
+ \usebibmacro{pubinstorg+location+date}{|institution|}}
+
+\renewbibmacro*{|organization|+location+date}{%
+ \usebibmacro{pubinstorg+location+date}{|organization|}}
+\end{biblatexcode}
+
+\keyitem[type+number]
+A bibliography macro to print the \bibfield{type} and \bibfield{number} fields.
+\end{keymarglistbook}
+
+\clearpage
+\section{Tabular Bibliographies}\label{sec:tabularbib}
+\label{exltd@itm@biblatex-ext-tabular}
+An experimental addition to this bundle is the package
+\sty{biblatex-ext-tabular} which allows you to typeset tabular
+(two-column) bibliographies.
+The package must be loaded after \sty{biblatex} and has no further options.
+\begin{biblatexcode}
+\usepackage[(*@\prm{options}@*)]{biblatex}
+(*@\dots @*)
+\usepackage{biblatex-ext-tabular}
+\end{biblatexcode}
+If it turns out that the tabular bibliography package is useful on its own,
+it may be split off from the rest of this bundle in the future.
+In that case the name \sty{biblatex-ext-tabular} may be deprecated in favour
+of something more snappy.
+The old name should then continue to work, but you may have to install a new
+package to be able to use it.
+
+The package \sty{biblatex-ext-tabular} can be used independently of the styles
+provided in this bundle.
+But no matter what style you use, you will probably have to apply some tweaks
+here and there to make the output look acceptable.
+
+The code for the tabular bibliographies is based on Audrey's%
+\fnurl{https://tex.stackexchange.com/users/4483/audrey}
+answer to a question%
+\fnurl{https://tex.stackexchange.com/q/71088/35864}
+on \tex{}~--~\latex{} Stack Exchange.
+The code has been modernised to keep in sync with changes to internal macros
+and modified to allow for slightly more flexible setups, so any bugs you find
+are mine and not Audrey's. Please report them via the channels mentioned above
+in~\cref{sec:feedback}.
+
+Before tabular bibliographies can be used, a suitable definition
+must be supplied with \hypercmd{defbibtabular}.
+
+\begin{ltxsyntax}
+\cmditem{printbibtabular}[key=value, \dots]
+
+This commands prints a tabular bibliography.
+It accepts the same options as \cmd{printbibliography}, but note that
+\optval{env} must be a tabular bibliography declared with
+\hypercmd{defbibtabular}.
+The default value for \optval{env} is \optval{bibtabular}.
+
+\begin{warnbox}
+Note that there is no default definition for the
+\opt{bibtabular} environment, so you must define it with
+\hypercmd{defbibtabular} before use.
+An error will be issued if you fail to provide a definition
+for \optval{bibtabular} before you use \cmd{printbibtabular} with the default
+\optval{env} value and no bibliography will be printed.
+\end{warnbox}
+
+\cmditem{defbibtabular}{name}{begin code}{end code}{row code}
+
+This command defines a tabular bibliography.
+The \prm{name} is an identifier passed to the \optval{env} option of
+\hypercmd{printbibtabular} when selecting the environment.
+The \prm{begin code} is \latex{} code to be executed at the beginning of the
+environment, usually it will begin a tabular environment.
+The \prm{end code} is executed at the end of the environment and would
+usually end the tabular environment.
+The \prm{row code} holds the code for one row in the tabular bibliography,
+it should have no more columns than ordered in \prm{begin code} and should
+end with \lstinline|\\|.
+
+\begin{remindbox}
+Please keep in mind that the tabular bibliography is subject to all limitations
+of the particular tabular environment you decide to use.
+\end{remindbox}
+
+Within the \prm{row code} argument the following macros are defined and can be
+used to typeset the result of bibliography macros.
+Each cell should normally be wrapped into exactly one of the following macros
+since they are responsible for providing the necessary entry data to the
+bibliography macros.
+
+\cmditem{plain}{code}
+
+Typesets \prm{code} with the entry data of the current entry.
+
+\cmditem{plainlang}{code}
+
+Like \cmd{plain}, but typesets \prm{code} in the language of the current
+item if the language switching options are enabled.
+
+\cmditem{anchor}{code}
+
+Like \cmd{plain}, but additionally sets a link anchor for the current entry.
+That link anchor is used when a citation links to the bibliography entry.
+There should only be one \cmd{anchor} or \hypercmd{anchorlang} per entry (and
+hence per row),
+and for proper linking there should be at least one.
+Usually \cmd{anchor} or \hypercmd{anchorlang} is the first cell in a row.
+
+\cmditem{anchorlang}{code}
+
+Like \hypercmd{anchor}, but in the entry language like \hypercmd{plainlang}.
+
+\cmditem{driver}{precode}
+
+Typesets the bibliography entry using the correct driver.
+This always uses the entry language if language switching is enabled.
+The \prm{precode} argument can be used to execute code before the driver
+is executed.
+Usually \cmd{driver} would be issued in the last (and widest) cell in a row,
+duplicate information can be cleaned up with help of the \prm{precode} argument.
+
+Recall that standard \env{tabular} can't break across pages, so you may want
+to give \env{longtable} a try.
+Additionally, the standard column specifiers \gencode{l}, \gencode{r} and
+\gencode{c} define flexible-sized columns which might not be appropriate here;
+\gencode{p} defines fixed-width columns but imposes justification, which does
+not look good if the columns are too narrow.
+You may want to look into fixed-width flush-left or flush-right columns%
+\fnurl{https://tex.stackexchange.com/q/12703/35864}.
+\end{ltxsyntax}
+
+The package also defines two helpful bibliography macros.
+\begin{keymarglistbook}
+ \item[tabular:sortname] Prints the labelname/sortname.
+ \item[tabular:omitsortname] Suppresses the labelname/sortname in the current
+ group.
+\end{keymarglistbook}
+
+A simple example of a useful tabular bibliography setup is
+\begin{biblatexcode}
+\usepackage{longtable}
+\usepackage{array}
+\newcolumntype{L}[1]{%
+ >{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
+
+\defbibtabular{bibtabular}
+ {\setlength{\LTpre}{0pt}%
+ \setlength{\LTpost}{0pt}%
+ \renewcommand*{\arraystretch}{2}%
+ \begin{longtable}{%
+ @{}
+ L{\dimexpr0.3\textwidth-\tabcolsep\relax}
+ L{\dimexpr0.7\textwidth-\tabcolsep\relax}
+ @{}}}
+ {\end{longtable}}
+ {\anchorlang{\usebibmacro{tabular:sortname}} &
+ \driver{\usebibmacro{tabular:omitsortname}} \\}
+\end{biblatexcode}
+This defines a two-column bibliography where the first column shows the
+primary name associated with the work (the labelname/sortname) and the
+second colum shows the bibliography data with the primary name suppressed
+to avoid duplication.
+The anchor is set to the first column, so that a viewer jumps there
+if a link to the entry is followed.
+
+\begin{bibexample}
+ \defbibtabular{bibtabular}
+ {\setlength{\LTpre}{0pt}%
+ \setlength{\LTpost}{0pt}%
+ \renewcommand*{\arraystretch}{2}%
+ \begin{longtable}{%
+ @{}
+ L{\dimexpr0.3\textwidth-\tabcolsep\relax}
+ L{\dimexpr0.7\textwidth-\tabcolsep\relax}
+ @{}}}
+ {\end{longtable}}
+ {\anchorlang{\usebibmacro{tabular:sortname}} &
+ \driver{\usebibmacro{tabular:omitsortname}} \\}
+
+ \exampleprintbibtab{sigfridsson,geer,nussbaum}
+\end{bibexample}
+
+For the common case of two-column tabular bibliographies there is a thin
+wrapper around \hypercmd{defbibtabular} that might turn out a bit easier to use.
+\begin{ltxsyntax}
+ \cmditem{defbibtabulartwocolumn}{name}{begin code}{end code}%
+ {anchor code}{driver precode}
+
+ This defines a two-column tabular bibliography environment with \prm{name},
+ \prm{begin code} and \prm{end code} as for \hypercmd{defbibtabular}.
+
+ The first column is an \hypercmd{anchorlang} column that executes
+ \prm{anchor code}, the second column executes a pre-code and
+ the bibliography driver.
+
+\begin{biblatexcode}
+\defbibtabulartwocolumn{(*@\prm{name}@*)}
+ {(*@\prm{begin code}@*)}{(*@\prm{end code}@*)}
+ {(*@\prm{anchor code}@*)}{(*@\prm{driver precode}@*)}
+\end{biblatexcode}
+is equivalent to
+\begin{biblatexcode}
+\defbibtabular{(*@\prm{name}@*)}
+ {(*@\prm{begin code}@*)}{(*@\prm{end code}@*)}
+ {\anchorlang{(*@\prm{anchor code}@*)} & \driver{(*@\prm{driver precode}@*)} \\}
+\end{biblatexcode}
+
+Using \cmd{defbibtabulartwocolumn} the example from above could be written as
+\begin{biblatexcode}
+\usepackage{longtable}
+\usepackage{array}
+\newcolumntype{L}[1]{%
+ >{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
+
+\defbibtabulartwocolumn{bibtabular}
+ {\setlength{\LTpre}{0pt}%
+ \setlength{\LTpost}{0pt}%
+ \renewcommand*{\arraystretch}{2}%
+ \begin{longtable}{%
+ @{}
+ L{\dimexpr0.3\textwidth-\tabcolsep\relax}
+ L{\dimexpr0.7\textwidth-\tabcolsep\relax}
+ @{}}}
+ {\end{longtable}}
+ {\usebibmacro{tabular:sortname}}
+ {\usebibmacro{tabular:omitsortname}}
+\end{biblatexcode}
+\end{ltxsyntax}
+
+\clearpage
+\section{Open Access Symbols}\label{sec:oa}
+\label{exltd@itm@biblatex-ext-oa}
+The package \sty{biblatex-ext-oa} was inspired by a question%
+\fnurl{https://tex.stackexchange.com/q/459449/35864}
+by pluton\fnurl{https://tex.stackexchange.com/users/371/pluton} on TeX.SX
+about promoting open access works by adding a small open access symbol into
+the margin.
+
+The package must be loaded after \sty{biblatex}.
+It is not tied to use with styles of this bundle, though it can not be
+guaranteed that everything will work out of the box with all other styles.
+The package works as expected with the standard styles and
+should work with most contributed styles at least to some extent.
+For the actual typesetting of the symbol \sty{biblatex-ext-oa}
+patches the bibliography macro \bibmacro{begentry} to include a call to the
+bibliography macro \hyperbibmacro{oamark}.
+\begin{biblatexcode}
+\usepackage[(*@\prm{\sty{biblatex} options}@*)]{biblatex}
+(*@\dots @*)
+\usepackage[(*@\prm{\sty{biblatex-ext-oa} options}@*)]{biblatex-ext-oa}
+\end{biblatexcode}
+
+The package may load the support packages
+\hypersty{biblatex-ext-oa-doiapi},
+\hypersty{biblatex-ext-oasymb-pict2e},
+\hypersty{biblatex-ext-oasymb-l3draw}
+and \hypersty{biblatex-ext-oasymb-tikz}.
+The preferred way to use those packages is to have them loaded
+automatically via \sty{biblatex-ext-oa}'s package options.
+It should usually not be necessary to load any of these support packages
+directly with \cmd{usepackage}, but it is possible to use them as
+stand-alone packages should the need arise in other situations.
+
+\begin{warnbox}
+Note that the macro \hypercmd{oasymbol} must be defined and should contain an
+open access symbol that can be printed in the margin for the package
+\sty{biblatex-ext-oa} to work properly.
+The package \sty{biblatex-ext-oa} itself does not provide a definition for
+\hypercmd{oasymbol} if the option \hyperopt{symbolpackage} is not used.
+So you should either set that option or define command \hypercmd{oasymbol}
+yourself.
+\end{warnbox}
+
+The package \sty{biblatex-ext-oa} provides the following load-time options.
+\begin{optionlist}
+\boolitem[true]{enable}
+
+This option controls whether the package is only loaded (\optval{false}) or
+loaded and active (\optval{true}).
+
+\enquote{Active} means that the initial state of the global bibliography option
+\hyperopt{openaccess} is \optval{auto} and that useful default settings are
+applied for semi-automatic open access detection.
+These useful defaults include patches of the bibmacro \bibmacro{begentry}
+and, if \hyperopt{doiapi} is enabled, also \bibmacro{doi+eprint+url}.
+
+If the package is loaded with \opt{enable} set to \optval{false} the global
+bibliography option \hyperopt{openaccess} will be set to \optval{false} and no
+sensible defaults are defined for the semi-automatic open access detection.
+
+\optitem[false]{symbolpackage}{\optval{false}, \optval{pict2e}, \optval{l3draw},
+ \optval{tikz}}
+
+Load one of the available open access symbol support packages.
+\begin{valuelist}
+ \item[false] Don't load any symbol package.
+ \begin{warnbox}
+ Since \sty{biblatex-ext-oa} does not provide a default definition for
+ \hypercmd{oasymbol}, you will have to make sure to define that command
+ yourself if you don't load any of the symbol packages.
+ \end{warnbox}
+ \item[pict2e] Load \hypersty{biblatex-ext-oasymb-pict2e} to provide a
+ definition for \hypercmd{oasymbol}.
+ See \cref{sec:oa:symbol,sec:oa:symbol-pict2e}.
+ \item[l3draw] Load \hypersty{biblatex-ext-oasymb-l3draw} to provide a
+ definition for \hypercmd{oasymbol}.
+ See \cref{sec:oa:symbol,sec:oa:symbol-l3draw}.
+ \begin{remindbox}
+ The package \hypersty{biblatex-ext-oasymb-l3draw} will load the entire
+ \LaTeX3 core.
+ Furthermore, \sty{l3draw} is still considered experimental.
+ \end{remindbox}
+ \item[tikz] Load \hypersty{biblatex-ext-oasymb-tikz} to provide a
+ definition for \hypercmd{oasymbol}.
+ See \cref{sec:oa:symbol,sec:oa:symbol-tikz}.
+ \begin{remindbox}
+ The package \hypersty{biblatex-ext-oasymb-tikz} will load \pgftikz.
+ \end{remindbox}
+\end{valuelist}
+
+\begingroup
+\makeatletter
+% Avoid a multiply defined label.
+% I know this is terrible, ...
+\def\ltd@pdfbookmark#1#2{%
+ \exltd@pdfbookmark{#1}{#2}}
+\makeatother
+\optitem{symbol}{\prm{symbol}}
+\endgroup
+
+Set \hypercmd{oasymbol} to output the symbol identified as \prm{symbol}.
+The available options can be found in \cref{sec:oa:symbol}.
+
+\begin{warnbox}
+Note that this option is only available if the
+option~\hyperopt{symbolpackage} has been set to a valid value different
+from \optval{false} or one of the open access symbol packages has
+been loaded manually (the latter is usually not recommended, the
+option~\hyperopt{symbolpackage} is the preferred way to load those
+packages).
+\end{warnbox}
+
+\boolitem[false]{doiapi}
+
+Whether or not to load the support package \hypersty{biblatex-ext-oa-doiapi}
+that provides a Lua module to query open access information
+from Unpaywall\fnurl{https://unpaywall.org/} via the DOI of an entry.
+
+\begin{warnbox}
+The package \hypersty{biblatex-ext-oa-doiapi} and thus this option
+can only be used with \lualatex.
+\end{warnbox}
+\end{optionlist}
+
+\clearpage
+The following macros in \sty{biblatex-ext-oa} are also of interest.
+\begin{ltxsyntax}
+
+
+\cmditem{LoadOASymbolPackage}[symbol]{package}
+
+This command provides an alternative to \hyperopt{symbolpackage} for loading
+a symbol package.
+The mandatory argument \prm{package} can take the same values as the
+\hyperopt{symbolpackage} option.
+The optional argument \prm{symbol} has the same meaning as the possible values
+for the \hyperopt{symbol} package option.
+
+The command can only be used in the preamble.
+It may only be used once and only if none of the symbol packages have been
+loaded either explicitly or via the \hyperopt{symbolpackage} option.
+
+This command is related to \hypercmd{DefineOASymbol} (see \cref{sec:oa:symbol}).
+
+\cmditem{oasymbol}
+
+This commands holds the little symbol that is going to be printed in the margin
+to mark open access publications.
+
+This command is initially undefined and must be defined for the
+package to work.
+One way of giving this command a useful definition is via the
+\hyperopt{symbolpackage} option of \sty{biblatex-ext-oa}.
+\end{ltxsyntax}
+
+An entry will be marked as open access if it has a \enquote{best open access
+URL}.
+This best open access URL will be determined according to the rules set out by
+the \hyperopt{openaccess} bibliography option (see \cref{sec:oa:detect}) in the
+\cmd{AtDataInput} hook,
+it is stored in the newly defined field \hyperbibfield{bestoaurl}.
+\begin{fieldlist}
+\fielditem{bestoaurl}{literal}
+This field holds the \enquote{best open access URL} as determined by the open
+access detection outlined in \cref{sec:oa:detect}.
+
+Note that this field need not hold the URL in expanded form.
+\end{fieldlist}
+
+Depending on the load-time options the package may define the following two
+bibliography macros.
+\begin{keymarglistbook}
+\keyitem[oamark]
+
+Prints the open access symbol if a best open access URL is available.
+This bibliography macro is available if the package is loaded with
+\hyperopt{enable} set to \optval{true}
+
+\keyitem[api:bestoaurl]
+
+Display the best open access URL according to the Unpaywall API.
+The URL is not shown if it coincides with the DOI, the check for that is
+performed by \hypercmd{OpenaccessURLisDOI} (see \cref{sec:oa:doiapi}).
+This macro is only available if both the \hyperopt{enable} and the
+\hyperopt{doiapi} options are set to \optval{true}.
+
+This macro is useful in connection with the Unpaywall API since the best
+open access URL may not be amongst the fields that are already displayed
+in the entry.
+\end{keymarglistbook}
+
+\begin{remindbox}
+With \opt{enable} set to \optval{true} the package will furthermore patch
+the bibliography macro \bibmacro{begentry} to execute the bibliography macro
+\hyperbibmacro{oamark}.
+If additionally \hyperopt{doiapi} is \optval{true}, the bibliography macro
+\bibmacro{doi+eprint+url} will be patched to include a call to
+\hyperbibmacro{api:bestoaurl}.
+Please keep that in mind should you need to redefine \bibmacro{begentry}
+or \bibmacro{doi+eprint+url}.
+\end{remindbox}
+
+\subsection{Open access detection}\label{sec:oa:detect}
+The heart of the package \sty{biblatex-ext-oa} is the bibliography option
+\hyperopt{openaccess}, which can be set globally, per type or per entry.
+
+A longer example document exploring various aspects of open access
+detection can be found at
+\url{https://github.com/moewew/biblatex-ext/blob/master/oaslinks.tex}.
+
+\begin{optionlist}
+\optitem[auto {\normalfont(\optval{none})}]{openaccess}{\optval{auto},
+ \optval{doiapi}, \optval{forcedoiapi}, \optval{true}, \optval{false},
+ \optval{none}, \prm{open access field}}
+
+This option controls how the best open access URL is detected.
+The initial value is \optval{auto} unless the package is loaded with the
+\hyperopt{enable} option set to \optval{false} in which case the initial
+value changes to \optval{none}.
+
+All of the following values are valid at all three levels (global,
+per-type and per-entry), but not all options may be useful at all
+available levels.
+\begin{valuelist}
+\item[auto] Use a semi-automatic heuristic to find the best open access URL.
+
+\item[all] Assume that all known \enquote{open access fields} contain an open
+ access URL.
+
+ Note that an entry still needs at least one field that open access field
+ for the open access symbol to show up.
+
+\item[none] Assume that no known \enquote{open access field} contains an open
+ access URL.
+
+ The value \optval{none} may be used to disable the \opt{openaccess} feature.
+
+\item[doiapi] Use API queries from the \sty{biblatex-ext-oa-doiapi} package
+ to determine the best open access link from the DOI.
+
+ \begin{warnbox}
+ This option requires that the \hyperopt{doiapi} package option be
+ set to \optval{true} and only works with \lualatex.
+ Furthermore it needs a DOI in the \bibfield{doi} field.
+ If the \bibfield{doi} field is empty, this option falls back to \optval{auto}.
+ \end{warnbox}
+
+\item[onlydoiapi] Like \optval{doiapi}, but does not fall back to \optval{auto}
+ in case no DOI is present.
+
+\item[forcedoiapi] Like \optval{doiapi}, but overrides more specific option
+ levels that would say otherwise.
+
+ By default more specific options take precedence over more general options,
+ that means that a per-entry option trumps a per-type option, which in turn
+ overrides the global setting.
+ If \optval{forcedoiapi} is set it will prevail over more specific options that
+ would say otherwise. A common use case is to override per-entry options with
+ a global \optval{forcedoiapi}.
+
+\item[forceonlydoiapi] A combination of \optval{onlydoiapi} and
+ \optval{forcedoiapi}.
+ This options overrides all more specific values and does not fall back to
+ \optval{auto} in case the DOI is not given.
+
+\item[true] An alias for \optval{all}.
+\item[false] An alias for \optval{none}.
+
+\item[\prm{open access field}] Specifies that the open access version is given
+ by \prm{open access field}.
+ This value would normally be used only on a per-entry level.
+
+ Any field for which \hypercmd{DeclareOpenAccessFieldUrl} has declared a URL
+ specification is a valid \enquote{open access field}.
+\end{valuelist}
+
+\end{optionlist}
+
+The heuristics to find the best open access link are governed
+by the following commands and rely on information present in the \filename{.bib}
+file (ideally in field annotations).
+
+\begin{ltxsyntax}
+\cmditem{DeclareOpenAccessFieldUrl}[openness]{field}{url spec}
+
+Declares \prm{field} to be an \enquote{open access field}.
+The code for \prm{url spec} should expand to the full URL under which the entry
+can be accessed.
+The optional \prm{openness} argument indicates whether the URL will always be
+open access (\texttt{always}) or whether it is only open access under certain
+conditions (\texttt{conditional});
+if it is not present \texttt{conditional} is assumed.
+
+If the package is loaded with \opt{enable} set to \optval{true},
+the following declarations are active.
+\begin{biblatexcode}
+\DeclareOpenAccessFieldUrl{url}{\thefield{url}}
+\DeclareOpenAccessFieldUrl{doi}{https://doi.org/\thefield{doi}}
+\end{biblatexcode}
+
+\cmditem{UndeclareOpenAccessFieldUrl}{field}
+
+Disable \prm{field} as \enquote{open access field} and remove its mapping
+to a URL.
+
+\cmditem{DeclareOpenAccessEprintUrl}[openness]{eprinttype}{url spec}
+
+Declares the \bibfield{eprinttype} \prm{eprinttype} to be an
+\enquote{open access eprint type}.
+The code for \prm{url spec} should expand to the full URL under which the entry
+can be accessed.
+
+The optional \prm{openness} argument indicates whether the URL will always be
+open access (\texttt{always}) or whether it is only open access under certain
+conditions (\texttt{conditional});
+if it is not present \texttt{conditional} is assumed.
+
+The \texttt{always} decision can be overridden on a per-entry basis by
+giving the field annotation \texttt{closedaccess}.
+If a field has openness \texttt{conditional} it is only considered for a
+particular entry if the field annotation \texttt{openaccess} is set.
+
+If the package is loaded with \opt{enable} set to \optval{true},
+the following declarations are active.
+\begin{biblatexcode}
+\DeclareOpenAccessEprintUrl{jstor}{%
+ http://www.jstor.org/stable/\thefield{eprint}}
+\DeclareOpenAccessEprintUrl{hdl}{%
+ http://hdl.handle.net/\thefield{eprint}}
+\DeclareOpenAccessEprintUrl{pubmed}{%
+ http://www.ncbi.nlm.nih.gov/pubmed/\thefield{eprint}}
+\DeclareOpenAccessEprintUrl[always]{arxiv}{%
+ https://arxiv.org/\abx@arxivpath/\thefield{eprint}}
+\end{biblatexcode}
+Since articles on the arXiv are always open access, the declaration
+for \bibfield{arxiv} features the optional \prm{openness} argument
+\texttt{always}.
+
+\cmditem{DeclareOpenAccessEprintAlias}{alias}{eprinttype}
+
+Handle the open access URL detection for \prm{alias} exactly as that for
+\prm{eprinttype}.
+
+If the package is loaded with \opt{enable} set to \optval{true},
+the following declarations are active.
+\begin{biblatexcode}
+\DeclareOpenAccessEprintAlias{JSTOR}{jstor}
+\DeclareOpenAccessEprintAlias{HDL}{hdl}
+\DeclareOpenAccessEprintAlias{PubMed}{pubmed}
+\DeclareOpenAccessEprintAlias{arXiv}{arxiv}
+\end{biblatexcode}
+
+\cmditem{UndeclareOpenAccessEprintUrl}{eprinttype}
+
+Disable \prm{eprinttype} as \enquote{open access eprint type} and remove its
+mapping to a URL.
+
+\cmditem{DeclareOpenAccessUrlFieldPriority}{fields}
+
+Define the priority order of \enquote{open access fields} if several fields
+contain valid open access URLs.
+The fields processed in the given order and the last field prevails, meaning
+that fields later in the list have higher priority.
+
+The default definition if the package is active is
+\begin{biblatexcode}
+\DeclareOpenAccessUrlFieldPriority{url,eprint,doi}
+\end{biblatexcode}
+which means that the DOI is given preference over eprints, which in turn
+prevail over the \bibfield{url} field.
+\end{ltxsyntax}
+
+The \optval{auto} detection works as follows.
+\begin{itemize}
+\item The best known open access URL is cleared.
+\item For each non-empty field listed in
+ \hypercmd{DeclareOpenAccessUrlFieldPriority} the URL specification is
+ obtained.
+ \begin{itemize}
+ \item If the field has \prm{openness} \texttt{always}, the best known open
+ access URL is updated with the new value, unless the field has been
+ explicitly marked as closed acces with the field annotation
+ \texttt{closedaccess}.
+ \item If the field has \prm{openness} \texttt{conditional}, the best known
+ open access URL is updated with the new value if the field has been marked
+ with the field annotation \texttt{openaccess}.
+ \end{itemize}
+\end{itemize}
+
+For \optval{auto}-detection, an open access article with DOI would
+ideally use the field annotation \texttt{openaccess}
+(\lstinline[style=extblxstylebibtex]|{doi+an = {=openaccess},|).
+% cipriani
+\inputexamplebibfile[listing options={linerange={27-38},
+ style = extblxstylebibtex}]
+ {biblatex-ext-examples.bib}
+Preprints on the arXiv, on the other hand, need no field annotation, because
+they are always open access.
+% meckes
+\inputexamplebibfile[listing options={linerange={40-48},
+ style = extblxstylebibtex}]
+ {biblatex-ext-examples.bib}
+\makeatletter
+\renewcommand{\extblx@oa@marginmark@do}{%
+ \vbox to 0pt{%
+ \kern-3\dp\strutbox
+ \strut
+ \hfill
+ \rlap{\kern.6em
+ \ifhyperref
+ {\href{\thefield{bestoaurl}}}
+ {\@firstofone}%
+ {\oasymbol}}
+ \vss
+ }%
+}
+\makeatother
+\begin{bibexample}
+\exampleprintbib{cipriani,meckes,sigfridsson}
+\end{bibexample}
+
+If the \opt{openaccess} option is set to one specific field only, only
+that field will be taken into consideration and it will be assumed that the
+field contains an open access link unless the field annotation
+\texttt{closedaccess} is set.
+In particular the \prm{openness} of each field does not play a role.
+
+
+\subsection{Open access detection with the Unpaywall API}\label{sec:oa:doiapi}
+\label{exltd@itm@biblatex-ext-oa-doiapi}
+Inspired by Eric Marsden's%
+\fnurl{https://tex.stackexchange.com/users/29621/eric-marsden}
+answer to the open access symbol question on TeX.SX, the package
+\sty{biblatex-ext-oa-doiapi}, which can be loaded via the \hyperopt{doiapi}
+option of \sty{biblatex-ext-oa}, provides means to automatically find the
+best open access link to a given article via its DOI by querying the
+Unpaywall API\fnurl{https://unpaywall.org/}.
+
+\begin{warnbox}
+This package can only be used with \lualatex{} and needs online
+access.
+Furthermore the Unpaywall API requires an email address and asks to limit
+requests to 100,000 calls per day\fnurl{https://unpaywall.org/products/api}.
+\end{warnbox}
+
+To avoid too many calls to the API, the package caches its information in the
+temporary \filename{.oai} file.
+It is safe to delete that file at any point, but if you do so the next
+\lualatex{} run may take a while, because all information has to be retrieved
+from the APIs.
+To avoid old information sticking around for too long you can set a cache
+expiration period.
+
+\begin{ltxsyntax}
+\cmditem{SetDOIAPIMail}{email}
+
+Define the email address that is going to be used for API queries that require
+an email.
+
+\begin{warnbox}
+There is no predefined default email address.
+If the package is loaded and no email was provided until the
+beginning of the document (as tested in an \cmd{AtEndPreamble} hook)
+you will receive a warning.
+A fatal error will be thrown if you try to query the Unpaywall database
+without an email address.
+\end{warnbox}
+
+\cmditem{SetDOIAPICacheExpiration}{days}
+
+Set the expiration period for the cache.
+If the information for an entry in the cache is older than \prm{days} days
+it will be queried again.
+The default expiration period is seven days.
+
+\cmditem{IsOpenaccess}{DOI}{true}{false}
+
+Expands to \prm{true} if the DOI is an open access work according to the
+Unpaywall database and to \prm{false} otherwise.
+
+\cmditem{GetOpenaccessURLWrapped}{DOI}
+
+Obtain the best open access URL as returned by the Unpaywall API wrapped in
+the \cmd{url} macro.
+
+\cmditem{OpenaccessURLisDOI}{DOI}{true}{false}
+
+Expands to \prm{true} if the best open access URL as returned by the Unpaywall
+API is the DOI and to \prm{false} otherwise.
+\end{ltxsyntax}
+
+
+\subsection{Open access symbols}\label{sec:oa:symbol}
+Currently, this bundle offers three methods of drawing the open access
+symbols.
+Each method is packed up in a little sub-package, end users are not
+expected to load these packages manually, instead they should use
+the option~\hyperopt{symbolpackage} of \hypersty{biblatex-ext-oa}.
+
+The package \hypersty{biblatex-ext-oasymb-pict2e} draws the symbols using
+\sty{pict2e}'s \env{picture} environment.
+The package \hypersty{biblatex-ext-oasymb-tikz}
+uses \pgftikz's \env{tikzpicture}.
+The package \hypersty{biblatex-ext-oasymb-l3draw} finally
+uses \LaTeX3's \sty{l3draw} package.
+The main purpose of these packages is to define the macro \cmd{oasymbol}
+for use with \sty{biblatex-ext-oa}.
+
+All packages define a similar set of macros, so they are not indended to
+be loaded together.
+If used as stand-alone packages, all packages only have one option.
+
+\begin{optionlist}
+\optitem[plos]{symbol}{\optval{plos}, \optval{oanet}}
+
+This options determines which of the two available symbols is going to
+be used for \hypercmd{oasymbol}.
+
+The possible values are
+\begin{valuelist}
+\item[plos] Use the open access symbol by PLOS | Public Library of Science%
+ \fnurl{https://www.plos.org/} \csuse{extblx@oasymb@pict@plos}.
+
+ The drawing is based on a CC0%
+ \fnurl{https://creativecommons.org/publicdomain/zero/1.0/deed.en}
+ work by PLoS (now PLOS | Public Library of Science),
+ modified by Wikipedia users Nina, Beao, and JakobVoss%
+\fnurl{https://commons.wikimedia.org/wiki/File:Open_Access_logo_PLoS_white.svg}.
+
+\item[oanet] Use the open access symbol by open-access.net%
+ \fnurl{https://open-access.net/}
+ \csuse{extblx@oasymb@pict@oanet}.
+
+ The drawing is based on the logo uploaded to Wikimedia%
+ \fnurl{https://commons.wikimedia.org/wiki/File:Open_access.svg}
+ and originally from open-access.net%
+ \fnurl{https://open-access.net/fileadmin/logos/oa.svg}.
+ Wikimedia claims the content does not meet the threshold of originality
+ for copyright protection.
+ Even if that is not the case, the legal notices on open-access.net%
+ \fnurl{https://open-access.net/DE-EN/provider-legal-notices-and-terms/}
+ place all contents under a Creative Commons 4.0 Attribution International
+ (CC BY 4.0) Licence\fnurl{https://creativecommons.org/licenses/by/4.0/}
+ unless stated otherwise.
+ The logo designer is listed as
+ \emph{Medien + Design\fnurl{http://www.cedis.fu-berlin.de/mediendesign/},
+ Center for Digital Systems,
+ Competence Center for E-Learning and Multimedia, Freie Universität Berlin}.
+
+ There is no implication that the open-access.net logo is not covered by
+ the CC BY 4.0 terms.
+ Indeed, the German \enquote{about us} page explicitly states
+ \foreignquote{ngerman}{%
+ Das Logo der Informationsplattform darf nachgenutzt werden,
+ gerne mit einem Link zu open-access.net.}%
+ \fnurl{https://open-access.net/ueber-uns/}
+ The English version has \enquote{The logo of the information platform
+ may be reused with a link to open-access.net}%
+ \fnurl{https://open-access.net/DE-EN/about-us/}.
+ While the German version leaves some leeway as to whether or not a link is
+ required as attribution, the English version seems more explicit.
+
+ That means that if you do not follow Wikimedia in considering the symbol
+ not protected by copyright in your~-- and all other relevant jurisdictions%
+ ~-- due to its failure to cross the threshold of originality,
+ you should probably treat it as CC BY 4.0 and treat the link to
+ \url{https://open-access.net} as attribution requested by the Licensor
+ according to Section 3(a)(1)(A) of the license.
+ If you can't reasonably meet the requirements of the license in your work,
+ you may want to consider using the PLOS logo, which is licensed under CC0.
+\end{valuelist}
+\end{optionlist}
+
+Apart from \hypercmd{oasymbol} the packages only define one other user-level
+command.
+\begin{ltxsyntax}
+\cmditem{DefineOASymbol}[symbol]
+
+This command redefines \hypercmd{oasymbol} to point to a different version
+of the symbol.
+The possible values for the \prm{symbol} argument are the values of the
+\hyperopt{symbol} option.
+\end{ltxsyntax}
+
+\subsubsection[\sty{pict2e}]{Open access symbols with \sty{pict2e}}
+\label{sec:oa:symbol-pict2e}
+\label{exltd@itm@biblatex-ext-oasymb-pict2e}
+The main purpose of the package \sty{biblatex-ext-oasymb-pict2e}
+is to define the command \hypercmd{oasymbol}.
+As mentioned above, usually this package is not going to be loaded as a
+stand-alone package, instead it is loaded via
+\hypersty[symbolpackage]{biblatex-ext-oa}.
+
+The package requires and loads the packages
+\sty{pict2e}\fnurl{https://ctan.org/pkg/pict2e} by Hubert Gäßlein,
+Rolf Nie\-praschk and Josef Tkadlec
+as well as
+\sty{xcolor}\fnurl{https://ctan.org/pkg/xcolor} by Uwe Kern.
+
+If used as a stand-alone package, \sty{biblatex-ext-oasymb-pict2e} has one
+load-time option, namely \hyperopt{symbol}, and defines one command besides
+\hypercmd{oasymbol}, namely \hypercmd{DefineOASymbol}.
+The option determines whether \cmd{oasymbol} is defined to display
+the PLOS symbol~(\csuse{extblx@oasymb@pict@plos})
+or the open-access.net symbol~(\csuse{extblx@oasymb@pict@oanet}).
+The command \hypercmd{DefineOASymbol} can be used to change the definition
+of \cmd{oasymbol} on the fly.
+
+
+\subsubsection[Ti\emph{k}Z]{Open access symbols with Ti\emph{k}Z}
+\label{sec:oa:symbol-tikz}
+\label{exltd@itm@biblatex-ext-oasymb-tikz}
+The main purpose of the package \sty{biblatex-ext-oasymb-tikz}
+is to define the command \hypercmd{oasymbol}.
+As mentioned above, usually this package is not going to be loaded as a
+stand-alone package, instead it is loaded via
+\hypersty[symbolpackage]{biblatex-ext-oa}.
+
+This package requires and loads the package
+\sty{tikz}\fnurl{https://ctan.org/pkg/pgf} by Till Tantau as well as all
+its dependencies.
+
+If used as a stand-alone package, \sty{biblatex-ext-oasymb-tikz} has one
+load-time option, namely \hyperopt{symbol}, and defines one command besides
+\hypercmd{oasymbol}, namely \hypercmd{DefineOASymbol}.
+The option determines whether \cmd{oasymbol} is defined to display
+the PLOS symbol~(\csuse{extblx@oasymb@tikz@plos})
+or the open-access.net symbol~(\csuse{extblx@oasymb@tikz@oanet}).
+The command \hypercmd{DefineOASymbol} can be used to change the definition
+of \cmd{oasymbol} on the fly.
+
+This package used to be called \sty{biblatex-ext-oa-tikzsymbols},
+for consistency reasons it has been renamed to \sty{biblatex-ext-oasymb-tikz}.
+
+The command \cmd{DefineTikZOASymbol} has been renamed to the more generic
+\hypercmd{DefineOASymbol}.
+Backwards compatibility code for that change is in place.
+
+
+\subsubsection[\sty{l3draw}]{Open access symbols with \sty{l3draw}}
+\label{sec:oa:symbol-l3draw}
+\label{exltd@itm@biblatex-ext-oasymb-l3draw}
+The main purpose of the package \sty{biblatex-ext-oasymb-l3draw}
+is to define the command \hypercmd{oasymbol}.
+As mentioned above, usually this package is not going to be loaded as a
+stand-alone package, instead it is loaded via
+\hypersty[symbolpackage]{biblatex-ext-oa}.
+
+This package requires and loads the full force of \LaTeX3.
+Aside from the main package \sty{expl3}\fnurl{https://ctan.org/pkg/expl3} it
+loads \sty{xparse}\fnurl{https://ctan.org/pkg/xparse},
+and \sty{l3keys2e}\fnurl{https://ctan.org/pkg/l3keys2e}.
+Drawing is performed with the (still experimental)
+\sty{l3draw}\fnurl{https://ctan.org/pkg/l3experimental} and
+\sty{l3color}\fnurl{https://ctan.org/pkg/l3experimental} packages.
+
+If used as a stand-alone package, \sty{biblatex-ext-oasymb-l3draw} has one
+load-time option, namely \hyperopt{symbol}, and defines one command besides
+\hypercmd{oasymbol}, namely \hypercmd{DefineOASymbol}.
+The option determines whether \cmd{oasymbol} is defined to display
+the PLOS symbol~(\csuse{extblx@oasymb@draw@plos})
+or the open-access.net symbol~(\csuse{extblx@oasymb@draw@oanet}).
+The command \hypercmd{DefineOASymbol} can be used to change the definition
+of \cmd{oasymbol} on the fly.
+
+
+
+
+\clearpage
+\section{Revision History}\label{sec:log}
+The GitHub repository of this project uses release tags, so you can compare
+the changes in source code there.\footnote{\url{\gitbaseurl/compare/}}
+See also \filename{CHANGES.md}.
+
+The numbers on the right indicate the relevant section of the manual.
+\begin{changelog}
+\begin{release}{0.8}{2019-08-25}
+ \item Added \hypercmd{AtIntrocite} \see{sec:opt:style}
+ \item Require \sty{biblatex} v3.13 (2010/08/17)\see{sec:req}
+\end{release}
+\begin{release}{0.7a}{2019-04-04}
+ \item Fixed bug in the \opt{env} option of \hypercmd{printbibtabular}%
+ \see{sec:tabularbib}
+\end{release}
+\begin{release}{0.7}{2019-02-08}
+ \item Added outer citation delimiters for \cmd{supercite}%
+ \see{sec:opt:citedelims}
+ \item Added \hypersty{biblatex-ext-oasymb-pict2e}\see{sec:oa:symbol-pict2e}
+ \item Added \hypersty{biblatex-ext-oasymb-l3draw}\see{sec:oa:symbol-l3draw}
+ \item Renamed \sty{biblatex-ext-oa-tikzsymbols} to
+ \hypersty{biblatex-ext-oasymb-tikz}\see{sec:oa:symbol-tikz}
+ \item Deprecated option \opt{tikzsymbol} of \hypersty{biblatex-ext-oa} in
+ favour of \hyperopt{symbolpackage} and \hyperopt{symbol}\see{sec:oa}
+ \item Renamed and generalised \cmd{DefineTikZOASymbol} to
+ \hypercmd{DefineOASymbol}\see{sec:oa:symbol}
+ \item Renamed and generalised \cmd{LoadTikZOASymbol} to
+ \hypercmd{LoadOASymbolPackage}\see{sec:oa}
+\end{release}
+\begin{release}{0.6b}{2019-01-11}
+ \item Fixed issue loading \texttt{socket.url} module in
+ \hypersty{biblatex-ext-oa-doiapi}\see{sec:oa:doiapi}
+\end{release}
+\begin{release}{0.6a}{2019-01-04}
+ \item Minor improvements for \hypersty{biblatex-ext-oa}\see{sec:oa}
+\end{release}
+\begin{release}{0.6}{2018-11-23}
+ \item Require \sty{biblatex} 3.12
+ \item Made \hyperopt{dashed} and \hyperopt{introcite} options available on a
+ per-entry and per-type basis\see{sec:opt:style}
+ \item Added \hypercmd{titleaddonpunct}\see{sec:opt:punct}
+ \item Added \hypersty{biblatex-ext-oa} package for open access detection and
+ symbols\see{sec:oa}
+\end{release}
+\begin{release}{0.5a}{2018-10-09}
+ \item Fixed a bug with \cmd{footcites} and \cmd{footcitetexts} in
+ \blxstyle{ext-authoryear}
+\end{release}
+\begin{release}{0.5}{2018-10-02}
+ \item New \hyperblxstyle[ext-authoryear-ecomp]{ext-authoryear-*ecomp} style
+ subfamily\see{sec:styles:new}
+ \item Added outer cite delimiters for \cmd{footcite}\see{sec:opt:citedelims}
+ \item Added experimental tabular bibliography\see{sec:tabularbib}
+\end{release}
+\begin{release}{0.4}{2018-06-10}
+ \item Renamed \cmd{DeclareOuterCiteDelim} and friends to
+ \hypercmd{DeclareOuterCiteDelims}\see{sec:opt:citedelims}
+ \item Added \hypercmd{RegisterCiteDelims}\see{sec:opt:citedelims}
+ \item Renamed \enquote{virtual} cite command \cmd{bbx:introcite} to
+ \cmd{bbx@introcite}\see{sec:opt:style}
+ \item Renamed \opt{citeinxref} to \hyperopt{citexref}\see{sec:opt}
+\end{release}
+\begin{release}{0.3}{2018-06-04}
+ \item Added \hyperbibfieldformat[titlecase:title]{titlecase:\dots title}
+ field formats\see{sec:opt:field}
+ \item Added \hypersty{bbx:introcite:plain:keeprelated} toggle%
+ \see{sec:opt:style}
+ \item Added \hypercmd{jourvoldelim}, \hypercmd{jourserdelim} and
+ \hypercmd{servoldelim}\see{sec:opt:punct}
+ \item Improve documentation
+\end{release}
+\begin{release}{0.2}{2018-03-28}
+ \item Rework lengths for \hyperkvopt{introcite}{label}\see{sec:opt:style}
+ \item Fixed meaning of \hypercmd{maintitletitledelim}\see{sec:opt:punct}
+ \item Added \hypercmd{voltitledelim}\see{sec:opt:punct}
+\end{release}
+\begin{release}{0.1a}{2018-03-20}
+ \item Fixed inner citation delimiters for \hyperblxstyle{ext-authoryear},
+ \hyperblxstyle{ext-authortitle} and their \blxstyle{-ibid} versions%
+ \see{sec:opt:citedelims}
+ \item Fixed \cmd{smartcite} delimiters\see{sec:opt:citedelims}
+\end{release}
+\begin{release}{0.1}{2018-03-18}
+ \item First public release
+\end{release}
+\end{changelog}
+
+\begin{bibexample}[breakable]
+\printbibliography[heading=bibintoc, title={Example \refname}]
+\end{bibexample}
+
+\clearpage
+\appendix
+\section{Punctuation Commands in Use}\label{sec:punctinuse}
+The following example bibliography shows some common punctuation commands
+in use.
+Commands provided by standard \sty{biblatex} are marked in
+\textit{\cmd{italics}}, new commands defined by \sty{biblatex-ext} are in
+\textbf{\cmd{bold}} and linked to their documentation.
+\begin{bibexample}[title={Punctuation and delimiters
+ (defined by \textit{standard \sty{biblatex}} and
+ \textbf{\sty{biblatex-ext}})},
+ top=6mm,bottom=4mm,remember,
+ overlay={
+ % geer
+ \punctarrow*{nameyeardelim}{-.8mm}{6mm}
+ \punctarrow*{nametitledelim}{2.5mm}{6mm}
+ % companion
+ \punctarrow*{multinamedelim}{-2.5mm}{6mm}
+ \punctarrow*{finalnamdelim}{2.5mm}{4mm}
+ \punctarrow{locpubdelim}{-2.5mm}{-5mm}
+ \punctarrow{pubdatedelim}{2.5mm}{-4mm}
+ % knuth:ct:a
+ \punctarrow{maintitletitledelim}{-2.5mm}{-.8cm}
+ \punctarrow{voltitledelim}{2.5mm}{-4mm}
+ % moore
+ \punctarrow*{intitlepunct}{-4mm}{-4mm}
+ \punctarrow*{bibpagespunct}{-2.5mm}{-4mm}
+ \punctarrow*{bibrangedash}{.2cm}{-4mm}
+ % sigfridsson
+ \punctarrow{jourvoldelim}{-.2cm}{-4mm}
+ \punctarrow{volnumdelim}{.2cm}{-4mm}
+ % vizedom:related
+ \punctarrow*{translatortypedelim}{2.5mm}{6mm}
+ \punctarrow*{begrelateddelim}{.8cm}{-4mm}
+ % westfahl:frontier
+ \punctarrow*{editortypedelim}{2.5mm}{6mm}
+ \punctarrow*{newunitpunct}{-.2cm}{-4mm}
+ % westfahl:space
+ \punctarrow*{bibnamedash}{2.5mm}{5mm}
+ \punctarrow*{subtitlepunct}{2.5mm}{5mm}
+ }
+]
+\frenchspacing
+\list{}
+ {\setlength{\leftmargin}{\bibhang}%
+ \setlength{\itemindent}{-\leftmargin}%
+ \setlength{\itemsep}{8mm}%
+ \setlength{\parsep}{\bibparsep}}
+\item\nocite{geer}
+ Geer, Ingrid de\tikztextmark{nameyeardelim}{\textvisiblespace}(1985)%
+ \tikztextmark{nametitledelim}{.} \enquote{Earl, Saint, Bishop, Skald --
+ and Music. The Orkney Earldom of the Twelfth Century. A Musicological Study}.
+ PhD thesis. Uppsala: Uppsala Universitet.
+
+\item\nocite{companion}
+ Goossens, Michel\tikztextmark{multinamedelim}{,} Frank Mittelbach
+ \tikztextmark{finalnamdelim}{and} Alexander Samarin (1994).
+ \emph{The LaTeX Companion}. 1st ed. Reading, Mass.%
+ \tikztextmark{locpubdelim}{:} Addison-Wesley\tikztextmark{pubdatedelim}{,}
+ 1994. 528 pp.
+
+\item\nocite{knuth:ct:a}
+ Knuth, Donald E. (1984). \emph{Computers \& Typesetting}%
+ \tikztextmark{maintitletitledelim}{.} Vol. A\tikztextmark{voltitledelim}{:}
+ \emph{The \TeX{} book}. Reading, Mass.: Addison-Wesley, 1984.
+
+\item\nocite{moore}
+ Moore, Gordon E. (1965). \enquote{Cramming more components onto integrated
+ circuits}. In\tikztextmark{intitlepunct}{:} \emph{Electronics} 38.8%
+ \tikztextmark{bibpagespunct}{,} pp. 114\tikztextmark{bibrangedash}{--}117.
+
+\item\nocite{sigfridsson}
+ Sigfridsson, Emma and Ulf Ryde (1998). \enquote{Comparison of methods for
+ deriving atomic charges from the electrostatic potential and moments}.
+ In: \emph{Journal of Computational
+ Chemistry}\tikztextmark{jourvoldelim}{\textvisiblespace}19%
+ \tikztextmark{volnumdelim}{.}4 (1998), pp. 377--395.
+
+\item\nocite{vizedom:related}
+ Vizedom, Monika B. and Gabrielle L. Cafee%
+ \tikztextmark{translatortypedelim}{,} trans. (1960).
+ \emph{The Rites of Passage.} University of Chicago Press%
+ \tikztextmark{begrelateddelim}{.} Trans. of Arnold van Gennep.
+ \emph{Les rites de passage.}
+ Paris: Nourry, 1909.
+
+\item\nocite{westfahl:frontier}
+ Westfahl, Gary\tikztextmark{editortypedelim}{,} ed. (2000a).
+ \emph{Space and Beyond. The Frontier Theme in Science Fiction}%
+ \tikztextmark{newunitpunct}{.} Westport, Conn. and London: Greenwood, 2000.
+
+\item\nocite{westfahl:space}
+ \tikztextmark{bibnamedash}{--} (2000b). \enquote{The True Frontier%
+ \tikztextmark{subtitlepunct}{.} Confronting and Avoiding the Realities of
+ Space in American Science Fiction Films}. In: \emph{Space and Beyond.
+ The Frontier Theme in Science Fiction}. Ed. by Gary Westfahl. Westport, Conn.
+ and London: Greenwood, 2000, pp. 55--65.
+\endlist
+\end{bibexample}
+
+\end{document}
+\endinput
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua b/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua
new file mode 100644
index 0000000000..74d3badfaf
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/blxextdoiapi.lua
@@ -0,0 +1,260 @@
+blxextdoiapi = blxextdoiapi or {}
+
+local blxextdoiapi_module = {
+ name = "blxextdoiapi",
+ version = "v0.8",
+ date = "2019/08/25",
+ description = "Obtain open access information from DOI via unpaywall.org",
+ author = "Moritz Wemheuer",
+ license = "LPPL v1.3c",
+ url = "https://github.com/moewew/biblatex-ext/",
+}
+-- inspired by Eric Marsden's answer to https://tex.stackexchange.com/q/459449/
+
+
+-- luatexbase's luatexbase.provides_module returns the loggers directly
+local err, warn, info, log = luatexbase.provides_module(blxextdoiapi_module)
+
+-- Does it even make sense to try and make use of the extra luatexbase stuff
+-- from luatexbase.sty? Since we don't want to assume that package in general,
+-- we have to manually recode it anyway...
+
+-- for ltluatex's luatexbase.provides_module we need to construct the loggers
+local error = err or
+ (function (s,...)
+ return luatexbase.module_error(blxextdoiapi_module.name, s:format(...))
+ end)
+local warning = warn or
+ (function (s,...)
+ return luatexbase.module_warning(blxextdoiapi_module.name, s:format(...))
+ end)
+local info = info or
+ (function (s,...)
+ return luatexbase.module_info(blxextdoiapi_module.name, s:format(...))
+ end)
+local log = log or
+ (function (s,...)
+ return luatexbase.module_info(blxextdoiapi_module.name, s:format(...))
+ end)
+
+
+local http = require("socket.http")
+local url = socket.url or require("socket.url") --- #17, LuaTeX 1.07
+local json = utilities.json
+local os_time = os.time
+local os_date = os.date
+local os_difftime = os.difftime
+local gsub = string.gsub
+local texwrite = tex.write
+
+-- cf. fontspec.lua and microtype.lua
+-- http://mirrors.ctan.org/macros/latex/contrib/fontspec/fontspec-lua.dtx
+-- http://mirrors.ctan.org/macros/latex/contrib/microtype/microtype.dtx
+-- as well as luatexja.lua (luatexbase.catcodetables['latex-package'])
+-- http://mirrors.ctan.org/macros/luatex/generic/luatexja/src/luatexja.lua
+-- and luaotfload-auxiliary.lua (luatexbase.catcodetables["latex-package"])
+-- http://mirrors.ctan.org/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
+local catpackage
+if luatexbase.catcodetables then
+ catpackage = luatexbase.catcodetables["latex-package"] -- luatexbase
+else
+ catpackage = luatexbase.registernumber("catcodetable@atletter") -- ltluatex
+end
+
+local function texsprint(s)
+ tex.sprint(catpackage, s)
+end
+
+-- global database of DOIs
+-- is going to be loaded from \jobname.oai beforehand if the file exists
+oadb = oadb or {}
+
+-- parse YYYY-MM-DD date as string (UTC time!)
+-- os.time is usually local time, hence the utc_offset to get UTC
+-- see also https://stackoverflow.com/q/4105012
+local function ymdstr_to_date(date_str)
+ local date_pattern = "(%d+)-(%d+)-(%d+)"
+ local utc_offset = os_difftime(os_time(), os_time(os_date("!*t")))
+ local year, month, day = date_str:match(date_pattern)
+
+ if year and month and day then
+ return os_time({year = year, month = month, day = day, sec=utc_offset})
+ end
+
+ return nil
+end
+
+local TODAY_STR = os_date("!%Y-%m-%d")
+local TODAY = ymdstr_to_date(TODAY_STR)
+
+local SECONDS_PER_DAY = 86400
+
+-- info in oadb expires after blxextdoiapi.cache_expire days
+-- if the info is older than that is_recent_info will return false
+-- can be set with \SetDOIAPICacheExpiration
+local cache_expire = 7
+
+-- this includes a test if there is info at all
+local function is_recent_info(doi, days, api)
+ if oadb[doi] and oadb[doi]["cache_date_" .. api] then
+ return os_difftime(TODAY, ymdstr_to_date(oadb[doi]["cache_date_" .. api]))
+ < days * SECONDS_PER_DAY
+ end
+
+ return false
+end
+
+local function query_json_api(req_url)
+ body, code, headers = http.request(req_url)
+ if body then
+ -- JSON escapes don't quite work for Lua
+ -- https://tools.ietf.org/html/rfc8259, section 7
+ -- http://lua-users.org/lists/lua-l/2017-04/msg00100.html
+ -- query DOI 10.1371/journal.pbio.2005099 from Unpaywall
+ -- to see what goes wrong
+ body = body:gsub("\\u(%x%x%x%x)","\\u{%1}")
+ return json.tolua(body), code
+ end
+
+ return nil, code
+end
+
+local function get_doi_info(doi)
+ local req_url = "https://doi.org/api/handles/" .. url.escape(doi)
+ local doi_info, code = query_json_api(req_url)
+
+ if doi_info then
+ oadb[doi] = oadb[doi] or {}
+ oadb[doi]["cache_date_doi"] = TODAY_STR
+ oadb[doi]["is_valid"] = (doi_info["responseCode"] == 1)
+ info("Successfully queried doi.org for info on\n" .. doi)
+ return oadb[doi]["is_valid"]
+ end
+
+ warning("Failed to obtain DOI info\nfrom doi.org for\n"
+ .. doi .. "\nerror code " .. code)
+ return false
+end
+
+local function is_valid_doi(doi)
+ if is_recent_info(doi, blxextdoiapi.cache_expire, "doi") then
+ return oadb[doi]["is_valid"]
+ end
+
+ return get_doi_info(doi)
+end
+
+-- email is required, error out if not given
+-- Unfortunately, this gives a weird Lua dump as well and one has to scroll
+-- up to see the error, but it felt like cheating shoehorning in
+-- a usual TeX error instead of the generic LuaTeX error provided by ltluatex.
+-- Only makes sense if the DOI is valid.
+local function get_unpaywall_info(doi)
+ if not is_valid_doi(doi) then
+ return nil
+ elseif not blxextdoiapi.mail or blxextdoiapi.mail == "" then
+ error("No mail address supplied.\n" ..
+ "You must give a valid email address\n" ..
+ "to be able to use the Unpaywall API\n")
+ return nil
+ end
+
+ local req_url = "https://api.unpaywall.org/v2/" .. doi
+ .. "?email=" .. blxextdoiapi.mail
+ local upw_info, code = query_json_api(req_url)
+
+ if code == 200 and upw_info then
+ oadb[doi] = oadb[doi] or {}
+ oadb[doi]["cache_date_upw"] = TODAY_STR
+ -- Don't read "is_oa", we go to the URL directly.
+ if upw_info["best_oa_location"] then
+ oadb[doi]["oa_url"] = upw_info["best_oa_location"]["url_for_landing_page"]
+ or upw_info["best_oa_location"]["url"]
+ or upw_info["best_oa_location"]["url_for_pdf"]
+ -- As it turns out url_for_landing_page might be null
+ -- even though there is a url and a url_for_pdf.
+ -- http://unpaywall.org/data-format does not explicitly list
+ -- url_for_landing_page as String|Null like other null-able objects.
+ -- But request 10.1007/s00163-016-0235-2 to see this issue
+ -- (at least updated: "2018-07-28T00:37:18.524676").
+ -- I don't understand why Unpaywall returns two objects in the first place
+ -- they are clearly the same. Yet the one identified as 'best' has a
+ -- longer, weird URL and no landing page. It was probably chosen because
+ -- it is marked as having been updated more recently.
+ else
+ oadb[doi]["oa_url"] = nil
+ end
+ info("Successfully queried unpaywall.org\n"
+ .. "for info on\n" .. doi)
+ return oadb[doi]["oa_url"]
+ end
+
+ warning("Failed to obtain open access info\n"
+ .. "from unpaywall.org for DOI\n" .. doi .. "\n"
+ .. "error code: " .. code)
+ return nil
+end
+
+
+local function get_openaccess_url(doi)
+ if is_recent_info(doi, blxextdoiapi.cache_expire, "upw") then
+ return oadb[doi]["oa_url"]
+ end
+
+ return get_unpaywall_info(doi)
+end
+
+-- returns false if there is no open access URL since the RHS ~= nil
+local function openaccess_url_is_doi(doi)
+ return get_openaccess_url(doi) == "https://doi.org/" .. doi
+end
+
+local function is_openaccess(doi)
+ return get_openaccess_url(doi) ~= nil
+end
+
+-- For TeX. I'd have liked this better in the .sty, but the whole \ escape
+-- malarkey made that a pain, so the function is here now.
+local function assign_openaccess_url_to(macro, doi)
+ local oa_url = get_openaccess_url(doi)
+ if oa_url then
+ texsprint("\\def"..macro.."{")
+ texwrite(oa_url)
+ texsprint("}")
+ end
+end
+
+-- make conditionals usable as \<...>{<true>}{<false>} directly
+local function texify_conditional(cond)
+ if cond then
+ texsprint("\\@firstoftwo")
+ else
+ texsprint("\\@secondoftwo")
+ end
+end
+
+-- mail is not exported, we just expect the user to set it
+return {
+ module = module,
+ cache_expire = cache_expire,
+ is_valid_doi = is_valid_doi,
+ is_openaccess = is_openaccess,
+ get_openaccess_url = get_openaccess_url,
+ assign_openaccess_url_to = assign_openaccess_url_to,
+ openaccess_url_is_doi = openaccess_url_is_doi,
+ texify_conditional = texify_conditional,
+}
+
+--
+-- This file is part of the biblatex-ext bundle.
+-- biblatex-ext is released under the LaTeX Project Public License v1.3c
+-- or later.
+--
+-- A complete list of files included in that package can be found in README.md
+-- or - failing that - in ext-standard.bbx.
+--
+-- Official releases of this package are on CTAN
+-- https://www.ctan.org/pkg/biblatex-ext
+-- development takes place on GitHub
+-- https://github.com/moewew/biblatex-ext
+--
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx
new file mode 100644
index 0000000000..04b3ee0d37
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.bbx
@@ -0,0 +1,24 @@
+\ProvidesFile{ext-alphabetic-verb.bbx}
+ [2019/08/25 v0.8 extended biblatex alphabetic-verb
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{alphabetic-verb}
+
+\endinput
+% Released under the LaTeX Project Public License v1.3c or later
+%
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx
new file mode 100644
index 0000000000..ab41c4ab9c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic-verb.cbx
@@ -0,0 +1,107 @@
+\ProvidesFile{ext-alphabetic-verb.cbx}
+ [2019/08/25 v0.8 extended biblatex alphabetic-verb citation style
+ (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{alphabetic-verb}
+
+\DeclareOuterCiteDelims{cite}{\bibopenbracket}{\bibclosebracket}
+\DeclareOuterCiteDelimsAlias{parencite}{cite}
+\DeclareOuterCiteDelims{textcite}{}{}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenbracket}{\bibclosebracket}
+
+\renewbibmacro*{textcite}{%
+ \ifnameundef{labelname}
+ {\printfield[citetitle]{labeltitle}}
+ {\printnames{labelname}}%
+ \printdelim{namelabeldelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite}}
+
+\DeclareCiteCommand{\cite}
+ {\csuse{extblx@citedelim@cite@outer@open}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \ifnumgreater{\value{citecount}}{1}
+ {\csuse{extblx@citedelim@cite@outer@open}}
+ {}%
+ \usebibmacro{cite}}
+ {\csuse{extblx@citedelim@cite@outer@close}%
+ \multicitedelim}
+ {\usebibmacro{postnote}%
+ \csuse{extblx@citedelim@cite@outer@close}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\textcite}[\mkoutertextcitedelims]
+ {}
+ {\usebibmacro{citeindex}%
+ \iffirstcitekey
+ {\setcounter{textcitetotal}{1}}
+ {\stepcounter{textcitetotal}%
+ \textcitedelim}%
+ \usebibmacro{textcite}}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+ {\usebibmacro{postnote}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\textcites}[\mkoutertextcitedelims]
+ {\textcite}{}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx
new file mode 100644
index 0000000000..6cf2f9cc24
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.bbx
@@ -0,0 +1,20 @@
+\ProvidesFile{ext-alphabetic.bbx}
+ [2019/08/25 v0.8 extended biblatex alphabetic bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{alphabetic}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx
new file mode 100644
index 0000000000..c1a112d4c2
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-alphabetic.cbx
@@ -0,0 +1,126 @@
+\ProvidesFile{ext-alphabetic.cbx}
+ [2019/08/25 v0.8 extended biblatex alphabetic citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{alphabetic}
+
+\DeclareOuterCiteDelims{cite}{\bibopenbracket}{\bibclosebracket}
+\DeclareOuterCiteDelimsAlias{parencite}{cite}
+\DeclareOuterCiteDelims{textcite}{}{}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenbracket}{\bibclosebracket}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\multicitedelim}}
+ {\ifnameundef{labelname}
+ {\printfield[citetitle]{labeltitle}}
+ {\printnames{labelname}}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{namelabeldelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx
new file mode 100644
index 0000000000..81469dad16
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-common.bbx
@@ -0,0 +1,41 @@
+\ProvidesFile{ext-authortitle-common.bbx}
+ [2019/08/25 v0.8 common files for extended biblatex
+ authortitle bibliography styles (MW)]
+
+\RequireBibliographyStyle{ext-dashed-common}
+
+\defbibenvironment{bibliography}
+ {\list
+ {\ifcsequal{extblx@introcite}{extblx@opt@introcite@label}
+ {\usebibmacro{introcite:typeset}}
+ {}}
+ {\ifcsequal{extblx@introcite}{extblx@opt@introcite@label}
+ {\setlength{\labelwidth}{\introcitewidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\labelsep}{\introcitesep}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \renewcommand*{\makelabel}[1]{##1\hss}}
+ {\setlength{\leftmargin}{\bibhang}%
+ \setlength{\itemindent}{-\leftmargin}}%
+ \setlength{\itemsep}{\bibitemsep}%
+ \setlength{\parsep}{\bibparsep}}}
+ {\endlist}
+ {\item
+ \ifcsequal{extblx@introcite}{extblx@opt@introcite@label}
+ {\usebibmacro{introcite:break}}
+ {}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx
new file mode 100644
index 0000000000..4db77269e8
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle-comp.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-comp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle-comp}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx
new file mode 100644
index 0000000000..85d3719eb2
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-comp.cbx
@@ -0,0 +1,198 @@
+\ProvidesFile{ext-authortitle-comp.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-comp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authortitle-comp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{cite}{}{}
+\DeclareInnerCiteDelims{parencite}{}{}
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+\DeclareInnerCiteDelims{footcite}{}{}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}}
+ {\printnames{labelname}%
+ \setunit*{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \usebibmacro{cite:title}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}}
+ {\printnames{labelname}%
+ \setunit*{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \usebibmacro{postnote}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifnameundef{labelname}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}
+ {\setunit{\printdelim{postnotedelim}}}%
+ \printfield{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx
new file mode 100644
index 0000000000..b7d76a87e7
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle-ibid.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-ibid
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle-ibid}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx
new file mode 100644
index 0000000000..ce9f7eb7a4
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ibid.cbx
@@ -0,0 +1,153 @@
+\ProvidesFile{ext-authortitle-ibid.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-ibid
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authortitle-ibid}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{cite}{}{}
+\DeclareInnerCiteDelims{parencite}{}{}
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+\DeclareInnerCiteDelims{footcite}{}{}
+
+\DeclareFieldFormat{extblx@innercitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innerparencitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innertextcitedelims}{#1}
+\DeclareFieldFormat{extblx@innerfootcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\newbibmacro*{textcite}{%
+ \global\boolfalse{cbx:loccit}%
+ \printnames{labelname}%
+ \setunit*{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:title}}}
+ {\usebibmacro{cite:shorthand}}}
+
+\renewbibmacro*{cite:title}{%
+ \printtext[extblx@inner\blx@delimcontext delims]{%
+ \printtext[bibhyperref]{%
+ \printfield[citetitle]{labeltitle}}}}
+
+\newbibmacro*{textcite:postnote}{%
+ \ifthenelse{\iffieldundef{postnote}\OR\boolean{cbx:loccit}}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+ {}}
+ {\ifbool{cbx:parens}
+ {\printdelim{postnotedelim}}
+ {\printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \printfield{postnote}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@close}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\textcite}[\mkoutertextcitedelims]
+ {\boolfalse{cbx:parens}}
+ {\usebibmacro{citeindex}%
+ \iffirstcitekey
+ {\setcounter{textcitetotal}{1}}
+ {\stepcounter{textcitetotal}%
+ \textcitedelim}%
+ \usebibmacro{textcite}}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\textcites}[\mkoutertextcitedelims]
+ {\textcite}{}
+
+\DeclareFieldFormat{extblx@innerbbx@introcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx
new file mode 100644
index 0000000000..5c5b86db91
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle-icomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-icomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle-icomp}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx
new file mode 100644
index 0000000000..520a2f64af
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-icomp.cbx
@@ -0,0 +1,206 @@
+\ProvidesFile{ext-authortitle-icomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-icomp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authortitle-icomp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{cite}{}{}
+\DeclareInnerCiteDelims{parencite}{}{}
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+\DeclareInnerCiteDelims{footcite}{}{}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}}
+ {\printnames{labelname}%
+ \setunit*{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \usebibmacro{cite:title}}}%
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}}
+ {\printnames{labelname}%
+ \setunit*{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:title}}}%
+ {\usebibmacro{cite:shorthand}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:loccit}
+ {}
+ {\ifnameundef{labelname}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}
+ {\setunit{\printdelim{postnotedelim}}}%
+ \printfield{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx
new file mode 100644
index 0000000000..490cb69f97
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle-tcomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-tcomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle-tcomp}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx
new file mode 100644
index 0000000000..c15b1d2f3b
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-tcomp.cbx
@@ -0,0 +1,118 @@
+\ProvidesFile{ext-authortitle-tcomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-tcomp
+ citation style (MW)]
+
+\RequireCitationStyle{ext-authortitle-comp}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:title}}
+ {\ifnameundef{labelname}
+ {\usebibmacro{cite:title}}
+ {\ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:title}}}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{citetitle}{%
+ \iffieldundef{shorthand}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}}
+ {\savefield{namehash}{\cbx@lasthash}}%
+ \usebibmacro{cite:title}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{\multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}}
+ {\ifnameundef{labelname}
+ {\ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}%
+ \printfield{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx
new file mode 100644
index 0000000000..f70b1514e9
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle-terse.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-terse
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle-terse}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx
new file mode 100644
index 0000000000..271da41adc
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-terse.cbx
@@ -0,0 +1,57 @@
+\ProvidesFile{ext-authortitle-terse.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-terse
+ citation style (MW)]
+
+\RequireCitationStyle{ext-authortitle}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifnameundef{labelname}
+ {\usebibmacro{cite:title}}
+ {\ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{\printdelim{nametitledelim}}%
+ \usebibmacro{cite:title}}}}%
+ {\usebibmacro{cite:shorthand}}}
+
+\renewbibmacro*{textcite}{%
+ \ifnameundef{labelname}
+ {\ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx
new file mode 100644
index 0000000000..db70b368fe
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle-ticomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-ticomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle-ticomp}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx
new file mode 100644
index 0000000000..4083e1017a
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle-ticomp.cbx
@@ -0,0 +1,131 @@
+\ProvidesFile{ext-authortitle-ticomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle-ticomp citation style
+ (MW)]
+
+\RequireCitationStyle{ext-authortitle-icomp}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:title}}
+ {\ifnameundef{labelname}
+ {\usebibmacro{cite:title}}
+ {\ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext
+ @inner@open}}%
+ \usebibmacro{cite:title}}}%
+ \savefield{namehash}{\cbx@lasthash}}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{citetitle}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}}
+ {\savefield{namehash}{\cbx@lasthash}}%
+ \usebibmacro{cite:title}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{\multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\compcitedelim}%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:title}}}%
+ {\usebibmacro{cite:shorthand}}}
+ {\ifnameundef{labelname}
+ {\ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:title}}}%
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:title}}}%
+ {\usebibmacro{cite:shorthand}}}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\printfield{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx
new file mode 100644
index 0000000000..6bf346328f
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authortitle.bbx}
+ [2019/08/25 v0.8 extended biblatex authortitle
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authortitle}
+\RequireBibliographyStyle{ext-authortitle-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx
new file mode 100644
index 0000000000..b21db8a3eb
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authortitle.cbx
@@ -0,0 +1,149 @@
+\ProvidesFile{ext-authortitle.cbx}
+ [2019/08/25 v0.8 extended biblatex authortitle citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authortitle}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{cite}{}{}
+\DeclareInnerCiteDelims{parencite}{}{}
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+\DeclareInnerCiteDelims{footcite}{}{}
+
+\DeclareFieldFormat{extblx@innercitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innerparencitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innertextcitedelims}{#1}
+\DeclareFieldFormat{extblx@innerfootcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\renewbibmacro*{textcite}{%
+ \printnames{labelname}%
+ \setunit*{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nametitledelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\usebibmacro{cite:title}}%
+ {\usebibmacro{cite:shorthand}}}
+
+\renewbibmacro*{cite:title}{%
+ \printtext[extblx@inner\blx@delimcontext delims]{%
+ \printtext[bibhyperref]{%
+ \printfield[citetitle]{labeltitle}}}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \iffieldundef{postnote}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+ {}}
+ {\ifbool{cbx:parens}
+ {\printdelim{postnotedelim}}
+ {\printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \printfield{postnote}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@close}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citetitle}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\textcite}[\mkoutertextcitedelims]
+ {\boolfalse{cbx:parens}}
+ {\usebibmacro{citeindex}%
+ \iffirstcitekey
+ {\setcounter{textcitetotal}{1}}
+ {\stepcounter{textcitetotal}%
+ \textcitedelim}%
+ \usebibmacro{textcite}}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\textcites}[\mkoutertextcitedelims]
+ {\textcite}{}
+
+\DeclareFieldFormat{extblx@innerbbx@introcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx
new file mode 100644
index 0000000000..5a695f45cd
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-common.bbx
@@ -0,0 +1,167 @@
+\ProvidesFile{ext-authoryear-common.bbx}
+ [2019/08/25 v0.8 common files for extended biblatex
+ authoryear bibliography styles (MW)]
+
+\RequireBibliographyStyle{ext-dashed-common}
+
+\DeclareFieldFormat{biblabeldate}{\mkbibparens{#1}}
+\DeclareFieldAlias{biblistlabeldate}{biblabeldate}
+
+\providebibmacro*{bbx:ifmergeddate}{\@secondoftwo}
+
+\renewbibmacro*{date}{%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printdate}}
+
+% merge date/issue with date label
+\def\bbx@opt@mergedate@maximum{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[\blx@delimcontext labeldate]{%
+ \iflabeldateisdate
+ {\printfield{issue}%
+ \setunit*{\addspace}%
+ \printdateextra}
+ {\printlabeldateextra}}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
+ \renewbibmacro*{issue+date}{%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printtext[issuedate]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}}}
+
+% merge date with date label
+\def\bbx@opt@mergedate@compact{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[\blx@delimcontext labeldate]{%
+ \iflabeldateisdate
+ {\printdateextra}
+ {\printlabeldateextra}}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\iflabeldateisdate}%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{test {\usebibmacro{bbx:ifmergeddate}}
+ and
+ test {\iffieldundef{issue}}}
+ {}
+ {\printtext[issuedate]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{bbx:ifmergeddate}
+ {}
+ {\printdate}}}%
+ \newunit}}
+
+% merge year-only date with date label
+\def\bbx@opt@mergedate@basic{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[\blx@delimcontext labeldate]{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{%
+ \ifboolexpr{
+ test {\iflabeldateisdate}
+ and
+ not test {\ifdateshavedifferentprecision{label}{}}
+ }%
+ }%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{
+ test {\usebibmacro{bbx:ifmergeddate}}
+ and
+ test {\iffieldundef{issue}}
+ }
+ {}
+ {\printtext[issuedate]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}%
+ \newunit}}
+
+% merge year-only date with year-only date label
+\def\bbx@opt@mergedate@minimum{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[\blx@delimcontext labeldate]{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{%
+ \ifboolexpr{
+ test {\iflabeldateisdate}
+ and
+ not test {\ifdateshavedifferentprecision{label}{}}
+ and
+ test {\iffieldundef{extradate}}
+ }%
+ }%
+ \renewbibmacro*{issue+date}{%
+ \ifboolexpr{
+ test {\usebibmacro{bbx:ifmergeddate}}
+ and
+ test {\iffieldundef{issue}}
+ }
+ {}
+ {\printtext[issuedate]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \printdate}}%
+ \newunit}}
+
+% don't merge date/issue with date label
+\def\bbx@opt@mergedate@false{%
+ \renewbibmacro*{date+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[\blx@delimcontext labeldate]{\printlabeldateextra}}}%
+ \renewbibmacro*{bbx:ifmergeddate}{\@secondoftwo}%
+ \renewbibmacro*{issue+date}{%
+ \printtext[issuedate]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}%
+ \newunit}}
+
+\defbibenvironment{bibliography}
+ {\list
+ {\ifcsequal{extblx@introcite}{extblx@opt@introcite@label}
+ {\usebibmacro{introcite:typeset}}
+ {}}
+ {\ifcsequal{extblx@introcite}{extblx@opt@introcite@label}
+ {\setlength{\labelwidth}{\introcitewidth}%
+ \setlength{\leftmargin}{\labelwidth}%
+ \setlength{\labelsep}{\introcitesep}%
+ \addtolength{\leftmargin}{\labelsep}%
+ \renewcommand*{\makelabel}[1]{##1\hss}}
+ {\setlength{\leftmargin}{\bibhang}%
+ \setlength{\itemindent}{-\leftmargin}}%
+ \setlength{\itemsep}{\bibitemsep}%
+ \setlength{\parsep}{\bibparsep}}}
+ {\endlist}
+ {\item
+ \ifcsequal{extblx@introcite}{extblx@opt@introcite@label}
+ {\usebibmacro{introcite:break}}
+ {}}
+
+% We need to execute some options that were already executed
+% by the standard styles again, because we changed the
+% underlying definitions.
+\ExecuteBibliographyOptions{mergedate=compact, dashed=true}%
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx
new file mode 100644
index 0000000000..f78811b001
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-comp.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-comp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-comp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx
new file mode 100644
index 0000000000..a7d58c4b89
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-comp.cbx
@@ -0,0 +1,255 @@
+\ProvidesFile{ext-authoryear-comp.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-comp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear-comp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\DeclareDelimFormat{extradateonlycompcitedelim}{\addcomma}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}
+
+\renewbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printfield{extradate}}}}}
+
+\newbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \usebibmacro{postnote}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx@lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx
new file mode 100644
index 0000000000..f523905a56
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-ecomp.bbx}
+ [2019/08/25 v0.8 biblatex authoryear-ecomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-comp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx
new file mode 100644
index 0000000000..e5b854525b
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ecomp.cbx
@@ -0,0 +1,352 @@
+\ProvidesFile{ext-authoryear-ecomp.cbx}
+ [2019/08/25 v0.8 biblatex authoryear-ecomp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear-comp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\DeclareDelimFormat{extradateonlycompcitedelim}{\addcomma}
+\DeclareDelimFormat{extradateonlycompciterangedelim}{\bibrangedash}
+
+\newcounter{cbx@extradatecount}
+
+\renewbibmacro*{cite:init}{%
+ \ifnumless{\value{multicitecount}}{2}
+ {\global\boolfalse{cbx:parens}%
+ \global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+ {\iffieldundef{prenote}
+ {}
+ {\global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}}}
+
+\renewbibmacro*{cite:reinit}{%
+ \global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+
+\newbibmacro*{generic:dump:extradate}{%
+ \ifundef\cbx@lastkey
+ {}
+ {\entrydata{\cbx@lastkey}
+ {\ifnumless{\value{cbx@extradatecount}}{1}
+ {\extblx@warning{% This should not happen
+ Uh-oh!\MessageBreak
+ The extradate compression is quite likely\MessageBreak
+ wrong for \cbx@lastkey.\MessageBreak
+ This should not happen.\MessageBreak
+ Please report this as a bug}}%
+ {}%
+ \ifnumgreater{\value{cbx@extradatecount}}{1}
+ {\setunit{\printdelim{extradateonlycompciterangedelim}}}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}}%
+ \usebibmacro{cite:extradate}}%
+ \setunit{\cbx@thiscitedelim}}%
+ \global\undef\cbx@lastkey
+ \setcounter{cbx@extradatecount}{0}%
+}
+
+\newbibmacro*{cite:dump:extradate}{%
+ \def\cbx@thiscitedelim{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}%
+ \usebibmacro{generic:dump:extradate}}
+
+\newbibmacro*{textcite:dump:extradate}{%
+ \def\cbx@thiscitedelim{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}%
+ \usebibmacro{generic:dump:extradate}}
+
+\newbibmacro*{cite:comp:extradate}{%
+ \ifnumequal{\cbx@lastextradate+1}{\thefield{extradate}}
+ {\stepcounter{cbx@extradatecount}%
+ \savefield{entrykey}{\cbx@lastkey}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\extradateonlycompcitedelim}%
+ \usebibmacro{cite:extradate}}%
+ \savefield{extradate}{\cbx@lastextradate}%
+}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}
+
+\renewbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printfield{extradate}}}}}
+
+\newbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \usebibmacro{postnote}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{textcite:dump:extradate}
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx
new file mode 100644
index 0000000000..06f793fb34
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-ibid.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-ibid
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-ibid}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx
new file mode 100644
index 0000000000..f1af66fa0c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ibid.cbx
@@ -0,0 +1,173 @@
+\ProvidesFile{ext-authoryear-ibid.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-ibid
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear-ibid}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{extblx@innercitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innerparencitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innertextcitedelims}{#1}
+\DeclareFieldFormat{extblx@innerfootcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[extblx@inner\blx@delimcontext delims]{%
+ \printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}}
+
+\renewbibmacro*{textcite}{%
+ \global\boolfalse{cbx:loccit}%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}}}
+ {\usebibmacro{cite:shorthand}}}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifthenelse{\iffieldundef{postnote}\OR\boolean{cbx:loccit}}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+ {}}
+ {\ifbool{cbx:parens}
+ {\printdelim{postnotedelim}}
+ {\printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \printfield{postnote}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@close}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\textcite}[\mkoutertextcitedelims]
+ {\boolfalse{cbx:parens}}
+ {\usebibmacro{citeindex}%
+ \iffirstcitekey
+ {\setcounter{textcitetotal}{1}}
+ {\stepcounter{textcitetotal}%
+ \textcitedelim}%
+ \usebibmacro{textcite}}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\textcites}[\mkoutertextcitedelims]
+ {\textcite}{}
+
+\DeclareFieldFormat{bbx@introcitelabeldate}{#1}
+\DeclareFieldFormat{extblx@innerbbx@introcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx
new file mode 100644
index 0000000000..48c17b68de
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-icomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-icomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-icomp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx
new file mode 100644
index 0000000000..6772404b07
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-icomp.cbx
@@ -0,0 +1,265 @@
+\ProvidesFile{ext-authoryear-icomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-icomp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear-icomp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\DeclareDelimFormat{extradateonlycompcitedelim}{\addcomma}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}}}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}
+
+\renewbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printfield{extradate}}}}}
+
+\renewbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}%
+ \savefield{labelyear}{\cbx@lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx
new file mode 100644
index 0000000000..aa39267537
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-iecomp.bbx}
+ [2019/08/25 v0.8 biblatex authoryear-iecomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-icomp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
new file mode 100644
index 0000000000..c789e84887
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-iecomp.cbx
@@ -0,0 +1,362 @@
+\ProvidesFile{ext-authoryear-iecomp.cbx}
+ [2019/08/25 v0.8 biblatex authoryear-iecomp
+ citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear-icomp}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\DeclareDelimFormat{extradateonlycompcitedelim}{\addcomma}
+\DeclareDelimFormat{extradateonlycompciterangedelim}{\bibrangedash}
+
+\newcounter{cbx@extradatecount}
+
+\renewbibmacro*{cite:init}{%
+ \global\boolfalse{cbx:loccit}%
+ \ifnumless{\value{multicitecount}}{2}
+ {\global\boolfalse{cbx:parens}%
+ \global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+ {\iffieldundef{prenote}
+ {}
+ {\global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}}}
+
+\renewbibmacro*{cite:reinit}{%
+ \global\undef\cbx@lastkey
+ \global\undef\cbx@lasthash
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+
+\newbibmacro*{generic:dump:extradate}{%
+ \ifundef\cbx@lastkey
+ {}
+ {\entrydata{\cbx@lastkey}
+ {\ifnumless{\value{cbx@extradatecount}}{1}
+ {\extblx@warning{% This should not happen
+ Uh-oh!\MessageBreak
+ The extradate compression is quite likely\MessageBreak
+ wrong for \cbx@lastkey.\MessageBreak
+ This should not happen.\MessageBreak
+ Please report this as a bug}}%
+ {}%
+ \ifnumgreater{\value{cbx@extradatecount}}{1}
+ {\setunit{\printdelim{extradateonlycompciterangedelim}}}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}}%
+ \usebibmacro{cite:extradate}}%
+ \setunit{\cbx@thiscitedelim}}%
+ \global\undef\cbx@lastkey
+ \setcounter{cbx@extradatecount}{0}%
+}
+
+\newbibmacro*{cite:dump:extradate}{%
+ \def\cbx@thiscitedelim{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}%
+ \usebibmacro{generic:dump:extradate}}
+
+\newbibmacro*{textcite:dump:extradate}{%
+ \def\cbx@thiscitedelim{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}%
+ \usebibmacro{generic:dump:extradate}}
+
+\newbibmacro*{cite:comp:extradate}{%
+ \ifnumequal{\cbx@lastextradate+1}{\thefield{extradate}}
+ {\stepcounter{cbx@extradatecount}%
+ \savefield{entrykey}{\cbx@lastkey}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\extradateonlycompcitedelim}%
+ \usebibmacro{cite:extradate}}%
+ \savefield{extradate}{\cbx@lastextradate}%
+}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:ibid}}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}
+
+\renewbibmacro*{cite:extradate}{%
+ \iffieldundef{extradate}
+ {}
+ {\printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printfield{extradate}}}}}
+
+\renewbibmacro*{cite:postnote}{%
+ \setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:loccit}
+ {}
+ {\usebibmacro{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\setunit{\multicitedelim}}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\setunit{\multicitedelim}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:postnote}}
+
+\renewbibmacro*{bbx:introcite}{%
+ \usebibmacro{cite}%
+ \clearfield{postnote}%
+ \usebibmacro{cite:postnote}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx
new file mode 100644
index 0000000000..f137e11c29
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-tcomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-tcomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-comp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx
new file mode 100644
index 0000000000..95b91eb332
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tcomp.cbx
@@ -0,0 +1,140 @@
+\ProvidesFile{ext-authoryear-tcomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-tcomp
+ citation style (MW)]
+
+\RequireCitationStyle{ext-authoryear-comp}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}}}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx@lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}%
+ \printfield{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx
new file mode 100644
index 0000000000..3bd056f4f7
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-tecomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-tecomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-comp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx
new file mode 100644
index 0000000000..7432847991
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tecomp.cbx
@@ -0,0 +1,158 @@
+\ProvidesFile{ext-authoryear-tecomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-tecomp
+ citation style (MW)]
+
+\RequireCitationStyle{ext-authoryear-ecomp}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{textcite:dump:extradate}
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}%
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\usebibmacro{cite:labeldate+extradate}}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}%
+ \printfield{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx
new file mode 100644
index 0000000000..e191693619
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-terse.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-terse
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx
new file mode 100644
index 0000000000..e9bbd308da
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-terse.cbx
@@ -0,0 +1,61 @@
+\ProvidesFile{ext-authoryear-terse.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-terse
+ citation style (MW)]
+
+\RequireCitationStyle{ext-authoryear}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
+ {\usebibmacro{cite:label}%
+ \setunit{\printdelim{nonameyeardelim}}}
+ {\ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{\printdelim{nameyeardelim}}%
+ \usebibmacro{cite:labeldate+extradate}}}}%
+ {\usebibmacro{cite:shorthand}}}
+
+\renewbibmacro*{textcite}{%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{citeyear}}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
+
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx
new file mode 100644
index 0000000000..0f2595cd2f
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-ticomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-ticomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-icomp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx
new file mode 100644
index 0000000000..22c7fef241
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-ticomp.cbx
@@ -0,0 +1,150 @@
+\ProvidesFile{ext-authoryear-ticomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-ticomp citation style
+ (MW)]
+
+\RequireCitationStyle{ext-authoryear-icomp}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext
+ @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}}}}}}
+ {\usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\setunit{\printdelim{extradateonlycompcitedelim}}%
+ \usebibmacro{cite:extradate}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}}}
+ {\setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}%
+ \savefield{labelyear}{\cbx@lastyear}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}%
+ \stepcounter{textcitecount}}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\printfield{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx
new file mode 100644
index 0000000000..2ae7bb415c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.bbx
@@ -0,0 +1,22 @@
+\ProvidesFile{ext-authoryear-tiecomp.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-tiecomp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear-icomp}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx
new file mode 100644
index 0000000000..f7645662c9
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear-tiecomp.cbx
@@ -0,0 +1,168 @@
+\ProvidesFile{ext-authoryear-tiecomp.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear-tiecomp citation style
+ (MW)]
+
+\RequireCitationStyle{ext-authoryear-icomp}
+\ExecuteBibliographyOptions{singletitle, uniquename, uniquelist,
+ autocite=inline}
+
+\renewcommand*{\iffinalcitedelim}{%
+ \ifnumequal{\value{textcitecount}}{\value{textcitetotal}-1}}
+
+\renewbibmacro*{cite}{%
+ \iffieldundef{shorthand}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:ibid}}
+ {\ifboolexpr{test {\ifnameundef{labelname}}
+ or test {\iffieldundef{labelyear}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \usebibmacro{cite:reinit}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {\ifboolexpr{
+ test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and ( test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{cite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \ifsingletitle
+ {\printtext[bibhyperref]{\printnames{labelname}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext
+ @inner@open}}}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{namehash}{\cbx@lasthash}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}}}
+ {\usebibmacro{cite:dump:extradate}%
+ \usebibmacro{cite:shorthand}%
+ \usebibmacro{cite:reinit}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \multicitedelim}}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\iffieldundef{shorthand}
+ {\ifboolexpr{test {\iffieldequals{labelyear}{\cbx@lastyear}}
+ and (test {\ifnumequal{\value{multicitecount}}{0}}
+ or test {\iffieldundef{postnote}})}
+ {\usebibmacro{cite:comp:extradate}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:labeldate+extradate}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \setunit{\compcitedelim}%
+ \usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear}}
+ {\usebibmacro{textcite:dump:extradate}%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}
+ {\usebibmacro{cite:shorthand}}}
+ {\ifthenelse{\ifsingletitle\AND
+ \(\iffieldundef{prenote}\OR\value{citecount}>1\)}
+ {\printtext[bibhyperref]{\printnames{labelname}}%
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \iffieldundef{shorthand}
+ {\iffieldundef{labelyear}
+ {\usebibmacro{cite:label}}
+ {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
+ {\usebibmacro{cite:ibid}}
+ {\usebibmacro{cite:labeldate+extradate}}}%
+ \savefield{labelyear}{\cbx@lastyear}%
+ \savefield{extradate}{\cbx@lastextradate}%
+ \setcounter{cbx@extradatecount}{0}}
+ {\usebibmacro{cite:shorthand}%
+ \global\undef\cbx@lastyear
+ \global\undef\cbx@lastextradate
+ \setcounter{cbx@extradatecount}{0}}}}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}}%
+ \ifbool{cbx:loccit}
+ {}
+ {\printfield{postnote}}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx
new file mode 100644
index 0000000000..c3c7b31505
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-authoryear.bbx}
+ [2019/08/25 v0.8 extended biblatex authoryear bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{authoryear}
+\RequireBibliographyStyle{ext-authoryear-common}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx
new file mode 100644
index 0000000000..7ae2631f45
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-authoryear.cbx
@@ -0,0 +1,166 @@
+\ProvidesFile{ext-authoryear.cbx}
+ [2019/08/25 v0.8 extended biblatex authoryear citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{authoryear}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareFieldFormat{extblx@innercitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innerparencitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+\DeclareFieldFormat{extblx@innertextcitedelims}{#1}
+\DeclareFieldFormat{extblx@innerfootcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\DeclareFieldFormat{citelabeldate}{#1}
+\DeclareFieldFormat{parencitelabeldate}{#1}
+\DeclareFieldFormat{textcitelabeldate}{#1}
+\DeclareFieldFormat{footcitelabeldate}{#1}
+
+\renewbibmacro*{cite:labeldate+extradate}{%
+ \iffieldundef{labelyear}
+ {}
+ {\printtext[extblx@inner\blx@delimcontext delims]{%
+ \printtext[bibhyperref]{%
+ \printtext[\blx@delimcontext labeldate]{%
+ \printlabeldateextra}}}}}
+
+\renewbibmacro*{textcite}{%
+ \ifnameundef{labelname}
+ {\iffieldundef{shorthand}
+ {\usebibmacro{cite:label}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nonameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:labeldate+extradate}}
+ {\usebibmacro{cite:shorthand}}}
+ {\printnames{labelname}%
+ \setunit{%
+ \global\booltrue{cbx:parens}%
+ \printdelim{nameyeardelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{citeyear}}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \iffieldundef{postnote}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+ {}}
+ {\ifbool{cbx:parens}
+ {\setunit{\printdelim{postnotedelim}}}
+ {\setunit{\printdelim{extpostnotedelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext
+ @inner@open}}}%
+ \printfield{postnote}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@close}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand*{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{citeyear}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\textcite}[\mkoutertextcitedelims]
+ {\boolfalse{cbx:parens}}
+ {\usebibmacro{citeindex}%
+ \iffirstcitekey
+ {\setcounter{textcitetotal}{1}}
+ {\stepcounter{textcitetotal}%
+ \textcitedelim}%
+ \usebibmacro{textcite}}
+ {\ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\textcites}[\mkoutertextcitedelims]
+ {\textcite}{}
+
+\DeclareFieldFormat{bbx@introcitelabeldate}{#1}
+\DeclareFieldFormat{extblx@innerbbx@introcitedelims}{%
+ \csuse{mkinner\blx@delimcontext delims}{#1}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def
new file mode 100644
index 0000000000..3c58ae4eba
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-biblatex-aux.def
@@ -0,0 +1,295 @@
+\ProvidesFile{ext-biblatex-aux.def}
+ [2019/08/25 v0.8 auxiliaries for extended biblatex citation style
+ (MW)]
+
+\def\extblx@requiredbiblatexversion{3.13}
+\def\extblx@requiredbiblatexdate{2019/08/17}
+
+\newrobustcmd*{\extblx@info}{\PackageInfo{biblatex-ext}}
+\newrobustcmd*{\extblx@warning}{\PackageWarning{biblatex-ext}}
+\newrobustcmd*{\extblx@warning@noline}{%
+ \PackageWarningNoLine{biblatex-ext}}
+
+\newrobustcmd*{\extblx@error}[2]{\PackageError{biblatex-ext}{#1}{#2.}}
+
+\@ifpackagelater{biblatex}{\extblx@requiredbiblatexdate}
+ {}
+ {\extblx@warning@noline{%
+ Outdated version of biblatex detected.\MessageBreak
+ Upgrade to biblatex \extblx@requiredbiblatexversion\space
+ (\extblx@requiredbiblatexdate) or later.\MessageBreak
+ I found '\csuse{abx@version} (\csuse{abx@date})'}}
+
+
+%{<context>}{<opening delim>}{<closing delim>}
+\newrobustcmd*{\DeclareOuterCiteDelims}{%
+ \extblx@declareciteddelims{outer}}
+\newrobustcmd*{\DeclareInnerCiteDelims}{%
+ \extblx@declareciteddelims{inner}}
+
+%{<inner/outer>}{<cite context>}{<opening delim>}{<closing delim>}
+\def\extblx@declareciteddelims#1#2#3#4{%
+ \csdef{extblx@citedelim@#2@#1@open}{#3}%
+ \csdef{extblx@citedelim@#2@#1@close}{#4}}
+
+%{<context>}
+\newrobustcmd*{\UndeclareOuterCiteDelims}{%
+ \extblx@undeclareciteddelims{outer}}
+\newrobustcmd*{\UndeclareInnerCiteDelims}{%
+ \extblx@undeclareciteddelims{inner}}
+
+%{<inner/outer>}{<cite context>}
+\def\extblx@undeclareciteddelims#1#2{%
+ \csundef{extblx@citedelim@#2@#1@open}%
+ \csundef{extblx@citedelim@#2@#1@close}}
+
+%{<alias>}{<cite context>}
+\newrobustcmd*{\DeclareOuterCiteDelimsAlias}{%
+ \@ifstar
+ {\extblx@declareciteddelims@alias@i{outer}}
+ {\extblx@declareciteddelims@alias{outer}}}
+\newrobustcmd*{\DeclareInnerCiteDelimsAlias}{%
+ \@ifstar
+ {\extblx@declareciteddelims@alias@i{inner}}
+ {\extblx@declareciteddelims@alias{inner}}}
+
+%{<inner/outer>}{<alias>}{<cite context>}
+\def\extblx@declareciteddelims@alias#1#2#3{%
+ \csdef{extblx@citedelim@#2@#1@open}{%
+ \csuse{extblx@citedelim@#3@#1@open}}%
+ \csdef{extblx@citedelim@#2@#1@close}{%
+ \csuse{extblx@citedelim@#3@#1@close}}}
+\def\extblx@declareciteddelims@alias@i#1#2#3{%
+ \csletcs{extblx@citedelim@#2@#1@open}{extblx@citedelim@#3@#1@open}%
+ \csletcs{extblx@citedelim@#2@#1@close}{extblx@citedelim@#3@#1@close}}
+
+% declare \mk...delim commands
+\newrobustcmd*{\RegisterCiteDelims}[2]{%
+ \ifcsundef{mk#1#2delims}
+ {}
+ {\extblx@error
+ {Command \expandafter\string\csname mk#1#2delims\endcsname\space
+ already defined}
+ {biblatex-ext needs to define this command for the citation
+ delimiter feature,\MessageBreak
+ but \expandafter\string\csname mk#1#2delims\endcsname\space
+ is already defined.\MessageBreak
+ I don't want to overwrite the existing definition to avoid
+ breaking your document.\MessageBreak
+ If you force compilation despite the error, the command will be
+ overwritten\MessageBreak
+ with potentially catastrophic consequences}}%
+ \protected\csdef{mk#1#2delims}##1{%
+ \begingroup
+ \blx@blxinit
+ \blx@setsfcodes
+ \csuse{extblx@citedelim@#2@#1@open}%
+ ##1%
+ \csuse{extblx@citedelim@#2@#1@close}%
+ \endgroup}}
+
+\RegisterCiteDelims{outer}{cite}
+\RegisterCiteDelims{outer}{parencite}
+\RegisterCiteDelims{outer}{supercite}
+\RegisterCiteDelims{outer}{textcite}
+\RegisterCiteDelims{outer}{footcite}
+\RegisterCiteDelims{outer}{footcitetext}
+\DeclareOuterCiteDelimsAlias{footcite}{footcitetext}
+
+\RegisterCiteDelims{inner}{cite}
+\RegisterCiteDelims{inner}{parencite}
+\RegisterCiteDelims{inner}{supercite}
+\RegisterCiteDelims{inner}{textcite}
+\RegisterCiteDelims{inner}{footcite}
+\RegisterCiteDelims{inner}{footcitetext}
+\DeclareInnerCiteDelimsAlias{footcite}{footcitetext}
+
+\newrobustcmd*{\mkextblxsupercite}[1]{%
+ \mkbibsuperscript{%
+ \mkoutersupercitedelims{#1}}}
+\newrobustcmd*{\mkextblxfootcite}[1]{%
+ \mkbibfootnote{%
+ \mkouterfootcitedelims{#1}}}
+\newrobustcmd*{\mkextblxfootcitetext}[1]{%
+ \mkbibfootnotetext{%
+ \mkouterfootcitetextdelims{#1}}}
+
+% smartcite is special
+% According to the docs it is like \parencite in a footnote and
+% \footcite in the body.
+% To mirror that as closely as possible, we need to change the
+% delimiter context. The delimcontext is set in the pre-code, it is too
+% late to detect a footnote at that point (since we will have started
+% the footnote ourselves with \mkbibfootnote from the body), so we
+% need to do it earlier.
+\newrobustcmd*{\mksmartcite}[1]{%
+ \iffootnote
+ {\mkouterparencitedelims{%
+ \def\extblx@thisdelimcontext{parencite}%
+ #1}}
+ {\mkextblxfootcite{%
+ \def\extblx@thisdelimcontext{footcite}%
+ #1}}}
+
+%% Compatibility with older biblatex-ext
+% Legacy names
+
+% Compability for versions <= 0.3
+% Changes were made for v0.4 2018-06-10.
+\def\extblx@deprecate@delimcommand@robust#1#2{%
+ \protected\csedef{#1}{%
+ \noexpand\extblx@warning{%
+ \expandafter\string\csname#1\endcsname\space is deprecated.
+ \MessageBreak
+ Use \expandafter\string\csname#2\endcsname\space (with s) instead.
+ \MessageBreak
+ Using \expandafter\string\csname#2\endcsname}%
+ \expandonce{\csname#2\endcsname}}}
+
+\extblx@deprecate@delimcommand@robust{DeclareOuterCiteDelim}
+ {DeclareOuterCiteDelims}
+\extblx@deprecate@delimcommand@robust{DeclareInnerCiteDelim}
+ {DeclareInnerCiteDelims}
+\extblx@deprecate@delimcommand@robust{UndeclareOuterCiteDelim}
+ {UndeclareOuterCiteDelims}
+\extblx@deprecate@delimcommand@robust{UndeclareInnerCiteDelim}
+ {UndeclareInnerCiteDelims}
+\extblx@deprecate@delimcommand@robust{DeclareOuterCiteDelimAlias}
+ {DeclareOuterCiteDelimsAlias}
+\extblx@deprecate@delimcommand@robust{DeclareInnerCiteDelimAlias}
+ {DeclareInnerCiteDelimsAlias}
+
+\newrobustcmd*{\extblx@create@mkcitedelim}{%
+ \extblx@warning{%
+ '\string\extblx@create@mkcitedelim' is deprecated.\MessageBreak
+ Use '\string\RegisterCiteDelims' instead.\MessageBreak
+ Using '\string\RegisterCiteDelims'}
+ \RegisterCiteDelims}
+
+% Some very rudimentary backwards warning code for old names
+% this only warns, it can't salvage anything.
+% Can/should this be removed in the future?
+\AtEndDocument{%
+ \ifcsundef{abx@ffd@*@bbx:introcite}
+ {}
+ {\extblx@warning@noline{%
+ Field format 'bbx:introcite' defined.\MessageBreak
+ The format has been renamed to 'bbx@introcite'.\MessageBreak
+ This could mean that you are using the old name\MessageBreak
+ which does not work any more.\MessageBreak
+ No effort is made to switch to the new name.\MessageBreak
+ Please use 'bbx@introcite' instead}}%
+ \ifcsundef{abx@ffd@*@bbx:introcitelabeldate}
+ {}
+ {\extblx@warning@noline{%
+ Field format 'bbx:introcitelabeldate'\MessageBreak
+ defined.\MessageBreak
+ The format has been renamed to\MessageBreak
+ 'bbx@introcitelabeldate'.\MessageBreak
+ This could mean that you are using the old name\MessageBreak
+ which does not work any more.\MessageBreak
+ No effort is made to switch to the new name.\MessageBreak
+ Please use\MessageBreak'bbx@introcitelabeldate'\MessageBreak
+ instead}}%
+ \ifcsundef{blx@delimcontextalias@bbx:introcite}
+ {}
+ {\extblx@warning@noline{%
+ Delimiter context 'bbx:introcite' detected.\MessageBreak
+ The context has been renamed to 'bbx@introcite'.\MessageBreak
+ This could mean that you are using the old name\MessageBreak
+ which does not work any more.\MessageBreak
+ No effort is made to switch to the new name.\MessageBreak
+ Please use 'bbx@introcite' instead}}%
+ \ifcsundef{extblx@citedelim@bbx:introcite@inner@open}
+ {}
+ {\extblx@warning@noline{%
+ Opening inner delimiter 'bbx:introcite' found.\MessageBreak
+ The delimiters have been renamed to\MessageBreak
+ 'bbx@introcite'.\MessageBreak
+ This could mean that you are using the old name\MessageBreak
+ which does not work any more.\MessageBreak
+ No effort is made to switch to the new name.\MessageBreak
+ Please use 'bbx@introcite' instead}}%
+ \ifcsundef{extblx@citedelim@bbx:introcite@inner@close}
+ {}
+ {\extblx@warning@noline{%
+ Closing inner delimiter 'bbx:introcite' found.\MessageBreak
+ The delimiters have been renamed to\MessageBreak
+ 'bbx@introcite'.\MessageBreak
+ This could mean that you are using the old name\MessageBreak
+ which does not work any more.\MessageBreak
+ No effort is made to switch to the new name.\MessageBreak
+ Please use 'bbx@introcite' instead}}%
+}
+
+% Compatibility with older biblatex
+
+% \DeclareBiblatexOption (biblatex 3.13)
+% we emulate \DeclareBiblatexOption only as far as we need it
+% i.e. with scope 'global,type,entry' hard-coded
+% we'll see for how long this is viable
+\ifcsundef{DeclareBiblatexOption}
+ {\newcommand*{\extblx@DeclareBiblatexOption}[1]{%
+ \ifstrequal{#1}{global,type,entry}
+ {\ifundef\extblx@warn@emulate@declarebiblatexoption
+ {\global\let\extblx@warn@emulate@declarebiblatexoption\@empty
+ \extblx@warning@noline{%
+ Using biblatex-ext emulation of\MessageBreak
+ \string\DeclareBiblatexOption\MessageBreak
+ The scope argument 'global,type,entry' is hard-\MessageBreak
+ coded and can't be changed.\MessageBreak
+ Please update to biblatex 3.13 or above.\MessageBreak
+ This warning can be silenced by defining\MessageBreak
+ \string\extblx@warn@emulate@declarebiblatexoption}}
+ {}}
+ {\extblx@error
+ {Emulation of \string\DeclareBiblatexOption\space only%
+ \MessageBreak
+ supports hard-coded scope argument\MessageBreak
+ 'global,type,entry'.\MessageBreak
+ Update to biblatex 3.13 or above to use the real\MessageBreak
+ definition instead of a cheap imitation}
+ {This isn't actually \string\DeclareBiblatexOption,
+ it is only the biblatex-ext\MessageBreak
+ emulation.\MessageBreak
+ The scope 'global,type,entry' is hard-coded and can't be changed.%
+ \MessageBreak
+ If you force compilation despite this error, 'global,type,entry'%
+ \MessageBreak
+ will be assumed.\MessageBreak
+ That may cause further errors or undesirable and unexpected
+ behaviour.\MessageBreak
+ Update to biblatex 3.13 or above to use the real definition%
+ \MessageBreak
+ instead of a cheap imitation.\MessageBreak
+ This emulation may be removed in a future version of biblatex-ext}}%
+ \extblx@DeclareBiblatexOption@i}
+ \newcommand*{\extblx@DeclareBiblatexOption@i}[2][boolean]{%
+ \@ifnextchar[%]
+ {\extblx@DeclareBiblatexOption@ii[#1]{#2}}
+ {\extblx@DeclareBiblatexOption@iii[#1]{#2}}}
+ \def\extblx@DeclareBiblatexOption@ii[#1]#2[#3]#4{%
+ \DeclareBibliographyOption[#1]{#2}[#3]{#4}%
+ \DeclareTypeOption[#1]{#2}[#3]{#4}%
+ \DeclareEntryOption[#1]{#2}[#3]{#4}}
+ \def\extblx@DeclareBiblatexOption@iii[#1]#2#3{%
+ \DeclareBibliographyOption[#1]{#2}{#3}%
+ \DeclareTypeOption[#1]{#2}{#3}%
+ \DeclareEntryOption[#1]{#2}{#3}}%
+ \let\DeclareBiblatexOption\extblx@DeclareBiblatexOption}
+ {}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx
new file mode 100644
index 0000000000..39fd8ebe34
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-dashed-common.bbx
@@ -0,0 +1,91 @@
+\ProvidesFile{ext-dashed-common.bbx}
+ [2019/08/25 v0.8 common files for extended biblatex
+ dashed bibliography styles (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+% \DeclareBibliographyOption checks if an option is already defined.
+% if we want to overwrite the definition we need to trick it into
+% thinking the option has not been defined yet.
+\csundef{KV@blx@opt@pre@dashed}
+% We want to define 'dashed' with a new type, so we need to make
+% biblatex forget about the old type when it passes the options over to
+% Biber.
+\ifundef\listcsremove
+ {\extblx@warning@noline{%
+ 'etoolbox' does not provide '\string\listcsremove'.\MessageBreak
+ Please update 'etoolbox' to v2.4 (2017-01-02)\MessageBreak
+ or later}}
+ {\listcsremove{blx@globalopts@boolean}{dashed}}
+
+\DeclareBiblatexOption{global,type,entry}[string]{dashed}[true]{%
+ \ifcsdef{extblx@opt@dashed@#1}
+ {\csuse{extblx@opt@dashed@#1}}
+ {\extblx@warning@noline{%
+ Invalid value '#1' for option 'dashed'.\MessageBreak
+ Possible values are 'fullhash', 'true',\MessageBreak
+ 'bibnamehash', 'false'.\MessageBreak
+ Falling back to 'dashed=false'}%
+ \csuse{extblx@opt@dashed@false}}}
+
+\csdef{extblx@opt@dashed@fullhash}{%
+ \ExecuteBibliographyOptions{pagetracker}%
+ \renewbibmacro*{bbx:savehash}{\savefield{fullhash}{\bbx@lasthash}}%
+ \renewbibmacro*{bbx:dashcheck}[2]{%
+ \ifboolexpr{
+ test {\iffieldequals{fullhash}{\bbx@lasthash}}
+ and
+ not test \iffirstonpage
+ and
+ (
+ not bool {bbx@inset}
+ or
+ test {\iffieldequalstr{entrysetcount}{1}}
+ )
+ }
+ {##1}
+ {##2}}}
+\csletcs{extblx@opt@dashed@true}{extblx@opt@dashed@fullhash}
+
+\csdef{extblx@opt@dashed@bibnamehash}{%
+ \ExecuteBibliographyOptions{pagetracker}%
+ \renewbibmacro*{bbx:savehash}{\savefield{bibnamehash}{\bbx@lasthash}}%
+ \renewbibmacro*{bbx:dashcheck}[2]{%
+ \ifboolexpr{
+ test {\iffieldequals{bibnamehash}{\bbx@lasthash}}
+ and
+ not test \iffirstonpage
+ and
+ (
+ not bool {bbx@inset}
+ or
+ test {\iffieldequalstr{entrysetcount}{1}}
+ )
+ }
+ {##1}
+ {##2}}}
+
+\csdef{extblx@opt@dashed@false}{%
+ \renewbibmacro*{bbx:savehash}{}%
+ \renewbibmacro*{bbx:dashcheck}[2]{##2}}
+
+% We need to execute the options that were already executed
+% by the standard styles again, because we changed the
+% underlying definitions.
+\ExecuteBibliographyOptions{dashed=true}%
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx
new file mode 100644
index 0000000000..bddca69e7f
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-numeric-comp.bbx}
+ [2019/08/25 v0.8 extended biblatex numeric-comp
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{numeric-comp}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx
new file mode 100644
index 0000000000..b189bf44c1
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-comp.cbx
@@ -0,0 +1,158 @@
+\ProvidesFile{ext-numeric-comp.cbx}
+ [2019/08/25 v0.8 extended biblatex numeric-comp citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{numeric-comp}
+
+\DeclareOuterCiteDelims{cite}{\bibopenbracket}{\bibclosebracket}
+\DeclareOuterCiteDelimsAlias{parencite}{cite}
+\DeclareOuterCiteDelims{textcite}{}{}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenbracket}{\bibclosebracket}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\usebibmacro{cite:comp}}
+ {\usebibmacro{cite:dump}%
+ \ifbool{cbx:parens}
+ {\printtext{\csuse{extblx@citedelim@\blx@delimcontext
+ @inner@close}}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \usebibmacro{cite:init}%
+ \ifnameundef{labelname}
+ {\printfield[citetitle]{labeltitle}}
+ {\printnames{labelname}}%
+ \setunit*{\printdelim{namelabeldelim}}%
+ \printtext{\csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \global\booltrue{cbx:parens}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite:comp}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{cite:init}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}}
+
+\DeclareCiteCommand{\supercite}[\mkextblxsupercite]
+ {\usebibmacro{cite:init}%
+ \let\multicitedelim=\supercitedelim
+ \iffieldundef{prenote}
+ {}
+ {\BibliographyWarning{Ignoring prenote argument}}%
+ \iffieldundef{postnote}
+ {}
+ {\BibliographyWarning{Ignoring postnote argument}}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite:comp}}
+ {}
+ {\usebibmacro{cite:dump}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{cite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{cite:dump}%
+ \usebibmacro{postnote}%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}%
+ \usebibmacro{cite:init}}
+ {\usebibmacro{cite:comp}}
+ {\usebibmacro{cite:dump}}
+ {}
+
+\renewbibmacro*{bbx:introcite}{%
+ \printfield{labelprefix}%
+ \printfield{labelnumber}%
+ \ifbool{bbx:subentry}
+ {\printfield{entrysetcount}}
+ {}}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx
new file mode 100644
index 0000000000..d7789dddce
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-numeric-verb.bbx}
+ [2019/08/25 v0.8 extended biblatex numeric-verb
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{numeric-verb}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx
new file mode 100644
index 0000000000..ce8243f789
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric-verb.cbx
@@ -0,0 +1,118 @@
+\ProvidesFile{ext-numeric-verb.cbx}
+ [2019/08/25 v0.8 extended biblatex numeric-verb citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{numeric-verb}
+
+\DeclareOuterCiteDelims{cite}{\bibopenbracket}{\bibclosebracket}
+\DeclareOuterCiteDelimsAlias{parencite}{cite}
+\DeclareOuterCiteDelims{textcite}{}{}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenbracket}{\bibclosebracket}
+
+\renewbibmacro*{textcite}{%
+ \ifnameundef{labelname}
+ {\printfield[citetitle]{labeltitle}}
+ {\printnames{labelname}}%
+ \printdelim{namelabeldelim}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@open}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite}}
+
+\DeclareCiteCommand{\cite}
+ {\csuse{extblx@citedelim@cite@outer@open}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \ifnumgreater{\value{citecount}}{1}
+ {\csuse{extblx@citedelim@cite@outer@open}}
+ {}%
+ \usebibmacro{cite}}
+ {\csuse{extblx@citedelim@cite@outer@close}%
+ \multicitedelim}
+ {\usebibmacro{postnote}%
+ \csuse{extblx@citedelim@cite@outer@close}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\textcite}[\mkoutertextcitedelims]
+ {}
+ {\usebibmacro{citeindex}%
+ \iffirstcitekey
+ {\setcounter{textcitetotal}{1}}
+ {\stepcounter{textcitetotal}%
+ \textcitedelim}%
+ \usebibmacro{textcite}}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+ {\usebibmacro{postnote}%
+ \csuse{extblx@citedelim@\blx@delimcontext @inner@close}}
+
+\DeclareCiteCommand{\supercite}[\mkextblxsupercite]
+ {\iffieldundef{prenote}
+ {}
+ {\BibliographyWarning{Ignoring prenote argument}}%
+ \iffieldundef{postnote}
+ {}
+ {\BibliographyWarning{Ignoring postnote argument}}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\supercitedelim}
+ {}
+
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\textcites}[\mkoutertextcitedelims]
+ {\textcite}{}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx
new file mode 100644
index 0000000000..557dfd61d3
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.bbx
@@ -0,0 +1,20 @@
+\ProvidesFile{ext-numeric.bbx}
+ [2019/08/25 v0.8 extended biblatex numeric bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{numeric}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx
new file mode 100644
index 0000000000..01a0c79892
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-numeric.cbx
@@ -0,0 +1,137 @@
+\ProvidesFile{ext-numeric.cbx}
+ [2019/08/25 v0.8 extended biblatex numeric citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{numeric}
+
+\DeclareOuterCiteDelims{cite}{\bibopenbracket}{\bibclosebracket}
+\DeclareOuterCiteDelimsAlias{parencite}{cite}
+\DeclareOuterCiteDelims{textcite}{}{}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenbracket}{\bibclosebracket}
+
+\renewbibmacro*{textcite}{%
+ \iffieldequals{namehash}{\cbx@lasthash}
+ {\setunit{\multicitedelim}}
+ {\ifnameundef{labelname}
+ {\printfield[citetitle]{labeltitle}}
+ {\printnames{labelname}}%
+ \setunit*{\printdelim{namelabeldelim}}%
+ \printtext{\csuse{extblx@citedelim@\blx@delimcontext @inner@open}}%
+ \global\booltrue{cbx:parens}%
+ \stepcounter{textcitecount}%
+ \savefield{namehash}{\cbx@lasthash}}%
+ \ifnumequal{\value{citecount}}{1}
+ {\usebibmacro{prenote}}
+ {}%
+ \usebibmacro{cite}%
+ \setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}
+
+\renewbibmacro*{textcite:postnote}{%
+ \usebibmacro{postnote}%
+ \ifnumequal{\value{multicitecount}}{\value{multicitetotal}}
+ {\setunit{}%
+ \printtext{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}}}
+ {\setunit{%
+ \ifbool{cbx:parens}
+ {\csuse{extblx@citedelim@\blx@delimcontext @inner@close}%
+ \global\boolfalse{cbx:parens}}
+ {}%
+ \textcitedelim}}}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{postnote}}
+
+\DeclareCiteCommand{\supercite}[\mkextblxsupercite]
+ {\iffieldundef{prenote}
+ {}
+ {\BibliographyWarning{Ignoring prenote argument}}%
+ \iffieldundef{postnote}
+ {}
+ {\BibliographyWarning{Ignoring postnote argument}}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\supercitedelim}
+ {}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{textcite}}
+ {}
+ {\usebibmacro{textcite:postnote}}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx
new file mode 100644
index 0000000000..5e74514fe7
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-standard.bbx
@@ -0,0 +1,1340 @@
+% biblatex-ext v0.8 (2019-08-25)
+% Maintainer: Moritz Wemheuer
+% Licence: LaTeX Project Public License v1.3c or later
+%
+\ProvidesFile{ext-standard.bbx}
+ [2019/08/25 v0.8 extended biblatex standard style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireBibliographyStyle{standard}
+
+\providecommand*{\mkibid}[1]{#1}
+
+\newtoggle{bbx:citexref}
+\newtoggle{bbx:innamebeforetitle}
+\newtoggle{bbx:innameidem}
+\newtoggle{bbx:articlein}
+\newtoggle{bbx:maintitleaftertitle}
+\newtoggle{bbx:introcite:plain:keeprelated}
+
+\DeclareBiblatexOption{global,type,entry}[boolean]{citexref}[true]{%
+ \settoggle{bbx:citexref}{#1}}
+\DeclareBiblatexOption{global,type,entry}[boolean]{citeinxref}[true]{%
+ \blx@warning{The option 'citeinxref' is deprecated.\MessageBreak
+ Use 'citexref' (without in) instead.\MessageBreak
+ Setting 'citexref' now}%
+ \settoggle{bbx:citexref}{#1}}
+\DeclareBiblatexOption{global,type,entry}[boolean]{innamebeforetitle}[true]{%
+ \settoggle{bbx:innamebeforetitle}{#1}}
+\DeclareBiblatexOption{global,type,entry}[boolean]{innameidem}[true]{%
+ \settoggle{bbx:innameidem}{#1}}
+\DeclareBiblatexOption{global,type,entry}[boolean]{articlein}[true]{%
+ \settoggle{bbx:articlein}{#1}}
+\DeclareBiblatexOption{global,type,entry}[boolean]{maintitleaftertitle}[true]{%
+ \settoggle{bbx:maintitleaftertitle}{#1}}
+
+\def\extblx@opt@introcite@false{0}
+\def\extblx@opt@introcite@label{1}
+\def\extblx@opt@introcite@plain{2}
+
+\def\extblx@opthandler@introcite#1{%
+ \ifcsdef{extblx@opt@introcite@#1}
+ {\letcs\extblx@introcite{extblx@opt@introcite@#1}}
+ {\extblx@warning@noline{%
+ Invalid value '#1' for option 'introcite'.\MessageBreak
+ Possible values are 'false', 'label', 'plain'.\MessageBreak
+ Falling back to 'introcite=false'}%
+ \letcs\extblx@introcite{extblx@opt@introcite@false}}}
+
+% {<per-...>}{<option value>}
+\protected\def\extblx@specialopthandler@introcite#1#2{%
+ \ifstrequal{#2}{label}
+ {\ifcsundef{extblx@warn@introcitelabel@#1}
+ {\extblx@warning@noline{%
+ Value 'introcite=label' not officially supported\MessageBreak
+ on per-#1 level.\MessageBreak
+ It requires setup changes for a complete\MessageBreak
+ bibliography environment, which can only happen\MessageBreak
+ globally or per bibliography.\MessageBreak
+ Using 'introcite=label' anyway, the result might\MessageBreak
+ be off. You have been warned}%
+ \global\cslet{extblx@warn@introcitelabel@#1}\@empty}
+ {}}}
+
+\DeclareBibliographyOption[string]{introcite}[label]{%
+ \extblx@opthandler@introcite{#1}}
+\DeclareTypeOption[string]{introcite}[label]{%
+ \extblx@opthandler@introcite{#1}%
+ \extblx@specialopthandler@introcite{type}{#1}}
+\DeclareEntryOption[string]{introcite}[label]{%
+ \extblx@opthandler@introcite{#1}%
+ \extblx@specialopthandler@introcite{entry}{#1}}
+
+\ExecuteBibliographyOptions{%
+ citexref = false,
+ innamebeforetitle = false,
+ innameidem = false,
+ articlein = true,
+ maintitleaftertitle = false,
+ introcite = false,
+% maxbibnames = 999,
+}
+
+
+\newbibmacro*{bbx:introcite}{\usebibmacro{cite}}
+
+\RegisterCiteDelims{inner}{bbx@introcite}
+\DeclareInnerCiteDelimsAlias{bbx@introcite}{cite}
+\DeclareFieldFormat{bbx@introcite}{#1}
+\newcommand*{\introcitepunct}{\addcolon\space}
+\newcommand*{\introcitebreak}{\leavevmode\newline}
+
+\newlength{\extbl@this@introcitewidth}
+\newlength{\introcitewidth}
+\setlength{\introcitewidth}{8\biblabelsep}
+\newlength{\introcitesep}
+\setlength{\introcitesep}{\biblabelsep}
+
+\newrobustcmd*{\AtIntrocite}{%
+ \@ifstar
+ {\global\undef\extblx@hook@introcite
+ \gappto\extblx@hook@introcite}
+ {\gappto\extblx@hook@introcite}}
+
+\newcommand*{\extblx@introcite@init}{%
+ \iftoggle{blx@citation}
+ {}
+ {\togglefalse{blx@bibliography}%
+ \toggletrue{blx@citation}}%
+ \delimcontext{bbx@introcite}%
+ \csuse{blx@hook@cite}%
+ \csuse{blx@hook@citekey}%
+ \DeclareFieldFormat{bibhyperref}{##1}%
+ \undef\cbx@lasthash
+ \undef\cbx@lastyear
+ \citetrackerfalse\pagetrackerfalse\backtrackerfalse
+ \defcounter{maxnames}{\blx@maxcitenames}%
+ \defcounter{minnames}{\blx@mincitenames}%
+}
+
+\AtIntrocite{\extblx@introcite@init}
+
+\newbibmacro{introcite:typeset}{%
+ \begingroup
+ \csuse{extblx@hook@introcite}%
+ \printtext[bbx@introcite]{\usebibmacro{bbx:introcite}}%
+ \endgroup
+}
+
+\newbibmacro{introcite:plain}{%
+ \ifcsequal{extblx@introcite}{extblx@opt@introcite@plain}
+ {\usebibmacro{introcite:typeset}%
+ \printunit*{\introcitepunct}}
+ {}}
+
+% This macro is used in \defbibenvironment
+\newbibmacro*{introcite:break}{%
+ \settowidth{\extbl@this@introcitewidth}
+ {\usebibmacro{introcite:typeset}}%
+ \ifdimgreater{\extbl@this@introcitewidth}{\introcitewidth}
+ {\introcitebreak}
+ {}}
+
+
+\newbibmacro*{bbx:inxrefcite}{\usebibmacro{cite}}
+
+\DeclareCiteCommand{\bbx@xrefcite}[\mkouterbbx@xrefcitedelims]
+ {\boolfalse{citetracker}%
+ \boolfalse{pagetracker}%
+ \boolfalse{backtracker}}
+ {\usebibmacro{bbx:inxrefcite}}
+ {}
+ {}
+
+\RegisterCiteDelims{outer}{bbx@xrefcite}
+\DeclareOuterCiteDelimsAlias{bbx@xrefcite}{cite}
+\RegisterCiteDelims{inner}{bbx@xrefcite}
+\DeclareInnerCiteDelimsAlias{bbx@xrefcite}{cite}
+\DeclareDelimcontextAlias{bbx@xrefcite}{cite}
+
+
+\newbibmacro*{crosscite}[1]{%
+ \iftoggle{bbx:citexref}
+ {\iffieldundef{crossref}
+ {\iffieldundef{xref}
+ {\usebibmacro{#1}}
+ {\printtext{\bbx@xrefcite{\thefield{xref}}}}}
+ {\printtext{\bbx@xrefcite{\thefield{crossref}}}}}
+ {\usebibmacro{#1}}}
+
+\DeclareDelimAlias{innametitledelim}{nametitledelim}
+\DeclareDelimAlias*[bib,biblist]{innametitledelim}{nametitledelim}
+
+\newcommand*{\titleaddonpunct}{\newunitpunct}
+
+\DeclareBibliographyDriver{article}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{bytranslator+others}%
+ \newunit\newblock
+ \usebibmacro{version}%
+ \newunit\newblock
+ \iftoggle{bbx:articlein}{\usebibmacro{in:}}{}%
+ \usebibmacro{journal+issuetitle}%
+ \newunit
+ \usebibmacro{byeditor+others}%
+ \newunit
+ \usebibmacro{note+pages}%
+ \newunit\newblock
+ \usebibmacro{issn}%
+ \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{book}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{maintitle+title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \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{inbook}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{in:}%
+ \usebibmacro{crosscite}{inbook:parent}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \newunit\newblock
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ % with default inheritance 'related' is not inherited,
+ % so the test is not actually necessary
+ \ifboolexpr{togl {bbx:related} and not test {\iffieldxref{related}}}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}}
+
+\newbibmacro*{inbook:parent}{%
+ \usebibmacro{bybookauthor}%
+ \setunit{\printdelim{innametitledelim}}\newblock
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}}
+
+
+\DeclareBibliographyDriver{collection}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{maintitle+title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \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{incollection}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{in:}%
+ \usebibmacro{crosscite}{incollection:parent}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \newunit\newblock
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ % with default inheritance 'related' is not inherited,
+ % so the test is not actually necessary
+ \ifboolexpr{togl {bbx:related} and not test {\iffieldxref{related}}}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}}
+
+\newbibmacro*{incollection:parent}{%
+ \iftoggle{bbx:innamebeforetitle}
+ {\usebibmacro{in:editor+others}%
+ \setunit{\printdelim{innametitledelim}}\newblock}
+ {}%
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{publisher+location+date}}
+
+
+\DeclareBibliographyDriver{proceedings}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{maintitle+title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{event+venue+date}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \printlist{organization}%
+ \newunit
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \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{inproceedings}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{in:}%
+ \usebibmacro{crosscite}{inproceedings:parent}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \newunit\newblock
+ \usebibmacro{doi+eprint+url}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ % with default inheritance 'related' is not inherited,
+ % so the test is not actually necessary
+ \ifboolexpr{togl {bbx:related} and not test {\iffieldxref{related}}}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}}
+
+\newbibmacro*{inproceedings:parent}{%
+ \iftoggle{bbx:innamebeforetitle}
+ {\usebibmacro{in:editor+others}%
+ \setunit{\printdelim{innametitledelim}}\newblock}
+ {}%
+ \usebibmacro{maintitle+booktitle}%
+ \newunit\newblock
+ \usebibmacro{event+venue+date}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{barevolume+volumes}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \printlist{organization}%
+ \newunit
+ \usebibmacro{publisher+location+date}}
+
+
+\DeclareBibliographyDriver{booklet}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \printfield{howpublished}%
+ \newunit\newblock
+ \printfield{type}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \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{dataset}{%
+ \usebibmacro{introcite:plain}%
+ \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
+ \usebibmacro{edition}%
+ \newunit
+ \usebibmacro{version}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \usebibmacro{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{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor}%
+ \newunit\newblock
+ \usebibmacro{edition}%
+ \newunit\newblock
+ \usebibmacro{series+number}%
+ \newunit\newblock
+ \printfield{type}%
+ \newunit
+ \usebibmacro{version}%
+ \newunit
+ \usebibmacro{note}%
+ \newunit\newblock
+ \printlist{organization}%
+ \newunit
+ \usebibmacro{publisher+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \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{online}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \usebibmacro{version}%
+ \newunit
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{organization+location+date}%
+ \newunit\newblock
+ \iftoggle{bbx:doi}
+ {\printfield{doi}}
+ {}%
+ \newunit\newblock
+ \iftoggle{bbx:eprint}
+ {\usebibmacro{eprint}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{url+urldate}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}}
+
+
+\DeclareBibliographyDriver{misc}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author/editor+others/translator+others}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{byeditor+others}%
+ \newunit\newblock
+ \printfield{howpublished}%
+ \newunit\newblock
+ \printfield{type}%
+ \newunit
+ \usebibmacro{version}%
+ \newunit
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{organization+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{patent}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{type+number}%
+ \iflistundef{location}
+ {}
+ {\setunit*{\addspace}%
+ \printtext[parens]{%
+ \printlist[][-\value{listtotal}]{location}}}%
+ \newunit\newblock
+ \usebibmacro{byholder}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{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{periodical}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{editor}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title+issuetitle}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byeditor}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{issn}%
+ \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{report}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{type+number}%
+ \newunit\newblock
+ \usebibmacro{version}%
+ \newunit
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{institution+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \newunit\newblock
+ \usebibmacro{isrn}%
+ \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{thesis}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \printfield{type}%
+ \newunit
+ \usebibmacro{institution+location+date}%
+ \newunit\newblock
+ \usebibmacro{chapter+pages}%
+ \newunit
+ \usebibmacro{pagetotal}%
+ \newunit\newblock
+ \usebibmacro{isbn}%
+ \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{unpublished}{%
+ \usebibmacro{introcite:plain}%
+ \usebibmacro{bibindex}%
+ \usebibmacro{begentry}%
+ \usebibmacro{author}%
+ \setunit{\printdelim{nametitledelim}}\newblock
+ \usebibmacro{title}%
+ \newunit
+ \usebibmacro{language}%
+ \newunit\newblock
+ \usebibmacro{byauthor}%
+ \newunit\newblock
+ \printfield{howpublished}%
+ \newunit\newblock
+ \printfield{type}%
+ \newunit\newblock
+ \usebibmacro{event+venue+date}%
+ \newunit\newblock
+ \usebibmacro{note}%
+ \newunit\newblock
+ \usebibmacro{location+date}%
+ \newunit\newblock
+ \iftoggle{bbx:url}
+ {\usebibmacro{url+urldate}}
+ {}%
+ \newunit\newblock
+ \usebibmacro{addendum+pubstate}%
+ \setunit{\bibpagerefpunct}\newblock
+ \usebibmacro{pageref}%
+ \newunit\newblock
+ \iftoggle{bbx:related}
+ {\usebibmacro{related:init}%
+ \usebibmacro{related}}
+ {}%
+ \usebibmacro{finentry}}
+
+
+\DeclareFieldAlias{titlecase:title}{titlecase}
+\renewbibmacro*{title}{%
+ \ifboolexpr{
+ test {\iffieldundef{title}}
+ and
+ test {\iffieldundef{subtitle}}
+ }
+ {}
+ {\printtext[title]{%
+ \printfield[titlecase:title]{title}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:title]{subtitle}}%
+ \setunit{\titleaddonpunct}}%
+ \printfield{titleaddon}}
+
+\DeclareFieldAlias{titlecase:booktitle}{titlecase}
+\renewbibmacro*{booktitle}{%
+ \ifboolexpr{
+ test {\iffieldundef{booktitle}}
+ and
+ test {\iffieldundef{booksubtitle}}
+ }
+ {}
+ {\printtext[booktitle]{%
+ \printfield[titlecase:booktitle]{booktitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:booktitle]{booksubtitle}}%
+ \setunit{\titleaddonpunct}}%
+ \printfield{booktitleaddon}}
+
+\DeclareFieldAlias{titlecase:maintitle}{titlecase}
+\renewbibmacro*{maintitle}{%
+ \ifboolexpr{
+ test {\iffieldundef{maintitle}}
+ and
+ test {\iffieldundef{mainsubtitle}}
+ }
+ {}
+ {\printtext[maintitle]{%
+ \printfield[titlecase:maintitle]{maintitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:maintitle]{mainsubtitle}}%
+ \setunit{\titleaddonpunct}}%
+ \printfield{maintitleaddon}}
+
+\DeclareFieldAlias{titlecase:journaltitle}{titlecase}
+\renewbibmacro*{journal}{%
+ \ifboolexpr{
+ test {\iffieldundef{journaltitle}}
+ and
+ test {\iffieldundef{journalsubtitle}}
+ }
+ {}
+ {\printtext[journaltitle]{%
+ \printfield[titlecase:journaltitle]{journaltitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:journaltitle]{journalsubtitle}}}}
+
+\renewbibmacro*{periodical}{%
+ \ifboolexpr{
+ test {\iffieldundef{title}}
+ and
+ test {\iffieldundef{subtitle}}
+ }
+ {}
+ {\printtext[title]{%
+ \printfield[titlecase:title]{title}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:title]{subtitle}}}}
+
+\DeclareFieldAlias{titlecase:issuetitle}{titlecase}
+\renewbibmacro*{issue}{%
+ \ifboolexpr{
+ test {\iffieldundef{issuetitle}}
+ and
+ test {\iffieldundef{issuesubtitle}}
+ }
+ {}
+ {\printtext[issuetitle]{%
+ \printfield[titlecase:issuetitle]{issuetitle}%
+ \setunit{\subtitlepunct}%
+ \printfield[titlecase:issuetitle]{issuesubtitle}}}}
+
+\DeclareFieldFormat{volumeof}{\bibstring{volume}~#1}
+\newcommand*{\titlemaintitledelim}{\newunitpunct}
+\newcommand*{\maintitletitledelim}{\newunitpunct}
+\newcommand*{\voltitledelim}{\addcolon\space}
+\renewbibmacro*{maintitle+title}{%
+ \iftoggle{bbx:maintitleaftertitle}
+ {}
+ {\iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \setunit{\maintitletitledelim}\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\voltitledelim}}}}}%
+ \usebibmacro{title}%
+ \iftoggle{bbx:maintitleaftertitle}
+ {\iffieldsequal{maintitle}{title}
+ {\clearfield{maintitle}%
+ \clearfield{mainsubtitle}%
+ \clearfield{maintitleaddon}}
+ {\iffieldundef{maintitle}
+ {}
+ {\setunit{\titlemaintitledelim}%
+ \iffieldundef{volume}
+ {}
+ {\printfield[volumeof]{volume}%
+ \printfield{part}%
+ \setunit{\addspace}%
+ \bibstring{ofseries}%
+ \setunit{\addspace}}%
+ \usebibmacro{maintitle}}}}
+ {}%
+ \newunit}
+
+\renewbibmacro*{maintitle+booktitle}{%
+ \iftoggle{bbx:maintitleaftertitle}
+ {}
+ {\iffieldundef{maintitle}
+ {}
+ {\usebibmacro{maintitle}%
+ \setunit{\maintitletitledelim}\newblock
+ \iffieldundef{volume}
+ {}
+ {\printfield{volume}%
+ \printfield{part}%
+ \setunit{\voltitledelim}}}}%
+ \usebibmacro{booktitle}%
+ \iftoggle{bbx:maintitleaftertitle}
+ {\iffieldundef{maintitle}
+ {}
+ {\setunit{\titlemaintitledelim}%
+ \iffieldundef{volume}
+ {}
+ {\printfield[volumeof]{volume}%
+ \printfield{part}%
+ \setunit{\addspace}%
+ \bibstring{ofseries}%
+ \setunit{\addspace}}%
+ \usebibmacro{maintitle}}}
+ {}%
+ \newunit}
+
+\renewbibmacro*{event+venue+date}{%
+ \printfield{eventtitle}%
+ \setunit{\titleaddonpunct}%
+ \printfield{eventtitleaddon}%
+ \ifboolexpr{
+ test {\iffieldundef{venue}}
+ and
+ test {\iffieldundef{eventyear}}
+ }
+ {}
+ {\setunit{\addspace}%
+ \printtext[parens]{%
+ \printfield{venue}%
+ \setunit*{\addcomma\space}%
+ \printeventdate}}%
+ \newunit}
+
+\renewbibmacro*{bybookauthor}{%
+ \ifnamesequal{author}{bookauthor}
+ {\iftoggle{bbx:innameidem}
+ {\bibstring[\mkibid]{idem\thefield{gender}}}
+ {}}
+ {\printnames{bookauthor}}}
+
+\DeclareNameAlias{ineditor}{default}
+
+% we assume {author/translator+others}
+\newcommand*{\bbx@ineditoridem}{%
+ \ifboolexpr{
+ ((test \ifuseauthor and not test {\ifnameundef{author}})
+ and test {\ifnamesequal{editor}{author}})
+ or
+ ((test \ifusetranslator and not test {\ifnameundef{translator}})
+ and test {\ifnamesequal{editor}{translator}})
+ }}
+
+\newbibmacro*{bbx:in:editor}[1]{%
+ \ifboolexpr{
+ test \ifuseeditor
+ and
+ not test {\ifnameundef{editor}}
+ }
+ {\ifboolexpr{togl {bbx:innameidem} and test {\bbx@ineditoridem}}
+ {\bibstring[\mkibid]{idem\thefield{gender}}}
+ {\printnames[ineditor]{editor}}%
+ \setunit{\printdelim{editortypedelim}}%
+ \usebibmacro{#1}%
+ \clearname{editor}}
+ {}}
+
+\newbibmacro*{in:editor}{%
+ \usebibmacro{bbx:in:editor}{editorstrg}}
+\newbibmacro*{in:editor+others}{%
+ \usebibmacro{bbx:in:editor}{editor+othersstrg}}
+
+
+\newbibmacro*{edition}{\printfield{edition}}
+\newbibmacro*{version}{\printfield{version}}
+\newbibmacro*{pagetotal}{\printfield{pagetotal}}
+
+\newcommand*{\jourvoldelim}{\addspace}
+\newcommand*{\jourserdelim}{\newunitpunct}
+\newcommand*{\servoldelim}{\addspace}
+\newcommand*{\volnumdatedelim}{\addspace}
+
+\renewbibmacro*{journal+issuetitle}{%
+ \usebibmacro{journal}%
+ \setunit*{\jourvoldelim}%
+ \iffieldundef{series}
+ {}
+ {\setunit*{\jourserdelim}%
+ \printfield{series}%
+ \setunit{\servoldelim}}%
+ \usebibmacro{volume+number+eid}%
+ \setunit{\volnumdatedelim}%
+ \usebibmacro{issue+date}%
+ \setunit{\addcolon\space}%
+ \usebibmacro{issue}%
+ \newunit}
+
+\newcommand*{\volnumdelim}{\adddot}
+
+\renewbibmacro*{volume+number+eid}{%
+ \printfield{volume}%
+ \setunit*{\volnumdelim}%
+ \printfield{number}%
+ \setunit{\addcomma\space}%
+ \printfield{eid}}
+
+\newbibmacro*{barevolume+volumes}{%
+ \iffieldundef{maintitle}
+ {\printfield{volume}%
+ \printfield{part}}
+ {}%
+ \newunit
+ \printfield{volumes}}
+
+\newcommand*{\sernumdelim}{\addspace}
+
+\renewbibmacro*{series+number}{%
+ \printfield{series}%
+ \setunit*{\sernumdelim}%
+ \printfield{number}%
+ \newunit}
+
+\newcommand*{\locdatedelim}{\addcomma\space}
+\newcommand*{\locpubdelim}{\addcolon\space}
+\newcommand*{\publocdelim}{\addcomma\space}
+\newcommand*{\pubdatedelim}{\addcomma\space}
+
+\newbibmacro*{pubinstorg+location+date}[1]{%
+ \printlist{location}%
+ \iflistundef{#1}
+ {\setunit*{\locdatedelim}}
+ {\setunit*{\locpubdelim}}%
+ \printlist{#1}%
+ \setunit*{\pubdatedelim}%
+ \usebibmacro{date}%
+ \newunit}
+
+\renewbibmacro*{publisher+location+date}{%
+ \usebibmacro{pubinstorg+location+date}{publisher}}
+
+\renewbibmacro*{institution+location+date}{%
+ \usebibmacro{pubinstorg+location+date}{institution}}
+
+\renewbibmacro*{organization+location+date}{%
+ \usebibmacro{pubinstorg+location+date}{organization}}
+
+\renewbibmacro*{location+date}{%
+ \printlist{location}%
+ \setunit*{\locdatedelim}%
+ \usebibmacro{date}%
+ \newunit}
+
+\renewbibmacro*{doi+eprint+url}{%
+ \ifboolexpr{togl {bbx:doi} and not test {\iffieldxref{doi}}}
+ {\printfield{doi}}
+ {}%
+ \newunit\newblock
+ \ifboolexpr{togl {bbx:eprint} and not test {\iffieldxref{eprint}}}
+ {\usebibmacro{eprint}}
+ {}%
+ \newunit\newblock
+ \ifboolexpr{togl {bbx:url} and not test {\iffieldxref{url}}}
+ {\usebibmacro{url+urldate}}
+ {}}
+
+\newbibmacro*{isbn}{%
+ \ifboolexpr{togl {bbx:isbn} and not test {\iffieldxref{isbn}}}
+ {\printfield{isbn}}
+ {}}
+
+\newbibmacro*{issn}{%
+ \ifboolexpr{togl {bbx:isbn} and not test {\iffieldxref{issn}}}
+ {\printfield{issn}}
+ {}}
+
+\newbibmacro*{isrn}{%
+ \iftoggle{bbx:isbn}
+ {\printfield{isrn}}
+ {}}
+
+\DeclareFieldFormat{issuedate}{\mkbibparens{#1}}
+\renewbibmacro*{issue+date}{%
+ \ifboolexpr{
+ test {\iffieldundef{issue}}
+ and
+ test {\iffieldundef{year}}
+ }
+ {}
+ {\printtext[issuedate]{%
+ \printfield{issue}%
+ \setunit*{\addspace}%
+ \usebibmacro{date}}}%
+ \newunit}
+
+\newbibmacro*{language}{%
+ \printlist{language}}
+
+\newbibmacro*{type+number}{%
+ \printfield{type}%
+ \setunit*{\addspace}%
+ \printfield{number}}
+
+\newbibmacro*{note}{%
+ \printfield{note}}
+
+\renewbibmacro*{addendum+pubstate}{%
+ \iffieldxref{addendum}
+ {}
+ {\printfield{addendum}}%
+ \newunit\newblock
+ \iffieldxref{pubstate}
+ {}
+ {\printfield{pubstate}}}
+
+\renewbibmacro*{related:init}{%
+ \csundef{bbx:relatedloop}%
+ \iftoggle{bbx:introcite:plain:keeprelated}
+ {}
+ {\renewbibmacro{introcite:plain}{}}}
+
+\renewbibmacro*{related:bytranslator}[1]{%
+ \entrydata{#1}{%
+ \renewbibmacro*{name:hook}[1]{%
+ \ifnumequal{\value{listcount}}{1}
+ {\begingroup
+ \mkrelatedstring%
+ \lbx@initnamehook{#1}%
+ \endgroup}
+ {}}%
+ \printnames[bytranslator]{translator}%
+ \setunit*{\addspace\bibstring[\mkrelatedstring]{astitle}\space}%
+ \usebibmacro{title}%
+ \setunit{\addspace}%
+ \printtext[parens]{%
+ \printlist{location}%
+ \iflistundef{publisher}
+ {\setunit*{\locdatedelim}}
+ {\setunit*{\locpubdelim}}%
+ \printlist{publisher}%
+ \setunit*{\pubdatedelim}%
+ \printdate}}}
+
+\endinput
+
+% Copyright 2017-2019 Moritz Wemheuer
+%
+% This work consists of the `.bbx`, `.cbx`, `.def`, `.sty` and `.lua`
+% files
+%
+% ext-standard.bbx
+% ext-biblatex-aux.def
+% ext-dashed-common.bbx
+% ext-authortitle-common.bbx
+% ext-authoryear-common.bbx
+% ext-alphabetic.bbx ext-alphabetic.cbx
+% ext-alphabetic-verb.bbx ext-alphabetic-verb.cbx
+% ext-authortitle.bbx ext-authortitle.cbx
+% ext-authortitle-comp.bbx ext-authortitle-comp.cbx
+% ext-authortitle-ibid.bbx ext-authortitle-ibid.cbx
+% ext-authortitle-icomp.bbx ext-authortitle-icomp.cbx
+% ext-authortitle-terse.bbx ext-authortitle-terse.cbx
+% ext-authortitle-tcomp.bbx ext-authortitle-tcomp.cbx
+% ext-authortitle-ticomp.bbx ext-authortitle-ticomp.cbx
+% ext-authoryear.bbx ext-authoryear.cbx
+% ext-authoryear-comp.bbx ext-authoryear-comp.cbx
+% ext-authoryear-ecomp.bbx ext-authoryear-ecomp.cbx
+% ext-authoryear-ibid.bbx ext-authoryear-ibid.cbx
+% ext-authoryear-icomp.bbx ext-authoryear-icomp.cbx
+% ext-authoryear-iecomp.bbx ext-authoryear-iecomp.cbx
+% ext-authoryear-terse.bbx ext-authoryear-terse.cbx
+% ext-authoryear-tcomp.bbx ext-authoryear-tcomp.cbx
+% ext-authoryear-tecomp.bbx ext-authoryear-tecomp.cbx
+% ext-authoryear-ticomp.bbx ext-authoryear-ticomp.cbx
+% ext-authoryear-tiecomp.bbx ext-authoryear-tiecomp.cbx
+% ext-numeric.bbx ext-numeric.cbx
+% ext-numeric-comp.bbx ext-numeric-comp.cbx
+% ext-numeric-verb.bbx ext-numeric-verb.cbx
+% ext-verbose.bbx ext-verbose.cbx
+% ext-verbose-ibid.bbx ext-verbose-ibid.cbx
+% ext-verbose-note.bbx ext-verbose-note.cbx
+% ext-verbose-inote.bbx ext-verbose-inote.cbx
+% ext-verbose-trad1.bbx ext-verbose-trad1.cbx
+% ext-verbose-trad2.bbx ext-verbose-trad2.cbx
+% ext-verbose-trad3.bbx ext-verbose-trad3.cbx
+% biblatex-ext-tabular.sty
+% biblatex-ext-oa.sty
+% biblatex-ext-oa-doiapi.sty
+% blxextdoiapi.lua
+% biblatex-ext-oasymb-pict2e.sty
+% biblatex-ext-oasymb-tikz.sty
+% biblatex-ext-oasymb-l3draw.sty
+%
+% Refer also to README.md.
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License (LPPL), either
+% version 1.3c of this license or (at your option) any later
+% version. The latest version of this license is at
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status 'maintained'.
+%
+% The Current Maintainer of the work is Moritz Wemheuer
+% <mwemheu@gmail.com>.
+%
+% Please report bugs at https://github.com/moewew/biblatex-ext or
+% via email.
+% Suggestions for improvements and feature request are also very
+% welcome.
+%
+% The bundle is available on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% and is included in MikTeX and TeX live 2018 or later.
+% The development version can be found on GitHub
+% https://github.com/moewew/biblatex-ext
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx
new file mode 100644
index 0000000000..428ef76828
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-verbose-ibid.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose-ibid
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose-ibid}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx
new file mode 100644
index 0000000000..d1014c044c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-ibid.cbx
@@ -0,0 +1,91 @@
+\ProvidesFile{ext-verbose-ibid.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose-ibid citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose-ibid}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx
new file mode 100644
index 0000000000..54b6319b6c
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-verbose-inote.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose-inote
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose-inote}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx
new file mode 100644
index 0000000000..6ccbcafef9
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-inote.cbx
@@ -0,0 +1,97 @@
+\ProvidesFile{ext-verbose-inote.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose-inote citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose-inote}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{footcite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{footcite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx
new file mode 100644
index 0000000000..7d0dee6e15
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-verbose-note.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose-note
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose-note}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx
new file mode 100644
index 0000000000..70e624bda3
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-note.cbx
@@ -0,0 +1,97 @@
+\ProvidesFile{ext-verbose-note.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose-note citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose-note}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{footcite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{footcite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \iffootnote
+ {\usebibmacro{footcite}}
+ {\usebibmacro{cite}}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx
new file mode 100644
index 0000000000..61aa077319
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-verbose-trad1.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose-trad1
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose-trad1}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx
new file mode 100644
index 0000000000..11abe6687b
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad1.cbx
@@ -0,0 +1,91 @@
+\ProvidesFile{ext-verbose-trad1.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose-trad1 citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose-trad1}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx
new file mode 100644
index 0000000000..64decc4220
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.bbx
@@ -0,0 +1,25 @@
+\ProvidesFile{ext-verbose-trad2.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose-trad2
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose-trad2}
+
+\ExecuteBibliographyOptions{
+ inxref=false,
+}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx
new file mode 100644
index 0000000000..4bc2d228bc
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad2.cbx
@@ -0,0 +1,91 @@
+\ProvidesFile{ext-verbose-trad2.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose-trad2 citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose-trad2}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx
new file mode 100644
index 0000000000..fdb35faac3
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-verbose-trad3.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose-trad3
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose-trad3}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx
new file mode 100644
index 0000000000..d4d9d2e6c9
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose-trad3.cbx
@@ -0,0 +1,91 @@
+\ProvidesFile{ext-verbose-trad3.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose-trad3 citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose-trad3}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx
new file mode 100644
index 0000000000..5ea86de444
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.bbx
@@ -0,0 +1,21 @@
+\ProvidesFile{ext-verbose.bbx}
+ [2019/08/25 v0.8 extended biblatex verbose
+ bibliography style (MW)]
+
+\RequireBibliographyStyle{ext-standard}
+\RequireBibliographyStyle{verbose}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx
new file mode 100644
index 0000000000..b0164a718f
--- /dev/null
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/ext-verbose.cbx
@@ -0,0 +1,91 @@
+\ProvidesFile{ext-verbose.cbx}
+ [2019/08/25 v0.8 extended biblatex verbose citation style (MW)]
+
+\blx@inputonce{ext-biblatex-aux.def}{auxiliary code for ext-biblatex}
+ {}{}{}{}
+
+\RequireCitationStyle{verbose}
+
+\DeclareOuterCiteDelims{parencite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareInnerCiteDelims{textcite}{\bibopenparen}{\bibcloseparen}
+
+\DeclareCiteCommand{\cite}[\mkoutercitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\parencite}[\mkouterparencitedelims]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcite}[\mkextblxfootcite]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\footcitetext}[\mkextblxfootcitetext]
+ {\usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+% smartcite's delimcontext needs special attention
+% (see ext-biblatex-aux.def)
+\DeclareCiteCommand{\smartcite}[\mksmartcite]
+ {\delimcontext{\extblx@thisdelimcontext}%
+ \usebibmacro{prenote}}
+ {\usebibmacro{citeindex}%
+ \usebibmacro{cite}}
+ {\multicitedelim}
+ {\usebibmacro{cite:postnote}}
+
+\DeclareCiteCommand{\cbx@textcite}[\mkoutertextcitedelims]
+ {\usebibmacro{textcite:init}}
+ {\iffieldequals{namehash}{\cbx@lasthash}
+ {}
+ {\iffirstcitekey
+ {}
+ {\textcitedelim}%
+ \stepcounter{textcitecount}%
+ \usebibmacro{textcite}%
+ \savefield{namehash}{\cbx@lasthash}}}
+ {}
+ {}
+
+\DeclareMultiCiteCommand{\cbx@textcites}[\mkoutertextcitedelims]
+ {\cbx@textcite}{}
+
+\DeclareMultiCiteCommand{\cites}[\mkoutercitedelims]
+ {\cite}{\multicitedelim}
+\DeclareMultiCiteCommand{\parencites}[\mkouterparencitedelims]
+ {\parencite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcites}[\mkextblxfootcite]
+ {\footcite}{\multicitedelim}
+\DeclareMultiCiteCommand{\footcitetexts}[\mkextblxfootcitetext]
+ {\footcitetext}{\multicitedelim}
+\DeclareMultiCiteCommand{\smartcites}[\mksmartcite]
+ {\smartcite}{\multicitedelim}
+
+\endinput
+%
+% This file is part of the biblatex-ext bundle.
+% biblatex-ext is released under the LaTeX Project Public License v1.3c
+% or later.
+%
+% A complete list of files included in that package can be found in
+% README.md or - failing that - in ext-standard.bbx.
+%
+% Official releases of this package are on CTAN
+% https://www.ctan.org/pkg/biblatex-ext
+% development takes place on GitHub
+% https://github.com/moewew/biblatex-ext
+%