diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/biblatex-contrib/biblatex-ext |
Initial commit
Diffstat (limited to 'macros/latex/contrib/biblatex-contrib/biblatex-ext')
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 Binary files differnew file mode 100644 index 0000000000..11f1bc404c --- /dev/null +++ b/macros/latex/contrib/biblatex-contrib/biblatex-ext/biblatex-ext.pdf 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 +% |