diff options
Diffstat (limited to 'macros/latex/contrib/biblatex-ms/CHANGES-ms.md')
-rw-r--r-- | macros/latex/contrib/biblatex-ms/CHANGES-ms.md | 983 |
1 files changed, 983 insertions, 0 deletions
diff --git a/macros/latex/contrib/biblatex-ms/CHANGES-ms.md b/macros/latex/contrib/biblatex-ms/CHANGES-ms.md new file mode 100644 index 0000000000..864e7304d1 --- /dev/null +++ b/macros/latex/contrib/biblatex-ms/CHANGES-ms.md @@ -0,0 +1,983 @@ +# RELEASE NOTES FOR VERSION 4.0 + - This is a major update with support for multiscript entryfields + - **INCOMPATIBLE CHANGE** Default name list and plain list formats declared + with \DeclareNameFormat and \DeclareListFormat respectively have been + modified to support per-item language switching via the macros: + + name:langswitchon/name:langswitchoff + list:langswitchon/list:langswitchoff + + If you use or provide custom name/list formats, you may want to look at + the format definitions in biblatex.def to see where to place these in + your custom formats in order to provide multiscript support for + per-item automatic language switching. Nothing will break if you don't + do this but there may be a loss of some aspects of multiscript + functionality. In general, you should place the "on" macros *after* + name:delim/list:delim and the "off" macros at the end of the format. +- **INCOMPATIBLE CHANGE** Data annotation test macros \if*annotation, + \has*annotation and \get*annotation now have multiscript form and + language as optional arguments in position 1 and 2, therefore, if you + are using these macros with any optional arguments, be sure to supply + the first two arguments (as "[][]"). For example: + + \getitemannotation[somefield] -> \getitemannotation[][][somefield] + \ifpartannotation[][someannotationname][2]{family}{someval} -> + \ifpartannotation[][][][someannotationname][2]{family}{someval} +- **INCOMPATIBLE CHANGE** Namelist-specific hashes of the form + <namelist>namehash, <namelist>bibnamehash or <namelist>fullhash now must + contain a multiscript form and language in order to differentiate + between multiscript name alternates. The format is now + <namelist><msform><mslang>namehash, + <namelist><msform><mslang>bibnamehash or + <namelist><msform><mslang>fullhash and biber 4.0+ always generates specific + name hashes in this format. +# RELEASE NOTES FOR VERSION 3.18b +- Reenable `\MakeUppercase`/`\MakeLowercase` "patches" for `\bibstring` + based on `\CaseSwitch`. + +# RELEASE NOTES FOR VERSION 3.18a +- Disable `\MakeUppercase`/`\MakeLowercase` patches as emergency fix + for LaTeX 2022-06-01-PL4 compatibility. + +# RELEASE NOTES FOR VERSION 3.18 +- New sorting name key generation macro `\visibility` which allows + application of sorting name key generation to apply only to sorting + within citati + ons. +- New sorting macro `\intciteorder` which allows sorting by order internal + to a cite command like \cite{a,b,c}. +- New option `pluralothers` to force "et al." to be plural (i.e. only + replace two or more names). This is required for some styles (e.g. APA) +- Added `\localrefcontext` as a local alternative + to the global `\newrefcontext`. + `\localrefcontext` can be nested and is only active in the current group. + +# RELEASE NOTES FOR VERSION 3.17 +- **INCOMPATIBLE CHANGE** + The behaviour of index-less granular xdata references to list fields has + changed. Before, a reference to an XDATA list field would select the + first element in the XDATA field list if no index was given but now this + will splice in all elements of the XDATA list field. To ensure the + previous behaviour, simply add "-1" (assuming the default value of "-" + for the biber 'xdatasep' option) to the end of all granaular list + XDATA references. +- Added helper macros to enable calculations with non-ASCII numerals. + This is necessary to properly support languages like Marathi. + At the moment the 'translation' is very basic and uses a one-to-one + correspondence of US-ASCII (Arabic) digits and non-ASCII digits. + The translation also needs additional post-processing steps. + Use `\blx@defcomputableequivalent{<numeral digit>}{<ASCII digit>}` to + make `<numeral digit>` an equivalent of `<ASCII digit>` + (presumably this command will be used in `.lbx` files if the language + requires it). + `\hascomputableequivalent{<string>}` can be used to check if `<string>` + is a number that can be converted to a number with ASCII digits. + `\getcomputableequivalent{<string>}{<macro>}` does the conversion + and saves the number in `<macro>`. + There is `\ifiscomputable{<string>}` to check if a `<string>` + is an ASCII number OR has a computable equivalent. + There are analogous macros for fields instead of strings. +- Added `\textouterlang` to select the last active language that + was not selected by `biblatex` itself. + This may help in multilingual setups where `biblatex` also changes the + language quite heavily. +- Added `\DeclareBibstringSet`, `\DeclareBibstringSetFormat` etc. + to allow injecting additional formatting for a set of bibstrings. + Sets can be defined arbitrarily. These commands are primarily + intended for use in localisation modules. +- Changed the definition of `\bibnamedelimi` to `\isdot\addnbspace`. + Previously the definition was just `\addnbspace`, which meant the `.` + would be treated as a period/full stop. +- **BREAKING CHANGE** + `\DeclareDelimFormat` no longer accepts a list of names as argument. + It only accepts a single delimiter name. + A list of contexts is still supported. + Note that previously the optional argument would not work correctly + with a list of names. +- **CRITICAL CHANGE** + `biblatex` no longer writes tracking and refsection initialisation code + to aux files. + Instead the `\...cite` commands are redefined locally to do that on demand. + This should keep the auxiliary files much cleaner of `biblatex` + intervention. +- **CRITICAL CHANGE** + Generalised `season` date part to `yeardivision`. It can now also + hold quarter, quadrimester, semestral or seasons with hemisphere + designation. + Helper macros have been renamed accordingly. Limited backwards + compatibility is in place. +- **(Possibly) CRITICAL CHANGE** + `\notecite` and friends no longer issue an explicit `\nocite`. + Since the commands are defined with `\DeclareCiteCommand`, they + already issue a normal cite request. + The additional `\nocite` from the loop code was superfluous + and would result in slightly instable `.bcf` files. + + +# RELEASE NOTES FOR VERSION 3.16 +- Fixed an infinite loop caused by excessive aliasing of the `volcitepages` + format. + Reverted the alias `\DeclareFieldAlias{volcitepages}{postnote}` + and again define + ``` + \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}} + ``` + explicitly. +# RELEASE NOTES FOR VERSION 3.15b +- Fixed `.lbx` file loading behaviour. All `.lbx` files are now loaded + `\AtBeginDocument`. Languages that were not requested explicitly by packages + are recorded in the `.aux` file and loaded on the next run. + This may require a further LaTeX run in some situations, but now we can be + sure when `.lbx` files are read. +- Added `label` option to `\printbibliography`. +- Added more name wrapper aliases to make name aliasing smoother. +- Deprecate `\mainlang` switch in favour of the text macro `\textmainlang`. +- Deprecate `\mkrelatedstring` (which is defined as `\mainlang`) + in favour of `\mkrelatestringtext` (defined as `\textmainlang`). + +# RELEASE NOTES FOR VERSION 3.15a +- Fixed bug with long argument for `\DeclareFieldFormat` and friends. + +# RELEASE NOTES FOR VERSION 3.15 +- Fixed a long-standing issue with `\intitlepunct`. + The old definition + ``` + \newbibmacro*{in:}{% + \printtext{% + \bibstring{in}\intitlepunct}} + ``` + would print `\intitlepunct` directly and not via the punctuation + buffer. Since the `\add...` punctuation macros guard against + undesired double punctuation, this would usually not show as an + issue (except in edge cases https://tex.stackexchange.com/q/175730/, + https://github.com/plk/biblatex/issues/943). + The new definition uses the punctuation tracker to print + `\intitlepunct`. + ``` + \newbibmacro*{in:}{% + \bibstring{in}% + \printunit{\intitlepunct}} + ``` + `\printunit` is needed instead of `\setunit` to stop subsequent + `\setunit`s from overriding `\intitlepunct` in case of missing + fields. +- Define `volcitepages` and `multipostnote` as a field alias of `postnote` + and `multiprenote` as an alias of `prenote`. + That should make it easier to change all post- and prenote formats at once. + A change to `postnote` will automatically apply to `multipostnote` + and `volcitepages` as well. Similarly for `multiprenote`. + In case that is not desired, the original definitions can be restored with + ``` + \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination][\mknormrange]{#1}} + \DeclareFieldFormat{multiprenote}{#1\isdot} + \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination][\mknormrange]{#1}} + ``` + + **NB** The definition of `volcitepages` caused an infinite loop and was + reverted in v3.15b. + This means that only `multiprenote` and `multipostnote` are aliased. +- Unified DOI, eprint and URL printing across all entry types. + The fields `doi`, `eprint`, `eprintclass`, `eprinttype` and `url` + are now valid for all entry types. + `@online` and `@unpublished` now also use the bibmacro + `doi+eprint+url`. + This means `@online` now responds to the `url` option. + That does not mean, however, that a global `url=false,` + suppresses URLs for `@online` entries, since `url=true,` + is set on a per-type level to ensure backwards compatibility + as far as possible. + In case eprint information should be suppressed for `@online` + and `@unpublished`, add + ``` + \ExecuteBibliographyOptions[online,unpublished]{eprint=false} + ``` +- Added `eid` to more entry types. + To avoid issues with backwards compatibility of widely used bibmacros, + the bibmacro `chapter+pages` was redefined from + ``` + \newbibmacro*{chapter+pages}{% + \printfield{chapter}% + \setunit{\bibpagespunct}% + \printfield{pages}% + \newunit} + ``` + to + ``` + \newbibmacro*{chapter+pages}{% + \printfield{chapter}% + \setunit{\bibeidpunct}% + \printfield{eid}% + \setunit{\bibpagespunct}% + \printfield{pages}% + \newunit} + ``` +- Added `\bibeidpunct` in analogy to `\bibpagespunct`. +- Added `issuetitleaddon` and `journaltitleaddon` fields. +- Added options `backreffloats` and `trackfloats` to enable/disable + citation tracking and back references in floats. + Note that citation tracking in floats can lead to undesirable + results in case the float objects floats too far from its "natural" + position. +- **INCOMPATIBLE CHANGE** `numeric-comp` compresses subentry set + references now. + This behaviour can be disabled with `subentrycomp=false`. +- Added `subentrycomp` option to `numeric-comp` citation style. + The option is only relevant with `subentry=true`. + With `subentrycomp=true` set citations will be compressed + to "1a-c" instead of "1a; 1b; 1c". + The option is mainly intended for backwards compatibility; + the behaviour of previous `biblatex` versions can be restored + with `subentrycomp=false`. +- Added `\multiciterangedelim`, `\multicitesubentrydelim`, + `\multicitesubentryrangedelim`, `\superciterangedelim`, + `\supercitesubentrydelim`, and `\supercitesubentryrangedelim` for + finer control over (compressed) subentry citations in `numeric-comp`. +- **CRITICAL CHANGE** + The structure of the bibmacros in `numeric-comp` + has been reworked to make it easier to customise the printed output. + Documents that relied on patching internal bibmacros or heavily + redefined them may have to adapt. +- **CRITICAL CHANGE** + Implemented better `@set` support for BibTeX, `@set`s should now + sort properly. + This is achieved with a two-pass structure and (hidden) copies of + the set entries. + The two-pass structure means that the compilation sequence becomes + LaTeX, BibTeX, LaTeX, BibTeX, LaTeX, LaTeX. +- **CRITICAL CHANGE** + The case change functions now make use of the `expl3` module `l3text` + if the available `expl3` version is recent enough. + If `expl3` is too old the old LaTeX2e implementation is used. + If desired the implementation of the case changing functions + can be selected at load-time with the `casechanger` option, which + accepts the values `expl3`, `latex2e` and `auto` (which selects + `expl3` if the `expl3` version not older than 2020-04-06, this + is the default). + + The `expl3` implementation of the case changer is slightly more + robust than the home-grown `latex2e` code. +- The option `bibtexcaseprotection` can be used to turn off the + case protection via curly braces. This allows for a saner approach + to case protection where text is protected solely via a macro + like `\NoCaseChange`, e.g. + ``` + title = {The Story of \NoCaseChange{HMS \emph{Erebus}} + in \emph{Really} Strong Wind}, + ``` + instead of + ``` + title = {The Story of {HMS} \emph{Erebus} + in {\emph{Really}} Strong Wind}, + ``` +- Added `\mautocite` and `\Mautocite`. +- Added `\NumsCheckSetup` and `\PagesCheckSetup` for finer control + of the `\ifnumerals` and `\ifpages` checks. +- Deprecate the starred `\DeclareDelimAlias*` in favour of + `\DeclareDelimAlias` with optional arguments. +- **INCOMPATIBLE CHANGE** + `biblatex` no longer falls back to English for unknown languages. + Warnings will be triggered if undefined language strings or extras + are used. +- **INCOMPATIBLE CHANGE** + Bibliography strings and bibliography extras can now be written + either to `\captions<language>` or to `\extras<language>` + (this is controlled with the `langhook` option). + Previously, they were written to `\extras<language>`, but upon + reflection `\captions<language>` appears to be a more sensible + place for these definitions. + The new default is to write to `\captions<language>` + (i.e. `langhook=captions`). + The previous behaviour can be restored with `langhook=extras`. +- **INCOMPATIBLE CHANGE** Moved `\delimcontext{bib}` to `\AtUsedriver`, + this makes it easier to override the delimiter context in `\usedriver` + calls. `\AtUsedriver*` calls may have to be amended to include + `\delimcontext{bib}`. The new default is + ``` + \AtUsedriver{% + \delimcontext{bib}% + \let\finentry\blx@finentry@usedrv + \let\newblock\relax + \let\abx@macro@bibindex\@empty + \let\abx@macro@pageref\@empty} + ``` + Note that this definition is backwards compatible + and can be used in older versions as well (down to v3.4 2016-05-10). +- `biblatex` now tests if a requested backend (re)run happened by + comparing the MD5 hashes of the new and old `.bbl` files. +- Added file hooks `\blx@filehook@preload@<filename>`, + `\blx@filehook@postload@<filename>` + and `\blx@filehook@failure@<filename>` + to execute hooks before or after a file is loaded + or if the loading fails. + `\blx@lbxfilehook@simple@preload@<filename>`, + `\blx@lbxfilehook@simple@postload@<filename>` + and `\blx@lbxfilehook@simple@failure@<filename>` + as well as + `\blx@lbxfilehook@once@preload@<filename>`, + `\blx@lbxfilehook@once@postload@<filename>` + and `\blx@lbxfilehook@once@failure@<filename>` + are the equivalents for `.lbx` loading, where + files may be loaded several times in some situations. +- Added limited support for 'nodate' with BibTeX. +- Improved `babel` and `polyglossia` interfacing (avoids more or less + unsupported patches). + This should work with `babel` at least v3.9r (2016/04/23) + and polyglossia `polyglossia` v1.49 (2020/04/08) or later. +- **INCOMPATIBLE CHANGE** Removed list and name index wrappers + (`\DeclareIndexNameWrapperFormat`, `\DeclareIndexListWrapperFormat` + and friends). Those wrappers make no sense, since the indexed + names are not printed 'together' in any useful sense of the word + and were never working anyway. +- **CRITICAL CHANGE** Generalised some keyval macros. + `biblatex`-related uses of `\define@key` should ideally replaced with + `\blx@kv@defkey`. + Style authors are advised not to rely too much on the internal + implementation of certain keyval interfaces. + Users who want to experiment with using a different underlying + keyval parser need only provide replacements of the `\blx@kv@...` + macros (which are defined via `\provide...` so that they will + not overwrite existing definitions; in particular users can define + those replacements before loading `biblatex`). +- Deprecate `\ifkomabibtotoc` and `\ifkomabibtotocnumbered`. + With newer versions of KOMA-Script these tests are no longer used + and their implementation was always a bit shifty (they would only pick + up globally set options). + + +# RELEASE NOTES FOR VERSION 3.14 +- biber from version 2.14 has extended, granular XDATA functionality to + allow referencing from and to parts of fields. This makes XDATA entries into + more general data sharing containers. +- Biber applies Perl's Unicode case folding to normalise the + capitalisation of field names and entry types when reading from the + `.bib` file. The output in the `.bbl` (what comes out on the + `biblatex` side uses the capitalisation from the data model; the only + exception are unknown entry types which are passed on *exactly* + as they are given in the `.bib` file - of course it is strongly + recommended to define all entry types one intends to use in the + data model). +- `biblatex` now interfaces with `polyglossia` much better and can deal + with language variants. + Note that `polyglossia` v1.45 (2019/10/27) is required for this + to work properly, it is strongly recommended to update `polyglossia` + to this or a later (current) version. + +# RELEASE NOTES FOR VERSION 3.13 +- **INCOMPATIBLE CHANGE** Any custom per-entry options in datasources must + be defined with `\DeclareEntryOption` in order for biber to recognise + them and pass them out in the `.bbl`. + This should not adversely affect any code using the documented + `\Decalare...Option` interface, so should be uncritical for most users. +- Added `\DeclareBiblatexOption` as a convenient interface to declare the same + option in different scopes. This should help avoid code duplication. + For example + ``` + \DeclareBibliographyOption[boolean]{noroman}[true]{% + \settoggle{blx@noroman}{#1}} + \DeclareTypeOption[boolean]{noroman}[true]{% + \settoggle{blx@noroman}{#1}} + \DeclareEntryOption[boolean]{noroman}[true]{% + \settoggle{blx@noroman}{#1}} + ``` + can be replaced with + ``` + \DeclareBiblatexOption{global,type,entry}[boolean]{noroman}[true]{% + \settoggle{blx@noroman}{#1}} + ``` +- Following the introduction of `\DeclareBiblatexOption` extend the scope + of a few options (`abbreviate`, `citetracker`, `clearlang`, `dataonly`, + `dateabbrev`, `<namepart>inits`, `ibidtracker`, `idemtracker`, `labelalpha`, + `labelnumber`, `labeltitle`, `labeltitleyear`, `labeldateparts`, + `loccittracker`, `opcittracker`, `singletitle`, `skipbib`, `skipbiblist`, + `skipbiblab` `terseinits`, `uniquelist`, `uniquename`, `uniquetitle`, + `uniquebaretitle`, `uniquework`, `uniqueprimaryauthor`). +- Furthermore, the standard style options `doi`, `eprint`, `isbn`, `url`, + `related` are now available also on a per-type and per-entry level. + The same holds for `mergedate`, `subentry` and the options of `reading.bbx`. + This change has the potential to clash with custom styles that already define + the standard options at these scopes. +- Promote `@software` to regular entry type and define `@dataset`. + `@software` is aliased to the `@misc` driver, + `@dataset` has a dedicated driver. +- Add `\ifvolcite` test to check if the current citation is in a `\volcite` + context. +- Add the special fields `volcitevolume` and `volcitepages` for finer control + over the `\volcite` postnote. +- Add `\AtVolcite` hook to initialise `\volcite` commands. +- Add `\mkbibcompletename` as well as `\mkbibcompletename<formatorder>` + to format complete names. + The commands are analogous to `\mkbibname<namepart>` but apply to + the entire name printed in format order `<formatorder>`. + By default the predefined macros all expand to `\mkbibcompletename`. +- Add `multiprenotedelim` and `multipostnotedelim` and make all + `(pre|post)notedelim`-like commands context sensitive. +- Add rudimentary support for `labelprefix` with BibTeX backend. + Biber implements `labelprefix` via `refcontext`s, but BibTeX does not + actually support `refcontext`s. The user interface is retained, but BibTeX's + "`refcontext`s" support only the emulation of `labelprefix` and nothing more. + There might be subtle differences between Biber's and BibTeX's + `labelprefix` behaviour, but it should be better than nothing. + If you need full `labelprefix` support, please consider switching to Biber. +- Add `\thefirstlistitem`, `\strfirstlistitem` and `\usefirstlistitem` to + grab and use the first item of a field. +- Add `\isdot` to the format for `journaltitle` so that `.`s at the end of the + `journal(title)` field are automatically treated as abbreviation dots and not + sentence-ending periods. To restore the old behaviour add + ``` + \DeclareFieldFormat{journaltitle}{\mkbibemph{#1}} + ``` + to the preamble. +- Add second optional item post processing argument to `\mkcomprange`, + `\mknormrange` and `\mkfirstpage`. It can be used to post process + every number item in the formatted range separately. It can for + example turn cardinal ranges into ordinal ranges (this is done in + the Latvian localisation module). +- Add further customisation options for strings typeset with `url`'s `\url` + command (mainly URLs and DOIs). It is now possible to add a bit of + stretchable space after characters with `biburlnumskip`, `biburlucskip` + and `biburlucskip`. The previously hard-coded (stretacheble) space + `\biburlbigskip` as well as the penalties `biburlbigbreakpenalty` and + `biburlbreakpenalty` are also configurable now. +- Add `\DeclarePrintbibliographyDefaults` to set default values for some + option keys to `\printbibliography` and friends. +- `\nocite` is now enabled in the bibliography (previously it was + deactivated in the bibliography). + Please report any issues that this may cause. +- The internals macros `\abx@aux@cite`, `\abx@aux@refcontext` + and `\abx@aux@biblist` are now called every time an entry is cite + (and appears in a bibliography or biblist, respectively). + This helps to avoid unwanted side-effects when writing to aux files + is disabled. +- `\nohyphenation` and `\textnohyphenation` now rely on a (fake) + language without hyphenation patterns instead of `\lefthyphenmin`, + which means that the command can now be used anywhere in a paragraph, + see also <https://texfaq.org/FAQ-hyphoff>. + Note that switching languages with `babel` *within* those commands + removes the hyphenation protection. +- Allow `doi` field for `@online` entries. This field was previously + not printed in the `@online` driver. In case DOIs appear where + they should not appear the output of earlier versions can be + recreated with + ``` + \ExecuteBibliographyOptions[online]{doi=false} + ``` + since the `doi` option is now available on a per-type level. + + +# RELEASE NOTES FOR VERSION 3.12 +- **INCOMPATIBLE CHANGE** The syntax for defining data annotations in the + BibLaTeXML data source format has changed to accommodate named + annotations. Annotations are no longer attributes but are fully-fledged + elements. It is not expected that this will impact any current users. +- **INCOMPATIBLE CHANGE** The field/fieldset argument to the `\translit` + command is now mandatory to allow for a new optional argument which + restricts transliteration to entries with particular `langid` fields. +- The field `sortyear` is an integer field now and not a literal. This is + because the `sortX` fields should be the same datatype as the `X` field + as sorting depends on this. This fixes an issue where years were not + sorted properly as integers. `sortyear` was sometimes used to tune date + sorting as in "1984-1", "1984-2" etc. for multi-volume collections with + the same year. However, this is really an abuse of the sorting template + system since this should be done by having a semantically more granular + sorting item to differentiate below the year level (typically, `volume` + does this for multi-volume works and this is already part of all default + sorting templates). The example .bib that comes with biblatex has been + changed to remove such `sortyear` abuses and the sorting is not impacted + as they examples using this already have either `volume` or `sorttitle` + which made this abuse of `sortyear` unnecessary anyway. +- The field `number` is a literal field now and not an integer. This allows for + a wider range of possible input such as "S1", "Suppl. 1", "1-3". + If you want to sort by `number` and only have integers in there, you should + consider using a custom data model to turn `number` back into an integer type + field, since sorting integers as literals has performance implications and + might lead to undesired sorting such as "1", "10", "2". +- **INCOMPATIBLE CHANGE** Removed the 'semi-hidden' option `noerroretextools`. + If you want to load `noerroretextools` now, you need to define the macro + `\blx@noerroretextools` instead. This can for example be done with + ``` + \usepackage{etoolbox} + \cslet{blx@noerroretextools}\empty + \usepackage{biblatex} + ``` + or + ``` + \makeatletter + \let\blx@noerroretextools\@empty + \makeatother + \usepackage{biblatex} + ``` + You still need to make sure that all macros used by `biblatex` are restored + to their `etoolbox` definitions before loading `biblatex`. +- New macro `\abx@missing@entry` to style missing entrykeys in citations. +- Added field format deprecation macros `\DeprecateFieldFormatWithReplacement` + and friends. +- Add `\ifdateyearsequal` to check if two dates have the same year and era + date part. Since `year`s are always non-negative integers and the 'sign' is + stored as the `era`, you should use `\ifdateyearsequal` instead of a simple + `\iffieldequals{#1year}{#2year}` to compare years. The latter can lead to + undesired results if the years have opposite signs, but are otherwise the + same. +- New values `part+`, `chapter+`, `section+` and `subsection+` for 'section'- + valued options `refsection`, `refsegment` and `citereset`. These options + are then executed at not only the specified level of sectioning, but also + all higher levels. +- Add second optional argument to `\DeclareDelimAlias*`. +- Allow keywords for dataonly/skipped entries as well. +- Added `maxcitecounter`. +- Deprecate `\labelnamepunct` in favour of the context-sensitive + `nametitledelim`. + For compatibility reasons `\labelnamepunct` still pops up in the code here + and there, but `nametitledelim` should be preferred now. +- The `xstring` package is not loaded by default any more. + Style developers whose styles make use of that package should load it + explicitly. +- `authoryear.bbx` now has a macro `bbx:ifmergeddate` that can be used to + check whether the date has been printed at the beginning of an entry + and can thus be suppressed later in the `date` and `issue+date` macros. + The macro works like a test and expands to the `<true>` branch if the date + has been merged and can be suppressed, it expands to `<false>` if the date + has not been merged. In practice `\printdate` should then be issued + if and only if the test yields false. + + This change means that the definition of the `date` macro can be the same for + all mergedate settings and that only `bbx:ifmergeddate` is redefined for + each different value. No backwards compatibility issues are expected, + but style authors are encouraged to test the changes and see if the new + macro could be useful for their styles. +- For a long time `biblatex` has defined `\enquote` if `csquotes` was not + loaded. This behaviour was not documented, the official command intended + for quotation marks was always `\mkbibquote`. Because `biblatex` should not + (re)define user-level commands that are not primarily associated with + citations or the bibliography, from this release on `\enquote` is not defined + any more, instead the internal command `\blx@enquote` is defined and used. + The same holds for `\initoquote`, `\initiquote`, `\textooquote`, + `\textcoquote`, `\textoiquote`, `\textciquote`. + `biblatex` still defines the internal commands `\@quotelevel`, `\@quotereset` + and `\@setquotesfcodes` if `csquotes` is not loaded. + + Users are encouraged to use `csquotes` for proper quotation marks, but can + get back the old behaviour with + ``` + \makeatletter + \providerobustcmd*{\enquote}{\blx@enquote} + \makeatother + ``` + or + ``` + \newrobustcmd*{\enquote}{\mkbibquote} + ``` +- Add new list wrapper and name wrapper formats (`\DeclareListWrapperFormat`, + `\DeclareNameWrapperFormat`) to style a (name) lists in its entirety. + This is useful because name and lists formats normally style only one + particular item of the list. The wrapper format can be used to easily format + the entire list in italics, for example. +- `\DeclareCitePunctuationPosition` can be used to configure the punctuation + position for citation commands similar to the optional `position` argument + of `\DeclareAutoCiteCommand`. +- If the `\pdfmdfivesum` primitive is available (via `pdftexcmds`' + `\pdf@mdfivesum`) the `labelprefix` value is hashed for internal use, making + it safer for construction of macro names and the like. If you don't like + that you can turn off the behaviour by redefining `\blx@mdfivesum`. The + fallback in case `\pdf@mdfivesum` is unavailable is + ``` + \let\blx@mdfivesum\@firstofone + ``` + + As before the labelprefix value is fully expanded before use. If its contents + are unexpandable you need to avoid expansion with `\detokenize`. + +# RELEASE NOTES FOR VERSION 3.11 +- `\printbiblist` now supports `driver` and `biblistfilter` options + to change the defaults set by the biblistname. +- Add `\mknormrange` to normalise page ranges without compressing them. +- **INCOMPATIBLE CHANGE** The format for `postnote` (`multipostnote`, + `volcitepages`) normalises page ranges with `\mknormrange`. + Since `\mknormrange` acts only on page ranges as detected by + `\ifpages`, this does not affect text other than page ranges. + Hyphens and dashes in page ranges will be transformed to + `\bibrangedash`, commas and semicolons to `\bibrangesep`. + This is analogous to Biber's treatment of page-like fields. + If you always separated page ranges with `--` or `\bibrangedash` + anyway, this should not change the output you get. + If you used a single hyphen to separate page ranges (e.g., `23-27`) + you will now get the arguably more aesthetically pleasing output + with `\bibrangedash`. + In case you want to restore the old behaviour where page ranges were + not normalised add the following three lines to your preamble. + ``` + \DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}} + \DeclareFieldFormat{volcitepages}{\mkpageprefix[pagination]{#1}} + \DeclareFieldFormat{multipostnote}{\mkpageprefix[pagination]{#1}} + ``` + Style developers may note that the field format for `pages` + was not changed to include `\mknormrange` because the contents + of that field are prepared by the backend and Biber already does + the page range normalisation out of the box. +- The standard definitions for headings were changed to be as close to the + defaults of the standard document classes or KOMA/memoir as possible. + **PLEASE CHECK** if your document headers relied on the behaviour of older + versions. +- The `@unpublished` entry type now also supports `type`, `eventtitle`, + `eventdate` and `venue`. +- A long-standing bug with punctuation before `eventdate` and `venue` was fixed. + Originally the round brackets were supposed to be preceded only by a space, + the addition of other fields caused this space to be replaced by new unit + punctuation. **PLEASE CHECK** if you can accept the changed output. +- Added `\ifdateannotation`. Added optional argument for field and item to + `\iffieldannotation`, `\ifitemannotation`, and `\ifpartannotation`. +- `\DeclareSourcemap` can now be used multiple times. +- **INCOMPATIBLE CHANGE** Language aliases are now also resolved when loading + localisation files, only infinite recursion is avoided. + Assuming `\DeclareLanguageMappingSuffix{-apa}`, loading `ngerman` localisation + causes `ngerman-apa.lbx` to be read. If that file inherits from `german`, + `german-apa.lbx` will be read. Previously only `german.lbx` would have been + read at that point. Of course if `german-apa.lbx` inherits from `german`, + `german.lbx` is loaded at that point, so infinite recursion is avoided. +- **CRITICAL CHANGE** The code to load localisation files was changed. + This is a an internal change and should not influence document output, + save for a few bug fixes. Style authors should check if the changes introduce + any bugs for their localisation handling and report them. +- Added `\begrelateddelim` and `\begrelateddelim<relatedtype>` for punctuation + before the related block. **PLEASE CHECK** that this change does not interfere + with your punctuation settings. The change should be backwards compatible, + but might give different results if `\usebibmacro{related}` is used in + unusual positions. +- Added `locallabelwidth` option to control the label spacing in bibliographies, + if set to true, the label width will be calculated locally for the current + bibliography and not globally from a list of all citation. + +# RELEASE NOTES FOR VERSION 3.10 +- **INCOMPATIBLE CHANGE** The recent ISO8601:201x standard supersedes + the draft EDTF (Extended Date Time Format) extensions. Biblatex therefore + now supports the ISO8601-2 Clause 4, Level 1 Extended Format which is + equivalent to the draft EDTF standard but with different syntax. *This + syntax is in some cases not backwards compatible*. Biblatex will not + support backwards compatibility for the draft EDTF syntax because it is + too messy to do so and few people were using this anyway since it is a + relatively new and specialised feature. Please note these syntax changes + which effect only the formatting of DATE fields in bibliography datasources: + - The "unspecified" marker "u" is now "X" + - An approximate+uncertain date is now indicated with "%" rather than "?~" + - Open dates are now marked with ".." instead of "open" or blank + start/end dates. + - Unknown dates are now indicated by blank start/end dates rather than + "unknown" or "*" +- Unicode support code that is problematic for non-Unicode engines, + but useful for XeTeX and LuaTeX now resides in `blx-unicode.def`. + That file is only read by XeTeX and LuaTeX. +- The option `noerroretextools` demotes the incompatibility error for + `etextools` to a mere warning if set to `true`. Users still need + to make sure that `\forlistloop` has the definition from `etoolbox` + and not the completely incompatible definition from `etextools`. + This option is meant as a last resort for people who must at all + costs load `etextools` or a package that uses it. + `noerroretextools=true` will always cause a warning even if + `etextools` is not loaded. + +# RELEASE NOTES FOR VERSION 3.9 +## Bug fix release +- Fix `\mkpagetotal` +- Fix issue with refcontexts not appearing in some circumstances +- **DEPRECATION NOTICE** The coming update to the ISO8601 standard + supercedes the draft EDTF (Extended Date Time Format) extensions. + When the new ISO8601 standard is public, biblatex will therefore + support the ISO8601-2 Clause 4, Level 1 Extended Format which is + equivalent to the draft EDTF standard but with different syntax. This + syntax is in some cases not backwards compatible. Biblatex will not + support backwards compatibility for the draft EDTF syntax because it is + too messy to do so and few people were using this anyway since it is a + relatively new and specialised feature. Please note these syntax changes + which will effect only the formatting of DATE fields in bibliography + datasources: + - The "unspecified" marker `u` is now `X` + - An approximate+uncertain date is now indicated with `%` rather than `?~` + - Open dates are now marked with `..` instead of `open` or blank start/end dates. + - Unknown dates are now indicated by blank start/end dates rather than `unknown` or `*` + +# RELEASE NOTES FOR VERSION 3.8a +## Bug fix release +- Documentation version fix and loop fix in certain styles + +# RELEASE NOTES FOR VERSION 3.8 +## Requirements +Biber version 2.8 is required for biblatex 3.8 + +## In order to standardise terminology, some commands and options have dropped the "scheme" naming convention and switched to "template" +- `\DeclareSortingScheme` is now `\DeclareSortingTemplate` +- `\DeclareSortingNamekeyScheme` is now `\DeclareSortingNamekeyTemplate` +- The "sortingnamekeyscheme" option is now "sortingnamekeytemplate" + +## `\DeclareLabelalphaNameTemplate` no longer has entrytype scope +- **INCOMPATIBLE CHANGE** The optional first argument to + `\DeclareLabelalphaNameTemplate` was previously an entrytype but is now an + arbitrary template name, as with `\DeclareUniquenameTemplate`. This is to + allow multiple definitions which can be referred to at different scopes. + It is unlikely that anyone used this with entrytype scope anyway. + +## `origlanguage` is now a list instead of a field. +- **INCOMPATIBLE CHANGE** Since this is mostly used to generate localisation strings like + 'Translated from the <language>' via the internal macros `lbx@lfromlang` + and `\lbx@sfromlang`, users and style authors should not see any + differences. However, if your style prints `origlanguage` directly using + `\printfield`, this will need to be changed to `\printlist`. + +## Name handling enhancements +- Name handling is now fully generalised to cover arbitrary name parts. + The final few pieces have been completed to allow fully customisable + name handling, allowing for better internationalisation. The code for + name uniqueness calculation and label generation for names is now fully + abstracted: templates created with `\DeclareUniquenameTemplate` and + `\DeclareLabelalphaNameTemplate` may now be specified at per-refcontext, + per-entry, per-namelist and per-name scope, which allows complete + control over all aspects of name usage. See the comments in the enhanced + `93-nameparts.tex` example file. + +## `extrayear` is now `extradate` and the information used to track this can be customised +- **INCOMPATIBLE CHANGE** `extrayear` is called `extradate` now. + Limited backwards compatibility is + in place to allow a smooth transition, but style developers should use the new name. +- The new `\DeclareExtradate` command allows users to track authoryear + disambiguation in arbitrary ways now, for example allowing disambiguation + at month or day level instead of just year. See the PDF doc for details. +- **INCOMPATIBLE CHANGE** Some bibmacros from the `authoryear` style family + were renamed, `cite:labelyear+extrayear` becomes `cite:labeldate+extradate`, + `cite:extrayear` is `cite:extradate` now, and `date+extrayear` + is `date+extradate`. Some backwards compatibility code is present, + but developers should make sure their code works as expected. + +## Date formatting +- The `mergedate` output has been restored to its earlier form, + it has also been extended to cover all EDTF date parts. + In order to facilitate this, a few date-related tests were introduced + `\iflabeldateisdate`, `\ifdatehasyearonlyprecision`, `\ifdatehastime` + and `\ifdateshavedifferentprecision`. +- The `authoryear` citation styles now use `\printlabeldateextra` + instead of `\printfield{labelyear}\printfield{extrayear}`. + This should have no consequences for end users (except that + dates in citations and bibliography don't differ any more - + previously there were subtle differences when many EDTF features + were used), but style developers should check if they assume + anything about the bibmacros that have now changed. + Style developers are invited to have a look at the changes and + to get inspired to offer full EDTF format for their styles as well. + +## Set handling +- Static entry sets used to have the behaviour that when citing a member of + a set, the data for the citation came from the set parent which was in + turn taken from the first member of the set. In most use cases, the only + part of the set parent data that was actually used was the labels but in + certain edge cases, other data was used which results in confusing + citations for set members. This has been refactored so that when citing + set members, the member data is used along with some labelling data + injected from the set parent. This means that things like + `\citeauthor{somesetmember}` now give the expected results. + *PLEASE NOTE* that this means that citing sets directly in default styles *not* + based on labels (`authoryear`, `authortitle`, `verbose` etc.) will result + in blank citations as it is not envisaged that sets are useful in such + styles. +- The members of a set can now be sorted according to the active + sorting scheme, this is enabled via the `sortsets` option. + By default the option is set to false and set members appear + in the order given in the data source. +- The `alphabetic` style family now also supports the `subentry` + option. + +## Localisation and styles +- Styles which supply their own location strings in `.lbx` files typically + use `\DeclareLanguageMapping` to map a document language to the supplied + language files. This is not ideal because the mapping has to be done by + the user depending on the specific language. For example, for the APA + style, in a document using American English, this line is necessary in + every document: + ``` + \DeclareLanguageMapping{american}{american-apa} + ``` + so that the style supplied `america-apa.lbx` file is loaded. + In a document using the German language, the user would have to use: + ``` + \DeclareLanguageMapping{german}{german-apa} + ``` + A new macro `\DeclareLanguageMappingSuffix` is now supplied which allows + styles to register a global localisation file suffix which is appended to + any document language automatically. This removes the need for + `\DeclareLanguageMapping` in user documents as it ensures that the + correct localisation file will be read nomatter what the document language. + For example, the APA style (from version v7.5) now has this + in `apa.bbx`: + ``` + \DeclareLanguageMappingSuffix{-apa} + ``` + which means that for a given document language `<lang>` + the localisation file `<lang>-apa.lbx` will be loaded. + `\DeclareLanguageMapping`, if present, will override + `\DeclareLanguageMappingSuffix`. + +## Context-sensitive delimiters +- Several delimiter macros now use the context-sensitive delimiter interface + introduced in version 3.4 (`\DeclareDelimFormat`). This change is fully + backwards compatible, but style developers should feel encouraged to use the + new commands `\DeclareDelimFormat` and `\printdelim`. +- Three new delimiters are introduced. `authortypedelim`, `editortypedelim`, + and `translatortypedelim` control the delimiter between the respective name + and the following `<name>` bibstring. + This together with `\DeclareFieldFormat{<name>type}` allows one to go from + 'E. Ditor, ed.' to 'E. Ditor (ed.)' more easily without the need + to redefine entire bibmacros. +- `\DeclareDelimAlias` allows one to alias one delimiter to another. + E.g. `\DeclareDelimAlias{finalnamedelim}{multinamedelim}` + will make `finalnamedelim` an alias for `multinamedelim`. + The starred version `\DeclareDelimAlias*` is local to the + specified contexts. + +## Misc changes +- The initialisation code for `\usedriver` can now be modified via + `\AtUsedriver`, the code can be executed with `\UseUsedriverHook`. + The default settings retain backwards compatibility with earlier + versions. +- The field `urlraw` contains the unencoded, raw version of the URL. + If the URL includes Unicode characters, `urlraw` will show them + unencoded while the standard `url` field will contain them in + percent-encoded form. +- `\mkpagetotal` now has its own bibstrings `<pagination>total(s)` + Previously it relied on the `<pagination>(s)` bibstrings. +- `sortyear` is now a literal field and not an integer. +- The `etextools` package is now officially incompatible. +- `bidi`-support for footnotes was improved. +- `\ifentryseen`, `\ifentryinbib`, `\ifentrycategory` + and `\ifentrykeyword` can now be used outside of + `biblatex` macros directly in the document. +- `\letbibmacro` can be used to create bibmacro aliases as if + using `\let`. +- `\DeprecateFieldWithReplacement`, `\DeprecateListWithReplacement` + and `\DeprecateNameWithReplacement` can be used to deprecate a field, + name or list and replace it with a new one. + +# RELEASE NOTES FOR VERSION 3.7 +## Requirements +Biber version 2.7 is required for biblatex 3.7 + +Bugfix release. + +# RELEASE NOTES FOR VERSION 3.6 +## Requirements +Biber version 2.6 is required for biblatex 3.6 + +This is a minor bugfix release. + +# RELEASE NOTES FOR VERSION 3.5 +## Requirements +Biber version 2.6 is required for biblatex 3.5 + +## Name support +- **INCOMPATIBLE CHANGE** The labelling system has been generalised + to be able to deal better with names. `\DeclareLabelalphaTemplate` no + longer uses hard-coded name parts (prefix, family) when extracting label + parts from name fields. Name field label extraction now obeys the new + `\DeclareLabelalphaNameTemplate` specification which details how to extract + label information from each namepart known to the data model. The default + setting is backwards compatible with the old hard-coded behaviour. + However, if you have custom `\DeclareLabelalphaTemplate` specifications, + you should note that the "pcompound" and "pstrwidth" options to `\field` + are now gone and replaced with the relevant settings on `\namepart` in + `\DeclareLabelalphaNameTemplate`. The old options will generate warnings. + It is too complex to provide backwards compat for this, sorry - please + update your templates if necessary. This is one of the last changes + needed to fully generalise name handling. + +## Date input and output +Major enhancements to the dates parsed by biblatex and the output formats +available. Biblatex now supports [[http://www.loc.gov/standards/datetime/pre-submission.html][EDTF]] level 0 and 1. This is an enhanced +ISO8601v2004 format suitable for bibliographic data. The new support is a +superset of the previous limited ISO8601 support. Times are now fully +supported in various formats as online sources become more common and time +specifications for such sources are increasingly important. Tests and +localisation strings are provided to use EDTF information about date +uncertainty, era, approximation etc. in styles. A new example document +(96-dates.tex) is provided which demonstrates the new features. See the PDF +manual and its changelog for details of usage. The new date format +functionality is backwards compatible. The following changes are more +detailed and mostly of interest to style authors: + +- The `iso8601` date output format is now called `edtf`. The old name will + automatically use `edtf` and issue a deprecation warning. +- `\bibdatedash` is now `\bibdaterangesep` as this name is more + informative and more descriptive of how it is actually used. A backwards + compat alias is provided. +- Pre-biblatex 2.0 legacy sorting scheme definition macros `\name` and + `\list` are now deprecated with warnings. +- **INCOMPATIBLE CHANGE** The `labeldate` option is renamed to + `labeldateparts`. The `datelabel` option is renamed to `labeldate` to + provide consistency with all other date options. Backwards compatibility + is provided and warnings will be issued. +- The new date system necessitated changes to the default year printing + routine for citations in the default authoryear styles. If you wish to + take advantage of the new date features like circa, uncertainty and eras, + when printing citations in authoryear styles, see the enhanced + `cite:labelyear+extrayear` macros in any of the default authoryear + styles. +- The `labelyear` field was inconsistently implemented and in fact could + sometimes contain a date range which made handling it rather difficult. + It is now guaranteed to contain only one year, when it is a copy of an + existing datepart field found by `\DeclareLabeldate` (`labelyear` can + contain a literal/bibstring or non date field too). A new field + `labelendyear` will contain the end of the labeldate year range. The same + applies to labelmonth and labelday. +- The internal macros `\mkbibrange*` have all been changed to + `\mkdaterange*` to make the name more obvious (since they only deal with + dates) and for consistency with the new `\mktimerange*` macros. These + macros are usually only used in style .lbx files and the old names will + generate a deprecation warning. +- The option `datezeros` was inconsistent as it did not enforce zeros when + set to 'true', it merely preserved the field. In the new date internals, + leading zeros are not present after date parsing as this should always be + a formatting/style decision. Now, `datezeros` enforces leading zeros and + also handles all date parts. +- `\mkdatezeros` has been replaced with `\mkyearzeros`, `\mkmonthzeros` and + `\mkdayzeros` due to the date internals changes which are more consistent + about integer formats of date parts. `\mkdatezeros` now generates a + deprecation warning and calls `\mkmonthzeros` which is backwards compatible + with its old behaviour. +- **INCOMPATIBLE CHANGE** The .bbl field `datelabelsource` has been renamed to + `labeldatesource` to prevent confusion with other fields. In the unlikely + event that you referenced this field in a style, please change the name. +- **INCOMPATIBLE CHANGE** The macro `\printdatelabel` has been renamed to + `\printlabeldate` in line with the naming of all other date printing + macros. Please use the new name. The old one will issue a deprecation warning. +- **INCOMPATIBLE CHANGE** The macro `\printdatelabelextra` has been renamed to + `\printlabeldateextra` in line with the naming of all other date printing + macros. Please use the new name. The old one will issue a deprecation warning. + +## Misc changes +- The experimental RIS format support is no longer available as it was + rarely used and made biber maintenance more complicated. RIS is a very + primitive format and not much use anyway. +- **INCOMPATIBLE CHANGE** The `singletitle` option no longer considers the + presence of labeltitle if labelname does not exist. This has always been + potentially confusing. For several versions now, there has been a + separate test and option for labeltitle called "uniquetitle". +- **INCOMPATIBLE CHANGE** The `sortgiveninits` option has been deprecated and + the functionality generalised. It is replaced by the "inits" option to + `\namepart` in `\DeclareSortingNamekeyScheme`. Any nameparts may now + therefore be sorted using initials only. +- **INCOMPATIBLE CHANGE** The sorting subsystem in biber has been completely + re-engineered to support better sorting of different datatypes. + Previously, due to bibtex limitations, all sorting was lexical, even for + numbers. This is why the padding options for things like volume in the + default sorting specifications existed - so that lexical sorts for + numbers would work. With the enhancement of the date parsing routines to + include negative years, in order to sort these properly, it was time to + switch to a better sorting method. As a result, the datatypes of fields + is now a bit stricter, as it should be. Expect more changes in this + direction but for this release, the datatype of the following fields in + the default data model have been changed to 'integer': + + - number + - sortyear + - volume + - volumes + + Integer datatypes no longer need padding or literal fallbacks in the + sorting scheme definitions since they are now sorted properly as + integers. Such datatype changes only effect sorting. + + |