summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/biblatex/CHANGES.md
blob: f904ea2094e17b1c17131be561d2b5ecb2dc8e3f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
# 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
- `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.
- 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.