# The Biblatex Package Manual

### biblatex_manual

User Manual:

Open the PDF directly: View PDF .
Page Count: 265

The Biblatex Package
Programmable Bibliographies and Citations
Philipp Lehman
(with Philip Kime, Audrey
Boruvka and Joseph Wright)

Version 2.9a
24/06/2014

Contents
List of Tables

1

1 Introduction
1.1 About . . . . . . .
1.2 License . . . . . .
1.3 Feedback . . . . .
1.4 Acknowledgments
1.5 Prerequisites . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

2
2
2
2
2
3

2 Database Guide
2.1 Entry Types . . .
2.2 Entry Fields . . .
2.3 Usage Notes . . .
2.4 Hints and Caveats

.
.
.
.

.
.
.
.

.
.
.
.

6
7
13
30
37

3 User Guide
3.1 Package Options . . . .
3.2 Global Customization .
3.3 Standard Styles . . . .
3.4 Related Entries . . . . .
3.5 Sorting Options . . . .
3.6 Bibliography Commands
3.7 Citation Commands . .
3.8 Localization Commands
3.9 Formatting Commands
3.10 Language notes . . . .
3.11 Usage Notes . . . . . .
3.12 Hints and Caveats . . .

4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11

Bibliography Styles . .
Citation Styles . . . . .
Data Interface . . . . .
Customization . . . . .
Auxiliary Commands .
Punctuation . . . . . .
Localization Strings . .
Localization Modules .
Formatting Commands
Hints and Caveats . . .

Appendix

124
137
140
147
177
196
202
204
217
230
244

A Default Driver Source Mappings
244
A.1 bibtex . . . . . . . . 245
A.2 endnotexml . . . . . 245
A.3 ris . . . . . . . . . . . 248
A.4 zoterordfxml . . . 249

44
45
63
63
68
70
71
83
94
95
103
105
116

B Default Inheritance Setup

251

C Default Sorting Schemes
253
C.1 Alphabetic 1 . . . . . . 253
C.2 Alphabetic 2 . . . . . . 253
C.3 Chronological . . . . . 254

4 Author Guide
121
4.1 Overview . . . . . . . . 121

D Option Scope

254

E Revision History

256

List of Tables
1 Biber/Biblatex compatibility
matrix . . . . . . . . . . . . .
2 Supported Languages . . . .
3 Date Speciﬁcations . . . . . .
4 Capacity of bibtex8 . . . .
5 Disambiguation counters . .

6
7
8
9
10

6
25
35
39
60

1

mcite-like commands .
mcite-like syntax . . . .
Date Interface . . . . . .
Field types for \nosort
\mkcomprange setup .

.
.
.
.
.

.
.
.
.
.

94
95
134
173
192

1 Introduction
This document is a systematic reference manual for the Biblatex package. Look at
the sample documents which ship with Biblatex to get a ﬁrst impression.1 For a
quick start guide, browse §§ 1.1, 2.1, 2.2, 2.3, 3.1, 3.3, 3.6, 3.7, 3.11.

This package provides advanced bibliographic facilities for use with LaTeX in conjunction with BibTeX. The package is a complete reimplementation of the bibliographic
facilities provided by LaTeX. A custom backend Biber by default is used which processes the BibTeX format data ﬁles and them performs all sorting, label generation
(and a great deal more). Legacy BibTeX is also supported as a backend, albeit with a
reduced feature set. Biblatex does not use the backend to format the bibliography
style ﬁles, the formatting of the bibliography is entirely controlled by TeX macros.
Good working knowledge in LaTeX should be suﬃcient to design new bibliography
and citation styles. There is no need to learn BibTeX’s postﬁx stack language. This
package also supports subdivided bibliographies, multiple bibliographies within
one document, and separate lists of bibliographic information such as abbreviations
of various ﬁelds. Bibliographies may be subdivided into parts and/or segmented
by topics. Just like the bibliography styles, all citation commands may be freely
deﬁned. With Biber as the backend, features such as customisable sorting, multiple
bibliographies with diﬀerent sorting, customisable labels, dynamic data modiﬁcation
are available. Please refer to § 1.5.5 for information on Biber/Biblatex version compatibility. The package is completely localized and can interface with the babel
package. Please refer to table 2 for a list of languages currently supported by this
package.

Joseph Wright. Permission is granted to copy, distribute and/or modify this software
under the terms of the LaTeX Project Public License, version 1.3.2

1.3 Feedback
Please use the Biblatex project page on GitHub to report bugs and submit feature
requests.3 Before making a feature request, please ensure that you have thoroughly
studied this manual. 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 comp.text.tex newsgroup or TeX-LaTeX Stack Exchange.4

1.4 Acknowledgments
The language modules of this package are made possible thanks to the following
contributors: Augusto Ritter Stoﬀel, Mateus Araújo (Brazilian); Sebastià Vila-Marta
(Catalan); Ivo Pletikosić (Croatian); Michal Hoftich (Czech); Johannes Wilm (Danish/Norwegian); Alexander van Loon, Pieter Belmans, Hendrik Maryns (Dutch);
1

\biblatexctan/doc/examples
http://www.ctan.org/tex-archive/macros/latex/base/lppl.txt
3
http://github.com/plk/biblatex
4
http://tex.stackexchange.com/questions/tagged/biblatex
2

2

Hannu Väisänen, Janne Kujanpää (Finnish); Denis Bitouzé (French); Apostolos Syropoulos, Prokopis (Greek); Baldur Kristinsson (Icelandic); Enrico Gregorio, Andrea
Marchitelli (Italian); Håkon Malmedal (Norwegian); Anastasia Kandulina, Yuriy
Chernyshov (Polish); José Carlos Santos (Portuguese); Oleg Domanov (Russian);
Tea Tušar and Bogdan Filipič (Slovene); Ignacio Fernández Galván (Spanish); Per
Starbäck, Carl-Gustav Werner, Filip Åsblom (Swedish).

1.5 Prerequisites
This section gives an overview of all resources required by this package and discusses
compatibility issues.
1.5.1 Requirements
The resources listed in this section are strictly required for Biblatex to function. The
package will not work if they are not available.
e-TeX

The Biblatex package requires e-TeX. TeX distributions have been shipping e-TeX
binaries for quite some time, the popular distributions use them by default these
days. The Biblatex package checks if it is running under e-TeX. Simply try compiling
your documents as you usually do, the chances are that it just works. If you get
an error message, try compiling the document with elatex instead of latex or

Biber

Biber is the default backend of Biblatex. You only need one backend, either BibTeX
or Biber. Biber comes with TeXLive and is also available from SourceForge.5 . There
are some slight diﬀerences in name parsing of ‘von’ parts with Biber as compared
with BibTeX which you probably won’t normally notice. Biber uses the btparse C
library for BibTeX format ﬁle parsing which aimed to be compatible with BibTeX’s
parsing rules but also aimed at correcting some of the common problems. For details,
see the manual page for the Perl Text::BibTeX module6 .

BibTeX

The Biblatex package can use legacy BibTeX as a data backend. While a legacy BibTeX
binary is suﬃcient to run Biblatex, using bibtex8 is recommended. If your TeX
distribution does not ship with bibtex8, you can get it from ctan.7

etoolbox This LaTeX package, which is loaded automatically, provides generic programming

facilities required by Biblatex. It is available from ctan.8

kvoptions

This LaTeX package, which is also loaded automatically, is used for internal option
handling. It is available with the oberdiek package bundle from ctan.9

logreq This LaTeX package, which is also loaded automatically, provides a frontend for

writing machine-readable messages to an auxiliary log ﬁle. It is available from
ctan.10
Apart from the above resources, Biblatex also requires the standard LaTeX packages
keyval and ifthen as well as the url package. These package are included in
all common TeX distributions and will be loaded automatically.
5

http://biblatex-biber.sourceforge.net/
http://search.cpan.org/~ambs/Text-BibTeX
7
http://www.ctan.org/tex-archive/biblio/bibtex/8-bit/
8
http://www.ctan.org/tex-archive/macros/latex/contrib/etoolbox/
9
http://www.ctan.org/pkg/kvoptions
10
http://www.ctan.org/tex-archive/macros/latex/contrib/logreq/
6

3

1.5.2 Recommended Packages
The packages listed in this section are not required for Biblatex to function, but
they provide recommended additional functions or enhance existing features. The
babel/polyglossia The babel and polyglossia packages provides the core architecture for multi-

lingual typesetting. If you are writing in a language other than American English,
using one of these packages is strongly recommended. If loaded, Biblatex package
will detect babel or polyglossia automatically.
csquotes If this package is available, Biblatex will use its language sensitive quotation facilities

to enclose certain titles in quotation marks. If not, Biblatex uses quotes suitable
for American English as a fallback. When writing in any other language, loading
csquotes is strongly recommended.11
xpatch

The xpatch package extends the patching commands of etoolbox to Biblatex
bibliography macros, drivers and formatting directives.12
1.5.3 Compatible Classes and Packages
The Biblatex package provides dedicated compatibility code for the classes and
packages listed in this section.

hyperref

The hyperref package transforms citations into hyperlinks. See the hyperref
and backref package options in § 3.1.2.1 for further details. When using the
hyperref package, it is preferable to load it after Biblatex.

showkeys

The showkeys package prints the internal keys of, among other things, citations in
the text and items in the bibliography. The package loading order does not matter.

memoir

When using the memoir class, the default bibliography headings are adapted such
that they blend well with the default layout of this class. See § 3.12.2 for further
usage hints.

KOMA-Script When using any of the scrartcl, scrbook, or scrreprt classes, the default

bibliography headings are adapted such that they blend with the default layout of
these classes. See § 3.12.1 for further usage hints.
1.5.4 Incompatible Packages
The packages listed in this section are not compatible with Biblatex. Since it reimplements the bibliographic facilities of LaTeX from the ground up, Biblatex naturally
conﬂicts with all packages modifying the same facilities. This is not speciﬁc to
Biblatex. Some of the packages listed below are also incompatible with each other
for the same reason.
babelbib

The babelbib package provides support for multilingual bibliographies. This
is a standard feature of Biblatex. Use the langid ﬁeld and the package option
autolang for similar functionality. Note that Biblatex automatically adjusts to
the main document language if babel or polyglossia is loaded. You only need
the above mentioned features if you want to switch languages on a per-entry basis
within the bibliography. See §§ 2.2.3 and 3.1.2.1 for details. Also see § 3.8.
11
12

http://www.ctan.org/tex-archive/macros/latex/contrib/csquotes/
http://www.ctan.org/tex-archive/macros/latex/contrib/xpatch/

4

backref The backref package creates back references in the bibliography. See the package

options hyperref and backref in § 3.1.2.1 for comparable functionality.
bibtopic

The bibtopic package provides support for bibliographies subdivided by topic,
type, or other criteria. For bibliographies subdivided by topic, see the category
feature in § 3.6.7 and the corresponding ﬁlters in § 3.6.2. Alternatively, you may use
the keywords ﬁeld in conjunction with the keyword and notkeyword ﬁlters
for comparable functionality, see §§ 2.2.3 and 3.6.2 for details. For bibliographies subdivided by type, use the type and nottype ﬁlters. Also see § 3.11.4 for examples.

bibunits

The bibunits package provides support for multiple partial (e. g., per chapter)
bibliographies. See chapterbib.

chapterbib The chapterbib package provides support for multiple partial bibliographies. Use

the refsection environment and the section ﬁlter for comparable functionality.
Alternatively, you might also want to use the refsegment environment and the
segment ﬁlter. See §§ 3.6.5, 3.6.6, 3.6.2 for details. Also see § 3.11.3 for examples.
cite The cite package automatically sorts numeric citations and can compress a list

of consecutive numbers to a range. It also makes the punctuation used in citations
conﬁgurable. For sorted and compressed numeric citations, see the sortcites
package option in § 3.1.2.1 and the numeric-comp citation style in § 3.3.1. For
conﬁgurable punctuation, see § 3.9.
citeref

Another package for creating back references in the bibliography. See backref.

inlinebib The inlinebib package is designed for traditional citations given in footnotes.

For comparable functionality, see the verbose citation styles in § 3.3.1.
jurabib

Originally designed for citations in law studies and (mostly German) judicial documents, the jurabib package also provides features aimed at users in the humanities.
In terms of the features provided, there are some similarities between jurabib
and Biblatex but the approaches taken by both packages are quite diﬀerent. Since
both jurabib and Biblatex are full-featured packages, the list of similarities and
diﬀerences is too long to be discussed here.

mcite The mcite package provides support for grouped citations, i. e., multiple items can

be cited as a single reference and listed as a single block in the bibliography. The
citation groups are deﬁned as the items are cited. This only works with unsorted
bibliographies. The Biblatex package also supports grouped citations, which are
called ‘entry sets’ or ‘reference sets’ in this manual. See §§ 3.11.5, 3.6.11, 3.7.10 for
details.
mciteplus A signiﬁcantly enhanced reimplementation of the mcite package which supports

grouping in sorted bibliographies. See mcite.
multibib The multibib package provides support for bibliographies subdivided by topic or

other criteria. See bibtopic.
natbib The natbib package supports numeric and author-year citation schemes, incorpo-

rating sorting and compression code found in the cite package. It also provides
additional citation commands and several conﬁguration options. See the numeric
and author-year citation styles and their variants in § 3.3.1, the sortcites
package option in § 3.1.2.1, the citation commands in § 3.7, and the facilities discussed
in §§ 3.6.8, 3.6.9, 3.9 for comparable functionality. Also see § 3.7.9.

5

Biber version

Biblatex version

1.9
1.8
1.7
1.6
1.5
1.4
1.3
1.2
1.1
1.0
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9

2.9
2.8
2.7
2.6
2.5
2.4
2.3
2.1, 2.2
2.1
2.0
1.7x
1.7x
1.7x
1.7x
1.6x
1.5x
1.5x
1.4x
1.4x
1.4x

Table 1: Biber/Biblatex compatibility matrix
splitbib The splitbib package provides support for bibliographies subdivided by topic.

See bibtopic.
titlesec The titlesec package redeﬁnes user-level document division commands such as

\chapter or \section. This approach is not compatible with internal command
changes applied by the Biblatex refsection and refsegment option settings
described in § 3.1.2.1.
ucs

The ucs package provides support for utf-8 encoded input. Either use inputenc’s
standard utf8 module or a Unicode enabled engine such as XeTeX or LuaTeX instead.
1.5.5 Compatibility Matrix for Biber
Biber versions are closely coupled with Biblatex versions. You need to have the
right combination of the two. Biber will warn you during processing if it encounters
information which comes from a Biblatex version which is incompatible. table 1

2 Database Guide
It is important to distinguish between BibTeX the program and BibTeX the ﬁle format.
Biblatex can be used with or without BibTeX the program since its default backend
Biber uses fully supports the BibTeX ﬁle format (bib) and users should be able to
move to Biblatex will little or no changes to their BibTeX data ﬁles when using Biber
as a backend. If using BibTeX as the data backend, note that you cannot use arbitrary
bst ﬁles because the package depends on a special BibTeX interface. When using
BibTeX as a backend, Biblatex uses its own special bst ﬁle only. The entry guide
below is backend agnostic unless otherwise stated.
This section describes the default data model deﬁned in the blx-dm.def ﬁle
which is part of biblatex. The data model is deﬁned using the macros documented
in § 4.5.3. It is possible to redeﬁne the data model which both Biblatex and Biber

6

use so that datasources can contain new entrytypes and ﬁelds (which of course will
need style support). The data model speciﬁcation also allows for constraints to be
deﬁned so that data sources can be validated against the data model (using Biber’s
--validate_datamodel option). Users who want to customise the data model
need to look at the blx-dm.def ﬁle and to read § 4.5.3.

2.1 Entry Types
This section gives an overview of the entry types supported by the default Biblatex
data model along with the ﬁelds supported by each type.
2.1.1 Regular Types
The lists below indicate the ﬁelds supported by each entry type. Note that the
mapping of ﬁelds to an entry type is ultimately at the discretion of the bibliography
style. The lists below therefore serve two purposes. They indicate the ﬁelds supported
by the standard styles which ship with this package and they also serve as a model
for custom styles. Note that the ‘required’ ﬁelds are not strictly required in all cases,
see § 2.3.2 for details. The ﬁelds marked as ‘optional’ are optional in a technical
sense. Bibliographical formatting rules usually require more than just the ‘required’
ﬁelds. The default data model deﬁned a few constraints for the format of date ﬁelds,
ISBNs and some special ﬁelds like gender but the constraints are only used if
validating against the data model with Biber’s --validate_datamodel option.
Generic ﬁelds like abstract and annotation or label and shorthand are
not included in the lists below because they are independent of the entry type. The
special ﬁelds discussed in § 2.2.3, which are also independent of the entry type, are
not included in the lists either. See the default data model speciﬁcation in the ﬁle
blx-dm.def which comes with Biblatex for a complete speciﬁcation.
article

An article in a journal, magazine, newspaper, or other periodical which forms a
self-contained unit with its own title. The title of the periodical is given in the
journaltitle ﬁeld. If the issue has its own title in addition to the main title of
the periodical, it goes in the issuetitle ﬁeld. Note that editor and related
ﬁelds refer to the journal while translator and related ﬁelds refer to the article.
Required ﬁelds: author, title, journaltitle, year/date
Optional ﬁelds: translator, annotator, commentator, subtitle,
titleaddon, editor, editora, editorb, editorc, journalsubtitle,
issuetitle, issuesubtitle, language, origlanguage, series,
volume, number, eid, issue, month, pages, version, note, issn,
addendum, pubstate, doi, eprint, eprintclass, eprinttype, url,
urldate

book A single-volume book with one or more authors where the authors share credit for

the work as a whole. This entry type also covers the function of the @inbook type
of traditional BibTeX, see § 2.3.1 for details.
Required ﬁelds: author, title, year/date

7

Optional ﬁelds: editor, editora, editorb, editorc, translator,
annotator, commentator, introduction, foreword, afterword,
language, origlanguage, volume, part, edition, volumes, series,
number, note, publisher, location, isbn, chapter, pages,
pagetotal, addendum, pubstate, doi, eprint, eprintclass,
eprinttype, url, urldate
mvbook

A multi-volume @book. For backwards compatibility, multi-volume books are also
supported by the entry type @book. However, it is advisable to make use of the
dedicated entry type @mvbook.
Required ﬁelds: author, title, year/date
Optional ﬁelds: editor, editora, editorb, editorc, translator,
annotator, commentator, introduction, foreword, afterword,
subtitle, titleaddon, language, origlanguage, edition, volumes,
series, number, note, publisher, location, isbn, pagetotal,
addendum, pubstate, doi, eprint, eprintclass, eprinttype, url,
urldate

inbook A part of a book which forms a self-contained unit with its own title. Note that the

proﬁle of this entry type is diﬀerent from standard BibTeX, see § 2.3.1.
Required ﬁelds: author, title, booktitle, year/date
Optional ﬁelds: bookauthor, editor, editora, editorb, editorc,
translator, annotator, commentator, introduction, foreword,
origlanguage, volume, part, edition, volumes, series, number,
note, publisher, location, isbn, chapter, pages, addendum,
pubstate, doi, eprint, eprintclass, eprinttype, url, urldate
bookinbook

This type is similar to @inbook but intended for works originally published as a
stand-alone book. A typical example are books reprinted in the collected works of
an author.

suppbook Supplemental material in a @book. This type is closely related to the @inbook

entry type. While @inbook is primarily intended for a part of a book with its own
title (e. g., a single essay in a collection of essays by the same author), this type is
provided for elements such as prefaces, introductions, forewords, afterwords, etc.
which often have a generic title only. Style guides may require such items to be
formatted diﬀerently from other @inbook items. The standard styles will treat this
entry type as an alias for @inbook.
booklet

A book-like work without a formal publisher or sponsoring institution. Use the ﬁeld
howpublished to supply publishing information in free format, if applicable. The
ﬁeld type may be useful as well.
Required ﬁelds: author/editor, title, year/date
Optional ﬁelds: subtitle, titleaddon, language, howpublished,
type, note, location, chapter, pages, pagetotal, addendum,
pubstate, doi, eprint, eprintclass, eprinttype, url, urldate

8

collection

A single-volume collection with multiple, self-contained contributions by distinct
authors which have their own title. The work as a whole has no overall author but it
will usually have an editor.
Required ﬁelds: editor, title, year/date
Optional ﬁelds: editora, editorb, editorc, translator, annotator,
commentator, introduction, foreword, afterword, subtitle,
origlanguage, volume, part, edition, volumes, series, number,
note, publisher, location, isbn, chapter, pages, pagetotal,
addendum, pubstate, doi, eprint, eprintclass, eprinttype, url,
urldate

mvcollection

A multi-volume @collection. For backwards compatibility, multi-volume collections are also supported by the entry type @collection. However, it is advisable
to make use of the dedicated entry type @mvcollection.
Required ﬁelds: editor, title, year/date
Optional ﬁelds: editora, editorb, editorc, translator, annotator,
commentator, introduction, foreword, afterword, subtitle,
titleaddon, language, origlanguage, edition, volumes, series,
number, note, publisher, location, isbn, pagetotal, addendum,
pubstate, doi, eprint, eprintclass, eprinttype, url, urldate

incollection

A contribution to a collection which forms a self-contained unit with a distinct author
and title. The author refers to the title, the editor to the booktitle, i. e.,
the title of the collection.
Required ﬁelds: author, title, booktitle, year/date
Optional ﬁelds: editor, editora, editorb, editorc, translator,
annotator, commentator, introduction, foreword, afterword,
part, edition, volumes, series, number, note, publisher,
location, isbn, chapter, pages, addendum, pubstate, doi, eprint,
eprintclass, eprinttype, url, urldate

suppcollection Supplemental material in a @collection. This type is similar to @suppbook but

related to the @collection entry type. The standard styles will treat this entry
type as an alias for @incollection.
manual

Technical or other documentation, not necessarily in printed form. The author or
editor is omissible in terms of § 2.3.2.
Required ﬁelds: author/editor, title, year/date
Optional ﬁelds: subtitle, titleaddon, language, edition, type,
series, number, version, note, organization, publisher,
location, isbn, chapter, pages, pagetotal, addendum, pubstate,
doi, eprint, eprintclass, eprinttype, url, urldate

misc

A fallback type for entries which do not ﬁt into any other category. Use the ﬁeld
howpublished to supply publishing information in free format, if applicable. The
ﬁeld type may be useful as well. author, editor, and year are omissible in
terms of § 2.3.2.

9

Required ﬁelds: author/editor, title, year/date
Optional ﬁelds: subtitle, titleaddon, language, howpublished,
type, version, note, organization, location, date, month, year,
addendum, pubstate, doi, eprint, eprintclass, eprinttype, url,
urldate
online

An online resource. author, editor, and year are omissible in terms of § 2.3.2.
This entry type is intended for sources such as web sites which are intrinsically
online resources. Note that all entry types support the url ﬁeld. For example, when
adding an article from an online journal, it may be preferable to use the @article
type and its url ﬁeld.
Required ﬁelds: author/editor, title, year/date, url
Optional ﬁelds: subtitle, titleaddon, language, version, note,
organization, date, month, year, addendum, pubstate, urldate

patent

A patent or patent request. The number or record token is given in the number
ﬁeld. Use the type ﬁeld to specify the type and the location ﬁeld to indicate the
scope of the patent, if diﬀerent from the scope implied by the type. Note that the
location ﬁeld is treated as a key list with this entry type, see § 2.2.1 for details.
Required ﬁelds: author, title, number, year/date
Optional ﬁelds: holder, subtitle, titleaddon, type, version,
location, note, date, month, year, addendum, pubstate, doi, eprint,
eprintclass, eprinttype, url, urldate

periodical An complete issue of a periodical, such as a special issue of a journal. The title of

the periodical is given in the title ﬁeld. If the issue has its own title in addition to
the main title of the periodical, it goes in the issuetitle ﬁeld. The editor is
omissible in terms of § 2.3.2.
Required ﬁelds: editor, title, year/date
Optional ﬁelds: editora, editorb, editorc, subtitle, issuetitle,
issuesubtitle, language, series, volume, number, issue, date,
month, year, note, issn, addendum, pubstate, doi, eprint,
eprintclass, eprinttype, url, urldate
suppperiodical Supplemental material in a @periodical. This type is similar to @suppbook

but related to the @periodical entry type. The role of this entry type may be
more obvious if you bear in mind that the @article type could also be called
@inperiodical. This type may be useful when referring to items such as regular
columns, obituaries, letters to the editor, etc. which only have a generic title. Style
guides may require such items to be formatted diﬀerently from articles in the strict
sense of the word. The standard styles will treat this entry type as an alias for
@article.
proceedings

A single-volume conference proceedings. This type is very similar to @collection.
It supports an optional organization ﬁeld which holds the sponsoring institution.
The editor is omissible in terms of § 2.3.2.
Required ﬁelds: title, year/date

10

Optional ﬁelds: editor, subtitle, titleaddon, maintitle,
eventdate, venue, language, volume, part, volumes, series,
number, note, organization, publisher, location, month, isbn,
chapter, pages, pagetotal, addendum, pubstate, doi, eprint,
eprintclass, eprinttype, url, urldate
mvproceedings A multi-volume @proceedings entry. For backwards compatibility, multi-volume

proceedings are also supported by the entry type @proceedings. However, it is
advisable to make use of the dedicated entry type @mvproceedings
Required ﬁelds: title, year/date
Optional ﬁelds: editor, subtitle, titleaddon, eventtitle,
eventtitleaddon, eventdate, venue, language, volumes, series,
number, note, organization, publisher, location, month, isbn,
pagetotal, addendum, pubstate, doi, eprint, eprintclass,
eprinttype, url, urldate
inproceedings

An article in a conference proceedings. This type is similar to @incollection. It
supports an optional organization ﬁeld.
Required ﬁelds: author, title, booktitle, year/date
Optional ﬁelds: editor, subtitle, titleaddon, maintitle,
volume, part, volumes, series, number, note, organization,
publisher, location, month, isbn, chapter, pages, addendum,
pubstate, doi, eprint, eprintclass, eprinttype, url, urldate

reference A single-volume work of reference such as an encyclopedia or a dictionary. This is a

more speciﬁc variant of the generic @collection entry type. The standard styles
will treat this entry type as an alias for @collection.
mvreference

A multi-volume @reference entry. The standard styles will treat this entry type
as an alias for @mvcollection. For backwards compatibility, multi-volume references are also supported by the entry type @reference. However, it is advisable
to make use of the dedicated entry type @mvreference.

inreference An article in a work of reference. This is a more speciﬁc variant of the generic

@incollection entry type. The standard styles will treat this entry type as an
alias for @incollection.
report A technical report, research report, or white paper published by a university or some

other institution. Use the type ﬁeld to specify the type of report. The sponsoring
institution goes in the institution ﬁeld.
Required ﬁelds: author, title, type, institution, year/date
Optional ﬁelds: subtitle, titleaddon, language, number, version,
note, location, month, isrn, chapter, pages, pagetotal, addendum,
pubstate, doi, eprint, eprintclass, eprinttype, url, urldate
set An entry set. This entry type is special, see § 3.11.5 for details.
thesis A thesis written for an educational institution to satisfy the requirements for a degree.

Use the type ﬁeld to specify the type of thesis.

11

Required ﬁelds: author, title, type, institution, year/date
Optional ﬁelds: subtitle, titleaddon, language, note, location,
month, isbn, chapter, pages, pagetotal, addendum, pubstate, doi,
eprint, eprintclass, eprinttype, url, urldate
unpublished

A work with an author and a title which has not been formally published, such as
a manuscript or the script of a talk. Use the ﬁelds howpublished and note to
supply additional information in free format, if applicable.
Required ﬁelds: author, title, year/date
Optional ﬁelds: subtitle, titleaddon, language, howpublished,
note, location, isbn, date, month, year, addendum, pubstate, url,
urldate

xdata This entry type is special. @xdata entries hold data which may be inherited by other

entries using the xdata ﬁeld. Entries of this type only serve as data containers;
they may not be cited or added to the bibliography. See § 3.11.6 for details.
custom[a–f]

Custom types for special bibliography styles. Not used by the standard styles.
2.1.2 Type Aliases
The entry types listed in this section are provided for backwards compatibility with
traditional BibTeX styles. These aliases are resolved by the backend as the data is
processed. Bibliography styles will see the entry type the alias points to, not the
alias name. All unknown entry types are generally exported as @misc.

conference A BibTeX legacy alias for @inproceedings.
electronic
mastersthesis

An alias for @online.
Similar to @thesis except that the type ﬁeld is optional and defaults to the
localized term ‘Master’s thesis’. You may still use the type ﬁeld to override that.

phdthesis Similar to @thesis except that the type ﬁeld is optional and defaults to the

localized term ‘PhD thesis’. You may still use the type ﬁeld to override that.
techreport
www

Similar to @report except that the type ﬁeld is optional and defaults to the
localized term ‘technical report’. You may still use the type ﬁeld to override that.
An alias for @online, provided for jurabib compatibility.
2.1.3 Unsupported Types
The types in this section are similar to the custom types @custom[a–f], i. e., the
standard bibliography styles provide no support for these types. When using the
standard styles, they will be treated as @misc entries.

artwork Works of the visual arts such as paintings, sculpture, and installations.
audio Audio recordings, typically on audio cd, dvd, audio cassette, or similar media. See

also @music.

12

Biber only

bibnote

This special entry type is not meant to be used in the bib ﬁle like other types. It is
provided for third-party packages like notes2bib which merge notes into the bibliography. The notes should go into the note ﬁeld. Be advised that the @bibnote
type is not related to the \defbibnote command in any way. \defbibnote
is for adding comments at the beginning or the end of the bibliography, whereas
the @bibnote type is meant for packages which render endnotes as bibliography
entries.

commentary Commentaries which have a status diﬀerent from regular books, such as legal com-

mentaries.
image Images, pictures, photographs, and similar media.
jurisdiction

Court decisions, court recordings, and similar things.

legislation

Laws, bills, legislative proposals, and similar things.

legal Legal documents such as treaties.
letter

Personal correspondence such as letters, emails, memoranda, etc.

music
performance

Musical recordings. This is a more speciﬁc variant of @audio.
Musical and theatrical performances as well as other works of the performing arts.
This type refers to the event as opposed to a recording, a score, or a printed play.

review Reviews of some other work. This is a more speciﬁc variant of the @article type.

The standard styles will treat this entry type as an alias for @article.
software

Computer software.

standard

National and international standards issued by a standards body such as the International Organization for Standardization.

video

Audiovisual recordings, typically on dvd, vhs cassette, or similar media. See also
@movie.

2.2 Entry Fields
This section gives an overview of the ﬁelds supported by the Biblatex default data
model. See § 2.2.1 for an introduction to the data types used by the data model
speciﬁcation and §§ 2.2.2 and 2.2.3 for the actual ﬁeld listings.
2.2.1 Data Types
In datasources such as a bib ﬁle, all bibliographic data is speciﬁed in ﬁelds. Some of
those ﬁelds, for example author and editor, may contain a list of items. This list
structure is implemented by the BibTeX ﬁle format via the keyword ‘and’, which is
used to separate the individual items in the list. The Biblatex package implements
three distinct data types to handle bibliographic data: name lists, literal lists, and
ﬁelds. There are also several list and ﬁeld subtypes and a content type which can be
used to semantically distinguish ﬁelds which are otherwise not distinguishable on
the basis of only their datatype (see § 4.5.3). This section gives an overview of the
data types supported by this package. See §§ 2.2.2 and 2.2.3 for information about
the mapping of the BibTeX ﬁle format ﬁelds to Biblatex’s data types.

13

Name lists are parsed and split up into the individual items at the and delimiter.
Each item in the list is then dissected into four name components: the ﬁrst
name, the name preﬁx (von, van, of, da, de, della, …), the last name, and the
name suﬃx (junior, senior, …). Name lists may be truncated in the bib ﬁle
with the keyword ‘and others’. Typical examples of name lists are author
and editor.
Literal lists are parsed and split up into the individual items at the and delimiter
but not dissected further. Literal lists may be truncated in the bib ﬁle with
the keyword ‘and others’. There are two subtypes:
Literal lists in the strict sense are handled as described above. The individual
items are simply printed as is. Typical examples of such literal lists are
publisher and location.
Key lists are a variant of literal lists which may hold printable data or localization keys. For each item in the list, a test is performed to determine
whether it is a known localization key (the localization keys deﬁned by
default are listed in § 4.9.2). If so, the localized string is printed. If not,
the item is printed as is. A typical example of a key list is language.
Fields are usually printed as a whole. There are several subtypes:
Literal fields are printed as is. Typical examples of literal ﬁelds are title
and note.
Range fields consist of one or more ranges where all dashes are normalized
and replaced by the command \bibrangedash. A range is something
optionally followed by one or more dashes optionally followed by some
non-dash (e.g. 5–7). Any number of consecutive dashes will only yield
a single range dash. A typical example of a range ﬁeld is the pages
customise the separator between multiple ranges. With Biber, range
ﬁelds will be skipped and will generate a warning if they do not consist
of one or more ranges. You can normalise messy range ﬁelds before they
are parsed using \DeclareSourcemap (see § 4.5.2).
Integer fields hold unformatted integers which may be converted to ordinals
or strings as they are printed. A typical example is the extrayear ﬁeld.
Datepart fields hold unformatted integers which may be converted to ordinals or strings as they are printed. A typical example is the month
ﬁeld.
Date fields hold a date speciﬁcation in yyyy-mm-dd format or a date range
in yyyy-mm-dd/yyyy-mm-dd format. Date ﬁelds are special in that
the date is parsed and split up into its components. See § 2.3.8 for details.
A typical example is the date ﬁeld.
Verbatim fields are processed in verbatim mode and may contain special
characters. Typical examples of verbatim ﬁelds are file and doi.
URI fields are processed in verbatim mode and may contain special characters. They are also URL-escaped if they don’t look like they already are.
The typical example of a uri ﬁeld is url.
Separated value fields A separated list of literal values. Examples are the
keywords and options ﬁelds. The separator is always a comma when

14

Biber only

using BibTeX as the backend but can be conﬁgured to be any Perl regular
expression when using Biber via the xsvsep option which defaults to
the usual BibTeX comma surrounded by optional whitespace.
Pattern fields A literal ﬁeld which must match a particular pattern. An
example is the gender ﬁeld from § 2.2.3.
Key fields May hold printable data or localization keys. A test is performed
to determine whether the value of the ﬁeld is a known localization key
(the localization keys deﬁned by default are listed in § 4.9.2). If so, the
localized string is printed. If not, the value is printed as is. A typical
example is the type ﬁeld.
Code fields Holds TeX code.
2.2.2 Data Fields
The ﬁelds listed in this section are the regular ones holding printable data in the
default data model. The name on the left is the default data model name of the ﬁeld
as used by Biblatex and its backend. The Biblatex data type is given to the right of
the name. See § 2.2.1 for explanation of the various data types.
Some ﬁelds are marked as ‘Label ﬁelds’ which means that they are often used as
abbreviation labels when printing bibliography lists in the sense of section § 3.6.4.
Biblatex automatically creates supporting macros for such ﬁelds. See § 3.6.4.
abstract ﬁeld (literal)

This ﬁeld is intended for recording abstracts in a bib ﬁle, to be printed by a special
bibliography style. It is not used by all standard bibliography styles.

ﬁeld (literal)
Miscellaneous bibliographic data to be printed at the end of the entry. This is similar
to the note ﬁeld except that it is printed at the end of the bibliography entry.

afterword list (name)

The author(s) of an afterword to the work. If the author of the afterword is identical
to the editor and/or translator, the standard styles will automatically concatenate these ﬁelds in the bibliography. See also introduction and foreword.
annotation

ﬁeld (literal)
This ﬁeld may be useful when implementing a style for annotated bibliographies.
It is not used by all standard bibliography styles. Note that this ﬁeld is completely
unrelated to annotator. The annotator is the author of annotations which are
part of the work cited.

annotator list (name)

The author(s) of annotations to the work. If the annotator is identical to the editor
and/or translator, the standard styles will automatically concatenate these ﬁelds
author list (name)

The author(s) of the title.

15

Biber only

authortype ﬁeld (key)

The type of author. This ﬁeld will aﬀect the string (if any) used to introduce the
author. Not used by the standard bibliography styles.
bookauthor

list (name)
The author(s) of the booktitle.

bookpagination

ﬁeld (key)
If the work is published as part of another one, this is the pagination scheme of the enclosing work, i. e., bookpagination relates to pagination like booktitle
to title. The value of this ﬁeld will aﬀect the formatting of the pages and
pagetotal ﬁelds. The key should be given in the singular form. Possible
pagination as well as § 2.3.10.

booksubtitle

ﬁeld (literal)
The subtitle related to the booktitle. If the subtitle ﬁeld refers to a work
which is part of a larger publication, a possible subtitle of the main work is given in

booktitle

ﬁeld (literal)
If the title ﬁeld indicates the title of a work which is part of a larger publication,
the title of the main work is given in this ﬁeld. See also title.

An annex to the booktitle, to be printed in a diﬀerent font.
chapter

ﬁeld (literal)
A chapter or section or any other unit of a work.

commentator list (name)

The author(s) of a commentary to the work. Note that this ﬁeld is intended for
commented editions which have a commentator in addition to the author. If the
work is a stand-alone commentary, the commentator should be given in the author
ﬁeld. If the commentator is identical to the editor and/or translator, the
standard styles will automatically concatenate these ﬁelds in the bibliography. See
also annotator.
date ﬁeld (date)

The publication date. See also month and year as well as § 2.3.8.
doi ﬁeld (verbatim)

The Digital Object Identiﬁer of the work.
edition

ﬁeld (integer or literal)
The edition of a printed publication. This must be an integer, not an ordinal. Don’t say
edition={First} or edition={1st} but edition={1}. The bibliography
style converts this to a language dependent ordinal. It is also possible to give the
edition as a literal string, for example “Third, revised and expanded edition”.

16

editor list (name)

The editor(s) of the title, booktitle, or maintitle, depending on the entry
type. Use the editortype ﬁeld to specify the role if it is diﬀerent from ‘editor’.
See § 2.3.6 for further hints.
editora list (name)

A secondary editor performing a diﬀerent editorial role, such as compiling, redacting,
etc. Use the editoratype ﬁeld to specify the role. See § 2.3.6 for further hints.
editorb list (name)

Another secondary editor performing a diﬀerent role. Use the editorbtype ﬁeld
to specify the role. See § 2.3.6 for further hints.
editorc

list (name)
Another secondary editor performing a diﬀerent role. Use the editorctype ﬁeld
to specify the role. See § 2.3.6 for further hints.

editortype

ﬁeld (key)
The type of editorial role performed by the editor. Roles supported by default are
editor, compiler, founder, continuator, redactor, reviser, collaborator. The role ‘editor’ is the default. In this case, the ﬁeld is omissible.
See § 2.3.6 for further hints.

editoratype

ﬁeld (key)
Similar to editortype but referring to the editora ﬁeld. See § 2.3.6 for further
hints.

editorbtype ﬁeld (key)

Similar to editortype but referring to the editorb ﬁeld. See § 2.3.6 for further
hints.
editorctype ﬁeld (key)

Similar to editortype but referring to the editorc ﬁeld. See § 2.3.6 for further
hints.
eid ﬁeld (literal)

The electronic identiﬁer of an @article.
entrysubtype ﬁeld (literal)

This ﬁeld, which is not used by the standard styles, may be used to specify a subtype
of an entry type. This may be useful for bibliography styles which support a ﬁnergrained set of entry types.
eprint ﬁeld (verbatim)

The electronic identiﬁer of an online publication. This is roughly comparable to a
doi but speciﬁc to a certain archive, repository, service, or system. See § 3.11.7 for
details. Also see eprinttype and eprintclass.

17

eprintclass ﬁeld (literal)

Additional information related to the resource indicated by the eprinttype ﬁeld.
This could be a section of an archive, a path indicating a service, a classiﬁcation of
some sort, etc. See § 3.11.7 for details. Also see eprint and eprinttype.
eprinttype

ﬁeld (literal)
The type of eprint identiﬁer, e. g., the name of the archive, repository, service, or
system the eprint ﬁeld refers to. See § 3.11.7 for details. Also see eprint and
eprintclass.

eventdate

ﬁeld (date)
The date of a conference, a symposium, or some other event in @proceedings
and @inproceedings entries. This ﬁeld may also be useful for the custom types
listed in § 2.1.3. See also eventtitle and venue as well as § 2.3.8.

eventtitle

ﬁeld (literal)
The title of a conference, a symposium, or some other event in @proceedings and
@inproceedings entries. This ﬁeld may also be useful for the custom types listed
in § 2.1.3. Note that this ﬁeld holds the plain title of the event. Things like “Proceedings of the Fifth XYZ Conference” go into the titleaddon or booktitleaddon

An annex to the eventtitle ﬁeld. Can be used for known event acronyms, for
example.
file

ﬁeld (verbatim)
A local link to a pdf or other version of the work. Not used by the standard bibliography styles.

foreword

list (name)
The author(s) of a foreword to the work. If the author of the foreword is identical to the
editor and/or translator, the standard styles will automatically concatenate

holder list (name)

The holder(s) of a @patent, if diﬀerent from the author. Not that corporate
holders need to be wrapped in an additional set of braces, see § 2.3.3 for details. This
list may also be useful for the custom types listed in § 2.1.3.
howpublished

ﬁeld (literal)
A publication notice for unusual publications which do not ﬁt into any of the common
categories.

indextitle

ﬁeld (literal)
A title to use for indexing instead of the regular title ﬁeld. This ﬁeld may be useful
if you have an entry with a title like “An Introduction to …” and want that indexed
as “Introduction to …, An”. Style authors should note that Biblatex automatically
copies the value of the title ﬁeld to indextitle if the latter ﬁeld is undeﬁned.

18

institution

list (literal)
The name of a university or some other institution, depending on the entry type.
Traditional BibTeX uses the ﬁeld name school for theses, which is supported as an

introduction list (name)

The author(s) of an introduction to the work. If the author of the introduction is
identical to the editor and/or translator, the standard styles will automatically
isan ﬁeld (literal)

The International Standard Audiovisual Number of an audiovisual work. Not used
by the standard bibliography styles.
isbn ﬁeld (literal)

The International Standard Book Number of a book.
ismn

ﬁeld (literal)
The International Standard Music Number for printed music such as musical scores.
Not used by the standard bibliography styles.

isrn

ﬁeld (literal)
The International Standard Technical Report Number of a technical report.

issn ﬁeld (literal)

The International Standard Serial Number of a periodical.
issue ﬁeld (literal)

The issue of a journal. This ﬁeld is intended for journals whose individual issues
are identiﬁed by a designation such as ‘Spring’ or ‘Summer’ rather than the month
or a number. Since the placement of issue is similar to month and number, this
ﬁeld may also be useful with double issues and other special cases. See also month,
number, and § 2.3.9.
issuesubtitle ﬁeld (literal)

The subtitle of a speciﬁc issue of a journal or other periodical.
issuetitle

ﬁeld (literal)
The title of a speciﬁc issue of a journal or other periodical.

iswc ﬁeld (literal)

The International Standard Work Code of a musical work. Not used by the standard
bibliography styles.
journalsubtitle

ﬁeld (literal)
The subtitle of a journal, a newspaper, or some other periodical.

19

journaltitle

ﬁeld (literal)
The name of a journal, a newspaper, or some other periodical.

label

ﬁeld (literal)
A designation to be used by the citation style as a substitute for the regular label if
any data required to generate the regular label is missing. For example, when an
author-year citation style is generating a citation for an entry which is missing the
author or the year, it may fall back to label. See § 2.3.2 for details. Note that, in
contrast to shorthand, label is only used as a fallback. See also shorthand.

language

list (key)
The language(s) of the work. Languages may be speciﬁed literally or as localization keys. If localization keys are used, the preﬁx lang is omissible. See also
origlanguage and compare langid in § 2.2.3.

library

ﬁeld (literal)
This ﬁeld may be useful to record information such as a library name and a call
number. This may be printed by a special bibliography style if desired. Not used by
the standard bibliography styles.

location list (literal)

The place(s) of publication, i. e., the location of the publisher or institution,
depending on the entry type. Traditional BibTeX uses the ﬁeld name address,
which is supported as an alias. See also §§ 2.2.5 and 2.3.4. With @patent entries,
this list indicates the scope of a patent. This list may also be useful for the custom
types listed in § 2.1.3.
mainsubtitle

ﬁeld (literal)

maintitle ﬁeld (literal)

The main title of a multi-volume book, such as Collected Works. If the title or
booktitle ﬁeld indicates the title of a single volume which is part of multi-volume
book, the title of the complete work is given in this ﬁeld.

ﬁeld (literal)
An annex to the maintitle, to be printed in a diﬀerent font.

month ﬁeld (datepart)

The publication month. This must be an integer, not an ordinal or a string. Don’t
say month={January} but month={1}. The bibliography style converts this to
a language dependent string or ordinal where required. See also date as well as
§§ 2.3.9 and 2.3.8.

An addon to be printed immediately after the author name in the bibliography. Not
used by the standard bibliography styles. This ﬁeld may be useful to add an alias or
pen name (or give the real name if the pseudonym is commonly used to refer to that
author).

20

note ﬁeld (literal)

Miscellaneous bibliographic data which does not ﬁt into any other ﬁeld. The note
ﬁeld may be used to record bibliographic data in a free format. Publication facts such
as “Reprint of the edition London 1831” are typical candidates for the note ﬁeld.
number

ﬁeld (literal)
The number of a journal or the volume/number of a book in a series. See also
issue as well as §§ 2.3.7 and 2.3.9. With @patent entries, this is the number or
record token of a patent or patent request.

organization

list (literal)
The organization(s) that published a @manual or an @online resource, or sponsored a conference. See also § 2.3.4.

origdate

ﬁeld (date)
If the work is a translation, a reprint, or something similar, the publication date of
the original edition. Not used by the standard bibliography styles. See also date.

origlanguage

ﬁeld (key)
If the work is a translation, the language of the original work. See also language.

origlocation

list (literal)
If the work is a translation, a reprint, or something similar, the location of the
original edition. Not used by the standard bibliography styles. See also location
and § 2.3.4.

origpublisher list (literal)

If the work is a translation, a reprint, or something similar, the publisher of the
original edition. Not used by the standard bibliography styles. See also publisher
and § 2.3.4.
origtitle

ﬁeld (literal)
If the work is a translation, the title of the original work. Not used by the standard

pages

ﬁeld (range)
One or more page numbers or page ranges. If the work is published as part of another
one, such as an article in a journal or a collection, this ﬁeld holds the relevant page
range in that other work. It may also be used to limit the reference to a speciﬁc part
of a work (a chapter in a book, for example).

pagetotal ﬁeld (literal)

The total number of pages of the work.
pagination ﬁeld (key)

The pagination of the work. The value of this ﬁeld will aﬀect the formatting the
hpostnotei argument to a citation command. The key should be given in the singular
form. Possible keys are page, column, line, verse, section, and paragraph. See also bookpagination as well as §§ 2.3.10 and 3.12.3.

21

part ﬁeld (literal)

The number of a partial volume. This ﬁeld applies to books only, not to journals. It
may be used when a logical volume consists of two or more physical ones. In this
case the number of the logical volume goes in the volume ﬁeld and the number of
the part of that volume in the part ﬁeld. See also volume.
publisher

list (literal)

pubstate ﬁeld (key)

The publication state of the work, e. g., ‘in press’. See § 4.9.2.11 for known publication
states.
reprinttitle

ﬁeld (literal)
The title of a reprint of the work. Not used by the standard styles.

BibTeX only

series ﬁeld (literal)

The name of a publication series, such as “Studies in …”, or the number of a journal
series. Books in a publication series are usually numbered. The number or volume of
a book in a series is given in the number ﬁeld. Note that the @article entry type
makes use of the series ﬁeld as well, but handles it in a special way. See § 2.3.7
for details.
shortauthor

list (name)

Label field

The author(s) of the work, given in an abbreviated form. This ﬁeld is mainly intended
for abbreviated forms of corporate authors, see § 2.3.3 for details.
shorteditor list (name)

Label field

The editor(s) of the work, given in an abbreviated form. This ﬁeld is mainly intended
for abbreviated forms of corporate editors, see § 2.3.3 for details.
shorthand ﬁeld (literal)

Label field

A special designation to be used by the citation style instead of the usual label. If
shorthandintro ﬁeld (literal)

The verbose citation styles which comes with this package use a phrase like “henceforth cited as [shorthand]” to introduce shorthands on the ﬁrst citation. If the
shorthandintro ﬁeld is deﬁned, it overrides the standard phrase. Note that the
alternative phrase must include the shorthand.
shortjournal ﬁeld (literal)

Label field

A short version or an acronym of the journaltitle. Not used by the standard
bibliography styles.
shortseries ﬁeld (literal)

Label field

A short version or an acronym of the series ﬁeld. Not used by the standard
bibliography styles.

22

shorttitle ﬁeld (literal)

Label field

The title in an abridged form. This ﬁeld is usually not included in the bibliography.
It is intended for citations in author-title format. If present, the author-title citation
styles use this ﬁeld instead of title.
subtitle

ﬁeld (literal)
The subtitle of the work.

title ﬁeld (literal)

The title of the work.

ﬁeld (literal)
An annex to the title, to be printed in a diﬀerent font.

translator

list (name)
The translator(s) of the title or booktitle, depending on the entry type. If
the translator is identical to the editor, the standard styles will automatically
concatenate these ﬁelds in the bibliography.

type ﬁeld (key)

The type of a manual, patent, report, or thesis. This ﬁeld may also be useful
for the custom types listed in § 2.1.3.
url

ﬁeld (uri)
The url of an online publication. If it is not URL-escaped (no ‘%’ chars), with Biber,
it will be URI-escaped according to RFC 3987, that is, even Unicode chars will be
correctly escaped.

urldate

ﬁeld (date)

venue

ﬁeld (literal)
The location of a conference, a symposium, or some other event in @proceedings
and @inproceedings entries. This ﬁeld may also be useful for the custom types
listed in § 2.1.3. Note that the location list holds the place of publication. It
therefore corresponds to the publisher and institution lists. The location
of the event is given in the venue ﬁeld. See also eventdate and eventtitle.

version ﬁeld (literal)

The revision number of a piece of software, a manual, etc.
volume ﬁeld (literal)

The volume of a multi-volume book or a periodical. See also part.
volumes

ﬁeld (literal)
The total number of volumes of a multi-volume work. Depending on the entry type,
this ﬁeld refers to title or maintitle.

year

ﬁeld (literal)

23

2.2.3 Special Fields
The ﬁelds listed in this section do not hold printable data but serve a diﬀerent purpose.
They apply to all entry types in the default data model.
crossref

ﬁeld (entry key)
This ﬁeld holds an entry key for the cross-referencing feature. Child entries with
a crossref ﬁeld inherit data from the parent entry speciﬁed in the crossref
ﬁeld. If the number of child entries referencing a speciﬁc parent entry hits a certain
threshold, the parent entry is automatically added to the bibliography even if it
has not been cited explicitly. The threshold is settable with the mincrossrefs
package option from § 3.1.2.1. Style authors should note that whether or not the
crossref ﬁelds of the child entries are deﬁned on the Biblatex level depends on
the availability of the parent entry. If the parent entry is available, the crossref
ﬁelds of the child entries will be deﬁned. If not, the child entries still inherit the
data from the parent entry but their crossref ﬁelds will be undeﬁned. Whether
the parent entry is added to the bibliography implicitly because of the threshold or
explicitly because it has been cited does not matter. See also the xref ﬁeld in this
section as well as § 2.4.1.

entryset

ﬁeld (separated values)
This ﬁeld is speciﬁc to entry sets. See § 3.11.5 for details. This ﬁeld is consumed by
the backend processing and does not appear in the .bbl.

execute ﬁeld (code)

A special ﬁeld which holds arbitrary TeX code to be executed whenever the data of the
respective entry is accessed. This may be useful to handle special cases. Conceptually,
this ﬁeld is comparable to the hooks \AtEveryBibitem, \AtEveryLositem,
and \AtEveryCitekey from § 4.10.6, except that it is deﬁnable on a per-entry
basis in the bib ﬁle. Any code in this ﬁeld is executed automatically immediately
after these hooks.
gender

ﬁeld (Pattern matching one of: sf, sm, sn, pf, pm, pn, pp)
The gender of the author or the gender of the editor, if there is no author. The
following identiﬁers are supported: sf (feminine singular, a single female name), sm
(masculine singular, a single male name), sn (neuter singular, a single neuter name),
pf (feminine plural, a list of female names), pm (masculine plural, a list of male
names), pn (neuter plural, a list of neuter names), pp (plural, a mixed gender list of
names). This information is only required by special bibliography and citation styles
and only in certain languages. For example, a citation style may replace recurrent
author names with a term such as ‘idem’. If the Latin word is used, as is custom in
English and French, there is no need to specify the gender. In German publications,
however, such key terms are usually given in German and in this case they are
gender-sensitive.

langid

ﬁeld (identiﬁer)
The language id of the bibliography entry. The alias hyphenation is provided
for backwards compatibility. The identiﬁer must be a language name known to
the babel/polyglossia packages. This information may be used to switch
hyphenation patterns and localize strings in the bibliography. Note that the language

24

Language

Region/Dialect

Identifiers

Catalan
Croatian
Czech
Danish
Dutch
English

Spain, France, Andorra, Italy
Croatia, Bosnia and Herzegovina, Serbia
Czech Republic
Denmark
Netherlands
USA

catalan
croatian
czech
danish
dutch
american,
USenglish,
english
british, UKenglish
australian
newzealand
finnish
french
german
austrian
ngerman
naustrian
greek
italian
norwegian,
norsk,
nynorsk
polish
brazil
portuguese, portuges
russian
slovene
spanish
swedish

Finnish
French
German
German (new)
Greek
Italian
Norwegian
Polish
Portuguese
Russian
Slovene
Spanish
Swedish

United Kingdom
Australia
New Zealand
Finland
Germany
Austria
Germany
Austria
Greece
Italy
Norway
Poland
Brazil
Portugal
Russia
Slovenian
Spain
Sweden

Table 2: Supported Languages

25

names are case sensitive. The languages currently supported by this package are
given in table 2. Note that babel treats the identiﬁer english as an alias for
british or american, depending on the babel version. The Biblatex package
always treats it as an alias for american. It is preferable to use the language
identiﬁers american and british (babel) or a language speciﬁc option to
specify a language variant (polyglossia, using the langidopts ﬁeld) to avoid
any possible confusion. Compare language in § 2.2.2.
langidopts ﬁeld (literal)

For polyglossia users, allows per-entry language speciﬁc options. The literal
value of this ﬁeld is passed to polyglossia’s language switching facility when
using the package option autolang=langname. For example, the ﬁelds:
langid
langidopts

= {english},
= {variant=british},

would wrap the bibliography entry in:
\english[variant=british]
...
\endenglish
ids ﬁeld (separated list of entrykeys)

Biber only

Citation key aliases for the main citation key. An entry may be cited by any of its
aliases and Biblatex will treat the citation as if it had used the primary citation key.
This is to aid users who change their citation keys but have legacy documents which
use older keys for the same entry. This ﬁeld is consumed by the backend processing
and does not appear in the .bbl.
indexsorttitle ﬁeld (literal)

The title used when sorting the index. In contrast to indextitle, this ﬁeld is used
for sorting only. The printed title in the index is the indextitle or the title
ﬁeld. This ﬁeld may be useful if the title contains special characters or commands
which interfere with the sorting of the index. Consider this example:
title
= {The \LaTeX\ Companion},
indextitle
= {\LaTeX\ Companion, The},
indexsorttitle = {LATEX Companion},
Style authors should note that Biblatex automatically copies the value of either
the indextitle or the title ﬁeld to indexsorttitle if the latter ﬁeld is
undeﬁned.
keywords

ﬁeld (separated values)
A separated list of keywords. These keywords are intended for the bibliography
ﬁlters (see §§ 3.6.2 and 3.11.4), they are usually not printed. Note that with the default
separator (comma), spaces around the separator are ignored.

26

options ﬁeld (separated hkeyi=hvaluei options)

A separated list of entry options in hkeyi=hvaluei notation. This ﬁeld is used to
set options on a per-entry basis. See § 3.1.3 for details. Note that citation and
bibliography styles may deﬁne additional entry options.
presort

ﬁeld (string)
A special ﬁeld used to modify the sorting order of the bibliography. This ﬁeld is
the ﬁrst item the sorting routine considers when sorting the bibliography, hence it
may be used to arrange the entries in groups. This may be useful when creating
subdivided bibliographies with the bibliography ﬁlters. Please refer to § 3.5 for
further details. Also see § 4.5.5. This ﬁeld is consumed by the backend processing
and does not appear in the .bbl.

related

ﬁeld (separated values)

Biber only

Citation keys of other entries which have a relationship to this entry. The relationship
is speciﬁed by the relatedtype ﬁeld. Please refer to § 3.4 for further details.
relatedoptions ﬁeld (separated values)

Biber only

Per-type options to set for a related entry. Note that this does not set the options on
the related entry itself, only the dataonly clone which is used as a datasource for
the parent entry.
relatedtype ﬁeld (identiﬁer)

Biber only

An identiﬁer which speciﬁed the type of relationship for the keys listed in the
related ﬁeld. The identiﬁer is a localized bibliography string printed before the
data from the related entry list. It is also used to identify type-speciﬁc formatting
directives and bibliography macros for the related entries. Please refer to § 3.4 for
further details.
relatedstring ﬁeld (literal)

Biber only

A ﬁeld used to override the bibliography string speciﬁed by relatedtype. Please
refer to § 3.4 for further details.
sortkey

ﬁeld (literal)
A ﬁeld used to modify the sorting order of the bibliography. Think of this ﬁeld as
the master sort key. If present, Biblatex uses this ﬁeld during sorting and ignores
everything else, except for the presort ﬁeld. Please refer to § 3.5 for further details.
This ﬁeld is consumed by the backend processing and does not appear in the .bbl.

sortname list (name)

A name or a list of names used to modify the sorting order of the bibliography. If
present, this list is used instead of author or editor when sorting the bibliography.
Please refer to § 3.5 for further details. This ﬁeld is consumed by the backend
processing and does not appear in the .bbl.
sortshorthand

ﬁeld (literal)

Biber only

Similar to sortkey but used in the list of shorthands. If present, Biblatex uses this
ﬁeld instead of shorthand when sorting the list of shorthands. This is useful if the

27

shorthand ﬁeld holds shorthands with formatting commands such as \emph or
\textbf. This ﬁeld is consumed by the backend processing and does not appear in
the .bbl.
sorttitle

ﬁeld (literal)
A ﬁeld used to modify the sorting order of the bibliography. If present, this ﬁeld is
used instead of the title ﬁeld when sorting the bibliography. The sorttitle
ﬁeld may come in handy if you have an entry with a title like “An Introduction
to…” and want that alphabetized under ‘I’ rather than ‘A’. In this case, you could put
“Introduction to…” in the sorttitle ﬁeld. Please refer to § 3.5 for further details.
This ﬁeld is consumed by the backend processing and does not appear in the .bbl.

sortyear ﬁeld (literal)

A ﬁeld used to modify the sorting order of the bibliography. If present, this ﬁeld is
used instead of the year ﬁeld when sorting the bibliography. Please refer to § 3.5
for further details. This ﬁeld is consumed by the backend processing and does not
appear in the .bbl.
xdata ﬁeld (separated list of entrykeys)

Biber only

This ﬁeld inherits data from one or more @xdata entries. Conceptually, the xdata
ﬁeld is related to crossref and xref: crossref establishes a logical parent/child relation and inherits data; xref establishes as logical parent/child relation
without inheriting data; xdata inherits data without establishing a relation. The
value of the xdata may be a single entry key or a separated list of keys. See § 3.11.6
for further details. This ﬁeld is consumed by the backend processing and does not
appear in the .bbl.
xref ﬁeld (entry key)

This ﬁeld is an alternative cross-referencing mechanism. It diﬀers from crossref
in that the child entry will not inherit any data from the parent entry speciﬁed in the
xref ﬁeld. If the number of child entries referencing a speciﬁc parent entry hits a
certain threshold, the parent entry is automatically added to the bibliography even if
it has not been cited explicitly. The threshold is settable with the mincrossrefs
package option from § 3.1.2.1. Style authors should note that whether or not the
xref ﬁelds of the child entries are deﬁned on the Biblatex level depends on the
availability of the parent entry. If the parent entry is available, the xref ﬁelds of
the child entries will be deﬁned. If not, their xref ﬁelds will be undeﬁned. Whether
the parent entry is added to the bibliography implicitly because of the threshold or
explicitly because it has been cited does not matter. See also the crossref ﬁeld in
this section as well as § 2.4.1.
2.2.4 Custom Fields
The ﬁelds listed in this section are intended for special bibliography styles. They are
not used by the standard bibliography styles.
name[a–c]

list (name)
Custom lists for special bibliography styles. Not used by the standard bibliography
styles.

28

name[a–c]type

ﬁeld (key)
Similar to authortype and editortype but referring to the ﬁelds name[a–c].
Not used by the standard bibliography styles.

list[a–f]

list (literal)
Custom lists for special bibliography styles. Not used by the standard bibliography
styles.

user[a–f] ﬁeld (literal)

Custom ﬁelds for special bibliography styles. Not used by the standard bibliography
styles.
verb[a–c] ﬁeld (literal)

Similar to the custom ﬁelds above except that these are verbatim ﬁelds. Not used by
the standard bibliography styles.
2.2.5 Field Aliases
The aliases listed in this section are provided for backwards compatibility with traditional BibTeX and other applications based on traditional BibTeX styles. Note that
these aliases are immediately resolved as the bib ﬁle is processed. All bibliography
and citation styles must use the names of the ﬁelds they point to, not the alias. In
bib ﬁles, you may use either the alias or the ﬁeld name but not both at the same
time.

list (literal)
An alias for location, provided for BibTeX compatibility. Traditional BibTeX uses
the slightly misleading ﬁeld name address for the place of publication, i. e., the
location of the publisher, while Biblatex uses the generic ﬁeld name location. See
§§ 2.2.2 and 2.3.4.

annote ﬁeld (literal)

An alias for annotation, provided for jurabib compatibility. See § 2.2.2.
archiveprefix

ﬁeld (literal)
An alias for eprinttype, provided for arXiv compatibility. See §§ 2.2.2 and 3.11.7.

journal

ﬁeld (literal)
An alias for journaltitle, provided for BibTeX compatibility. See § 2.2.2.

key ﬁeld (literal)

An alias for sortkey, provided for BibTeX compatibility. See § 2.2.3.
pdf ﬁeld (verbatim)

An alias for file, provided for JabRef compatibility. See § 2.2.2.
primaryclass

ﬁeld (literal)
An alias for eprintclass, provided for arXiv compatibility. See §§ 2.2.2 and
3.11.7.

29

school list (literal)

An alias for institution, provided for BibTeX compatibility. The institution
ﬁeld is used by traditional BibTeX for technical reports whereas the school ﬁeld
holds the institution associated with theses. The Biblatex package employs the
generic ﬁeld name institution in both cases. See §§ 2.2.2 and 2.3.4.

2.3 Usage Notes
The entry types and ﬁelds supported by this package should for the most part be
intuitive to use for anyone familiar with BibTeX. However, apart from the additional
types and ﬁelds provided by this package, some of the familiar ones are handled in
a way which is in need of explanation. This package includes some compatibility
code for bib ﬁles which were generated with a traditional BibTeX style in mind.
Unfortunately, it is not possible to handle all legacy ﬁles automatically because
Biblatex’s data model is slightly diﬀerent from traditional BibTeX. Therefore, such
bib ﬁles will most likely require editing in order to work properly with this package.
In sum, the following items are diﬀerent from traditional BibTeX styles:
• The entry type @inbook. See §§ 2.1.1 and 2.3.1 for details.
• The ﬁelds institution, organization, and publisher as well as the
aliases address and school. See §§ 2.2.2, 2.2.5, 2.3.4 for details.
• The handling of certain types of titles. See § 2.3.5 for details.
• The ﬁeld series. See §§ 2.2.2 and 2.3.7 for details.
• The ﬁelds year and month. See §§ 2.2.2, 2.3.8, 2.3.9 for details.
• The ﬁeld edition. See § 2.2.2 for details.
• The ﬁeld key. See § 2.3.2 for details.
Users of the jurabib package should note that the shortauthor ﬁeld is
treated as a name list by Biblatex, see § 2.3.3 for details.
2.3.1 The Entry Type @inbook
Use the @inbook entry type for a self-contained part of a book with its own title
only. It relates to @book just like @incollection relates to @collection. See
§ 2.3.5 for examples. If you want to refer to a chapter or section of a book, simply use
the book type and add a chapter and/or pages ﬁeld. Whether a bibliography
should at all include references to chapters or sections is controversial because a
chapter is not a bibliographic entity.
2.3.2 Missing and Omissible Data
The ﬁelds marked as ‘required’ in § 2.1.1 are not strictly required in all cases. The
bibliography styles which ship with this package can get by with as little as a title
ﬁeld for most entry types. A book published anonymously, a periodical without
an explicit editor, or a software manual without an explicit author should pose no
problem as far as the bibliography is concerned. Citation styles, however, may
have diﬀerent requirements. For example, an author-year citation scheme obviously
requires an author/editor and a year ﬁeld.
You may generally use the label ﬁeld to provide a substitute for any missing data
required for citations. How the label ﬁeld is employed depends on the citation style.

30

The author-year citation styles which come with this package use the label ﬁeld as
a fallback if either the author/editor or the year is missing. The numeric styles,
on the other hand, do not use it at all since the numeric scheme is independent of
the available data. The author-title styles ignore it as well, because the bare title
is usually suﬃcient to form a unique citation and a title is expected to be available in
any case. The label ﬁeld may also be used to override the non-numeric portion of
the automatically generated labelalpha ﬁeld used by alphabetic citation styles.
See § 4.2.4 for details.
Note that traditional BibTeX styles support a key ﬁeld which is used for alphabetizing if both author and editor are missing. The Biblatex package treats key as
an alias for sortkey. In addition to that, it oﬀers very ﬁne-grained sorting controls,
see §§ 2.2.3 and 3.5 for details. The natbib package employs the key ﬁeld as a
fallback label for citations. Use the label ﬁeld instead.
2.3.3 Corporate Authors and Editors
Corporate authors and editors are given in the author or editor ﬁeld, respectively.
Note that they must be wrapped in an extra pair of curly braces to prevent data
parsing from treating them as personal names which are to be dissected into their
components. Use the shortauthor ﬁeld if you want to give an abbreviated form
of the name or an acronym for use in citations.
author
shortauthor

= {{National Aeronautics and Space Administration}},
= {NASA},

The default citation styles will use the short name in all citations while the full name
is printed in the bibliography. For corporate editors, use the corresponding ﬁelds
editor and shorteditor. Since all of these ﬁelds are treated as name lists, it is
possible to mix personal names and corporate names, provided that the names of all
corporations and institutions are wrapped in braces.
editor
shorteditor

= {{National Aeronautics and Space Administration}
and Doe, John},
= {NASA and Doe, John},

Users switching from the jurabib package to Biblatex should note that the
shortauthor ﬁeld is treated as a name list.
2.3.4 Literal Lists
The ﬁelds institution, organization, publisher, and location are literal lists in terms of § 2.2. This also applies to origlocation, origpublisher
and to the ﬁeld aliases address and school. All of these ﬁelds may contain a list
of items separated by the keyword ‘and’. If they contain a literal ‘and’, it must be
wrapped in braces.
publisher
= {William Reid {and} Company},
institution = {Office of Information Management {and} Communications},
organization = {American Society for Photogrammetry {and} Remote Sensing
and
American Congress on Surveying {and} Mapping},
Note the diﬀerence between a literal ‘{and}’ and the list separator ‘and’ in the
above examples. You may also wrap the entire name in braces:

31

publisher
= {{William Reid and Company}},
institution = {{Office of Information Management and Communications}},
organization = {{American Society for Photogrammetry and Remote Sensing}
and
{American Congress on Surveying and Mapping}},
Legacy ﬁles which have not been updated for use with Biblatex will still work if
these ﬁelds do not contain a literal ‘and’. However, note that you will miss out on
the additional features of literal lists in this case, such as conﬁgurable formatting
and automatic truncation.
2.3.5 Titles
The following examples demonstrate how to handle diﬀerent types of titles. Let’s
start with a ﬁve-volume work which is referred to as a whole:
@MvBook{works,
author
= {Shakespeare, William},
title
= {Collected Works},
volumes
= {5},
...
The individual volumes of a multi-volume work usually have a title of their own.
Suppose the fourth volume of the Collected Works includes Shakespeare’s sonnets
and we are referring to this volume only:
@Book{works:4,
author
=
maintitle =
title
=
volume
=
...

{Shakespeare, William},
{Collected Works},
{Sonnets},
{4},

If the individual volumes do not have a title, we put the main title in the title ﬁeld
and include a volume number:
@Book{works:4,
author
= {Shakespeare, William},
title
= {Collected Works},
volume
= {4},
...
In the next example, we are referring to a part of a volume, but this part is a selfcontained work with its own title. The respective volume also has a title and there is
still the main title of the entire edition:
@InBook{lear,
author
=
bookauthor =
maintitle =
booktitle =
title
=
volume
=
pages
=
...

{Shakespeare, William},
{Shakespeare, William},
{Collected Works},
{Tragedies},
{King Lear},
{1},
{53-159},

32

Suppose the ﬁrst volume of the Collected Works includes a reprinted essay by a wellknown scholar. This is not the usual introduction by the editor but a self-contained
work. The Collected Works also have a separate editor:
@InBook{stage,
author
=
title
=
bookauthor =
editor
=
maintitle =
booktitle =
volume
=
pages
=
...

{Expert, Edward},
{Shakespeare and the Elizabethan Stage},
{Shakespeare, William},
{Bookmaker, Bernard},
{Collected Works},
{Tragedies},
{1},
{7-49},

See § 2.3.7 for further examples.
2.3.6 Editorial Roles
The type of editorial role performed by an editor in one of the editor ﬁelds (i. e.,
editor, editora, editorb, editorc) may be speciﬁed in the corresponding
editor...type ﬁeld. The following roles are supported by default. The role
‘editor’ is the default. In this case, the editortype ﬁeld is omissible.
editor The main editor. This is the most generic editorial role and the default value.
compiler

Similar to editor but used if the task of the editor is mainly compiling.

founder The founding editor of a periodical or a comprehensive publication project such as a

‘Collected Works’ edition or a long-running legal commentary.
continuator

An editor who continued the work of the founding editor (founder) but was
subsequently replaced by the current editor (editor).

redactor A secondary editor whose task is redacting the work.
reviser A secondary editor whose task is revising the work.
collaborator A secondary editor or a consultant to the editor.

For example, if the task of the editor is compiling, you may indicate that in the
corresponding editortype ﬁeld:
@Collection{...,
editor
= {Editor, Edward},
editortype = {compiler},
...
There may also be secondary editors in addition to the main editor:
@Book{...,
author
editor
editora
editoratype
editorb
editorbtype
...

=
=
=
=
=
=

{...},
{Editor, Edward},
{Redactor, Randolph},
{redactor},
{collaborator},

33

Periodicals or long-running publication projects may see several generations of
editors. For example, there may be a founding editor in addition to the current
editor:
@Book{...,
author
editor
editora
editoratype
...

=
=
=
=

{...},
{Editor, Edward},
{Founder, Frederic},
{founder},

Note that only the editor is considered in citations and when sorting the bibliography. If an entry is typically cited by the founding editor (and sorted accordingly
in the bibliography), the founder goes into the editor ﬁeld and the current editor
moves to one of the editor... ﬁelds:
@Collection{...,
editor
= {Founder, Frederic},
editortype = {founder},
editora
= {Editor, Edward},
...
You may add more roles by initializing and deﬁning a new localization key whose
name corresponds to the identiﬁer in the editor...type ﬁeld. See §§ 3.8 and
4.9.1 for details.
2.3.7 Publication and Journal Series
The series ﬁeld is used by traditional BibTeX styles both for the main title of
a multi-volume work and for a publication series, i. e., a loosely related sequence
of books by the same publisher which deal with the same general topic or belong
to the same ﬁeld of research. This may be ambiguous. This package introduces a
maintitle ﬁeld for multi-volume works and employs series for publication
series only. The volume or number of a book in the series goes in the number ﬁeld
in this case:
@Book{...,
author
title
series
number
...

=
=
=
=

{Expert, Edward},
{Shakespeare and the Elizabethan Age},
{Studies in English Literature and Drama},
{57},

The @article entry type makes use of the series ﬁeld as well, but handles it in
a special way. First, a test is performed to determine whether the value of the ﬁeld is
an integer. If so, it will be printed as an ordinal. If not, another test is performed to
determine whether it is a localization key. If so, the localized string is printed. If not,
the value is printed as is. Consider the following example of a journal published in
numbered series:
@Article{...,
journal
series

= {Journal Name},
= {3},

34

Date Specification

Formatted Date (Examples)

1850
1997/
1967-02
2009-01-31
1988/1992
2002-01/2002-02
1995-03-30/1995-04-05

Short Format

Long Format

1850
1997–
02/1967
31/01/2009
1988–1992
01/2002–02/2002
30/03/1995–05/04/1995

1850
1997–
February 1967
31st January 2009
1988–1992
January 2002–February 2002
30th March 1995–5th April 1995

Table 3: Date Specifications
volume
number
year
...

= {15},
= {7},
= {1995},

This entry will be printed as “Journal Name. 3rd ser. 15.7 (1995)”. Some journals
use designations such as “old series” and “new series” instead of a number. Such
designations may be given in the series ﬁeld as well, either as a literal string
or as a localization key. Consider the following example which makes use of the
localization key newseries:
@Article{...,
journal
series
volume
year
...

=
=
=
=

{Journal Name},
{newseries},
{9},
{1998},

This entry will be printed as “Journal Name. New ser. 9 (1998)”. See § 4.9.2 for a list
of localization keys deﬁned by default.
2.3.8 Date Specifications
The date ﬁelds date, origdate, eventdate, and urldate require a date
speciﬁcation in yyyy-mm-dd format. Date ranges are given as yyyy-mm-dd/
yyyy-mm-dd. Partial dates are valid provided that date components are omitted
at the end only. You may specify an open ended date range by giving the range
separator and omitting the end date (e. g., yyyy/). See table 3 for some examples of
valid date speciﬁcations and the formatted date automatically generated by Biblatex.
The formatted date is language speciﬁc and will be adapted automatically. If there is
no date ﬁeld in an entry, Biblatex will also consider the ﬁelds year and month
for backwards compatibility with traditional BibTeX. Style author should note that
date ﬁelds like date or origdate are only available in the bib ﬁle. All dates are
parsed and dissected into their components as the bib ﬁle is processed. The date
components are made available to styles by way of the special ﬁelds discussed in
§ 4.2.4.3. See this section and table 8 on page 134 for further information.
2.3.9 Months and Journal Issues
The month ﬁeld is an integer ﬁeld. The bibliography style converts the month to
a language-dependent string as required. For backwards compatibility, you may

35

also use the following three-letter abbreviations in the month ﬁeld: jan, feb, mar,
apr, may, jun, jul, aug, sep, oct, nov, dec. Note that these abbreviations are
BibTeX strings which must be given without any braces or quotes. When using them,
don’t say month={jan} or month=”jan” but month=jan. It is not possible
to specify a month such as month={8/9}. Use the date ﬁeld for date ranges
instead. Quarterly journals are typically identiﬁed by a designation such as ‘Spring’
or ‘Summer’ which should be given in the issue ﬁeld. The placement of the issue
ﬁeld in @article entries is similar to and overrides the month ﬁeld.
2.3.10 Pagination
When specifying a page or page range, either in the pages ﬁeld of an entry or in
the hpostnotei argument to a citation command, it is convenient to have Biblatex add
preﬁxes like ‘p.’ or ‘pp.’ automatically and this is indeed what this package does by
default. However, some works may use a diﬀerent pagination scheme or may not be
cited by page but rather by verse or line number. This is when the pagination and
bookpagination ﬁelds come into play. As an example, consider the following
entry:
@InBook{key,
title
pagination
booktitle
bookpagination
pages
...

=
=
=
=
=

{...},
{verse},
{...},
{page},
{53--65},

The bookpagination ﬁeld aﬀects the formatting of the pages and pagetotal
ﬁelds in the list of references. Since page is the default, this ﬁeld is omissible in
the above example. In this case, the page range will be formatted as ‘pp. 53–65’.
Suppose that, when quoting from this work, it is customary to use verse numbers
rather than page numbers in citations. This is reﬂected by the pagination ﬁeld,
which aﬀects the formatting of the hpostnotei argument to any citation command.
With a citation like \cite[17]{key}, the postnote will be formatted as ‘v. 17’.
Setting the pagination ﬁeld to section would yield ‘§ 17’. See § 3.12.3 for
further usage instructions.
The pagination and bookpagination ﬁelds are key ﬁelds. This package will
try to use their value as a localization key, provided that the key is deﬁned. Always use
the singular form of the key name in bib ﬁles, the plural is formed automatically. The
keys page, column, line, verse, section, and paragraph are predeﬁned,
with page being the default. The string ‘none’ has a special meaning when used
in a pagination or bookpagination ﬁeld. It suppresses the preﬁx for the
respective entry. If there are no predeﬁned localization keys for the pagination
scheme required by a certain entry, you can simply add them. See the commands
\NewBibliographyString and \DefineBibliographyStrings in § 3.8.
You need to deﬁne two localization strings for each additional pagination scheme: the
singular form (whose localization key corresponds to the value of the pagination
ﬁeld) and the plural form (whose localization key must be the singular plus the letter
‘s’). See the predeﬁned keys in § 4.9.2 for examples.

36

2.4 Hints and Caveats
This section provides some additional hints concerning the data interface of this
package. It also addresses some common problems.
2.4.1 Cross-referencing
2.4.1.1 The crossref field (BibTeX)
The crossref ﬁeld is a convenient way to establish a parent/child relation between
two associated entries. Unfortunately, the BibTeX program uses symmetric ﬁeld
mapping which reduces the usefulness of the crossref ﬁeld signiﬁcantly. The are
two issues with symmetric ﬁeld mapping, as seen in the following example:
@Book{book,
author
bookauthor
title
booktitle
subtitle
booksubtitle
publisher
location
date
}
@InBook{inbook,
crossref
title
subtitle
pages
}

=
=
=
=
=
=
=
=
=

{Author},
{Author},
{Booktitle},
{Booktitle},
{Booksubtitle},
{Booksubtitle},
{Publisher},
{Location},
{1995},

=
=
=
=

{book},
{Title},
{},
{5--25},

As BibTeX is not capable of mapping the title ﬁeld of the parent to the
booktitle ﬁeld of the child, the title of the book needs to be given twice. The style
then needs to ignore the booktitle of the parent since it is only required to work
around this fundamental limitation of BibTeX. The problem with the subtitle
ﬁeld is the inverse of that. Since the subtitle of the parent would become the
subtitle, rather than in the booksubtitle, of the child, we need to add an
empty subtitle ﬁeld to the child entry to prevent inheritance of this ﬁeld. Of
course we also need to duplicate the subtitle in the parent entry to ensure that it is
available as booksubtitle in the child entry. In short, using BibTeX’s crossref
ﬁeld tends to bloat database ﬁles and corrupt the data model.
2.4.1.2 The crossref field (Biber)
With Biber, the limitations of BibTeX’s crossref ﬁeld belong to the past. Biber
features a highly customizable cross-referencing mechanism with ﬂexible data inheritance rules. Duplicating certain ﬁelds in the parent entry or adding empty ﬁelds to
the child entry is no longer required. Entries are speciﬁed in a natural way:
@Book{book,
author
title
subtitle

= {Author},
= {Booktitle},
= {Booksubtitle},

37

publisher
location
date

= {Publisher},
= {Location},
= {1995},

}
@InBook{inbook,
crossref
= {book},
title
= {Title},
pages
= {5--25},
}
The title ﬁeld of the parent will be copied to the booktitle ﬁeld of the child,
the subtitle becomes the booksubtitle. The author of the parent becomes
the bookauthor of the child and, since the child does not provide an author
ﬁeld, it is also duplicated as the author of the child. After data inheritance, the
child entry is similar to this:
author
bookauthor
title
booktitle
booksubtitle
publisher
location
date
pages

=
=
=
=
=
=
=
=
=

{Author},
{Author},
{Title},
{Booktitle},
{Booksubtitle},
{Publisher},
{Location},
{1995},
{5--25},

See appendix B for a list of mapping rules set up by default. Note that all of this is
customizable. See § 4.5.10 on how to conﬁgure Biber’s cross-referencing mechanism.
2.4.1.3 The xref field
In addition to the crossref ﬁeld, Biblatex supports a simpliﬁed cross-referencing
mechanism based on the xref ﬁeld. This is useful if you want to establish a parent/
child relation between two associated entries but prefer to keep them independent
as far as the data is concerned. The xref ﬁeld diﬀers from crossref in that the
child entry will not inherit any data from the parent. If the parent is referenced by a
certain number of child entries, Biblatex will automatically add it to the bibliography.
The threshold is controlled by the mincrossrefs package option from § 3.1.2.1.
The xref ﬁeld is supported with all backends. See also § 2.2.3.
2.4.2 Capacity Issues
2.4.2.1 BibTeX
A venerable tool originally developed in the 1980s, BibTeX uses static memory
allocation, much to the dismay of users working with large bibliographical databases.
With a large bib ﬁle which contains several hundred entries, BibTeX is very likely to
run out of memory. The number of entries it can cope with depends on the number
of ﬁelds deﬁned by the BibTeX style (bst). Style ﬁles which deﬁne a considerable
number of ﬁelds, such as biblatex.bst, are more likely to trigger such problems.
Unfortunately, traditional BibTeX does not output a clear error message when it runs
out of memory but exposes a rather cryptical kind of faulty behavior. The warning
messages printed in this case look like this:

38

Parameter

max_cites
max_ent_ints
max_ent_strs
max_fields
max_strings
pool_size
wiz_fn_space
hash_prime
hash_size

Switch

–mcites
–mentints
–mentstrs
–mfields
–mstrings
–mpool
–mwizfuns

Capacity
Default

–big

–huge

–wolfgang

750
3000
3000
17250
4000
65530
3000
4253
5000

2000
4000
6000
30000
10000
130000
6000
8501
10000

5000
5000
10000
85000
19000
500000
10000
16319
19000

7500
7500
10000
125000
30000
750000
10000
30011
35000

Table 4: Capacity and Switches of bibtex8
Warning--I’m ignoring Jones1995’s extra ”year” field
--line 422 of file huge.bib
Warning--I’m ignoring Jones1995’s extra ”volume” field
--line 423 of file huge.bib
These warning messages could indeed indicate that the entry Jones1995 is faulty
because it includes two year and two volume ﬁelds. If that is not the case and
the bib ﬁle is fairly large, this is most likely a capacity issue. What makes these
warnings so confusing is that they are not tied to a speciﬁc entry. If you remove
the allegedly faulty entry, a diﬀerent one will trigger similar warnings. This is one
reason why switching to bibtex8 or Biber is advisable.
2.4.2.2 bibtex8
bibtex8 is a venerable tool as well and will also run out of memory with its default
capacity. Switching from traditional BibTeX to bibtex8 is still an improvement
because the capacity of the latter may be increased at run-time via command-line
switches and it also prints unambiguous error messages, for example:
17289 fields:
Sorry---you’ve exceeded BibTeX’s total number of fields 17250
Table 4 gives an overview of the various capacity parameters of bibtex8 and
the command-line switches used to increase their default values. There are two
ways to increase the capacity on the command-line. You may use a high-level
switch like --huge to select a diﬀerent set of defaults or low-level switches such as
--mfields to modify a single parameter. The ﬁrst thing you should always do is
run bibtex8 with the --wolfgang switch. Don’t even bother trying anything
else. With a very large database, however, even that capacity may be too small. In
this case, you need to resort to the low-level switches. Here is an example of a set of
switches which should cope with a bib ﬁle containing about 1000 entries:
bibtex8 --wolfgang --mcites 30000 --mentints 30000 --mentstrs 40000
--mfields 250000 --mstrings 35000 --mpool 750000 --csfile csfile.csf
auxfile
When taking a closer look at table 4, you will notice that there are two parameters
which can not be modiﬁed directly, hash_prime and hash_size. Increasing
these values is only possible with the high-level switches. That is why the above command includes the --wolfgang switch in addition to the low-level switches. This

39

situation is very unfortunate because the hash size eﬀectively sets a cap on some other
parameters. For example, max_strings can not be greater than hash_size. If
you hit this cap, all you can do is recompile bibtex8 with a larger capacity. Also
note that the wiz_fn_space parameter is not related to the bib ﬁle but to the
memory requirements of the bst ﬁle. biblatex.bst needs a value of about 6000.
The value 10000 implicitly used by the --wolfgang switch is ﬁne.
2.4.2.3 Biber
Biber eliminates all of the above limitations.
2.4.3 Sorting and Encoding Issues
2.4.3.1 BibTeX
Traditional BibTeX can only alphabetize Ascii characters correctly. If the bibliographic data includes non-Ascii characters, they have to be given in Ascii notation.
For example, instead of typing a letter like ‘ä’ directly, you need to input it as \”a, using an accent command and the Ascii letter. This Ascii notation needs to be wrapped
in a pair of curly braces. Traditional BibTeX will then ignore the accent and use the
Ascii letter for sorting. Here are a few examples:
author
editor
translator
title

=
=
=
=

{S{\’a}nchez, Jos{\’e}},
{Ma{\ss}mann, R{\”u}diger},
{Ferdi{\‘e}re, Fr{\c{c}}ois},
{{\OE}uvres compl{\‘e}tes},

Apart from it being inconvenient, there are two major issues with this convention.
One subtle problem is that the extra set of braces suppresses the kerning on both
sides of all non-Ascii letters. But ﬁrst and foremost, simply ignoring all accents may
not be the correct way to handle them. For example, in Danish, the letter ‘å’ is the
very last letter of the alphabet, so it should be alphabetized after ‘z’. BibTeX will
sort it like an ‘a’. The ‘æ’ ligature and the letter ‘ø’ are also sorted after ‘z’ in this
language. There are similar cases in Norwegian. In Swedish, the letter ‘ö’ is the very
last letter of the alphabet and the letters ‘å’ and ‘ä’ are also alphabetized after ‘z’,
rather than like an ‘a’. What’s more, even the sorting of Ascii characters is done in a
rather peculiar way by traditional BibTeX because the sorting algorithm uses Ascii
codepage order (0-9,A-Z,a-z). This implies that the lowercase letter ‘a’ would
end up after the uppercase ‘Z’, which is not even acceptable in the language BibTeX
was originally designed for. The traditional bst ﬁles work around this problem by
converting all strings used for sorting to lowercase, i. e., sorting is eﬀectively caseinsensitive. See also § 2.4.3.4.
2.4.3.2 bibtex8
Switching to bibtex8 will help in such cases. bibtex8 can sort case-sensitively
and it can handle 8-bit characters properly, provided that you supply it with a suitable
csf ﬁle and give the --csfile switch on the command line. This also implies that
it is possible to apply language speciﬁc sorting rules to the bibliography. The Biblatex
package comes with csf ﬁles for some common Western European encodings.
bibtex8 also ships with a few csf ﬁles. Note that biblatex.bst can not detect
if it is running under traditional BibTeX or bibtex8, hence the bibtex8 package
option. By default, sorting is case-insensitive since this is required for traditional
BibTeX. If the bibtex8 package option is enabled, sorting is case-sensitive.

40

Since bibtex8 is backwards compatible with traditional BibTeX, it is possible
to mix 8-bit input and Ascii notation. This is useful if the encoding used in the
bib ﬁle does not cover all required characters. There are also a few marginal cases
in which the Ascii notation scheme would yield better sorting results. A typical
example is the ligature ‘œ’. bibtex8 will handle this ligature like a single character.
Depending on the sorting scheme deﬁned in the csf ﬁle, it could be treated like
an ‘o’ or alphabetized after the letter ‘o’ but it can not be sorted as ‘oe’. The Ascii
notation (\oe) is equivalent to ‘oe’ during sorting:
title
title

= {Œuvres complètes},
= {{\OE}uvres complètes},

Sometimes even that is not suﬃcient and further tricks are required. For example,
the letter ‘ß’ in German is particularly tricky. This letter is essentially alphabetized as
‘ss’ but after ‘ss’. The name ‘Baßmann’ would be alphabetized as follows: Basmann/
Bassmann/Baßmann/Bastmann. In this case, the Ascii notation (\ss) would yield
slightly better sorting results than ‘ß’ in conjunction with a csf ﬁle which treats ‘ß’
like ‘s’:
author

= {Ba{\ss}mann, Paul},

To get it absolutely right, however, you need to resort to the sortname ﬁeld:
author
sortname

= {Baßmann, Paul},
= {Basszzmann, Paul},

Not only BibTeX, LaTeX needs to know about the encoding as well. See § 2.4.3.4 on
how to specify encodings.
2.4.3.3 Biber
Biber handles Ascii, 8-bit encodings such as Latin 1, and utf-8. It features true
Unicode support and is capable of reencoding the bib data on the ﬂy in a robust way.
For sorting, Biber uses a Perl implementation of the Unicode Collation Algorithm
(uca), as outlined in Unicode Technical Standard #10.13 Collation tailoring based
on the Unicode Common Locale Data Repository (cldr) is also supported.14 The
bottom line is that Biber will deliver sorting results far superior to both BibTeX and
bibtex8 in many cases. If you are interested in the technical details, section 1.8
of Unicode Technical Standard #10 will provide you with a very concise summary
of why the inadequateness of traditional BibTeX and even bibtex8 is of a very
general nature and not limited to the lack of utf-8 support.15
Supporting Unicode implies much more than handling utf-8 input. Unicode is
a complex standard covering more than its most well-known parts, the Unicode
character encoding and transport encodings such as utf-8. It also standardizes
aspects such as string collation, which is required for language-sensitive sorting. For
example, by using the Unicode Collation Algorithm, Biber can handle the character
‘ß’ mentioned as an example in § 2.4.3.2 without any manual intervention. All you
need to do to get localized sorting is specify the locale:
\usepackage[backend=biber,sortlocale=de]{biblatex}
13

http://unicode.org/reports/tr10/
http://cldr.unicode.org/
15
http://unicode.org/reports/tr10/#Common_Misperceptions
14

41

or if you are using german as the main document language via Babel or Polyglossia:
\usepackage[backend=biber,sortlocale=auto]{biblatex}
This will make Biblatex pass the Babel/Polyglossia main document language as the
locale which Biber will map into a suitable default locale. Biber will not try to get locale information from its environment as this makes document processing dependent
on something not in the document which is against TeX’s spirit of reproducibility.
This also makes sense since Babel/Polyglossia are in fact the relevant environment
for a document. Note that this will also work with 8-bit encodings such as Latin 9,
i. e., you can take advantage of Unicode-based sorting even though you are not using
utf-8 input. See § 2.4.3.4 on how to specify input and data encodings properly.
2.4.3.4 Specifying Encodings
When using a non-Ascii encoding in the bib ﬁle, it is important to understand what
Biblatex can do for you and what may require manual intervention. The package
takes care of the LaTeX side, i. e., it ensures that the data imported from the bbl
ﬁle is interpreted correctly, provided that the bibencoding package option is set
properly. Depending on the backend, the BibTeX side may demand attention, too.
When using bibtex8, you need to supply bibtex8 with a matching csf ﬁle as
it needs to know about the encoding of the bib ﬁle to be able to alphabetize the
entries correctly. Unfortunately, there is no way for Biblatex to pass this information
to bibtex8 automatically. The only way is setting its --csfile option on the
command line when running bibtex8. When using Biber, all of this is handled
automatically and no further steps, apart from setting the bibencoding option in
certain cases, are required. Here are a few typical usage scenarios along with the
relevant lines from the document preamble:
• Ascii notation in both the tex and the bib ﬁle with pdfTeX or traditional
TeX (this will work with BibTeX, bibtex8, and Biber):
\usepackage{biblatex}
• Latin 1 encoding (iso-8859-1) in the tex ﬁle, Ascii notation in the bib ﬁle
with pdfTeX or traditional TeX (BibTeX, bibtex8, Biber):
\usepackage[latin1]{inputenc}
\usepackage[bibencoding=ascii]{biblatex}
• Latin 9 encoding (iso-8859-15) in both the tex and the bib ﬁle with pdfTeX
\usepackage[latin9]{inputenc}
\usepackage[bibencoding=auto]{biblatex}
Since bibencoding=auto is the default setting, the option is omissible.
The following setup will have the same eﬀect:
\usepackage[latin9]{inputenc}
\usepackage{biblatex}

42

• utf-8 encoding in the tex ﬁle, Latin 1 (iso-8859-1) in the bib ﬁle with pdfTeX
\usepackage[utf8]{inputenc}
\usepackage[bibencoding=latin1]{biblatex}
The same scenario with XeTeX or LuaTeX in native utf-8 mode:
\usepackage[bibencoding=latin1]{biblatex}
• Using utf-8 encoding in both the tex and the bib ﬁle is not possible with
traditional BibTeX or bibtex8 since neither of them is capable of handling
utf-8. Unless you switch to Biber, you need to use an 8-bit encoding such as
Latin 1 (see above) or resort to Ascii notation in this case:
\usepackage[utf8]{inputenc}
\usepackage[bibencoding=ascii]{biblatex}
The same scenario with XeTeX or LuaTeX in native utf-8 mode:
\usepackage[bibencoding=ascii]{biblatex}
Biber can handle Ascii notation, 8-bit encodings such as Latin 1, and utf-8. It is
also capable of reencoding the bib data on the ﬂy (replacing the limited macro-level
reencoding feature of Biblatex). This will happen automatically if required, provided
that you specify the encoding of the bib ﬁles properly. In addition to the scenarios
discussed above, Biber can also handle the following cases:
• Transparent utf-8 workﬂow, i. e., utf-8 encoding in both the tex and the
bib ﬁle with pdfTeX or traditional TeX:
\usepackage[utf8]{inputenc}
\usepackage[bibencoding=auto]{biblatex}
Since bibencoding=auto is the default setting, the option is omissible:
\usepackage[utf8]{inputenc}
\usepackage{biblatex}
The same scenario with XeTeX or LuaTeX in native utf-8 mode:
\usepackage{biblatex}
• It is even possible to combine an 8-bit encoded tex ﬁle with utf-8 encoding
in the bib ﬁle, provided that all characters in the bib ﬁle are also covered by
the selected 8-bit encoding:
\usepackage[latin1]{inputenc}
\usepackage[bibencoding=utf8]{biblatex}

43

Some workarounds may be required when using traditional TeX or pdfTeX with
utf-8 encoding because inputenc’s utf8 module does not cover all of Unicode.
Roughly speaking, it only covers the Western European Unicode range. When
to reencode the bib data to utf-8. This may lead to inputenc errors if some of
the characters in the bib ﬁle are outside the limited Unicode range supported by
inputenc.
• If you are aﬀected by this problem, try setting the safeinputenc option:
\usepackage[utf8]{inputenc}
\usepackage[safeinputenc]{biblatex}
If this option is enabled, Biblatex will ignore inputenc’s utf8 option and use
Ascii. Biber will then try to convert the bib data to Ascii notation. For example,
it will convert S̨ to \k{S}. This option is similar to setting texencoding=ascii but will only take eﬀect in this speciﬁc scenario (inputenc/
inputenx with utf-8). This workaround takes advantage of the fact that
both Unicode and the utf-8 transport encoding are backwards compatible
with Ascii.
This solution may be acceptable as a workaround if the data in the bib ﬁle is
mostly Ascii anyway, with only a few strings, such as some authors’ names, causing
problems. However, keep in mind that it will not magically make traditional TeX or
pdfTeX support Unicode. It may help if the occasional odd character is not supported
by inputenc, but may still be processed by TeX when using an accent command
(e. g., \d{S} instead of Ṣ). If you need full Unicode support, however, switch to
XeTeX or LuaTeX.
Typical errors when inputenc cannot handle a certain UTF-8 character are:
Package inputenc Error: Unicode char \u8: not set up for use with LaTeX
but also less obvious things like:
! Argument of \UTFviii@three@octets has an extra }.
2.4.4 Editors and Compiler Scripts
This section is in need of an update to match the new script interface used by Biblatex.
For the time being, see the documentation of the logreq package16 and the Biblatex
Developer’s Wiki for a draft spec.17

3 User Guide
This part of the manual documents the user interface of the Biblatex package. The
user guide covers everything you need to know in order to use Biblatex with the
default styles that come with this package. You should read the user guide ﬁrst in
any case. If you want to write your own citation and/or bibliography styles, continue
with the author guide afterwards.
16
17

http://www.ctan.org/tex-archive/macros/latex/contrib/logreq/
http://sourceforge.net/apps/mediawiki/biblatex/index.php?title=
Workflow_Automation

44

3.1 Package Options
All package options are given in hkeyi=hvaluei notation. The value true is omissible
with all boolean keys. For example, giving sortcites without a value is equivalent
to sortcites=true.
The following options must be used as Biblatex is loaded, i. e., in the optional argument
to \usepackage.
backend=bibtex, bibtex8, bibtexu, biber

default: biber

Speciﬁes the database backend. The following backends are supported:
biber

Biber, the default backend of Biblatex, supports Ascii, 8-bit encodings,
utf-8, on-the-ﬂy reencoding, locale-speciﬁc sorting, and many other
features. Locale-speciﬁc sorting, case-sensitive sorting, and upper/
lowercase precedence are controlled by the options sortlocale,
sortcase, and sortupper, respectively.

bibtex

Legacy BibTeX. Traditional BibTeX supports Ascii encoding only. Sorting is always case-insensitive.

bibtex8

bibtex8, the 8-bit implementation of BibTeX, supports Ascii and
8-bit encodings such as Latin 1. Depending on the csf ﬁle, casesensitive sorting may be supported.

bibtexu

bibtexu is a Unicode-enabled implementation of BibTeX which
supports utf-8. Note that bibtexu is not actively supported by
Biblatex and has not been tested as backend in any way. Biber is the
recommended backend.

See § 2.4.3 for further instructions concerning the encoding of bib ﬁles. This option
is only available at load-time as internally, the code chooses completely diﬀerent
paths depending on the backend. This means that you can’t set the backend with,
for example, \ExecuteBibliographyOptions in the preamble.
default: numeric

style=hﬁlei

Loads the bibliography style file.bbx and the citation style file.cbx. See § 3.3
for an overview of the standard styles.
default: numeric

bibstyle=hﬁlei

Loads the bibliography style file.bbx. See § 3.3.2 for an overview of the standard
bibliography styles.
default: numeric

citestyle=hﬁlei

Loads the citation style file.cbx. See § 3.3.1 for an overview of the standard
citation styles.
default: false

natbib=true, false

Loads compatibility module which provides aliases for the citation commands of the
natbib package. See § 3.7.9 for details.

45

default: false

mcite=true, false

Loads a citation module which provides mcite/mciteplus-like citation commands. See § 3.7.10 for details.
3.1.2 Preamble Options
3.1.2.1 General
The following options may be used in the optional argument to \usepackage as
well as in the conﬁguration ﬁle and the document preamble. The default value listed
to the right is the package default. Note that bibliography and citation styles may
modify the default setting at load time, see § 3.3 for details.
default: nty

sorting=nty, nyt, nyvt, anyt, anyvt, ynt, ydnt, none, debug,
hnamei

The sorting order of the bibliography. Unless stated otherwise, the entries are sorted
in ascending order. The following choices are available by default:
nty

Sort by name, title, year.

nyt

Sort by name, year, title.

nyvt

Sort by name, year, volume, title.

anyt

Sort by alphabetic label, name, year, title.

anyvt

Sort by alphabetic label, name, year, volume, title.

ynt

Sort by year, name, title.

ydnt

Sort by year (descending), name, title.

none

Do not sort at all. All entries are processed in citation order.

debug

Sort by entry key. This is intended for debugging only.

hnamei

Use hnamei, as deﬁned with \DeclareSortingScheme (§ 4.5.5)

Biber only

Using any of the ‘alphabetic’ sorting schemes only makes sense in conjunction
with a bibliography style which prints the corresponding labels. Note that some
bibliography styles initialize this package option to a value diﬀerent from the package
default (nty). See § 3.3.2 for details. Please refer to § 3.5 for an in-depth explanation
of the above sorting options as well as the ﬁelds considered in the sorting process.
default: true

sortcase=true, false

Whether or not to sort the bibliography and the list of shorthands case-sensitively.
Note that case-sensitive sorting is only supported by the bibtex8 and Biber backends. Sorting is always case-insensitive with legacy BibTeX. See the backend
option for details.
default: true

sortupper=true, false

This option corresponds to Biber’s --sortupper command-line option. It has no
eﬀect with any other backend. If enabled, the bibliography is sorted in ‘uppercase
before lowercase’ order. Disabling this option means ‘lowercase before uppercase’
order.

46

Biber only

Biber only

sortlocale=auto, hlocalei
This option sets the global sorting locale. Every sorting scheme inherits this locale
if none is speciﬁed using the hlocalei option to \printbibliography. Setting
this to auto requests that it be set to the Babel/Polyglossia main document language identiﬁer, if these packages are used and en_US otherwise. Biber will map
Babel/Polyglossia language identiﬁers into sensible locale identiﬁers (see the Biber
documentation). You can therefore specify either a normal locale identiﬁer like
de_DE_phonebook, es_ES or one of the supported Babel/Polyglossia language
identiﬁers if the mapping Biber makes of this is ﬁne for you.
default: los

sortlos=bib, los

BibTeX only

The sorting order of the list of shorthands. The following choices are available:
bib

Sort according to the sorting order of the bibliography.

los

Sort by shorthand.

The sorting order of shorthands with Biber is more ﬂexible and is set with the
sorting option to the \printbiblist command.
default: true

related=true, false

Whether or not to use information from related entries or not. See § 3.4.
default: false

sortcites=true, false

Whether or not to sort citations if multiple entry keys are passed to a citation
command. If this option is enabled, citations are sorted according to the global
sorting order of the bibliography. This feature works with all citation styles.
default: 3

maxnames=hintegeri

A threshold aﬀecting all lists of names (author, editor, etc.). If a list exceeds this
threshold, i. e., if it holds more than hintegeri names, it is automatically truncated
according to the setting of the minnames option. maxnames is the master option
which sets both maxbibnames and maxcitenames.
default: 1

minnames=hintegeri

A limit aﬀecting all lists of names (author, editor, etc.). If a list holds more
than hmaxnamesi names, it is automatically truncated to hminnamesi names. The
hminnamesi value must be smaller than or equal to hmaxnamesi. minnames is the
master option which sets both minbibnames and mincitenames.
default: hmaxnamesi

maxbibnames=hintegeri
Similar to maxnames but aﬀects only the bibliography.

default: hminnamesi

minbibnames=hintegeri
Similar to minnames but aﬀects only the bibliography.

default: hmaxnamesi

maxcitenames=hintegeri

Similar to maxnames but aﬀects only the citations in the document body.

47

Biber only

default: hminnamesi

mincitenames=hintegeri

Similar to minnames but aﬀects only the citations in the document body.
default: 3

maxitems=hintegeri

Similar to maxnames, but aﬀecting all literal lists (publisher, location, etc.).
default: 1

minitems=hintegeri

Similar to minnames, but aﬀecting all literal lists (publisher, location, etc.).
autocite=plain, inline, footnote, superscript, ...
This option controls the behavior of the \autocite command discussed in § 3.7.4.
The plain option makes \autocite behave like \cite, inline makes it
behave like \parencite, footnote makes it behave like \footcite, and
superscript makes it behave like \supercite. The options plain, inline,
and footnote are always available, the superscript option is only provided
by the numeric citation styles which come with this package. The citation style may
also deﬁne additional options. The default setting of this option depends on the
selected citation style, see § 3.3.1.
default: true

autopunct=true, false

This option controls whether the citation commands scan ahead for punctuation
marks. See § 3.7 and \DeclareAutoPunctuation in § 4.7.5 for details.
language=autobib, autocite, auto, hlanguagei

default: autobib

This option controls multilingual support. When set to autobib, autocite
or auto, Biblatex will try to get the main document language from the
babel/polyglossia package (and fall back to English if babel/polyglossia
is not available). It is also possible to select the document language manually. In this
case, the autolang option below will have no eﬀect. Please refer to table 2 for a
list of supported languages and the corresponding identiﬁers. autobib switches
the language for each entry in the bibliography using the langid ﬁeld and the
language environment speciﬁed by the autolang option. autocite switches the
language for each citation using the langid ﬁeld and the language environment
speciﬁed by the autolang option. auto is a shorthand to set both autobib and
autocite. The default is to switch languages automatically only for bibliography
entries (autobib).
default: true

clearlang=true, false

If this option is enabled, Biblatex will automatically clear the language ﬁeld of
all entries whose language matches the babel/polyglossia language of the
document (or the language speciﬁed explicitly with the language option) in order
to omit redundant language speciﬁcations. The language mappings required by this
feature are provided by the \DeclareRedundantLanguages command from
§ 4.9.1.
autolang=none, hyphen, other, other*, langname

default: none

This option controls which babel language environment18 is used if the
babel/polyglossia package is loaded and a bibliography entry includes a
18

polyglossia understands the babel language environments too and so this option controls
both the babel and polyglossia language environments.

48

langid ﬁeld (see § 2.2.3). Note that Biblatex automatically adjusts to the main
document language if babel/polyglossia is loaded. In multilingual documents,
it will also continually adjust to the current language as far as citations and the
default language of the bibliography is concerned. This option is for switching
languages on a per-entry basis within the bibliography. The possible choices are:
none

Disable this feature, i. e., do not use any language environment at all.

hyphen

Enclose the entry in a hyphenrules environment. This will load hyphenation patterns for the language speciﬁed in the hyphenation
ﬁeld of the entry, if available.

other

Enclose the entry in an otherlanguage environment. This will
load hyphenation patterns for the speciﬁed language, enable all extra
deﬁnitions which babel/polyglossia and Biblatex provide for
the respective language, and translate key terms such as ‘editor’ and
‘volume’. The extra deﬁnitions include localizations of the date format,
of ordinals, and similar things.

other*

Enclose the entry in an otherlanguage* environment. Please
note that Biblatex treats otherlanguage* like otherlanguage
but other packages may make a distinction in this case.

langname

polyglossia only. Enclose the entry in a ‘languagename’
environment. The beneﬁt of this option value for polyglossia
users is that it takes note of the langidopts ﬁeld so that you can add
per-language options to an entry (like selecting a language variant).
When using babel, this option does the same as the other option
value.
default: none

block=none, space, par, nbpar, ragged

This option controls the extra spacing between blocks, i. e., larger segments of a
bibliography entry. The possible choices are:
none

Do not add anything at all.

space

Insert additional horizontal space between blocks. This is similar to
the default behavior of the standard LaTeX document classes.

par

Start a new paragraph for every block. This is similar to the openbib
option of the standard LaTeX document classes.

nbpar

Similar to the par option, but disallows page breaks at block boundaries and within an entry.

ragged

Inserts a small negative penalty to encourage line breaks at block
boundaries and sets the bibliography ragged right.

The \newblockpunct command may also be redeﬁned directly to achieve diﬀerent
results, see § 3.9.1. Also see § 4.7.1 for additional information.
default: foot+end

notetype=foot+end, footonly, endonly

This option controls the behavior of \mkbibfootnote, \mkbibendnote, and
similar wrappers from § 4.10.4. The possible choices are:
foot+end

Support both footnotes and endnotes, i. e., \mkbibfootnote will
generate footnotes and \mkbibendnote will generate endnotes.

footonly

Force footnotes, i. e., make \mkbibendnote generate footnotes.

49

endonly

Force endnotes, i. e., make \mkbibfootnote generate endnotes.
default: auto

hyperref=true, false, auto

Whether or not to transform citations and back references into clickable hyperlinks.
This feature requires the hyperref package. It also requires support by the selected
citation style. All standard styles which ship with this package support hyperlinks.
hyperref=auto automatically detects if the hyperref package has been loaded.
default: false

backref=true, false

Whether or not to print back references in the bibliography. The back references are
a list of page numbers indicating the pages on which the respective bibliography
entry is cited. If there are refsection environments in the document, the back
references are local to the reference sections. Strictly speaking, this option only controls whether the Biblatex package collects the data required to print such references.
This feature still has to be supported by the selected bibliography style. All standard
styles which ship with this package do so.
backrefstyle=none, three, two, two+, three+, all+

default: three

This option controls how sequences of consecutive pages in the list of back references
are formatted. The following styles are available:
none

Disable this feature, i. e., do not compress the page list.

three

Compress any sequence of three or more consecutive pages to a range,
e. g., the list ‘1, 2, 11, 12, 13, 21, 22, 23, 24’ is compressed to ‘1, 2, 11–13,
21–24’.

two

Compress any sequence of two or more consecutive pages to a range,
e. g., the above list is compressed to ‘1–2, 11–13, 21–24’.

two+

Similar in concept to two but a sequence of exactly two consecutive
pages is printed using the starting page and the localization string
sequens, e. g., the above list is compressed to ‘1 sq., 11–13, 21–24’.

three+

Similar in concept to two+ but a sequence of exactly three consecutive pages is printed using the starting page and the localization
string sequentes, e. g., the above list is compressed to ‘1 sq., 11 sqq.,
21–24’.

all+

Similar in concept to three+ but any sequence of consecutive pages
is printed as an open-ended range, e. g., the above list is compressed
to ‘1 sq., 11 sqq., 21 sqq.’.

All styles support both Arabic and Roman numerals. In order to avoid potentially
ambiguous lists, diﬀerent sets of numerals will not be mixed when generating ranges,
e. g., the list ‘iii, iv, v, 6, 7, 8’ is compressed to ‘iii–v, 6–8’.
backrefsetstyle=setonly, memonly, setormem, setandmem,
memandset, setplusmem

default: setonly

This option controls how back references to @set entries and their members are
handled. The following options are available:
setonly

All back references are added to the @set entry. The pageref lists
of set members remain blank.

50

memonly

References to set members are added to the respective member. References to the @set entry are added to all members. The pageref
list of the @set entry remains blank.

setormem

References to the @set entry are added to the @set entry. References
to set members are added to the respective member.

setandmem

References to the @set entry are added to the @set entry. References to set members are added to the respective member and to the
@set entry.

memandset

References to the @set entry are added to the @set entry and to
all members. References to set members are added to the respective
member.

setplusmem References to the @set entry are added to the @set entry and to
all members. References to set members are added to the respective
member and to the @set entry.
default: false

indexing=true, false, cite, bib

This option controls indexing in citations and in the bibliography. More precisely,
it aﬀects the \ifciteindex and \ifbibindex commands from § 4.6.2. The
option is settable on a global, a per-type, or on a per-entry basis. The possible choices
are:
true

Enable indexing globally.

false

Disable indexing globally.

cite

Enable indexing in citations only.

bib

Enable indexing in the bibliography only.

This feature requires support by the selected citation style. All standard styles
which ship with this package support indexing of both citations and entries in the
bibliography. Note that you still need to enable indexing globally with \makeindex
to get an index.
default: false

This option controls whether external ﬁles requested by way of the \printfile
feature is disabled by default for performance reasons.
refsection=none, part, chapter, section, subsection

default: none

This option automatically starts a new reference section at a document division such
as a chapter or a section. This is equivalent to the \newrefsection command,
see § 3.6.5 for details. The following choice of document divisions is available:
none

Disable this feature.

part

Start a reference section at every \part command.

chapter

Start a reference section at every \chapter command.

section

Start a reference section at every \section command.

subsection Start a reference section at every \subsection command.
The starred versions of these commands will not start a new reference section.

51

refsegment=none, part, chapter, section, subsection

default: none

Similar to the refsection option but starts a new reference segment. This is
equivalent to the \newrefsegment command, see § 3.6.6 for details. When using
both options, note that you can only apply this option to a lower-level document
division than the one refsection is applied to and that nested reference segments
will be local to the enclosing reference section.
citereset=none, part, chapter, section, subsection

default: none

This option automatically executes the \citereset command from § 3.7.8 at a
document division such as a chapter or a section. The following choice of document
divisions is available:
none

Disable this feature.

part

Perform a reset at every \part command.

chapter

Perform a reset at every \chapter command.

section

Perform a reset at every \section command.

subsection Perform a reset at every \subsection command.
The starred versions of these commands will not trigger a reset.
default: true

abbreviate=true, false

Whether or not to use long or abbreviated strings in citations and in the bibliography.
This option aﬀects the localization modules. If this option is enabled, key terms such
as ‘editor’ are abbreviated. If not, they are written out.
date=year, short, long, terse, comp, iso8601

default: comp

This option controls the basic format of printed date speciﬁcations. The following
choices are available:
year

Use only years, for example:
2010
2010–2012

short

Use the short format with verbose ranges, for example:
01/01/2010
21/01/2010–30/01/2010
01/21/2010–01/30/2010

long

Use the long format with verbose ranges, for example:
1st January 2010
21st January 2010–30th January 2010
January 21, 2010–January 30, 2010

terse

Use the short format with compact ranges, for example:
21–30/01/2010
01/21–01/30/2010

comp

Use the long format with compact ranges, for example:
21st–30th January 2010
January 21–30, 2010

52

iso8601

Use extended iso-8601 format (yyyy-mm-dd), for example:
2010-01-01
2010-01-21/2010-01-30

As seen in the above examples, the actual date format is language speciﬁc. Note
that the month name in all long formats is responsive to the abbreviate package
option. The leading zeros in all short formats may be controlled separately with the
datezeros package option.
default: year

datelabel=year, short, long, terse, comp, iso8601

Similar to the date option but controls the format of the date ﬁeld selected with
\DeclareLabeldate.
origdate=year, short, long, terse, comp, iso8601

default: comp

Similar to the date option but controls the format of the origdate.
eventdate=year, short, long, terse, comp, iso8601

default: comp

Similar to the date option but controls the format of the eventdate.
urldate=year, short, long, terse, comp, iso8601

default: short

Similar to the date option but controls the format of the urldate.
alldates=year, short, long, terse, comp, iso8601
Sets all of the above date options to the same value.
default: true

datezeros=true, false

This option controls whether short and terse dates are printed with leading
zeros.
default: true

dateabbrev=true, false

This option controls whether long and comp dates are printed with long or abbreviated month names. The option is similar to the generic abbreviate option but
speciﬁc to the date formatting.
default: false

defernumbers=true, false

In contrast to standard LaTeX, the numeric labels generated by this package are
normally assigned to the full list of references at the beginning of the document body.
If this option is enabled, numeric labels (i. e., the labelnumber ﬁeld discussed in
§ 4.2.4) are assigned the ﬁrst time an entry is printed in any bibliography. See § 3.12.5
for further explanation. This option requires two LaTeX runs after the data has been
exported to the bbl ﬁle by the backend (in addition to any other runs required by
page breaks changing etc.). An important thing to note is that if you change the
value of this option in your document (or the value of options which depend on this
like some of the options to the \printbibliography macro, see § 3.6.2), then
it is likely that you will need to delete your current aux ﬁle and re-run LaTeX to
obtain the correct numbering. See § 4.1.

53

default: false

punctfont=true, false

This option enables an alternative mechanism for dealing with unit punctuation
after a ﬁeld printed in a diﬀerent font (for example, a title printed in italics). See
\setpunctfont in § 4.7.1 for details.
default: abs

arxiv=abs, ps, pdf, format

Path selector for arXiv links. If hyperlink support is enabled, this option controls
which version of the document the arXiv eprint links will point to. The following
choices are available:
abs

ps

pdf

format

Link to the format selector page.

See § 3.11.7 for details on support for arXiv and electronic publishing information.
default: auto

texencoding=auto, hencodingi

Speciﬁes the encoding of the tex ﬁle. This option aﬀects the data transferred
from the backend to Biblatex. When using Biber, this corresponds to Biber’s
--output_encoding option. The following choices are available:
auto

Try to auto-detect the input encoding. If the inputenc/inputenx/
luainputenc package is available, Biblatex will get the main encoding from that package. If not, it assumes utf-8 encoding if XeTeX
or LuaTeX has been detected, and Ascii otherwise.

hencodingi

Speciﬁes the hencodingi explicitly. This is for odd cases in which
auto-detection fails or you want to force a certain encoding for some
reason.

Note that setting texencoding=hencodingi will also aﬀect the bibencoding
option if bibencoding=auto.
default: auto

bibencoding=auto, hencodingi

Speciﬁes the encoding of the bib ﬁles. When using Biber, this corresponds to Biber’s
--input_encoding option. The following choices are available:
auto

Use this option if the workﬂow is transparent, i. e., if the encoding of
the bib ﬁle is identical to the encoding of the tex ﬁle.

hencodingi

If the encoding of the bib ﬁle is diﬀerent from the one of the tex
ﬁle, you need to specify it explicitly.

By default, Biblatex assumes that the tex ﬁle and the bib ﬁle use the same encoding
(bibencoding=auto). Note that some backends only support a limited number
of encodings. See § 2.4.3 for further instructions.
default: false

safeinputenc=true, false

If this option is enabled, Biblatex will automatically force texencoding=ascii
if the inputenc/inputenx package has been loaded and the input encoding is
utf-8, i. e., it will ignore any macro-based utf-8 support and use Ascii only. Biber
will then try to convert any non-Ascii data in the bib ﬁle to Ascii. For example, it

54

Biber only

will convert Ṣ to \d{S}. See § 2.4.3.4 for an explanation of why you may want to
enable this option.
default: true

bibwarn=true, false

By default, Biblatex will report warnings issued by the backend concerning the data
in the bib ﬁle as LaTeX warnings. Use this option to suppress such warnings.
default: 2

mincrossrefs=hintegeri

Sets the minimum number of cross references to hintegeri when requesting a backend
run.19 Note that when using the BibTeX backend, this package option merely aﬀects
the format of certain requests written to the transcript ﬁle. It will not have any
eﬀect if the editor or compiler script launching BibTeX does not include dedicated
Biblatex support or if BibTeX is manually launched from the command-line.20 See
§ 2.4.4 for details. This option also aﬀects the handling of the xref ﬁeld. See the
ﬁeld description in § 2.2.3 as well as § 2.4.1 for details.
3.1.2.2 Style-specific
The following options are provided by the standard styles (as opposed to the core
package). Technically, they are preamble options like those in § 3.1.2.1.
default: true

isbn=true, false

This option controls whether the ﬁelds isbn/issn/isrn are printed.
default: true

url=true, false

This option controls whether the url ﬁeld and the access date is printed. The
option only aﬀects entry types whose url information is optional. The url ﬁeld of
@online entries is always printed.
default: true

doi=true, false
This option controls whether the ﬁeld doi is printed.

default: true

eprint=true, false
This option controls whether eprint information is printed.
3.1.2.3 Internal

The default settings of the following preamble options are controlled by bibliography
and citation styles. Apart from the pagetracker and firstinits options,
which you may want to adapt, there is normally no need to set them explicitly.
default: false

This option controls the page tracker which is required by the \ifsamepage and
\iffirstonpage tests from § 4.6.2. The possible choices are:
19

If an entry which is cross-referenced by other entries in the bib ﬁle hits this threshold, it is included
in the bibliography even if it has not been cited explicitly. This is a standard feature of the BibTeX
(also Biber) and not speciﬁc to Biblatex. See the description of the crossref ﬁeld in § 2.2.3 for
further information.
20
As of this writing, no LaTeX editors or compiler scripts with dedicated Biblatex support are known,
but this will hopefully change in the future.

55

true

Enable the tracker in automatic mode. This is like spread if LaTeX
is in twoside mode, and like page otherwise.

false

Disable the tracker.

page

Enable the tracker in page mode. In this mode, tracking works on a
per-page basis.

Enable the tracker in spread mode. In this mode, tracking works on a

Note that this tracker is disabled in all ﬂoats, see § 4.11.5.
default: false

citecounter=true, false, context

This option controls the citation counter which is required by citecounter from
§ 4.6.2. The possible choices are:
true

Enable the citation counter in global mode.

false

Disable the citation counter.

context

Enable the citation counter in context-sensitive mode. In this mode,
citations in footnotes and in the body text are counted independently.

citetracker=true, false, context, strict, constrict

default: false

This option controls the citation tracker which is required by the \ifciteseen
and \ifentryseen tests from § 4.6.2. The possible choices are:
true

Enable the tracker in global mode.

false

Disable the tracker.

context

Enable the tracker in context-sensitive mode. In this mode, citations
in footnotes and in the body text are tracked independently.

strict

Enable the tracker in strict mode. In this mode, an item is only considered by the tracker if it appeared in a stand-alone citation, i. e., if a
single entry key was passed to the citation command.

constrict

This mode combines the features of context and strict.

Note that this tracker is disabled in all ﬂoats, see § 4.11.5.
ibidtracker=true, false, context, strict, constrict

default: false

This option controls the ‘ibidem’ tracker which is required by the \ifciteibid
test from § 4.6.2. The possible choices are:
true

Enable the tracker in global mode.

false

Disable the tracker.

context

Enable the tracker in context-sensitive mode. In this mode, citations
in footnotes and in the body text are tracked separately.

strict

Enable the tracker in strict mode. In this mode, potentially ambiguous
references are suppressed. A reference is considered ambiguous if
either the current citation (the one including the ‘ibidem’) or the

56

previous citation (the one the ‘ibidem’ refers to) consists of a list of
references.21
constrict

This mode combines the features of context and strict. It also
keeps track of footnote numbers and detects potentially ambiguous
references in footnotes in a stricter way than the strict option. In
addition to the conditions imposed by the strict option, a reference
in a footnote will only be considered as unambiguous if the current
citation and the previous citation are given in the same footnote or in
immediately consecutive footnotes.

Note that this tracker is disabled in all ﬂoats, see § 4.11.5.
opcittracker=true, false, context, strict, constrict

default: false

This option controls the ‘opcit’ tracker which is required by the \ifopcit test from
§ 4.6.2. This feature is similar to the ‘ibidem’ tracker, except that it tracks citations
on a per-author/editor basis, i. e., \ifopcit will yield true if the cited item is the
same as the last one by this author/editor. The possible choices are:
true

Enable the tracker in global mode.

false

Disable the tracker.

context

Enable the tracker in context-sensitive mode. In this mode, citations
in footnotes and in the body text are tracked separately.

strict

Enable the tracker in strict mode. In this mode, potentially ambiguous
references are suppressed. See ibidtracker=strict for details.

constrict

This mode combines the features of context and strict. See the
explanation of ibidtracker=constrict for details.

Note that this tracker is disabled in all ﬂoats, see § 4.11.5.
loccittracker=true, false, context, strict, constrict

default: false

This option controls the ‘loccit’ tracker which is required by the \ifloccit test
from § 4.6.2. This feature is similar to the ‘opcit’ tracker except that it also checks
whether the hpostnotei arguments match, i. e., \ifloccit will yield true if the
citation refers to the same page cited before. The possible choices are:
true

Enable the tracker in global mode.

false

Disable the tracker.

context

Enable the tracker in context-sensitive mode. In this mode, citations
in footnotes and in the body text are tracked separately.

strict

Enable the tracker in strict mode. In this mode, potentially ambiguous
references are suppressed. See ibidtracker=strict for details.
In addition to that, this mode also checks if the hpostnotei argument
is numerical (based on \ifnumerals from § 4.6.2).

21

For example, suppose the initial citation is “Jones, Title; Williams, Title” and the following one
“ibidem”. From a technical point of view, it is fairly clear that the ‘ibidem’ refers to ‘Williams’
because this is the last reference processed by the previous citation command. To a human reader,
however, this may not be obvious because the ‘ibidem’ may also refer to both titles. The strict mode
avoids such ambiguous references.

57

constrict

This mode combines the features of context and strict. See the
explanation of ibidtracker=constrict for details. In addition
to that, this mode also checks if the hpostnotei argument is numerical
(based on \ifnumerals from § 4.6.2).

Note that this tracker is disabled in all ﬂoats, see § 4.11.5.
idemtracker=true, false, context, strict, constrict

default: false

This option controls the ‘idem’ tracker which is required by the \ifciteidem test
from § 4.6.2. The possible choices are:
true

Enable the tracker in global mode.

false

Disable the tracker.

context

Enable the tracker in context-sensitive mode. In this mode, citations
in footnotes and in the body text are tracked separately.

strict

This is an alias for true, provided only for consistency with the other
trackers. Since ‘idem’ replacements do not get ambiguous in the same
way as ‘ibidem’ or ‘op. cit.’, the strict tracking mode does not apply
to them.

constrict

This mode is similar to context with one additional condition: a
reference in a footnote will only be considered as unambiguous if
the current citation and the previous citation are given in the same
footnote or in immediately consecutive footnotes.

Note that this tracker is disabled in all ﬂoats, see § 4.11.5.
default: true

parentracker=true, false

This option controls the parenthesis tracker which keeps track of nested
parentheses and brackets. This information is used by \parentext and
\brackettext from § 3.7.5, \mkbibparens and \mkbibbrackets from
§ 4.10.4 and \bibopenparen, \bibcloseparen, \bibopenbracket,
\bibclosebracket (also § 4.10.4).
default: 3

maxparens=hintegeri

The maximum permitted nesting level of parentheses and brackets. If parentheses
and brackets are nested deeper than this value, Biblatex will issue errors.
default: false

firstinits=true, false

When enabled, all ﬁrst and middle names will be rendered as initials. The option will
aﬀect the \iffirstinits test from § 4.6.2.
default: false

sortfirstinits=true, false

When enabled, sorting names will only use their initials. This is separate from
firstinits in case users want to show only inits but sort on full names, for
example.
default: false

terseinits=true, false

This option controls the format of initials generated by Biblatex. If enabled, initials
are rendered using a terse format without dots and spaces. For example, the initials
of Donald Ervin Knuth would be rendered as ‘D. E.’ by default, and as ‘DE’ if this

58

Biber only

option is enabled. The option will aﬀect the \ifterseinits test from § 4.6.2.
With Biber, the option works by redeﬁning some macros which control the format
of initials. See § 3.12.4 for details.

Biber only

default: false

labelalpha=true, false

Whether or not to provide the special ﬁelds labelalpha and extraalpha, see
§ 4.2.4 for details. With Biber, this option is also settable on a per-type basis. See
also maxalphanames and minalphanames. Table 5 summarises the various
extra* disambiguation counters and what they track.
default: 3

maxalphanames=hintegeri

Biber only

Biber only

Similar to the maxnames option but customizes the format of the labelalpha
ﬁeld.
default: 1

minalphanames=hintegeri

Biber only

Similar to the minnames option but customizes the format of the labelalpha
ﬁeld.
default: false

labelnumber=true, false

Whether or not to provide the special ﬁeld labelnumber, see § 4.2.4 for details.
This option is also settable on a per-type basis.
default: false

labeltitle=true, false

Biber only

Whether or not to provide the special ﬁeld extratitle, see § 4.2.4 for details.
Note that the special ﬁeld labeltitle is always provided and this option controls
rather whether labeltitle is used to generate extratitle information. This
option is also settable on a per-type basis. Table 5 summarises the various extra*
disambiguation counters and what they track.
default: false

labeltitleyear=true, false

Biber only

Whether or not to provide the special ﬁeld extratitleyear, see § 4.2.4 for details.
Note that the special ﬁeld labeltitle is always provided and this option controls
rather whether labeltitle is used to generate extratitleyear information.
This option is also settable on a per-type basis. Table 5 summarises the various
extra* disambiguation counters and what they track.
default: false

labeldate=true, false

Whether or not to provide the special ﬁelds labelyear, labelmonth,
labelday and extrayear, see § 4.2.4 for details. With Biber, this option is also
settable on a per-type basis. Table 5 summarises the various extra* disambiguation
counters and what they track.

Biber only

default: false

singletitle=true, false

Whether or not to provide the data required by the \ifsingletitle test, see
§ 4.6.2 for details. With Biber, this option is also settable on a per-type basis.

Biber only

default: false

Biber only

uniquename=true, false, init, full, allinit, allfull,
mininit, minfull

Whether or not to update the uniquename counter, see § 4.6.2 for details. This
feature will disambiguate individual names in the labelname list. This option is
also settable on a per-type basis. The possible choices are:

59

Option

Enabled field

Enabled counter

Counter tracks

labelalpha
labeldate

labelalpha
labelyear

extraalpha
extrayear

labeltitle

—

extratitle

labeltitleyear

—

extratitleyear

label
labelname+labelyear
labelname+labeltitle
labeltitle+labelyear

Table 5: Disambiguation counters
true

An alias for full.

false

Disable this feature.

init

Disambiguate names using initials only.

full

Disambiguate names using initials or full names, as required.

allinit

Similar to init but disambiguates all names in the labelname list,
beyond maxnames/minnames/uniquelist.

allfull

Similar to full but disambiguates all names in the labelname list,
beyond maxnames/minnames/uniquelist.

mininit

A variant of init which only disambiguates names in lists with
identical last names.

minfull

A variant of full which only disambiguates names in lists with
identical last names.

Note that the uniquename option will also aﬀect uniquelist, the
\ifsingletitle test, and the extrayear ﬁeld. See § 4.11.4 for further details and practical examples.
default: false

uniquelist=true, false, minyear

Whether or not to update the uniquelist counter, see § 4.6.2 for details.
This feature will disambiguate the labelname list if it has become ambiguous
after maxnames/minnames truncation. Essentially, it overrides maxnames/
minnames on a per-ﬁeld basis. This option is also settable on a per-type basis.
The possible choices are:
true

Disambiguate the labelname list.

false

Disable this feature.

minyear

Disambiguate the labelname list only if the truncated list is identical to another one with the same labelyear. This mode of operation
is useful for author-year styles and requires labeldate=true.

Note that the uniquelist option will also aﬀect the \ifsingletitle test and
the extrayear ﬁeld. See § 4.11.4 for further details and practical examples. See
§ 4.11.4 for further details and practical examples.

3.1.3 Entry Options
Entry options are package options which can be adjusted on a per-entry basis in the
options ﬁeld from § 2.2.3.

60

Biber only

3.1.3.1 Preamble/Type/Entry Options
The following options are settable on a per-entry basis in the options ﬁeld. In
addition to that, they may also be used in the optional argument to \usepackage
as well as in the conﬁguration ﬁle and the document preamble. This is useful if you
want to change the default behavior globally.
default: true

useauthor=true, false

Whether the author is used in labels and considered during sorting. This may
be useful if an entry includes an author ﬁeld but is usually not cited by author
for some reason. Setting useauthor=false does not mean that the author is
ignored completely. It means that the author is not used in labels and ignored
during sorting. The entry will then be alphabetized by editor or title. With
the standard styles, the author is printed after the title in this case. See also § 3.5.
With Biber, this option is also settable on a per-type basis.

Biber only

default: true

useeditor=true, false

Whether the editor replaces a missing author in labels and during sorting. This
may be useful if an entry includes an editor ﬁeld but is usually not cited by editor.
Setting useeditor=false does not mean that the editor is ignored completely.
It means that the editor does not replace a missing author in labels and during
sorting. The entry will then be alphabetized by title. With the standard styles,
the editor is printed after the title in this case. See also § 3.5. With Biber, this
option is also settable on a per-type basis.

Biber only

default: false

usetranslator=true, false

Whether the translator replaces a missing author/editor in labels and during sorting. Setting usetranslator=true does not mean that the translator
overrides the author/editor. It means that the translator is considered as a
fallback if the author/editor is missing or if useauthor and useeditor are
set to false. In other words, in order to cite a book by translator rather than by
author, you need to set the following options: With Biber, this option is also settable
on a per-type basis.

Biber only

@Book{...,
options
= {useauthor=false,usetranslator=true},
author
= {...},
translator = {...},
...
With the standard styles, the translator is printed after the title by default. See
also § 3.5.
default: false

useprefix=true, false

Whether the name preﬁx (von, van, of, da, de, della, etc.) is considered when printing
the last name in citations. This also aﬀects the sorting and formatting of the bibliography as well as the generation of certain types of labels. If this option is enabled,
Biblatex always precedes the last name with the preﬁx. For example, Ludwig van
Beethoven would be cited as “Beethoven” and alphabetized as “Beethoven, Ludwig
van” by default. If this option is enabled, he is cited as “van Beethoven” and alphabetized as “Van Beethoven, Ludwig” instead. With Biber, this option is also settable
on a per-type basis.

61

Biber only

indexing=true, false, cite, bib
The indexing option is also settable per-type or per-entry basis. See § 3.1.2.1 for
details.
3.1.3.2 Type/Entry Options
The following options are only settable on a per-entry basis in the options ﬁeld.
They are not available globally.
default: false

skipbib=true, false

If this option is enabled, the entry is excluded from the bibliography but it may still
be cited. With Biber, this option is also settable on a per-type basis.

Biber only

default: false

skiplos=true, false

If this option is enabled, the entry is excluded from the list of shorthands. It is still
included in the bibliography and it may also be cited by shorthand. With Biber, this
option is also settable on a per-type basis.

Biber only

default: false

skiplab=true, false

If this option is enabled, Biblatex will not assign any labels to the entry. It is not
required for normal operation. Use it with care. If enabled, Biblatex can not guarantee
unique citations for the respective entry and citations styles which require labels
may fail to create valid citations for the entry. With Biber, this option is also settable
on a per-type basis.

Biber only

default: false

dataonly=true, false

Setting this option is equivalent to uniquename=false, uniquelist=false,
skipbib, skiplos, and skiplab. It is not required for normal operation. Use
it with care. With Biber, this option is also settable on a per-type basis.
Biber only
labelnamefield=hﬁeldnamei
Speciﬁes the ﬁeld to consider ﬁrst when looking for a labelname candidate. It is
essentially prepended to the search list created by \DeclareLabelname for just
this entry.
labeltitlefield
=hﬁeldnamei
Speciﬁes the ﬁeld to consider ﬁrst when looking for a labeltitle candidate. It
is essentially prepended to the search list created by \DeclareLabeltitle for
just this entry.
3.1.4 Legacy Options
The following legacy option may be used globally in the optional argument to
\documentclass or locally in the optional argument to \usepackage:
openbib This option is provided for backwards compatibility with the standard LaTeX document classes. openbib is similar to block=par.

62

Deprecated

3.2 Global Customization
Apart from writing new citation and bibliography styles, there are numerous ways to
customize the styles which ship with this package. Customization will usually take
place in the preamble, but there is also a conﬁguration ﬁle for permanent adaptions.
The conﬁguration ﬁle may also be used to initialize the package options to a value
diﬀerent from the package default.
3.2.1 Configuration File
If available, this package will load the conﬁguration ﬁle biblatex.cfg. This ﬁle
is read at the end of the package, immediately after the citation and bibliography
3.2.2 Setting Package Options
The load-time package options in § 3.1.1 must be given in the optional argument to
\usepackage. The package options in § 3.1.2 may also be given in the preamble.
The options are executed with the following command:
\ExecuteBibliographyOptions[hentrytype, …i]{hkey=value, …i}
This command may also be used in the conﬁguration ﬁle to modify the default setting
of a package option. Certain options are also settable on a per-type basis. In this
case, the optional hentrytypei argument speciﬁes the entry type. The hentrytypei
argument may be a comma-separated list of values.

3.3 Standard Styles
This section provides a short description of all bibliography and citation styles which
ship with the Biblatex package. If you want to write your own styles, see § 4.
3.3.1 Citation Styles
The citation styles which come with this package implement several common citation
schemes. All standard styles cater for the shorthand ﬁeld and support hyperlinks
as well as indexing.
numeric This style implements a numeric citation scheme similar to the standard biblio-

graphic facilities of LaTeX. It should be employed in conjunction with a numeric
bibliography style which prints the corresponding labels in the bibliography. It is
intended for in-text citations. The style will set the following package options at
load time: autocite=inline, labelnumber=true. This style also provides
an additional preamble option called subentry which aﬀects the handling of entry
sets. If this option is disabled, citations referring to a member of a set will point to
the entire set. If it is enabled, the style supports citations like “[5c]” which point to a
subentry in a set (the third one in this example). See the style example for details.
numeric-comp

A compact variant of the numeric style which prints a list of more than two consecutive numbers as a range. This style is similar to the cite package and the
sort&compress option of the natbib package in numerical mode. For example, instead of “[8, 3, 1, 7, 2]” this style would print “[1–3, 7, 8]”. It is intended
for in-text citations. The style will set the following package options at load time:
autocite=inline, sortcites=true, labelnumber=true. It also provides the subentry option.

63

numeric-verb

A verbose variant of the numeric style. The diﬀerence aﬀects the handling of
a list of citations and is only apparent when multiple entry keys are passed to a
single citation command. For example, instead of “[2, 5, 6]” this style would print
“[2]; [5]; [6]”. It is intended for in-text citations. The style will set the following
package options at load time: autocite=inline, labelnumber=true. It also
provides the subentry option.

alphabetic

This style implements an alphabetic citation scheme similar to the alpha.bst
style of traditional BibTeX. The alphabetic labels resemble a compact author-year
style to some extent, but the way they are employed is similar to a numeric citation
scheme. For example, instead of “Jones 1995” this style would use the label “[Jon95]”.
“Jones and Williams 1986” would be rendered as “[JW86]”. This style should be
employed in conjunction with an alphabetic bibliography style which prints the
corresponding labels in the bibliography. It is intended for in-text citations. The
style will set the following package options at load time: autocite=inline,
labelalpha=true.

alphabetic-verb A verbose variant of the alphabetic style. The diﬀerence aﬀects the handling

of a list of citations and is only apparent when multiple entry keys are passed to
a single citation command. For example, instead of “[Doe92; Doe95; Jon98]” this
style would print “[Doe92]; [Doe95]; [Jon98]”. It is intended for in-text citations.
The style will set the following package options at load time: autocite=inline,
labelalpha=true.
authoryear This style implements an author-year citation scheme. If the bibliography contains

two or more works by the same author which were all published in the same year, a
letter is appended to the year. For example, this style would print citations such as
“Doe 1995a; Doe 1995b; Jones 1998”. This style should be employed in conjunction
with an author-year bibliography style which prints the corresponding labels in the
bibliography. It is primarily intended for in-text citations, but it could also be used
with citations given in footnotes. The style will set the following package options
at load time: autocite=inline, labeldate=true, uniquename=full,
uniquelist=true.
authoryear-comp A compact variant of the authoryear style which prints the author only once if

subsequent references passed to a single citation command share the same author. If
they share the same year as well, the year is also printed only once. For example,
instead of “Doe 1995b; Doe 1992; Jones 1998; Doe 1995a” this style would print “Doe
1992, 1995a,b; Jones 1998”. It is primarily intended for in-text citations, but it could
also be used with citations given in footnotes. The style will set the following package
options at load time: autocite=inline, sortcites=true, labeldate=
true, uniquename=full, uniquelist=true.
authoryear-ibid

A variant of the authoryear style which replaces repeated citations by the abbreviation ibidem unless the citation is the ﬁrst one on the current page or doublepage spread, or the ibidem would be ambiguous in the sense of the package option ibidtracker=constrict. The style will set the following package options at load time: autocite=inline, labeldate=true, uniquename=
full, uniquelist = true, ibidtracker = constrict, pagetracker =
true. This style also provides an additional preamble option called ibidpage. See
the style example for details.

authoryear-icomp

A style combining authoryear-comp and authoryear-ibid.
The
style will set the following package options at load time: autocite =

64

inline, labeldate = true, uniquename = full, uniquelist = true,
ibidtracker=constrict, pagetracker=true, sortcites=true. This
style also provides an additional preamble option called ibidpage. See the style
example for details.
authortitle

This style implements a simple author-title citation scheme. It will make use of the
shorttitle ﬁeld, if available. It is intended for citations given in footnotes. The
style will set the following package options at load time: autocite=footnote,
uniquename=full, uniquelist=true.

authortitle-comp A compact variant of the authortitle style which prints the author only once if

subsequent references passed to a single citation command share the same author.
For example, instead of “Doe, First title; Doe, Second title” this style would print
“Doe, First title, Second title”. It is intended for citations given in footnotes. The
style will set the following package options at load time: autocite=footnote,
sortcites=true, uniquename=full, uniquelist=true.
authortitle-ibid

A variant of the authortitle style which replaces repeated citations by the
abbreviation ibidem unless the citation is the ﬁrst one on the current page or doublepage spread, or the ibidem would be ambiguous in the sense of the package option
ibidtracker=constrict. It is intended for citations given in footnotes. The
style will set the following package options at load time: autocite=footnote,
uniquename = full, uniquelist = true, ibidtracker = constrict,
pagetracker = true. This style also provides an additional preamble option
called ibidpage. See the style example for details.

authortitle-icomp A

style combining the features of authortitle-comp and
authortitle-ibid. The style will set the following package options at
ibidtracker=constrict, pagetracker=true, sortcites=true. This
style also provides an additional preamble option called ibidpage. See the style
example for details.

authortitle-terse

A terse variant of the authortitle style which only prints the title if the bibliography contains more than one work by the respective author/editor. This style will
make use of the shorttitle ﬁeld, if available. It is suitable for in-text citations as
well as citations given in footnotes. The style will set the following package options
at load time: autocite=inline, singletitle=true, uniquename=full,
uniquelist=true.

authortitle-tcomp A

style combining the features of authortitle-comp and
authortitle-terse. This style will make use of the shorttitle ﬁeld, if
available. It is suitable for in-text citations as well as citations given in footnotes.
The style will set the following package options at load time: autocite =
inline, sortcites = true, singletitle = true, uniquename = full,
uniquelist=true.

authortitle-ticomp

A style combining the features of authortitle-icomp and
authortitle-terse. In other words: a variant of the authortitle-tcomp
style with an ibidem feature. This style is suitable for in-text citations as well
as citations given in footnotes. It will set the following package options at load
time: autocite = inline, ibidtracker = constrict, pagetracker =
true, sortcites = true, singletitle = true, uniquename = full,

65

uniquelist=true. This style also provides an additional preamble option called
ibidpage. See the style example for details.
verbose

A verbose citation style which prints a full citation similar to a bibliography entry
when an entry is cited for the ﬁrst time, and a short citation afterwards. If available,
the shorttitle ﬁeld is used in all short citations. If the shorthand ﬁeld is
deﬁned, the shorthand is introduced on the ﬁrst citation and used as the short
citation thereafter. This style may be used without a list of references and shorthands
since all bibliographic data is provided on the ﬁrst citation. It is intended for citations
given in footnotes. The style will set the following package options at load time:
autocite=footnote, citetracker=context. This style also provides an
additional preamble option called citepages. See the style example for details.

verbose-ibid A variant of the verbose style which replaces repeated citations by the abbreviation

ibidem unless the citation is the ﬁrst one on the current page or double-page spread,
or the ibidem would be ambiguous in the sense of ibidtracker=strict. This
style is intended for citations given in footnotes. The style will set the following
package options at load time: autocite=footnote, citetracker=context,
ibidtracker=constrict, pagetracker=true. This style also provides
additional preamble options called ibidpage and citepages. See the style
example for details.
verbose-note This style is similar to the verbose style in that it prints a full citation similar to

a bibliography entry when an entry is cited for the ﬁrst time, and a short citation
afterwards. In contrast to the verbose style, the short citation is a pointer to the
footnote with the full citation. If the bibliography contains more than one work
by the respective author/editor, the pointer also includes the title. If available, the
shorttitle ﬁeld is used in all short citations. If the shorthand ﬁeld is deﬁned,
it is handled as with the verbose style. This style may be used without a list of
references and shorthands since all bibliographic data is provided on the ﬁrst citation.
It is exclusively intended for citations given in footnotes. The style will set the
following package options at load time: autocite=footnote, citetracker=
context, singletitle=true. This style also provides additional preamble
options called pageref and citepages. See the style example for details.
verbose-inote A variant of the verbose-note style which replaces repeated citations by the

abbreviation ibidem unless the citation is the ﬁrst one on the current page or doublepage spread, or the ibidem would be ambiguous in the sense of ibidtracker=
strict. This style is exclusively intended for citations given in footnotes. It
will set the following package options at load time: autocite = footnote,
citetracker = context, ibidtracker = constrict, singletitle =
true, pagetracker = true. This style also provides additional preamble options called ibidpage, pageref, and citepages. See the style example for
details.
verbose-trad1 This style implements a traditional citation scheme. It is similar to the verbose

style in that it prints a full citation similar to a bibliography entry when an item
is cited for the ﬁrst time, and a short citation afterwards. Apart from that, it
uses the scholarly abbreviations ibidem, idem, op. cit., and loc. cit. to replace recurrent authors, titles, and page numbers in repeated citations in a special way.
If the shorthand ﬁeld is deﬁned, the shorthand is introduced on the ﬁrst citation and used as the short citation thereafter. This style may be used without a list of references and shorthands since all bibliographic data is provided

66

on the ﬁrst citation. It is intended for citations given in footnotes. The style
will set the following package options at load time: autocite = footnote,
citetracker = context, ibidtracker = constrict, idemtracker =
constrict, opcittracker=context, loccittracker=context. This
style also provides additional preamble options called ibidpage, strict, and
citepages. See the style example for details.
verbose-trad2 Another traditional citation scheme. It is also similar to the verbose style but uses

scholarly abbreviations like ibidem and idem in repeated citations. In contrast to
the verbose-trad1 style, the logic of the op. cit. abbreviations is diﬀerent in this
style and loc. cit. is not used at all. It is in fact more similar to verbose-ibid and
verbose-inote than to verbose-trad1. The style will set the following package options at load time: autocite = footnote, citetracker = context,
ibidtracker=constrict, idemtracker=constrict. This style also provides additional preamble options called ibidpage, strict, and citepages.
See the style example for details.

but uses the scholarly abbreviations ibidem and op. cit. in a slightly diﬀerent way. The
style will set the following package options at load time: autocite=footnote,
citetracker=context, ibidtracker=constrict, loccittracker=
constrict. This style also provides additional preamble options called strict
and citepages. See the style example for details.

A citation style which goes with the bibliography style by the same name. It simply
The following citation styles are special purpose styles. They are not intended for
the ﬁnal version of a document:

draft

A draft style which uses the entry keys in citations. The style will set the following
package options at load time: autocite=plain.

debug This style prints the entry key rather than some kind of label. It is intended for

debugging only and will set the following package options at load time: autocite=
plain.
3.3.2 Bibliography Styles
All bibliography styles which come with this package use the same basic format for
the individual bibliography entries. They only diﬀer in the kind of label printed in the
bibliography and the overall formatting of the list of references. There is a matching
bibliography style for every citation style. Note that some bibliography styles are
not mentioned below because they simply load a more generic style. For example,
the bibliography style authortitle-comp will load the authortitle style.
numeric This style prints a numeric label similar to the standard bibliographic facilities of

LaTeX. It is intended for use in conjunction with a numeric citation style. Note that
the shorthand ﬁeld overrides the default label. The style will set the following
package options at load time: labelnumber=true. This style also provides an
additional preamble option called subentry which aﬀects the formatting of entry
sets. If this option is enabled, all members of a set are marked with a letter which
may be used in citations referring to a set member rather than the entire set. See the
style example for details.

67

alphabetic

This style prints an alphabetic label similar to the alpha.bst style of traditional
BibTeX. It is intended for use in conjunction with an alphabetic citation style. Note
that the shorthand ﬁeld overrides the default label. The style will set the following
package options at load time: labelalpha=true, sorting=anyt.

authoryear This style diﬀers from the other styles in that the publication date is not printed

towards the end of the entry but rather after the author/editor. It is intended for
use in conjunction with an author-year citation style. Recurring author and editor
names are replaced by a dash unless the entry is the ﬁrst one on the current page
dashed which controls this feature. It also provided a preamble option called
mergedate. See the style example for details. The style will set the following package options at load time: labeldate=true, sorting=nyt, pagetracker=
true, mergedate=true.
authortitle

This style does not print any label at all. It is intended for use in conjunction with
an author-title citation style. Recurring author and editor names are replaced by a
dash unless the entry is the ﬁrst one on the current page or double-page spread. This
style also provides an additional preamble option called dashed which controls this
feature. See the style example for details. The style will set the following package

verbose

This style is similar to the authortitle style. It also provides an additional
preamble option called dashed. See the style example for details. The style will set
the following package options at load time: pagetracker=true.

This special bibliography style is designed for personal reading lists, annotated bibliographies, and similar applications. It optionally includes the ﬁelds annotation,
abstract, library, and file in the bibliography. If desired, it also adds various kinds of short headers to the bibliography. This style also provides the additional preamble options entryhead, entrykey, annotation, abstract,
library, and file which control whether or not the corresponding items are
printed in the bibliography. See the style example for details. See also § 3.11.8. The
style will set the following package options at load time: loadfiles = true,
entryhead = true, entrykey = true, annotation = true, abstract =
true, library=true, file=true.
The following bibliography styles are special purpose styles. They are not intended
for the ﬁnal version of a document:

draft

This draft style includes the entry keys in the bibliography. The bibliography will be
sorted by entry key. The style will set the following package options at load time:
sorting=debug.

debug This style prints all bibliographic data in tabular format. It is intended for debugging

only and will set the following package options at load time: sorting=debug.

3.4 Related Entries
Almost all bibliography styles require authors to specify certain types of relationship between entries such as “Reprint of”, “Reprinted in” etc. It is impossible to
provide data ﬁelds to cover all of these relationships and so Biblatex provides a
general mechanism for this using the entry ﬁelds related, relatedtype and
relatedstring. A related entry does not need to be cited and does not appear in

68

the bibliography itself (unless of course it is also cited itself independently) as a clone
is taken of the related entry to be used as a data source. The relatedtype ﬁeld
should specify a localization string which will be printed before the information from
the related entries is printed, for example “Orig. Pub. as”. The relatedstring
ﬁeld can be used to override the string determined via relatedtype. Some examples:
@Book{key1,
...
related
= {key2},
relatedtype = {reprintof},
...
}
@Book{key2,
...
}
Here we specify that entry key1 is a reprint of entry key2. In the bibliography
driver for Book entries, when \usebibmacro{related} is called for entry
key1:
• If the localization string “reprintof” is deﬁned, it is printed in the
relatedstring:reprintof format. If this formatting directive is undeﬁned, the string is printed in the relatedstring:default format.
• If the related:reprintof macro is deﬁned, it is used to format the information contained in entry key2, otherwise the related:default macro
is used
• If the related:reprintof format is deﬁned, it is used to format both the
localization string and data. If this format is not deﬁned, then the related
It is also supported to have cascading and/or circular relations:
@Book{key1,
...
related
= {key2},
relatedtype = {reprintof},
...
}
@Book{key2,
...
related
= {key3},
relatedtype = {translationof},
...
}
@Book{key3,
...
related

= {key2},

69

relatedtype = {translatedas},
...
}
Multiple relations to the same entry are also possible:
@MVBook{key1,
...
related
= {key2,key3},
relatedtype = {multivolume},
...
}
@Book{key2,
...
}
@Book{key3,
...
}
Note the the order of the keys in lists of multiple related entries is important. The
data from multiple related entries is printed in the order of the keys listed in this
ﬁeld. See § 4.5.1 for a more details on the mechanisms behind this feature. You can
turn this feature oﬀ using the package option related from § 3.1.2.1.
You can use the relatedoptions to set options on the related entry data clone.
This is useful if you need to override the dataonly option which is set by default
on all related entry clones. For example, if you will expose some of the names in
the related clone in your document, you may want to have them disambiguated
from names in other entries but normally this won’t happen as related clones have
the per-entry dataonly option set and this in turn sets uniquename=false
and uniquelist=false. In such a case, you can set relatedoptions to just
skiplab, skipbib, skiplos.

3.5 Sorting Options
This package supports various sorting schemes for the bibliography. The sorting
scheme is selected with the sorting package option from § 3.1.2.1. Apart from the
regular data ﬁelds there are also some special ﬁelds which may be used to optimize the
sorting of the bibliography. Appendices C.1 and C.2 give an outline of the alphabetic
sorting schemes supported by Biblatex. Chronological sorting schemes are listed in
appendix C.3. A few explanations concerning these schemes are in order.
The ﬁrst item considered in the sorting process is always the presort ﬁeld of
the entry. If this ﬁeld is undeﬁned, Biblatex will use the default value ‘mm’ as a
presort string. The next item considered is the sortkey ﬁeld. If this ﬁeld is deﬁned,
it serves as the master sort key. Apart from the presort ﬁeld, no further data
is considered in this case. If the sortkey ﬁeld is undeﬁned, sorting continues
with the name. The package will try using the sortname, author, editor, and
translator ﬁelds, in this order. Which ﬁelds are considered also depends on
the setting of the useauthor, useeditor, and usetranslator options. If all
three of them are disabled, the sortname ﬁeld is ignored as well. Note that all name
ﬁelds are responsive to maxnames and minnames. If no name ﬁeld is available,

70

either because all of them are undeﬁned or because useauthor, useeditor,
and usetranslator are disabled, Biblatex will fall back to the sorttitle
and title ﬁelds as a last resort. The remaining items are, in various order: the
sortyear ﬁeld, if deﬁned, or the ﬁrst four digits of the year ﬁeld otherwise;
the sorttitle ﬁeld, if deﬁned, or the title ﬁeld otherwise; the volume ﬁeld,
which is padded to four digits with leading zeros, or the string 0000 otherwise.
Note that the sorting schemes shown in appendix C.2 include an additional item:
labelalpha is the label used by ‘alphabetic’ bibliography styles. Strictly speaking,
the string used for sorting is labelalpha + extraalpha. The sorting schemes
in appendix C.2 are intended to be used in conjunction with alphabetic styles only.
The chronological sorting schemes presented in appendix C.3 also make use of
the presort and sortkey ﬁelds, if deﬁned. The next item considered is the
sortyear or the year ﬁeld, depending on availability. The ynt scheme extracts
the ﬁrst four Arabic ﬁgures from the ﬁeld. If both ﬁelds are undeﬁned, the string
9999 is used as a fallback value. This means that all entries without a year will be
moved to the end of the list. The ydnt scheme is similar in concept but sorts the year
in descending order. As with the ynt scheme, the string 9999 is used as a fallback
value. The remaining items are similar to the alphabetic sorting schemes discussed
above. Note that the ydnt sorting scheme will only sort the date in descending
order. All other items are sorted in ascending order as usual.
Using special ﬁelds such as sortkey, sortname, or sorttitle is usually not
required. The Biblatex package is quite capable of working out the desired sorting
order by using the data found in the regular ﬁelds of an entry. You will only need
them if you want to manually modify the sorting order of the bibliography or if any
data required for sorting is missing. Please refer to the ﬁeld descriptions in § 2.2.3
for details on possible uses of the special ﬁelds. Also note that using Biber instead of
legacy BibTeX is strongly recommended.

3.6 Bibliography Commands
3.6.1 Resources
Adds a hresourcei, such as a .bib ﬁle, to the default resource list. This command is
only available in the preamble. It replaces the \bibliography legacy command.
Note that ﬁles must be speciﬁed with their full name, including the extension. Do
not omit the .bib extension from the ﬁlename. Also note that the hresourcei is a
for example:

Since the hresourcei string is read in a verbatim-like mode, it may contain arbitrary
characters. The only restriction is that any curly braces must be balanced. The
following hoptionsi are available:
label=hidentiﬁeri
Assigns a label to a resource. The hidentiﬁeri may be used in place of the full resource
name in the optional argument of refsection (see § 3.6.5).

71

default: local

location=hlocationi

The location of the resource. The hlocationi may be either local for local resources
or remote for urls. Remote resources require Biber. The protocols http and ftp
are supported. The remote url must be a fully qualiﬁed path to a bib ﬁle or a url
which returns a bib ﬁle.
default: file

type=htypei
The type of resource. Currently, the only supported type is file.

default: bibtex

datatype=hdatatypei

The data type (format) of the resource. The following formats are currently supported:
bibtex

BibTeX format.

ris

Research Information Systems (ris) format.22 Note that an ID
tag is required in all ris records. The ID value corresponds to
the entry key. Support for this format is experimental.

Biber only

zoterordfxml Zotero rdf/xml format. Support for this format is experimental.
Refer to the Biber manual for details.

Biber only

EndNote xml format. Support for this format is experimental.
Refer to the Biber manual for details.

Biber only

endnotexml

This command diﬀers from \addbibresource in that the hresourcei is added to
the global resource list. The diﬀerence between default resources and global resources
is only relevant if there are reference sections in the document and the optional
argument of refsection (§ 3.6.5) is used to specify alternative resources which
replace the default resource list. Any global resources are added to all reference
sections.
This command diﬀers from \addbibresource in that the resource hoptionsi are
registered but the hresourcei not added to any resource list. This is only required for
resources which 1) are given exclusively in the optional argument of refsection
(§ 3.6.5) and 2) require options diﬀerent from the default settings. In this case,
\addsectionbib is employed to qualify the hresourcei prior to using it by setting
the appropriate hoptionsi in the preamble. The label option may be useful to assign
a short name to the resource.
\bibliography{hbibﬁle, …i}

Deprecated

The legacy command for adding bibliographic resources, supported for backwards
compatibility. Like \addbibresource, this command is only available in the
preamble and adds resources to the default resource list. Its argument is a commaseparated list of bib ﬁles. The .bib extension may be omitted from the ﬁlename.
Invoking this command multiple times to add more ﬁles is permissible. This command
3.6.2 The Bibliography

22

http://en.wikipedia.org/wiki/RIS_(file_format)

72

\printbibliography[hkey=value, …i]
This command prints the bibliography. It takes one optional argument, which is a
list of options given in hkeyi=hvaluei notation. The following options are available:
env=hnamei

default: bibliography/shorthands

The ‘high-level’ layout of the bibliography and the list of shorthands is controlled by environments deﬁned with \defbibenvironment. This option selects an environment. The hnamei corresponds to the identiﬁer used
when deﬁning the environment with \defbibenvironment. By default,
the \printbibliography command uses the identiﬁer bibliography;

default: bibliography/shorthands

The bibliography and the list of shorthands typically have a chapter or section heading.
default, the \printbibliography command uses the heading bibliography;
title=htexti
This option overrides the default title provided by the heading selected with the
heading option, if supported by the heading deﬁnition. See § 3.6.8 for details.
prenote=hnamei
The prenote is an arbitrary piece of text to be printed after the heading but before the list of references. This option selects the prenote hnamei, as deﬁned with
\defbibnote. By default, no prenote is printed. The note is printed in the standard
text font. It is not aﬀected by \bibsetup and \bibfont but it may contain its
own font declarations. See § 3.6.9 for details.
postnote=hnamei
The postnote is an arbitrary piece of text to be printed after the list of references.
This option selects the postnote hnamei, as deﬁned with \defbibnote. By default,
no postnote is printed. The note is printed in the standard text font. It is not aﬀected
by \bibsetup and \bibfont but it may contain its own font declarations. See
§ 3.6.9 for details.
default: current section

section=hintegeri

Print only entries cited in reference section hintegeri. The reference sections are
numbered starting at 1. All citations given outside a refsection environment are
assigned to section 0. See § 3.6.5 for details and § 3.11.3 for usage examples.
default: 0

segment=hintegeri

Print only entries cited in reference segment hintegeri. The reference segments are
numbered starting at 1. All citations given outside a refsegment environment
are assigned to segment 0. See § 3.6.6 for details and § 3.11.3 for usage examples.
Remember that segments within a section are numbered local to the section so the
segment you request will be the nth segment in the requested (or currently active
enclosing) section.

73

Biber only

sorting=hnamei
Sort the bibliography according to a built-in or user speciﬁed sorting scheme deﬁned
with \DeclareSortingScheme. If omitted, the global sorting scheme speciﬁed
with package sorting option is used. This option facilitates multiple bibliography
lists within a refsection, each of which can be sorted diﬀerently.
type=hentrytypei
Print only entries whose entry type is hentrytypei.
nottype=hentrytypei
Print only entries whose entry type is not hentrytypei. This option may be used
multiple times.
subtype=hsubtypei
Print only entries whose entrysubtype is deﬁned and hsubtypei.
notsubtype=hsubtypei
Print only entries whose entrysubtype is undeﬁned or not hsubtypei. This option
may be used multiple times.
keyword=hkeywordi
Print only entries whose keywords ﬁeld includes hkeywordi. This option may be
used multiple times.
notkeyword=hkeywordi
Print only entries whose keywords ﬁeld does not include hkeywordi. This option
may be used multiple times.
category=hcategoryi
Print only entries assigned to category hcategoryi. This option may be used multiple
times.
notcategory=hcategoryi
Print only entries not assigned to category hcategoryi. This option may be used
multiple times.
filter=hnamei
Filter the entries with ﬁlter hnamei, as deﬁned with \defbibfilter. See § 3.6.10
for details.
check=hnamei
Filter the entries with check hnamei, as deﬁned with \defbibcheck. See § 3.6.10
for details.

74

prefixnumbers=hstringi
This option applies to numerical citation/bibliography styles only and requires that
the defernumbers option from § 3.1.2.1 be enabled globally. Setting this option
will implicitly enable resetnumbers for the current bibliography. The option assigns the hstringi as a preﬁx to all entries in the respective bibliography. For example,
if the hstringi is A, the numerical labels printed will be [A1], [A2], [A3], etc. This
is useful for subdivided numerical bibliographies where each subbibliography uses a
diﬀerent preﬁx. The hstringi is available to styles in the prefixnumber ﬁeld of all
aﬀected entries. See § 4.2.4.2 for details.
resetnumbers=htrue,false,numberi
This option applies to numerical citation/bibliography styles only and requires that
the defernumbers option from § 3.1.2.1 be enabled globally. If enabled, it will
reset the numerical labels assigned to the entries in the respective bibliography,
i. e., the numbering will restart at 1. You can also pass a number to this option, for
example: resetnumbers=10 to reset numbering to the speciﬁed number to aid
numbering continuity across documents. Use this option with care as Biblatex can
not guarantee unique labels globally if they are reset manually.
omitnumbers=true, false
This option applies to numerical citation/bibliography styles only and requires that
the defernumbers option from § 3.1.2.1 be enabled globally. If enabled, Biblatex
will not assign a numerical label to the entries in the respective bibliography. This is
useful when mixing a numerical subbibliography with one or more subbibliographies
using a diﬀerent scheme (e. g., author-title or author-year).
\bibbysection[hkey=value, …i]
This command automatically loops over all reference sections. This is equivalent
to giving one \printbibliography command for every section but has the
additional beneﬁt of automatically skipping sections without references. Note that
\bibbysection starts looking for references in section 1. It will ignore references given outside of refsection environments since they are assigned to
section 0. See § 3.11.3 for usage examples. The options are a subset of those supported by \printbibliography. Valid options are env, heading, prenote,
postnote. The global sorting scheme speciﬁed with package sorting option is
used for all sections.
\bibbysegment[hkey=value, …i]
This command automatically loops over all reference segments. This is equivalent
to giving one \printbibliography command for every segment in the current
refsection but has the additional beneﬁt of automatically skipping segments
without references. Note that \bibbysegment starts looking for references in
segment 1. It will ignore references given outside of refsegment environments
since they are assigned to segment 0. See § 3.11.3 for usage examples. The options
are a subset of those supported by \printbibliography. Valid options are
env, heading, prenote, postnote. The global sorting scheme speciﬁed with
package sorting option is used for all segments.

75

\bibbycategory[hkey=value, …i]
This command loops over all bibliography categories. This is equivalent to giving one
\printbibliography command for every category but has the additional beneﬁt
of automatically skipping empty categories. The categories are processed in the order
in which they were declared. See § 3.11.3 for usage examples. The options are a subset
of those supported by \printbibliography. Valid options are env, prenote,
postnote, section. Note that heading is not available with this command.
The name of the current category is automatically used as the heading name. This is
equivalent to passing heading=hcategoryi to \printbibliography and implies that there must be a matching heading deﬁnition for every category. The global
sorting scheme speciﬁed with package sorting option is used for all categories.
takes one optional argument, which is a list of options given in hkeyi=hvaluei notation. The options are a small subset of those supported by \printbibliography.
Valid options are heading and title. By default, this command uses the heading
bibliography. See § 3.6.8 for details. Also see §§ 3.11.3 and 3.11.4 for usage
examples.
3.6.3 The List of Shorthands
This section applies only to BibTeX. When using Biber, the list of shorthands is just a
special case of a bibliography list. See § 3.6.4.
If any entry includes a shorthand ﬁeld, biblatex automatically builds a list
of shorthands which may be printed in addition to the regular bibliography. The
following command prints the list of shorthands.

BibTeX only

\printshorthands[hkey=value, …i]
This command prints the list of shorthands. It takes one optional argument, which
is a list of options given in hkeyi=hvaluei notation. Valid options are all options supported by \printbibliography (§ 3.6.2) except prefixnumbers,
resetnumbers, and omitnumbers. If there are any refsection environments in the document, the list of shorthands will be local to these environments;
see § 3.6.5 for details. By default, this command uses the heading shorthands.
See § 3.6.8 for details.
The sorting option diﬀers from \printbibliography in that if omitted, the
default is to sort by shorthand.
3.6.4 Bibliography Lists
This section applies only to Biber. It is a generalisation of the shorthands facility
available in earlier versions and with BibTeX. When using BibTeX as the backend,
please refer to section § 3.6.3.
Biblatex can, in addition to printing normal bibliographies, also print arbitrary
lists of information derived from the bibliography data such as a list of shorthand
abbreviations for particular entries or a list of abbreviations of journal titles.
A bibliography list diﬀers from a normal bibliography in that the same bibliography
driver is used to print all entries rather than a speciﬁc driver being used for each
entry depending on the entry type.

76

Biber only

\printbiblist[hkey=value, …i]{hi}
This command prints a bibliography list. It takes an optional argument, which is a list
of options given in hkeyi=hvaluei notation. Valid options are all options supported
by \printbibliography (§ 3.6.2) except prefixnumbers, resetnumbers,
and omitnumbers. If there are any refsection environments in the document,
the bibliography list will be local to these environments; see § 3.6.5 for details. By
default, this command uses the heading biblist. See § 3.6.8 for details.
The hbiblistnamei is a mandatory argument which names the bibliography list. This
name is used to identify:
•The bibliography driver used to print the list entries
•A ﬁlter declared with \DeclareBiblistFilter used to ﬁlter the entries
returned from Biber
•The default bib environment to use
•The default sorting scheme name to use if the sorting option is not set
Note that the sorting option diﬀers from \printbibliography in that if
omitted, the default is to sort use the sorting scheme named after the bibliography
list and only then to fall back to the global sorting scheme is this is not deﬁned.
The most common bibliography list is a list of shorthand abbreviations for certain
entries and so this has a convenience alias \printshorthands[…] for backwards
compatibility which is deﬁned as:
\printbiblist[...]{shorthand}
Biblatex provides automatic support for data source ﬁelds in the default data model
marked as ‘Label ﬁelds’ (See § 2.2.2). Such ﬁelds automatically have deﬁned for them:
•A default bib environment (See § 3.6.8)
•A bibliography list ﬁlter (See § 4.5.6)
•Some supporting formats and lengths (See § 4.10.5 and § 4.10.4)
Therefore only a minimal setup is required to print bibliography lists with such ﬁelds.
For example, to print a list of journal title abbreviations, you can minimally put this
\DeclareBibliographyDriver{shortjournal}{%
\printfield{journaltitle}}
Then you can put this in your document where you want to print the list:
\printbiblist[title={Journal Shorthands}]{shortjournal}
Since shortjournal is deﬁned in the default data model as a ‘Label ﬁeld’, this
example:
•Uses the automatically created ‘shortjournal’ bib environment
•Uses the automatically created ‘shortjournal’ bibliography list ﬁlter to return
only entries with a shortjournal ﬁeld in the .bbl
•Uses the deﬁned ‘shortjournal’ bibliography driver to print the entries

77

•Uses the default ‘biblist’ heading but overrides the title with ‘Journal Shorthands’
•Uses the global sorting scheme since no sorting option is passed to
\printbiblist and no scheme exists with the name shortjournal
Naturally all defaults can be overridden by options to \printbiblist and deﬁnitions of the environments, ﬁlters etc. and in this way arbitrary types of bibliography
lists can be printed containing a variety of information from the bibliography data.
3.6.5 Bibliography Sections
The refsection environment is used in the document body to mark a reference
section. This environment is useful if you want separate, independent bibliographies
and bibliography lists in each chapter, section, or any other part of a document.
Within a reference section, all cited works are assigned labels which are local to
the environment. Technically, reference sections are completely independent from
document divisions such as \chapter and \section even though they will most
likely be used per chapter or section. See the refsection package option in
§ 3.1.2.1 for a way to automate this. Also see § 3.11.3 for usage examples.
\begin{refsection}[hresource, …i]
\end{refsection}
The optional argument is a comma-separated list of resources speciﬁc to the reference
section. If the argument is omitted, the reference section will use the default resource list, as speciﬁed with \addbibresource in the preamble. If the argument
is provided, it replaces the default resource list. Global resources speciﬁed with
\addglobalbib are always considered. refsection environments may not
be nested, but you may use refsegment environments within a refsection to
subdivide it into segments. Use the section option of \printbibliography
to select a section when printing the bibliography, and the corresponding option
of \printbiblist when printing bibliography lists. Bibliography sections are
numbered starting at 1. The number of the current section is also written to the
transcript ﬁle. All citations given outside a refsection environment are assigned
to section 0. If \printbibliography is used within a refsection, it will
automatically select the current section. The section option is not required in this
case. This also applies to \printbiblist.
\newrefsection[hresource, …i]
This command is similar to the refsection environment except that it is a standalone command rather than an environment. It automatically ends the previous
reference section (if any) and immediately starts a new one. Note that the reference
section started by the last \newrefsection command in the document will extend
to the very end of the document. Use \endrefsection if you want to terminate
it earlier.
3.6.6 Bibliography Segments
The refsegment environment is used in the document body to mark a reference
segment. This environment is useful if you want one global bibliography which
is subdivided by chapter, section, or any other part of the document. Technically,
reference segments are completely independent from document divisions such as

78

\chapter and \section even though they will typically be used per chapter or
section. See the refsegment package option in § 3.1.2.1 for a way to automate
this. Also see § 3.11.3 for usage examples.
\begin{refsegment}
\end{refsegment}
The diﬀerence between a refsection and a refsegment environment is that
the former creates labels which are local to the environment whereas the latter provides a target for the segment ﬁlter of \printbibliography without aﬀecting the labels. They will be unique across the entire document. refsegment
environments may not be nested, but you may use them in conjunction with
refsection to subdivide a reference section into segments. In this case, the
segments are local to the enclosing refsection environment. Use the segment
option of \printbibliography to select a segment when printing the bibliography. Within a section, the reference segments are numbered starting at 1 and
the number of the current segment will be written to the transcript ﬁle. All citations
given outside a refsegment environment are assigned to segment 0. In contrast to
the refsection environment, the current segment is not selected automatically
if \printbibliography is used within a refsegment environment.
\newrefsegment This command is similar to the refsegment environment except that it is a standalone command rather than an environment. It automatically ends the previous
reference segment (if any) and immediately starts a new one. Note that the reference
segment started by the last \newrefsegment command will extend to the end of
the document. Use \endrefsegment if you want to terminate it earlier.
3.6.7 Bibliography Categories
Bibliography categories allow you to split the bibliography into multiple parts dedicated to diﬀerent topics or diﬀerent types of references, for example primary and
secondary sources. See § 3.11.4 for usage examples.
\DeclareBibliographyCategory{hcategoryi}
Declares a new hcategoryi, to be used in conjunction with \addtocategory
and the category and notcategory ﬁlters of \printbibliography. This
command is used in the document preamble.
Assigns a hkeyi to a hcategoryi, to be used in conjunction with the category and
notcategory ﬁlters of \printbibliography. This command may be used in
the preamble and in the document body. The hkeyi may be a single entry key or a
comma-separated list of keys. The assignment is global.
\defbibenvironment{hnamei}{hbegin codei}{hend codei}{hitem codei}
This command deﬁnes bibliography environments. The hnamei is an identiﬁer passed
to the env option of \printbibliography and \printbiblist when selecting the environment. The hbegin codei is LaTeX code to be executed at the beginning
of the environment; the hend codei is executed at the end of the environment; the

79

hitem codei is code to be executed at the beginning of each entry in the bibliography
or a bibliography list. Here is an example of a deﬁnition based on the standard LaTeX
list environment:
\defbibenvironment{bibliography}
{\list{}
{\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{\item}
As seen in the above example, usage of \defbibenvironment is roughly similar
to \newenvironment except that there is an additional mandatory argument for
the hitem codei.
This command deﬁnes bibliography headings. The hnamei is an identiﬁer to be passed
\printbiblist when selecting the heading. The hcodei should be LaTeX code
generating a fully-ﬂedged heading, including page headers and an entry in the table of
contents, if desired. If \printbibliography or \printbiblist are invoked
with a title option, the title will be passed to the heading deﬁnition as #1. If not,
the default title speciﬁed by the optional htitlei argument is passed as #1 instead.
The htitlei argument will typically be \bibname, \refname, or \biblistname
(see § 4.9.2.1). This command is often needed after changes to document headers in
the preamble. Here is an example of a simple heading deﬁnition:
\chapter*{#1}%
\markboth{#1}{#1}}
which are intended for use

with

bibliography
This is the default heading used by \printbibliography if the heading option is not given. Its default deﬁnition depends on the document class. If the class
provides a \chapter command, the heading is similar to the bibliography heading
of the standard LaTeX book class, i. e., it uses \chapter* to create an unnumbered chapter heading which is not included in the table of contents. If there is
no \chapter command, it is similar to the bibliography heading of the standard
LaTeX article class, i. e., it uses \section* to create an unnumbered section
also depends on the document class. With book-like classes the localization string
bibliography is used, with other classes it is references (see § 4.9.2). See
also §§ 3.12.1 and 3.12.2 for class-speciﬁc hints.

80

subbibliography
Similar to bibliography but one sectioning level lower. This heading deﬁnition uses \section* instead of \chapter* with a book-like class and
bibintoc
subbibintoc
bibnumbered
Similar to bibliography above but uses \chapter or \section to create a
subbibnumbered
Similar to subbibliography above but uses \section or \subsection to
none
The following headings intended for use with \printbiblist are predeﬁned:
biblist
This is the default heading used by \printbiblist if the heading option is
not given. It is similar to bibliography above except that it uses the localization
string shorthands instead of bibliography or references (see § 4.9.2). See
also §§ 3.12.1 and 3.12.2 for class-speciﬁc hints.
biblistintoc
biblistnumbered
Similar to biblist above but uses \chapter or \section to create a numbered
3.6.9 Bibliography Notes
\defbibnote{hnamei}{htexti}
Deﬁnes the bibliography note hnamei, to be used via the prenote and postnote
options of \printbibliography and \printbiblist. The htexti may be
any arbitrary piece of text, possibly spanning several paragraphs and containing font
declarations. Also see § 3.12.6.

81

3.6.10 Bibliography Filters and Checks
\defbibfilter{hnamei}{hexpressioni}
Deﬁnes the custom bibliography ﬁlter hnamei, to be used via the filter option of
\printbibliography. The hexpressioni is a complex test based on the logical
operators and, or, not, the group separator (...), and the following atomic tests:
segment=hintegeri
Matches all entries cited in reference segment hintegeri.
type=hentrytypei
Matches all entries whose entry type is hentrytypei.
subtype=hsubtypei
Matches all entries whose entrysubtype is hsubtypei.
keyword=hkeywordi
Matches all entries whose keywords ﬁeld includes hkeywordi. If the hkeywordi
contains spaces, it needs to be wrapped in braces.
category=hcategoryi
Matches all entries assigned to hcategoryi with \addtocategory.
Here is an example of a ﬁlter expression:
\defbibfilter{example}{%
( type=book or type=inbook )
and keyword=abc
and not keyword={x y z}
}
This ﬁlter will match all entries whose entry type is either @book or @inbook
and whose keywords ﬁeld includes the keyword ‘abc’ but not ‘x y z’. As seen
in the above example, all elements are separated by whitespace (spaces, tabs, or
line endings). There is no spacing around the equal sign. The logical operators are
evaluated with the \ifboolexpr command from the etoolbox package. See the
etoolbox manual for details about the syntax. The syntax of the \ifthenelse
command from the ifthen package, which has been employed in older versions of
Biblatex, is still supported. This is the same test using ifthen-like syntax:
\defbibfilter{example}{%
$$\type{book} \or \type{inbook}$$
\and \keyword{abc}
\and \not \keyword{x y z}
}
Note that custom ﬁlters are local to the reference section in which they are used. Use
the section ﬁlter of \printbibliography to select a diﬀerent section. This
is not possible from within a custom ﬁlter.

82

\defbibcheck{hnamei}{hcodei}
Deﬁnes the custom bibliography ﬁlter hnamei, to be used via the check option of \printbibliography. \defbibcheck is similar in concept to
\defbibfilter but much more low-level. Rather than a high-level expression,
the hcodei is LaTeX code, much like the code used in driver deﬁnitions, which may
perform arbitrary tests to decide whether or not a given entry is to be printed. The
bibliographic data of the respective entry is available when the hcodei is executed.
Issuing the command \skipentry in the hcodei will cause the current entry to be
skipped. For example, the following ﬁlter will only output entries with an abstract
ﬁeld:
\defbibcheck{abstract}{%
\iffieldundef{abstract}{\skipentry}{}}
...
\printbibliography[check=abstract]
The following check will exclude all entries published before the year 2000:
\defbibcheck{recent}{%
\iffieldint{year}
{\ifnumless{\thefield{year}}{2000}
{\skipentry}
{}}
{\skipentry}}
See the author guide, in particular §§ 4.6.2 and 4.6.3, for further details.
3.6.11 Dynamic Entry Sets
In addition to the @set entry type, Biblatex also supports dynamic entry sets deﬁned
on a per-document/per-refsection basis. The following command, which may be
used in the document preamble or the document body, deﬁnes the set hkeyi:
\defbibentryset{hkeyi}{hkey1,key2,key3, …i}

Biber only

The hkeyi is the entry key of the set, which is used like any other entry key when referring to the set. The hkeyi must be unique and it must not conﬂict with any other entry
key. The second argument is a comma-separated list of the entry keys which make
up the set. \defbibentryset implies the equivalent of a \nocite command,
i. e., all sets which are declared are also added to the bibliography. When declaring
the same set more than once, only the ﬁrst invocation of \defbibentryset will
deﬁne the set. Subsequent deﬁnitions of the same hkeyi are ignored and work like
\nocitehkeyi. Dynamic entry sets deﬁned in the document body are local to the
enclosing refsection environment, if any. Otherwise, they are assigned to reference section 0. Those deﬁned in the preamble are assigned to reference section 0.
Note that dynamic entry sets require Biber. They will not work with any other
backend. See § 3.11.5 for further details.

3.7 Citation Commands
All citation commands generally take one mandatory and two optional arguments.
The hprenotei is text to be printed at the beginning of the citation. This is usually

83

a notice such as ‘see’ or ‘compare’. The hpostnotei is text to be printed at the very
end of the citation. This is usually a page number. If only one of these arguments is
given, it is taken as a postnote. If you want to specify a prenote but no postnote, you
need to leave the second optional argument empty, as in \cite[see][]{key}.
The hkeyi argument to all citation commands is mandatory. This is the entry key or
a comma-separated list of keys corresponding to the entry keys in the bib ﬁle. In
sum, all basic citations commands listed further down have the following syntax:
\command[hprenotei][hpostnotei]{hkeysi}hpunctuationi
If the autopunct package option from § 3.1.2.1 is enabled, they will scan ahead
for any hpunctuationi immediately following their last argument. This is useful to
avoid spurious punctuation marks after citations. This feature is conﬁgured with
\DeclareAutoPunctuation, see § 4.7.5 for details.
3.7.1 Standard Commands
The following commands are deﬁned by the citation style. Citation styles may
provide any arbitrary number of specialized commands, but these are the standard
commands typically provided by general-purpose styles.
\cite[hprenotei][hpostnotei]{hkeyi}
\Cite[hprenotei][hpostnotei]{hkeyi}
These are the bare citation commands. They print the citation without any additions such as parentheses. The numeric and alphabetic styles still wrap the label in
square brackets since the reference may be ambiguous otherwise. \Cite is similar
to \cite but capitalizes the name preﬁx of the ﬁrst name in the citation if the
useprefix option is enabled, provided that there is a name preﬁx and the citation
style prints any name at all.
\parencite[hprenotei][hpostnotei]{hkeyi}
\Parencite[hprenotei][hpostnotei]{hkeyi}
These commands use a format similar to \cite but enclose the entire citation
in parentheses. The numeric and alphabetic styles use square brackets instead.
\Parencite is similar to \parencite but capitalizes the name preﬁx of the ﬁrst
name in the citation if the useprefix option is enabled, provided that there is a
name preﬁx and the citation style prints any name at all.
\footcite[hprenotei][hpostnotei]{hkeyi}
\footcitetext[hprenotei][hpostnotei]{hkeyi}
These command use a format similar to \cite but put the entire citation in a footnote
and add a period at the end. In the footnote, they automatically capitalize the name
preﬁx of the ﬁrst name if the useprefix option is enabled, provided that there is a
name preﬁx and the citation style prints any name at all. \footcitetext diﬀers
from \footcite in that it uses \footnotetext instead of \footnote.
3.7.2 Style-specific Commands
The following additional citation commands are only provided by some of the citation
styles which ship with this package.

84

\textcite[hprenotei][hpostnotei]{hkeyi}
\Textcite[hprenotei][hpostnotei]{hkeyi}
These citation commands are provided by all styles that ship with this package. They
are intended for use in the ﬂow of text, replacing the subject of a sentence. They print
the authors or editors followed by a citation label which is enclosed in parentheses.
Depending on the citation style, the label may be a number, the year of publication,
an abridged version of the title, or something else. The numeric and alphabetic styles
use square brackets instead of parentheses. In the verbose styles, the label is provided
in a footnote. Trailing punctuation is moved between the author or editor names
and the footnote mark. \Textcite is similar to \textcite but capitalizes the
name preﬁx of the ﬁrst name in the citation if the useprefix option is enabled,
provided that there is a name preﬁx.
\smartcite[hprenotei][hpostnotei]{hkeyi}
\Smartcite[hprenotei][hpostnotei]{hkeyi}
Like \parencite in a footnote and like \footcite in the body.
\cite*[hprenotei][hpostnotei]{hkeyi}
This command is provided by all author-year and author-title styles. It is similar to
the regular \cite command but merely prints the year or the title, respectively.
\parencite*[hprenotei][hpostnotei]{hkeyi}
This command is provided by all author-year and author-title styles. It is similar to the
regular \parencite command but merely prints the year or the title, respectively.
\supercite{hkeyi}
This command, which is only provided by the numeric styles, prints numeric citations as superscripts without brackets. It uses \supercitedelim instead of
\multicitedelim as citation delimiter. Note that any hprenotei and hpostnotei
arguments are ignored. If they are given, \supercite will discard them and issue
a warning message.
3.7.3 Qualified Citation Lists
This package supports a class of special citation commands called ‘multicite’ commands. The point of these commands is that their argument is a list of citations where
each item forms a fully qualiﬁed citation with a pre- and/or postnote. This is particularly useful with parenthetical citations and citations given in footnotes. It is also
possible to assign a pre- and/or postnote to the entire list. The multicite commands
are built on top of backend commands like \parencite and \footcite. The citation style provides a multicite deﬁnition with \DeclareMultiCiteCommand
(see § 4.3.1). The following example illustrates the syntax of multicite commands:
\parencites[35]{key1}[88--120]{key2}[23]{key3}
The format of the arguments is similar to that of the regular citation commands,
except that only one citation command is given. If only one optional argument is
given for an item in the list, it is taken as a postnote. If you want to specify a prenote
but no postnote, you need to leave the second optional argument of the respective
item empty:

85

\parencites[35]{key1}[chapter 2 in][]{key2}[23]{key3}
In addition to that, the entire citation list may also have a pre- and/or postnote. The
syntax of these global notes diﬀers from other optional arguments in that they are
given in parentheses rather than the usual brackets:
\parencites(and chapter 3)[35]{key1}[78]{key2}[23]{key3}
\parencites(Compare)()[35]{key1}[78]{key2}[23]{key3}
\parencites(See)(and the introduction)[35]{key1}[78]{key2}[23]{key3}
Note that the multicite commands keep on scanning for arguments until they encounter a token that is not the start of an optional or mandatory argument. If a
left brace or bracket follows a multicite command, you need to mask it by adding
\relax or a control space (a backslash followed by a space) after the last valid
argument. This will cause the scanner to stop.
\parencites[35]{key1}[78]{key2}\relax[...]
\parencites[35]{key1}[78]{key2}\␣{...}
By default, this package provides the following multicite commands which correspond to regular commands from §§ 3.7.1 and 3.7.2:
\cites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
\Cites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
The multicite version of \cite and \Cite, respectively.
\parencites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
\Parencites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
The multicite version of \parencite and \Parencite, respectively.
\footcites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
\footcitetexts(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
The multicite version of \footcite and \footcitetext, respectively.
\smartcites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
\Smartcites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
The multicite version of \smartcite and \Smartcite, respectively.
\textcites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
\Textcites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
The multicite version of \textcite and \Textcite, respectively.
\supercites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
The multicite version of \supercite. This command is only provided by the
numeric styles.

86

3.7.4 Style-independent Commands
Sometimes it is desirable to give the citations in the source ﬁle in a format that is
not tied to a speciﬁc citation style and can be modiﬁed globally in the preamble.
The format of the citations is easily changed by loading a diﬀerent citation style.
However, when using commands such as \parencite or \footcite, the way
the citations are integrated with the text is still eﬀectively hard-coded. The idea
behind the \autocite command is to provide higher-level citation markup which
makes global switching from inline citations to citations given in footnotes (or
as superscripts) possible. The \autocite command is built on top of backend
commands like \parencite and \footcite. The citation style provides an
\autocite deﬁnition with \DeclareAutoCiteCommand (see § 4.3.1). This
deﬁnition may be activated with the autocite package option from § 3.1.2.1. The
citation style will usually initialize this package option to a value which is suitable
for the style, see § 3.3.1 for details. Note that there are certain limits to high-level
citation markup. For example, inline author-year citation schemes often integrate
citations so tightly with the text that it is virtually impossible to automatically convert
them to footnotes. The \autocite command is only applicable in cases in which
you would normally use \parencite or \footcite (or \supercite, with a
numeric style). The citations should be given at the end of a sentence or a partial
sentence, immediately preceding the terminal punctuation mark, and they should
not be a part of the sentence in a grammatical sense (like \textcite, for example).
\autocite[hprenotei][hpostnotei]{hkeyi}
\Autocite[hprenotei][hpostnotei]{hkeyi}
In contrast to other citation commands, the \autocite command does not only
scan ahead for punctuation marks following its last argument to avoid double
punctuation marks, it actually moves them around if required. For example, with
autocite = footnote, a trailing punctuation mark will be moved such that
the footnote mark is printed after the punctuation. \Autocite is similar to
\autocite but capitalizes the name preﬁx of the ﬁrst name in the citation if
the useprefix option is enabled, provided that there is a name preﬁx and the
citation style prints any name at all.
\autocite*[hprenotei][hpostnotei]{hkeyi}
\Autocite*[hprenotei][hpostnotei]{hkeyi}
The starred variants of \autocite do not behave diﬀerently from the regular
ones. The asterisk is simply passed on to the backend command. For example, if
\autocite is conﬁgured to use \parencite, then \autocite* will execute
\parencite*.
\autocites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
\Autocites(hmultiprenotei)(hmultipostnotei)[hprenotei][hpostnotei]{hkeyi}...[hprenotei][hpostnotei]{hkeyi}
This is the multicite version of \autocite. It also detects and moves punctuation if required. Note that there is no starred variant. \Autocites is similar to
\autocites but capitalizes the name preﬁx of the ﬁrst name in the citation if the
useprefix option is enabled, provided that there is a name preﬁx and the citation
style prints any name at all.

87

3.7.5 Text Commands
The following commands are provided by the core of Biblatex. They are intended
for use in the ﬂow of text. Note that all text commands are excluded from citation
tracking.
\citeauthor[hprenotei][hpostnotei]{hkeyi}
\citeauthor*[hprenotei][hpostnotei]{hkeyi}
\Citeauthor[hprenotei][hpostnotei]{hkeyi}
\Citeauthor*[hprenotei][hpostnotei]{hkeyi}
These commands print the authors. Strictly speaking, it prints the labelname list,
which may be the author, the editor, or the translator. \Citeauthor is
similar to \citeauthor but capitalizes the name preﬁx of the ﬁrst name in the
citation if the useprefix option is enabled, provided that there is a name preﬁx.
The starred variants eﬀectively force maxcitenames to 1 for just this command on
so only print the ﬁrst name in the labelname list (potentially followed by the “et
al” string if there are more names). This allows more natural textual ﬂow when
refering to a paper in the singular when otherwise \citeauthor would generate
a (naturally plural) list of names.
\citetitle[hprenotei][hpostnotei]{hkeyi}
\citetitle*[hprenotei][hpostnotei]{hkeyi}
This command prints the title. It will use the abridged title in the shorttitle
ﬁeld, if available. Otherwise it falls back to the full title found in the title ﬁeld.
The starred variant always prints the full title.
\citeyear[hprenotei][hpostnotei]{hkeyi}
\citeyear*[hprenotei][hpostnotei]{hkeyi}
This command prints the year (year ﬁeld or year component of date). The starred
variant includes the extrayear information, if any.
\citedate[hprenotei][hpostnotei]{hkeyi}
\citedate*[hprenotei][hpostnotei]{hkeyi}
This command prints the full date (date or year). The starred variant includes the
extrayear information, if any.
\citeurl[hprenotei][hpostnotei]{hkeyi}
This command prints the url ﬁeld.
\parentext{htexti}
This command wraps the htexti in context sensitive parentheses.
\brackettext{htexti}
This command wraps the htexti in context sensitive brackets.

88

3.7.6 Special Commands
The following special commands are also provided by the core of Biblatex.
\nocite{hkeyi}
\nocite{*}
This command is similar to the standard LaTeX \nocite command. It adds the
hkeyi to the bibliography without printing a citation. If the hkeyi is an asterisk, all
entries available in the bib ﬁle are added to the bibliography. Like all other citation
commands, \nocite commands in the document body are local to the enclosing
refsection environment, if any. In contrast to standard LaTeX, \nocite may
also be used in the document preamble. In this case, the references are assigned to
reference section 0.
\fullcite[hprenotei][hpostnotei]{hkeyi}
This command uses the bibliography driver for the respective entry type to create a
full citation similar to the bibliography entry. It is thus related to the bibliography
style rather than the citation style.
\footfullcite[hprenotei][hpostnotei]{hkeyi}
Similar to \fullcite but puts the entire citation in a footnote and adds a period
at the end.
\volcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Volcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
These commands are similar to \cite and \Cite but intended for references to
multi-volume works which are cited by volume and page number. Instead of the
hpostnotei, they take a mandatory hvolumei and an optional hpagei argument. Since
they merely compose the postnote and pass it to the \cite command provided by
the citation style as a hpostnotei argument, these commands are style independent.
The format of the volume portion is controlled by the ﬁeld formatting directive
volcitevolume, the format of the page/text portion is controlled by the ﬁeld
formatting directive volcitepages (§ 4.10.4). The delimiter printed between the
volume portion and the page/text portion may be modiﬁed by redeﬁning the macro
\volcitedelim (§ 4.10.1).
\volcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Volcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
The multicite version of \volcite and \Volcite, respectively.
\pvolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Pvolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
Similar to \volcite but based on \parencite.

89

\pvolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Pvolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
The multicite version of \pvolcite and \Pvolcite, respectively.
\fvolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
\ftvolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
Similar to \volcite but based on \footcite and \footcitetext, respectively.
\fvolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Fvolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
The multicite version of \fvolcite and \Fvolcite, respectively.
\svolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Svolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
Similar to \volcite but based on \smartcite.
\svolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Svolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
The multicite version of \svolcite and \Svolcite, respectively.
\tvolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Tvolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
Similar to \volcite but based on \textcite.
\tvolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Tvolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
The multicite version of \tvolcite and \Tvolcite, respectively.
\avolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Avolcite[hprenotei]{hvolumei}[hpagei]{hkeyi}
Similar to \volcite but based on \autocite.
\avolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
\Avolcites(hmultiprenotei)(hmultipostnotei)[hprenotei]{hvolumei}[hpagei]{hkeyi}
...[hprenotei]{hvolumei}[hpagei]{hkeyi}
The multicite version of \avolcite and \Avolcite, respectively.

90

\notecite[hprenotei][hpostnotei]{hkeyi}
\Notecite[hprenotei][hpostnotei]{hkeyi}
These commands print the hprenotei and hpostnotei arguments but no citation. Instead, a \nocite command is issued for every hkeyi. This may be useful for
authors who incorporate implicit citations in their writing, only giving information
not mentioned before in the running text, but who still want to take advantage of
the automatic hpostnotei formatting and the implicit \nocite function. This is a
generic, style-independent citation command. Special citation styles may provide
smarter facilities for the same purpose. The capitalized version forces capitalization
(note that this is only applicable if the note starts with a command which is sensitive
to Biblatex’s punctuation tracker).
\pnotecite[hprenotei][hpostnotei]{hkeyi}
\Pnotecite[hprenotei][hpostnotei]{hkeyi}
Similar to \notecite but the notes are printed in parentheses.
\fnotecite[hprenotei][hpostnotei]{hkeyi}
Similar to \notecite but the notes are printed in a footnote.
3.7.7 Low-level Commands
The following commands are also provided by the core of Biblatex. They grant access
to all lists and ﬁelds at a lower level.
\citename[hprenotei][hpostnotei]{hkeyi}[hformati]{hname listi}
The hformati is a formatting directive deﬁned with \DeclareNameFormat. Formatting directives are discussed in § 4.4.2. If this optional argument is omitted, this
command falls back to the format citename. The last argument is the name of a
hname listi, in the sense explained in § 2.2.
\citelist[hprenotei][hpostnotei]{hkeyi}[hformati]{hliteral listi}
The hformati is a formatting directive deﬁned with \DeclareListFormat. Formatting directives are discussed in § 4.4.2. If this optional argument is omitted, this
command falls back to the format citelist. The last argument is the name of a
hliteral listi, in the sense explained in § 2.2.
\citefield[hprenotei][hpostnotei]{hkeyi}[hformati]{hﬁeldi}
The hformati is a formatting directive deﬁned with \DeclareFieldFormat. Formatting directives are discussed in § 4.4.2. If this optional argument is omitted, this
command falls back to the format citefield. The last argument is the name of a
hﬁeldi, in the sense explained in § 2.2.
3.7.8 Miscellaneous Commands
The commands in this section are little helpers related to citations.
\citereset This command resets the citation style. This may be useful if the style replaces
repeated citations with abbreviations like ibidem, idem, op. cit., etc. and you want
to force a full citation at the beginning of a new chapter, section, or some other
location. The command executes a style speciﬁc initialization hook deﬁned with

91

the \InitializeCitationStyle command from § 4.3.1. It also resets the
internal citation trackers of this package. The reset will aﬀect the \ifciteseen,
\ifentryseen, \ifciteibid, and \ifciteidem tests discussed in § 4.6.2.
When used inside a refsection environment, the reset of the citation tracker is
local to the current refsection environment. Also see the citereset package
option in § 3.1.2.1.
\citereset* Similar to \citereset but only executes the style’s initialization hook, without
resetting the internal citation trackers.
\mancite Use this command to mark manually inserted citations if you mix automatically
generated and manual citations. This is particularly useful if the citation style
replaces repeated citations by an abbreviation like ibidem which may get ambiguous
or misleading otherwise. Always use \mancite in the same context as the manual
citation, e. g., if the citation is given in a footnote, include \mancite in the footnote.
The \mancite command executes a style speciﬁc reset hook deﬁned with the
\OnManualCitation command from § 4.3.1. It also resets the internal ‘ibidem’
and ‘idem’ trackers of this package. The reset will aﬀect the \ifciteibid and
\ifciteidem tests discussed in § 4.6.2.
\pno This command forces a single page preﬁx in the hpostnotei argument to a citation
command. See § 3.12.3 for further details and usage instructions. Note that this
command is only available locally in citations and the bibliography.
\ppno Similar to \pno but forces a range preﬁx. See § 3.12.3 for further details and usage
instructions. Note that this command is only available locally in citations and the
bibliography.
\nopp Similar to \pno but suppresses all preﬁxes. See § 3.12.3 for further details and usage
instructions. Note that this command is only available locally in citations and the
bibliography.
\psq In the hpostnotei argument to a citation command, this command indicates a range of
two pages where only the starting page is given. See § 3.12.3 for further details and
usage instructions. The suﬃx printed is the localization string sequens, see § 4.9.2.
The spacing inserted between the suﬃx and the page number may be modiﬁed by
redeﬁning the macro \sqspace. The default is an unbreakable interword space.
Note that this command is only available locally in citations and the bibliography.
\psqq Similar to \psq but indicates an open-ended page range. See § 3.12.3 for further details and usage instructions. The suﬃx printed is the localization string sequentes,
see § 4.9.2. This command is only available locally in citations and the bibliography.
\RN{hintegeri}
This command prints an integer as an uppercase Roman numeral. The formatting
applied to the numeral may be modiﬁed by redeﬁning the macro \RNfont.
\Rn{hintegeri}
Similar to \RN but prints a lowercase Roman numeral. The formatting applied to
the numeral may be modiﬁed by redeﬁning the macro \Rnfont.

92

3.7.9 natbib Compatibility Commands
The natbib package option loads a natbib compatibility module. The module
deﬁnes aliases for the citation commands provided by the natbib package. This
includes aliases for the core citation commands \citet and \citep as well as the
variants \citealt and \citealp. The starred variants of these commands, which
print the full author list, are also supported. The \cite command, which is handled
in a particular way by natbib, is not treated in a special way. The text commands
(\citeauthor, \citeyear, etc.) are also supported, as are all commands which
capitalize the name preﬁx (\Citet, \Citep, \Citeauthor, etc.). Aliasing with
\defcitealias, \citetalias, and \citepalias is possible as well. Note
that the compatibility commands will not emulate the citation format of the natbib
package. They merely alias natbib’s commands to functionally equivalent facilities
of the Biblatex package. The citation format depends on the main citation style.
However, the compatibility style will adapt \nameyeardelim to match the default
style of the natbib package.
3.7.10 mcite-like Citation Commands

Biber only

The mcite package option loads a special citation module which provides mcite/
mciteplus-like citation commands. Strictly speaking, what the module provides
are wrappers for the commands of the main citation style. For example, the following
command:
\mcite{key1,setA,*keyA1,*keyA2,*keyA3,key2,setB,*keyB1,*keyB2,*keyB3}
is essentially equivalent to this:
\defbibentryset{setA}{keyA1,keyA2,keyA3}%
\defbibentryset{setB}{keyB1,keyB2,keyB3}%
\cite{key1,setA,key2,setB}
The \mcite command will work with any style since the \cite backend command
is controlled by the main citation style as usual. The mcite module provides
wrappers for the standard commands in §§ 3.7.1 and 3.7.2. See table 7 for an overview.
Pre and postnotes as well as starred variants of all commands are also supported.
The parameters will be passed to the backend command. For example:
\mcite*[pre][post]{setA,*keyA1,*keyA2,*keyA3}
will execute:
\defbibentryset{setA}{keyA1,keyA2,keyA3}%
\cite*[pre][post]{setA}
Note that the mcite module is not a compatibility module. It provides commands
which are very similar but not identical in syntax and function to mcite’s commands.
When migrating from mcite/mciteplus to Biblatex, legacy ﬁles must be updated.
With mcite, the ﬁrst member of the citation group is also the identiﬁer of the group
as a whole. Borrowing an example from the mcite manual, this group:
\cite{glashow,*salam,*weinberg}

93

Standard Command

mcite-like Command

\cite
\Cite
\parencite
\Parencite
\footcite
\footcitetext
\textcite
\Textcite
\supercite

\mcite
\Mcite
\mparencite
\Mparencite
\mfootcite
\mfootcitetext
\mtextcite
\Mtextcite
\msupercite

Table 6: mcite-like commands
consists of three entries and the entry key of the ﬁrst one also serves as identiﬁer of
the entire group. In contrast to that, a Biblatex entry set is an entity in its own right.
Therefore, it requires a unique entry key which is assigned to the set as it is deﬁned:
\mcite{set1,*glashow,*salam,*weinberg}
Once deﬁned, an entry set is handled like any regular entry in a bib ﬁle. When
using one of the numeric styles which ship with biblatex and activating its
subentry option, it is even possible to refer to set members. See table 7 for some
examples. Restating the original deﬁnition of the set is redundant, but permissible.
In contrast to mciteplus, however, restating a part of the original deﬁnition is
invalid. Use the entry key of the set instead.

3.8 Localization Commands
The Biblatex package provides translations for key terms such as ‘edition’ or ‘volume’
as well as deﬁnitions for language speciﬁc features such as the date format and
ordinals. These deﬁnitions, which are loaded automatically, may be modiﬁed or
extended in the document preamble or the conﬁguration ﬁle with the commands
introduced in this section.
\DefineBibliographyStrings{hlanguagei}{hdeﬁnitionsi}
This command is used to deﬁne localization strings. The hlanguagei must be a
language name known to the babel/polyglossia packages, i. e., one of the
identiﬁers listed in table 2 on page 25. The hdeﬁnitionsi are hkeyi=hvaluei pairs
which assign an expression to an identiﬁer:
\DefineBibliographyStrings{american}{%
bibliography = {Bibliography},
shorthands
= {Abbreviations},
editor
= {editor},
editors
= {editors},
}
A complete list of all keys supported by default is given is § 4.9.2. Note that all
expressions should be capitalized as they usually are when used in the middle
of a sentence. The Biblatex package will automatically capitalize the ﬁrst word
when required at the beginning of a sentence. Expressions intended for use in
headings should be capitalized in a way that is suitable for titling. In contrast

94

Input

Output Comment

\mcite{set1,*glashow,*salam,*weinberg}
[1]
\mcite{set1}
[1]
\cite{set1}
[1]
\mcite{set1,*glashow,*salam,*weinberg}
[1]
\mcite{glashow}
[1a]
\cite{weinberg}
[1c]

Deﬁning and citing the set
Subsequent citation of the set
Regular \cite works as usual
Redundant, but permissible
Citing a set member
Regular \cite works as well

Table 7: mcite-like syntax (sample output with style = numeric and
subentry option)
to \DeclareBibliographyStrings, \DefineBibliographyStrings
overrides both the full and the abbreviated version of the string. See § 4.9.1 for
further details.
\DefineBibliographyExtras{hlanguagei}{hcodei}
This command is used to adapt language speciﬁc features such as the date format and ordinals. The hlanguagei must be a language name known to the
babel/polyglossia packages. The hcodei, which may be arbitrary LaTeX code,
will usually consist of redeﬁnitions of the formatting commands from § 3.9.2.
\UndefineBibliographyExtras{hlanguagei}{hcodei}
This command is used to restore the original deﬁnition of any commands modiﬁed
with \DefineBibliographyExtras. If a redeﬁned command is included in
§ 3.9.2, there is no need to restore its previous deﬁnition since these commands are
adapted by all language modules anyway.
\DefineHyphenationExceptions{hlanguagei}{htexti}
This is a LaTeX frontend to TeX’s \hyphenation command which deﬁnes hyphenation exceptions. The hlanguagei must be a language name known to the
babel/polyglossia packages. The htexti is a whitespace-separated list of words.
Hyphenation points are marked with a dash:
\DefineHyphenationExceptions{american}{%
hy-phen-ation ex-cep-tion
}
\NewBibliographyString{hkeyi}
This command declares new localization strings, i. e., it initializes a new hkeyi to be
used in the hdeﬁnitionsi of \DefineBibliographyStrings. The hkeyi argument may also be a comma-separated list of key names. The keys listed in § 4.9.2 are
deﬁned by default.

3.9 Formatting Commands
The commands and facilities presented in this section may be used to adapt the
format of citations and the bibliography.

95

3.9.1 Generic Commands and Hooks
The commands in this section may be redeﬁned with \renewcommand in the
document preamble. Note that all commands starting with \mk… take one argument.
All of these commands are deﬁned in biblatex.def.
\bibsetup Arbitrary code to be executed at the beginning of the bibliography, intended for
commands which aﬀect the layout of the bibliography.
\bibfont Arbitrary code setting the font used in the bibliography. This is very similar to
\bibsetup but intended for switching fonts.
\citesetup Arbitrary code to be executed at the beginning of each citation command.
\newblockpunct The separator inserted between ‘blocks’ in the sense explained in § 4.7.1. The default
deﬁnition is controlled by the package option block (see § 3.1.2.1).
\newunitpunct The separator inserted between ‘units’ in the sense explained in § 4.7.1. This will
usually be a period or a comma plus an interword space. The default deﬁnition is a
period and a space.
\finentrypunct The punctuation printed at the very end of every bibliography entry, usually a
period. The default deﬁnition is a period.
\entrysetpunct \BiberOnlyMark The punctuation printed between bibliography subentries of
an entry set. The default deﬁnition is a semicolon and a space.
\bibnamedelima \BiberOnlyMark This delimiter controls the spacing between the elements
which make up a name part. It is inserted automatically after the ﬁrst name element if
the element is less than three characters long and before the last element. The default
deﬁnition is an interword space penalized by the value of the highnamepenalty
counter (§ 3.9.3). Please refer to § 3.12.4 for further details.
\bibnamedelimb \BiberOnlyMark This delimiter is inserted between the elements which make
up a name part where \bibnamedelima does not apply. The default deﬁnition
is an interword space penalized by the value of the lownamepenalty counter
(§ 3.9.3). Please refer to § 3.12.4 for further details.
\bibnamedelimc This delimiter controls the spacing between name parts. It is inserted between the
name preﬁx and the last name if useprefix=true. The default deﬁnition is an
interword space penalized by the value of the highnamepenalty counter (§ 3.9.3).
Please refer to § 3.12.4 for further details.
\bibnamedelimd This delimiter is inserted between all name parts where \bibnamedelimc does
not apply. The default deﬁnition is an interword space penalized by the value of the
lownamepenalty counter (§ 3.9.3). Please refer to § 3.12.4 for further details.
\bibnamedelimi \BiberOnlyMark This delimiter replaces \bibnamedelima/b after initials.
Note that this only applies to initials given as such in the bib ﬁle, not to the initials
automatically generated by Biblatex which use their own set of delimiters.
\bibinitperiod \BiberOnlyMark The punctuation inserted after initials unless
\bibinithyphendelim applies. The default deﬁnition is a period (\adddot).
Please refer to § 3.12.4 for further details.
\bibinitdelim \BiberOnlyMark The spacing inserted between multiple initials unless
\bibinithyphendelim applies. The default deﬁnition is an unbreakable interword space. Please refer to § 3.12.4 for further details.

96

\bibinithyphendelim \BiberOnlyMark The punctuation inserted between the initials of hyphenated name parts, replacing \bibinitperiod and \bibinitdelim. The
default deﬁnition is a period followed by an unbreakable hyphen. Please refer to
§ 3.12.4 for further details.
\bibindexnamedelima Replaces \bibnamedelima in the index.
\bibindexnamedelimb Replaces \bibnamedelimb in the index.
\bibindexnamedelimc Replaces \bibnamedelimc in the index.
\bibindexnamedelimd Replaces \bibnamedelimd in the index.
\bibindexnamedelimi Replaces \bibnamedelimi in the index.
\bibindexinitperiod Replaces \bibinitperiod in the index.
\bibindexinitdelim Replaces \bibinitdelim in the index.
\bibindexinithyphendelim Replaces \bibinithyphendelim in the index.
\revsdnamepunct The punctuation to be printed between the ﬁrst and last name parts when a
name is reversed. Here is an example showing a name with the default comma as
\revsdnamedelim:
Jones, Edward
This command should be used with \bibnamedelimd as a reversed-name separator in formatting directives for name lists. Please refer to § 3.12.4 for further
details.
\bibnamedash The dash to be used as a replacement for recurrent authors or editors in the bibliography. The default is an ‘em’ or an ‘en’ dash, depending on the indentation of the
list of references.
\labelnamepunct The separator printed after the name used for alphabetizing in the bibliography
(author or editor, if the author ﬁeld is undeﬁned). With the default styles,
this separator replaces \newunitpunct at this location. The default deﬁnition is
\newunitpunct, i. e., it is not handled diﬀerently from regular unit punctuation.
\subtitlepunct The separator printed between the ﬁelds title and subtitle, booktitle
and booksubtitle, as well as maintitle and mainsubtitle. With the
default styles, this separator replaces \newunitpunct at this location. The default
deﬁnition is \newunitpunct, i. e., it is not handled diﬀerently from regular unit
punctuation.
\intitlepunct The separator between the word “in” and the following title in entry types such as
@article, @inbook, @incollection, etc. The default deﬁnition is a colon
plus an interword space (e. g.,“Article, in: Journal” or “Title, in: Book”). Note that
this is the separator string, not only the punctuation mark. If you don’t want a colon
after “in”, \intitlepunct should still insert a space.
\bibpagespunct The separator printed before the pages ﬁeld. The default is a comma plus an
interword space.
\bibpagerefpunct The separator printed before the pageref ﬁeld. The default is an interword
space.

97

\multinamedelim The delimiter printed between multiple items in a name list like author or
editor if there are more than two names in the list. The default is a comma plus
an interword space. See \finalnamedelim for an example.23
\finalnamedelim The delimiter printed instead of \multinamedelim before the ﬁnal name in
a name list. The default is the localized term ‘and’, separated by interword spaces.
Here is an example:
Michel Goossens, Frank Mittelbach and Alexander Samarin
Edward Jones and Joe Williams
The comma in the ﬁrst example is the \multinamedelim whereas the string
in § 3.9.2.
\revsdnamedelim An extra delimiter printed after the ﬁrst name in a name list if the ﬁrst name is
reversed. The default is an empty string, i. e., no extra delimiter will be printed. Here
is an example showing a name list with a comma as \revsdnamedelim:
Jones, Edward, and Joe Williams
In this example, the comma after ‘Edward’ is the \revsdnamedelim whereas the
string ‘and’ is the \finalnamedelim, printed in addition to the former.
\andothersdelim The delimiter printed before the localization string ‘andothers’ if a name list
like author or editor is truncated. The default is an interword space.
\multilistdelim The delimiter printed between multiple items in a literal list like publisher or
location if there are more than two items in the list. The default is a comma plus
an interword space. See \multinamedelim for further explanation.
\finallistdelim The delimiter printed instead of \multilistdelim before the ﬁnal item in a
literal list. The default is the localized term ‘and’, separated by interword spaces. See
\finalnamedelim for further explanation.
\andmoredelim The delimiter printed before the localization string ‘andmore’ if a literal list like
publisher or location is truncated. The default is an interword space.
\multicitedelim The delimiter printed between citations if multiple entry keys are passed to a
single citation command. The default is a semicolon plus an interword space.
\supercitedelim Similar to \multicitedelim, but used by the \supercite command only.
The default is a comma.
\compcitedelim Similar to \multicitedelim, but used by certain citation styles when ‘compressing’ multiple citations. The default deﬁnition is a comma plus an interword
space.
\textcitedelim Similar to \multicitedelim, but used by \textcite and related commands
(§ 3.7.2). The default is a comma plus an interword space. The standard styles modify
this provisional deﬁnition to ensure that the delimiter before the ﬁnal citation is the
and \finalandsemicolon in § 3.9.2.
23

Note that \multinamedelim is not used at all if there are only two names in the list. In this case,
the default styles use the \finalnamedelim.

98

\nametitledelim The delimiter printed between the author/editor and the title by author-title and
some verbose citation styles. The default deﬁnition is a comma plus an interword
space.
\nameyeardelim The delimiter printed between the author/editor and the year by author-year citation
styles. The default deﬁnition is an interword space.
\labelalphaothers A string to be appended to the non-numeric portion of the labelalpha
ﬁeld (i. e., the ﬁeld holding the citation label used by alphabetic citation styles) if the
number of authors/editors exceeds the maxalphanames threshold or the author/
editor list was truncated in the bib ﬁle with the keyword ‘and others’. This
will typically be a single character such as a plus sign or an asterisk. The default is a
plus sign. This command may also be redeﬁned to an empty string to disable this
feature. In any case, it must be redeﬁned in the preamble.
\sortalphaothers \BiberOnlyMark Similar to \labelalphaothers but used in the sorting
process. Setting it to a diﬀerent value is advisable if the latter contains formatting
commands, for example:
\renewcommand*{\labelalphaothers}{\textbf{+}}
\renewcommand*{\sortalphaothers}{+}
If \sortalphaothers is not redeﬁned, it defaults to \labelalphaothers.
\prenotedelim The delimiter printed after the hprenotei argument of a citation command. See § 3.7
for details. The default is an interword space.
\postnotedelim The delimiter printed before the hpostnotei argument of a citation command. See
§ 3.7 for details. The default is a comma plus an interword space.
\mkbibnamelast{htexti}This command, which takes one argument, is used to format the last name
of all authors, editors, translators, etc.
\mkbibnamefirst{htexti}Similar to \mkbibnamelast, but intended for the ﬁrst name.
\mkbibnameprefix{htexti}Similar to \mkbibnamelast, but intended for the name preﬁx.
\mkbibnameaffix{htexti}Similar to \mkbibnamelast, but intended for the name aﬃx.
\relatedpunct The separator between the relatedtype bibliography localization string and the
data from the ﬁrst related entry. Here is an example with \relatedpunct set to
a dash:
A. Smith. Title. 2000, (Orig. pub. as-Origtitle)
\relateddelim The separator between the data of multiple related entries. The default deﬁnition is
an optional dot plus linebreak. Here is an example where volumes A-E are related
entries of the 5 volume main work:

Donald E. Knuth. Computers & Typesetting. 5 vols. Reading, Mass.: AddisonWesley, 1984-1986.
Vol. A: The TEXbook. 1984.
Vol. B: TEX: The Program. 1986.
Vol. C: The METAFONTbook. By. 1986.
Vol. D: METAFONT: The Program. 1986.
Vol. E: Computer Modern Typefaces. 1986.

99

3.9.2 Language-specific Commands
The commands in this section are language speciﬁc. When redeﬁning them, you need
to wrap the new deﬁnition in a \DeclareBibliographyExtras command (in
an .lbx ﬁle) or a \DefineBibliographyExtras command (user documents),
see § 3.8 for details. Note that all commands starting with \mk… take one or more
arguments.
\bibrangedash The language speciﬁc dash to be used for ranges of numbers.
\bibrangessep \BiberOnlyMark
The language speciﬁc separator to be used between multiple ranges.
\bibdatedash The language speciﬁc dash to be used for date ranges.
\mkbibdatelong Takes the names of three ﬁeld as arguments which correspond to three date components (in the order year/month/day) and uses their values to print the date in the
language speciﬁc long date format.
\mkbibdateshort Similar to \mkbibdatelong but using the language speciﬁc short date format.
\finalandcomma Prints the comma to be inserted before the ﬁnal ‘and’ in a list, if applicable in the
respective language. Here is an example:
Michel Goossens, Frank Mittelbach, and Alexander Samarin
\finalandcomma is the comma before the word ‘and’.
\multinamedelim,
\finalnamedelim,
\textcitedelim,
and
\revsdnamedelim in § 3.9.1.
\finalandsemicolon Prints the semicolon to be inserted before the ﬁnal ‘and’ in a list of lists, if
applicable in the respective language. Here is an example:
Goossens, Mittelbach, and Samarin; Bertram and Wenworth; and Knuth
\finalandsemicolon is the semicolon before the word ‘and’.
\textcitedelim in § 3.9.1.

\mkbibordinal{hintegeri}
This command, which takes an integer as its argument, prints an ordinal number.
\mkbibmascord{hintegeri}
Similar to \mkbibordinal, but prints a masculine ordinal, if applicable in the
respective language.
\mkbibfemord{hintegeri}
Similar to \mkbibordinal, but prints a feminine ordinal, if applicable in the
respective language.
\mkbibneutord{hintegeri}
Similar to \mkbibordinal, but prints a neuter ordinal, if applicable in the respective language.

100

\mkbibordedition{hintegeri}
Similar to \mkbibordinal, but intended for use with the term ‘edition’.
\mkbibordseries{hintegeri}
Similar to \mkbibordinal, but intended for use with the term ‘series’.
3.9.3 Lengths and Counters
The length registers and counters in this section may be changed in the document
preamble with \setlength and \setcounter, respectively.
\bibhang The hanging indentation of the bibliography, if applicable. This length is initialized
\biblabelsep The horizontal space between entries and their corresponding labels in the bibliography. This only applies to bibliography styles which print labels, such as the
numeric and alphabetic styles. This length is initialized to twice the value of
\bibitemsep The vertical space between the individual entries in the bibliography. This length is
initialized to \itemsep at load-time. Note that \bibitemsep, \bibnamesep,
and \bibinitsep obey the rules for \addvspace, that is, when vertical space
introduced by any of these commands immediately follows on from space introduced
by another of them, the resulting total space is equal to the largest of them.
\bibnamesep Vertical space to be inserted between two entries in the bibliography whenever
an entry starts with a name which is diﬀerent from the initial name of the previous entry. The default value is zero. Setting this length to a positive value
greater than \bibitemsep will group the bibliography by author/editor name.
Note that \bibitemsep, \bibnamesep, and \bibinitsep obey the rules for
\addvspace, that is, when vertical space introduced by any of these commands
immediately follows on from space introduced by another of them, the resulting
total space is equal to the largest of them.
\bibinitsep Vertical space to be inserted between two entries in the bibliography whenever
an entry starts with a letter which is diﬀerent from the initial letter of the previous entry. The default value is zero. Setting this length to a positive value
greater than \bibitemsep will group the bibliography alphabetically. Note
that \bibitemsep, \bibnamesep, and \bibinitsep obey the rules for
\addvspace, that is, when vertical space introduced by any of these commands
immediately follows on from space introduced by another of them, the resulting
total space is equal to the largest of them.
\bibparsep The vertical space between paragraphs within an entry in the bibliography. The
default value is zero.
abbrvpenalty This counter, which is used by the localization modules, holds the penalty used in
short or abbreviated localization strings. For example, a linebreak in expressions
such as “et al.” or “ed. by” is unfortunate, but should still be possible to prevent
overfull boxes. This counter is initialized to \hyphenpenalty at load-time. The
idea is making TeX treat the whole expression as if it were a single, hyphenatable
word as far as line-breaking is concerned. If you dislike such linebreaks, use a higher

101

value. If you do not mind them at all, set this counter to zero. If you want to suppress
them unconditionally, set it to ‘inﬁnite’ (10 000 or higher).24
highnamepenalty This counter holds a penalty aﬀecting line-breaking in names. Please refer to
§§ 3.12.4 and 3.9.1 for explanation. The counter is initialized to \hyphenpenalty
at load-time. Use a higher value if you dislike the respective linebreaks. If you do not
mind them at all, set this counter to zero. If you prefer the traditional BibTeX behavior
(no linebreaks at highnamepenalty breakpoints), set it to ‘inﬁnite’ (10 000 or
higher).
lownamepenalty Similar to highnamepenalty. Please refer to §§ 3.12.4 and 3.9.1 for explanation.
The counter is initialized to half the \hyphenpenalty at load-time. Use a higher
value if you dislike the respective linebreaks. If you do not mind them at all, set this
counter to zero.
3.9.4 All-purpose Commands
The commands in this section are all-purpose text commands which are generally
available, not only in citations and the bibliography.
\bibellipsis An ellipsis symbol with brackets: ‘[…]’.
\noligature Disables ligatures at this position and adds some space. Use this command to break
up standard ligatures like ‘ﬁ’ and ‘ﬂ’. It is similar to the ”| shorthand provided by
some language modules of the babel/polyglossia packages.
\hyphenate A conditional hyphen. In contrast to the standard \- command, this one allows
hyphenation in the rest of the word. It is similar to the ”- shorthand provided by
some language modules of the babel/polyglossia packages.
\hyphen An explicit, breakable hyphen intended for compound words. In contrast to a literal
‘-’, this command allows hyphenation in the rest of the word. It is similar to the
”= shorthand provided by some language modules of the babel/polyglossia
packages.
\nbhyphen An explicit, non-breakable hyphen intended for compound words. In contrast to a
literal ‘-’, this command does not permit line breaks at the hyphen but still allows
hyphenation in the rest of the word. It is similar to the ”~ shorthand provided by
some language modules of the babel/polyglossia packages.
\nohyphenation A generic switch which suppresses hyphenation locally. Its scope should normally
be conﬁned to a group.
\textnohyphenation{htexti}
Similar to \nohyphenation but restricted to the htexti argument.

24

The default values assigned to abbrvpenalty, lownamepenalty, and highnamepenalty
are deliberately very low to prevent overfull boxes. This implies that you will hardly notice any
eﬀect on line-breaking if the text is set justiﬁed. If you set these counters to 10 000 to suppress the
respective breakpoints, you will notice their eﬀect but you may also be confronted with overfull
boxes. Keep in mind that line-breaking in the bibliography is often more diﬃcult than in the body
text and that you can not resort to rephrasing a sentence. In some cases it may be preferable to set
the entire bibliography \raggedright to prevent suboptimal linebreaks. In this case, even the
fairly low default penalties will make a visible diﬀerence.

102

\mknumalph{hintegeri}
Takes an integer in the range 1–702 as its argument and converts it to a string as
follows: 1=a, …, 26=z, 27=aa, …, 702=zz. This is intended for use in formatting
directives for the extrayear and extraalpha ﬁelds.
\mkbibacro{htexti}
Generic command which typesets an acronym using the small caps variant of the
current font, if available, and as-is otherwise. The acronym should be given in
uppercase letters.
\autocap{hcharacteri}
Automatically converts the hcharacteri to its uppercase form if Biblatex’s punctuation
tracker would capitalize a localization string at the current location. This command
is robust. It is useful for conditional capitalization of certain strings in an entry. Note
that the hcharacteri argument is a single character given in lowercase. For example:
\autocap{s}pecial issue
will yield ‘Special issue’ or ‘special issue’, as appropriate. If the string to be capitalized
starts with an inﬂected character given in Ascii notation, include the accent command
in the hcharacteri argument as follows:
\autocap{\’e}dition sp\’eciale
This will yield ‘Édition spéciale’ or ‘édition spéciale’. If the string to be capitalized
starts with a command which prints a character, such as \ae or \oe, simply put
the command in the hcharacteri argument:
\autocap{\oe}uvres
This will yield ‘Œuvres’ or ‘œuvres’.

3.10 Language-specific Notes
The facilities discussed in this section are speciﬁc to certain localization modules.
3.10.1 American
The American localization module uses \uspunctuation from § 4.7.5 to enable
‘American-style’ punctuation. If this feature is enabled, all trailing commas and
periods after \mkbibquote will be moved inside the quotes. If you want to disable
this feature, use \stdpunctuation as follows:
\DefineBibliographyExtras{american}{%
\stdpunctuation
}
By default, the ‘American punctuation’ feature is enabled by the american localization module only. The above code is only required if you want American localization
without American punctuation. Since standard punctuation is the package default, it
would be redundant with any other language.

103

It is highly advisable to always specify american, british, australian, etc.
any possible confusion. Older versions of the babel package used to treat english
as an alias for british; more recent ones treat it as an alias for american. The
biblatex package essentially treats english as an alias for american, except for
the above feature which is only enabled if american is requested explicitly.
3.10.2 Spanish
Handling the word ‘and’ is more diﬃcult in Spanish than in the other languages
supported by this package because it may be ‘y’ or ‘e’, depending on the initial sound
of the following word. Therefore, the Spanish localization module does not use the
localization string ‘and’ but a special internal ‘smart and’ command. The behavior
of this command is controlled by the smartand counter.
smartand This counter controls the behavior of the internal ‘smart and’ command. When set
to 1, it prints ‘y’ or ‘e’, depending on the context. When set to 2, it always prints ‘y’.
When set to 3, it always prints ‘e’. When set to 0, the ‘smart and’ feature is disabled.
This counter is initialized to 1 at load-time and may be changed in the preamble.
Note that setting this counter to a positive value implies that the Spanish localization
module ignores \finalnamedelim and \finallistdelim.
\forceE Use this command in bib ﬁles if Biblatex gets the ‘and’ before a certain name wrong.
As its name suggests, it will enforce ‘e’. This command must be used in a special way
to prevent confusing BibTeX. Here is an example:
author = {Edward Jones and Eoin Maguire},
author = {Edward Jones and {\forceE{E}}oin Maguire},
Note that the initial letter of the respective name component is given as an argument
to \forceE and that the entire construct is wrapped in an additional pair of curly
braces.
\forceY Similar to \forceE but enforces ‘y’.
3.10.3 Greek
The Greek localization module requires utf-8 support. It will not work with any
other encoding. Generally speaking, the Biblatex package is compatible with the
inputenc package and with XeLaTeX. The ucs package will not work. Since
inputenc’s standard utf8 module is missing glyph mappings for Greek, this
leaves Greek users with XeLaTeX. Note that you may need to load additional packages
which set up Greek fonts. As a rule of thumb, a setup which works for regular Greek
documents should also work with Biblatex. However, there is one fundamental
limitation. As of this writing, Biblatex has no support for switching scripts. Greek
titles in the bibliography should work ﬁne, provided that you use Biber as a backend,
but English and other titles in the bibliography may be rendered in Greek letters. If
you need multi-script bibliographies, using XeLaTeX is the only sensible choice.
3.10.4 Russian
Like the Greek localization module, the Russian module also requires utf-8 support.
It will not work with any other encoding.

104

3.11 Usage Notes
The following sections give a basic overview of the Biblatex package and discuss
some typical usage scenarios.
3.11.1 Overview
Using the Biblatex package is slightly diﬀerent from using traditional BibTeX styles
and related packages. Before we get to speciﬁc usage scenarios, we will therefore
have a look at the structure of a typical document ﬁrst:
\documentclass{...}
\usepackage[...]{biblatex}
\begin{document}
\cite{...}
...
\printbibliography
\end{document}
With traditional BibTeX, the \bibliography command serves two purposes. It
marks the location of the bibliography and it also speciﬁes the bib ﬁle(s). The ﬁle
extension is omitted. With Biblatex, resources are speciﬁed in the preamble with
\addbibresource using the full name with .bib suﬃx. The bibliography is
printed using the \printbibliography command which may be used multiple
times (see § 3.6 for details). The document body may contain any number of citation
commands (§ 3.7). Processing this example ﬁle requires that a certain procedure be
followed. Suppose our example ﬁle is called example.tex and our bibliographic
data is in bibfile.bib. The procedure, then, is as follows:
3.11.1.1 Biber
1. Run latex on example.tex. If the ﬁle contains any citations, Biblatex will
request the respective data from Biber by writing commands to the auxiliary
ﬁle example.bcf.
2. Run biber on example.bcf. Biber will retrieve the data from bibfile.
bib and write it to the auxiliary ﬁle example.bbl in a format which can
be processed by Biblatex.
3. Run latex on example.tex. Biblatex will read the data from example.
bbl and print all citations as well as the bibliography.
3.11.1.2 BibTeX
1. Run latex on example.tex. If the ﬁle contains any citations, Biblatex will
request the respective data from BibTeX by writing commands to the auxiliary
ﬁle example.aux.
2. Run bibtex on example.aux. BibTeX will retrieve the data from
bibfile.bib and write it to the auxiliary ﬁle example.bbl in a format
which can be processed by Biblatex.

105

3. Run latex on example.tex. Biblatex will read the data from example.
bbl and print all citations as well as the bibliography.
Whenever a reference to a work which has not been cited before is added, this
procedure must be repeated. This is also the case if the last reference to a work which
has been cited before is removed because some citation labels may change in this
case. In contrast to traditional BibTeX, there is normally no need to run latex twice
after running the backend as far as the handling of bibliographic data is concerned.25
Note that when using BibTeX as the backend this only applies to the most basic case. Using the xref ﬁeld or the entryset ﬁeld may require an additional
LaTeX/BibTeX/LaTeX cycle. Some other facilities provided by Biblatex may also require an additional latex run to get certain references and the page tracking right.
In this case, the usual warning messages such as “There were undeﬁned references”
and “Label(s) may have changed. Rerun to get cross-references right” will be printed.

BibTeX only

3.11.2 Auxiliary Files
3.11.2.1 Biber
The Biblatex package uses one auxiliary bcf ﬁle only. Even if there are citation
commands in a ﬁle included via \include, you only need to run Biber on the main
bcf ﬁle. All information Biber needs is in the bcf ﬁle, including information about
all refsections if using multiple refsection environments (see § 3.11.3).
3.11.2.2 BibTeX
By default, the Biblatex package uses the main aux ﬁle only. Even if there are
citation commands in a ﬁle included via \include, which has its own aux ﬁle,
you only need to run BibTeX on the main aux ﬁle. If you are using refsection
environments in a document (see § 3.11.3) Biblatex will create one additional aux ﬁle
for every refsection environment. In this case, you also need to run bibtex
on each additional aux ﬁle. The name of the additional aux ﬁles is the base name
of the main input ﬁle with the string -blx and a running number appended at
the end. The Biblatex package issues a warning listing the ﬁles which require an
additional BibTeX run. With the basic example presented in § 3.11.1, it would issue
the following warning:
Package biblatex Warning: Please (re)run BibTeX on the file(s):
(biblatex)
example.aux
(biblatex)
and rerun LaTeX afterwards.
If the input ﬁle contained three refsection environments, the warning would
Package biblatex Warning: Please (re)run BibTeX on the file(s):
(biblatex)
example1-blx.aux
(biblatex)
example2-blx.aux
(biblatex)
example3-blx.aux
(biblatex)
and rerun LaTeX afterwards.
Apart from these aux ﬁles, Biblatex uses an additional bib ﬁle with the same suﬃx
to pass certain control parameters to BibTeX. In the example above, this ﬁle would be
25

That is, unless the defernumbers package option is enabled. See § 4.1

106

named example-blx.bib. In the event of a ﬁle name conﬂict, you can change
the suﬃx by redeﬁning the macro \blxauxsuffix in the document preamble.
When using Biber, Biblatex writes a control ﬁle named example.bcf and ignores
\blxauxsuffix. There is also no auxiliary bib ﬁle in this case.
Note that Biblatex will not overwrite any ﬁles it did not create. All auxiliary ﬁles
created automatically by this package start with a special signature line. Before
overwriting a ﬁle (excluding the main aux ﬁle, which is managed by LaTeX), Biblatex
inspects the ﬁrst line of the ﬁle to make sure that there is no ﬁle name conﬂict. If the
ﬁle in question is missing the signature line, Biblatex will immediately issue an error
message and abort before opening the output stream. In this case you should delete
any spurious ﬁles accidentally left in the working directory. If the error persists, there
may be a ﬁle name conﬂict with a ﬁle found in one of the TeX installation trees. Since
the installation trees usually do not contain any aux ﬁles and the string -blx is
fairly exotic in the name of a bib ﬁle, this is rather unlikely but theoretically possible.
If you ﬁnd out that this is indeed the case, you should redeﬁne \blxauxsuffix
permanently in the Biblatex conﬁguration ﬁle, biblatex.cfg.
3.11.3 Multiple Bibliographies
In a collection of articles by diﬀerent authors, such as a conference proceedings
volume for example, it is very common to have one bibliography for each article
rather than a global one for the entire book. In the example below, each article would
be presented as a separate \chapter with its own bibliography.
Note that with the BibTeX backend, Biblatex creates one additional aux ﬁle for
every refsection environment. These ﬁles have to be processed by BibTeX as
well, see § 3.11.2 for details.
\documentclass{...}
\usepackage{biblatex}
\begin{document}
\chapter{...}
\begin{refsection}
...
\end{refsection}
\chapter{...}
\begin{refsection}
...
\end{refsection}
\end{document}
If \printbibliography is used inside a refsection environment, it automatically restricts the scope of the list of references to the enclosing refsection
environment. For a cumulative bibliography which is subdivided by chapter but
printed at the end of the book, use the section option of \printbibliography
to select a reference section, as shown in the next example.
\documentclass{...}
\usepackage{biblatex}

107

BibTeX only

\section*{References for Chapter \ref{refsection:\therefsection}}}
\begin{document}
\chapter{...}
\begin{refsection}
...
\end{refsection}
\chapter{...}
\begin{refsection}
...
\end{refsection}
\end{document}
Note the deﬁnition of the bibliography heading in the above example. This is the
deﬁnition taking care of the subheadings in the bibliography. The main heading is
generated with a plain \chapter command in this case. The Biblatex package automatically sets a label at the beginning of every refsection environment, using
the standard \label command. The identiﬁer used is the string refsection:
followed by the number of the respective refsection environment. The number
of the current section is accessible via the refsection counter. When using the
section option of \printbibliography, this counter is also set locally. This
means that you may use the counter in heading deﬁnitions to print subheadings
like “References for Chapter 3”, as shown above. You could also use the title of the
\usepackage{nameref}
\section*{\nameref{refsection:\therefsection}}}
Since giving one \printbibliography command for each part of a subdivided
bibliography is tedious, Biblatex provides a shorthand. The \bibbysection
command automatically loops over all reference sections. This is equivalent to giving
one \printbibliography command for every section but has the additional
beneﬁt of automatically skipping sections without references. In the example above,
the bibliography would then be generated as follows:
When using a format with one cumulative bibliography subdivided by chapter (or
any other document division) it may be more appropriate to use refsegment
rather than refsection environments. The diﬀerence is that the refsection
environment generates labels local to the environment while refsegment does not
aﬀect the generation of labels, hence they will be unique across the entire document.
Note that when using BibTeX as the backend, refsegment environments do not
require additional aux ﬁles. The next example could also be given in § 3.11.4 because,
visually, it creates one global bibliography subdivided into multiple segments.

108

\documentclass{...}
\usepackage{biblatex}
\section*{References for Chapter \ref{refsegment:\therefsection\therefse
\begin{document}
\chapter{...}
\begin{refsegment}
...
\end{refsegment}
\chapter{...}
\begin{refsegment}
...
\end{refsegment}
\end{document}
The use of refsegment is similar to refsection and there is also a corresponding segment option for \printbibliography. The Biblatex package automatically sets a label at the beginning of every refsegment environment using the
string refsegment: followed by the number of the respective refsegment
environment as an identiﬁer. There is a matching refsegment counter which may
be used in heading deﬁnitions, as shown above. As with reference sections, there is
also a shorthand command which automatically loops over all reference segments:
This is equivalent to giving one \printbibliography command for every segment in the current refsection.
3.11.4 Subdivided Bibliographies
It is very common to subdivide a bibliography by certain criteria. For example, you
may want to list printed and online resources separately or divide a bibliography
into primary and secondary sources. The former case is straightforward because
you can use the entry type as a criterion for the type and nottype ﬁlters of
\printbibliography. The next example also demonstrates how to generate
matching subheadings for the two parts of the bibliography.
\documentclass{...}
\usepackage{biblatex}
\begin{document}
...
title={Printed Sources}]

109

title={Online Sources}]
\end{document}
You may also use more than two subdivisions:
\printbibliography[type=article,...]
\printbibliography[type=book,...]
\printbibliography[nottype=article,nottype=book,...]
It is even possible to give a chain of diﬀerent types of ﬁlters:
\printbibliography[section=2,type=book,keyword=abc,notkeyword=xyz]
This would print all works cited in reference section 2 whose entry type is @book
and whose keywords ﬁeld includes the keyword ‘abc’ but not ‘xyz’. When using
bibliography ﬁlters in conjunction with a numeric style, see § 3.12.5. If you need
complex ﬁlters with conditional expressions, use the filter option in conjunction
with a custom ﬁlter deﬁned with \defbibfilter. See § 3.6.10 for details on
custom ﬁlters.
\documentclass{...}
\usepackage{biblatex}
\begin{document}
...
title={Primary Sources}]
title={Secondary Sources}]
\end{document}
Dividing a bibliography into primary and secondary sources is possible with a
keyword ﬁlter, as shown in the above example. In this case, with only two subdivisions, it would be suﬃcient to use one keyword as ﬁlter criterion:
\printbibliography[keyword=primary,...]
\printbibliography[notkeyword=primary,...]
Since Biblatex has no way of knowing if an item in the bibliography is considered to
be primary or secondary literature, we need to supply the bibliography ﬁlter with
the required data by adding a keywords ﬁeld to each entry in the bib ﬁle. These
keywords may then be used as targets for the keyword and notkeyword ﬁlters,
as shown above. It may be a good idea to add such keywords right away while
building a bib ﬁle.
@Book{key,
keywords
...

= {primary,some,other,keywords},

An alternative way of subdividing the list of references are bibliography categories.
They diﬀer from the keywords-based approach shown in the example above in that
they work on the document level and do not require any changes to the bib ﬁle.

110

\documentclass{...}
\usepackage{biblatex}
\DeclareBibliographyCategory{primary}
\DeclareBibliographyCategory{secondary}
\begin{document}
...
title={Primary Sources}]
title={Secondary Sources}]
\end{document}
In this case it would also be suﬃcient to use one category only:
\printbibliography[category=primary,...]
\printbibliography[notcategory=primary,...]
It is still a good idea to declare all categories used in the bibliography explicitly
because there is a \bibbycategory command which automatically loops over
all categories. This is equivalent to giving one \printbibliography command
for every category, in the order in which they were declared.
\documentclass{...}
\usepackage{biblatex}
\DeclareBibliographyCategory{primary}
\DeclareBibliographyCategory{secondary}
\begin{document}
...
\bibbycategory
\end{document}
The handling of the headings is diﬀerent from \bibbysection and
\bibbysegment in this case. \bibbycategory uses the name of the current
category as a heading name. This is equivalent to passing heading=hcategoryi to
\printbibliography and implies that you need to provide a matching heading
for every category.
3.11.5 Entry Sets
An entry set is a group of entries which are cited as a single reference and listed as
a single item in the bibliography. The individual entries in the set are separated by

111

\entrysetpunct (§ 4.10.1). The Biblatex package supports two types of entry sets.
Static entry sets are deﬁned in the bib ﬁle like any other entry. Dynamic entry sets
are deﬁned with \defbibentryset (§ 3.6.11) on a per-document/per-refsection
basis in the document preamble or the document body. This section deals with the
deﬁnition of entry sets; style authors should also see § 4.11.1 for further information.
3.11.5.1 Static entry sets
Static entry sets are deﬁned in the bib ﬁle like any other entry. When using Biber
as the backend, deﬁning an entry set is as simple as adding an entry of type @set.
The entry has an entryset ﬁeld deﬁning the members of the set as a separated
list of entry keys:
@Set{set1,
entryset = {key1,key2,key3},
}
Entries may be part of a set in one document/refsection and stand-alone references
in another one, depending on the presence of the @set entry. If the @set entry is
cited, the set members are grouped automatically. If not, they will work like any
regular entry.
When using BibTeX as the backend, which has no native support for entry
sets, setting up entry sets involves more work. BibTeX requires entryset and
crossref ﬁelds to be used in a special way. The members of the set are given in
the entryset ﬁeld of the @set entry. The @set entry also requires a crossref
ﬁeld which points to the ﬁrst key in the entryset ﬁeld. In addition to that, all
members of the set require entryset ﬁelds which are reverse pointers to the entry
key of the @set head entry:
@Set{set1,
entryset = {key1,key2,key3},
crossref = {key1},
}
@Article{key1,
entryset = {set1},
author
= {...},
title
= {...},
...
}
@InCollection{key2,
entryset = {set1},
author
= {...},
title
= {...},
...
}
@Article{key3,
entryset = {set1},
author
= {...},
title
= {...},
...
}

112

Biber only

Note that citing any set member will automatically load the entire set with BibTeX.
If you want to refer to an item as part of a set in one document/refsection and as a
stand-alone reference in another one, you need two distinct entries with BibTeX.
3.11.5.2 Dynamic entry sets

Biber only

Dynamic entry sets are set up and work much like static ones. The main diﬀerence is
that they are deﬁned in the document preamble or on the ﬂy in the document body
using the \defbibentryset command from § 3.6.11:
\defbibentryset{set1}{key1,key2,key3}
Dynamic entry sets in the document body are local to the enclosing refsection
environment, if any. Otherwise, they are assigned to reference section 0. Those
deﬁned in the preamble are assigned to reference section 0. Note that dynamic entry
sets require Biber. They will not work with any other backend.
3.11.6 Data Containers

Biber only

The @xdata entry type serves as a data container holding one or more ﬁelds. These
ﬁelds may be inherited by other entries using the xdata ﬁeld. @xdata entries may
not be cited or added to the bibliography, they only serve as a data source for other
entries. This data inheritance mechanism is useful for ﬁxed ﬁeld combinations such
as publisher/location and for other frequently used data:
@XData{hup,
publisher
location
}
@Book{...,
author
title
date
xdata
}

= {Harvard University Press},
= {Cambridge, Mass.},

=
=
=
=

{...},
{...},
{...},
{hup},

Using a separated list of keys in its xdata ﬁeld, an entry may inherit data from
several @xdata entries. Cascading @xdata entries are supported as well, i. e., an
@xdata entry may reference one or more other @xdata entries:
@XData{macmillan:name,
publisher = {Macmillan},
}
@XData{macmillan:place,
location
= {New York and London},
}
@XData{macmillan,
xdata
= {macmillan:name,macmillan:place},
}
@Book{...,
author
= {...},
title
= {...},
date
= {...},

113

xdata

= {macmillan},

}
3.11.7 Electronic Publishing Information
The Biblatex package provides three ﬁelds for electronic publishing information:
eprint, eprinttype, and eprintclass. The eprint ﬁeld is a verbatim ﬁeld
similar to doi which holds the identiﬁer of the item. The eprinttype ﬁeld holds
the resource name, i. e., the name of the site or electronic archive. The optional
eprintclass ﬁeld is intended for additional information speciﬁc to the resource
indicated by the eprinttype ﬁeld. This could be a section, a path, classiﬁcation
information, etc. If the eprinttype ﬁeld is available, the standard styles will use
it as a literal label. In the following example, they would print “Resource: identiﬁer”
rather than the generic “eprint: identiﬁer”:
eprint
= {identifier},
eprinttype = {Resource},
The standard styles feature dedicated support for a few online archives. For arXiv
references, put the identiﬁer in the eprint ﬁeld and the string arxiv in the
eprinttype ﬁeld:
eprint
= {math/0307200v3},
eprinttype = {arxiv},
For papers which use the new identiﬁer scheme (April 2007 and later) add the primary
classiﬁcation in the eprintclass ﬁeld:
eprint
= {1008.2849v1},
eprinttype = {arxiv},
eprintclass = {cs.DS},
There are two aliases which ease the integration of arXiv entries. archiveprefix
is treated as an alias for eprinttype; primaryclass is an alias for
eprintclass. If hyperlinks are enabled, the eprint identiﬁer will be transformed
into a link to arxiv.org. See the package option arxiv in § 3.1.2.1 for further
details.
For jstor references, put the stable jstor number in the eprint ﬁeld and the
string jstor in the eprinttype ﬁeld:
eprint
= {number},
eprinttype = {jstor},
When using jstor’s export feature to export citations in BibTeX format, jstor uses
the url ﬁeld by default (where the hnumberi is a unique and stable identiﬁer):
url = {http://www.jstor.org/stable/number},
While this will work as expected, full urls tend to clutter the bibliography. With
the eprint ﬁelds, the standard styles will use the more readable “jstor: hnumberi”
format which also supports hyperlinks. The hnumberi becomes a clickable link if
hyperref support is enabled.
For PubMed references, put the stable PubMed identiﬁer in the eprint ﬁeld and
the string pubmed in the eprinttype ﬁeld. This means that:

114

url = {http://www.ncbi.nlm.nih.gov/pubmed/pmid},
becomes:
eprint
= {pmid},
eprinttype = {pubmed},
and the standard styles will print “pmid: hpmidi” instead of the lengthy url. If
hyperref support is enabled, the hpmidi will be a clickable link to PubMed.
For handles (hdls), put the handle in the eprint ﬁeld and the string hdl in the
eprinttype ﬁeld:
eprint
= {handle},
eprinttype = {hdl},
For Google Books references, put Google’s identiﬁer in the eprint ﬁeld and the
string googlebooks in the eprinttype ﬁeld. This means that, for example:
would become:
eprint
= {XXu4AkRVBBoC},
the full url. If hyperref support is enabled, the identiﬁer will be a clickable link to
Note that eprint is a verbatim ﬁeld. Always give the identiﬁer in its unmodiﬁed
form. For example, there is no need to replace _ with \_. Also see § 4.11.2 on how
to add dedicated support for other eprint resources.
3.11.8 External Abstracts and Annotations
Styles which print the ﬁelds abstract and/or annotation may support an
alternative way of adding abstracts or annotations to the bibliography. Instead of
including the text in the bib ﬁle, it may also be stored in an external LaTeX ﬁle. For
@Article{key1,
...
abstract
}

= {This is an abstract of entry ‘key1’.}

in the bib ﬁle, you may create a ﬁle named bibabstract-key1.tex and put
the abstract in this ﬁle:
This is an abstract of entry ‘key1’.
\endinput
26

Note that the Google Books id seems to be a bit of an ‘internal’ value. As of this writing, there does
not seem to be any way to search for an id on Google Books. You may prefer to use the url in
this case.

115

The name of the external ﬁle must be the entry key preﬁxed with bibabstractor bibannotation-, respectively. You can change these preﬁxes by redeﬁning
\bibabstractprefix and \bibannotationprefix. Note that this feature
needs to be enabled explicitly by setting the package option loadfiles from
§ 3.1.2.1. The option is disabled by default for performance reasons. Also note that
any abstract and annotation ﬁelds in the bib ﬁle take precedence over the
external ﬁles. Using external ﬁles is strongly recommended if you have long abstracts
or a lot of annotations since this may increase memory requirements signiﬁcantly.
It is also more convenient to edit the text in a dedicated LaTeX ﬁle. Style authors
should see § 4.11.3 for further information.

3.12 Hints and Caveats
and potential misconceptions.
3.12.1 Usage with KOMA-Script Classes
When using Biblatex in conjunction with one of the scrbook, scrreprt, or
scrartcl classes, the headings bibliography and biblist from § 3.6.8 are
responsive to the bibliography-related options of these classes.27 You can override
\printbibheading and \printbiblist. See §§ 3.6.2, 3.6.4, 3.6.8 for details.
of these classes. If one of the above classes is detected, Biblatex will also provide the
\ifkomabibtotoc{htruei}{hfalsei}
and to hfalsei otherwise.
\ifkomabibtotocnumbered{htruei}{hfalsei}
Expands to htruei if the class would add the bibliography to the table of contents as a numbered section, and to hfalsei otherwise. If this test yields htruei,
\ifkomabibtotoc will always yield htruei as well, but not vice versa.
3.12.2 Usage with the Memoir Class
When using Biblatex with the memoir class, most class facilities for adapting the
bibliography have no eﬀect. Use the corresponding facilities of this package instead (§§ 3.6.2, 3.6.8, 3.6.9). Instead of redeﬁning memoir’s \bibsection, use the
and 3.6.8). Instead of \prebibhook and \postbibhook, use the prenote and
postnote options of \printbibliography and \defbibnote (§§ 3.6.2 and
default layout of this class. The default headings bibliography and biblist
27

This applies to the traditional syntax of these options (bibtotoc and bibtotocnumbered)
as well as to the hkeyi=hvaluei syntax introduced in koma-Script 3.x, i. e., to bibliography=
nottotoc, bibliography = totoc, and bibliography = totocnumbered, The global
toc=bibliography and toc=bibliographynumbered options as well as their aliases
are detected as well. In any case, the options must be set globally in the optional argument to
\documentclass.

116

(§ 3.6.8) are also responsive to memoir’s \bibintoc and \nobibintoc switches.
The length register \bibitemsep is used by Biblatex in a way similar to memoir
(§ 3.9.3). This section also introduces some additional length registers which correspond to memoir’s \biblistextra. Lastly, \setbiblabel does not map to a
single facility of the Biblatex package since the style of all labels in the bibliography
is controlled by the bibliography style. See § 4.2.2 in the author section of this manual
for details. If the memoir class is detected, Biblatex will also provide the following
\ifmemoirbibintoc{htruei}{hfalsei}
Expands to htruei or hfalsei, depending on memoir’s \bibintoc and
\nobibintoc switches. This is a LaTeX frontend to memoir’s \ifnobibintoc
test. Note that the logic of the test is reversed.
3.12.3 Page Numbers in Citations
If the hpostnotei argument to a citation command is a page number or page range,
Biblatex will automatically preﬁx it with ‘p.’ or ‘pp.’ by default. This works reliably
in typical cases, but sometimes manual intervention may be required. In this case, it
is important to understand how this argument is handled in detail. First, Biblatex
checks if the postnote is an Arabic or Roman numeral (case insensitive). If this test
succeeds, the postnote is considered as a single page or other number which will be
preﬁxed with ‘p.’ or some other string which depends on the pagination ﬁeld
(see § 2.3.10). If it fails, a second test is performed to ﬁnd out if the postnote is a
range or a list of Arabic or Roman numerals. If this test succeeds, the postnote will
be preﬁxed with ‘pp.’ or some other string in the plural form. If it fails as well, the
postnote is printed as is. Note that both tests expand the hpostnotei. All commands
used in this argument must therefore be robust or preﬁxed with \protect. Here
are a few examples of hpostnotei arguments which will be correctly recognized as a
single number, a range of numbers, or a list of numbers, respectively:
\cite[25]{key}
\cite[vii]{key}
\cite[XIV]{key}
\cite[34--38]{key}
\cite[iv--x]{key}
\cite[185/86]{key}
\cite[XI \& XV]{key}
\cite[3, 5, 7]{key}
\cite[vii--x; 5, 7]{key}
In some other cases, however, the tests may get it wrong and you need to resort
to the auxiliary commands \pno, \ppno, and \nopp from § 3.7.8. For example,
suppose a work is cited by a special pagination scheme consisting of numbers and
letters. In this scheme, the string ‘27a’ would mean ‘page 27, part a’. Since this
string does not look like a number or a range to Biblatex, you need to force the preﬁx
for a single number manually:
\cite[\pno~27a]{key}
There is also a \ppno command which forces a range preﬁx as well as a \nopp
command which suppresses all preﬁxes:

117

\cite[\ppno~27a--28c]{key}
\cite[\nopp 25]{key}
These commands may be used anywhere in the hpostnotei argument. They may also
be used multiple times. For example, when citing by volume and page number, you
may want to suppress the preﬁx at the beginning of the postnote and add it in the
middle of the string:
\cite[VII, \pno~5]{key}
\cite[VII, \pno~3, \ppno~40--45]{key}
\cite[see][\ppno~37--46, in particular \pno~40]{key}
There are also two auxiliary command for suﬃxes like ‘the following page(s)’. Instead
of inserting such suﬃxes literally (which would require \ppno to force a preﬁx):
\cite[\ppno~27~sq.]{key}
\cite[\ppno~55~sqq.]{key}
use the auxiliary commands \psq and \psqq. Note that there is no space between
the number and the command. This space will be inserted automatically and may be
modiﬁed by redeﬁning the macro \sqspace.
\cite[27\psq]{key}
\cite[55\psqq]{key}
Since the postnote is printed without any preﬁx if it includes any character which is
not an Arabic or Roman numeral, you may also type the preﬁx manually:
\cite[p.~5]{key}
It is possible to suppress the preﬁx on a per-entry basis by setting the pagination
ﬁeld of an entry to ‘none’, see § 2.3.10 for details. If you do not want any preﬁxes at
all or prefer to type them manually, you can also disable the entire mechanism in
the document preamble or the conﬁguration ﬁle as follows:
\DeclareFieldFormat{postnote}{#1}
The hpostnotei argument is handled as a ﬁeld and the formatting of this ﬁeld is
controlled by a ﬁeld formatting directive which may be freely redeﬁned. The above
deﬁnition will simply print the postnote as is. See §§ 4.3.2 and 4.4.2 in the author
guide for further details.
3.12.4 Name Parts and Name Spacing
The Biblatex package gives users and style authors very ﬁne-grained control of name
spacing and the line-breaking behavior of names, especially when they are using
Biber as the backend. The commands discussed in the following are documented
in §§ 3.9.1 and 4.10.1. This section is meant to give an overview of how they are
put together. A note on terminology: a name part is a basic part of the name, for
example the ﬁrst or the last name. Each part of a name may be a single name or it
may be composed of multiple names. For example, the name part ‘ﬁrst name’ may
be composed of a ﬁrst and a middle name. The latter are referred to as name elements
in this section. Let’s consider a simple name ﬁrst: “John Edward Doe”. This name is
composed of the following parts:

118

First
Preﬁx
Last
Suﬃx

John Edward
—
Doe
—

The spacing, punctuation and line-breaking behavior of names is controlled by six
macros:
a=\bibnamedelima

b=\bibnamedelimb
c=\bibnamedelimc

d=\bibnamedelimd
i =\bibnamedelimi
p=\revsdnamepunct

Inserted by the backend after the ﬁrst element of every
name part if that element is less than three characters
long and before the last element of every name part.
Inserted by the backend between all elements of a name
part where \bibnamedelima does not apply.
Inserted by a formatting directive between the name
preﬁx and the last name if useprefix=true. If
useprefix=false, \bibnamedelimd is used
Inserted by a formatting directive between name parts
where \bibnamedelimc does not apply.
Replaces \bibnamedelima/b after initials
Inserted by a formatting directive after the last name
when the name parts are reversed.

This is how the delimiters are employed:
John Edward Doe
a

d

Doe, John Edward
p d

a

Initials in the bib ﬁle get a special delimiter:
J. Edward Doe
i

d

Let’s consider a more complex name: “Charles-Jean Étienne Gustave Nicolas de La
Vallée Poussin”. This name is composed of the following parts:
First
Preﬁx
Last
Suﬃx

Charles-Jean Étienne Gustave Nicolas
de
La Vallée Poussin
—

The delimiters:
Charles-Jean Étienne Gustave Nicolas de La Vallée Poussin
b

b

a

d

c

a

a

Note that \bibnamedelima/b/i are inserted by the backend. The backend
processes the name parts and takes care of the delimiters between the elements
that make up a name part, processing each part individually. In contrast to that,
the delimiters between the parts of the complete name (\bibnamedelimc/d)
are added by name formatting directives at a later point in the processing chain.
The spacing and punctuation of initials is also handled by the backend and may be
customized by redeﬁning the following three macros:

119

a=\bibinitperiod
b=\bibinitdelim
c=\bibinithyphendelim

Inserted by the backend after initials.
Inserted by the backend between multiple initials.
Inserted by the backend between the initials of
hyphenated name parts, replacing
\bibinitperiod and \bibinitdelim.

This is how they are employed:
J. E. Doe
a b

a

K.- H. Mustermann
c

a

3.12.5 Bibliography Filters and Citation Labels
The citation labels generated by this package are assigned to the full list of references
before it is split up by any bibliography ﬁlters. They are guaranteed to be unique
across the entire document (or a refsection environment), no matter how many
bibliography ﬁlters you are using. When using a numeric citation scheme, however,
this will most likely lead to discontinuous numbering in split bibliographies. Use
the defernumbers package option to avoid this problem. If this option is enabled,
numeric labels are assigned the ﬁrst time an entry is printed in any bibliography.
3.12.6 Active Characters in Bibliography Headings
Packages using active characters, such as babel, polyglossia, csquotes, or
underscore, usually do not make them active until the beginning of the document body to avoid interference with other packages. A typical example of such
an active character is the Ascii quote ”, which is used by various language modules of the babel/polyglossia packages. If shorthands such as ”< and ”a are
used in the argument to \defbibheading and the headings are deﬁned in the
document preamble, the non-active form of the characters is saved in the heading
deﬁnition. When the heading is typeset, they do not function as a command but
are simply printed literally. The most straightforward solution consists in moving \defbibheading after \begin{document}. Alternatively, you may use
babel’s \shorthandon and \shorthandoff commands to temporarily make
the shorthands active in the preamble. The above also applies to bibliography notes
and the \defbibnote command.
3.12.7 Grouping in Reference Sections and Segments
All LaTeX environments enclosed in \begin and \end form a group. This may have
undesirable side eﬀects if the environment contains anything that does not expect to
be used within a group. This issue is not speciﬁc to refsection and refsegment
environments, but it obviously applies to them as well. Since these environments
will usually enclose much larger portions of the document than a typical itemize
or similar environment, they are simply more likely to trigger problems related to
grouping. If you observe any malfunctions after adding refsection environments
to a document (for example, if anything seems to be ‘trapped’ inside the environment),
\chapter{...}
\refsection
...
\endrefsection

120

This will not from a group, but otherwise works as usual. As far as Biblatex
is concerned, it does not matter which syntax you use. The alternative syntax
is also supported by the refsegment environment. Note that the commands
\newrefsection and \newrefsegment do not form a group. See §§ 3.6.5 and
3.6.6 for details.

4 Author Guide
This part of the manual documents the author interface of the Biblatex package. The
author guide covers everything you need to know in order to write new citation
and bibliography styles or localization modules. You should read the user guide ﬁrst
before continuing with this part of the manual.

4.1 Overview
Before we get to the commands and facilities provided by Biblatex, we will have
a look at some of its fundamental concepts. The Biblatex package uses auxiliary
ﬁles in a special way. Most notably, the bbl ﬁle is used diﬀerently and when using
BibTeX as the backend, there is only one bst ﬁle which implements a structured data
interface rather than exporting printable data. With LaTeX’s standard bibliographic
facilities, a document includes any number of citation commands in the document
body plus \bibliographystyle and \bibliography, usually towards the
end of the document. The location of the former is arbitrary, the latter marks the
spot where the list of references is to be printed:
\documentclass{...}
\begin{document}
\cite{...}
...
\bibliographystyle{...}
\bibliography{...}
\end{document}
Processing this ﬁles requires that a certain procedure be followed. This procedure is
as follows:
1. Run latex: On the ﬁrst run, \bibstyle and \bibdata commands are
written to the aux ﬁle, along with \citation commands for all citations.
At this point, the references are undeﬁned because LaTeX is waiting for BibTeX
to supply the required data. There is also no bibliography yet.
2. Run bibtex: BibTeX writes a thebibliography environment to the bbl
ﬁle, supplying all entries from the bib ﬁle which were requested by the
\citation commands in the aux ﬁle.
3. Run latex: Starting with the second run, the \bibitem commands in the
thebibliography environment write one \bibcite command for each
bibliography entry to the aux ﬁle. These \bibcite commands deﬁne the
citation labels used by \cite. However, the references are still undeﬁned
because the labels are not available until the end of this run.
4. Run latex: Starting with the third run, the citation labels are deﬁned as the
aux ﬁle is read in at the end of the preamble. All citations can now be printed.

121

Note that all bibliographic data is written to the bbl ﬁle in the ﬁnal format. The
bbl ﬁle is read in and processed like any printable section of the document. For
example, consider the following entry in a bib ﬁle:

@Book{companion,
author
= {Michel Goossens and Frank Mittelbach and Alexander Samarin}
title
= {The LaTeX Companion},
year
= {1994},
}
With the plain.bst style, BibTeX exports this entry to the bbl ﬁle as follows:
\bibitem{companion}
Michel Goossens, Frank Mittelbach, and Alexander Samarin.
\newblock {\em The LaTeX Companion}.
By default, LaTeX generates numeric citation labels, hence \bibitem writes lines
such as the following to the aux ﬁle:
\bibcite{companion}{1}
Implementing a diﬀerent citation style implies that more data has to be transferred
via the aux ﬁle. With the natbib package, for example, the aux ﬁle contains lines
like this one:
\bibcite{companion}{{1}{1994}{{Goossens et~al.}}{{Goossens, Mittelbach,
and Samarin}}}
The Biblatex package supports citations in any arbitrary format, hence citation
commands need access to all bibliographic data. What this would mean within
the scope of the procedure outlined above becomes obvious when looking at the
output of the jurabib package which also makes all bibliographic data available
in citations:
\bibcite{companion}{{Goossens\jbbfsasep Mittelbach\jbbstasep Samarin}%
\bibbdsep{} 1994}}{{The LaTeX Companion}{}{}{2}{}{}{}{}{}}{\bibnf
{Goossens}{Michel}{M.}{}{}\Bibbfsasep\bibnf{Mittelbach}{Frank}{F.}%
{}{}\Bibbstasep\bibnf{Samarin}{Alexander}{A.}{}{}}{\bibtfont{The
In this case, the contents of the entire thebibliography environment are eﬀectively transferred via the aux ﬁle. The data is read from the bbl ﬁle, written to the
aux ﬁle, read back from the aux ﬁle and then kept in memory. The bibliography
itself is still generated as the bbl ﬁle is read in. The Biblatex package would also be
forced to cycle all data through the aux ﬁle. This implies processing overhead and
is also redundant because the data has to be kept in memory anyway.
The traditional procedure is based on the assumption that the full bibliographic
data of an entry is only required in the bibliography and that all citations use

122

short labels. This makes it very eﬀective in terms of memory requirements, but
it also implies that it does not scale well. That is why Biblatex takes a diﬀerent
approach. First of all, the document structure is slightly diﬀerent. Instead of using
\bibliography in the document body, database ﬁles are speciﬁed in the preamble with \addbibresource, \bibliographystyle is omitted entirely (all
features are controlled by package options), and the bibliography is printed using
\printbibliography:
\documentclass{...}
\usepackage[...]{biblatex}
\begin{document}
\cite{...}
...
\printbibliography
\end{document}
In order to streamline the whole procedure, Biblatex essentially employs the bbl
ﬁle like an aux ﬁle, rendering \bibcite obsolete. We then get the following
procedure:
1. Run latex: The ﬁrst step is similar to the traditional procedure described
above: \bibstyle and \bibdata commands are written to the aux ﬁle
(BibTeX backend) or bcf ﬁle (Biber backend), along with \citation commands for all citations. We then wait for the backend to supply the required
data. With BibTeX as a backend, since Biblatex uses a special bst ﬁle which
implements its data interface on the BibTeX end, the \bibstyle command
is always \bibstyle{biblatex}.
2. Run biber or bibtex: The backend supplies those entries from the bib
ﬁle which were requested by the \citation commands in the auxiliary ﬁle.
However, it does not write a printable bibliography to the bbl ﬁle, but rather
a structured representation of the bibliographic data. Just like an aux ﬁle, this
bbl ﬁle does not print anything when read in. It merely puts data in memory.
3. Run latex: Starting with the second run, the bbl ﬁle is processed right at
the beginning of the document body, just like an aux ﬁle. From this point on,
all bibliographic data is available in memory so that all citations can be printed
data, not only to a predeﬁned label. The bibliography is generated from memory
using the same data and may be ﬁltered or split as required.
Let’s consider the sample entry given above once more:

@Book{companion,
author
= {Michel Goossens and Frank Mittelbach and Alexander Samarin}
title
= {The LaTeX Companion},
28

If the defernumbers package option is enabled Biblatex uses an algorithm similar to the traditional
procedure to generate numeric labels. In this case, the numbers are assigned as the bibliography is
printed and then cycled through the backend auxiliary ﬁle. It will take an additional LaTeX run for
them to be picked up in citations.

123

year

= {1994},

}
With Biblatex and the Biber backend, this entry is essentially exported in the following
format:
\entry{companion}{book}{}
\labelname{author}{3}{}{%
{{uniquename=0,hash=...}{Goossens}{G.}{Michel}{M.}{}{}{}{}}%
{{uniquename=0,hash=...}{Mittelbach}{M.}{Frank}{F.}{}{}{}{}}%
{{uniquename=0,hash=...}{Samarin}{S.}{Alexander}{A.}{}{}{}{}}%
}
\name{author}{3}{}{%
{{uniquename=0,hash=...}{Goossens}{G.}{Michel}{M.}{}{}{}{}}%
{{uniquename=0,hash=...}{Mittelbach}{M.}{Frank}{F.}{}{}{}{}}%
{{uniquename=0,hash=...}{Samarin}{S.}{Alexander}{A.}{}{}{}{}}%
}
\list{publisher}{1}{%
}
\list{location}{1}{%
}
\field{title}{The LaTeX Companion}
\field{year}{1994}
\endentry
As seen in this example, the data is presented in a structured format that resembles
the structure of a bib ﬁle to some extent. At this point, no decision concerning
the ﬁnal format of the bibliography entry has been made. The formatting of the
bibliography and all citations is controlled by LaTeX macros, which are deﬁned in
bibliography and citation style ﬁles.

4.2 Bibliography Styles
A bibliography style is a set of macros which print the entries in the bibliography.
Such styles are deﬁned in ﬁles with the suﬃx bbx. The Biblatex package loads the
selected bibliography style ﬁle at the end of the package. Note that a small repertory
of frequently used macros shared by several of the standard bibliography styles is
included in biblatex.def. This ﬁle is loaded at the end of the package as well,
prior to the selected bibliography style.
4.2.1 Bibliography Style Files
Before we go over the individual components of a bibliography style, consider this
example of the overall structure of a typical bbx ﬁle:
\ProvidesFile{example.bbx}[2006/03/15 v1.0 biblatex bibliography style]
\defbibenvironment{bibliography}
{...}

124

{...}
{...}
\defbibenvironment{shorthand}
{...}
{...}
{...}
\InitializeBibliographyStyle{...}
\DeclareBibliographyDriver{article}{...}
\DeclareBibliographyDriver{book}{...}
\DeclareBibliographyDriver{inbook}{...}
...
\DeclareBibliographyDriver{shorthand}{...}
\endinput
The main structure of a bibliography style ﬁle consists of the following commands:
\RequireBibliographyStyle{hstylei}
This command is optional and intended for specialized bibliography styles built on
top of a more generic style. It loads the bibliography style style.bbx.
\InitializeBibliographyStyle{hcodei}
Speciﬁes arbitrary hcodei to be inserted at the beginning of the bibliography, but
inside the group formed by the bibliography. This command is optional. It may be
useful for deﬁnitions which are shared by several bibliography drivers but not used
outside the bibliography. Keep in mind that there may be several bibliographies in a
document. If the bibliography drivers make any global assignments, they should be
reset at the beginning of the next bibliography.
\DeclareBibliographyDriver{hentrytypei}{hcodei}
Deﬁnes a bibliography driver. A ‘driver’ is a macro which handles a speciﬁc entry
type (when printing bibliography lists) or a speciﬁc named bibliography list (when
printing bibliography lists). The hentrytypei corresponds to the entry type used in
bib ﬁles, speciﬁed in lowercase letters (see § 2.1). The hentrytypei argument may
also be an asterisk. In this case, the driver serves as a fallback which is used if no
speciﬁc driver for the entry type has been deﬁned. The hcodei is arbitrary code
which typesets all bibliography entries of the respective hentrytypei. This command
is mandatory. Every bibliography style should provide a driver for each entry type.
\DeclareBibliographyAlias{haliasi}{hentrytypei}
If a bibliography driver covers more than one entry type, this command may be used
to deﬁne an alias. This command is optional. The hentrytypei argument may also
be an asterisk. In this case, the alias serves as a fallback which is used if no speciﬁc
driver for the entry type has been deﬁned.
\DeclareBibliographyOption{hkeyi}[hvaluei]{hcodei}
This command deﬁnes additional preamble options in hkeyi=hvaluei format. The
hkeyi is the option key. The hcodei is arbitrary TeX code to be executed whenever
the option is used. The value passed to the option is passed on to the hcodei as #1.
The optional hvaluei is a default value to be used if the bare key is given without any
value. This is useful for boolean switches. For example, with a deﬁnition like the
following:

125

\DeclareBibliographyOption{somekey}[true]{...}
giving ‘somekey’ without a value is equivalent to ‘somekey=true’.
\DeclareEntryOption{hkeyi}[hvaluei]{hcodei}
Similar to \DeclareBibliographyOption but deﬁnes options which are
settable on a per-entry basis in the options ﬁeld from § 2.2.3. The hcodei is
executed whenever Biblatex prepares the data of the entry for use by a citation
command or a bibliography driver.
4.2.2 Bibliography Environments
Apart from deﬁning bibliography drivers, the bibliography style is also responsible
for the environments which control the layout of the bibliography and bibliography lists. These environments are deﬁned with \defbibenvironment. By default, \printbibliography uses the environment bibliography. Here is a
deﬁnition suitable for a bibliography style which does not print any labels in the
bibliography:
\defbibenvironment{bibliography}
{\list
{}
{\setlength{\leftmargin}{\bibhang}%
\setlength{\itemindent}{-\leftmargin}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}}
{\endlist}
{\item}
This deﬁnition employs a list environment with hanging indentation, using the
\bibhang length register provided by Biblatex. It allows for a certain degree of
conﬁgurability by using \bibitemsep and \bibparsep, two length registers
provided by Biblatex for this very purpose (see § 4.10.3). The authoryear and
authortitle bibliography styles use a deﬁnition similar to this example.
\defbibenvironment{bibliography}
{\list
{\printfield[labelnumberwidth]{labelnumber}}
{\setlength{\labelwidth}{\labelnumberwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}}%
\renewcommand*{\makelabel}[1]{\hss##1}}
{\endlist}
{\item}
Some bibliography styles print labels in the bibliography. For example, a bibliography style designed for a numeric citation scheme will print the number of every
entry such that the bibliography looks like a numbered list. In the ﬁrst example,
the ﬁrst argument to \list was empty. In this example, we need it to insert the

126

number, which is provided by Biblatex in the labelnumber ﬁeld. We also employ several length registers and other facilities provided by Biblatex, see §§ 4.10.4
and 4.10.5 for details. The numeric bibliography style uses the deﬁnition given
above. The alphabetic style is similar, except that labelnumber is replaced
by labelalpha and labelnumberwidth by labelalphawidth.
Bibliography lists are handled in a similar way. \printbiblist uses the
environment named after the bibliography list by default (when using BibTeX,
\printshorthands always uses the shorthand environment). A typical example is given below. See §§ 4.10.4 and 4.10.5 for details on the length registers and
facilities used in this example.
\defbibenvironment{shorthand}
{\list
{\printfield[shorthandwidth]{shorthand}}
{\setlength{\labelwidth}{\shorthandwidth}%
\setlength{\leftmargin}{\labelwidth}%
\setlength{\labelsep}{\biblabelsep}%
\setlength{\itemsep}{\bibitemsep}%
\setlength{\parsep}{\bibparsep}%
\renewcommand*{\makelabel}[1]{##1\hss}}}
{\endlist}
{\item}
4.2.3 Bibliography Drivers
Before we go over the commands which form the data interface of the Biblatex
package, it may be instructive to have a look at the structure of a bibliography driver.
Note that the example given below is greatly simpliﬁed, but still functional. For the
sake of readability, we omit several ﬁelds which may be part of a @book entry and
also simplify the handling of those which are considered. The main point is to give
you an idea of how a driver is structured. For information about the mapping of the
BibTeX ﬁle format ﬁelds to Biblatex’s data types, see § 2.2.
\DeclareBibliographyDriver{book}{%
\printnames{author}%
\newunit\newblock
\printfield{title}%
\newunit\newblock
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit
\printfield{year}%
\finentry}
The standard bibliography styles employ two bibliography macros begentry and
finentry:
\DeclareBibliographyDriver{entrytype}{%
\usebibmacro{begentry}
...
\usebibmacro{finentry}}

127

with the default deﬁnitions
\newbibmacro*{begentry}{}
\newbibmacro*{finentry}{\finentry}
Use of these macros is recommended for easy hooks into the beginning and end of
the driver.
Returning to the driver for the book entrytype above, there is still one piece
missing: the formatting directives used by \printnames, \printlist, and
\printfield. To give you an idea of what a formatting directive looks like, here
are some ﬁctional ones used by our sample driver. Field formats are straightforward,
the value of the ﬁeld is passed to the formatting directive as an argument which may
be formatted as desired. The following directive will simply wrap its argument in an
\emph command:
\DeclareFieldFormat{title}{\emph{#1}}
List formats are slightly more complex. After splitting up the list into individual
items, Biblatex will execute the formatting directive once for every item in the list.
The item is passed to the directive as an argument. The separator to be inserted
between the individual items in the list is also handled by the corresponding directive,
hence we have to check whether we are in the middle of the list or at the end when
inserting it.
\DeclareListFormat{location}{%
#1%
\ifthenelse{\value{listcount}<\value{liststop}}
{}}
Formatting directives for names are similar to those for literal lists, but the individual
items in the list are names which are automatically dissected into their components.
The list formatting directive is executed once for each name in the list and the
components of the name are passed to the formatting directive as separate arguments.
For example, #1 is the last name and #3 is the ﬁrst name. Here is a simpliﬁed example:
\DeclareNameFormat{author}{%
\ifthenelse{\value{listcount}=1}
{#1%
{\ifblank{#3}{}{#3\space}%
#1}%
\ifthenelse{\value{listcount}<\value{liststop}}
{}}
The above directive reverses the name of the ﬁrst author (“Last, First”) and prints
the remaining names in their regular sequence (“First Last”). Note that the only
component which is guaranteed to be available is the last name, hence we have to
check which parts of the name are actually present. If a certain component of a name
is not available, the corresponding argument will be blank. As with directives for
literal lists, the separator to be inserted between the individual items in the list is
also handled by the formatting directive, hence we have to check whether we are
in the middle of the list or at the end when inserting it. This is what the second
\ifthenelse test does.

128

4.2.4 Special Fields
The following lists and ﬁelds are used by Biblatex to pass data to bibliography drivers
and citation commands. They are not used in bib ﬁles but deﬁned automatically by
the package. From the perspective of a bibliography or citation style, they are not
diﬀerent from the ﬁelds in a bib ﬁle.
4.2.4.1 Generic Fields
entrykey

ﬁeld (string)
The entry key of an item in the bib ﬁle. This is the string used by Biblatex and the
backend to identify an entry in the bib ﬁle.

childentrykey ﬁeld (string)

When citing a subentry of an entry set, Biblatex provides the data of the parent
@set entry to citation commands. This implies that the entrykey ﬁeld holds the
entry key of the parent. The entry key of the child entry being cited is provided in
the childentrykey ﬁeld. This ﬁeld is only available when citing a subentry of
an entry set.
datelabelsource

ﬁeld (literal)

Biber only

Holds the preﬁx coming before ‘date’ of the date ﬁeld name chosen by
\DeclareLabeldate. For example, if the label date ﬁeld is eventdate, then
datelabelsource will be ‘event’. In case \DeclareLabeldate selects the
date ﬁeld, then datelabelsource will be deﬁned but will be an empty string
as the preﬁx coming before ‘date’ in the date label name is empty. This is so that the
contents of datelabelsource can be used in constructing references to the ﬁeld
which \DeclareLabeldate chooses. Since \DeclareLabeldate can also
select literal strings for fallbacks, if datelabelsource is undeﬁned, then either
the labeldate package option is set to false or \DeclareLabeldate chose
a literal string instead of a date ﬁeld. Bear in mind that \DeclareLabeldate
can also be used to select non-date ﬁelds as a fallback and so datelabelsource
might contain a ﬁeld name. So, in summary, the rules are

\iffieldundef{datalabelsource}
{
% labeldate package option is not set or \DeclareLabeldate resolved to
}
{
\iffieldundef{\thefield{datelabelsource}}
{
% datelabelsource contains a date field name prefix like ””, ”even
}
{
% datelabelsource contains a non-date field
}
}
entrytype

ﬁeld (string)
The entry type (@book, @inbook, etc.), given in lowercase letters.

129

childentrytype ﬁeld (string)

When citing a subentry of an entry set, Biblatex provides the data of the parent
@set entry to citation commands. This implies that the entrytype ﬁeld holds the
entry type of the parent. The entry type of the child entry being cited is provided in
the childentrytype ﬁeld. This ﬁeld is only available when citing a subentry of
an entry set.
entrysetcount ﬁeld (integer)

This ﬁeld holds an integer indicating the position of a set member in the entry set
(starting at 1). This ﬁeld is only available in the subentries of an entry set.
hash

ﬁeld (string)

Biber only

This ﬁeld is special in that it is only available locally in name formatting directives.
It holds a hash string which uniquely identiﬁes individual names in a name list. This
information is available for all names in all name lists. See also namehash and
fullhash.
namehash

ﬁeld (string)
A hash string which uniquely identiﬁes the labelname list. This is useful for
recurrence checks. For example, a citation style which replaces recurrent authors or
editors with a string like ‘idem’ could save the namehash ﬁeld with \savefield
and use it in a comparison with \iffieldequals later (see §§ 4.6.1 and 4.6.2).
The namehash is derived from the truncated labelname list, i. e., it is responsive

fullhash ﬁeld (string)

A hash string which uniquely identiﬁes the labelname list. This ﬁelds diﬀers
from namehash in two details: 1) The shortauthor and shorteditor lists
are ignored when generating the hash. 2) The hash always refers to the full list,
pageref

list (literal)
If the backref package option is enabled, this list holds the page numbers of the
pages on which the respective bibliography entry is cited. If there are refsection
environments in the document, the back references are local to the reference sections.

sortinit

ﬁeld (literal)
This ﬁeld holds the initial character of the information used during sorting. With
BibTeX, this ﬁeld is also used internally instead of sortinithash.

sortinithash ﬁeld (string)

Biber only

With Biber, this ﬁeld holds a hash of the (locale-speciﬁc) Unicode Collation Algorithm
primary weight of the ﬁrst extended grapheme cluster (essentially the ﬁrst character)
of the string used during sorting. This is useful when subdividing the bibliography
alphabetically and is used internally by \bibinitsep (see § 3.9.3).
clonesourcekey

ﬁeld (string)

Biber only

This ﬁeld holds the entry key of the entry from which an entry was cloned. Clones
are created for entries which are mentioned in related ﬁelds as part of related
entry processing, for example.

130

4.2.4.2 Fields for Use in Citation Labels
labelalpha ﬁeld (literal)

When using BibTeX as the backend, a label similar to the labels generated by the
alpha.bst style of traditional BibTeX. This default label consists of initials drawn
from the labelname list plus the last two digits of the publication year. The label
ﬁeld may be used to override its non-numeric portion. If the label ﬁeld is deﬁned,
Biblatex will use its value and append the last two digits of the publication year when
generating labelalpha. The shorthand ﬁeld may be used to override the entire
label. If deﬁned, labelalpha is the shorthand rather than an automatically
generated label. With Biber, users can specify a template used to construct the
alphabetic label (see § 4.5.4) and the default template mirrors the format mentioned for
bibtex above. A complete ‘alphabetic’ label consists of the ﬁelds labelalpha plus
extraalpha. Note that the labelalpha and extraalpha ﬁelds need to be
as well as \labelalphaothers in § 3.9.1.
extraalpha

Biber only

ﬁeld (integer)
The ‘alphabetic’ citation scheme usually requires a letter to be appended to the label
if the bibliography contains two or more works by the same author which were all
published in the same year. In this case, the extraalpha ﬁeld holds an integer
which may be converted to a letter with \mknumalph or formatted in some other
way. This ﬁeld is similar to the role of extrayear in the author-year scheme. A
complete ‘alphabetic’ label consists of the ﬁelds labelalpha plus extraalpha.
Note that the labelalpha and extraalpha ﬁelds need to be requested with the
package option labelalpha, see § 3.1.2.3 for details. See also labelalpha as
well as \labelalphaothers in § 3.9.1. Table 5 summarises the various extra*
disambiguation counters and what they track.

labelname

list (name)
The name to be printed in citations. This list is a copy of either the shortauthor,
the author, the shorteditor, the editor, or the translator list, which
are normally checked for in this order. If no authors and editors are available, this list
is undeﬁned. Note that this list is also responsive to the useauthor, useeditor,
and usetranslator options, see § 3.1.3. Citation styles should use this list when
printing the name in a citation. This list is provided for convenience only and does
not carry any additional meaning. With Biber, this ﬁeld may be customized. See
§ 4.5.9 for details.

labelnumber

ﬁeld (literal)
The number of the bibliography entry, as required by numeric citation schemes. If
the shorthand ﬁeld is deﬁned, Biblatex does not assign a number to the respective
entry. In this case labelnumber is the shorthand rather than a number. Numeric
styles must use the value of this ﬁeld instead of a counter. Note that this ﬁeld needs
to be requested with the package option labelnumber, see § 3.1.2.3 for details.
Also see the package option defernumbers in § 3.1.2.1.

prefixnumber ﬁeld (literal)

If the prefixnumbers option of \printbibliography has been set in order to preﬁx all entries in a subbibliography with a ﬁxed string, this string is

131

Biber only

available in the prefixnumber ﬁeld of all aﬀected entries. If no preﬁx has
been set, the prefixnumber ﬁeld of the respective entry is undeﬁned. See
the prefixnumbers option of \printbibliography in § 3.6.2 for details.
If the shorthand ﬁeld is deﬁned, Biblatex does not assign the preﬁx to the
prefixnumber ﬁeld of the respective entry. In this case, the prefixnumber
ﬁeld is undeﬁned.
labeltitle ﬁeld (literal)

The printable title of a work. In some circumstances, a style might need to choose a
title from a list of a possible title ﬁelds. For example, citation styles printing short
titles may want to print the shorttitle ﬁeld if it exists but otherwise print the
title ﬁeld. The list of ﬁelds to be considered when constructing labeltitle
may be customized. See § 4.5.9 for details. Note that the extratitle ﬁeld needs to
be requested with the package option labeltitle, see § 3.1.2.3 for details. See also
extratitle. Note also that the extratitleyear ﬁeld needs to be requested
extratitle

Biber only

ﬁeld (integer)
It is sometimes useful, for example in author-title citation schemes, to be able to
disambiguate works with the same title. For works by the same labelname with
the same labeltitle, the extratitle ﬁeld holds an integer which may be
converted to a letter with \mknumalph or formatted in some other way (or it can
be merely used as a ﬂag to say that some other ﬁeld such as a date should be used in
conjunction with the labeltitle ﬁeld). This ﬁeld is undeﬁned if there is only one
work with the same labeltitle by the same labelname in the bibliography.
Note that the extratitle ﬁeld needs to be requested with the package option
labeltitle, see § 3.1.2.3 for details. See also labeltitle. Table 5 summarises
the various extra* disambiguation counters and what they track.

extratitleyear ﬁeld (integer)

It is sometimes useful, for example in author-title citation schemes, to be able to disambiguate works with the same title in the same year but with no author. For works with
the same labeltitle and with the same labelyear, the extratitleyear
ﬁeld holds an integer which may be converted to a letter with \mknumalph or
formatted in some other way (or it can be merely used as a ﬂag to say that some other
ﬁeld such as a publisher should be used in conjunction with the labelyear ﬁeld).
This ﬁeld is undeﬁned if there is only one work with the same labeltitle and
labelyear in the bibliography. Note that the extratitleyear ﬁeld needs to be
requested with the package option labeltitleyear, see § 3.1.2.3 for details. See
also labeltitleyear. Table 5 summarises the various extra* disambiguation
counters and what they track.
labelyear

ﬁeld (literal)
The publication year, as speciﬁed in the date or the year ﬁeld, for use in authoryear labels. A complete author-year label consists of the ﬁelds labelyear plus
extrayear. Note that the labelyear and extrayear ﬁelds need to be requested with the package option labeldate, see § 3.1.2.3 for details. See also
extrayear. With Biber, the source date ﬁeld for this may be customized. See
§ 4.5.9 for details.

132

Biber only

labelmonth

ﬁeld (datepart)
The publication month, as speciﬁed in the date or the month ﬁeld, for use in
author-year labels. Note that the labelmonth ﬁeld needs to be requested with the
package option labeldate, see § 3.1.2.3 for details. With Biber, the source date
ﬁeld for this may be customized. See § 4.5.9 for details.

Biber only

labelday ﬁeld (datepart)

The publication day, as speciﬁed in the date, for use in author-year labels. Note that
the labelday ﬁeld needs to be requested with the package option labeldate,
see § 3.1.2.3 for details. With Biber, the source date ﬁeld for this may be customized.
See § 4.5.9 for details.
extrayear ﬁeld (integer)

The author-year citation scheme usually requires a letter to be appended to the
year if the bibliography contains two or more works by the same author which
were all published in the same year. In this case, the extrayear ﬁeld holds an
integer which may be converted to a letter with \mknumalph or formatted in
some other way. This ﬁeld is undeﬁned if there is only one work by the author in
the bibliography or if all works by the author have diﬀerent publication years. A
complete author-year label consists of the ﬁelds labelyear plus extrayear.
Note that the labelyear and extrayear ﬁelds need to be requested with the
package option labeldate, see § 3.1.2.3 for details. See also labelyear. Table
5 summarises the various extra* disambiguation counters and what they track.
4.2.4.3 Date Component Fields
See table 8 for an overview of how the date ﬁelds in bib ﬁles are related to the date
ﬁelds provided by the style interface. When testing for a ﬁeld like origdate in a
style, use code like:
\iffieldundef{origyear}{...}{...}
This will tell you if the corresponding date is deﬁned at all. This test:
\iffieldundef{origendyear}{...}{...}
will tell you if the corresponding date is deﬁned and a (fully speciﬁed) range. This
test:
\iffieldequalstr{origendyear}{}{...}{...}
will tell you if the corresponding date is deﬁned and an open-ended range. Openended ranges are indicated by an empty endyear component (as opposed to an
undeﬁned endyear component). See § 2.3.8 and table 3 on page 35 for further
examples.
day

ﬁeld (datepart)
This ﬁeld holds the day component of the date ﬁeld. If the date is a range, it holds
the day component of the start date.

133

Biber only

bib File

Data Interface

Field

Value (Example)

Field

Value (Example)

date

1988

date

1997/

urldate

2009-01-31

origdate

2002-01/2002-02

eventdate

1995-01-31/1995-02-05

day
month
year
endday
endmonth
endyear
day
month
year
endday
endmonth
endyear
urlday
urlmonth
urlyear
urlendday
urlendmonth
urlendyear
origday
origmonth
origyear
origendday
origendmonth
origendyear
eventday
eventmonth
eventyear
eventendday
eventendmonth
eventendyear

undeﬁned
undeﬁned
1988
undeﬁned
undeﬁned
undeﬁned
undeﬁned
undeﬁned
1997
undeﬁned
undeﬁned
empty
31
01
2009
undeﬁned
undeﬁned
undeﬁned
undeﬁned
01
2002
undeﬁned
02
2002
31
01
1995
05
02
1995

Table 8: Date Interface

134

month ﬁeld (datepart)

This ﬁeld is the month as given in the database ﬁle or it holds the month component
of the date ﬁeld. If the date is a range, it holds the month component of the start
date.
year

ﬁeld (datepart)
This ﬁeld is the year as given in the database ﬁle or it holds the year component of
the date ﬁeld. If the date is a range, it holds the year component of the start date.

endday ﬁeld (datepart)

If the date speciﬁcation in the date ﬁeld is a range, this ﬁeld holds the day component
of the end date.
endmonth

ﬁeld (datepart)
If the date speciﬁcation in the date ﬁeld is a range, this ﬁeld holds the month
component of the end date.

endyear ﬁeld (datepart)

If the date speciﬁcation in the date ﬁeld is a range, this ﬁeld holds the year component of the end date. A blank (but deﬁned) endyear component indicates an open
ended date range.
origday

ﬁeld (datepart)
This ﬁeld holds the day component of the origdate ﬁeld. If the date is a range, it
holds the day component of the start date.

origmonth ﬁeld (datepart)

This ﬁeld holds the month component of the origdate ﬁeld. If the date is a range,
it holds the month component of the start date.
origyear

ﬁeld (datepart)
This ﬁeld holds the year component of the origdate ﬁeld. If the date is a range, it
holds the year component of the start date.

origendday

ﬁeld (datepart)
If the date speciﬁcation in the origdate ﬁeld is a range, this ﬁeld holds the day
component of the end date.

origendmonth ﬁeld (datepart)

If the date speciﬁcation in the origdate ﬁeld is a range, this ﬁeld holds the month
component of the end date.
origendyear

ﬁeld (datepart)
If the date speciﬁcation in the origdate ﬁeld is a range, this ﬁeld holds the year
component of the end date. A blank (but deﬁned) origendyear component
indicates an open ended origdate range.

135

eventday

ﬁeld (datepart)
This ﬁeld holds the day component of the eventdate ﬁeld. If the date is a range,
it holds the day component of the start date.

eventmonth ﬁeld (datepart)

This ﬁeld holds the month component of the eventdate ﬁeld. If the date is a range,
it holds the month component of the start date.
eventyear

ﬁeld (datepart)
This ﬁeld holds the year component of the eventdate ﬁeld. If the date is a range,
it holds the year component of the start date.

eventendday

ﬁeld (datepart)
If the date speciﬁcation in the eventdate ﬁeld is a range, this ﬁeld holds the day
component of the end date.

eventendmonth ﬁeld (datepart)

If the date speciﬁcation in the eventdate ﬁeld is a range, this ﬁeld holds the month
component of the end date.
eventendyear

ﬁeld (datepart)
If the date speciﬁcation in the eventdate ﬁeld is a range, this ﬁeld holds the year
component of the end date. A blank (but deﬁned) eventendyear component
indicates an open ended eventdate range.

urlday ﬁeld (datepart)

This ﬁeld holds the day component of the urldate ﬁeld.
urlmonth

ﬁeld (datepart)
This ﬁeld holds the month component of the urldate ﬁeld.

urlyear ﬁeld (datepart)

This ﬁeld holds the year component of the urldate ﬁeld.
urlendday ﬁeld (datepart)

If the date speciﬁcation in the urldate ﬁeld is a range, this ﬁeld holds the day
component of the end date.
urlendmonth

ﬁeld (datepart)
If the date speciﬁcation in the urldate ﬁeld is a range, this ﬁeld holds the month
component of the end date.

urlendyear ﬁeld (datepart)

If the date speciﬁcation in the urldate ﬁeld is a range, this ﬁeld holds the year
component of the end date. A blank (but deﬁned) urlendyear component indicates
an open ended urldate range.

136

4.3 Citation Styles
A citation style is a set of commands such as \cite which print diﬀerent types of
citations. Such styles are deﬁned in ﬁles with the suﬃx cbx. The Biblatex package
loads the selected citation style ﬁle at the end of the package. Note that a small
repertory of frequently used macros shared by several of the standard citation styles
is also included in biblatex.def. This ﬁle is loaded at the end of the package
as well, prior to the selected citation style. It also contains the deﬁnitions of the
commands from § 3.7.5.
4.3.1 Citation Style Files
Before we go over the individual commands available in citation style ﬁles, consider
this example of the overall structure of a typical cbx ﬁle:
\ProvidesFile{example.cbx}[2006/03/15 v1.0 biblatex citation style]
\DeclareCiteCommand{\cite}{...}{...}{...}{...}
\DeclareCiteCommand{\parencite}[\mkbibparens]{...}{...}{...}{...}
\DeclareCiteCommand{\footcite}[\mkbibfootnote]{...}{...}{...}{...}
\DeclareCiteCommand{\textcite}{...}{...}{...}{...}
\endinput

\RequireCitationStyle{hstylei}
This command is optional and intended for specialized citation styles built on top of
a more generic style. It loads the citation style style.cbx.
\InitializeCitationStyle{hcodei}
Speciﬁes arbitrary hcodei required to initialize or reset the citation style. This
hook will be executed once at package load-time and every time the \citereset
command from § 3.7.8 is used. The \citereset command also resets the internal citation trackers of this package. The reset will aﬀect the \ifciteseen,
\ifentryseen, \ifciteibid, and \ifciteidem tests discussed in § 4.6.2.
When used in a refsection environment, the reset of the citation tracker is local
to the current refsection environment.
\OnManualCitation{hcodei}
Speciﬁes arbitrary hcodei required for a partial reset of the citation style. This
hook will be executed every time the \mancite command from § 3.7.8 is used. It is
particularly useful in citation styles which replace repeated citations by abbreviations
like ‘ibidem’ or ‘op. cit.’ which may get ambiguous if automatically generated and
manual citations are mixed. The \mancite command also resets the internal
‘ibidem’ and ‘idem’ trackers of this package. The reset will aﬀect the \ifciteibid
and \ifciteidem tests discussed in § 4.6.2.
\DeclareCiteCommand{hcommandi}[hwrapperi]{hprecodei}{hloopcodei}{hsepcodei}{hpostcodei}
\DeclareCiteCommand*{hcommandi}[hwrapperi]{hprecodei}{hloopcodei}{hsepcodei}{hpostcodei}
This is the core command used to deﬁne all citation commands. It takes one optional
and ﬁve mandatory arguments. The hcommandi is the command to be deﬁned, for

137

example \cite. If the optional hwrapperi argument is given, the entire citation will
be passed to the hwrapperi as an argument, i. e., the wrapper command must take
one mandatory argument.29 The hprecodei is arbitrary code to be executed at the
beginning of the citation. It will typically handle the hprenotei argument which is
available in the prenote ﬁeld. It may also be used to initialize macros required by
the hloopcodei. The hloopcodei is arbitrary code to be executed for each entry key
passed to the hcommandi. This is the core code which prints the citation labels or any
other data. The hsepcodei is arbitrary code to be executed after each iteration of the
hloopcodei. It will only be executed if a list of entry keys is passed to the hcommandi.
The hsepcodei will usually insert some kind of separator, such as a comma or a
semicolon. The hpostcodei is arbitrary code to be executed at the end of the citation.
The hpostcodei will typically handle the hpostnotei argument which is available in
the postnote ﬁeld.30 The starred variant of \DeclareCiteCommand deﬁnes
a starred hcommandi. For example, \DeclareCiteCommand*{cite} would
deﬁne \cite*.31
\DeclareMultiCiteCommand{hcommandi}[hwrapperi]{hcitei}{hdelimiteri}
This command deﬁnes ‘multicite’ commands (§ 3.7.3). The hcommandi is the multicite command to be deﬁned, for example \cites. It is automatically made robust. Multicite commands are built on top of backend commands deﬁned with
\DeclareCiteCommand and the hcitei argument speciﬁes the name of the backend command to be used. Note that the wrapper of the backend command (i. e.,
the hwrapperi argument passed to \DeclareCiteCommand) is ignored. Use the
optional hwrapperi argument to specify an alternative wrapper. The hdelimiteri is
the string to be printed as a separator between the individual citations in the list. This
will typically be \multicitedelim. The following examples are real deﬁnitions
taken from biblatex.def:
\DeclareMultiCiteCommand{\cites}%
{\cite}{\multicitedelim}
\DeclareMultiCiteCommand{\parencites}[\mkbibparens]%
{\parencite}{\multicitedelim}
\DeclareMultiCiteCommand{\footcites}[\mkbibfootnote]%
{\footcite}{\multicitedelim}
\DeclareAutoCiteCommand{hnamei}[hpositioni]{hcitei}{hmulticitei}
This command provides deﬁnitions for the \autocite and \autocites commands from § 3.7.4. The deﬁnitions are enabled with the autocite package option
from § 3.1.2.1. The hnamei is an identiﬁer which serves as the value passed to the
package option. The autocite commands are built on top of backend commands
like \parencite and \parencites. The arguments hcitei and hmulticitei specify the backend commands to use. The hcitei argument refers to \autocite and
29

Typical examples of wrapper commands are \mkbibparens and \mkbibfootnote.
The bibliographic data available to the hloopcodei is the data of the entry currently being processed.
In addition to that, the data of the ﬁrst entry is available to the hprecodei and the data of the last one
is available to the hpostcodei. ‘First’ and ‘last’ refer to the order in which the citations are printed.
If the sortcites package option is active, this is the order of the list after sorting. Note that no
bibliographic data is available to the hsepcodei.
31
Note that the regular variant of \DeclareCiteCommand deﬁnes a starred version of the
hcommandi implicitly, unless the starred version has been deﬁned before. This is intended as
a fallback. The implicit deﬁnition is an alias for the regular variant.
30

138

hmulticitei refers to \autocites. The hpositioni argument controls the handling
of any punctuation marks after the citation. Possible values are l, r, f. r means
that the punctuation is placed to the right of the citation, i. e., it will not be moved
around. l means that any punctuation after the citation is moved to the left of
the citation. f is like r in a footnote and like l otherwise. This argument is optional and defaults to r. See also \DeclareAutoPunctuation in § 4.7.5 and the
autopunct package option in § 3.1.2.1. The following examples are real deﬁnitions
taken from biblatex.def:
\DeclareAutoCiteCommand{plain}{\cite}{\cites}
\DeclareAutoCiteCommand{inline}{\parencite}{\parencites}
\DeclareAutoCiteCommand{footnote}[l]{\footcite}{\footcites}
\DeclareAutoCiteCommand{footnote}[f]{\smartcite}{\smartcites}
A deﬁnition provided in the document preamble can be subsequently adopted with
the following: (see § 3.2.2).
\ExecuteBibliographyOptions{autocite=name}

4.3.2 Special Fields
The following ﬁelds are used by Biblatex to pass data to citation commands. They are
not used in bib ﬁles but deﬁned automatically by the package. From the perspective
of a citation style, they are not diﬀerent from the ﬁelds in a bib ﬁle. See also § 4.2.4.
prenote

ﬁeld (literal)
The hprenotei argument passed to a citation command. This ﬁeld is speciﬁc to
citations and not available in the bibliography. If the hprenotei argument is missing
or empty, this ﬁeld is undeﬁned.

postnote ﬁeld (literal)

The hpostnotei argument passed to a citation command. This ﬁeld is speciﬁc to
citations and not available in the bibliography. If the hpostnotei argument is missing
or empty, this ﬁeld is undeﬁned.
multiprenote

ﬁeld (literal)
The hmultiprenotei argument passed to a multicite command. This ﬁeld is speciﬁc
to citations and not available in the bibliography. If the hmultiprenotei argument is
missing or empty, this ﬁeld is undeﬁned.

multipostnote ﬁeld (literal)

The hmultipostnotei argument passed to a multicite command. This ﬁeld is speciﬁc
to citations and not available in the bibliography. If the hmultipostnotei argument is
missing or empty, this ﬁeld is undeﬁned.
postpunct ﬁeld (punctuation command)

The trailing punctuation argument implicitly passed to a citation command. This ﬁeld
is speciﬁc to citations and not available in the bibliography. If the character following a given citation command is not speciﬁed in \DeclareAutoPunctuation
(§ 4.7.5), this ﬁeld is undeﬁned.

139

4.4 Data Interface
The data interface are the facilities used to format and print all bibliographic data.
These facilities are available in both bibliography and citation styles.
4.4.1 Data Commands
This section introduces the main data interface of the Biblatex package. These are
the commands doing most of the work, i. e., they actually print the data provided in
lists and ﬁelds.
\printfield[hformati]{hﬁeldi}
This command prints a hﬁeldi using the formatting directive hformati, as deﬁned
with \DeclareFieldFormat. If a type-speciﬁc hformati has been declared, the
type-speciﬁc formatting directive takes precedence over the generic one. If the hﬁeldi
is undeﬁned, nothing is printed. If the hformati is omitted, \printfield tries
using the name of the ﬁeld as a format name. For example, if the title ﬁeld is to be
printed and the hformati is not speciﬁed, it will try to use the ﬁeld format title.32
In this case, any type-speciﬁc formatting directive will also take precedence over
the generic one. If all of these formats are undeﬁned, it falls back to default as a
last resort. Note that \printfield provides the name of the ﬁeld currently being
processed in \currentfield for use in ﬁeld formatting directives.
\printlist[hformati][hstarti–hstopi]{hliteral listi}
This command loops over all items in a hliteral listi, starting at item number hstarti
and stopping at item number hstopi, including hstarti and hstopi (all lists are numbered starting at 1). Each item is printed using the formatting directive hformati,
as deﬁned with \DeclareListFormat. If a type-speciﬁc hformati has been
declared, the type-speciﬁc formatting directive takes precedence over the generic
one. If the hliteral listi is undeﬁned, nothing is printed. If the hformati is omitted,
\printlist tries using the name of the list as a format name. In this case, any
type-speciﬁc formatting directive will also take precedence over the generic one.
If all of these formats are undeﬁned, it falls back to default as a last resort. The
hstarti argument defaults to 1; hstopi defaults to the total number of items in the list.
If the total number is greater than hmaxitemsi, hstopi defaults to hminitemsi (see
§ 3.1.2.1). See \printnames for further details. Note that \printlist provides
the name of the literal list currently being processed in \currentlist for use in
list formatting directives.
\printnames[hformati][hstarti–hstopi]{hname listi}
This command loops over all items in a hname listi, starting at item number hstarti
and stopping at item number hstopi, including hstarti and hstopi (all lists are numbered starting at 1). Each item is printed using the formatting directive hformati,
as deﬁned with \DeclareNameFormat. If a type-speciﬁc hformati has been
declared, the type-speciﬁc formatting directive takes precedence over the generic
one. If the hname listi is undeﬁned, nothing is printed. If the hformati is omitted,
\printnames tries using the name of the list as a format name. In this case, any
type-speciﬁc formatting directive will also take precedence over the generic one.
If all of these formats are undeﬁned, it falls back to default as a last resort. The
hstarti argument defaults to 1; hstopi defaults to the total number of items in the
32

In other words, \printfield{title} is equivalent to \printfield[title]{title}.

140

list. If the total number is greater than hmaxnamesi, hstopi defaults to hminnamesi
(see § 3.1.2.1). If you want to select a range but use the default list format, the ﬁrst
optional argument must still be given, but is left empty:
\printnames[][1-3]{...}
One of hstarti and hstopi may be omitted, hence the following arguments are all
valid:
\printnames[...][-1]{...}
\printnames[...][2-]{...}
\printnames[...][1-3]{...}
If you want to override hmaxnamesi and hminnamesi and force printing of the entire
list, you may refer to the listtotal counter in the second optional argument:
\printnames[...][-\value{listtotal}]{...}
Whenever \printnames and \printlist process a list, information concerning
the current state is accessible by way of four counters: the listtotal counter
holds the total number of items in the current list, listcount holds the number
of the item currently being processed, liststart is the hstarti argument passed
to \printnames or \printlist, liststop is the hstopi argument. These
counters are intended for use in list formatting directives. listtotal may also be
used in the second optional argument to \printnames and \printlist. Note
that these counters are local to list formatting directives and do not hold meaningful
values when used anywhere else. For every list, there is also a counter by the same
name which holds the total number of items in the corresponding list. For example,
the author counter holds the total number of items in the author list. These
counters are similar to listtotal except that they may also be used independently
of list formatting directives. There are also maxnames and minnames as well as
maxitems and minitems counters which hold the values of the corresponding
package options. See § 4.10.5 for a complete list of such internal counters. Note that
\printnames provides the name of the name list currently being processed in
\currentname for use in name formatting directives.
\printtext[hformati]{htexti}
This command prints htexti, which may be printable text or arbitrary code generating printable text. It clears the punctuation buﬀer before inserting htexti and
informs Biblatex that printable text has been inserted. This ensures that all preceding and following \newblock and \newunit commands have the desired eﬀect.
\printfield and \printnames as well as \bibstring and its companion
commands (see § 4.8) do that automatically. Using this command is required if a
bibliography styles inserts literal text (including the commands from §§ 4.7.3 and
4.7.4) to ensure that block and unit punctuation works as advertised in § 4.7.1. The
optional hformati argument speciﬁes a ﬁeld formatting directive to be used to format
htexti. This may also be useful when several ﬁelds are to be printed as one chunk,
for example, by enclosing the entire chunk in parentheses or quotation marks. If a
type-speciﬁc hformati has been declared, the type-speciﬁc formatting directive takes
precedence over the generic one. If the hformati is omitted, the htexti is printed as

141

\printfile[hformati]{hﬁlei}
This command is similar to \printtext except that the second argument is a ﬁle
name rather than literal text. The hﬁlei argument must be the name of a valid LaTeX
ﬁle found in TeX’s search path. \printfile will use \input to load this hﬁlei.
If there is no such ﬁle, \printfile does nothing. The optional hformati argument
speciﬁes a ﬁeld formatting directive to be applied to the hﬁlei. If a type-speciﬁc
hformati has been declared, the type-speciﬁc formatting directive takes precedence
over the generic one. If the hformati is omitted, the hﬁlei is printed as is. Note that
this feature needs to be enabled explicitly by setting the package option loadfiles
from § 3.1.2.1. By default, \printfile will not input any ﬁles.
\printdate This command prints the date of the entry, as speciﬁed in the ﬁelds date or month/
year. The date format is controlled by the package option date from § 3.1.2.1.
Additional formatting (fonts etc.) may be applied by adjusting the ﬁeld format date
(§ 4.10.4). Note that this command interfaces with the punctuation tracker. There is
no need to wrap it in a \printtext command.
\printdateextra Similar to \printdate but incorporates the extrayear ﬁeld in the date speciﬁcation. This is useful for bibliography styles designed for author-year citations.
\printdatelabel Similar to \printdate but prints the date ﬁeld determined by
\DeclareLabeldate. The date format is controlled by the package option datelabel from § 3.1.2.1. Additional formatting may be applied by adjusting
the ﬁeld format datelabel (§ 4.10.4).
\printdateextralabel Similar to \printdatelabel but incorporates the extrayear ﬁeld in
the date speciﬁcation. This is useful for bibliography styles designed for author-year
citations.
\printurldate Similar to \printdate but prints the urldate of the entry. The date format is
controlled by the package option urldate from § 3.1.2.1. Additional formatting
may be applied by adjusting the ﬁeld format urldate (§ 4.10.4).
\printorigdate Similar to \printdate but prints the origdate of the entry. The date format is
controlled by the package option origdate from § 3.1.2.1. Additional formatting
may be applied by adjusting the ﬁeld format origdate (§ 4.10.4).
\printeventdate Similar to \printdate but prints the eventdate of the entry. The date format
is controlled by the package option eventdate from § 3.1.2.1. Additional formatting
may be applied by adjusting the ﬁeld format eventdate (§ 4.10.4).
\indexfield[hformati]{hﬁeldi}
This command is similar to \printfield except that the hﬁeldi is not printed
but added to the index using the formatting directive hformati, as deﬁned with
\DeclareIndexFieldFormat. If a type-speciﬁc hformati has been declared, it
takes precedence over the generic one. If the hﬁeldi is undeﬁned, this command does
nothing. If the hformati is omitted, \indexfield tries using the name of the ﬁeld
as a format name. In this case, any type-speciﬁc formatting directive will also take
precedence over the generic one. If all of these formats are undeﬁned, it falls back to
default as a last resort.

142

\indexlist[hformati][hstarti–hstopi]{hliteral listi}
This command is similar to \printlist except that the items in the list are not
printed but added to the index using the formatting directive hformati, as deﬁned
with \DeclareIndexListFormat. If a type-speciﬁc hformati has been declared,
the type-speciﬁc formatting directive takes precedence over the generic one. If the
hliteral listi is undeﬁned, this command does nothing. If the hformati is omitted,
\indexlist tries using the name of the list as a format name. In this case, any
type-speciﬁc formatting directive will also take precedence over the generic one. If
all of these formats are undeﬁned, it falls back to default as a last resort.
\indexnames[hformati][hstarti–hstopi]{hname listi}
This command is similar to \printnames except that the items in the list are not
printed but added to the index using the formatting directive hformati, as deﬁned
with \DeclareIndexNameFormat. If a type-speciﬁc hformati has been declared,
the type-speciﬁc formatting directive takes precedence over the generic one. If the
hname listi is undeﬁned, this command does nothing. If the hformati is omitted,
\indexnames tries using the name of the list as a format name. In this case, any
type-speciﬁc formatting directive will also take precedence over the generic one. If
all of these formats are undeﬁned, it falls back to default as a last resort.
\entrydata{hkeyi}{hcodei}
\entrydata*{hkeyi}{hcodei}
Data commands like \printfield normally use the data of the entry currently
being processed. You may use \entrydata to switch contexts locally. The hkeyi is
the entry key of the entry to use locally. The hcodei is arbitrary code to be executed in
this context. This code will be executed in a group. See § 4.11.6 for an example. Note
that this command will automatically switch languages if the autolang package
option is enabled. The starred version \entrydata* will clone all ﬁelds of the
enclosing entry, using ﬁeld, counter, and other resource names preﬁxed with the
string ‘saved’. This is useful when comparing two data sets. For example, inside the
hcodei argument, the author ﬁeld holds the author of entry hkeyi and the author of
the enclosing entry is available as savedauthor. The author counter holds the
number of names in the author ﬁeld of hkeyi; the savedauthor counter refers
to the author count of the enclosing entry.
\entryset{hprecodei}{hpostcodei}
This command is intended for use in bibliography drivers handling @set entries. It
will loop over all members of the set, as indicated by the entryset ﬁeld, and execute
the appropriate driver for the respective set member. This is similar to executing the
\usedriver command from § 4.6.4 for each set member. The hprecodei is arbitrary
code to be executed prior to processing each item in the set. The hpostcodei is arbitrary
code to be executed immediately after processing each item. Both arguments are
mandatory in terms of the syntax but may be left empty. See § 4.11.1 for usage
examples.
\DeclareFieldInputHandler{hﬁeldi}{hcodei}
This command can be used to deﬁne a data input handler for hﬁeldi when it is read
from the .bbl. Within the hcodei, the macro \NewValue contains the value of the
ﬁeld. For example, to ignore the volumes ﬁeld when it appears, you could do

143

\DeclareFieldInputHandler{volumes}{\def\NewValue{}}
Generally, you would want to use \DeclareSourcemap (see § 4.5.2) to remove
and modify ﬁelds but this alternative method may be useful in some circumstances
when the emphasis is on appearance rather than data since the hcodei can be arbitraty
TeX.
\DeclareListInputHandler{hlisti}{hcodei}
As \DeclareFieldInputHandler but for lists. Within the hcodei, the macro
\NewValue contains the value of the list and \NewCount contains the number of
items in the list.
\DeclareNameInputHandler{hnamei}{hcodei}
As \DeclareFieldInputHandler but for names. Within the hcodei, the macro
\NewValue contains the value of the name, \NewCount contains the number of
individual names in the name and \NewOption contains any per-name options
passed in the .bbl.
4.4.2 Formatting Directives
This section introduces the commands used to deﬁne the formatting directives required by the data commands from § 4.4.1. Note that all standard formats are deﬁned
in biblatex.def.
\DeclareFieldFormat[hentrytype, …i]{hformati}{hcodei}
\DeclareFieldFormat*{hformati}{hcodei}
Deﬁnes the ﬁeld format hformati. This formatting directive is arbitrary hcodei to
be executed by \printfield. The value of the ﬁeld will be passed to the hcodei
as its ﬁrst and only argument. The name of the ﬁeld currently being processed
is available to the hcodei as \currentfield. If an hentrytypei is speciﬁed, the
format is speciﬁc to that type. The hentrytypei argument may be a comma-separated
list of values. The starred variant of this command is similar to the regular version,
except that all type-speciﬁc formats are cleared.
\DeclareListFormat[hentrytype, …i]{hformati}{hcodei}
\DeclareListFormat*{hformati}{hcodei}
Deﬁnes the literal list format hformati. This formatting directive is arbitrary hcodei
to be executed for every item in a list processed by \printlist. The current item
will be passed to the hcodei as its ﬁrst and only argument. The name of the literal
list currently being processed is available to the hcodei as \currentlist. If an
hentrytypei is speciﬁed, the format is speciﬁc to that type. The hentrytypei argument
may be a comma-separated list of values. Note that the formatting directive also
handles the punctuation to be inserted between the individual items in the list. You
need to check whether you are in the middle of or at the end of the list, i. e., whether
listcount is smaller than or equal to liststop. The starred variant of this
command is similar to the regular version, except that all type-speciﬁc formats are
cleared.

144

\DeclareNameFormat[hentrytype, …i]{hformati}{hcodei}
\DeclareNameFormat*{hformati}{hcodei}
Deﬁnes the name list format hformati. This formatting directive is arbitrary hcodei to
be executed for every name in a list processed by \printnames. If an hentrytypei
is speciﬁed, the format is speciﬁc to that type. The hentrytypei argument may be a
comma-separated list of values. The individual parts of a name will be passed to the
hcodei as separate arguments. These arguments are as follows:
#1 The last names. If a name consists of a single part only (for example, ‘Aristotle’),
this part will be treated as the last name.
#2 The last names, given as initials.
#3 The ﬁrst names. This argument also includes all middle names.
#4 The ﬁrst names, given as initials.
#5 The name preﬁxes, for example von, van, of, da, de, del, della, etc. Note that
name preﬁxes are referred to as the ‘von part’ of the name in the BibTeX ﬁle
format documentation.
#6 The name preﬁxes, given as initials.
#7 The name aﬃxes, for example ‘junior’, ‘senior’, ‘der Jüngere’, ‘der Ältere’, etc.
Note that name aﬃxes are referred to as the ‘junior part’ of the name in the
BibTeX ﬁle format documentation.
#8 The name aﬃxes, given as initials.
If a certain part of a name is not available, the corresponding argument will be empty,
hence you may use \ifblank tests to check for the individual parts of a name.
The name of the name list currently being processed is available to the hcodei as
\currentname. Note that the formatting directive also handles the punctuation to
be inserted between separate names and between the individual parts of a name. You
need to check whether you are in the middle of or at the end of the list, i. e., whether
listcount is smaller than or equal to liststop. See also § 3.12.4. The starred
variant of this command is similar to the regular version, except that all type-speciﬁc
formats are cleared.
\DeclareIndexFieldFormat[hentrytype, …i]{hformati}{hcodei}
\DeclareIndexFieldFormat*{hformati}{hcodei}
Deﬁnes the ﬁeld format hformati. This formatting directive is arbitrary hcodei to
be executed by \indexfield. The value of the ﬁeld will be passed to the hcodei
as its ﬁrst and only argument. The name of the ﬁeld currently being processed
is available to the hcodei as \currentfield. If an hentrytypei is speciﬁed, the
format is speciﬁc to that type. The hentrytypei argument may be a comma-separated
list of values. This command is similar to \DeclareFieldFormat except that
the data handled by the hcodei is not intended to be printed but written to the index.
Note that \indexfield will execute the hcodei as is, i. e., the hcodei must include
\index or a similar command. The starred variant of this command is similar to
the regular version, except that all type-speciﬁc formats are cleared.
\DeclareIndexListFormat[hentrytype, …i]{hformati}{hcodei}
\DeclareIndexListFormat*{hformati}{hcodei}
Deﬁnes the literal list format hformati. This formatting directive is arbitrary hcodei to
be executed for every item in a list processed by \indexlist. The current item will

145

be passed to the hcodei as its only argument. The name of the literal list currently being processed is available to the hcodei as \currentlist. If an hentrytypei is speciﬁed, the format is speciﬁc to that type. The hentrytypei argument may be a commaseparated list of values. This command is similar to \DeclareListFormat except that the data handled by the hcodei is not intended to be printed but written
to the index. Note that \indexlist will execute the hcodei as is, i. e., the hcodei
must include \index or a similar command. The starred variant of this command
is similar to the regular version, except that all type-speciﬁc formats are cleared.
\DeclareIndexNameFormat[hentrytype, …i]{hformati}{hcodei}
\DeclareIndexNameFormat*{hformati}{hcodei}
Deﬁnes the name list format hformati. This formatting directive is arbitrary hcodei to
be executed for every name in a list processed by \indexnames. The name of the
name list currently being processed is available to the hcodei as \currentname.
If an hentrytypei is speciﬁed, the format is speciﬁc to that type. The hentrytypei
argument may be a comma-separated list of values. The parts of the name will
be passed to the hcodei as separate arguments. This command is very similar to
\DeclareNameFormat except that the data handled by the hcodei is not intended
to be printed but written to the index. Note that \indexnames will execute the
hcodei as is, i. e., the hcodei must include \index or a similar command. The starred
variant of this command is similar to the regular version, except that all type-speciﬁc
formats are cleared.
\DeclareFieldAlias[hentry typei]{haliasi}[hformat entry typei]{hformati}
Declares haliasi to be an alias for the ﬁeld format hformati. If an hentrytypei is
speciﬁed, the alias is speciﬁc to that type. The hformat entry typei is the entry type
of the backend format. This is only required when declaring an alias for a typespeciﬁc formatting directive.
\DeclareListAlias[hentry typei]{haliasi}[hformat entry typei]{hformati}
Declares haliasi to be an alias for the literal list format hformati. If an hentrytypei
is speciﬁed, the alias is speciﬁc to that type. The hformat entry typei is the entry
type of the backend format. This is only required when declaring an alias for a typespeciﬁc formatting directive.
\DeclareNameAlias[hentry typei]{haliasi}[hformat entry typei]{hformati}
Declares haliasi to be an alias for the name list format hformati. If an hentrytypei
is speciﬁed, the alias is speciﬁc to that type. The hformat entry typei is the entry
type of the backend format. This is only required when declaring an alias for a typespeciﬁc formatting directive.
\DeclareIndexFieldAlias[hentry typei]{haliasi}[hformat entry typei]{hformati}
Declares haliasi to be an alias for the ﬁeld format hformati. If an hentrytypei is
speciﬁed, the alias is speciﬁc to that type. The hformat entry typei is the entry type
of the backend format. This is only required when declaring an alias for a typespeciﬁc formatting directive.

146

\DeclareIndexListAlias[hentry typei]{haliasi}[hformat entry typei]{hformati}
Declares haliasi to be an alias for the literal list format hformati. If an hentrytypei
is speciﬁed, the alias is speciﬁc to that type. The hformat entry typei is the entry
type of the backend format. This is only required when declaring an alias for a typespeciﬁc formatting directive.
\DeclareIndexNameAlias[hentry typei]{haliasi}[hformat entry typei]{hformati}
Declares haliasi to be an alias for the name list format hformati. If an hentrytypei
is speciﬁed, the alias is speciﬁc to that type. The hformat entry typei is the entry
type of the backend format. This is only required when declaring an alias for a typespeciﬁc formatting directive.

4.5 Customization
4.5.1 Related Entries
The related entries feature comprises the following components:
• Special ﬁelds in an entry to set up and describe relationships
• Optionally, localization strings to preﬁx the related data
• Macros to extract and print the related data
• Formats to format the localization string and related data
The special ﬁelds are related, relatedtype, relatedstring and
relatedoptions:
related

A separated list of keys of entries which are related to this entry in some way. Note
the the order of the keys is important. The data from multiple related entries is
printed in the order of the keys listed in this ﬁeld.

relatedtype The type of relationship. This serves three purposes. If the value of this ﬁeld

resolves to a localization string identiﬁer, then the resulting localized string is
printed before the data from the related entries. Secondly, if there is a macro called
related:hrelatedtypei, this is used to format the data from the related entries. If
no such macro exists, then the macro related:default is used. Lastly, if there
is a format named related:hrelatedtypei, then it is used to format both the
localized string and related entry data. If there is no related type speciﬁc format, the
related format is used.
relatedstring If an entry contains this ﬁeld, then if value of the ﬁeld resolves to a localization

string identiﬁer, the localization key value speciﬁed is printed before data from the
related entries. If the ﬁeld does not specify a localization key, its value is printed
literally. If both relatedtype and relatedstring are present in an entry,
relatedstring is used for the pre-data string (but relatedtype is still used
to determine the macro and format to use when printing the data).
relatedoptions A list of per-entry options to set on the related entry (actually on the clone of the

related entry which is used as a data source—the actual related entry is not modiﬁed
because it might be cited directly itself).
The related entry feature is enabled by default by the package option related
from § 3.1.2.1. The related information entry data from the related entries is included
via a \usebibmacro{related} call. Standard styles call this macro towards

147

the end of each driver. Style authors should ensure the existence of (or take note of
existing) localization strings which are useful as values for the relatedtype ﬁeld,
such as translationof or perhaps translatedas. A plural variant can be
identiﬁed with the localization key hrelatedtypeis. This key’s corresponding string is
printed whenever more than one entry is speciﬁed in related. Bibliography macros
and formatting directives for printing entries related by hrelatedtypei should be
deﬁned using the name related:hrelatedtypei. The ﬁle biblatex.def contains
macros and formats for some common relation types which can be used as templates.
In particular, the \entrydata* command is essential in such macros in order to
make the data of the related entries available. Examples of entries using this feature
can be found in the Biblatex distribution examples ﬁle biblatex-examples.
bib. There are some speciﬁc formatting macros for this feature which control
delimiters and separators in related entry information, see § 4.10.1.
4.5.2 Dynamic Modification of Data
Bibliographic data sources which are automatically generated or which you have no
control over can be a problem if you need to edit them in some way. For this reason,
Biber has the ability to modify data as it is read so that you can apply modiﬁcations
to the source data stream without actually changing it. The modiﬁcation can be
deﬁned in Biber’s conﬁg ﬁle (see Biber docs), or via Biblatex macros in which case
you can apply the modiﬁcation only for speciﬁc documents, styles or globally.
Source mappings can be deﬁned at diﬀerent “levels” which are applied in a deﬁned
order. See the Biblatex manual regarding these macros:
user-level maps deﬁned with \DeclareSourcemap→
user-level maps deﬁned in the Biber conﬁg ﬁle (see Biber docs)→
style-level maps deﬁned with \DeclareStyleSourcemap→
driver-level maps deﬁned with \DeclareDriverSourcemap

Biber only

\DeclareSourcemap{hspeciﬁcationi}
Deﬁnes source data modiﬁcation (mapping) rules which can be used to perform any
•Map data source entrytypes to diﬀerent entrytypes
•Map datasource ﬁelds to diﬀerent ﬁelds
•Add new ﬁelds to an entry
•Remove ﬁelds from an entry
•Modify the contents of a ﬁeld using standard Perl regular expression match
and replace
•Restrict any of the above operations to entries coming from particular datasources which you deﬁned in \addresource macros
•Restrict any of the above operations to entries only of a certain entrytype
The hspeciﬁcationi is an undelimited list of \maps directives which specify containers for mappings rules applying to a particular data source type (§ 3.6.1). Spaces, tabs,
and line endings may be used freely to visually arrange the hspeciﬁcationi. Blank
lines are not permissible. This command may only be used in the preamble and may
only be used once—subsequent uses will overwrite earlier deﬁnitions.

148

\maps{helementsi}
Contains an ordered set of \map elements each of which is a logically related set of
mapping steps to apply to the data source.
datatype=bibtex, biblatexml, ris,
default: bibtex
zoterordfxml, endnotexml
Data source type to which the contained \map directives apply (§ 3.6.1).
default: false

overwrite=true, false

Specify whether a mapping rule is allowed to overwrite already existing data in
an entry. If this option is not speciﬁed, the default is false. The short form
overwrite is equivalent to overwrite=true.
\map{hrestrictions,stepsi}
A container for an ordered set of map \steps, optionally restricted to particular
entrytypes or data sources. This is a grouping element to allow a set of mapping steps
to apply only to speciﬁc entrytypes or data sources. Mapping steps must always be
contained within a \map element.
overwrite=true, false
As the same option on the parent \maps element. This option allows an override on
a per-map group basis. If this option is not speciﬁed, the default is the parent \maps
element option value. The short form overwrite is equivalent to overwrite=
true.
\perdatasource{hdatasourcei}
Restricts all \steps in this \map element to entries from the named hdatasourcei.
The hdatasourcei name should be exactly as given in a \addresource macro
deﬁning a data source for the document. Multiple \perdatasource restrictions
are allowed within a \map element.
\pertype{hentrytypei}
Restricts all \steps in this \map element to entries of the named hentrytypei.
Multiple \pertype restrictions are allowed within a \map element.
\step
A mapping step. Each step is applied sequentially to every relevant entry where
‘relevant’ means those entries which correspond to the data source type, entrytype
and data source name restrictions mentioned above. Each step is applied to the entry
as it appears after the application of all previous steps. The mapping performed by
the step is determined by the following options:
typesource=hentrytypei
typetarget=hentrytypei
fieldsource=hentryﬁeldi
fieldtarget=hentryﬁeldi
match=hregexpi
notmatch=hregexpi

149

replace=hregexpi
fieldset=hentryﬁeldi
fieldvalue=hstringi
append=true, false

default: false

final=true, false

default: false

null=true, false

default: false

origfield=true, false

default: false

origfieldval=true, false

default: false

origentrytype=true, false

default: false

For all boolean \step options, the short form option is equivalent to option=
true. The following rules for a mapping step apply:
•If entrynull is set, processing of the \map immediately terminates and
the current entry is not created. It is as if it did not exist in the datasource.
Obviously, you should select the entries which you want to apply this to using
prior mapping steps.
•Change the typesource hentrytypei to the typetarget hentrytypei, if
deﬁned. If final is true then if the hentrytypei of the entry is not
typesource, processing of the parent \map immediately terminates.
•Change the fieldsource hentryﬁeldi to fieldtarget, if deﬁned. If
final is true then if there is no fieldsource hentryﬁeldi in the entry,
processing of the parent \map immediately terminates.
•If match is deﬁned but replace is not, only apply the step if the
fieldsource hentryﬁeldi matches the match regular expression (logic is
reversed if you use notmatch instead)33 . You may use capture parenthesis
as usual and refer to these ($1…$9) in later fieldvalue speciﬁcations. This
allows you to pull out parts of some ﬁelds and put these parts in other ﬁelds.
•Perform a regular expression match and replace on the value of the
fieldsource hentryﬁeldi if match and replace are deﬁned.
•If fieldset is deﬁned, then its value is hentryﬁeldi which will be set to a
value speciﬁed by further options. If overwrite is false for this step and the
ﬁeld to set already exists then the map step is ignored. If final is also true
for this step, then processing of the parent map stops at this point. If append
is true, then the value to set is appended to the current value of hentryﬁeldi.
The value to set is speciﬁed by a mandatory one and only one of the following
options:
◦ fieldvalue — The fieldset hentryﬁeldi is set to the fieldvalue
hstringi
◦ null — The fieldset hentryﬁeldi is ignored, as if it did not exist in the
datasource
◦ origentrytype — The fieldset hentryﬁeldi is set to the most recently mentioned typesource hentrytypei name
◦ origfield — The fieldset hentryﬁeldi is set to the most recently
mentioned fieldsource hentryﬁeldi name
33

Regular expressions are full Perl 5.16 regular expressions. This means you may need to deal with
special characters, see examples.

150

◦ origfieldval — The fieldset hentryﬁeldi is set to the most recently
mentioned fieldsource value
With BibTeX and RIS datasources, you may specify the pseudo-ﬁeld entrykey for
fieldsource which is the citation key of the entry. Naturally, this ‘ﬁeld’ cannot
be changed (used as fieldset, fieldtarget or changed using replace).
Biber only

\DeclareStyleSourcemap{hspeciﬁcationi}
This command sets the source mappings used by a style. Such mappings are conceptually separate from user mappings deﬁned with \DeclareSourcemap and are
applied directly after user maps. The syntax is identical to \DeclareSourcemap.
This command is provided for style authors so that any maps deﬁned for the
style do not interfere with user maps or the default driver maps deﬁned with
\DeclareDriverSourcemap. This command is for use in style ﬁles and can
only be used once—subsequent uses will overwrite earlier deﬁnitions.
\DeclareDriverSourcemap[hdatatype=driveri]{hspeciﬁcationi}
This command sets the driver default source mappings for the speciﬁed
hdriveri.
Such mappings are conceptually separate from user mappings
deﬁned with \DeclareSourcemap and style mapping deﬁned with
\DeclareStyleSourcemap. They consist of mappings which are part
of the driver setup. Users should not normally need to change these. Driver
default mapping are applied after user mappings (\DeclareSourcemap) and
style mappings (\DeclareStyleSourcemap). These defaults are described in
Appendix § A. The hspeciﬁcationi is identical to that for \DeclareSourcemap
but without the \maps elements: the hspeciﬁcationi is just a list of \map elements
since each \DeclareDriverSourcemap only applies to one datatype driver.
See the default deﬁnitions in Appendix § A for examples.
Here are some data source mapping examples:
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\perdatasource{example1.bib}
\perdatasource{example2.bib}
\step[fieldset=keywords, fieldvalue={keyw1, keyw2}]
\step[fieldsource=entrykey]
\step[fieldset=note, origfieldval]
}
}
}
This would add a keywords ﬁeld with value ‘keyw1, keyw2’ and set the note ﬁeld
to the entry key to all entries which are found in either the examples1.bib or
examples2.bib ﬁles.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title]

151

Biber only

\step[fieldset=note, origfieldval]
}
}
}
Copy the title ﬁeld to the note ﬁeld unless the note ﬁeld already exists.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[typesource=chat, typetarget=customa, final]
\step[fieldset=type, origentrytype]
}
}
}
Any chat entrytypes would become customa entrytypes and would automatically
have a type ﬁeld set to ‘chat’ unless the type ﬁeld already exists in the entry
(because overwrite is false by default). This mapping applies only to entries of
type @chat since the ﬁrst step has final set and so if the typesource does not
match the entry entrytype, processing of this \map immediately terminates.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\perdatasource{examples.bib}
\pertype{article}
\pertype{book}
\step[fieldset=abstract, null]
\step[fieldset=note, fieldvalue={Auto-created this field}]
}
}
}
Any entries of entrytype @article or @book from the examples.bib datasource would have their abstract ﬁelds removed and a note ﬁeld added with
value ‘Auto-created this ﬁeld’.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldset=abstract, null]
\step[fieldsource=conductor, fieldtarget=namea]
\step[fieldsource=gps, fieldtarget=usera]
}
}
}
This removes abstract ﬁelds from any entry, changes conductor ﬁelds to
namea ﬁelds and changes gps ﬁelds to usera ﬁelds.
\DeclareSourcemap{
\maps[datatype=bibtex]{

152

\map{
\step[fieldsource=pubmedid, fieldtarget=eprint, final]
\step[fieldset=eprinttype, origfield]
\step[fieldset=userd, fieldvalue={Some string of things}]
}
}
}
Applies only to entries with pubmed ﬁelds and maps pubmedid ﬁelds to eprint
ﬁelds, sets the eprinttype ﬁeld to ‘pubmedid’ and also sets the userd ﬁeld to
the string ‘Some string of things’.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=series,
match=\regexp{\A\d*(.+)},
replace=\regexp{\L$1}] } } } Here, the contents of the series ﬁeld have leading numbers stripped and the remainder of the contents lowercased. Since regular expressions usually contain all sort of special characters, it is best to enclose them in the provided \regexp macro as shown—this will pass the expression through to Biber correctly. \DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=maintitle, match=\regexp{Collected\s+Works.+Freud}, final] \step[fieldset=keywords, fieldvalue=freud] } } } Here, if for an entry, the maintitle ﬁeld matches a particular regular expression, we set a special keyword so we can, for example, make a references section just for certain items. \DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=lista, match=\regexp{regexp}, final] \step[fieldset=lista, null] } } } If an entry has a lista ﬁeld which matches regular expression ‘regexp’, then it is removed. 153 \DeclareSourcemap{ \maps[datatype=bibtex]{ \map[overwrite=false]{ \step[fieldsource=author] \step[fieldset=editor, origfieldval, final] \step[fieldsource=editor, match=\regexp{\A(.+?)\s+and.*}, replace={ } } } For any entry with an author ﬁeld, try to set sortname to the same as author. If this fails because sortname already exists, stop, otherwise truncate sortname to just the ﬁrst name in the name list. \DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=author, match={Smith, Bill}, replace={Smith, William}] \step[fieldsource=author, match={Jones, Baz}, replace={Jones, Barry}] } } } Here, we use multiple match/replace for the same ﬁeld to regularise some inconstant name variants. Bear in mind that \step processing within a map element is sequential and so the changes from a previous \steps are already committed. Note that we don’t need the \regexp macro to protect the regular expressions in this example as they contain no characters which need special escaping. Please note that due to the diﬃculty of protecting regular expressions in LATEX, there should be no literal spaces in the argument to \regexp. Please use escape code equivalents if spaces are needed. For example, this example, if using \regexp, should be: \DeclareSourcemap{ \maps[datatype=bibtex]{ \map{ \step[fieldsource=author, match=\regexp{Smith,\s+Bill}, replace=\regexp{Smith,\x20William}] \step[fieldsource=author, match=\regexp{Jones,\s+Baz}, replace=\regexp{Jones,\x20Barry}] } } } Here, we have used the hexadecimal escape sequence ‘\x20’ in place of literal spaces in the replacement strings. 154 \DeclareSourcemap{ \maps[datatype=bibtex]{ \map[overwrite]{ \step[fieldsource=author, match={Doe,}, final] \step[fieldset=shortauthor, origfieldval] \step[fieldset=sortname, origfieldval] \step[fieldsource=shortauthor, match=\regexp{Doe,\s*(?:\.|ohn)(?:[-]*)(?:P\.|Paul)*}, replace={Doe, John Paul}] \step[fieldsource=sortname, match=\regexp{Doe,\s*(?:\.|ohn)(?:[-]*)(?:P\.|Paul)*}, replace={Doe, John Paul}] } } } Only applies to entries with an author ﬁeld matching ‘Doe,’. First the author ﬁeld is copied to both the shortauthor and sortname ﬁelds, overwriting them if they already exist. Then, these two new ﬁelds are modiﬁed to canonicalise a particular name, which presumably has some variants in the data source. \DeclareSourcemap{ \maps[datatype=bibtex]{ \map[overwrite]{ \step[fieldsource=verba, final] \step[fieldset=verbb, fieldvalue=/, \step[fieldset=verbb, origfieldval, \step[fieldsource=verbb, final] \step[fieldset=verbc, fieldvalue=/, \step[fieldset=verbc, origfieldval, } } } append] append] append] append] This example demonstrates the sequential nature of the step processing and the append option. If an entry has a verba ﬁeld then ﬁrst, a forward slash is appended to the verbb ﬁeld. Then, the contents of verba are appended to the verbb ﬁeld. A slash is then appended to the verbc ﬁeld and the contents of verbb are appended to the verbc ﬁeld. \DeclareSourcemap{ \maps[datatype=bibtex]{ \map[overwrite]{ \step[fieldset=autourl, fieldvalue={http://scholar.google.com/schola \step[fieldsource=title] \step[fieldset=autourl, origfieldval, append] \step[fieldset=autourl, fieldvalue={”+author:}, append] \step[fieldsource=author, match=\regexp{\A([^,]+)\s*,}] \step[fieldset=autourl, fieldvalue={$1}, append]
\step[fieldset=autourl, fieldvalue={&as_ylo=}, append]
\step[fieldsource=year]
\step[fieldset=autourl, origfieldval, append]

155

\step[fieldset=autourl, fieldvalue={&as_yhi=}, append]
\step[fieldset=autourl, origfieldval, append]
}
}
}
This example assumes you have created a ﬁeld called autourl using the datamodel
macros from § 4.5.3 in order to hold, for example, a Google Scholar query URL autocreated from elements of the entry. The example progressively extracts information
from the entry, constructing the URL as it goes. It demonstrates that it is possible
to refer to parenthetical matches from the most recent match in any following
fieldvalue which allows extracting the lastname from the author, assuming
a ‘last, ﬁrst’ format. The resulting ﬁeld could then be used as a hyperlink from, for
example, the title of the work in the bibliography.
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=title, match={A Title}, final]
\step[entrynull]
}
}
}
Any entry with a title ﬁeld matching ‘A Title’ will be completely ignored.
4.5.3 Data Model Specification
\BiberOnlyMark
The data model which Biblatex uses consists of four main elements:
• Speciﬁcation of valid Entrytypes
• Speciﬁcation of valid Fields along with their type, datatype and any special
ﬂags
• Speciﬁcation of which Fields are valid in which Entrytypes
• Speciﬁcation of constraints which can be used to validate data against the data
model
The default data model is deﬁned in the core Biblatex ﬁle blx-dm.def using
the macros described in this section. The default data model is described in detail
in § 2. The data model is used internally by Biblatex and also by the backends. The
data model for the BibTeX backend is hard-coded and cannot be changed. Changing
the data model is only supported for the Biber backend. In practice, changing the
data model means that you can deﬁne the entrytypes and ﬁelds for your datasources
and validate your data against the data model. Naturally, this is not much use unless
your style supports any new entrytypes or ﬁelds and it raises issues of portability
between styles (although this can be mitigated by using the dynamic data modiﬁcation
functionality described in § 4.5.2).
Validation against the data model means that after mapping your data sources into
the data model, Biber (using its --validate_datamodel option) can check:

156

• Whether all entrytypes are valid entrytypes
• Whether all ﬁelds are valid ﬁelds for their entrytype
• Whether the ﬁelds obey various constraints on their format which you specify
Redeﬁning the data model can be done in several places. Style authors can create a
.dbx ﬁle which contains the data model macros required and this will be loaded
automatically when using the Biblatex package style option by looking for a ﬁle
named after the style with a .dbx extension (just like the .cbx and .bbx ﬁles for a
style). If the style option is not used but rather the citestyle and bibstyle
options, then the package will try to load .dbx ﬁles called ‘citestyle’.dbx
and ‘bibstyle’.dbx. Alternatively, the name of the data model ﬁle can be
diﬀerent from any of the style option names by specifying the name (without
.dbx extension) to the package datamodel option. After loading the style data
model ﬁle, Biblatex then loads, if present, a users biblatex-dm.cfg which
should be put somewhere Biblatex can ﬁnd it, just like the main conﬁguration ﬁle
biblatex.cfg. To summarise, the data model is determined by adding to the
data model from each of these locations, in order:
blx-dm.def→
‘datamodel option’.dbx →
‘style option’.dbx →
‘citestyle option’.dbx and ‘bibstyle option’.dbx →
biblatex-dm.cfg
It is not possible to add to a loaded data model by using the macros below in your
preamble as the preamble is read after Biblatex has deﬁned critical internal macros
based on the data model. If any data model macro is used in a document, it will
be ignored and a warning will be generated. The data model is deﬁned using the
following macros:
Biber only

\DeclareDatamodelEntrytypes[hoptionsi]{hentrytypesi}
Declares the comma-separated list of hentrytypesi to be valid entrytypes in the data
model. As usual in TeX csv lists, make sure each element is immediately followed by
a comma or the closing brace—no extraneous whitespace.
default: false

skipout=true, false

This entrytype is not output to the .bbl. Typically used for special entrytypes
which are processed and consumed by the backend such as @xdata.
Biber only

\DeclareDatamodelFields[hoptionsi]{hﬁeldsi}
Declares the comma-separated list of hﬁeldsi to be valid ﬁelds in the data model
with associated comma-separated hoptionsi. The htypei and hdatatypei options are
mandatory. All valid hoptionsi are:
type=hﬁeld typei
Set the type of the ﬁeld as described in § 2.2.1. Is typically ‘ﬁeld’ or ‘list’.
format=hﬁeld formati
Any special format of the ﬁeld. Normally unspeciﬁed but can take the value ‘xsv’
which tells Biber that this ﬁeld has a separated values format. The exact separator

157

can be controlled with the Biber option xsvsep and defaults to the expected comma
surrounded by optional whitespace.
datatype=hﬁeld datatypei
Set the datatype of the ﬁeld as described in § 2.2.1. For example, ‘name’ or ‘literal’.
default: false

nullok=true, false
The ﬁeld is allowed to be deﬁned but empty.

default: false

skipout=true, false

The ﬁeld is not output to the .bbl and is therefore not present during Biblatex
style processing. As usual in TeX csv lists, make sure each element is immediately
followed by a comma or the closing brace—no extraneous whitespace.
default: false

label=true, false

The ﬁeld can be used as a label in a bibliography or bibliography list. Specifying this
causes Biblatex to create several helper macros for the ﬁeld so that there are some
internal lengths and headings etc. deﬁned.
\DeclareDatamodelEntryfields[hentrytypesi]{hﬁeldsi}

Biber only

Declares that the comma-separated list of hﬁeldsi is valid for the comma-separated
list of hentrytypesi. If hentrytypesi is not given, the ﬁelds are valid for all entrytypes.
As usual in TeX csv lists, make sure each element is immediately followed by a
comma or the closing brace—no extraneous whitespace.
\DeclareDatamodelConstraints[hentrytypesi]{hspeciﬁcationi}
If a comma-separated list of hentrytypesi is given, the constraints apply only to those
entrytypes. The hspeciﬁcationi is an undelimited list of \constraint directives
which specify a constraint. Spaces, tabs, and line endings may be used freely to
visually arrange the hspeciﬁcationi. Blank lines are not permissible.
\constraint[htype=constrainttypei]{helementsi}
Speciﬁes a constraint of type hconstrainttypei. Valid constraint types are:
type=data, mandatory, conditional
Constraints of type ‘data’ put restrictions on the value of a ﬁeld. Constraints of type
‘mandatory’ specify which ﬁelds or combinations of ﬁelds an entrytype should have.
Constraints of type ‘conditional’ allow more sophisticated conditional and quantiﬁed
ﬁeld constraints.
datatype=integer, isbn, issn, ismn, date, pattern
For constraints of type hdatai, constrain ﬁeld values to be the given datatype.
rangemin=hnumi
For constraints of htypei ‘data’ and hdatatypei ‘integer’, constrain ﬁeld values to be
at least hnumi.
rangemax=hnumi
For constraints of htypei ‘data’ and hdatatypei ‘integer’, constrain ﬁeld values to be
at most hnumi.

158

Biber only

pattern=hpatti
For constraints of htypei ‘data’ and hdatatypei ‘pattern’, constrain ﬁeld values to
match regular expression pattern hpatti. It is best to wrap any regular expression in
the macro \regexp, see § 4.5.2.
A \constraint macro may contain any of the following:
\constraintfieldsor{hﬁeldsi}
For constraints of htypei ‘mandatory’, speciﬁes that an entry must contain a boolean
OR of the \constraintfields.
\constraintfieldsxor{hﬁeldsi}
For constraints of htypei ‘mandatory’, speciﬁes that an entry must contain a boolean
XOR of the \constraintfields.
\antecedent[hquantiﬁer=quantspeci]{hﬁeldsi}
For constraints of htypei ‘conditional’, speciﬁes a quantiﬁed set of
\constraintfields which must be satisﬁed before the \consequent
of the constraint is checked. hquantspeci should have one of the following values:
quantifier=all, one, none
Speciﬁes how many of the \constrainfield’s inside the \antecedent have
to be present to satisfy the antecedent of the conditional constraint.
\consequent[hquantiﬁer=quantspeci]{hﬁeldsi}
For constraints of htypei ‘conditional’, speciﬁes a quantiﬁed set of
\constraintfields which must be satisﬁed if the preceding \antecedent
of the constraint was satisﬁed. hquantspeci should have one of the following values:
quantifier=all, one, none
Speciﬁes how many of the \constraintfield’s inside the \consequent have
to be present to satisfy the consequent of the conditional constraint.
\constraintfield{hﬁeldi}
For constraints of htypei ‘data’, the constraint applies to this hﬁeldi. For constraints
of htypei ‘mandatory’, the entry must contain this hﬁeldi.
The data model declaration macros may be used multiple times as they append to
the previous deﬁnitions. In order to replace, change or remove existing deﬁnitions
(such as the default model which is loaded with Biblatex), you should reset (clear) the
current deﬁnition and then set what you want using the following macros. Typically,
these macros will be the ﬁrst things in any biblatex-dm.cfg ﬁle:
\ResetDatamodelEntrytypes
Clear all data model entrytype information.
\ResetDatamodelFields
Clear all data model ﬁeld information.

159

\ResetDatamodelEntryfields
Clear all data model ﬁelds for entrytypes information.
\ResetDatamodelConstraints
Clear all data model ﬁelds Constraints information.
Here is an example of a simple data model. Refer to the core Biblatex ﬁle
blx-dm.def for the default data model speciﬁcation.
\ResetDatamodelEntrytypes
\ResetDatamodelFields
\ResetDatamodelEntryfields
\ResetDatamodelConstraints
\DeclareDatamodelEntrytypes{entrytype1, entrytype2}

\DeclareDatamodelFields[type=field, datatype=literal]{field1,field2,field3
\DeclareDatamodelEntryfields{field1}
\DeclareDatamodelEntryfields[entrytype1]{field2,field3}
\DeclareDatamodelEntryfields[entrytype2]{field2,field3,field4}
\DeclareDatamodelConstraints[entrytype1]{
\constraint[type=data, datatype=integer, rangemin=3, rangemax=10]{
\constraintfield{field1}
}
\constraint[type=mandatory]{
\constraintfield{field1}
\constraintfieldsxor{
\constraintfield{field2}
\constraintfield{field3}
}
}
}
\DeclareDatamodelConstraints{
\constraint[type=conditional]{
\antecedent[quantifier=none]{
\constraintfield{field2}
}
\consequent[quantifier=all]{
\constraintfield{field3}
\constraintfield{field4}
}
}
}
This model speciﬁes:
• Clear the default data model completely
• Two valid entry types @entrytype1 and @entrytype2

160

• Four valid literal ﬁeld ﬁelds
• field1 is valid for all entrytypes
• field2 and field3 are valid for entrytype1
• field2, field3 and field4 are valid for @entrytype2
• For @entrytype1:
– field1 must be an integer between 3 and 10
– field1 must be present
– One and only one of field2 or field3 must be present
• For any entrytype, if field2 is not present, field3 and field4 must be
present
4.5.4 Labels
Alphabetic styles use a label to identify bibliography entries. This label is constructed
from components of the entry using a template which describes how to build the label.
The template can be customised on a global or per-type basis. Label customisation
requires Biber and will not work with any other backend.
\DeclareLabelalphaTemplate[hentrytype, …i]{hspeciﬁcationi}

Biber only

Deﬁnes the alphabetic label template for the given entrytypes. If no entrytypes
are speciﬁed in the ﬁrst argument, then the global label template is deﬁned. The
hspeciﬁcationi is an undelimited list of \labelelement directives which specify
the elements used to build the label. Spaces, tabs, and line endings may be used
freely to visually arrange the hspeciﬁcationi. Blank lines are not permissible. This
command may only be used in the preamble.
\labelelement{helementsi}
Speciﬁes the elements used to build the label. The helementsi are an undelimited
list of \field or \literal commands which are evaluated in the order in which
they are given. The ﬁrst \field or \literal which expands to a non-empty
string is used as the \labelelement expansion and the next \labelelement,
if any, is then processed.
\field[hoptionsi]{hﬁeldi}
If hﬁeldi is non-empty, use it as the current label \labelelement, subject to the
options below. Useful values for hﬁeldi are typically the name list type ﬁelds, date
ﬁelds, and title ﬁelds. You may also use the ‘citekey’ pseudo-ﬁeld to specify the
citation key as part of the label. Name list ﬁelds are treated specially and the options
which take substrings of the hﬁeldi to use in the \labelelement are applied to
the lastname of every name in a name list (see below).
default: false

final=true, false

This option marks a \field directive as the ﬁnal one in the hspeciﬁcationi. If the
hﬁeldi is non-empty, then this ﬁeld is used for the label and the remainder of the
hspeciﬁcationi will be ignored. The short form final is equivalent to final=
true.

161

default: false

lowercase=true, false

Forces the label part derived from the ﬁeld to lowercase. By default, the case is taken
from the ﬁeld source and not modiﬁed.
default: 1

strwidth=hintegeri

The number of characters of the hﬁeldi to use. For name list ﬁelds, if useprefix=
true, the ﬁrst character of the name preﬁx is prepended to the substring.
default: left

strside=left, right

The side of the string from which to take the strwidth number of characters.
default: right

Side to pad the label part when using the padchar option. Only for use with
ﬁxed-width label strings (strwidth).
If present, pads the label part on the padside side with the speciﬁed character to
the length of strwidth. Only for use with ﬁxed-width label strings (strwidth).
default: false

uppercase=true, false

Forces the label part derived from the ﬁeld to uppercase. By default, the case is taken
from the ﬁeld source and not modiﬁed.
default: false

varwidth=true, false

Use a variable width, left-side substring of characters from the hﬁeldi (each lastname
in name list ﬁelds). The length of the string is determined by the minimum length
needed to disambiguate the substring from all other hﬁeldi elements in the same
position in the label. For name list ﬁelds, this means that each name substring is
disambiguated from all other name substrings which occur in the same position in
the name list (see examples below). This option overrides strwidth if both are
used. The short form varwidth is equivalent to varwidth=true. For name list
ﬁelds, if useprefix=true, the ﬁrst character of the name preﬁx is prepended to
the substring.
default: false

varwidthnorm=true, false

As varwidth but will force the disambiguated substrings for the hﬁeldi to be the
same length as the longest disambiguated substring. This can be used to regularise
the format of the labels if desired. This option overrides strwidth if both are used.
The short form varwidthnorm is equivalent to varwidthnorm=true.
default: false

varwidthlist=true, false

Alternative method of automatic label disambiguation where the ﬁeld as a whole
is disambiguated from all other ﬁelds in the same label position. For non-name list
ﬁelds, this is equivalent to varwidth. For name list ﬁelds, names in a name list are
not disambiguated from other names in the same position in their name lists but
instead the entire name list is disambiguated as a whole from other name lists (see
examples below). This option overrides strwidth if both are used. The short form
varwidthlist is equivalent to varwidthlist=true. For name list ﬁelds,
if useprefix=true, the ﬁrst character of the name preﬁx is prepended to the
substring.
strwidthmax=hintegeri
When using varwidth, this option sets a limit (in number of characters) on the
length of variable width substrings. This option can be used to regularise the label.

162

default: 1

strfixedcount=hintegeri

When using varwidthnorm, there must be at least strfixedcount disambiguated substrings with the same, maximal length to trigger the forcing of all
disambiguated substrings to this same maximal length.
default: false

compound=true, false

For static (non-varwidth) disambiguation, treat lastname name components separated by whitespace or hyphens (compound last names) as separate names for label
generation. This means that when forming a label out of, for example the surname
‘Ballam Forsyth’ with a 1 character, left-side substring, this name would give ‘BF’ with
compound=true and ‘B’ with compound=false. The short form compound
is equivalent to compound=true.
ifnames=hintegeri
Only use this \field speciﬁcation if it is a name list ﬁeld with ifnames names
in it. This allows a \labelelement to be conditionalised on name length (see
below).
names=hintegeri
By default, for name list ﬁelds, the number of names considered when building the
label obeys the maxalphanames/minalphanames truncation. This option can
be used to override this with an explicit upper limit of how many names to consider.
This is useful if you have some very long name lists which might result in a very
long label.
form=original, translated, romanised,
default: original
uniform
Speciﬁes the script variant of a ﬁeld, if the datasource you are using supports this.
default: none

lang=‘language specifier’

Speciﬁes the babel/polyglossia language variant of a ﬁeld if the datasource
you are using supports this. The default, if no hlangi option is set, this means to use
the ﬁeld variant in the datasource which has no explicit language deﬁned.
\literal{hcharactersi}
Insert the literal hcharactersi into the label at this point.
Note that the template for labels can be deﬁned per-type and you should be aware of
this when using the automatically disambiguated label functionality. Disambiguation
is not per-type as this might lead to ambiguity due to diﬀerent label formats for
diﬀerent types being isolated from each others disambiguation process. Normally,
you will want to use very diﬀerent label formats for diﬀerent types to make the type
obvious by the label.
Here are some examples. The default global Biblatex alphabetic label template is deﬁned below. Firstly, shorthand has final=true and so if there is a shorthand
ﬁeld, it is used as the label and nothing more of the template is considered. Next,
the label ﬁeld is used as the ﬁrst label element if it exists. Otherwise, if there is
only one name (ifnames=1) in the labelname list, then three characters from
the left side of the lastname in the labelname are used as the ﬁrst label element.
If the labelname has more than one name in it, one character from the left side of
each lastname is used as the ﬁrst label element. The second label element consists of
2 characters from the right side of the year ﬁeld.

163

\DeclareLabelalphaTemplate{
\labelelement{
\field[final]{shorthand}
\field{label}
\field[strwidth=3,strside=left,ifnames=1]{labelname}
\field[strwidth=1,strside=left]{labelname}
}
\labelelement{
\field[strwidth=2,strside=right]{year}
}
}
To get an idea of how the label automatic disambiguation works, consider the following author lists:
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

(2000)
(2001)
(2002)
(2003)
(2004)

Assuming a template declaration such as:
\DeclareLabelalphaTemplate{
\labelelement{
\field[varwidth]{labelname}
}
}
Then the labels would be:
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

[AChLa]
[AConLe]
[ACouLa]
[BConEd]
[BConEm]

With normalised variable width labels deﬁned:
\DeclareLabelalphaTemplate{
\labelelement{
\field[varwidthnorm]{labelname}
}
}
You would get the following as the substrings of names in each position are extended
to the length of the longest substring in that same position:
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

[AChaLa]
[AConLe]
[ACouLa]
[BConEd]
[BConEm]

164

With a restriction to two characters for the name components of the label element
deﬁned like this:
\DeclareLabelalphaTemplate{
\labelelement{
\field[varwidthnorm,strwidthmax=2]{labelname}
}
}
This would be the result (note that the individual lastname label parts are no longer
unambiguous):
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

[AChLa]
[ACoLe]
[ACoLa]
[BCoEd]
[BCoEm]

Alternatively, you could choose to disambiguate the name lists as a whole with:
\DeclareLabelalphaTemplate{
\labelelement{
\field[varwidthlist]{labelname}
}
}
Which would result in:
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

[AChL]
[ACoL]
[ACL]
[BCEd]
[BCE]

Perhaps you only want to consider at most two names for label generation but
disambiguate at the whole name list level:
\DeclareLabelalphaTemplate{
\labelelement{
\field[varwidthlist,names=2]{labelname}
}
}
Which would result in:
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

[ACh+]
[ACo+]
[AC+]
[BC+a]
[BC+b]

In this last example, you can see \labelalphaothers has been appended to
show that there are more names. The last two labels now require disambiguating
with \extraalpha as there is no way of disambiguating this label name list with
only two names.
Finally, here is an example using multiple label elements:

165

\DeclareLabelalphaTemplate{
\labelelement{
\field[varwidthlist]{labelname}
}
\labelelement{
\literal{-}
}
\labelelement{
\field[strwidth=3,strside=right]{labelyear}
}
}
Which would result in:
Agassi, Chang, Laver
Agassi, Connors, Lendl
Agassi, Courier, Laver
Borg, Connors, Edberg
Borg, Connors, Emerson

[AChL-000]
[AConL-001]
[ACouL-002]
[BCEd-003]
[BCEm-004]

Here is another rather contrived example showing that you don’t need to specially
quote LaTeX special characters (apart from ‘%’, obviously) when specifying padding
characters and literals:
\DeclareLabelalphaTemplate{
\labelelement{
\literal{>}
}
\labelelement{
\literal{\%}
}
\labelelement{
}
\labelelement{
}
\labelelement{
\field[strwidth=2,strside=right]{year}
}
}
which given:
@Book{test,
author
= {XXX YY},
title
= {T},
year
= {2007},
}
would resulting a label looking like this:
[>%YY__&&T07]

166

4.5.5 Sorting
In addition to the predeﬁned sorting schemes discussed in § 3.5, it is possible to
deﬁne new ones or modify the default deﬁnitions. The sorting process may be
customized further by excluding certain ﬁelds from sorting on a per-type basis
and by automatically populating the presort ﬁeld on a per-type basis. Note that
custom sorting schemes require Biber. They will not work with any other backend.
Biber only

\DeclareSortingScheme[hoptionsi]{hnamei}{hspeciﬁcationi}
Deﬁnes the sorting scheme hnamei. The hnamei is the identiﬁer passed to
the sorting option (§ 3.1.2.1) when selecting the sorting scheme. The
\DeclareSortingScheme command supports the following optional arguments:
locale=hlocalei
The locale for the sorting scheme which then overrides the global sorting locale in
the sortlocale option discussed in § 3.1.2.1.
The hspeciﬁcationi is an undelimited list of \sort directives which specify the
elements to be considered in the sorting process. Spaces, tabs, and line endings may
be used freely to visually arrange the hspeciﬁcationi. Blank lines are not permissible.
This command may only be used in the preamble.
\sort{helementsi}
Speciﬁes the elements considered in the sorting process. The helementsi are an
undelimited list of \field, \literal, and \citeorder commands which are
evaluated in the order in which they are given. If an element is deﬁned, it is added
to the sort key and the sorting routine skips to the next \sort directive. If it is
undeﬁned, the next element is evaluated. Since literal strings are always deﬁned, any
\literal commands should be the sole or the last element in a \sort directive.
The \sort command supports the following optional arguments:
locale=hlocalei
Override the locale used for sorting at the level of a particular set of sorting elements. If speciﬁed, the locale overrides the locale set at the level of
of the global sorting locale option sortlocale in § 3.1.2.1.
direction=ascending, descending

default: ascending

The sort direction, which may be either ascending or descending. The default
is ascending order.
default: false

final=true, false

This option marks a \sort directive as the ﬁnal one in the hspeciﬁcationi. If one of
the helementsi is available, the remainder of the hspeciﬁcationi will be ignored. The
short form final is equivalent to final=true.
sortcase=true, false
Whether or not to sort case-sensitively. The default setting depends on the global
sortcase option.
sortupper=true, false
Whether or not to sort in ‘uppercase before lowercase’ (true) or ‘lowercase before
uppercase’ order (false). The default setting depends on the global sortupper
option.

167

\field[hkey=value, …i]{hﬁeldi}
The \field element adds a hﬁeldi to the sorting speciﬁcation. If the hﬁeldi is
undeﬁned, the element is skipped. The \field command supports the following
optional arguments:
default: left

Pads a ﬁeld on the left or right side using padchar so that its width is
option is speciﬁed, then padding is performed and the missing options are assigned
built-in default values. If padding and substring matching are both speciﬁed, the
substring match is performed ﬁrst. Padding is particularly useful with numeric ﬁelds.
For example, the command
will pad the volume ﬁeld with leading zeros to a width of two characters. This way,
volumes are sorted by numeric value (01/02/11/12) rather than in alphabetic
order (1/11/12/2).
default: 4

The target width in characters.

default: 0

The character to be used when padding the ﬁeld.

default: left

strside=left, right

Performs a substring match on the left or right side of the ﬁeld. The number
of characters to match is speciﬁed by the corresponding strwidth option. If no
substring option is set, no substring matching is performed at all. If any substring
option is speciﬁed, then substring matching is performed and the missing options
are assigned built-in default values. If padding and substring matching are both
speciﬁed, the substring match is performed ﬁrst.
default: 4

strwidth=hintegeri
The number of characters to match.
\literal{hstringi}

The \literal element adds a literal hstringi to the sorting speciﬁcation. This is
useful as a fallback if some ﬁelds are not available.
\citeorder The \citeorder element has a special meaning. It requests a sort based on
the lexical order of the actual citations. For entries cited within the same citation
command like:
\cite{one,two}
there is a distinction between the lexical order and the semantic order. Here “one”
and “two” have the same semantic order but a unique lexical order. The semantic
order only matters if you specify further sorting to disambiguate entries with the
same semantic order. For example, this is the deﬁnition of the none sorting scheme:
\DeclareSortingScheme{none}{
\sort{\citeorder}
}

168

This sorts the bibliography purely lexically by the order of the keys in the citation
commands. In the example above, it sorts “one” before “two”. However, suppose that
you consider “one” and “two” to have the same order (semantic order) since they are
cited at the same time and want to further sort these by year. Suppose “two” has an
earlier year than “one”:
\DeclareSortingScheme{noneyear}{
\sort{\citeorder}
\sort{year}
}
This sorts “two” before “one”, even though lexically, “one” would sort before “two”.
This is possible because the semantic order can be disambiguated by the further
sorting on year. With the standard none sorting scheme, the lexical order and
semantic order are identical because there is nothing further to disambiguate them.
This means that you can use \citeorder just like any other sorting speciﬁcation
element, choosing how to further sort entries cited at the same time (in the same
citation command).
Here are some examples of sorting schemes. In the ﬁrst example, we deﬁne a simple
name/title/year scheme. The name element may be either the author, the editor,
or the translator. Given this speciﬁcation, the sorting routine will use the ﬁrst
element which is available and continue with the title. Note that the options
useauthor, useeditor, and usetranslator are considered automatically
in the sorting process:
\DeclareSortingScheme{sample}{
\sort{
\field{author}
\field{editor}
\field{translator}
}
\sort{
\field{title}
}
\sort{
\field{year}
}
}
In the next example, we deﬁne the same scheme in a more elaborate way, considering
special ﬁelds such as presort, sortkey, sortname, etc. Since the sortkey
ﬁeld speciﬁes the master sort key, it needs to override all other elements except for
presort. This is indicated by the final option. If the sortkey ﬁeld is available,
processing will stop at this point. If not, the sorting routine continues with the next
\sort directive. This setup corresponds to the default deﬁnition of the nty scheme:
\DeclareSortingScheme{nty}{
\sort{
\field{presort}
}
\sort[final]{

169

\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort{
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
}
Finally, here is an example of a sorting scheme which overrides the global sorting
locale and additionally overrides again when sorting by the origtitle ﬁeld. Note
the use in the scheme-level override of a babel/polyglossia language name instead of
a real locale identiﬁer. Biber will map this to a suitable, real locale identiﬁer (in this
case, sv_SE):
\DeclareSortingScheme[locale=swedish]{custom}{
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort[locale=de_DE_phonebook]{
\field{origtitle}
}
}
\DeclareSortExclusion{hentrytype, …i}{hﬁeld, …i}

Biber only

Speciﬁes ﬁelds to be excluded from sorting on a per-type basis. The hentrytypei
argument and the hﬁeldi argument may be a comma-separated list of values. A blank
hﬁeldi argument will clear all exclusions for this hentrytypei. This command may
only be used in the preamble.
\DeclarePresort[hentrytype, …i]{hstringi}

Biber only

Speciﬁes a string to be used to automatically populate the presort ﬁeld of entries
without a presort ﬁeld. The presort may be deﬁned globally or on a per-type
basis. If the optional hentrytypei argument is given, the hstringi applies to the

170

respective entry type. If not, it serves as the global default value. Specifying an
hentrytypei in conjunction with a blank hstringi will clear the type-speciﬁc setting.
The hentrytypei argument may be a comma-separated list of values. This command
may only be used in the preamble.
4.5.6 Bibliography List Filters

Biber only

When using customisable bibliography lists (See § 3.6.4), usually one wants to return
in the .bbl only those entries which have the particular ﬁelds which the bibliography list is summarising. For example, when printing a normal list of shorthands, you
want the list returned by Biber in the .bbl to contain only those entries which have
a shorthand ﬁeld. This is accomplished by deﬁning a bibliography list ﬁlter using
the \DeclareBiblistFilter command. This diﬀers from the ﬁlters deﬁned
using \defbibfilter (see § 3.6.10) since the ﬁlters deﬁned by \defbibfilter
run inside Biblatex after the .bbl has been generated. In addition, bibliography lists
in the .bbl do not contain entry data, only the citation keys for the entries and so
no ﬁltering by Biblatex using \defbibfilter is possible for bibliography lists.
Biber only

\DeclareBiblistFilter{hnamei}{hspeciﬁcationi}
Deﬁnes a bibliography list ﬁlter with hnamei. The hspeciﬁcationi consists of one or
more \filter or \filteror macros, all of which must be satisﬁed for the entry
to pass the ﬁlter:
\filter{htypei}{hﬁlteri}
Filter entries according to the htypei and hﬁlteri. htypei can be one of:
type/nottype Entry is/is not of entrytype hﬁlteri
subtype/notsubtype Entry is/is not of subtype hﬁlteri
keyword/notkeyword Entry has/does not have keyword hﬁlteri
field/notfield Entry has/does not have a ﬁeld called hﬁlteri
\filteror{htypei}{hﬁltersi}
A wrapper around one or more \filter commands specifying that they form a
disjunctive set, i.e. any one of the hﬁltersi must be satisﬁed.
Fields in the datamodel which are marked as ‘Label ﬁelds’ (see § 4.5.3) automatically
have a ﬁlter deﬁned for them with the same name and which ﬁlters out any entries
which do no contain the ﬁeld. For example, Biblatex automatically generates a ﬁlter
for the shorthand ﬁeld:
\DeclareBiblistFilter{shorthand}{
\filter[type=field,filter=shorthand]
}

171

4.5.7 Controlling Name Initials Generation
Generating initials for name parts from a given name involves some diﬃculties when
you have names with preﬁxes, diacritics, hyphens etc. Often, you want to ignore
things like preﬁxes when generating initials so that the initials for “al-Hasan” is just
“H” instead of “a-H”. This is tricky when you also have names like “Ho-Pun” where
you want the initials to be “H-P”, for example.
Biber only

\DeclareNoinit{hspeciﬁcationi}
Deﬁnes regular expressions to strip from names before generating initials. The
hspeciﬁcationi is an undelimited list of \noinit directives which specify the regular
expressions to remove from the name. Spaces, tabs and line endings may be used
freely to visually arrange the hspeciﬁcationi. Blank lines are not permissible. This
command may only be used in the preamble.
\noinit{hregexpi}
Any number of \noinit commands can be given each of which speciﬁes to remove
the hregexpi from the copy of the name which the initials generation system sees.
Since regular expressions usually contain special characters, it is best to enclose them
in the provided \regexp macro as shown—this will pass the expression through to
Biber correctly.
If there is no \DeclareNoinit speciﬁcation, Biber will default to:

\DeclareNoinit{
% strip lowercase prefixes like ’al-’ when generating initials from name
\noinit{\regexp{\b\p{Ll}{2}\p{Pd}}}
% strip some common diacritics when generating initials from names
\noinit{\regexp{[\x{2bf}\x{2018}]}}
}
This Biber default strips a couple of diacritics and also strips lowercase preﬁxes from
names before generating initials.
4.5.8 Fine Tuning Sorting
It can be useful to ﬁne tune sorting so that it ignores certain parts of particular ﬁelds.
Biber only

\DeclareNosort{hspeciﬁcationi}
Deﬁnes regular expressions to strip from particular ﬁelds or types of ﬁelds when
sorting. The hspeciﬁcationi is an undelimited list of \nosort directives which
specify the regular expressions to remove from particular ﬁelds or type of ﬁeld.
Spaces, tabs and line endings may be used freely to visually arrange the hspeciﬁcationi.
Blank lines are not permissible. This command may only be used in the preamble.
\nosort{hﬁeld or ﬁeld typei}{hregexpi}
Any number of \nosort commands can be given each of which speciﬁes to remove
the hregexpi from the hﬁeldi or hﬁeld typei. A hﬁeld typei is simple a convenience
grouping of semantically similar ﬁelds from which you might want to remove a
regexp. Table 9 shows the available ﬁeld types. Since regular expressions usually
contain special characters, it is best to enclose them in the provided \regexp macro
as shown—this will pass the expression through to Biber correctly.

172

If there is no \DeclareNosort speciﬁcation, Biber will default to:
\DeclareNosort{
% strip prefixes like ’al-’ when sorting names
\nosort{type_names}{\regexp{\A\p{L}{2}\p{Pd}}}
% strip some diacritics when sorting names
\nosort{type_names}{\regexp{[\x{2bf}\x{2018}]}}
}
This Biber default strips a couple of diacritics and also strips preﬁxes from names
when sorting. Suppose you wanted to ignore “The” at the beginning of a title
ﬁeld when sorting:
\DeclareNosort{
\nosort{title}{\regexp{\AThe\s+}}
}
Or if you wanted to ignore “The” at the beginning of any title ﬁeld:
\DeclareNosort{
\nosort{type_title}{\regexp{\AThe\s+}}
}

Field Type

Fields

type_name

author
afterword
annotator
bookauthor
commentator
editor
editora
editorb
editorc
foreword
holder
introduction
namea
nameb
namec
shortauthor
shorteditor
translator
booktitle
eventtitle
issuetitle
journaltitle
maintitle
origtitle
title

type_title

Table 9: Field types for \nosort

4.5.9 Special Fields
Some of the automatically generated ﬁelds from § 4.2.4.2 may be customized. Note
that this requires Biber.

173

\DeclareLabelname[hentrytype, …i]{hspeciﬁcationi}

Biber only

Deﬁnes the ﬁelds to consider when generating the labelname ﬁeld (see § 4.2.4.2).
The hspeciﬁcationi is an ordered list of \field commands. The ﬁelds are checked
in the order listed and the ﬁrst ﬁeld which is available will be used as labelname.
This is the default deﬁnition:
\DeclareLabelname{%
\field{shortauthor}
\field{author}
\field{shorteditor}
\field{editor}
\field{translator}
}
The labelname ﬁeld may be customized globally or on a per-type basis. If the
optional hentrytypei argument is given, the speciﬁcation applies to the respective
entry type. If not, it is applied globally. The hentrytypei argument may be a commaseparated list of values. This command may only be used in the preamble.
\DeclareLabeldate[hentrytype, …i]{hspeciﬁcationi}

Biber only

Deﬁnes the date components to consider when generating labelyear,
labelmonth and labelday ﬁelds (see § 4.2.4.2). The hspeciﬁcationi is an ordered list of \field or \literal commands. The items are checked in the order
listed and the ﬁrst item which is available will be used to popluate the labelyear,
labelmonth and labelday ﬁelds. Note that the \field items do not have
to be datetype ‘date’ in the data model so that you can create pseudo-year labels
by, for example, using a pubstate ﬁeld contents, if available, as the year label by
deﬁning \DeclareLabeldate suitably. Note also that a \literal command
will always be used when found and so this should always be the last thing in the list.
If the value of a \literal command is a valid localization string, then this will be
resolved in the current language, otherwise the value is used as a literal string as-is.
This is the default deﬁnition:
\DeclareLabeldate{%
\field{date}
\field{eventdate}
\field{origdate}
\field{urldate}
\literal{nodate}
}
Note that the date ﬁeld is split by the backend into year, month which are also
valid ﬁelds in the default data model. In order to support legacy data which directly
sets year and/or month, the speciﬁcation ‘date’ in \DeclareLabeldate will
also match year and month ﬁelds, if present. The labelyear, labelmonth
and labelday ﬁelds may be customized globally or on a per-type basis. If the
optional hentrytypei argument is given, the speciﬁcation applies to the respective
entry type. If not, it is applied globally. The hentrytypei argument may be a commaseparated list of values. This command may only be used in the preamble. See also
§ 4.2.4.3.

174

\DeclareLabeltitle[hentrytype, …i]{hspeciﬁcationi}

Biber only

Deﬁnes the ﬁelds to consider when generating the labeltitle ﬁeld (see § 4.2.4.2).
The hspeciﬁcationi is an ordered list of \field commands. The ﬁelds are checked
in the order listed and the ﬁrst ﬁeld which is available will be used as labeltitle.
This is the default deﬁnition:
\DeclareLabeltitle{%
\field{shorttitle}
\field{title}
}
The labeltitle ﬁeld may be customized globally or on a per-type basis. If the
optional hentrytypei argument is given, the speciﬁcation applies to the respective
entry type. If not, it is applied globally. The hentrytypei argument may be a commaseparated list of values. This command may only be used in the preamble.
4.5.10 Data Inheritance (crossref)
Biber features a highly customizable cross-referencing mechanism with ﬂexible data
inheritance rules. This sections deals with the conﬁguration interface. See appendix B
for the default conﬁguration. Note that customized data inheritance requires Biber. It
will not work with any other backend. A note on terminology: the child or target is
the entry with the crossref ﬁeld, the parent or source is the entry the crossref
ﬁeld points to. The child inherits data from the parent.
Biber only

\DefaultInheritance[hexceptionsi]{hoptionsi}
Conﬁgures the default inheritance behavior. This command may only be used in
the preamble. The default behavior may be customized be setting the following
hoptionsi:
default: true

all=true, false

Whether or not to inherit all ﬁelds from the parent by default. all=true means that
the child entry inherits all ﬁelds from the parent, unless a more speciﬁc inheritance
rule has been set up with \DeclareDataInheritance. If an inheritance rule
is deﬁned for a ﬁeld, data inheritance is controlled by that rule. all=false means
that no data is inherited from the parent by default. Each ﬁeld to be inherited
requires an explicit inheritance rule set up with \DeclareDataInheritance.
The package default is all=true.
default: false

override=true, false

Whether or not to overwrite target ﬁelds with source ﬁelds if both are deﬁned.
This applies both to automatic inheritance and to explicit inheritance rules. The
package default is override=false, i. e., existing ﬁelds of the child entry are not
overwritten.
The optional hexceptionsi are an undelimited list of \except directives. Spaces,
tabs, and line endings may be used freely to visually arrange the hexceptionsi. Blank
lines are not permissible.
\except{hsourcei}{htargeti}{hoptionsi}
Sets the hoptionsi for a speciﬁc hsourcei and htargeti combination. The hsourcei and
htargeti arguments specify the parent and the child entry type. The asterisk matches
all types and is permissible in either argument.

175

\DeclareDataInheritance{hsource, …i}{htarget, …i}{hrulesi}
Declares inheritance rules. The hsourcei and htargeti arguments specify the parent
and the child entry type. Either argument may be a single entry type, a commaseparated list of types, or an asterisk. The asterisk matches all entry types. The hrulesi
are an undelimited list of \inherit and/or \noinherit directives. Spaces, tabs,
and line endings may be used freely to visually arrange the hrulesi. Blank lines are
not permissible. This command may only be used in the preamble.
\inherit[hoptioni]{hsourcei}{htargeti}
Deﬁnes an inheritance rule by mapping a hsourcei ﬁeld to a htargeti ﬁeld. The hoptioni
is the override option explained above. When set locally, it takes precedence over
any global options set with \DefaultInheritance.
\noinherit{hsourcei}
Unconditionally prevents inheritance of the hsourcei ﬁeld.
\ResetDataInheritance \BiberOnlyMark
Clears all inheritance rules deﬁned with \DeclareDataInheritance. This
command may only be used in the preamble.
Here are some practical examples:
\DefaultInheritance{all=true,override=false}
This example shows how to conﬁgure the default inheritance behavior. The above
settings are the package defaults.
\DefaultInheritance[
\except{*}{online}{all=false}
]{all=true,override=false}
This example is similar to the one above but adds one exception: entries of type
@online will, by default, not inherit any data from any parent.
\DeclareDataInheritance{collection}{incollection}{
\inherit{title}{booktitle}
\inherit{subtitle}{booksubtitle}
}
So far we have looked at setting up the defaults. For example, all=true means
that the publisher ﬁeld of a source entry is copied to the publisher ﬁeld of the
target entry. In some cases, however, asymmetric mappings are required. They are
deﬁned with \DeclareDataInheritance. The above example sets up three
typical rules for @incollection entries referencing a @collection. We map
the title and related ﬁelds of the source to the corresponding booktitle ﬁelds
of the target.
\DeclareDataInheritance{mvbook,book}{inbook,bookinbook}{
\inherit{author}{author}
\inherit{author}{bookauthor}
}

176

Biber only

This rule is an example of one-to-many mapping: it maps the author ﬁeld of
the source to both the author and the bookauthor ﬁelds of the target in order
to allow for compact inbook/bookinbook entries. The source may be either a
@mvbook or a @book entry, the target either an @inbook or a @bookinbook
entry.
\DeclareDataInheritance{*}{inbook,incollection}{
\noinherit{introduction}
}
This rule prevents inheritance of the introduction ﬁeld. It applies to all targets
of type @inbook or @incollection, regardless of the source entry type.
\DeclareDataInheritance{*}{*}{
\noinherit{abstract}
}
This rule, which applies to all entries, regardless of the source and target entry types,
prevents inheritance of the abstract ﬁeld.
\DefaultInheritance{all=true,override=false}
\ResetDataInheritance
This example demonstrates how to emulate traditional BibTeX’s cross-referencing
mechanism. It enables inheritance by default, disables overwriting, and clears all
other inheritance rules and mappings.

4.6 Auxiliary Commands
The facilities in this section are intended for analyzing and saving bibliographic data
rather than formatting and printing it.
4.6.1 Data Commands
The commands in this section grant low-level access to the unformatted bibliographic
data. They are not intended for typesetting but rather for things like saving data to a
temporary macro so that it may be used in a comparison later.
\thefield{hﬁeldi}
Expands to the unformatted hﬁeldi. If the hﬁeldi is undeﬁned, this command expands
to an empty string.
\strfield{hﬁeldi}
Similar to \thefield, except that the ﬁeld is automatically sanitized such that its
value may safely be used in the formation of a control sequence name.
\csfield{hﬁeldi}
Similar to \thefield, but prevents expansion.
\usefield{hcommandi}{hﬁeldi}
Executes hcommandi using the unformatted hﬁeldi as its argument.

177

\thelist{hliteral listi}
Expands to the unformatted hliteral listi. If the list is undeﬁned, this command
expands to an empty string. Note that this command will dump the hliteral listi in
the internal format used by this package. This format is not suitable for printing.
\thename{hname listi}
Expands to the unformatted hname listi. If the list is undeﬁned, this command
expands to an empty string. Note that this command will dump the hname listi in
the internal format used by this package. This format is not suitable for printing.
\savefield{hﬁeldi}{hmacroi}
\savefield*{hﬁeldi}{hmacroi}
Copies an unformatted hﬁeldi to a hmacroi. The regular variant of this command
deﬁnes the hmacroi globally, the starred one works locally.
\savelist{hliteral listi}{hmacroi}
\savelist*{hliteral listi}{hmacroi}
Copies an unformatted hliteral listi to a hmacroi. The regular variant of this command
deﬁnes the hmacroi globally, the starred one works locally.
\savename{hname listi}{hmacroi}
\savename*{hname listi}{hmacroi}
Copies an unformatted hname listi to a hmacroi. The regular variant of this command
deﬁnes the hmacroi globally, the starred one works locally.
\savefieldcs{hﬁeldi}{hcsnamei}
\savefieldcs*{hﬁeldi}{hcsnamei}
Similar to \savefield, but takes the control sequence name hcsnamei (without a
leading backslash) as an argument, rather than a macro name.
\savelistcs{hliteral listi}{hcsnamei}
\savelistcs*{hliteral listi}{hcsnamei}
Similar to \savelist, but takes the control sequence name hcsnamei (without a
leading backslash) as an argument, rather than a macro name.
\savenamecs{hname listi}{hcsnamei}
\savenamecs*{hname listi}{hcsnamei}
Similar to \savename, but takes the control sequence name hcsnamei (without a
leading backslash) as an argument, rather than a macro name.
\restorefield{hﬁeldi}{hmacroi}
Restores a hﬁeldi from a hmacroi deﬁned with \savefield before. The ﬁeld is
restored within a local scope.
\restorelist{hliteral listi}{hmacroi}
Restores a hliteral listi from a hmacroi deﬁned with \savelist before. The list is
restored within a local scope.

178

\restorename{hname listi}{hmacroi}
Restores a hname listi from a hmacroi deﬁned with \savename before. The list is
restored within a local scope.
\clearfield{hﬁeldi}
Clears the hﬁeldi within a local scope. A ﬁeld cleared this way is treated as undeﬁned
by subsequent data commands.
\clearlist{hliteral listi}
Clears the hliteral listi within a local scope. A list cleared this way is treated as
undeﬁned by subsequent data commands.
\clearname{hname listi}
Clears the hname listi within a local scope. A list cleared this way is treated as
undeﬁned by subsequent data commands.
4.6.2 Stand-alone Tests
The commands in this section are various kinds of stand-alone tests for use in
bibliography and citation styles.
\iffieldundef{hﬁeldi}{htruei}{hfalsei}
Expands to htruei if the hﬁeldi is undeﬁned, and to hfalsei otherwise.
\iflistundef{hliteral listi}{htruei}{hfalsei}
Expands to htruei if the hliteral listi is undeﬁned, and to hfalsei otherwise.
\ifnameundef{hname listi}{htruei}{hfalsei}
Expands to htruei if the hname listi is undeﬁned, and to hfalsei otherwise.
\iffieldsequal{hﬁeld 1i}{hﬁeld 2i}{htruei}{hfalsei}
Expands to htruei if the values of hﬁeld 1i and hﬁeld 2i are equal, and to hfalsei
otherwise.
\iflistsequal{hliteral list 1i}{hliteral list 2i}{htruei}{hfalsei}
Expands to htruei if the values of hliteral list 1i and hliteral list 2i are equal, and to
hfalsei otherwise.
\ifnamesequal{hname list 1i}{hname list 2i}{htruei}{hfalsei}
Expands to htruei if the values of hname list 1i and hname list 2i are equal, and to
hfalsei otherwise.
\iffieldequals{hﬁeldi}{hmacroi}{htruei}{hfalsei}
Expands to htruei if the value of the hﬁeldi is equal to the deﬁnition of hmacroi, and
to hfalsei otherwise.
\iflistequals{hliteral listi}{hmacroi}{htruei}{hfalsei}
Expands to htruei if the value of the hliteral listi is equal to the deﬁnition of hmacroi,
and to hfalsei otherwise.

179

\ifnameequals{hname listi}{hmacroi}{htruei}{hfalsei}
Expands to htruei if the value of the hname listi is equal to the deﬁnition of hmacroi,
and to hfalsei otherwise.
\iffieldequalcs{hﬁeldi}{hcsnamei}{htruei}{hfalsei}
Similar to \iffieldequals but takes the control sequence name hcsnamei (without a leading backslash) as an argument, rather than a macro name.
\iflistequalcs{hliteral listi}{hcsnamei}{htruei}{hfalsei}
Similar to \iflistequals but takes the control sequence name hcsnamei (without
a leading backslash) as an argument, rather than a macro name.
\ifnameequalcs{hname listi}{hcsnamei}{htruei}{hfalsei}
Similar to \ifnameequals but takes the control sequence name hcsnamei (without
a leading backslash) as an argument, rather than a macro name.
\iffieldequalstr{hﬁeldi}{hstringi}{htruei}{hfalsei}
Executes htruei if the value of the hﬁeldi is equal to hstringi, and hfalsei otherwise.
This command is robust.
\iffieldxref{hﬁeldi}{htruei}{hfalsei}
If the crossref/xref ﬁeld of an entry is deﬁned, this command checks if the
hﬁeldi is related to the cross-referenced parent entry. It executes htruei if the hﬁeldi
of the child entry is equal to the corresponding hﬁeldi of the parent entry, and hfalsei
otherwise. If the crossref/xref ﬁeld is undeﬁned, it always executes hfalsei.
This command is robust. See the description of the crossref and xref ﬁelds in
§ 2.2.3 as well as § 2.4.1 for further information concerning cross-referencing.
\iflistxref{hliteral listi}{htruei}{hfalsei}
Similar to \iffieldxref but checks if a hliteral listi is related to the cross-referenced parent entry. See the description of the crossref and xref ﬁelds in § 2.2.3
as well as § 2.4.1 for further information concerning cross-referencing.
\ifnamexref{hname listi}{htruei}{hfalsei}
Similar to \iffieldxref but checks if a hname listi is related to the cross-referenced parent entry. See the description of the crossref and xref ﬁelds in § 2.2.3
as well as § 2.4.1 for further information concerning cross-referencing.
\ifcurrentfield{hﬁeldi}{htruei}{hfalsei}
Executes htruei if the current ﬁeld is hﬁeldi, and hfalsei otherwise. This command
is robust. It is intended for use in ﬁeld formatting directives and always executes
hfalsei when used in any other context.
\ifcurrentlist{hliteral listi}{htruei}{hfalsei}
Executes htruei if the current list is hliteral listi, and hfalsei otherwise. This command
is robust. It is intended for use in list formatting directives and always executes
hfalsei when used in any other context.

180

\ifcurrentname{hname listi}{htruei}{hfalsei}
Executes htruei if the current list is hname listi, and hfalsei otherwise. This command
is robust. It is intended for use in list formatting directives and always executes
hfalsei when used in any other context.
\ifuseprefix{htruei}{hfalsei}
Expands to htruei if the useprefix option is enabled (either globally or for the
current entry), and hfalsei otherwise. See § 3.1.3 for details on this option.
\ifuseauthor{htruei}{hfalsei}
Expands to htruei if the useauthor option is enabled (either globally or for the
current entry), and hfalsei otherwise. See § 3.1.3 for details on this option.
\ifuseeditor{htruei}{hfalsei}
Expands to htruei if the useeditor option is enabled (either globally or for the
current entry), and hfalsei otherwise. See § 3.1.3 for details on this option.
\ifusetranslator{htruei}{hfalsei}
Expands to htruei if the usetranslator option is enabled (either globally or for
the current entry), and hfalsei otherwise. See § 3.1.3 for details on this option.
\ifsingletitle{htruei}{hfalsei}
Expands to htruei if there is only one work by the labelname name in the bibliography, and to hfalsei otherwise. If there is no labelname name at all for the entry,
then this expands to htruei if there is only one work with the labeltitle title in
the bibliography and hfalsei otherwise. If neither labelname nor labeltitle
are set for an entry, this will always expand to hfalsei. Note that this feature needs
to be enabled explicitly with the package option singletitle.
\ifandothers{hlisti}{htruei}{hfalsei}
Expands to htruei if the hlisti is deﬁned and has been truncated in the bib ﬁle with
the keyword ‘and others’, and to hfalsei otherwise. The hlisti may be a literal
list or a name list.
\ifmorenames{htruei}{hfalsei}
Expands to htruei if the current name list has been or will be truncated, and to hfalsei
otherwise. This command is intended for use in formatting directives for name lists.
It will always expand to hfalsei when used elsewhere. This command performs the
equivalent of an \ifandothers test for the current list. If this test is negative, it
also checks if the listtotal counter is larger than liststop. This command
may be used in a formatting directive to decide if a note such as “and others” or “et
al.” is to be printed at the end of the list. Note that you still need to check whether
you are in the middle or at the end of the list, i. e., whether listcount is smaller
than or equal to liststop, see § 4.4.1 for details.
\ifmoreitems{htruei}{hfalsei}
This command is similar to \ifmorenames but checks the current literal list. It
is intended for use in formatting directives for literal lists. It will always expand to
hfalsei when used elsewhere.

181

\iffirstinits{htruei}{hfalsei}
Expands to htruei or hfalsei, depending on the state of the firstinits package
option (see § 3.1.2.3). This command is intended for use in formatting directives for
name lists.
\ifterseinits{htruei}{hfalsei}
Expands to htruei or hfalsei, depending on the state of the terseinits package
option (see § 3.1.2.3). This command is intended for use in formatting directives for
name lists.
\ifentrytype{htypei}{htruei}{hfalsei}
Executes htruei if the entry type of the entry currently being processed is htypei,
and hfalsei otherwise.
\ifkeyword{hkeywordi}{htruei}{hfalsei}
Executes htruei if the hkeywordi is found in the keywords ﬁeld of the entry currently being processed, and hfalsei otherwise.
\ifentrykeyword{hentrykeyi}{hkeywordi}{htruei}{hfalsei}
A variant of \ifkeyword which takes an entry key as its ﬁrst argument. This is
useful for testing an entry other than the one currently processed.
\ifcategory{hcategoryi}{htruei}{hfalsei}
Executes htruei if the entry currently being processed has been assigned to a
hcategoryi with \addtocategory, and hfalsei otherwise.
\ifentrycategory{hentrykeyi}{hcategoryi}{htruei}{hfalsei}
A variant of \ifcategory which takes an entry key as its ﬁrst argument. This is
useful for testing an entry other than the one currently processed.
\ifciteseen{htruei}{hfalsei}
Executes htruei if the entry currently being processed has been cited before, and
hfalsei otherwise. This command is robust and intended for use in citation styles. If
there are any refsection environments in the document, the citation tracking
is local to these environments. Note that the citation tracker needs to be enabled
explicitly with the package option citetracker. The behavior of this test depends
on the mode the citation tracker is operating in, see § 3.1.2.3 for details. If the citation
tracker is disabled, the test always yields hfalsei. Also see the \citetrackertrue
and \citetrackerfalse switches in § 4.6.4.
\ifentryseen{hentrykeyi}{htruei}{hfalsei}
A variant of \ifciteseen which takes an entry key as its ﬁrst argument. Since
the hentrykeyi is expanded prior to performing the test, it is possible to test for entry
keys in a ﬁeld such as xref:
\ifentryseen{\thefield{xref}}{true}{false}
Apart from the additional argument, \ifentryseen behaves like \ifciteseen.

182

\ifentryinbib{hentrykeyi}{htruei}{hfalsei}
Executes htruei if the entry hentrykeyi appears in the current bibliography, and
hfalsei otherwise. This command is intended for use in bibliography styles.
\iffirstcitekey{htruei}{hfalsei}
Executes htruei if the entry currently being processed is the ﬁrst one in the
citation list, and hfalsei otherwise. This command relies on the citecount,
citetotal, multicitecount and multicitetotal counters (§ 4.10.5) and
thus is intended for use only in the hloopcodei of a citation command deﬁned with
\DeclareCiteCommand.
\iflastcitekey{htruei}{hfalsei}
Similar \iffirstcitekey, but executes htruei if the entry currently being processed is the last one in the citation list, and hfalsei otherwise.
\ifciteibid{htruei}{hfalsei}
Expands to htruei if the entry currently being processed is the same as the last one,
and to hfalsei otherwise. This command is intended for use in citation styles. If there
are any refsection environments in the document, the tracking is local to these
environments. Note that the ‘ibidem’ tracker needs to be enabled explicitly with the
package option ibidtracker. The behavior of this test depends on the mode the
tracker is operating in, see § 3.1.2.3 for details. If the tracker is disabled, the test always
yields hfalsei. Also see the \citetrackertrue and \citetrackerfalse
switches in § 4.6.4.
\ifciteidem{htruei}{hfalsei}
Expands to htruei if the primary name (i. e., the author or editor) in the entry currently
being processed is the same as the last one, and to hfalsei otherwise. This command is
intended for use in citation styles. If there are any refsection environments in the
document, the tracking is local to these environments. Note that the ‘idem’ tracker
needs to be enabled explicitly with the package option idemtracker. The behavior
of this test depends on the mode the tracker is operating in, see § 3.1.2.3 for details. If
the tracker is disabled, the test always yields hfalsei. Also see \citetrackertrue
and \citetrackerfalse in § 4.6.4.
\ifopcit{htruei}{hfalsei}
This command is similar to \ifciteibid except that it expands to htruei if the
entry currently being processed is the same as the last one by this author or editor.
Note that the ‘opcit’ tracker needs to be enabled explicitly with the package option
opcittracker. The behavior of this test depends on the mode the tracker is
operating in, see § 3.1.2.3 for details. If the tracker is disabled, the test always yields
hfalsei. Also see the \citetrackertrue and \citetrackerfalse switches
in § 4.6.4.
\ifloccit{htruei}{hfalsei}
This command is similar to \ifopcit except that it also compares the hpostnotei
arguments and expands to htruei only if they match and are numerical (in the sense
of \ifnumerals from § 4.6.2), i. e., \ifloccit will yield true if the citation
refers to the same page cited before. Note that the ‘loccit’ tracker needs to be enabled

183

explicitly with the package option loccittracker. The behavior of this test
depends on the mode the tracker is operating in, see § 3.1.2.3 for details. If the tracker
is disabled, the test always yields hfalsei. Also see the \citetrackertrue and
\citetrackerfalse switches in § 4.6.4.
\iffirstonpage{htruei}{hfalsei}
The behavior of this command is responsive to the package option pagetracker.
If the option is set to page, it expands to htruei if the current item is the ﬁrst one on
the page, and to hfalsei otherwise. If the option is set to spread, it expands to htruei
if the current item is the ﬁrst one on the double-page spread, and to hfalsei otherwise.
If the page tracker is disabled, this test always yields hfalsei. Depending on the
context, the ‘item’ may be a citation or an entry in the bibliography or a bibliography
list. Note that this test distinguishes between body text and footnotes. For example,
if used in the ﬁrst footnote on a page, it will expand to htruei even if there is a
citation in the body text prior to the footnote. Also see the \pagetrackertrue
and \pagetrackerfalse switches in § 4.6.4.
\ifsamepage{hinstance 1i}{hinstance 2i}{htruei}{hfalsei}
This command expands to htruei if two instances of a reference are located on the
same page or double-page spread, and to hfalsei otherwise. An instance of a reference
may be a citation or an entry in the bibliography or a bibliography list. These instances
are identiﬁed by the value of the instcount counter, see § 4.10.5. The behavior of
this command is responsive to the package option pagetracker. If this option
is set to spread, \ifsamepage is in fact an ‘if same spread’ test. If the page
tracker is disabled, this test always yields hfalsei. The arguments hinstance 1i and
hinstance 2i are treated as integer expressions in the sense of e-TeX’s \numexpr.
This implies that it is possible to make calculations within these arguments, for
example:
\ifsamepage{\value{instcount}}{\value{instcount}-1}{true}{false}
Note that \value is not preﬁxed by \the and that the subtraction is included
in the second argument in the above example. If hinstance 1i or hinstance 2i is an
invalid number (for example, a negative one), the test yields hfalsei. Also note
that this test does not distinguish between body text and footnotes. Also see the
\pagetrackertrue and \pagetrackerfalse switches in § 4.6.4.
\ifinteger{hstringi}{htruei}{hfalsei}
Executes htruei if the hstringi is a positive integer, and hfalsei otherwise. This
command is robust.
\ifnumeral{hstringi}{htruei}{hfalsei}
Executes htruei if the hstringi is an Arabic or Roman numeral, and hfalsei otherwise.
in § 4.6.4.
\ifnumerals{hstringi}{htruei}{hfalsei}
Executes htruei if the hstringi is a range or a list of Arabic or Roman numerals, and hfalsei otherwise. This command is robust. In contrast to
\ifnumeral, it will also execute htruei with arguments like “52–58”, “14/15”,
\DeclareRangeCommands, and \NumCheckSetup in § 4.6.4.

184

\ifpages{hstringi}{htruei}{hfalsei}
Similar to \ifnumerals, but also considers \DeclarePageCommands from
§ 4.6.4.
\iffieldint{hﬁeldi}{htruei}{hfalsei}
Similar to \ifinteger, but uses the value of a hﬁeldi rather than a literal string
in the test. If the hﬁeldi is undeﬁned, it executes hfalsei.
\iffieldnum{hﬁeldi}{htruei}{hfalsei}
Similar to \ifnumeral, but uses the value of a hﬁeldi rather than a literal string
in the test. If the hﬁeldi is undeﬁned, it executes hfalsei.
\iffieldnums{hﬁeldi}{htruei}{hfalsei}
Similar to \ifnumerals, but uses the value of a hﬁeldi rather than a literal string
in the test. If the hﬁeldi is undeﬁned, it executes hfalsei.
\iffieldpages{hﬁeldi}{htruei}{hfalsei}
Similar to \ifpages, but uses the value of a hﬁeldi rather than a literal string in
the test. If the hﬁeldi is undeﬁned, it executes hfalsei.
\ifbibstring{hstringi}{htruei}{hfalsei}
Expands to htruei if the hstringi is a known localization key, and to hfalsei otherwise.
The localization keys deﬁned by default are listed in § 4.9.2. New ones may be deﬁned
with \NewBibliographyString.
\ifbibxstring{hstringi}{htruei}{hfalsei}
Similar to \ifbibstring, but the hstringi is expanded.
\iffieldbibstring{hﬁeldi}{htruei}{hfalsei}
Similar to \ifbibstring, but uses the value of a hﬁeldi rather than a literal string
in the test. If the hﬁeldi is undeﬁned, it expands to hfalsei.
\ifdriver{hentrytypei}{htruei}{hfalsei}
Expands to htruei if a driver for the hentrytypei is available, and to hfalsei otherwise.
\ifcapital{htruei}{hfalsei}
Executes htruei if Biblatex’s punctuation tracker would capitalize a localization
string at the current location, and hfalsei otherwise. This command is robust. It may
be useful for conditional capitalization of certain parts of a name in a formatting
directive.
\ifcitation{htruei}{hfalsei}
Expands to htruei when located in a citation, and to hfalsei otherwise. Note that this
command is responsive to the outermost context in which it is used. For example,
if a citation command deﬁned with \DeclareCiteCommand executes a driver
deﬁned with \DeclareBibliographyDriver, any \ifcitation tests in
the driver code will yield htruei. See § 4.11.6 for a practical example.

185

\ifbibliography{htruei}{hfalsei}
Expands to htruei when located in a bibliography, and to hfalsei otherwise. Note that
this command is responsive to the outermost context in which it is used. For example,
if a driver deﬁned with \DeclareBibliographyDriver executes a citation
command deﬁned with \DeclareCiteCommand, any \ifbibliography tests
in the citation code will yield htruei. See § 4.11.6 for a practical example.
\ifnatbibmode{htruei}{hfalsei}
Expands to htruei or hfalsei depending on the natbib option from § 3.1.1.
\ifciteindex{htruei}{hfalsei}
Expands to htruei or hfalsei depending on the indexing option from § 3.1.2.1.
\ifbibindex{htruei}{hfalsei}
Expands to htruei or hfalsei depending on the indexing option from § 3.1.2.1.
\iffootnote{htruei}{hfalsei}
Expands to htruei when located in a footnote, and to hfalsei otherwise. Note that
footnotes in minipage environments are considered to be part of the body text.
This command will only expand to htruei in footnotes a the bottom of the page and
in endnotes as provided by the endnotes package.
citecounter This counter indicates how many times the entry currently being processed is cited
in the current reference section. Note that this feature needs to be enabled explicitly
with the package option citecounter. If the option is set to context, citations
in the body text and in footnotes are counted separately. In this case, citecounter
will hold the value of the context it is used in.
uniquename \BiberOnlyMark This counter refers to the labelname list. It is set on a pername basis. Its value is 0 if the last name is unique, 1 if adding the other parts
of the name (ﬁrst name, preﬁx, suﬃx) as initials will make it unique, and 2 if the
full name is required to disambiguate the name. This information is required by
author-year and author-title citation schemes which add additional parts of the name
when citing diﬀerent authors with the same last name. For example, if there is one
‘John Doe’ and one ‘Edward Doe’ in the list of references, this counter will be set
to 1. If there is one ‘John Doe’ and one ‘Jane Doe’, the value of the counter will
be 2. If the option is set to init/allinit/mininit, the counter will be limited
to 1. This is useful for citations styles which use initials to disambiguate names
but never print the full name in citations. If adding the initials is not suﬃcient to
disambiguate the name, uniquename will also be set to 0 for that name. This
feature needs to be enabled explicitly with the package option uniquename. Note
that the uniquename counter is local to \printnames and that it is only set
for the labelname list and to the name list labelname has been derived from
(typically author or editor). Its value is zero in any other context, i.e., it must
be evaluated in the name formatting directives handling name lists. See § 4.11.4 for
further details and practical examples.

186

uniquelist \BiberOnlyMark This counter refers to the labelname list. It is set on a perﬁeld basis. Its value indicates the number of names required to disambiguate the
name list if automatic maxnames/minnames truncation would lead to ambiguous
citations. For example, if there is one work by ‘Doe/Smith/Johnson’ and another
one by ‘Doe/Edwards/Williams’, setting maxnames=1 would lead to ‘Doe et al.’ in
both cases. In this case, uniquelist would be set to 2 on the labelname lists
of both entries because at least the ﬁrst two names are required to disambiguate
them. Note that the uniquelist counter is local to \printnames and that it is
only set for the labelname list and to the name list labelname has been derived
from (typically author or editor). Its value is zero in any other context. If available, the uniquelist value will be used automatically by \printnames when
processing the name list, i. e., it will automatically override maxnames/minnames.
This feature needs to be enabled explicitly with the package option uniquelist.
See § 4.11.4 for further details and practical examples.
parenlevel The current nesting level of parentheses and/or brackets. This information is only
available if the parentracker from § 3.1.2.3 is enabled.
4.6.3 Tests with \ifboolexpr and \ifthenelse
The tests introduced in § 4.6.2 may also be used with the \ifboolexpr command
provided by the etoolbox package and the \ifthenelse command provided
by the ifthen package. The syntax of the tests is slightly diﬀerent in this case:
the htruei and hfalsei arguments are omitted from the test itself and passed to the
\ifboolexpr or \ifthenelse command instead. Note that the use of these
commands implies some processing overhead. If you do not need any boolean
operators, it is more eﬃcient to use the stand-alone tests from § 4.6.2.
\ifboolexpr{hexpressioni}{htruei}{hfalsei}
etoolbox command which allows for complex tests with boolean operators and
grouping:
\ifboolexpr{ (
test {\ifnameundef{editor}}
and
not test {\iflistundef{location}}
)
or test {\iffieldundef{year}}
}
{...}
{...}
\ifthenelse{htestsi}{htruei}{hfalsei}
ifthen command which allows for complex tests with boolean operators and
grouping:
\ifthenelse{ $$\ifnameundef{editor} \and \not \iflistundef{location}$$

187

\or \iffieldundef{year}
}
{...}
{...}
The additional tests provided by Biblatex are only available when \ifboolexpr
or \ifthenelse are used in citation commands and in the bibliography.
4.6.4 Miscellaneous Commands
The section introduced miscellaneous commands and little helpers for use in bibliography and citation styles.
\newbibmacro{hnamei}[hargumentsi][hoptionali]{hdeﬁnitioni}
\newbibmacro*{hnamei}[hargumentsi][hoptionali]{hdeﬁnitioni}
Deﬁnes a macro to be executed via \usebibmacro later. The syntax of this command is very similar to \newcommand except that hnamei may contain characters
such as numbers and punctuation marks and does not start with a backslash. The
optional argument hargumentsi is an integer specifying the number of arguments
taken by the macro. If hoptionali is given, it speciﬁes a default value for the ﬁrst
argument of the macro, which automatically becomes an optional argument. In contrast to \newcommand, \newbibmacro issues a warning message if the macro
is already deﬁned, and automatically falls back to \renewbibmacro. As with
\newcommand, the regular variant of this command uses the \long preﬁx in
the deﬁnition while the starred one does not. If a macro has been declared to
be long, it may take arguments containing \par tokens. \newbibmacro and
\renewbibmacro are provided for convenience. Style authors are free to use
\newcommand or \def instead. However, note that most shared deﬁnitions found
in biblatex.def are deﬁned with \newbibmacro, hence they must be used
and modiﬁed accordingly.
\renewbibmacro{hnamei}[hargumentsi][hoptionali]{hdeﬁnitioni}
\renewbibmacro*{hnamei}[hargumentsi][hoptionali]{hdeﬁnitioni}
Similar to \newbibmacro but redeﬁnes hnamei. In contrast to \renewcommand,
\renewbibmacro issues a warning message if the macro is undeﬁned, and automatically falls back to \newbibmacro.
\providebibmacro{hnamei}[hargumentsi][hoptionali]{hdeﬁnitioni}
\providebibmacro*{hnamei}[hargumentsi][hoptionali]{hdeﬁnitioni}
Similar to \newbibmacro but only deﬁnes hnamei if it is undeﬁned. This command
is similar in concept to \providecommand.
\usebibmacro{hnamei}
\usebibmacro*{hnamei}
This command executes the macro hnamei, as deﬁned with \newbibmacro. If the
macro takes any arguments, they are simply appended after hnamei. The regular
variant of this command sanitizes hnamei while the starred variant does not.

188

\savecommand{hcommandi}
\restorecommand{hcommandi}
These commands save and restore any hcommandi, which must be a command name
starting with a backslash. Both commands work within a local scope. They are
mainly provided for use in localization ﬁles.
\savebibmacro{hnamei}
\restorebibmacro{hnamei}
These commands save and restore the macro hnamei, where hnamei is the identiﬁer
of a macro deﬁned with \newbibmacro. Both commands work within a local
scope. They are mainly provided for use in localization ﬁles.
\savefieldformat[hentry typei]{hformati}
\restorefieldformat[hentry typei]{hformati}
These commands save and restore the formatting directive hformati, as deﬁned with
\DeclareFieldFormat. Both commands work within a local scope. They are
mainly provided for use in localization ﬁles.
\savelistformat[hentry typei]{hformati}
\restorelistformat[hentry typei]{hformati}
These commands save and restore the formatting directive hformati, as deﬁned with
\DeclareListFormat. Both commands work within a local scope. They are
mainly provided for use in localization ﬁles.
\savenameformat[hentry typei]{hformati}
\restorenameformat[hentry typei]{hformati}
These commands save and restore the formatting directive hformati, as deﬁned with
\DeclareNameFormat. Both commands work within a local scope. They are
mainly provided for use in localization ﬁles.
\ifbibmacroundef{hnamei}{htruei}{hfalsei}
Expands to htruei if the bibliography macro hnamei is undeﬁned, and to hfalsei
otherwise.
\iffieldformatundef[hentry typei]{hnamei}{htruei}{hfalsei}
\iflistformatundef[hentry typei]{hnamei}{htruei}{hfalsei}
\ifnameformatundef[hentry typei]{hnamei}{htruei}{hfalsei}
Expands to htruei if the formatting directive hformati is undeﬁned, and to hfalsei
otherwise.
\usedriver{hcodei}{hentrytypei}
Executes the bibliography driver for an hentrytypei. Calling this command in the
hloopcodei of a citation command deﬁned with \DeclareCiteCommand is a simple way to print full citations similar to a bibliography entry. Commands such as
\newblock, which are not applicable in a citation, are disabled automatically. Additional initialization commands may be passed as the hcodei argument. This argument
is executed inside the group in which \usedriver runs the respective driver. Note
that it is mandatory in terms of the syntax but may be left empty. Also note that this

189

command will automatically switch languages if the autolang package option is
enabled.
\bibhypertarget{hnamei}{htexti}
A wrapper for hyperref’s \hypertarget command. The hnamei is the name
of the anchor, the htexti is arbitrary printable text or code which serves as an anchor.
If there are any refsection environments in the document, the hnamei is local
to the current environment. If the hyperref package option is disabled or the
hyperref package has not been loaded, this command will simply pass on its htexti
A wrapper for hyperref’s \hyperlink command. The hnamei is the name of
an anchor deﬁned with \bibhypertarget, the htexti is arbitrary printable text
or code to be transformed into a link. If there are any refsection environments
in the document, the hnamei is local to the current environment. If the hyperref
package option is disabled or the hyperref package has not been loaded, this
command will simply pass on its htexti argument. See also the formatting directive
\bibhyperref[hentrykeyi]{htexti}
Transforms htexti into an internal link pointing to hentrykeyi in the bibliography.
If hentrykeyi is omitted, this command uses the key of the entry currently being
processed. This command is employed to transform citations into clickable links
pointing to the corresponding entry in the bibliography. The link target is marked
automatically by Biblatex. If there are multiple bibliographies in a document, the
target will be the ﬁrst occurence of hentrykeyi in one of the bibliographies. If there
the formatting directive bibhyperref in § 4.10.4.
\ifhyperref{htruei}{hfalsei}
Expands to htruei if the hyperref package option is enabled (which implies that
the hyperref package has been loaded), and to hfalsei otherwise.
\docsvfield{hﬁeldi}
Similar to the \docsvlist command from the etoolbox package, except that
it takes a ﬁeld name as its argument. The value of this ﬁeld is parsed as a commaseparated list. If the hﬁeldi is undeﬁned, this command expands to an empty string.
\forcsvfield{hhandleri}{hﬁeldi}
Similar to the \forcsvlist command from the etoolbox package, except that
it takes a ﬁeld name as its argument. The value of this ﬁeld is parsed as a commaseparated list. If the hﬁeldi is undeﬁned, this command expands to an empty string.
\MakeCapital{htexti}
Similar to \MakeUppercase but only coverts the ﬁrst printable character in htexti
to uppercase. Note that the restrictions that apply to \MakeUppercase also apply
to this command. Namely, all commands in htexti must either be robust or preﬁxed
with \protect since the htexti is expanded during capitalization. Apart from

190

Ascii characters and the standard accent commands, this command also handles the
active characters of the inputenc package as well as the shorthands of the babel
package. If the htexti starts with a control sequence, nothing is capitalized. This
command is robust.
\MakeSentenceCase{htexti}
\MakeSentenceCase*{htexti}
Converts its htexti argument to sentence case, i. e., the ﬁrst word is capitalized and
the remainder of the string is converted to lowercase. This command is robust. The
starred variant diﬀers from the regular version in that it considers the language
of the entry, as speciﬁed in the langid ﬁeld. It only converts the htexti to sentence case if the langid ﬁeld is undeﬁned or if it holds a language declared with
\DeclareCaseLangs (see below).34 Otherwise, the htexti is not altered in any
way. It is recommended to use \MakeSentenceCase* rather than the regular
variant in formatting directives. Both variants support the traditional BibTeX convention for bib ﬁles that anything wrapped in a pair of curly braces is not modiﬁed
when changing the case. For example:
\MakeSentenceCase{an Introduction to LaTeX}
\MakeSentenceCase{an Introduction to {LaTeX}}
would yield:
An introduction to latex
An introduction to LaTeX
In bib ﬁles designed with traditional BibTeX in mind, it has been fairly common to
only wrap single letters in braces to prevent case-changing:
title = {An Introduction to {L}a{T}e{X}}
The problem with this convention is that the braces will suppress the kerning on
both sides of the enclosed letter. It is preferable to wrap the entire word in braces as
shown in the ﬁrst example.
\mkpageprefix[hpaginationi][hpostproi]{htexti}
This command is intended for use in ﬁeld formatting directives which format
the page numbers in the hpostnotei argument of citation commands and the
pages ﬁeld of bibliography entries. It will parse its htexti argument and
preﬁx it with ‘p.’ or ‘pp.’ by default. The optional hpaginationi argument
holds the name of a ﬁeld indicating the pagination type. This may be either pagination or bookpagination, with pagination being the default.
The spacing between the preﬁx and the htexti may be modiﬁed by redeﬁning
\ppspace. The default is an unbreakable interword space. See §§ 2.3.10 and 3.12.3
\DeclareRangeCommands, and \NumCheckSetup. The optional hpostproi
argument speciﬁes a macro to be used for post-processing the htexti. If only one
optional argument is given, it is taken as hpaginationi. Here are two typical examples:
34

By default, converting to sentence case is enabled for the following language identiﬁers: american, british, canadian, english, australian, newzealand as well as the aliases
USenglish and UKenglish. Use \DeclareCaseLangs to extend or change this list.

191

Input

11–15
111–115
1111–1115

Output
mincomprange=10

mincomprange=100 mincomprange=1000

11–5
111–5
1111–5

11–15
111–5
1111–5

11–15
111–115
1111–5

maxcomprange=1000 maxcomprange=100 maxcomprange=10
1111–1115
1111–1155
1111–1555

1111–1115
1111–1155
1111–1555

1111–5
1111–55
1111–555

1111–5
1111–55
1111–1555

1111–5
1111–1155
1111–1555

mincompwidth=1

mincompwidth=10

mincompwidth=100

1111–5
1111–55
1111–555

1111–15
1111–55
1111–555

1111–115
1111–155
1111–555

Table 10: \mkcomprange setup
\DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}}
\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination]{#1}}
The optional argument pagination in the ﬁrst example is omissible.
\mkpagetotal[hpaginationi][hpostproi]{htexti}
This command is similar to \mkpageprefix except that it is intended for the
pagetotal ﬁeld of bibliography entries, i. e., it will print “123 pages” rather than
“page 123”. The optional hpaginationi argument defaults to bookpagination.
The spacing inserted between the pagination suﬃx and the htexti may be modiﬁed
by redeﬁning the macro \ppspace. The optional hpostproi argument speciﬁes a
macro to be used for post-processing the htexti. If only one optional argument is
given, it is taken as hpaginationi. Here is a typical example:
\DeclareFieldFormat{pagetotal}{\mkpagetotal[bookpagination]{#1}}
The optional argument bookpagination is omissible in this case.
\mkcomprange[hpostproi]{htexti}
\mkcomprange*[hpostproi]{htexti}
This command, which is intended for use in ﬁeld formatting directives, will parse its
htexti argument for page ranges and compress them. For example, “125–129” may be
formatted as “125–9”. You may conﬁgure the behavior of \mkcomprange by adjusting the LaTeX counters mincomprange, maxcomprange, and mincompwidth,
as illustrated in table 10. The default settings are 10, 100000, and 1, respectively. This means that the command tries to compress as much as possible by
default. Use \setcounter to adjust the parameters. The scanner recognizes
\bibrangedash and hyphens as range dashes. It will normalize the dash by replacing any number of consecutive hyphens with \bibrangedash. Lists of ranges
delimited with \bibrangessep (Biber35 ) or commas/semicolons (BibTeX) are also
supported. With Biber, The scanner will normalise any comma or semi-colons surrounded by optional space by replacing them with \bibrangessep. If you want
35

Biber will always convert commas/semicolon multi-range separators into \bibrangessep so that
it can be controlled in the style.

192

to hide a character from the list/range scanner for some reason, wrap the character
or the entire string in curly braces. The optional hpostproi argument speciﬁes a
macro to be used for post-processing the htexti. This is important if you want to
combine \mkcomprange with other formatting macros which also need to parse
their htexti argument, such as \mkpageprefix. Simply nesting these commands
will not work as expected. Use the hpostproi argument to set up the processing chain
as follows:

\DeclareFieldFormat{postnote}{\mkcomprange[{\mkpageprefix[pagination]}]{#1
Note that \mkcomprange is executed ﬁrst, using \mkpageprefix as postprocessor. Also note that the hpostproi argument is wrapped in an additional pair
of braces. This is only required in this particular case to prevent LaTeX’s optional
argument scanner from getting confused by the nested brackets. The starred version
of this command diﬀers from the regular one in the way the hpostproi argument is
applied to a list of values. For example:
\mkcomprange[\mkpageprefix]{5, 123-129, 423-439}
\mkcomprange*[\mkpageprefix]{5, 123-129, 423-439}
will output:
pp. 5, 123-9, 423-39
p. 5, pp. 123-9, pp. 423-39
\mkfirstpage[hpostproi]{htexti}
\mkfirstpage*[hpostproi]{htexti}
This command, which is intended for use in ﬁeld formatting directives, will parse
its htexti argument for page ranges and print the start page of the range only. The
scanner recognizes \bibrangedash and hyphens as range dashes. Lists of ranges
delimited with \bibrangessep (Biber36 ) or commas/semicolons (BibTeX) are
also supported. If you want to hide a character from the list/range scanner for
some reason, wrap the character or the entire string in curly braces. The optional
hpostproi argument speciﬁes a macro to be used for post-processing the htexti. See
\mkcomprange on how to use this argument. The starred version of this command
diﬀers from the regular one in the way the hpostproi argument is applied to a list of
values. For example:
\mkfirstpage[\mkpageprefix]{5, 123-129, 423-439}
\mkfirstpage*[\mkpageprefix]{5, 123-129, 423-439}
will output:
pp. 5, 123, 423
p. 5, p. 123, p. 423

36

Biber will always convert commas/semicolon multi-range separators into \bibrangessep so that
it can be controlled in the style.

193

\rangelen{htexti}
This command will parse its argument as a range and return the length of the range.
It will return 0 for open-ended ranges.
\rangelen{5-10} returns ’5’
\rangelen{-10} returns ’0’
\rangelen{5-} returns ’0’
\rangelen{5} returns ’1’
This can be used as part of tests in styles which require, for example, ‘f’ as a suﬃx for
ranges of only two pages, for example, when a page range ‘36-37’ should be printed
as ‘36f’. This could be done using \ifnumcomp:
\DeclareNumChars{hcharactersi}
\DeclareNumChars*{hcharactersi}
This command conﬁgures the \ifnumeral, \ifnumerals, and \ifpages
tests from § 4.6.2. The setup will also aﬀect \iffieldnum, \iffieldnums,
\iffieldpages as well as \mkpageprefix and \mkpagetotal. The
hcharactersi argument is an undelimited list of characters which are to be considered
as being part of a number. The regular version of this command replaces the current
setting, the starred version appends its argument to the current list. The default
setting is:
\DeclareNumChars{.}
This means that a (section or other) number like ‘3.4.5’ will be considered as a number.
Note that Arabic and Roman numerals are detected by default, there is no need to
declare them explicitly.
\DeclareRangeChars{hcharactersi}
\DeclareRangeChars*{hcharactersi}
This command conﬁgures the \ifnumerals and \ifpages tests from § 4.6.2.
The setup will also aﬀect \iffieldnums and \iffieldpages as well as
\mkpageprefix and \mkpagetotal. The hcharactersi argument is an undelimited list of characters which are to be considered as range indicators. The regular
version of this command replaces the current setting, the starred version appends its
argument to the current list. The default setting is:
\DeclareRangeChars{~,;-+/}
This means that strings like ‘3–5’, ‘35+’, ‘8/9’ and so on will be considered as a
range by \ifnumerals and \ifpages. Non-range characters in such strings
are recognized as numbers. So strings like ‘3a–5a’ and ‘35b+’ are not deemed to be
ranges by default. See also §§ 2.3.10 and 3.12.3 for further details.

194

\DeclareRangeCommands{hcommandsi}
\DeclareRangeCommands*{hcommandsi}
This command is similar to \DeclareRangeChars, except that the hcommandsi
argument is an undelimited list of commands which are to be considered as range
indicators. The regular version of this command replaces the current setting, the
starred version appends its argument to the current list. The default list is rather
long and should cover all common cases; here is a shorter example:
\DeclareRangeCommands{\&\bibrangedash\textendash\textemdash\psq\psqq}
\DeclarePageCommands{hcommandsi}
\DeclarePageCommands*{hcommandsi}
This command is similar to \DeclareRangeCommands, except that it only
aﬀects the \ifpages and \iffieldpages tests but not \ifnumerals and
\iffieldnums. The default setting is:
\DeclarePageCommands{\pno\ppno}
\NumCheckSetup{hcodei}
Use this command to temporarily redeﬁne any commands which interfere with the
tests performed by \ifnumeral, \ifnumerals, and \ifpages from § 4.6.2.
The setup will also aﬀect \iffieldnum, \iffieldnums, \iffieldpages as
well as \mkpageprefix and \mkpagetotal. The hcodei will be executed in a
group by these commands. Since the above mentioned commands will expand the
string to be analyzed, it is possible to remove commands to be ignored by the tests
by making them expand to an empty string. See also §§ 2.3.10 and 3.12.3 for further
details.
\DeclareCaseLangs{hlanguagesi}
\DeclareCaseLangs*{hlanguagesi}
Deﬁnes the list of languages which are considered by the \MakeSentenceCase*
command as it converts a string to sentence case. The hlanguagesi argument is a
comma-separated list of babel/polyglossia languages identiﬁers. The regular
version of this command replaces the current setting, the starred version appends its
argument to the current list. The default setting is:
\DeclareCaseLangs{%
USenglish,UKenglish}
See the babel/polyglossia manuals and table 2 for a list of languages identiﬁers.
\BibliographyWarning{hmessagei}
This command is similar to \PackageWarning but prints the entry key of the
entry currently being processed in addition to the input line number. It may
be used in the bibliography as well as in citation commands. If the hmessagei
is fairly long, use \MessageBreak to include line breaks. Note that the standard \PackageWarning command does not provide a meaningful clue when
used in the bibliography since the input line number is the line on which the
\printbibliography command was given.

195

\RequireBiber[hseverityi]
This command is intended for use in cbx/bbx ﬁles and in the @preamble of bib
ﬁles. It checks the selected backend and warns if it is not Biber. The optional hseverityi
argument is an integer specifying the severity. The value 1 triggers an informational
message stating that Biber is recommended; 2 triggers a warning stating that Biber
is required and the style/bib ﬁle may not work properly; 3 triggers an error stating
that Biber is strictly required and the style/bib ﬁle will not work at all with any
other backend. If \RequireBiber is used multiple times, the highest hseverityi
takes precedence. cbx/bbx ﬁles on the one hand and the @preamble snippets of
all bib ﬁles on the other are tracked separately. If the optional hseverityi argument
is omitted, the default severity is 2 (warning).
\pagetrackertrue
These commands activate or deactivate the citation tracker locally (this will aﬀect the
\pagetrackerfalse
\iffirstonpage and \ifsamepage test from § 4.6.2). They are intended for
use in the deﬁnition of citation commands or anywhere in the document body. If a
citation command is to be excluded from page tracking, use \pagetrackerfalse
in the hprecodei argument of \DeclareCiteCommand. See § 4.3.1 for details.
Note that these commands have no eﬀect if page tracking has been disabled globally.
\citetrackertrue
These commands activate or deactivate all citation trackers locally (this will
\citetrackerfalse
aﬀect the \ifciteseen, \ifentryseen, \ifciteibid, and \ifciteidem
tests from § 4.6.2). They are intended for use in the deﬁnition of citation commands or anywhere in the document body. If a citation command is to be excluded from tracking, use \citetrackerfalse in the hprecodei argument of
\DeclareCiteCommand. See § 4.3.1 for details. Note that these commands have
no eﬀect if tracking has been disabled globally.
\backtrackertrue
These commands activate or deactivate the backref tracker locally. They are
\backtrackerfalse
intended for use in the deﬁnition of citation commands or anywhere in the document body. If a citation command is to be excluded from backtracking, use
\backtrackerfalse in the hprecodei argument of \DeclareCiteCommand.
Note that these commands have no eﬀect if the backref option has been not been
set globally.

4.7 Punctuation and Spacing
The Biblatex package provides elaborate facilities designed to manage and track
punctuation and spacing in the bibliography and in citations. These facilities work
on two levels. The high-level commands discussed in § 4.7.1 deal with punctuation
and whitespace inserted by the bibliography style between the individual segments
of a bibliography entry. The commands in §§ 4.7.2, 4.7.3, 4.7.4 work at a lower level.
They use TeX’s space factor and modiﬁed space factor codes to track punctuation
in a robust and eﬃcient way. This way it is possible to detect trailing punctuation marks within ﬁelds, not only those explicitly inserted between ﬁelds. The
same technique is also used for automatic capitalization of localization strings, see
\DeclareCapitalPunctuation in § 4.7.5 as well as § 4.8 for details. Note that
these facilities are only made available locally in citations and bibliographies. They
will not aﬀect any other part of a document.

196

4.7.1 Block and Unit Punctuation
The major segments of a bibliography entry are ‘blocks’ and ‘units’. A block is the
larger segment of the two, a unit is shorter or at most equal in length. For example,
the values of ﬁelds such as title or note usually form a unit which is separated
from subsequent data by a period or a comma. A block may comprise several ﬁelds
which are treated as separate units, for example publisher, location, and
year. The segmentation of an entry into blocks and units is at the discretion of the
bibliography style. An entry is segmented by inserting \newblock and \newunit
commands at suitable places and \finentry at the very end (see § 4.2.3 for an
\newblock Records the end of a block. This command does not print anything, it merely marks
the end of the block. The block delimiter \newblockpunct will be inserted by
a subsequent \printtext, \printfield, \printlist, \printnames, or
\bibstring command. You may use \newblock at suitable places without
having to worry about spurious blocks. A new block will only be started by the next
\printfield (or similar) command if this command prints anything. See § 4.11.7
for further details.
\newunit Records the end of a unit and puts the default delimiter \newunitpunct in the
punctuation buﬀer. This command does not print anything, it merely marks the
end of the unit. The punctuation buﬀer will be inserted by the next \printtext,
\printfield, \printlist, \printnames, or \bibstring command. You
may use \newunit after commands like \printfield without having to worry
about spurious punctuation and whitespace. The buﬀer will only be inserted by the
next \printfield or similar command if both ﬁelds are non-empty. This also
applies to \printtext, \printlist, \printnames, and \bibstring. See
§ 4.11.7 for further details.
\finentry Inserts \finentrypunct. This command should be used at the very end of every
bibliography entry.
\setunit{hpunctuationi}
\setunit*{hpunctuationi}
The \setunit command is similar to \newunit except that it uses hpunctuationi
instead of \newunitpunct. The starred variant diﬀers from the regular version in that it checks if the last \printtext, \printfield, \printlist,
\printnames, or \bibstring command did actually print anything. If not, it
does nothing.
\printunit{hpunctuationi}
\printunit*{hpunctuationi}
The \printunit command is similar to \setunit except that hpunctuationi
persists in the buﬀer until the next \printtext, \printfield, \printlist,
\printnames, or \bibstring command.
\setpunctfont{hcommandi}
This command, which is intended for use in ﬁeld formatting directives, provides an
alternative way of dealing with unit punctuation after a ﬁeld printed in a diﬀerent font
(for example, a title printed in italics). The standard LaTeX way of dealing with this is
adding a small amount of space, the so-called italic correction. This command allows

197

adapting the punctuation to the font of the preceding ﬁeld. The hcommandi should
be a text font command which takes one argument, such as \emph or \textbf.
This command will only aﬀect punctuation marks inserted by one of the commands
from § 4.7.3. The font adaption is applied to the next punctuation mark only and
will be reset automatically thereafter. If you want to reset it manually before it takes
eﬀect, issue \resetpunctfont. If the punctfont package option is disabled,
this command does nothing. Note that the \mkbibemph, \mkbibitalic and
\mkbibbold wrappers from § 4.10.4 incorporate this feature by default.
\resetpunctfont This command resets the unit punctuation font deﬁned with \setpunctfont
before it takes eﬀect. If the punctfont package option is disabled, this command
does nothing.
4.7.2 Punctuation Tests
The following commands may be used to test for preceding punctuation marks at
any point in citations and the bibliography.
\ifpunct{htruei}{hfalsei}
Executes htruei if preceded by any punctuation mark except for an abbreviation dot,
and hfalsei otherwise.
\ifterm{htruei}{hfalsei}
Executes htruei if preceded by a terminal punctuation mark, and hfalsei otherwise.
A terminal punctuation mark is any punctuation mark which has been registered
for automatic capitalization, either with \DeclareCapitalPunctuation or
by default, see § 4.7.5 for details. By default, this applies to periods, exclamation
marks, and question marks.
\ifpunctmark{hcharacteri}{htruei}{hfalsei}
Executes htruei if preceded by the punctuation mark hcharacteri, and hfalsei otherwise. The hcharacteri may be a comma, a semicolon, a colon, a period, an exclamation mark, a question mark, or an asterisk. Note that a period denotes an end-ofsentence period. Use the asterisk to test for the dot after an abbreviation. If this
command is used in a formatting directive for name lists, i. e., in the argument to
\DeclareNameFormat, the hcharacteri may also be an apostrophe.
The following commands are designed to prevent double punctuation marks. Bibliography and citation styles should always use these commands instead of literal punctuation marks. All \add... commands in this section automatically
remove preceding whitespace with \unspace (see § 4.7.4). Note that the behavior of all \add... commands discussed below is the package default, which is
restored whenever Biblatex switches languages. This behavior may be adjusted with
\DeclarePunctuationPairs from § 4.7.5.
\adddot Adds a period unless it is preceded by any punctuation mark. The purpose of this
command is inserting the dot after an abbreviation. Any dot inserted this way is
recognized as such by the other punctuation commands. This command may also be
used to turn a previously inserted literal period into an abbreviation dot.

198

\addcomma Adds a comma unless it is preceded by another comma, a semicolon, a colon, or a
period.
\addsemicolon Adds a semicolon unless it is preceded by a comma, another semicolon, a colon, or a
period.
\addcolon Adds a colon unless it is preceded by a comma, a semicolon, another colon, or a
period.
\addperiod Adds a period unless it is preceded by an abbreviation dot or any other punctuation
mark. This command may also be used to turn a previously inserted abbreviation
dot into a period, for example at the end of a sentence.
\addexclam Adds an exclamation mark unless it is preceded by any punctuation mark except for
an abbreviation dot.
\addquestion Adds a question mark unless it is preceded by any punctuation mark except for an
abbreviation dot.
\isdot Turns a previously inserted literal period into an abbreviation dot. In contrast to
\adddot, nothing is inserted if this command is not preceded by a period.
\nopunct Adds an internal marker which will cause the next punctuation command to print
nothing.
The following commands are designed to prevent spurious whitespace. Bibliography
and citation styles should always use these commands instead of literal whitespace.
In contrast to the commands in §§ 4.7.2 and 4.7.3, they are not restricted to citations
and the bibliography but available globally.
\unspace Removes preceding whitespace, i. e., removes all skips and penalties from the end
of the current horizontal list. This command is implicitly executed by all of the
following commands.
\addnbthinspace Adds a non-breakable thin space. This is similar to \, and \thinspace.
\addlowpenspace Adds a space penalized by the value of the lownamepenalty counter, see
§§ 3.9.3 and 4.10.3 for details.
\addhighpenspace Adds a space penalized by the value of the highnamepenalty counter, see
§§ 3.9.3 and 4.10.3 for details.
\addabbrvspace Adds a space penalized by the value of the abbrvpenalty counter, see §§ 3.9.3
and 4.10.3 for details.

199

counter, see §§ 3.9.3 and 4.10.3 for details.
\addslash Adds a breakable slash. This command diﬀers from the \slash command in the
LaTeX kernel in that a linebreak after the slash is not penalized at all.
Note that the commands in this section implicitly execute \unspace to remove
spurious whitespace, hence they may be used to override each other. For example,
you may use \addnbspace to transform a previously inserted interword space
into a non-breakable one and \addspace to turn a non-breakable space into a
breakable one.
4.7.5 Configuring Punctuation and Capitalization
The following commands conﬁgure various features related to punctuation and
automatic capitalization.
\DeclareAutoPunctuation{hcharactersi}
This command deﬁnes the punctuation marks to be considered by the citation commands as they scan ahead for punctuation. Note that hcharactersi is an undelimited
list of characters. Valid hcharactersi are period, comma, semicolon, colon, exclamation and question mark. The default setting is:
\DeclareAutoPunctuation{.,;:!?}
This deﬁnition is restored automatically whenever the autopunct package option is
set to true. Executing \DeclareAutoPunctuation{} is equivalent to setting
autopunct=false, i. e., it disables this feature.
\DeclareCapitalPunctuation{hcharactersi}
When Biblatex inserts localization strings, i. e., key terms such as ‘edition’ or ‘volume’,
it automatically capitalizes them after terminal punctuation marks. This command
deﬁnes the punctuation marks which will cause localization strings to be capitalized
if one of them precedes a string. Note that hcharactersi is an undelimited list of
characters. Valid hcharactersi are period, comma, semicolon, colon, exclamation and
question mark. The package default is:
\DeclareCapitalPunctuation{.!?}
Using \DeclareCapitalPunctuation with an empty argument is equivalent
to disabling automatic capitalization. Since this feature is language speciﬁc, this
command must be used in the argument to \DefineBibliographyExtras
(when used in the preamble) or \DeclareBibliographyExtras (when used
in a localization module). See §§ 3.8 and 4.9 for details. By default, strings are
capitalized after periods, exclamation marks, and question marks. All strings are
generally capitalized at the beginning of a paragraph (in fact whenever TeX is in
vertical mode).

200

\DeclarePunctuationPairs{hidentiﬁeri}{hcharactersi}
Use this command to declare valid pairs of punctuation marks. This will aﬀect
the punctuation commands discussed in § 4.7.3. For example, the description of
\addcomma states that this command adds a comma unless it is preceded by another
comma, a semicolon, a colon, or a period. In other words, commas after abbreviation
dots, exclamation marks, and question marks are permitted. These valid pairs are
declared as follows:
\DeclarePunctuationPairs{comma}{*!?}
The hidentiﬁeri selects the command to be conﬁgured. The identiﬁers correspond to
the names of the punctuation commands from § 4.7.3 without the \add preﬁx, i. e.,
valid hidentiﬁeri strings are dot, comma, semicolon, colon, period, exclam,
question. The hcharactersi argument is an undelimited list of punctuation marks.
Valid hcharactersi are comma, semicolon, colon, period, exclamation mark, question
mark, and asterisk. A period in the hcharactersi argument denotes an end-of-sentence
period, an asterisk the dot after an abbreviation. This is the default setup, which is
automatically restored whenever Biblatex switches languages and corresponds to
the behavior described in § 4.7.3:
\DeclarePunctuationPairs{dot}{}
\DeclarePunctuationPairs{comma}{*!?}
\DeclarePunctuationPairs{semicolon}{*!?}
\DeclarePunctuationPairs{colon}{*!?}
\DeclarePunctuationPairs{period}{}
\DeclarePunctuationPairs{exclam}{*}
\DeclarePunctuationPairs{question}{*}
Since this feature is language speciﬁc, \DeclarePunctuationPairs must be
used in the argument to \DefineBibliographyExtras (when used in the
preamble) or \DeclareBibliographyExtras (when used in a localization
module). See §§ 3.8 and 4.9 for details. Note that some localization modules may use
a setup which is diﬀerent from the package default.37
\DeclareQuotePunctuation{hcharactersi}
This command controls ‘American-style’ punctuation. The \mkbibquote wrapper
from § 4.10.4 can interact with the punctuation facilities discussed in §§ 4.7.1, 4.7.3,
4.7.4. Punctuation marks after \mkbibquote will be moved inside the quotes
if they have been registered with \DeclareQuotePunctuation. Note that
hcharactersi is an undelimited list of characters. Valid hcharactersi are period, comma,
semicolon, colon, exclamation and question mark. Here is an example:
\DeclareQuotePunctuation{.,}
Executing \DeclareQuotePunctuation{} is equivalent to disabling this feature. This is the package default. Since this feature is language speciﬁc, this command
must be used in the argument to \DefineBibliographyExtras (when used in
the preamble) or \DeclareBibliographyExtras (when used in a localization
module). See §§ 3.8 and 4.9 for details. See also § 3.10.1.
37

As of this writing, the american module uses diﬀerent settings for ‘American-style’ punctuation.

201

\uspunctuation A shorthand using the lower-level commands \DeclareQuotePunctuation
and \DeclarePunctuationPairs to activate ‘American-style’ punctuation.
See § 3.10.1 for details. This shorthand is provided for convenience only. The
eﬀective settings are applied by the lower-level commands.
\stdpunctuation Undoes the settings applied by \uspunctuation, restoring standard punctuation. As standard punctuation is the default setting, you only need this command
to override a previously executed \uspunctuation command. See § 3.10.1 for
details.
4.7.6 Correcting Punctuation Tracking
The facilities for punctuation tracking and automatic capitalization are very reliable under normal circumstances, but there are always marginal cases which may
require manual intervention. Typical cases are localization strings printed as the
ﬁrst word in a footnote (which is usually treated as the beginning of a paragraph as
far as capitalization is concerned, but TeX is not in vertical mode at this point) or
punctuation after periods which are not really end-of-sentence periods (for example,
after an ellipsis like “[…]” a command such as \addperiod would do nothing
since parentheses and brackets are transparent to the punctuation tracker). In such
cases, use the following commands in bibliography and citation styles to mark the
beginning or middle of a sentence if and where required:
\bibsentence This command marks the beginning of a sentence. A localization string immediately
after this command will be capitalized and the punctuation tracker is reset, i. e., this
command hides all preceding punctuation marks from the punctuation tracker and
enforces capitalization.
\midsentence This command marks the middle of a sentence. A localization string immediately
after this command will not be capitalized and the punctuation tracker is reset, i. e.,
this command hides all preceding punctuation marks from the punctuation tracker
and suppresses capitalization.
\midsentence* The starred variant of \midsentence diﬀers from the regular one in that a preceding abbreviation dot is not hidden from the the punctuation tracker, i. e., any code
after \midsentence* will see a preceding abbreviation dot. All other punctuation
marks are hidden from the punctuation tracker and capitalization is suppressed.

4.8 Localization Strings
Localization strings are key terms such as ‘edition’ or ‘volume’ which are automatically translated by Biblatex’s localization modules. See § 4.9 for an overview and
§ 4.9.2 for a list of all strings supported by default. The commands in this section are
used to print the localized term.
\bibstring[hwrapperi]{hkeyi}
Prints the localization string hkeyi, where hkeyi is an identiﬁer in lowercase letters
(see § 4.9.2). The string will be capitalized as required, see § 4.7.5 for details. Depending on the abbreviate package option from § 3.1.2.1, \bibstring prints
the short or the long version of the string. If localization strings are nested, i. e., if
\bibstring is used in another string, it will behave like \bibxstring. If the
hwrapperi argument is given, the string is passed to the hwrapperi for formatting.
This is intended for font commands such as \emph.

202

\biblstring[hwrapperi]{hkeyi}
Similar to \bibstring but always prints the long string, ignoring the
abbreviate option.
\bibsstring[hwrapperi]{hkeyi}
Similar to \bibstring but always prints the short string, ignoring the
abbreviate option.
\bibcpstring[hwrapperi]{hkeyi}
Similar to \bibstring but the term is always capitalized.
\bibcplstring[hwrapperi]{hkeyi}
Similar to \biblstring but the term is always capitalized.
\bibcpsstring[hwrapperi]{hkeyi}
Similar to \bibsstring but the term is always capitalized.
\bibucstring[hwrapperi]{hkeyi}
Similar to \bibstring but the whole term is uppercased.
\bibuclstring[hwrapperi]{hkeyi}
Similar to \biblstring but the whole term is uppercased.
\bibucsstring[hwrapperi]{hkeyi}
Similar to \bibsstring but the whole term is uppercased.
\biblcstring[hwrapperi]{hkeyi}
Similar to \bibstring but the whole term is lowercased.
\biblclstring[hwrapperi]{hkeyi}
Similar to \biblstring but the whole term is lowercased.
\biblcsstring[hwrapperi]{hkeyi}
Similar to \bibsstring but the whole term is lowercased.
\bibxstring{hkeyi}
A simpliﬁed but expandable version of \bibstring. Note that this variant does
not capitalize automatically, nor does it hook into the punctuation tracker. It is
intended for special cases in which strings are nested or an expanded localization
string is required in a test.
\bibxlstring[hwrapperi]{hkeyi}
Similar to \bibxstring but always uses the long string, ignoring the
abbreviate option.
\bibxsstring[hwrapperi]{hkeyi}
Similar to \bibxstring but always uses the short string, ignoring the
abbreviate option.

203

\mainlang
Switches from the current language to the main document language. This can be
used the hwrapperi argument in the localization string commands above.

4.9 Localization Modules
A localization module provides translations for key terms such as ‘edition’ or ‘volume’
as well as deﬁnitions for language speciﬁc features such as the date format and
ordinals. These deﬁnitions are provided in ﬁles with the suﬃx lbx. The base name
of the ﬁle must be a language name known to the babel/polyglossia packages.
The lbx ﬁles may also be used to map babel/polyglossia language names to
the backend modules of the Biblatex package. All localization modules are loaded on
demand in the document body. Note that the contents of the ﬁle are processed in a
group and that the category code of the character @ is temporarily set to ‘letter’.
4.9.1 Localization Commands
The user-level versions of the localization commands were already introduced in
§ 3.8. When used in lbx ﬁles, however, the syntax of localization commands is
diﬀerent from the user syntax in the preamble and the conﬁguration ﬁle. When used
in localization ﬁles, there is no need to specify the hlanguagei because the mapping
of strings to a language is already provided by the name of the lbx ﬁle.
\DeclareBibliographyStrings{hdeﬁnitionsi}
This command is only available in lbx ﬁles. It is used to deﬁne localization strings.
The hdeﬁnitionsi consist of hkeyi=hvaluei pairs which assign an expression to an
identiﬁer. A complete list of all keys supported by default is given is § 4.9.2. Note that
the syntax of the value is diﬀerent in lbx ﬁles. The value assigned to a key consists
of two expressions, each of which is wrapped in an additional pair of brackets. This
is best shown by example:
\DeclareBibliographyStrings{%
bibliography = {{Bibliography}{Bibliography}},
shorthands
= {{List of Abbreviations}{Abbreviations}},
editor
= {{editor}{ed.}},
editors
= {{editors}{eds.}},
}
The ﬁrst value is the long, written out expression, the second one is an abbreviated
or short form. Both strings must always be given even though they may be identical
if an expression is always (or never) abbreviated. Depending on the setting of the
abbreviate package option (see § 3.1.2.1), Biblatex selects one expression when
loading the lbx ﬁle. There is also a special key named inherit which copies the
strings from a diﬀerent language. This is intended for languages which only diﬀer in
a few expressions, such as German and Austrian or American and British English.
For example, here are the complete deﬁnitions for Austrian:
\DeclareBibliographyStrings{%
inherit
= {german},
january
= {{J\”anner}{J\”an.}},
}

204

The above examples are slightly simpliﬁed. Real localization ﬁles should use the
punctuation and formatting commands discussed in §§ 4.7.3 and 3.9 instead of literal
punctuation. Here is an excerpt from a real localization ﬁle:
bibliography
shorthands
editor
editors
byeditor
mathesis

=
=
=
=
=
=

{{Bibliography}{Bibliography}},
{{List of Abbreviations}{Abbreviations}},

Note the handling of abbreviation dots, the spacing in abbreviated expressions, and
the capitalization in the example above. All expressions should be capitalized as
they usually are when used in the middle of a sentence. The Biblatex package will
automatically capitalize the ﬁrst word when required at the beginning of a sentence,
see \DeclareCapitalPunctuation in § 4.7.5 for details. Expressions intended
for use in headings are special. They should be capitalized in a way that is suitable
for titling and should not be abbreviated (but they may have a short form).
\InheritBibliographyStrings{hlanguagei}
This command is only available in lbx ﬁles. It copies the localization strings for
hlanguagei to the current language, as speciﬁed by the name of the lbx ﬁle.
\DeclareBibliographyExtras{hcodei}
This command is only available in lbx ﬁles. It is used to adapt language speciﬁc
features such as the date format and ordinals. The hcodei, which may be arbitrary
LaTeX code, will usually consist of redeﬁnitions of the formatting commands from
§ 4.10.2.
\UndeclareBibliographyExtras{hcodei}
This command is only available in lbx ﬁles. It is used to restore any formatting
commands modiﬁed with \DeclareBibliographyExtras. If a redeﬁned command is included in § 4.10.2, there is no need to restore its previous deﬁnition since
these commands are localized by all language modules anyway.
\InheritBibliographyExtras{hlanguagei}
This command is only available in lbx ﬁles. It copies the bibliography extras for
hlanguagei to the current language, as speciﬁed by the name of the lbx ﬁle.
\DeclareHyphenationExceptions{htexti}
This command corresponds to \DefineHyphenationExceptions from § 3.8.
The diﬀerence is that it is only available in lbx ﬁles and that the hlanguagei argument
is omitted. The hyphenation exceptions will aﬀect the language of the lbx ﬁle
currently being processed.

205

\DeclareRedundantLanguages{hlanguage, language, …i}{hlangid, langid, …i}
This command provides the language mappings required by the clearlang option
from § 3.1.2.1. The hlanguagei is the string given in the language ﬁeld (without
the optional lang preﬁx); hlangidi is babel/polyglossia’s language identiﬁer, as given in the optional argument of \usepackage when loading babel
or the argument of \setdefaultlanguage or \setotherlanguages when
using polyglossia. This command may be used in lbx ﬁles or in the document
preamble. Here are some examples:
\DeclareRedundantLanguages{french}{french}
\DeclareRedundantLanguages{german}{german,ngerman,austrian,naustrian}
\DeclareRedundantLanguages{english,american}{english,american,british,
Note that this feature needs to be enabled globally with the clearlang option
from § 3.1.2.1. If it is disabled, all mappings will be ignored. If the hlangidi parameter
is blank, Biblatex will clear the mappings for the corresponding hlanguagei, i. e., the
feature will be disabled for this hlanguagei only.
\DeclareLanguageMapping{hlanguagei}{hﬁlei}
This command maps a babel/polyglossia language identiﬁer to an lbx ﬁle.
The hlanguagei must be a language name known to the babel/polyglossia
package, i. e., one of the identiﬁers listed in table 2. The hﬁlei argument is the name
of an alternative lbx ﬁle without the .lbx suﬃx. Declaring the same mapping more
than once is possible. Subsequent declarations will simply overwrite any previous
ones. This command may only be used in the preamble. See § 4.11.8 for further
details.
\NewBibliographyString{hkeyi}
This command, which may be used in the preamble (including cbx and bbx ﬁles)
as well as in lbx ﬁles, declares new localization strings, i. e., it initializes a new
hkeyi to be used in the hdeﬁnitionsi of \DefineBibliographyStrings or
\DeclareBibliographyStrings. The hkeyi argument may also be a commaseparated list of key names. When used in an lbx, the hkeyi is initialized only for
the language speciﬁed by the name of the lbx ﬁle. The keys listed in § 4.9.2 are
deﬁned by default.
4.9.2 Localization Keys
The localization keys in this section are deﬁned by default and covered by the
localization ﬁles which come with Biblatex. Note that these strings are only available
in citations, the bibliography and bibliography lists. All expressions should be
capitalized as they usually are when used in the middle of a sentence. Biblatex will
capitalize them automatically at the beginning of a sentence. The only exceptions to
these rules are the three strings intended for use in headings.
The following strings are special because they are intended for use in headings and
made available globally via macros. For this reason, they should be capitalized for
use in headings and they must not include any local commands which are part of
Biblatex’s author interface.

206

bibliography

The term ‘bibliography’, also available as \bibname.

references The term ‘references’, also available as \refname.
shorthands

The term ‘list of shorthands’ or ‘list of abbreviations’, also available as
\biblistname.
4.9.2.2 Roles, Expressed as Functions
The following keys refer to roles which are expressed as a function (‘editor’, ‘translator’) rather than as an action (‘edited by’, ‘translated by’).

editor The term ‘editor’, referring to the main editor. This is the most generic editorial role.
editors
compiler

The plural form of editor.
The term ‘compiler’, referring to an editor whose task is to compile a work.

compilers The plural form of compiler.
founder The term ‘founder’, referring to a founding editor.
founders The plural form of founder.
continuator

continuators

An expression like ‘continuator’, ‘continuation’, or ‘continued’, referring to a past
editor who continued the work of the founding editor but was subsequently
replaced by the current editor.
The plural form of continuator.

redactor The term ‘redactor’, referring to a secondary editor.
redactors The plural form of redactor.
reviser The term ‘reviser’, referring to a secondary editor.
revisers The plural form of reviser.
collaborator A term like ‘collaborator’, ‘collaboration’, ‘cooperator’, or ‘cooperation’, referring to

a secondary editor.
collaborators
translator
translators

The plural form of collaborator.
The term ‘translator’.
The plural form of translator.

commentator The term ‘commentator’, referring to the author of a commentary to a work.
commentators The plural form of commentators.
annotator The term ‘annotator’, referring to the author of annotations to a work.
annotators

The plural form of annotators.
4.9.2.3 Concatenated Editor Roles, Expressed as Functions
The following keys are similar in function to editor, translator, etc. They are
used to indicate additional roles of the editor, e. g., ‘editor and translator’, ‘editor and
foreword’.

editortr Used if editor/translator are identical.
editorstr

The plural form of editortr.

editorco

Used if editor/commentator are identical.

editorsco

The plural form of editorco.

207

editoran Used if editor/annotator are identical.
editorsan The plural form of editoran.
editorin Used if editor/introduction are identical.
editorsin
editorfo

The plural form of editorin.
Used if editor/foreword are identical.

editorsfo The plural form of editorfo.
editoraf
editorsaf

Used if editor/aftword are identical.
The plural form of editoraf.
Keys for editor/translator/hrolei combinations:

editortrco

Used if editor/translator/commentator are identical.

editorstrco The plural form of editortrco.
editortran Used if editor/translator/annotator are identical.
editorstran The plural form of editortran.
editortrin
editorstrin
editortrfo

Used if editor/translator/introduction are identical.
The plural form of editortrin.
Used if editor/translator/foreword are identical.

editorstrfo The plural form of editortrfo.
editortraf
editorstraf

Used if editor/translator/aftword are identical.
The plural form of editortraf.
Keys for editor/commentator/hrolei combinations:

editorcoin Used if editor/commentator/introduction are identical.
editorscoin
editorcofo

The plural form of editorcoin.
Used if editor/commentator/foreword are identical.

editorscofo The plural form of editorcofo.
editorcoaf Used if editor/commentator/aftword are identical.
editorscoaf The plural form of editorcoaf.

Keys for editor/annotator/hrolei combinations:
editoranin Used if editor/annotator/introduction are identical.
editorsanin
editoranfo
editorsanfo
editoranaf
editorsanaf

The plural form of editoranin.
Used if editor/annotator/foreword are identical.
The plural form of editoranfo.
Used if editor/annotator/aftword are identical.
The plural form of editoranaf.
Keys for editor/translator/commentator/hrolei combinations:

editortrcoin Used if editor/translator/commentator/introduction are identical.
editorstrcoin The plural form of editortrcoin.

208

editortrcofo
editorstrcofo

Used if editor/translator/commentator/foreword are identical.
The plural form of editortrcofo.

editortrcoaf Used if editor/translator/commentator/aftword are identical.
editorstrcoaf The plural form of editortrcoaf.

Keys for editor/annotator/commentator/hrolei combinations:
editortranin Used if editor/annotator/commentator/introduction are identical.
editorstranin
editortranfo

The plural form of editortranin.
Used if editor/annotator/commentator/foreword are identical.

editorstranfo The plural form of editortranfo.
editortranaf
editorstranaf

Used if editor/annotator/commentator/aftword are identical.
The plural form of editortranaf.
4.9.2.4 Concatenated Translator Roles, Expressed as Functions
The following keys are similar in function to translator. They are used to indicate
additional roles of the translator, e. g., ‘translator and commentator’, ‘translator and
introduction’.

translatorco Used if translator/commentator are identical.
translatorsco The plural form of translatorco.
translatoran
translatorsan
translatorin

Used if translator/annotator are identical.
The plural form of translatoran.
Used if translator/introduction are identical.

translatorsin The plural form of translatorin.
translatorfo Used if translator/foreword are identical.
translatorsfo

The plural form of translatorfo.

translatoraf Used if translator/aftword are identical.
translatorsaf The plural form of translatoraf.

Keys for translator/commentator/hrolei combinations:
translatorcoin

Used if translator/commentator/introduction are identical.

translatorscoin The plural form of translatorcoin.
translatorcofo
translatorscofo
translatorcoaf
translatorscoaf

Used if translator/commentator/foreword are identical.
The plural form of translatorcofo.
Used if translator/commentator/aftword are identical.
The plural form of translatorcoaf.
Keys for translator/annotator/hrolei combinations:

translatoranin
translatorsanin

Used if translator/annotator/introduction are identical.
The plural form of translatoranin.

translatoranfo Used if translator/annotator/foreword are identical.
translatorsanfo The plural form of translatoranfo.
translatoranaf

Used if translator/annotator/aftword are identical.

translatorsanaf The plural form of translatoranaf.

209

4.9.2.5 Roles, Expressed as Actions
The following keys refer to roles which are expressed as an action (‘edited by’,
‘translated by’) rather than as a function (‘editor’, ‘translator’).
byauthor
byeditor
bycompiler

The expression ‘[created] by hnamei’.
The expression ‘edited by hnamei’.
The expression ‘compiled by hnamei’.

byfounder The expression ‘founded by hnamei’.
bycontinuator The expression ‘continued by hnamei’.
byredactor The expression ‘redacted by hnamei’.
byreviser The expression ‘revised by hnamei’.
byreviewer
bycollaborator

The expression ‘reviewed by hnamei’.
An expression like ‘in collaboration with hnamei’ or ‘in cooperation with hnamei’.

bytranslator The expression ‘translated by hnamei’ or ‘translated from hlanguagei by hnamei’.
bycommentator
byannotator

The expression ‘commented by hnamei’.
The expression ‘annotated by hnamei’.
4.9.2.6 Concatenated Editor Roles, Expressed as Actions
The following keys are similar in function to byeditor, bytranslator, etc.
They are used to indicate additional roles of the editor, e. g., ‘edited and translated
by’, ‘edited and furnished with an introduction by’, ‘edited, with a foreword, by’.

byeditortr

Used if editor/translator are identical.

byeditorco Used if editor/commentator are identical.
byeditoran

Used if editor/annotator are identical.

byeditorin Used if editor/introduction are identical.
byeditorfo Used if editor/foreword are identical.
byeditoraf Used if editor/aftword are identical.

Keys for editor/translator/hrolei combinations:
byeditortrco

Used if editor/translator/commentator are identical.

byeditortran

Used if editor/translator/annotator are identical.

byeditortrin Used if editor/translator/introduction are identical.
byeditortrfo

Used if editor/translator/foreword are identical.

byeditortraf Used if editor/translator/aftword are identical.

Keys for editor/commentator/hrolei combinations:
byeditorcoin

Used if editor/commentator/introduction are identical.

byeditorcofo Used if editor/commentator/foreword are identical.
byeditorcoaf

Used if editor/commentator/aftword are identical.
Keys for editor/annotator/hrolei combinations:

210

byeditoranin

Used if editor/annotator/introduction are identical.

byeditoranfo Used if editor/annotator/foreword are identical.
byeditoranaf Used if editor/annotator/aftword are identical.

Keys for editor/translator/commentator/hrolei combinations:
byeditortrcoin

Used if editor/translator/commentator/introduction are identical.

byeditortrcofo Used if editor/translator/commentator/foreword are identical.
byeditortrcoaf

Used if editor/translator/commentator/aftword are identical.
Keys for editor/translator/annotator/hrolei combinations:

byeditortranin

Used if editor/annotator/commentator/introduction are identical.

byeditortranfo Used if editor/annotator/commentator/foreword are identical.
byeditortranaf Used if editor/annotator/commentator/aftword are identical.

4.9.2.7 Concatenated Translator Roles, Expressed as Actions
The following keys are similar in function to bytranslator. They are used
to indicate additional roles of the translator, e. g., ‘translated and commented by’,
‘translated and furnished with an introduction by’, ‘translated, with a foreword, by’.
bytranslatorco

Used if translator/commentator are identical.

bytranslatoran

Used if translator/annotator are identical.

bytranslatorin Used if translator/introduction are identical.
bytranslatorfo

Used if translator/foreword are identical.

bytranslatoraf Used if translator/aftword are identical.

Keys for translator/commentator/hrolei combinations:
bytranslatorcoin

Used if translator/commentator/introduction are identical.

bytranslatorcofo Used if translator/commentator/foreword are identical.
bytranslatorcoaf

Used if translator/commentator/aftword are identical.
Keys for translator/annotator/hrolei combinations:

bytranslatoranin Used if translator/annotator/introduction are identical.
bytranslatoranfo

Used if translator/annotator/foreword are identical.

bytranslatoranaf Used if translator/annotator/aftword are identical.

4.9.2.8 Roles, Expressed as Objects
Roles which are related to supplementary material may also be expressed as objects
(‘with a commentary by’) rather than as functions (‘commentator’) or as actions
(‘commented by’).
withcommentator The expression ‘with a commentary by hnamei’.
withannotator

The expression ‘with annotations by hnamei’.

withintroduction The expression ‘with an introduction by hnamei’.
withforeword

The expression ‘with a foreword by hnamei’.

withafterword The expression ‘with an afterword by hnamei’.

211

4.9.2.9 Supplementary Material
commentary The term ‘commentary’.
annotations The term ‘annotations’.
introduction The term ‘introduction’.
foreword

The term ‘foreword’.

afterword The term ‘afterword’.

4.9.2.10 Publication Details
volume The term ‘volume’, referring to a book.
volumes
involumes

The plural form of volume.
The term ‘in’, as used in expressions like ‘in hnumber of volumesi volumes’.

jourvol

The term ‘volume’, referring to a journal.

jourser

The term ‘series’, referring to a journal.

book The term ‘book’, referring to a document division.
part The term ‘part’, referring to a part of a book or a periodical.
issue The term ‘issue’, referring to a periodical.
newseries

The expression ‘new series’, referring to a journal.

oldseries The expression ‘old series’, referring to a journal.
edition
in

The term ‘edition’.
The term ‘in’, referring to the title of a work published as part of another one, e. g.,
‘htitle of articlei in htitle of journali’.

inseries The term ‘in’, as used in expressions like ‘volume hnumberi in hname of seriesi’.
ofseries

The term ‘of’, as used in expressions like ‘volume hnumberi of hname of seriesi’.

number

The term ‘number’, referring to an issue of a journal.

chapter

The term ‘chapter’, referring to a chapter in a book.

version The term ‘version’, referring to a revision number.
reprint The term ‘reprint’.
reprintof

The expression ‘reprint of htitlei’.

reprintas

The expression ‘reprinted as htitlei’.

reprintfrom

translationof

The expression ‘translation of htitlei’.

translationas The expression ‘translated as htitlei’.
translationfrom

The expression ‘translated from [the] hlanguagei’.

reviewof The expression ‘review of htitlei’.
origpubas The expression ‘originally published as htitlei’.
origpubin The expression ‘originally published in hyeari’.
astitle The term ‘as’, as used in expressions like ‘published by hpublisheri as htitlei’.
bypublisher

212

4.9.2.11 Publication State
inpreparation The expression ‘in preparation’ (the manuscript is being prepared for publication).
submitted

The expression ‘submitted’ (the manuscript has been submitted to a journal or
conference).

forthcoming The expression ‘forthcoming’ (the manuscript has been accepted by a press or

journal).
inpress

The expression ‘in press’ (the manuscript is fully copyedited and out of the author’s
hands; it is in the ﬁnal stages of the production process).

prepublished The expression ‘pre-published’ (the manuscript is published in a preliminary form or

location, such as online version in advance of print publication).
4.9.2.12 Pagination
page
pages

The term ‘page’.
The plural form of page.

column The term ‘column’, referring to a column on a page.
columns The plural form of column.
section The term ‘section’, referring to a document division (usually abbreviated as §).
sections
paragraph

The plural form of section (usually abbreviated as §§).
The term ‘paragraph’ (i. e., a block of text, not to be confused with section).

paragraphs The plural form of paragraph.
verse
verses

The term ‘verse’ as used when referring to a work which is cited by verse numbers.
The plural form of verse.

line The term ‘line’ as used when referring to a work which is cited by line numbers.
lines

The plural form of line.
4.9.2.13 Types
The following keys are typically used in the type ﬁeld of @thesis, @report,
@misc, and other entries:

mathesis An expression equivalent to the term ‘Master’s thesis’.
phdthesis The term ‘PhD thesis’, ‘PhD dissertation’, ‘doctoral thesis’, etc.
candthesis An expression equivalent to the term ‘Candidate thesis’. Used for ‘Candidate’

degrees that have no clear equivalent to the Master’s or doctoral level.
techreport

The term ‘technical report’.

resreport

The term ‘research report’.

software

The term ‘computer software’.

datacd The term ‘data cd’ or ‘cd-rom’.
audiocd The term ‘audio cd’.

213

4.9.2.14 Miscellaneous
nodate The term to use in place of a date when there is no date for an entry e. g., ‘n.d.’
and
andothers

The term ‘and’, as used in a list of authors or editors, for example.
The expression ‘and others’ or ‘et alii’, used to mark the truncation of a name list.

andmore Like andothers but used to mark the truncation of a literal list.

4.9.2.15 Labels
The following strings are intended for use as labels, e. g., ‘Address: hurli’ or ‘Abstract:
habstracti’.
url

urlfrom An expression like ‘available from hurli’ or ‘available at hurli’.
urlseen
file
library

An expression like ‘accessed on hdatei’, ‘retrieved on hdatei’, ‘visited on hdatei’,
referring to the access date of an online resource.
The term ‘ﬁle’.
The term ‘library’.

abstract The term ‘abstract’.
annotation

The term ‘annotations’.
4.9.2.16 Citations
Traditional scholarly expressions used in citations:

idem The term equivalent to the Latin ‘idem’ (‘the same [person]’).
idemsf

The feminine singular form of idem.

idemsm The masculine singular form of idem.
idemsn The neuter singular form of idem.
idempf

The feminine plural form of idem.

idempm The masculine plural form of idem.
idempn The neuter plural form of idem.
idempp

The plural form of idem suitable for a mixed gender list of names.

ibidem

The term equivalent to the Latin ‘ibidem’ (‘in the same place’).

opcit

The term equivalent to the Latin term ‘opere citato’ (‘[in] the work [already] cited’).

loccit

The term equivalent to the Latin term ‘loco citato’ (‘[at] the place [already] cited’).

confer

The term equivalent to the Latin ‘confer’ (‘compare’).

sequens The term equivalent to the Latin ‘sequens’ (‘[and] the following [page]’), as used to

indicate a range of two pages when only the starting page is provided (e. g., ‘25 sq.’
or ‘25 f.’ instead of ‘25–26’).
sequentes

passim

The term equivalent to the Latin ‘sequentes’ (‘[and] the following [pages]’), as used
to indicate an open-ended range of pages when only the starting page is provided
(e. g., ‘25 sqq.’ or ‘25 ﬀ.’).
The term equivalent to the Latin ‘passim’ (‘throughout’, ‘here and there’,
‘scatteredly’).

214

Other expressions frequently used in citations:
see
seealso

The term ‘see’.

seenote An expression like ‘see note hfootnotei’ or ‘as in hfootnotei’, used to refer to a

previous footnote in a citation.
backrefpage An expression like ‘see page hpagei’ or ‘cited on page hpagei’, used to introduce

back references in the bibliography.
backrefpages
quotedin

The plural form of backrefpage, e. g., ‘see pages hpagesi’ or ‘cited on pages
hpagesi’.
An expression like ‘quoted in hcitationi’, used when quoting a passage which was
already a quotation in the cited work.

citedas An expression like ‘henceforth cited as hshorthandi’, used to introduce a shorthand

in a citation.
thiscite

The expression used in some verbose citation styles to diﬀerentiate between the
page range of the cited item (typically an article in a journal, collection, or
conference proceedings) and the page number the citation refers to. For example:
“Author, Title, in: Book, pp. 45–61, thiscite p. 52.”
4.9.2.17 Month Names

january

The name ‘January’.

february The name ‘February’.
march The name ‘March’.
april

The name ‘April’.

may

The name ‘May’.

june The name ‘June’.
july The name ‘July’.
august The name ‘August’.
september The name ‘September’.
october
november

The name ‘October’.
The name ‘November’.

december The name ‘December’.

4.9.2.18 Language Names
langamerican The language ‘American’ or ‘American English’.
langbrazilian

The language ‘Brazilian’ or ‘Brazilian Portuguese’.

langcatalan The language ‘Catalan’.
langcroatian The language ‘Croatian’.
langczech The language ‘Czech’.
langdanish

The language ‘Danish’.

langdutch The language ‘Dutch’.
langenglish The language ‘English’.

215

langfinnish

The language ‘Finnish’.

langfrench The language ‘French’.
langgerman The language ‘German’.
langgreek

The language ‘Greek’.

langitalian

The language ‘Italian’.

langlatin
langnorwegian
langpolish
langportuguese

The language ‘Latin’.
The language ‘Norwegian’.
The language ‘Polish’.
The language ‘Portuguese’.

langrussian

The language ‘Russian’.

langslovene

The language ‘Slovene’.

langspanish The language ‘Spanish’.
langswedish The language ‘Swedish’.

The following strings are intended for use in phrases like ‘translated from [the]
English by htranslatori’:
fromamerican

The expression ‘from [the] American’ or ‘from [the] American English’.

frombrazilian

The expression ‘from [the] Brazilian’ or ‘from [the] Brazilian Portuguese’.

fromcatalan
fromczech
fromcroatian

The expression ‘from [the] Catalan’.
The expression ‘from [the] Czech’.
The expression ‘from [the] Croatian’.

fromdanish The expression ‘from [the] Danish’.
fromdutch The expression ‘from [the] Dutch’.
fromenglish

The expression ‘from [the] English’.

fromfinnish The expression ‘from [the] Finnish’.
fromfrench

The expression ‘from [the] French’.

fromgerman The expression ‘from [the] German’.
fromgreek

The expression ‘from [the] Greek’.

fromitalian

The expression ‘from [the] Italian’.

fromlatin The expression ‘from [the] Latin’.
fromnorwegian The expression ‘from [the] Norwegian’.
frompolish The expression ‘from [the] Polish’.
fromportuguese The expression ‘from [the] Portuguese’.
fromrussian The expression ‘from [the] Russian’.
fromslovene

The expression ‘from [the] Slovene’.

fromspanish

The expression ‘from [the] Spanish’.

fromswedish

The expression ‘from [the] Swedish’.

216

4.9.2.19 Country Names
Country names are localized by using the string country plus the iso-3166 country
code as the key. The short version of the translation should be the iso-3166 country
code. Note that only a small number of country names is deﬁned by default, mainly
to illustrate this scheme. These keys are used in the location list of @patent
entries but they may be useful for other purposes as well.
countryde

The name ‘Germany’, abbreviated as DE.

countryeu

The name ‘European Union’, abbreviated as EU.

countryep Similar to countryeu but abbreviated as EP. This is intended for patent entries.
countryfr The name ‘France’, abbreviated as FR.
countryuk The name ‘United Kingdom’, abbreviated (according to iso-3166) as GB.
countryus The name ‘United States of America’, abbreviated as US.

4.9.2.20 Patents and Patent Requests
Strings related to patents are localized by using the term patent plus the iso-3166
country code as the key. Note that only a small number of patent keys is deﬁned by
default, mainly to illustrate this scheme. These keys are used in the type ﬁeld of
@patent entries.
patent

The generic term ‘patent’.

patentde

The expression ‘German patent’.

patenteu

The expression ‘European patent’.

patentfr

The expression ‘French patent’.

patentuk

The expression ‘British patent’.

patentus

The expression ‘U.S. patent’.
Patent requests are handled in a similar way, using the string patreq as the base
name of the key:

patreq

The generic term ‘patent request’.

patreqde The expression ‘German patent request’.
patreqeu

The expression ‘European patent request’.

patreqfr

The expression ‘French patent request’.

patrequk

The expression ‘British patent request’.

patrequs

The expression ‘U.S. patent request’.

4.10 Formatting Commands
This section corresponds to § 3.9 in the user part of this manual. Bibliography
and citation styles should incorporate the commands and facilities discussed in this
section in order to provide a certain degree of high-level conﬁgurability. Users should
not be forced to write new styles if all they want to do is modify the spacing in the
bibliography or the punctuation used in citations.

217

4.10.1 User-definable Commands and Hooks
This section corresponds to § 3.9.1 in the user part of the manual. The commands
and hooks discussed here are meant to be redeﬁned by users, but bibliography and
citation styles may provide a default deﬁnition which is diﬀerent from the package
default. These commands are deﬁned in biblatex.def. Note that all commands
starting with \mk… take one mandatory argument.
\bibnamedelima \BiberOnlyMark This delimiter controls the spacing between the elements
which make up a name part. It is inserted automatically by the backend after the
ﬁrst name element if the element is less than three characters long and before the
last element. The default deﬁnition is \addhighpenspace, i. e., a space penalized
by the value of the highnamepenalty counter (§ 3.9.3). Please refer to § 3.12.4
for further details.
\bibnamedelimb \BiberOnlyMark This delimiter controls the spacing between the elements
which make up a name part. It is inserted automatically by the backend between all
name elements where \bibnamedelima does not apply. The default deﬁnition is
\addlowpenspace, i. e., a space penalized by the value of the lownamepenalty
counter (§ 3.9.3). Please refer to § 3.12.4 for further details.
\bibnamedelimc This delimiter controls the spacing between name parts. The default name formats
use it between the name preﬁx and the last name if useprefix = true. The
default deﬁnition is \addhighpenspace, i. e., a space penalized by the value of
the highnamepenalty counter (§ 3.9.3). Please refer to § 3.12.4 for further details.
\bibnamedelimd This delimiter controls the spacing between name parts. The default name formats
use it between all name parts where \bibnamedelimc does not apply. The default deﬁnition is \addlowpenspace, i. e., a space penalized by the value of the
lownamepenalty counter (§ 3.9.3). Please refer to § 3.12.4 for further details.
\bibnamedelimi \BiberOnlyMark This delimiter replaces \bibnamedelima/b after initials.
Note that this only applies to initials given as such in the bib ﬁle, not to the initials
automatically generated by Biblatex which use their own set of delimiters.
\bibinitperiod \BiberOnlyMark The punctuation inserted automatically by the backend after
all initials unless \bibinithyphendelim applies. The default deﬁnition is a
\bibinitdelim \BiberOnlyMark The spacing inserted automatically by the backend between
multiple initials unless \bibinithyphendelim applies. The default deﬁnition is
an unbreakable interword space. Please refer to § 3.12.4 for further details.
\bibinithyphendelim \BiberOnlyMark The punctuation inserted automatically by the backend
between the initials of hyphenated name parts, replacing \bibinitperiod and
\bibinitdelim. The default deﬁnition is a period followed by an unbreakable
hyphen. Please refer to § 3.12.4 for further details.
\bibindexnamedelima Replaces \bibnamedelima in the index.
\bibindexnamedelimb Replaces \bibnamedelimb in the index.
\bibindexnamedelimc Replaces \bibnamedelimc in the index.
\bibindexnamedelimd Replaces \bibnamedelimd in the index.

218

\bibindexnamedelimi Replaces \bibnamedelimi in the index.
\bibindexinitperiod Replaces \bibinitperiod in the index.
\bibindexinitdelim Replaces \bibinitdelim in the index.
\bibindexinithyphendelim Replaces \bibinithyphendelim in the index.
\revsdnamepunct The punctuation to be printed between the ﬁrst and last name parts when a name
is reversed. The default is a comma. This command should be incorporated in
formatting directives for name lists. Please refer to § 3.12.4 for further details.
\bibnamedash The dash to be used as a replacement for recurrent authors or editors in the bibliography. The default is an ‘em’ or an ‘en’ dash, depending on the indentation of the
list of references.
\labelnamepunct The separator to be printed after the name used for alphabetizing in the bibliography (author or editor, if the author ﬁeld is undeﬁned). Use this separator
instead of \newunitpunct at this location. The default is \newunitpunct, i. e.,
it is not handled diﬀerently from regular unit punctuation but permits convenient
reconﬁguration.
\subtitlepunct The separator to be printed between the ﬁelds title and subtitle,
booktitle and booksubtitle, as well as maintitle and mainsubtitle.
Use this separator instead of \newunitpunct at this location. The default is
\newunitpunct, i. e., it is not handled diﬀerently from regular unit punctuation
but permits convenient reconﬁguration.
\intitlepunct The separator to be printed between the word “in” and the following title in entry
types such as @article, @inbook, @incollection, etc. Use this separator
instead of \newunitpunct at this location. The default deﬁnition is a colon plus
an interword space.
\bibpagespunct The separator to be printed before the pages ﬁeld. Use this separator instead of
\newunitpunct at this location. The default is a comma plus an interword space.
\bibpagerefpunct The separator to be printed before the pageref ﬁeld. Use this separator instead
of \newunitpunct at this location. The default is an interword space.
\multinamedelim The delimiter to be printed between multiple items in a name list like author or
editor if there are more than two names in the list. If there are only two names in
the list, use the \finalnamedelim instead. This command should be incorporated
in all formatting directives for name lists.
\finalnamedelim Use this command instead of \multinamedelim before the ﬁnal name in a
name list.
\revsdnamedelim The extra delimiter to be printed after the ﬁrst name in a name list (in addition
to \finalnamedelim) if the ﬁrst name is reversed. This command should be
incorporated in all formatting directives for name lists.
\andothersdelim The delimiter to be printed before the localization string ‘andothers’ if a name
list like author or editor is truncated. This command should be incorporated in
all formatting directives for name lists.

219

\multilistdelim The delimiter to be printed between multiple items in a literal list like publisher
or location if there are more than two names in the list. If there are only two
items in the list, use the \finallistdelim instead. This command should be
incorporated in all formatting directives for literal lists.
\finallistdelim Use this command instead of \multilistdelim before the ﬁnal item in a
literal list.
\andmoredelim The delimiter to be printed before the localization string ‘andmore’ if a literal list
like publisher or location is truncated. This command should be incorporated
in all formatting directives for literal lists.
\multicitedelim The delimiter printed between citations if multiple entry keys are passed to
a single citation command. This command should be incorporated in the deﬁnition of all citation commands, for example in the hsepcodei argument passed to
\DeclareCiteCommand. See § 4.3.1 for details.
\supercitedelim Similar to \multinamedelim, but intended for the \supercite command
only.
\compcitedelim Similar to \multicitedelim, but intended for citation styles that ‘compress’
multiple citations, i. e., print the author only once if subsequent citations share the
same author etc.
\textcitedelim Similar to \multicitedelim, but intended for \textcite and related commands (§ 3.7.2).
\nametitledelim The delimiter to be printed between the author/editor and the title. This command
should be incorporated in the deﬁnition of all citation commands of author-title and
some verbose citation styles.
\nameyeardelim The delimiter to be printed between the author/editor and the year. This command
should be incorporated in the deﬁnition of all citation commands of author-year
citation styles.
\volcitedelim The delimiter to be printed between the volume portion and the page/text portion of
\volcite and related commands (§ 3.7.6).
\prenotedelim The delimiter to be printed after the hprenotei argument of a citation command.
\postnotedelim The delimiter to be printed after the hpostnotei argument of a citation command.
\mkbibnamelast{htexti}Formatting hook for the last name, to be used in all formatting directives
for name lists.
\mkbibnamefirst{htexti}Similar to \mkbibnamelast, but intended for the ﬁrst name.
\mkbibnameprefix{htexti}Similar to \mkbibnamelast, but intended for the name preﬁx.
\mkbibnameaffix{htexti}Similar to \mkbibnamelast, but intended for the name aﬃx.
\relatedpunct The separator between the relatedtype bibliography localization string and the data
from the ﬁrst related entry.

220

\relateddelim The separator between the data of multiple related entries. The default deﬁnition is a
linebreak.
4.10.2 Language-specific Commands
This section corresponds to § 3.9.2 in the user part of the manual. The commands
discussed here are usually handled by the localization modules, but may also be
redeﬁned by users on a per-language basis. Note that all commands starting with
\mk… take one or more mandatory arguments.
\bibrangedash The language speciﬁc range dash.
\bibdatedash The language speciﬁc date range dash.
\mkbibdatelong Takes the names of three ﬁeld as arguments which correspond to three date components (in the order year/month/day) and uses their values to print the date in the
language speciﬁc long date format.
\mkbibdateshort Similar to \mkbibdatelong but using the language speciﬁc short date format.
\finalandcomma Prints the comma to be inserted before the ﬁnal ‘and’ in an enumeration, if applicable
in the respective language.
\finalandsemicolon Prints the semicolon to be inserted before the ﬁnal ‘and’ in an enumeration,
if applicable in the respective language.
\mkbibordinal{hintegeri}
Takes an integer argument and prints it as an ordinal number.
\mkbibmascord{hintegeri}
Similar to \mkbibordinal, but prints a masculine ordinal, if applicable in the
respective language.
\mkbibfemord{hintegeri}
Similar to \mkbibordinal, but prints a feminine ordinal, if applicable in the
respective language.
\mkbibneutord{hintegeri}
Similar to \mkbibordinal, but prints a neuter ordinal, if applicable in the respective language.
\mkbibordedition{hintegeri}
Similar to \mkbibordinal, but intended for use with the term ‘edition’.
\mkbibordseries{hintegeri}
Similar to \mkbibordinal, but intended for use with the term ‘series’.

221

4.10.3 User-definable Lengths and Counters
This section corresponds to § 3.9.3 in the user part of the manual. The length registers
and counters discussed here are meant to be altered by users. Bibliography and
citation styles should incorporate them where applicable and may also provide a
default setting which is diﬀerent from the package default.
\bibhang The hanging indentation of the bibliography, if applicable. This length is initialized
to \parindent at load-time. If \parindent is zero length for some reason,
\bibhang will default to 1em.
\biblabelsep The horizontal space between entries and their corresponding labels. Bibliography
styles which use list environments and print a label should set \labelsep to
\biblabelsep in the deﬁnition of the respective environment.
\bibitemsep The vertical space between the individual entries in the bibliography. Bibliography
styles using list environments should set \itemsep to \bibitemsep in the
deﬁnition of the respective environment.
\bibparsep The vertical space between paragraphs within an entry in the bibliography. Bibliography styles using list environments should set \parsep to \bibparsep in
the deﬁnition of the respective environment.
abbrvpenalty The penalty used by \addabbrvspace,
\adddotspace, see § 4.7.4 for details.

and

for details.
for details.
biburlnumpenalty If this counter is set to a value greater than zero, Biblatex will permit linebreaks
after numbers in all strings formatted with the \url command from the url package.
This will aﬀect urls and dois in the bibliography. The breakpoints will be penalized
by the value of this counter. If urls and/or dois in the bibliography run into the
margin, try setting this counter to a value greater than zero but less than 10000 (you
normally want to use a high value like 9000). Setting the counter to zero disables
this feature. This is the default setting.
biburlucpenalty Similar to biburlnumpenalty, except that it will add a breakpoint after all
uppercase letters.
biburllcpenalty Similar to biburlnumpenalty, except that it will add a breakpoint after all
lowercase letters.
4.10.4 Auxiliary Commands and Hooks
The auxiliary commands and facilities in this section serve a special purpose. Some
of them are used by Biblatex to communicate with bibliography and citation styles
in some way or other.
\mkbibemph{htexti}
A generic command which prints its argument as emphasized text. This is a
simple wrapper around the standard \emph command. Apart from that, it uses

222

\setpunctfont from § 4.7.1 to adapt the font of the next punctuation mark following the text set in italics. If the punctfont package option is disabled, this
command behaves like \emph.
\mkbibitalic{htexti}
Similar in concept to \mkbibemph but prints italicized text. This is a simple wrapper
around the standard \textit command which incorporates \setpunctfont. If
the punctfont package option is disabled, this command behaves like \textit.
\mkbibbold{htexti}
Similar in concept to \mkbibemph but prints bold text. This is a simple wrapper
around the standard \textbf command which incorporates \setpunctfont. If
the punctfont package option is disabled, this command behaves like \textbf.
\mkbibquote{htexti}
A generic command which wraps its argument in quotation marks. If the csquotes
package is loaded, this command uses the language sensitive quotation marks provided by that package. \mkbibquote also supports ‘American-style’ punctuation,
see \DeclareQuotePunctuation in § 4.7.5 for details.
\mkbibparens{htexti}
A generic command which wraps its argument in parentheses. This command is
nestable. When nested, it will alternate between parentheses and brackets, depending
on the nesting level.
\mkbibbrackets{htexti}
A generic command which wraps its argument in square brackets. This command is
nestable. When nested, it will alternate between brackets and parentheses, depending
on the nesting level.
\bibopenparenhtexti\bibcloseparen
Alternative syntax for \mkbibparens. This will also work across groups. Note
that \bibopenparen and \bibcloseparen must always be balanced.
\bibopenbrackethtexti\bibclosebracket
Alternative syntax for \mkbibbrackets. This will also work across groups. Note
that \bibopenbracket and \bibclosebracket must always be balanced.
\mkbibfootnote{htexti}
A generic command which prints its argument as a footnote. This is a wrapper
around the standard LaTeX \footnote command which removes spurious whitespace preceding the footnote mark and prevents nested footnotes. By default,
\mkbibfootnote requests capitalization at the beginning of the note and automatically adds a period at the end. You may change this behavior by redeﬁning
the \bibfootnotewrapper macro introduced below.
\mkbibfootnotetext{htexti}
Similar to \mkbibfootnote but uses the \footnotetext command.

223

\mkbibendnote{htexti}
Similar in concept to \mkbibfootnote except that it prints its argument as an
endnote. \mkbibendnote removes spurious whitespace preceding the endnote
mark and prevents nested notes. It supports the \endnote command provided
by the endnotes package as well as the \pagenote command provided by
the pagenote package and the memoir class. If both commands are available,
\endnote takes precedence. If no endnote support is available, \mkbibendnote
issues an error and falls back to \footnote. By default, \mkbibendnote requests capitalization at the beginning of the note and automatically adds a period at
the end. You may change this behavior by redeﬁning the \bibendnotewrapper
macro introduced below.
\mkbibendnotetext{htexti}
Similar to \mkbibendnote but uses the \endnotetext command. Please note
that as of this writing, neither the pagenote package nor the memoir class provide
a corresponding \pagenotetext command. In this case, \mkbibendnote will
issue an error and fall back to \footnotetext.
\bibfootnotewrapper{htexti}
An inner wrapper which encloses the htexti argument of \mkbibfootnote and
\mkbibfootnotetext. For example, \mkbibfootnote eventually boils down
to this:
\footnote{\bibfootnotewrapper{text}}
The wrapper ensures capitalization at the beginning of the note and adds a period at
the end. The default deﬁnition is:
If you don’t want capitalization at the beginning or a period at the end of the note, do
not modify \mkbibfootnote but redeﬁne \bibfootnotewrapper instead.
\bibendnotewrapper{htexti}
Similar in concept to \bibfootnotewrapper but
\mkbibendnote and \mkbibendnotetext commands.

related

to

the

\mkbibsuperscript{htexti}
A generic command which prints its argument as superscripted text. This is a
simple wrapper around the standard LaTeX \textsuperscript command which
removes spurious whitespace and allows hyphenation of the preceding word.
\mkbibmonth{hintegeri}
This command takes an integer argument and prints it as a month name. Even
though the output of this command is language speciﬁc, its deﬁnition is not, hence it
is normally not redeﬁned in localization modules.
\mkdatezeros{hintegeri}
This command strips leading zeros from a number or preserves them, depending on
the datezeros package option (§ 3.1.2.1). It is intended for use in the deﬁnition of
date formatting macros.

224

\stripzeros{hintegeri}
This command strips leading zeros from a number. It is intended for date formatting
and ordinals.
BibTeX only

shorthandwidth
A special ﬁeld formatting directive which is used internally by Biblatex. When the
bibliographic data is read from the bbl ﬁle, Biblatex measures the values of all
shorthand ﬁelds and sets the length register \shorthandwidth to the width
of the widest shorthand (see § 4.10.5). In order to determine the correct width, the
package considers two factors: the deﬁnition of \bibfont and this formatting
directive. All styles should adjust this directive such that it corresponds to the format
used in the list of shorthands.
‘labelfield’width \BiberOnlyMark
With Biber, for every ﬁeld marked as a ‘Label ﬁeld’ in the data model, a formatting
directive is created as per shorthandwidth above. Since shorthand is so
marked in the default data model, this functionality is a superset of that described
for shorthandwidth.
labelnumberwidth Similar to shorthandwidth, but referring to the labelnumber ﬁeld and the
length register \labelnumberwidth. Numeric styles should adjust this directive
such that it corresponds to the format used in the bibliography.
labelalphawidth Similar to shorthandwidth, but referring to the labelalpha ﬁeld and the
length register \labelalphawidth. Alphabetic styles should adjust this directive
such that it corresponds to the format used in the bibliography.
bibhyperref A special formatting directive for use with \printfield and \printtext. This
directive wraps its argument in a \bibhyperref command, see § 4.6.4 for details.
bibhyperlink A special formatting directive for use with \printfield and \printtext. It
wraps its argument in a \bibhyperlink command, see § 4.6.4 for details. The
hnamei argument passed to \bibhyperlink is the value of the entrykey ﬁeld.
bibhypertarget A special formatting directive for use with \printfield and \printtext. It
wraps its argument in a \bibhypertarget command, see § 4.6.4 for details. The
hnamei argument passed to \bibhypertarget is the value of the entrykey
ﬁeld.
volcitepages A special formatting directive which controls the format of the page/text portion in
the argument of citation commands like \volcite.
volcitevolume A special formatting directive which controls the format of the volume portion in
the argument of citation commands like \volcite.
date A special formatting directive which controls the format of \printdate (§ 4.4.1).
Note that the date format (long/short etc.) is controlled by the package option date
from § 3.1.2.1. This formatting directive only controls additional formatting such as
fonts etc.
datelabel Similar to date but controls the format of \printdatelabel.
urldate Similar to date but controls the format of \printurldate.
origdate Similar to date but controls the format of \printorigdate.

225

eventdate Similar to date but controls the format of \printeventdate.
4.10.5 Auxiliary Lengths, Counters, and Other Features
The length registers and counters discussed here are used by Biblatex to pass information to bibliography and citation styles. Think of them as read-only registers.
Note that all counters are LaTeX counters. Use \value{counter} to read out
the current value.
BibTeX only

\shorthandwidth
This length register indicates the width of the widest shorthand. Bibliography
styles should incorporate this length in the deﬁnition of the list of shorthands, if
applicable.
\‘labelfield’width \BiberOnlyMark
With Biber, for every ﬁeld marked as a ‘Label ﬁeld’ in the data model, a length register is created as per shorthandwidth above. Since shorthand is so marked
in the default data model, this functionality is a superset of that described for
shorthandwidth.
\labelnumberwidth This length register indicates the width of the widest labelnumber. Numeric
bibliography styles should incorporate this length in the deﬁnition of the bibliography
environment.
\labelalphawidth This length register indicates the width of the widest labelalpha. Alphabetic
bibliography styles should incorporate this length in the deﬁnition of the bibliography
environment.
maxextraalpha This counter holds the highest number found in any extraalpha ﬁeld.
maxextrayear This counter holds the highest number found in any extrayear ﬁeld.
refsection This counter indicates the current refsection environment. When queried in
a bibliography heading, the counter returns the value of the refsection option
passed to \printbibliography.
refsegment This counter indicates the current refsegment environment. When queried in a
bibliography heading, this counter returns the value of the refsegment option
passed to \printbibliography.
maxnames This counter holds the setting of the maxnames package option.
minnames This counter holds the setting of the minnames package option.
maxitems This counter holds the setting of the maxitems package option.
minitems This counter holds the setting of the minitems package option.
instcount This counter is incremented by Biblatex for every citation as well as for every entry in
the bibliography and bibliography lists. The value of this counter uniquely identiﬁes
a single instance of a reference in the document.
citetotal This counter, which is only available in the hloopcodei of a citation command deﬁned
with \DeclareCiteCommand, holds the total number of valid entry keys passed
to the citation command.

226

citecount This counter, which is only available in the hloopcodei of a citation command deﬁned
with \DeclareCiteCommand, holds the number of the entry key currently being
processed by the hloopcodei.
multicitetotal This counter is similar to citetotal but only available in multicite commands.
It holds the total number of citations passed to the multicite command. Note that
each of these citations may consist of more than one entry key. This information is
provided by the citetotal counter.
multicitecount This counter is similar to citecount but only available in multicite commands.
It holds the number of the citation currently being processed. Note that this citation may consist of more than one entry key. This information is provided by the
citetotal and citecount counters.
listtotal This counter holds the total number of items in the current list. It is intended for
use in list formatting directives and does not hold a meaningful value when used
anywhere else. As an exception, it may also be used in the second optional argument
to \printnames and \printlist, see § 4.4.1 for details. For every list, there
is also a counter by the same name which holds the total number of items in the
corresponding list. For example, the author counter holds the total number of items
in the author list. This applies to both name lists and literal lists. These counters
are similar to listtotal except that they may also be used independently of list
formatting directives. For example, a bibliography style might check the editor
counter to decide Whether or not to print the term “editor” or rather its plural form
“editors” after the list of editors.
listcount This counter holds the number of the list item currently being processed. It is
intended for use in list formatting directives and does not hold a meaningful value
when used anywhere else.
liststart This counter holds the hstarti argument passed to \printnames or \printlist.
It is intended for use in list formatting directives and does not hold a meaningful
value when used anywhere else.
liststop This counter holds the hstopi argument passed to \printnames or \printlist.
It is intended for use in list formatting directives and does not hold a meaningful
value when used anywhere else.
\currentfield The name of the ﬁeld currently being processed by \printfield. This information
is only available locally in ﬁeld formatting directives.
\currentlist The name of the literal list currently being processed by \printlist. This information is only available locally in list formatting directives.
\currentname The name of the name list currently being processed by \printnames. This
information is only available locally in name formatting directives.
4.10.6 General Purpose Hooks
\AtBeginBibliography{hcodei}
Appends the hcodei to an internal hook executed at the beginning of the bibliography.
The hcodei is executed at the beginning of the list of references, immediately after
the hbegin codei of \defbibenvironment. This command may only be used in
the preamble.

227

\AtBeginShorthands{hcodei}
Appends the hcodei to an internal hook executed at the beginning of the list of shorthands. The hcodei is executed at the beginning of the list of shorthands, immediately
after the hbegin codei of \defbibenvironment. This command may only be
used in the preamble.
When using Biber, this is just an alias for:
\AtBeginBiblist{shorthand}{code}
Biber only

\AtBeginBiblist{hbiblistnamei}{hcodei}
Appends the hcodei to an internal hook executed at the beginning of the bibliography
list hbiblistnamei. The hcodei is executed at the beginning of the bibliography list,
immediately after the hbegin codei of \defbibenvironment. This command
may only be used in the preamble.
\AtEveryBibitem{hcodei}
Appends the hcodei to an internal hook executed at the beginning of every item
in the bibliography. The hcodei is executed immediately after the hitem codei of
\defbibenvironment. The bibliographic data of the respective entry is available
at this point. This command may only be used in the preamble.
\AtEveryLositem{hcodei}
Appends the hcodei to an internal hook executed at the beginning of every item in
the list of shorthands. The hcodei is executed immediately after the hitem codei of
\defbibenvironment. The bibliographic data of the respective entry is available
at this point. This command may only be used in the preamble.
When using Biber, this is just an alias for:
\AtEveryBiblistitem{shorthand}{code}

Biber only

\AtEveryBiblistitem{hbiblistnamei}{hcodei}
Appends the hcodei to an internal hook executed at the beginning of every item in the
bibliography list named hbiblistnamei. The hcodei is executed immediately after the
hitem codei of \defbibenvironment. The bibliographic data of the respective
entry is available at this point. This command may only be used in the preamble.
\AtNextBibliography{hcodei}
Similar to \AtBeginBibliography but only aﬀecting the next
\printbibliography. The internal hook is cleared after being executed
once. This command may be used in the document body.
\AtEveryCite{hcodei}
Appends the hcodei to an internal hook executed at the beginning of every citation
command. The hcodei is executed immediately before the hprecodei of the command
(see § 4.3.1). No bibliographic data is available at this point. This command may only
be used in the preamble.

228

\AtEveryCitekey{hcodei}
Appends the hcodei to an internal hook executed once for every entry key passed
to a citation command. The hcodei is executed immediately before the hloopcodei of
the command (see § 4.3.1). The bibliographic data of the respective entry is available
at this point. This command may only be used in the preamble.
\AtEveryMultiCite{hcodei}
Appends the hcodei to an internal hook executed at the beginning of every multicite
command. The hcodei is executed immediately before the multiprenote ﬁeld
(§ 4.3.2) is printed. No bibliographic data is available at this point. This command
may only be used in the preamble.
\AtNextCite{hcodei}
Similar to \AtEveryCite but only aﬀecting the next citation command. The
internal hook is cleared after being executed once. This command may be used in
the document body.
\AtNextCitekey{hcodei}
Similar to \AtEveryCitekey but only aﬀecting the next entry key. The internal hook is cleared after being executed once. This command may be used in the
document body.
\AtNextMultiCite{hcodei}
Similar to \AtEveryMultiCite but only aﬀecting the next multicite command.
The internal hook is cleared after being executed once. This command may be used
in the document body.
\AtDataInput[hentrytypei]{hcodei}
Appends the hcodei to an internal hook executed once for every entry as the bibliographic data is imported from the bbl ﬁle. The hentrytypei is the entry type the
hcodei applies to. If it applies to all entry types, omit the optional argument. The
hcodei is executed immediately after the entry has been imported. This command
may only be used in the preamble. Note that hcodei may be executed multiple times
for an entry. This occurs when the same entry is cited in diﬀerent refsection
environments or the sorting option settings incorporate more than one sorting
scheme. The refsection counter holds the number of the respective reference
section while the data is imported.
\UseBibitemHook
Executes the internal hook corresponding to \AtEveryBibitem.
\UseEveryCiteHook
Executes the internal hook corresponding to \AtEveryCite.
\UseEveryCitekeyHook
Executes the internal hook corresponding to \AtEveryCitekey.
\UseEveryMultiCiteHook
Executes the internal hook corresponding to \AtMultiEveryCite.

229

\UseNextCiteHook
Executes and clears the internal hook corresponding to \AtNextCite.
\UseNextCitekeyHook
Executes and clears the internal hook corresponding to \AtNextCitekey.
\UseNextMultiCiteHook
Executes and clears the internal hook corresponding to \AtNextMultiCite.
\DeferNextCitekeyHook
Locally un-deﬁnes the internal hook speciﬁed by \AtNextCitekey. This essentially defers the hook to the next entry key in the citation list, when executed in the
hprecodei argument of \DeclareCiteCommand (§ 4.3.1).

4.11 Hints and Caveats
This section provides some additional hints concerning the author interface of this
package. It also addresses common problems and potential misconceptions.
4.11.1 Entry Sets
Entry sets have already been introduced in § 3.11.5. This section discusses how to
process entry sets in a bibliography style. From the perspective of the driver, there is
no diﬀerence between static and dynamic entry sets. Both types are handled in the
same way. You will normally use the \entryset command from § 4.4.1 to loop
over all set members (in the order in which they are listed in the entryset ﬁeld of
the @set entry, or in the order in which they were passed to \defbibentryset,
respectively) and append \finentry at the end. That’s it. The formatting is handled
by the drivers for the entry types of the individual set members:
\DeclareBibliographyDriver{set}{%
\entryset{}{}%
\finentry}
You may have noticed that the numeric styles which ship with this package support
subdivided entry sets, i. e., the members of the set are marked with a letter or some
other marker such that citations may either refer to the entire set or to a speciﬁc set
member. The markers are generated as follows by the bibliography style:
\DeclareBibliographyDriver{set}{%
\entryset
{\printfield{entrysetcount}%
{}%
\finentry}
The entrysetcount ﬁeld holds an integer indicating the position of a set member
in the entry set. The conversion of this number to a letter or some other marker is
handled by the formatting directive of the entrysetcount ﬁeld. All the driver
needs to do is print the ﬁeld and add some white space (or start a new line). Printing
the markers in citations works in a similar way. Where a numeric style normally
says \printfield{labelnumber}, you simply append the entrysetcount
ﬁeld:

230

\printfield{labelnumber}\printfield{entrysetcount}
Since this ﬁeld is only deﬁned when processing citations referring to a set member,
4.11.2 Electronic Publishing Information
The standard styles feature dedicated support for arXiv references. Support for other
resources is easily added. The standard styles handle the eprint ﬁeld as follows:
\iffieldundef{eprinttype}
{\printfield{eprint}}
{\printfield[eprint:\strfield{eprinttype}]{eprint}}
If an eprinttype ﬁeld is available, the above code tries to use the ﬁeld format
eprint:heprinttypei. If this format is undeﬁned, \printfield automatically
falls back to the ﬁeld format eprint. There are two predeﬁned ﬁeld formats, the
type-speciﬁc format eprint:arxiv and the fallback format eprint:
\DeclareFieldFormat{eprint}{...}
\DeclareFieldFormat{eprint:arxiv}{...}
In other words, adding support for additional resources is as easy as deﬁning a ﬁeld
format named eprint:hresourcei where hresourcei is an identiﬁer to be used in the
eprinttype ﬁeld.
4.11.3 External Abstracts and Annotations
External abstracts and annotations have been discussed in § 3.11.8. This section
provides some more background for style authors. The standard styles use the
following macros (from biblatex.def) to handle abstracts and annotations:

\newbibmacro*{annotation}{%
\iffieldundef{annotation}
{\printfile[annotation]{\bibannotationprefix\thefield{entrykey}.tex}}%
{\printfield{annotation}}}
\newcommand*{\bibannotationprefix}{bibannotation-}
\newbibmacro*{abstract}{%
\iffieldundef{abstract}
{\printfile[abstract]{\bibabstractprefix\thefield{entrykey}.tex}}%
{\printfield{abstract}}}
\newcommand*{\bibabstractprefix}{bibabstract-}
If the abstract/annotation ﬁeld is undeﬁned, the above code tries to load
the abstracts/annotations from an external ﬁle. The \printfile commands also
incorporate ﬁle name preﬁxes which may be redeﬁned by users. Note that you must
enable \printfile explicitly by setting the loadfiles package option from
§ 3.1.2.1. This feature is disabled by default for performance reasons.

231

4.11.4 Name Disambiguation

Biber only

The uniquename and uniquelist options introduced in § 3.1.2.3 support various
modes of operation. This section explains the diﬀerences between these modes by
way of example. The uniquename option disambiguates individual names in the
labelname list. The uniquelist option disambiguates the labelname list
if it has become ambiguous after maxnames/minnames truncation. You can use
either option stand-alone or combine both.
4.11.4.1 Individual Names (uniquename)
Let’s start oﬀ with some uniquename examples. Consider the following data:
John Doe
Edward Doe
John Smith
Jane Smith

2008
2008
2008
2008

Let’s assume we’re using an author-year style and set uniquename=false. In
this case, we would get the following citations:
Doe 2008a
Doe 2008b
Smith 2008a
Smith 2008b
Since the last names are ambiguous and all works have been published in the same
year, an extra letter is appended to the year to disambiguate the citations. Many
style guides, however, mandate that the extra letter be used to disambiguate works
by the same authors only, not works by diﬀerent authors with the same last name.
In order to disambiguate the author’s last name, you are expected to add additional
parts of the name, either as initials or in full. This requirement is addressed by the
uniquename option. Here are the same citations with uniquename=init:
J. Doe 2008
E. Doe 2008
Smith 2008a
Smith 2008b
uniquename=init restricts name disambiguation to initials. Since ‘J. Smith’
would still be ambiguous, no additional name parts are added for the ‘Smiths’. With
uniquename=full, names are printed in full where required:
J. Doe 2008
E. Doe 2008
John Smith 2008
Jane Smith 2008
In order to illustrate the diﬀerence between uniquename = init/full and
allinit/allfull, we need to introduce the notion of a ‘visible’ name. In the following, ‘visible’ names are all names at a position before the maxnames/minnames/
uniquelist truncation point. For example, given this data:

232

William Jones/Edward Doe/Jane Smith
John Doe
John Smith
and maxnames=1, minnames=1, uniquename=init/full, we would get the
following names in citations:
Jones et al.
Doe
Smith
When disambiguating names, uniquename=init/full only consider the visible
names. Since all visible last names are distinct in this example, no further name parts
are added. Let’s compare that to the output of uniquename=allinit:
Jones et al.
J. Doe
Smith
allinit considers all names in all labelname lists, including those which are
hidden and replaced by ‘et al.’ as the list is truncated. In this example, ‘John Doe’ is
disambiguated from ‘Edward Doe’. Since the ambiguity of the two ‘Smiths’ can’t be
resolved by adding initials, no initials are added in this case. Now let’s compare that
to the output of uniquename=allfull which also disambiguates ‘John Smith’
from ‘Jane Smith’:
Jones et al.
J. Doe
John Smith
The options uniquename=mininit/minfull are similar to init/full in
that they only consider visible names, but they perform minimal disambiguation.
That is, they will disambiguate individual names only if they occur in identical lists
of last names. Consider the following data:
John Doe/William Jones
Edward Doe/William Jones
John Smith/William Edwards
Edward Smith/Allan Johnson
With uniquename=init/full, we would get:
J.
E.
J.
E.

Doe and Jones
Doe and Jones
Smith and Edwards
Smith and Johnson

With uniquename=mininit/minfull:
J. Doe and Jones
E. Doe and Jones
Smith and Edwards
Smith and Johnson

233

The ‘Smiths’ are not disambiguated because the visible name lists are not ambiguous
and the mininit/minfull options serve to disambiguate names occurring in
identical last name lists only. Another way of looking at this is that they globally
disambiguate last name lists. When it comes to ambiguous lists, note that a truncated
list is considered to be distinct from an untruncated one even if the visible names
are identical. For example, consider the following data:
John Doe/William Jones
Edward Doe
With maxnames=1, uniquename=init/full, we would get:
J. Doe et al.
E. Doe
With uniquename=mininit/minfull:
Doe et al.
Doe
Because the lists diﬀer in the ‘et al.’, the names are not disambiguated.
4.11.4.2 Lists of Names (uniquelist)
Ambiguity is also an issue with name lists. If the labelname list is truncated by the
maxnames/minnames options, it may become ambiguous. This type of ambiguity
is addressed by the uniquelist option. Consider the following data:
Doe/Jones/Smith
Smith/Johnson/Doe
Smith/Doe/Edwards
Smith/Doe/Jones

2005
2005
2005
2005

Many author-year styles truncate long author/editor lists in citations. For example,
with maxnames=1 we would get:
Doe et al. 2005
Smith et al. 2005a
Smith et al. 2005b
Smith et al. 2005c
Since the authors are ambiguous after truncation, the extra letter is added to the
year to ensure unique citations. Here again, many style guides mandate that the
extra letter be used to disambiguate works by the same authors only. In order to
disambiguate author lists, you are usually required to add more names, exceeding
the maxnames/minnames truncation point. The uniquelist feature addresses
this requirement. With uniquelist=true, we would get:
Doe et
Smith,
Smith,
Smith,

al. 2005
Johnson et al. 2005
Doe and Edwards 2005
Doe and Jones 2005

234

The uniquelist option overrides maxnames/minnames on a per-entry basis.
Essentially, what happens is that the ‘et al.’ part of the citation is expanded to
the point of no ambiguity – but no further than that. uniquelist may also be
combined with uniquename. Consider the following data:
John
John
John
John
John
John

Doe/Allan Johnson/William Jones
Doe/Edward Johnson/William Jones
Doe/Jane Smith/William Jones
Doe/John Smith/William Jones
Doe/John Edwards/William Jones
Doe/John Edwards/Jack Johnson

2009
2009
2009
2009
2009
2009

With maxnames=1:
Doe
Doe
Doe
Doe
Doe
Doe

et
et
et
et
et
et

al.
al.
al.
al.
al.
al.

2009a
2009b
2009c
2009d
2009e
2009f

With maxnames=1, uniquename=full, uniquelist=true:
Doe,
Doe,
Doe,
Doe,
Doe,
Doe,

A. Johnson et al. 2009
E. Johnson et al. 2009
Jane Smith et al. 2009
John Smith et al. 2009
Edwards and Jones 2009
Edwards and Johnson 2009

With uniquelist=minyear, list disambiguation only happens if the visible list
is identical to another visible list with the same labelyear. This is useful for
author-year styles which only require that the citation as a whole be unique, but do
not guarantee unambiguous authorship information in citations. This mode is conceptually related to uniquename=mininit/minfull. Consider this example:
Smith/Jones
2000
Smith/Johnson 2001
With maxnames=1 and uniquelist=true, we would get:
Smith and Jones 2000
Smith and Johnson 2001
With uniquelist=minyear:
Smith et al. 2000
Smith et al. 2001
With uniquelist=minyear, it is not clear that the authors are diﬀerent for the
two works but the citations as a whole are still unambiguous since the year is diﬀerent.
In contrast to that, uniquelist=true disambiguates the authorship even if this
information is not required to uniquely locate the works in the bibliography. Let’s
consider another example:

235

Vogel/Beast/Garble/Rook 2000
Vogel/Beast/Tremble/Bite 2000
Vogel/Beast/Acid/Squeeze 2001
With maxnames=3, minnames=1, uniquelist=true, we would get:
Vogel, Beast, Garble et al. 2000
Vogel, Beast, Tremble et al. 2000
Vogel, Beast, Acid et al. 2001
With uniquelist=minyear:
Vogel, Beast, Garble et al. 2000
Vogel, Beast, Tremble et al. 2000
Vogel et al. 2001
In the last citation, uniquelist = minyear does not override maxnames/
minnames as the citation does not need disambiguating from the other two because
the year is diﬀerent.
4.11.5 Trackers in Floats and TOC/LOT/LOF
If a citation is given in a ﬂoat (typically in the caption of a ﬁgure or table), scholarly
back references like ‘ibidem’ or back references based on the page tracker get ambiguous because ﬂoats are objects which are (physically and logically) placed outside
the ﬂow of text, hence the logic of such references applies poorly to them. To avoid
any such ambiguities, the citation and page trackers are temporarily disabled in all
ﬂoats. In addition to that, these trackers plus the back reference tracker (backref)
tables.
4.11.6 Mixing Programming Interfaces
The Biblatex package provides two main programming interfaces for style authors.
The \DeclareBibliographyDriver command, which deﬁnes a handler for an
entry type, is typically used in bbx ﬁles. \DeclareCiteCommand, which deﬁnes
a new citation command, is typically used in cbx ﬁles. However, in some cases it is
convenient to mix these two interfaces. For example, the \fullcite command
prints a verbose citation similar to the full bibliography entry. It is essentially deﬁned
as follows:
\DeclareCiteCommand{\fullcite}
{...}
{\usedriver{...}{\thefield{entrytype}}}
{...}
{...}
As you can see, the core code which prints the citations simply executes the bibliography driver deﬁned with \DeclareBibliographyDriver for the type of
the current entry. When writing a citation style for a verbose citation scheme, it is
often convenient to use the following structure:

236

\ProvidesFile{example.cbx}[2007/06/09 v1.0 biblatex citation style]
\DeclareCiteCommand{\cite}
{...}
{\usedriver{...}{cite:\thefield{entrytype}}}
{...}
{...}
\DeclareBibliographyDriver{cite:article}{...}
\DeclareBibliographyDriver{cite:book}{...}
\DeclareBibliographyDriver{cite:inbook}{...}
...
Another case in which mixing interfaces is helpful are styles using cross-references
within the bibliography. For example, when printing an @incollection entry,
the data inherited from the @collection parent entry would be replaced by a
short pointer to the respective parent entry:
[1] Audrey Author: Title of article. In: [2], pp. 134–165.
[2] Edward Editor, ed.: Title of collection. Publisher: Location, 1995.
One way to implement such cross-references within the bibliography is to think of
them as citations which use the value of the xref or crossref ﬁeld as the entry
key. Here is an example:
\ProvidesFile{example.bbx}[2007/06/09 v1.0 biblatex bibliography style]
\DeclareCiteCommand{\bbx@xref}
{}
{...}% code for cross-references
{}
{}
\DeclareBibliographyDriver{incollection}{%
...
\iffieldundef{xref}
{...}% code if no cross-reference
{\bbx@xref{\thefield{xref}}}%
...
}
When deﬁning \bbx@xref, the hprecodei, hpostcodei, and hsepcodei arguments of
\DeclareCiteCommand are left empty in the above example because they will
not be used anyway. The cross-reference is printed by the hloopcodei of \bbx@xref.
For further details on the xref ﬁeld, refer to § 2.2.3 and to the hints in § 2.4.1. Also
see the \iffieldxref, \iflistxref, and \ifnamexref tests in § 4.6.2. The
above could also be implemented using the \entrydata command from § 4.4.1:
\ProvidesFile{example.bbx}[2007/06/09 v1.0 biblatex bibliography style]

237

\DeclareBibliographyDriver{incollection}{%
...
\iffieldundef{xref}
{...}% code if no cross-reference
{\entrydata{\thefield{xref}}{%
% code for cross-references
...
}}%
...
}

4.11.7 Using the Punctuation Tracker
4.11.7.1 The Basics
There is one fundamental principle style authors should keep in mind when designing
a bibliography driver: block and unit punctuation is handled asynchronously. This is
best explained by way of example. Consider the following code snippet:
\printfield{title}%
\newunit
\printfield{edition}%
\newunit
\printfield{note}%
If there is no edition ﬁeld, this piece of code will not print:
Title. . Note
but rather:
Title. Note
because the unit punctuation tracker works asynchronously. \newunit will not
print the unit punctuation immediately. It merely records a unit boundary and
puts \newunitpunct on the punctuation buﬀer. This buﬀer will be handled by
subsequent \printfield, \printlist, or similar commands but only if the
respective ﬁeld or list is deﬁned. Commands like \printfield will consider three
factors prior to inserting any block or unit punctuation:
• Has a new unit/block been requested at all?
= Is there any preceding \newunit or \newblock command?
• Did the preceding commands print anything?
= Is there any preceding \printfield or similar command?
= Did this command actually print anything?
• Are we about to print anything now?
= Is the ﬁeld/list to be processed now deﬁned?
Block and unit punctuation will only be inserted if all of these conditions apply. Let’s
reconsider the above example:

238

\printfield{title}%
\newunit
\printfield{edition}%
\newunit
\printfield{note}%
Here’s what happens if the edition ﬁeld is undeﬁned. The ﬁrst \printfield
command prints the title and sets an internal ‘new text’ ﬂag. The ﬁrst \newunit sets
an internal ‘new unit’ ﬂag. No punctuation has been printed at this point. The second
\printfield does nothing because the edition ﬁeld is undeﬁned. The next
\newunit command sets the internal ﬂag ‘new unit’ again. Still no punctuation
has been printed. The third \printfield checks if the note ﬁeld is deﬁned.
If so, it looks at the ‘new text’ and ‘new unit’ ﬂags. If both are set, it inserts the
punctuation buﬀer before printing the note. It then clears the ‘new unit’ ﬂag and
sets the ‘new text’ ﬂag again.
This may all sound more complicated than it is. In practice, it means that it is
possible to write large parts of a bibliography driver in a sequential way. The advantage of this approach becomes obvious when trying to write the above code without
using the punctuation tracker. Such an attempt will lead to a rather convoluted set of
\iffieldundef tests required to check for all possible ﬁeld combinations (note
that the code below handles three ﬁelds; a typical driver may need to cater for some
two dozen ﬁelds):
\iffieldundef{title}%
{\iffieldundef{edition}
{\printfield{note}}
{\printfield{edition}%
\iffieldundef{note}%
{}
{. \printfield{note}}}}
{\printfield{title}%
\iffieldundef{edition}
{}
{. \printfield{edition}}%
\iffieldundef{note}
{}
{. \printfield{note}}}%

4.11.7.2 Common Mistakes
It is a fairly common misconception to think of the unit punctuation as something
that is handled synchronously. This typically causes problems if the driver includes
any literal text. Consider this erroneous code snippet which will generate misplaced
unit punctuation:
\printfield{title}%
\newunit
(\printfield{series} \printfield{number})%
This code will yield the following result:
Title (. Series Number)

239

Here’s what happens. The ﬁrst \printfield prints the title. Then \newunit
marks a unit boundary but does not print anything. The unit punctuation is printed
by the next \printfield command. That’s the asynchronous part mentioned
before. However, the opening parenthesis is printed immediately before the next
\printfield inserts the unit punctuation, leading to a misplaced period. When
inserting any literal text such as parentheses (including those printed by commands such as \bibopenparen and \mkbibparens), always wrap the text
in a \printtext command. For the punctuation tracker to work as expected, it
needs to know about all literal text inserted by a driver. This is what \printtext
is all about. \printtext interfaces with the punctuation tracker and ensures that
the punctuation buﬀer is inserted before the literal text gets printed. It also sets
the internal ‘new text’ ﬂag. Note there is in fact a third piece of literal text in this
example: the space after \printfield{series}. In the corrected example, we
will use the punctuation tracker to handle that space.
\printfield{title}%
\newunit
\printtext{(}%
\printfield{series}%
\printfield{number}%
\printtext{)}%
While the above code will work as expected, the recommended way to handle
parentheses, quotes, and other things which enclose more than one ﬁeld, is to deﬁne
a ﬁeld format:
\DeclareFieldFormat{parens}{\mkbibparens{#1}}
Field formats may be used with both \printfield and \printtext, hence we
can use them to enclose several ﬁelds in a single pair of parentheses:
\printtext[parens]{%
\printfield{series}%
\printfield{number}%
}%
We still need to handle cases in which there is no series information at all, so let’s
improve the code some more:
\iffieldundef{series}
{}
{\printtext[parens]{%
\printfield{series}%
\printfield{number}}}%
One ﬁnal hint: localization strings are not literal text as far as the punctuation
tracker is concerned. Since \bibstring and similar commands interface with the
punctuation tracker, there is no need to wrap them in a \printtext command.

240

The punctuation tracker may also be used to handle more complex scenarios. For
example, suppose that we want the ﬁelds location, publisher, and year to
be rendered in one of the following formats, depending on the available data:
...text.
...text.
...text.
...text.
...text.
...text.
...text.

Location: Publisher, Year. Text...
Location: Publisher. Text...
Location: Year. Text...
Publisher, Year. Text...
Location. Text...
Publisher. Text...
Year. Text...

This problem can be solved with a rather convoluted set of \iflistundef and
\iffieldundef tests which check for all possible ﬁeld combinations:
\iflistundef{location}
{\iflistundef{publisher}
{\printfield{year}}
{\printlist{publisher}%
\iffieldundef{year}
{}
{, \printfield{year}}}}
{\printlist{location}%
\iflistundef{publisher}%
{\iffieldundef{year}
{}
{: \printfield{year}}}
{: \printlist{publisher}%
\iffieldundef{year}
{}
{, \printfield{year}}}}%
The above could be written in a somewhat more readable way by employing
\ifthenelse and the boolean operators discussed in § 4.6.3. The approach would
still be essentially the same. However, it may also be written sequentially:
\newunit
\printlist{location}%
\printlist{publisher}%
\printfield{year}%
\newunit
In practice, you will often use a combination of explicit tests and the implicit tests
performed by the punctuation tracker. For example, consider the following format
(note the punctuation after the location if there is no publisher):
...text. Location: Publisher, Year. Text...
...text. Location: Publisher. Text...
...text. Location, Year. Text...

241

...text.
...text.
...text.
...text.

Publisher, Year. Text...
Location. Text...
Publisher. Text...
Year. Text...

This can be handled by the following code:
\newunit
\printlist{location}%
\iflistundef{publisher}
\printlist{publisher}%
\printfield{year}%
\newunit
Since the punctuation after the location is special if there is no publisher, we need
one \iflistundef test to catch this case. Everything else is handled by the
punctuation tracker.
4.11.8 Custom Localization Modules
Style guides may include provisions as to how strings like ‘edition’ should be abbreviated or they may mandate certain ﬁxed expressions. For example, the mla style
guide requires authors to use the term ‘Works Cited’ rather than ‘Bibliography’ or
‘References’ in the heading of the bibliography. Localization commands such as
\DefineBibliographyStrings from § 3.8 may indeed be used in cbx and
bbx ﬁles to handle such cases. However, overloading style ﬁles with translations
is rather inconvenient. This is where \DeclareLanguageMapping from § 4.9.1
comes into play. This command maps an lbx ﬁle with alternative translations to
a babel/polyglossia language. For example, you could create a ﬁle named
french-humanities.lbx which provides French translations adapted for use
in the humanities and map it to the babel/polyglossia language french in
the preamble or in the conﬁguration ﬁle:
\DeclareLanguageMapping{french}{french-humanities}
If the document language is set to french, french-humanities.lbx will
replace french.lbx. Coming back to the mla example mentioned above, an mla
style may come with an american-mla.lbx ﬁle to provide strings which comply
with the mla style guide. It would declare the following mapping in the cbx and/or
bbx ﬁle:
\DeclareLanguageMapping{american}{american-mla}
Since the alternative lbx ﬁle can inherit strings from the standard american.lbx
module, american-mla.lbx may be as short as this:
\ProvidesFile{american-mla.lbx}[2008/10/01 v1.0 biblatex localization]
\InheritBibliographyExtras{american}
\DeclareBibliographyStrings{%
inherit
= {american},

242

bibliography
references

= {{Works Cited}{Works Cited}},
= {{Works Cited}{Works Cited}},

}
\endinput
Alternative lbx ﬁles must ensure that the localization module is complete. They will
typically do so by inheriting data from the corresponding standard module. If the
language american is mapped to american-mla.lbx, Biblatex will not load
american.lbx unless this module is requested explicitly. In the above example,
inheriting ‘strings’ and ‘extras’ will cause Biblatex to load american.lbx before
applying the modiﬁcations in american-mla.lbx.
Note that \DeclareLanguageMapping is not intended to handle language
variants (e. g., American English vs. British English) or babel/polyglossia
language aliases (e. g., USenglish vs.
american).
For example,
babel/polyglossia oﬀers the USenglish option which is similar to
american. Therefore, Biblatex ships with an USenglish.lbx ﬁle which
simply inherits all data from american.lbx (which in turn gets the ‘strings’
from english.lbx). In other words, the mapping of language variants and
babel/polyglossia language aliases happens on the ﬁle level, the point being
that Biblatex’s language support can be extended simply by adding additional lbx
ﬁles. There is no need for centralized mapping. If you need support for, say, Portuguese (babel/polyglossia: portuges), you create a ﬁle named portuges.lbx.
If babel/polyglossia oﬀered an alias named brasil, you would create
brasil.lbx and inherit the data from portuges.lbx. In contrast to that,
the point of \DeclareLanguageMapping is handling stylistic variants like
‘humanities vs. natural sciences’ or ‘mla vs. apa’ etc. which will typically be built
on top of existing lbx ﬁles.
4.11.9 Grouping
In a citation or bibliography style, you may need to set ﬂags or store certain values
for later use. In this case, it is crucial to understand the basic grouping structure
imposed by this package. As a rule of thumb, you are working in a large group
whenever author commands such as those discussed in § 4.6 are available because
the author interface of this package is only enabled locally. If any bibliographic data
is available, there is at least one additional group. Here are some general rules:
• The entire list of references printed by \printbibliography and similar
commands is processed in a group. Each entry in the list is processed in an
additional group which encloses the hitem codei of \defbibenvironment
as well as all driver code.
• The entire bibliography list printed by \printbiblist is processed in a
group. Each entry in the list is processed in an additional group which encloses
the hitem codei of \defbibenvironment as well as all driver code.
• All citation commands deﬁned with \DeclareCiteCommand are processed
in a group holding the complete citation code consisting of the hprecodei,
hsepcodei, hloopcodei, and hpostcodei arguments. The hloopcodei is enclosed
in an additional group every time it is executed. If any hwrapperi code has
been speciﬁed, the entire unit consisting of the wrapper code and the citation
code is wrapped in an additional group.

243

• In addition to the grouping imposed by all backend commands deﬁned with
\DeclareCiteCommand, all ‘autocite’ and ‘multicite’ deﬁnitions imply an
• \printfile, \printtext, \printfield, \printlist, and
\printnames form groups. This implies that all formatting directives will
be processed within a group of their own.
• All lbx ﬁles are loaded and processed in a group. If an lbx ﬁle contains any
code which is not part of \DeclareBibliographyExtras, the deﬁnitions must be global.
Note that using \aftergroup in citation and bibliography styles is unreliable
because the precise number of groups employed in a certain context may change in
future versions of this package. If the above list states that something is processed in
a group, this means that there is at least one group. There may also be several nested
ones.
4.11.10 Namespaces
In order to minimize the risk of name clashes, LaTeX packages typically preﬁx the
names of internal macros with a short string speciﬁc to the package. For example, if
the foobar package requires a macro for internal use, it would typically be called
\FB@macro or \foo@macro rather than \macro or \@macro. Here is a list of
the preﬁxes used or recommended by Biblatex:
blx All macros with names like \blx@name are strictly reserved for internal use. This

also applies to counter names, length registers, boolean switches, and so on. These
macros may be altered in backwards-incompatible ways, they may be renamed or
even removed at any time without further notice. Such changes will not even be
mentioned in the revision history or the release notes. In short: never use any macros
with the string blx in their name in any styles.
abx Macros preﬁxed with abx are also internal macros but they are fairly stable. It is

always preferable to use the facilities provided by the oﬃcial author interface, but
there may be cases in which using an abx macro is convenient.
bbx This is the recommended preﬁx for internal macros deﬁned in bibliography styles.
cbx This is the recommended preﬁx for internal macros deﬁned in citation styles.
lbx This is the recommended base preﬁx for internal macros deﬁned in localization

modules. The localization module should add a second preﬁx to specify the language.
For example, an internal macro deﬁned by the Spanish localization module would be
named \lbx@es@macro.

Appendix
A Default Driver Source Mappings
These are the driver default source mappings. For drivers other than bibtex and
ris, they are highly experimental and subject to change (because the driver datatype
itself is unstable or not well suited to bibliographic data).

244

A.1 bibtex
The bibtex driver is of course the most comprehensive and mature of the Biblatex/Biber supported data formats. These source mapping defaults are how the aliases
from sections § 2.1.2 and § 2.2.5 are implemented.
\DeclareDriverSourcemap[datatype=bibtex]{
\map{
\step[typesource=conference, typetarget=inproceedings]
\step[typesource=electronic, typetarget=online]
\step[typesource=www,
typetarget=online]
}
\map{
\step[typesource=mastersthesis, typetarget=thesis, final]
\step[fieldset=type,
fieldvalue=mathesis]
}
\map{
\step[typesource=phdthesis, typetarget=thesis, final]
\step[fieldset=type,
fieldvalue=phdthesis]
}
\map{
\step[typesource=techreport, typetarget=report, final]
\step[fieldset=type,
fieldvalue=techreport]
}
\map{
fieldtarget=location]
\step[fieldsource=school,
fieldtarget=institution]
\step[fieldsource=annote,
fieldtarget=annotation]
\step[fieldsource=archiveprefix, fieldtarget=eprinttype]
\step[fieldsource=journal,
fieldtarget=journaltitle]
\step[fieldsource=primaryclass, fieldtarget=eprintclass]
\step[fieldsource=key,
fieldtarget=sortkey]
\step[fieldsource=pdf,
fieldtarget=file]
}
}

A.2 endnotexml
The endnotexml driver for Biber uses the following mappings. This format is quite
messy and not well suited to robust typesetting of bibliographic data. It is presented
largely as an example of Biber’s modular datasource abilities and also of how to map
foreign data models into the Biblatex data model. Mappings from such messy and
relatively simple data models are inevitably fragile and are of limited use.
\DeclareDriverSourcemap[datatype=endnotexml]{
\map{
\step[typesource={Aggregated Database},
\step[typesource={Ancient Text},
\step[typesource=Artwork,
\step[typesource={Audiovisual Material},
\step[typesource=Bill,
\step[typesource=Blog,

245

typetarget=misc]
typetarget=misc]
typetarget=artwork]
typetarget=misc]
typetarget=jurisdiction]
typetarget=online]

\step[typesource=Book,
\step[typesource={Book Section},
\step[typesource=Case,
\step[typesource=Catalog,
\step[typesource={Chart or Table},
\step[typesource={Classical Work},
\step[typesource={Computer Program},
\step[typesource={Conference Paper},
\step[typesource={Conference Proceedings},
\step[typesource=Dictionary,
\step[typesource={Edited Book},
\step[typesource={Electronic Article},
\step[typesource={Electronic Book},
\step[typesource={Encyclopedia},
\step[typesource=Equation,
\step[typesource=Figure,
\step[typesource={Government Document},
\step[typesource=Grant,
\step[typesource=Hearing,
\step[typesource={Journal Article},
\step[typesource={Legal Rule or Regulation},
\step[typesource={Magazine Article},
\step[typesource=Manuscript,
\step[typesource=Map,
\step[typesource={Newspaper Article},
\step[typesource={Online Database},
\step[typesource={Online Multimedia},
\step[typesource=Pamphlet,
\step[typesource=Patent,
\step[typesource={Personal Communication},
\step[typesource=Report,
\step[typesource=Serial,
\step[typesource=Standard,
\step[typesource=Statute,
\step[typesource=Thesis,
\step[typesource={Unpublished Work},
\step[typesource={Web Page},

typetarget=book]
typetarget=inbook]
typetarget=jurisdiction]
typetarget=misc]
typetarget=misc]
typetarget=misc]
typetarget=software]
typetarget=inproceedings]
typetarget=proceedings]
typetarget=inreference]
typetarget=collection]
typetarget=article]
typetarget=book]
typetarget=reference]
typetarget=misc]
typetarget=misc]
typetarget=movie]
typetarget=report]
typetarget=misc]
typetarget=jurisdiction]
typetarget=article]
typetarget=legislation]
typetarget=article]
typetarget=unpublished]
typetarget=misc]
typetarget=article]
typetarget=online]
typetarget=online]
typetarget=booklet]
typetarget=patent]
typetarget=letter]
typetarget=report]
typetarget=periodical]
typetarget=standard]
typetarget=legislation]
typetarget=thesis]
typetarget=unpublished]
typetarget=online]

}
\map{
\step[fieldsource={electronic-resource-num},
\step[fieldsource={alt-title},
\step[fieldsource={meeting-place},
\step[fieldsource={pub-location},
\step[fieldsource={orig-pub},
\step[fieldsource={authors},
\step[fieldsource={secondary-authors},
\step[fieldsource={tertiary-authors},
\step[fieldsource={subsidiary-authors},
\step[fieldsource={year},
\step[fieldsource={pub-dates},

fieldtarget=eprint]
fieldtarget=shorttitle]
fieldtarget=venue]
fieldtarget=location]
fieldtarget=origpublisher
fieldtarget=author]
fieldtarget=editor]
fieldtarget=commentator]
fieldtarget=translator]
fieldtarget=date]
fieldtarget=date]

246

\step[fieldsource={num-vols},
\step[fieldsource={call-num},
\step[fieldsource={notes},
\step[fieldsource={secondary-title},
\step[fieldsource={work-type},

fieldtarget=volumes]
fieldtarget=library]
fieldtarget=note]
fieldtarget=subtitle]
fieldtarget=type]

}
\map{
\pertype{Edited Book}
\step[fieldsource=contributors/authors, fieldtarget=contributors/edito
}
\map{
\pertype{Electronic Article}
\pertype{Journal Article}
\pertype{Magazine Article}
\pertype{Newspaper Article}
\step[fieldsource=isbn, fieldtarget=issn]
}
\map{
\pertype{Patent}
\pertype{Report}
\pertype{Government Document}
\pertype{Legal Rule or Regulation}
\step[fieldsource=isbn, fieldtarget=number]
}
\map{
\pertype{Blog}
\pertype{Online Database}
\pertype{Online Multimedia}
\pertype{Web Page}
\step[fieldsource={titles/secondary-title}, fieldtarget={titles/title}
}
\map{
\pertype{Book Section}
\step[fieldsource={titles/secondary-title}, fieldtarget={titles/bookti
}
\map{
\pertype{Book}
\pertype{Electronic Book}
\pertype{Manuscript}
\pertype{Unpublished Work}
\step[fieldsource={titles/secondary-title}, fieldtarget={titles/series
}
\map{
\pertype{Conference Paper}
\pertype{Conference Proceedings}
\step[fieldsource={titles/secondary-title}, fieldtarget={titles/eventt
}
\map{
\pertype{Electronic Article}
\pertype{Journal Article}
\pertype{Magazine Article}

247

\pertype{Newspaper Article}
\step[fieldsource={titles/secondary-title}, fieldtarget={titles/journa

}
\map{
\pertype{Book Section}
\step[fieldsource={titles/tertiary-title}, fieldtarget={titles/booktit
}
\map{
\pertype{Conference Proceedings}
\pertype{periodical}
\step[fieldsource={titles/tertiary-title}, fieldtarget={titles/series}
}
}

A.3 ris
The ris driver reﬂects the fact that ris itself is a very simple and stable format. It
is in fact so simple, it’s hardly of any use for most Biblatex users. Again, here more
as a proof of concept example.
\DeclareDriverSourcemap[datatype=ris]{
\map{
\step[typesource=ART,
typetarget=artwork]
\step[typesource=BILL,
typetarget=jurisdiction]
\step[typesource=BOOK,
typetarget=book]
\step[typesource=CHAP,
typetarget=inbook]
\step[typesource=COMP,
typetarget=software]
\step[typesource=CONF,
typetarget=proceedings]
\step[typesource=GEN,
typetarget=misc]
\step[typesource=JFULL, typetarget=article]
\step[typesource=JOUR,
typetarget=article]
\step[typesource=MGZN,
typetarget=misc]
\step[typesource=MPCT,
typetarget=movie]
\step[typesource=NEWS,
typetarget=misc]
\step[typesource=PAMP,
typetarget=misc]
\step[typesource=PAT,
typetarget=patent]
\step[typesource=PCOMM, typetarget=misc]
\step[typesource=RPRT,
typetarget=report]
\step[typesource=SER,
typetarget=misc]
\step[typesource=SLIDE, typetarget=misc]
\step[typesource=SOUND, typetarget=audio]
\step[typesource=STAT,
typetarget=legal]
\step[typesource=THES,
typetarget=thesis]
\step[typesource=UNBILL, typetarget=jurisdiction]
\step[typesource=UNPB,
typetarget=unpublished]
}
\map{
\step[fieldsource=Y1,
fieldtarget=date]
\step[fieldsource=PY,
fieldtarget=date]
\step[fieldsource=Y2,
fieldtarget=eventdate]
\step[fieldsource=A1,
fieldtarget=author]

248

\step[fieldsource=AU,
\step[fieldsource=A2,
\step[fieldsource=A3,
\step[fieldsource=ED,
\step[fieldsource=SPEP,
\step[fieldsource=N1,
\step[fieldsource=N2,
\step[fieldsource=AB,
\step[fieldsource=JO,
\step[fieldsource=JF,
\step[fieldsource=JA,
\step[fieldsource=VL,
\step[fieldsource=IS,
\step[fieldsource=CP,
\step[fieldsource=CY,
\step[fieldsource=SN,
\step[fieldsource=PB,
\step[fieldsource=KW,
\step[fieldsource=TI,
\step[fieldsource=U1,
\step[fieldsource=U2,
\step[fieldsource=U3,
\step[fieldsource=U4,
\step[fieldsource=U5,
\step[fieldsource=UR,
\step[fieldsource=L1,

fieldtarget=author]
fieldtarget=editor]
fieldtarget=editor]
fieldtarget=editor]
fieldtarget=pages]
fieldtarget=note]
fieldtarget=abstract]
fieldtarget=abstract]
fieldtarget=journaltitle]
fieldtarget=journaltitle]
fieldtarget=shortjournal]
fieldtarget=volume]
fieldtarget=issue]
fieldtarget=issue]
fieldtarget=location]
fieldtarget=isbn]
fieldtarget=publisher]
fieldtarget=keywords]
fieldtarget=title]
fieldtarget=usera]
fieldtarget=userb]
fieldtarget=userc]
fieldtarget=userd]
fieldtarget=usere]
fieldtarget=url]
fieldtarget=file]

}
}

A.4 zoterordfxml
The zoterordfxml driver reads the Zotero38 XML representation of its RDF format.
From the Biblatex point of view, it suﬀers from a lack of the notion of a citation
key and so is of limited use. The format may include a citation key in the future at
which point the Biber driver and these default mappings will be updated. As with
endnotexml, the format is somewhat messy with, in particular, a very limited way
of dealing with related entries which makes the driver setup rather ugly. As can be
seen below, it is possible to map into a ﬁeld preﬁxed with “BIBERCUSTOM” which
is not a real ﬁeld in the data model but can be detected in the Biber driver itself and
used to process a source ﬁeld which does not map naturally to any Biblatex data
model ﬁeld as it needs special treatment. This is messy but is due largely due to
messy source data models.
\DeclareDriverSourcemap[datatype=zoterordfxml]{
\map{
\step[typesource=conferencePaper,
typetarget=inproceedings]
\step[typesource=bookSection,
typetarget=inbook]
\step[typesource=journalArticle,
typetarget=article]
\step[typesource=magazineArticle,
typetarget=article]
\step[typesource=newspaperArticle,
typetarget=article]
38

www.zotero.org

249

\step[typesource=encyclopediaArticle,
\step[typesource=manuscript,
\step[typesource=document,
\step[typesource=dictionaryEntry,
\step[typesource=interview,
\step[typesource=film,
\step[typesource=webpage,
\step[typesource=note,
\step[typesource=attachment,
\step[typesource=bill,
\step[typesource=case,
\step[typesource=hearing,
\step[typesource=statute,
\step[typesource=email,
\step[typesource=map,
\step[typesource=blogPost,
\step[typesource=instantMessage,
\step[typesource=forumPost,
\step[typesource=audioRecording,
\step[typesource=presentation,
\step[typesource=videoRecording,
\step[typesource=podcast,
\step[typesource=computerProgram,
}
\map{
\step[fieldsource=bib:contributors,
\step[fieldsource=bib:authors,
\step[fieldsource=z:interviewers,
\step[fieldsource=z:directors,
\step[fieldsource=z:scriptwriters,
\step[fieldsource=z:bookAuthor,
\step[fieldsource=z:inventors,
\step[fieldsource=z:recipients,
\step[fieldsource=z:counsels,
\step[fieldsource=z:artists,
\step[fieldsource=z:podcasters,
\step[fieldsource=z:presenters,
\step[fieldsource=z:commenters,
\step[fieldsource=z:programers,
\step[fieldsource=z:composers,
\step[fieldsource=z:producers,
\step[fieldsource=z:performers,
\step[fieldsource=bib:editors,
\step[fieldsource=z:translators,
\step[fieldsource=z:seriesEditors,
\step[fieldsource=dc:date,
\step[fieldsource=bib:pages,
\step[fieldsource=dc:title,
\step[fieldsource=z:proceedingsTitle,

250

typetarget=inreference]
typetarget=unpublished]
typetarget=misc]
typetarget=inreference]
typetarget=misc]
typetarget=movie]
typetarget=online]
typetarget=misc]
typetarget=misc]
typetarget=legislation]
typetarget=jurisdiction]
typetarget=jurisdiction]
typetarget=legislation]
typetarget=letter]
typetarget=image]
typetarget=online]
typetarget=letter]
typetarget=online]
typetarget=audio]
typetarget=inproceedings]
typetarget=video]
typetarget=misc]
typetarget=misc]
typetarget=online]
typetarget=software]

fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=author]
fieldtarget=editor]
fieldtarget=translator]
fieldtarget=editor]
fieldtarget=date]
fieldtarget=pages]
fieldtarget=title]
fieldtarget=title]

\step[fieldsource=z:encyclopediaTitle, fieldtarget=title]
\step[fieldsource=z:dictionaryTitle,
fieldtarget=title]
\step[fieldsource=z:websiteTitle,
fieldtarget=title]
\step[fieldsource=z:forumTitle,
fieldtarget=title]
\step[fieldsource=z:blogTitle,
fieldtarget=title]
\step[fieldsource=z:nameOfAct,
fieldtarget=title]
\step[fieldsource=z:caseName,
fieldtarget=title]
\step[fieldsource=z:meetingName,
fieldtarget=eventtitle]
\step[fieldsource=prism:volume,
fieldtarget=volume]
\step[fieldsource=numberOfVolumes,
fieldtarget=volumes]
\step[fieldsource=z:numPages,
fieldtarget=pagetotal]
\step[fieldsource=prism:edition,
fieldtarget=edition]
\step[fieldsource=dc:description,
fieldtarget=note]
\step[fieldsource=dc:alternative,
fieldtarget=shortjournal]
\step[fieldsource=dcterms:abstract,
fieldtarget=abstract]
\step[fieldsource=dc:type,
fieldtarget=type]
\step[fieldsource=z:shortTitle,
fieldtarget=shorttitle]
\step[fieldsource=z:bookTitle,
fieldtarget=booktitle]
\step[fieldsource=prism:number,
fieldtarget=number]
\step[fieldsource=z:patentNumber,
fieldtarget=number]
\step[fieldsource=z:codeNumber,
fieldtarget=number]
\step[fieldsource=z:reportNumber,
fieldtarget=number]
\step[fieldsource=z:billNumber,
fieldtarget=number]
\step[fieldsource=z:documentNumber,
fieldtarget=number]
\step[fieldsource=z:publicLawNumber,
fieldtarget=number]
\step[fieldsource=z:applicationNumber, fieldtarget=number]
\step[fieldsource=z:episodeNumber,
fieldtarget=number]
\step[fieldsource=dc:coverage,
fieldtarget=location]
\step[fieldsource=z:university,
fieldtarget=institution]
\step[fieldsource=z:language,
fieldtarget=language]
\step[fieldsource=z:version,
fieldtarget=version]
\step[fieldsource=z:libraryCatalog,
fieldtarget=library]
\step[fieldsource=dcterms:isPartOf,
fieldtarget=BIBERCUSTOMpartof]
\step[fieldsource=dc:identifier,
fieldtarget=BIBERCUSTOMidentifi
\step[fieldsource=dc:publisher,
fieldtarget=BIBERCUSTOMpublishe
\step[fieldsource=dc:presentedAt,
fieldtarget=BIBERCUSTOMpresente
\step[fieldsource=dc:subject,
fieldtarget=BIBERCUSTOMsubject]
\step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Journal},
fieldtarget={dcterms:BIBERCUSTOMpartof/periodical}]
\step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:Book},
fieldtarget={dcterms:BIBERCUSTOMpartof/book}]
\step[fieldsource={dcterms:BIBERCUSTOMpartof/bib:ConferenceProceedings
fieldtarget={dcterms:BIBERCUSTOMpartof/proceedings}]
}
}

B Default Inheritance Setup
The following table shows the Biber cross-referencing rules deﬁned by default. Please
refer to §§ 2.4.1 and 4.5.10 for explanation.

251

Types

Fields

Source

Target

Source

Target

*

*

–
–
–
–
–
–
–
–
–
–
–
–
–
–

mvbook, book

inbook, bookinbook, suppbook

mvbook

book, inbook, bookinbook,
suppbook

ids
crossref
xref
entryset
entrysubtype
execute
label
options
presort
related
relatedoptions
relatedstring
relatedtype
shorthand
shorthandintro
sortkey
author
author
title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle
title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle
title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle
title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle
title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle

mvcollection, collection, reference,
mvreference
incollection, inreference,
suppcollection

mvproceedings proceedings, inproceedings

book

inbook, bookinbook, suppbook

collection,
reference

incollection, inreference,
suppcollection

252

author
bookauthor
maintitle
mainsubtitle
–
–
–
–
maintitle
mainsubtitle
–
–
–
–
maintitle
mainsubtitle
–
–
–
–
booktitle
booksubtitle
–
–
–
–
booktitle
booksubtitle
–
–
–
–

Types

Fields

Source

Target

Source

Target

proceedings

inproceedings

periodical

article, suppperiodical

title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle
title
subtitle
shorttitle
sorttitle
indextitle
indexsorttitle

booktitle
booksubtitle
–
–
–
–
journaltitle
journalsubtitle
–
–
–
–

C Default Sorting Schemes
C.1 Alphabetic Schemes 1
The following table shows the standard alphabetic sorting schemes deﬁned by default.
Please refer to § 3.5 for explanation.
Option Sorting scheme
nty

presort
,→ mm

nyt

presort
,→ mm

nyvt

presort
,→ mm

all

presort
,→ mm

→ sortname
,→ author
,→ editor
,→ translator
,→ sorttitle
,→ title
→ sortname
,→ author
,→ editor
,→ translator
,→ sorttitle
,→ title
→ sortname
,→ author
,→ editor
,→ translator
,→ sorttitle
,→ title
→ sortkey

→ sorttitle → sortyear → volume
,→ title
,→ year
,→ 0000

→ sortyear → sortti- → volume
,→ year
tle
,→ 0000
,→ title

→ sortyear
,→ year

→ volume
,→ 0000

→ sorttitle
,→ title

C.2 Alphabetic Schemes 2
The following table shows the alphabetic sorting schemes for alphabetic styles
deﬁned by default. Please refer to § 3.5 for explanation.

253

Option Sorting scheme
anyt

presort
,→ mm

anyvt

presort
,→ mm

all

presort
,→ mm

→ labelalpha

→ sortname
,→ author
,→ editor
,→ translator
,→ sorttitle
,→ title
→ labelal- → sortname
pha
,→ author
,→ editor
,→ translator
,→ sorttitle
,→ title
→ labelal- → sortkey
pha

→ sortyear → sortti- → volume
,→ year
tle
,→ 0000
,→ title

→ sortyear → volume
,→ year
,→ 0000

→ sorttitle
,→ title

C.3 Chronological Schemes
The following table shows the chronological sorting schemes deﬁned by default.
Please refer to § 3.5 for explanation.
Option Sorting scheme
ynt

presort
,→ mm

ydnt

presort
,→ mm

all

presort
,→ mm

→ sortyear
,→ year
,→ 9999

→ sortname
,→ author
,→ editor
,→ translator
,→ sorttitle
,→ title
→ sortyear (desc.) → sortname
,→ year (desc.)
,→ author
,→ 9999
,→ editor
,→ translator
,→ sorttitle
,→ title
→ sortkey

→ sorttitle
,→ title

→ sorttitle
,→ title

D Option Scope
The following table provides an overview of the scope (global/per-type/per-entry) of
various package options.
Option

Scope

abbreviate
alldates
arxiv
autocite
autopunct
autolang
backend

•
•
•
•
•
•
•

254

Global
•
•
•
•
•
•
–

Per-type
–
–
–
–
–
–
–

Per-entry
–
–
–
–
–
–
–

Option

Scope

backref
backrefsetstyle
backrefstyle
bibencoding
bibstyle
bibwarn
block
citecounter
citereset
citestyle
citetracker
clearlang
datamodel
dataonly
date
dateabbrev
datezeros
defernumbers
doi
eprint
eventdate
firstinits
hyperref
ibidtracker
idemtracker
indexing
isbn
labelalpha
labelnamefield
labelnameform
labelnamelang
labelnumber
labeltitle
labeltitlefield
labeltitleform
labeltitlelang
labeltitleyear
labeldate
language
loccittracker
maxalphanames
maxbibnames
maxcitenames
maxitems
maxnames
maxparens
mcite
minalphanames
minbibnames
mincitenames
mincrossrefs
minitems
minnames
natbib
notetype
opcittracker
openbib
origdate
pagetracker

•
•
•
•
•
•
•
•
•
•
•
•
•
–
•
•
•
•
•
•
•
•
•
•
•
•
•
•
–
–
–
•
•
–
–
–
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•

255

Global
•
•
•
•
–
•
•
•
•
–
•
•
–
–
•
•
•
•
•
•
•
•
•
•
•
•
•
•
–
–
–
•
•
–
–
–
•
•
•
•
•
•
•
•
•
•
•
–
•
•
•
•
•
•
–
•
•
•
•
•

Per-type
–
–
–
–
–
–
–
–
–
–
–
–
–
•
–
–
–
–
–
–
–
–
–
–
–
•
–
•
–
–
–
•
•
–
–
–
•
•
–
–
–
•
•
•
•
•
–
–
•
•
•
–
•
•
–
–
–
–
–
–

Per-entry
–
–
–
–
–
–
–
–
–
–
–
–
–
•
–
–
–
–
–
–
–
–
–
–
–
•
–
–
•
•
•
–
–
•
•
•
–
–
–
–
–
•
•
•
•
•
–
–
•
•
•
–
•
•
–
–
–
–
–
–

Option

Scope

parentracker
punctfont
refsection
refsegment
safeinputenc
singletitle
skipbib
skiplab
skiplos
sortcase
sortcites
sortfirstinits
sorting
sortlocale
sortlos
sortupper
style
terseinits
texencoding
uniquelist
uniquename
urldate
url
useauthor
useeditor
useprefix
usetranslator

•
•
•
•
•
•
–
–
–
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•

Global

Per-type

•
•
•
•
•
•
–
–
–
•
•
•
•
•
•
•
–
•
•
•
•
•
•
•
•
•
•

–
–
–
–
–
•
•
•
•
–
–
–
–
–
–
–
–
–
–
•
•
–
–
•
•
•
•

Per-entry
–
–
–
–
–
–
•
•
•
–
–
–
–
–
–
–
–
–
–
•
•
–
–
•
•
•
•

E Revision History
This revision history is a list of changes relevant to users of this package. Changes
of a more technical nature which do not aﬀect the user interface or the behavior of
the package are not included in the list. If an entry in the revision history states
that a feature has been improved or extended, this indicates a modiﬁcation which
either does not aﬀect the syntax and behavior of the package or is syntactically
backwards compatible (such as the addition of an optional argument to an existing
command). Entries stating that a feature has been modiﬁed, renamed, or removed
demand attention. They indicate a modiﬁcation which may require changes to
existing styles or documents in some, hopefully rare, cases. The numbers on the
right indicate the relevant section of this manual.
2.9a

2014

resetnumbers now allows passing a number to reset to . . . . . . . . 3.6.2
2.9

2014-02-25

Generalised shorthands facility . . . . . . . . . . . . . . . . . . . . . . . . 3.6.4

Biber only

Sorting locales can now be deﬁned as part of a sorting scheme . . . . . . 4.5.5

Biber only

Added sortinithash . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.1

Biber only

Added Slovene localisation (Tea Tušar and Bogdan Filipič)
Added \mkbibitalic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.4
Recommend begentry and finentry bibliography macros . . . . . . 4.2.3

256

2.8a

2013-11-25

Split option language=auto into language=autocite and
language=autobib . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
2.8

Biber only

2013-10-21

New langidopts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3

Biber only

hyphenation ﬁeld renamed to langid . . . . . . . . . . . . . . . . . 2.2.3
polyglossia support
Renamed babel option to autolang . . . . . . . . . . . . . . . . . . . 3.1.2.1
Corrected Dutch localisation
Added datelabel=year option . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Added datelabelsource ﬁeld . . . . . . . . . . . . . . . . . . . . . . 4.2.4.1
2.7a

2013-07-14

Bugﬁx - respect maxnames and uniquelist in \finalandsemicolon
Corrected French localisation
2.7

2013-07-07

Added ﬁeld eventtitleaddon to default datamodel and styles . . . . 2.2.2
Added \ifentryinbib, \iffirstcitekey and \iflastcitekey 4.6.2
Added postpunct special ﬁeld, documented multiprenote and
multipostnote special ﬁelds . . . . . . . . . . . . . . . . . . . . . 4.3.2
\UseEveryCiteHook, \UseEveryCitekeyHook,
\UseEveryMultiCiteHook, \UseNextCiteHook,
\UseNextCitekeyHook, \UseNextMultiCiteHook,
\DeferNextCitekeyHook . . . . . . . . . . . . . . . . . . . . . . 4.10.6
Fixed \textcite and related commands in the numeric and verbose styles3.7.2
Added multicite variants of \volcite and related commands . . . . . . 3.7.6
Added \finalandsemicolon . . . . . . . . . . . . . . . . . . . . . . . 3.9.2
Added citation delimiter \textcitedelim for \textcite and related
commands to styles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.1
Updated Russian localization (Oleg Domanov)
Fixed Brazilian and Finnish localization
2.6

2013-04-30

Added \printunit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.7.1
Added ﬁeld clonesourcekey . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.1

Biber only

New options for \DeclareLabelalphaTemplate . . . . . . . . . . 4.5.4

Biber only

Added \DeclareLabeldate and retired \DeclareLabelyear . . 4.5.9

Biber only

Added nodate localization string . . . . . . . . . . . . . . . . . . . . . . 4.9.2.14
Added \rangelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Added starred variants of \citeauthor and \Citeauthor . . . . . . 3.7.5

257

Restored original url format. Added urlfrom localization key . . . . . 4.9.2.15
Added \AtNextBibliography . . . . . . . . . . . . . . . . . . . . . . 4.10.6
Fixed related entry processing to allow nested and cyclic related entries
Added Polish localization (Anastasia Kandulina, Yuriy Chernyshov)
Fixed Catalan localization
Added smart “of” for titles to Catalan and French localization
Misc bug ﬁxes
2.5

2013-01-10

Made url work as a localization string, defaulting to previously hard-coded value
‘URL’.
Changed some Biber option names to cohere with Biber 1.5.
New sourcemap step for conditionally removing entire entries . . . . . . 4.5.2

Biber only

Updated Catalan localization (Sebastià Vila-Marta)
2.4

2012-11-28

Added relatedoptions ﬁeld . . . . . . . . . . . . . . . . . . . . . . . 4.5.1

Biber only

Added \DeclareStyleSourcemap . . . . . . . . . . . . . . . . . . . 4.5.2

Biber only

Renamed \DeclareDefaultSourcemap to \DeclareDriverSourcemap
4.5.2

Biber only

Documented \DeclareFieldInputHandler,
\DeclareListInputHandler and \DeclareNameInputHandler.
Updated Catalan localization (Sebastià Vila-Marta)
2.3

2012-11-01

Better detection of situations which require a Biber or LATEX re-run
New append mode for \DeclareSourcemap so that ﬁelds can be combined
4.5.2

Biber only

Extended auxiliary indexing macros
Added support for plural localization strings with relatedtype . . . . 4.5.1
Added \csfield and \usefield . . . . . . . . . . . . . . . . . . . . . 4.6.1
Added starred variant of \usebibmacro . . . . . . . . . . . . . . . . . 4.6.4
\iflistformatundef and \ifnameformatundef . . . . . . . 4.6.4
Misc bug ﬁxes
2.2

2012-08-17

Misc bug ﬁxes
Added \revsdnamepunct . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \ifterseinits . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2

258

Biber only

2.1

2012-08-01

Misc bug ﬁxes
Updated Norwegian localization (Håkon Malmedal)
Increased data model auto-loading possibilities . . . . . . . . . . . . . . . 4.5.3
2.0

Biber only

2012-07-01

Misc bug ﬁxes
Generalised singletitle test a little . . . . . . . . . . . . . . . . . . . 4.6.2

Biber only

Added new special ﬁeld extratitleyear . . . . . . . . . . . . . . . . 4.2.4

Biber only

Customisable data model . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.3

Biber only

Added \DeclareDefaultSourcemap . . . . . . . . . . . . . . . . . . 4.5.2

Biber only

Added labeltitle option . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.3

Biber only

Added new special ﬁeld extratitle . . . . . . . . . . . . . . . . . . . 4.2.4

Biber only

Made special ﬁeld labeltitle customisable . . . . . . . . . . . . . . . 4.2.4

Biber only

Removed ﬁeld reprinttitle . . . . . . . . . . . . . . . . . . . . . . . 3.4

Biber only

Added related entry feature . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4

Biber only

Added \DeclareNoinit . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.7

Biber only

Added \DeclareNosort . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.8

Biber only

Added sorting option for \printbibliography and
\printshorthands . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2

Biber only

Added ids ﬁeld for citekey aliasing . . . . . . . . . . . . . . . . . . . . . 2.2

Biber only

Added sortfirstinits option . . . . . . . . . . . . . . . . . . . . . . 3.1.2.3

Biber only

Added data stream modiﬁcation feature . . . . . . . . . . . . . . . . . . . 4.5.2

Biber only

Added customisable labels feature . . . . . . . . . . . . . . . . . . . . . . 4.5.4

Biber only

Added \citeyear* and \citedate* . . . . . . . . . . . . . . . . . . 3.7.5
1.7

2011-11-13

Added xdata containers . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.6

Biber only

Added special entry type xdata . . . . . . . . . . . . . . . . . . . . . . . 2.1.1

Biber only

Added special ﬁeld xdata . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3

Biber only

Support maxnames/minnames globally/per-type/per-entry . . . . . . . 3.1.2.1

Biber only

Support maxbibnames/minbibnames globally/per-type/per-entry . . 3.1.2.1

Biber only

Support maxcitenames/mincitenames globally/per-type/per-entry

3.1.2.1

Biber only

Support maxitems/minitems globally/per-type/per-entry . . . . . . . 3.1.2.1

Biber only

Support maxalphanames/minalphanames globally/per-type/per-entry3.1.2.3

Biber only

Support uniquelist globally/per-type/per-entry . . . . . . . . . . . . 3.1.2.3

Biber only

Support uniquename globally/per-type/per-entry . . . . . . . . . . . . 3.1.2.3

Biber only

Added \textcite and \textcites to all verbose citation styles . 3.3.1
Added special ﬁeld formats date, urldate, origdate, eventdate . 4.10.4
Added \mkcomprange* . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4

259

Added \mkfirstpage* . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Added \volcitedelim . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.1
Added missing documentation for \ifentrytype . . . . . . . . . . . . 4.6.2
Added \mkbibneutord . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.2
Added counter biburlnumpenalty . . . . . . . . . . . . . . . . . . . . 4.10.3
Added counter biburlucpenalty . . . . . . . . . . . . . . . . . . . . 4.10.3
Added counter biburllcpenalty . . . . . . . . . . . . . . . . . . . . 4.10.3
Added localization keys book, part, issue, forthcoming . . . . . . 4.9.2
Added some lang... and from... localization keys . . . . . . . . . . 4.9.2
Expanded documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . D
Added support for Russian (Oleg Domanov)
Updated support for Dutch (Pieter Belmans)
Fixed compatibility issue with textcase package
Fixed some bugs
1.6

2011-07-29

Added special ﬁeld sortshorthand . . . . . . . . . . . . . . . . . . . . 2.2.3

Biber only

Revised options maxnames/minnames . . . . . . . . . . . . . . . . . . . 3.1.2.1
Options maxcitenames/mincitenames now supported by backend . 3.1.2.1

Biber only

Options maxbibnames/minbibnames now supported by backend . . 3.1.2.1

Biber only

Added options maxalphanames/minalphanames . . . . . . . . . . . 3.1.2.3

Biber only

Removed local options maxnames/minnames from \printbibliography
3.6.2
Removed local options maxitems/minitems from \printbibliography
3.6.2
Removed local options maxnames/minnames from \bibbysection

3.6.2

Removed local options maxitems/minitems from \bibbysection

3.6.2

Removed local options maxnames/minnames from \bibbysegment

3.6.2

Removed local options maxitems/minitems from \bibbysegment

3.6.2

Removed local options maxnames/minnames from \bibbycategory 3.6.2
Removed local options maxitems/minitems from \bibbycategory 3.6.2
Removed local options maxnames/minnames from \printshorthands
3.6.4
Removed local options maxitems/minitems from \printshorthands
3.6.4
Added special ﬁeld format volcitevolume . . . . . . . . . . . . . . . . 3.7.6
Added special ﬁeld format volcitepages . . . . . . . . . . . . . . . . 3.7.6
Added special ﬁeld hash . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4.1
Added \mkcomprange . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Added \mkfirstpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Removed \mkpagefirst . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Fixed some bugs

260

Biber only

1.5a

2011-06-17

Fixed some bugs
1.5

2011-06-08

Added option uniquename=mininit/minfull . . . . . . . . . . . . 3.1.2.3

Biber only

Added option uniquelist=minyear . . . . . . . . . . . . . . . . . . . 3.1.2.3

Biber only

Updated documentation of uniquename counter . . . . . . . . . . . . . 4.6.2

Biber only

Updated documentation of uniquelist counter . . . . . . . . . . . . . 4.6.2

Biber only

Expanded documentation for uniquename/uniquelist options . . . 4.11.4

Biber only

Added editorial role reviser . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6
Added localization keys reviser, revisers, byreviser . . . . . . 4.9.2
Added bibliography heading none . . . . . . . . . . . . . . . . . . . . . . 3.6.8
Fixed some memoir compatibility issues
1.4c

2011-05-12

Fixed some bugs
1.4b

2011-04-12

Fixed some bugs
1.4a

2011-04-06

Enable uniquename and uniquelist in all authortitle styles . . 3.3.1
Enable uniquename and uniquelist in all authoryear styles . . . 3.3.1
Fixed some bugs
1.4

2011-03-31

Added package option uniquelist . . . . . . . . . . . . . . . . . . . . 3.1.2.3

Biber only

Added special counter uniquelist . . . . . . . . . . . . . . . . . . . . 4.6.2

Biber only

Revised and improved package option uniquename . . . . . . . . . . . 3.1.2.3

Biber only

Revised and improved special counter uniquename . . . . . . . . . . . 4.6.2

Biber only

Added \bibnamedelimi . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Added \bibindexnamedelima . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexnamedelimb . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexnamedelimc . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexnamedelimd . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexnamedelimi . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexinitperiod . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexinitdelim . . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibindexinithyphendelim . . . . . . . . . . . . . . . . . . 3.9.1
Fixed conﬂict with some ams classes
1.3a

2011-03-18

Fixed some bugs

261

1.3

2011-03-14

Support @thesis with isbn . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1
Updated terseinits option . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Allow macros in argument to \addbibresource and friends . . . . . 3.6.1
Allow macros in argument to \bibliography . . . . . . . . . . . . . . 3.6.1
Introducing experimental support for Zotero rdf/xml . . . . . . . . . . . 3.6.1

Biber only

Introducing experimental support for EndNote xml . . . . . . . . . . . . 3.6.1

Biber only

Added option citecounter . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.3
Added citecounter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2
Added \smartcite and \Smartcite . . . . . . . . . . . . . . . . . . 3.7.2
Added \smartcites and \Smartcites . . . . . . . . . . . . . . . . 3.7.3
Added \svolcite and \Svolcite . . . . . . . . . . . . . . . . . . . . 3.7.6
Added \bibnamedelima . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Added \bibnamedelimb . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Added \bibnamedelimc . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibnamedelimd . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1
Added \bibinitperiod . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Added \bibinitdelim . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Added \bibinithyphendelim . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Expanded documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.12.4
Added hpositioni parameter f to \DeclareAutoCiteCommand . . . . 4.3.1
1.2a

2011-02-13

Fix in \mkbibmonth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.10.4
1.2

2011-02-12

Added entry type @mvbook . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1
Added entry type @mvcollection . . . . . . . . . . . . . . . . . . . . 2.1.1
Added entry type @mvproceedings . . . . . . . . . . . . . . . . . . . . 2.1.1
Added entry type @mvreference . . . . . . . . . . . . . . . . . . . . . 2.1.1
Introducing remote resources . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1

Biber only

Introducing experimental ris support . . . . . . . . . . . . . . . . . . . . 3.6.1

Biber only

Added \addbibresource . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1
\bibliography now deprecated . . . . . . . . . . . . . . . . . . . . . 3.6.1
\bibliography* replaced by \addglobalbib . . . . . . . . . . . . 3.6.1
Added \addsectionbib . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1
Updated and expanded documentation . . . . . . . . . . . . . . . . . . . . 2.4.1
Introducing smart crossref data inheritance . . . . . . . . . . . . . . . 2.4.1.2

Biber only

Introducing crossref conﬁguration interface . . . . . . . . . . . . . . . 4.5.10

Biber only

Added \DefaultInheritance . . . . . . . . . . . . . . . . . . . . . . 4.5.10

Biber only

262

Added \DeclareDataInheritance . . . . . . . . . . . . . . . . . . 4.5.10

Biber only

Added \ResetDataInheritance . . . . . . . . . . . . . . . . . . . . 4.5.10

Biber only

Added \ifkeyword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2
Added \ifentrykeyword . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2
Added \ifcategory . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2
Added \ifentrycategory . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2
Added \ifdriver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.2
Added \forcsvfield . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Extended \mkpageprefix . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Extended \mkpagetotal . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Extended \mkpagefirst . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4
Added localization key inpreparation . . . . . . . . . . . . . . . . . 4.9.2
Rearranged manual slightly, moving some tables to the appendix
1.1b

2011-02-04

Added option texencoding . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1

Biber only

Added option safeinputenc . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1

Biber only

Expanded documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3.4
Improved mergedate option of bibliography style authoryear . . . . 3.3.2
Removed pass option of \DeclareSortingScheme . . . . . . . . . 4.5.5

Biber only

Fixed some bugs
1.1a

2011-01-08

Added unsupported entry type @bibnote . . . . . . . . . . . . . . . . . 2.1.3
Added \bibliography* . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1
Fixed some bugs
1.1

2011-01-05

Added option maxbibnames . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Added option minbibnames . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Added option maxcitenames . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Added option mincitenames . . . . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Fixed idemtracker=strict and idemtracker=constrict . . . 3.1.2.3
Added option mergedate to bibliography style authoryear . . . . . 3.3.2
Added support for prefixnumbers to bibliography style alphabetic 3.3.2
Made option useprefix settable on a per-type basis . . . . . . . . . . . 3.1.3

Biber only

Made option useauthor settable on a per-type basis . . . . . . . . . . . 3.1.3

Biber only

Made option useeditor settable on a per-type basis . . . . . . . . . . . 3.1.3

Biber only

Made option usetranslator settable on a per-type basis . . . . . . . 3.1.3

Biber only

Made option skipbib settable on a per-type basis . . . . . . . . . . . . 3.1.3

Biber only

Made option skiplos settable on a per-type basis . . . . . . . . . . . . 3.1.3

Biber only

263

Made option skiplab settable on a per-type basis . . . . . . . . . . . . 3.1.3

Biber only

Made option dataonly settable on a per-type basis . . . . . . . . . . . . 3.1.3

Biber only

Made option labelalpha settable on a per-type basis . . . . . . . . . . 3.1.2.3

Biber only

Made option labelnumber settable on a per-type basis . . . . . . . . . 3.1.2.3
Made option labelyear settable on a per-type basis . . . . . . . . . . . 3.1.2.3

Biber only

Made option singletitle settable on a per-type basis . . . . . . . . . 3.1.2.3

Biber only

Made option uniquename settable on a per-type basis . . . . . . . . . . 3.1.2.3

Biber only

Made option indexing settable on a per-type basis . . . . . . . . . . . . 3.1.2.1
Made option indexing settable on a per-entry basis . . . . . . . . . . . 3.1.2.1
Extended \ExecuteBibliographyOptions . . . . . . . . . . . . . 3.2.2
Added \citedate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7.5
Improved static entry sets . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.11.5

Biber only

Introducing dynamic entry sets . . . . . . . . . . . . . . . . . . . . . . . . 3.11.5

Biber only

Added \defbibentryset . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.11

Biber only

Added option mcite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.1

Biber only

Added mcite/mciteplus-like commands . . . . . . . . . . . . . . . . 3.7.10

Biber only

Added \sortalphaothers . . . . . . . . . . . . . . . . . . . . . . . . 3.9.1

Biber only

Extended \DeclareNameFormat . . . . . . . . . . . . . . . . . . . . . 4.4.2
Extended \DeclareIndexNameFormat . . . . . . . . . . . . . . . . . 4.4.2
Extended \DeclareListFormat . . . . . . . . . . . . . . . . . . . . . 4.4.2
Extended \DeclareIndexListFormat . . . . . . . . . . . . . . . . . 4.4.2
Extended \DeclareFieldFormat . . . . . . . . . . . . . . . . . . . . 4.4.2
Extended \DeclareIndexFieldFormat . . . . . . . . . . . . . . . . 4.4.2
Added \DeclareNameFormat* . . . . . . . . . . . . . . . . . . . . . . 4.4.2
Added \DeclareIndexNameFormat* . . . . . . . . . . . . . . . . . . 4.4.2
Added \DeclareListFormat* . . . . . . . . . . . . . . . . . . . . . . 4.4.2
Added \DeclareIndexListFormat* . . . . . . . . . . . . . . . . . . 4.4.2
Added \DeclareFieldFormat* . . . . . . . . . . . . . . . . . . . . . 4.4.2
Added \DeclareIndexFieldFormat* . . . . . . . . . . . . . . . . . 4.4.2
Introducing conﬁgurable sorting schemes

Biber only

Added \DeclareSortingScheme . . . . . . . . . . . . . . . . . . . . 4.5.5

Biber only

Added \DeclarePresort . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.5

Biber only

Added \DeclareSortExclusion . . . . . . . . . . . . . . . . . . . . 4.5.5

Biber only

Added \DeclareLabelname . . . . . . . . . . . . . . . . . . . . . . . 4.5.9

Biber only

Added \DeclareLabelyear . . . . . . . . . . . . . . . . . . . . . . . 4.5.9

Biber only

Improved special ﬁeld labelname . . . . . . . . . . . . . . . . . . . . . 4.2.4

Biber only

Improved special ﬁeld labelyear . . . . . . . . . . . . . . . . . . . . . 4.2.4

Biber only

Added \entrydata* . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1
Added \RequireBiber . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.6.4

264

Added option check to \printbibliography . . . . . . . . . . . . . 3.6.2
Added option check to \printshorthands . . . . . . . . . . . . . . 3.6.4
Added \defbibcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.10
Updated support for Portuguese (José Carlos Santos)
Fixed conﬂict with titletoc
Fixed some bugs
1.0

2010-11-19

First oﬃcially stable release
Renamed option bibencoding=inputenc to bibencoding=auto 3.1.2.1
Made bibencoding=auto the package default . . . . . . . . . . . . . 3.1.2.1
Added option backend=bibtexu . . . . . . . . . . . . . . . . . . . . . 3.1.2.1
Slightly updated documentation . . . . . . . . . . . . . . . . . . . . . . . 2.4.3
Updated support for Dutch (Alexander van Loon)
Updated support for Italian (Andrea Marchitelli)

265



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
Linearized                      : No
Page Count                      : 265
Page Mode                       : UseOutlines
Author                          : Philipp Lehman, Philip Kime
Title                           : The Biblatex Package
Subject                         : Programmable Bibliographies and Citations
Creator                         : LaTeX with hyperref package
Producer                        : LuaTeX-0.79.1
Keywords                        : tex, latex, bibtex, bibliography, references, citation
Create Date                     : 2014:06:25 22:12:48+02:00
Modify Date                     : 2014:06:25 22:12:48+02:00
Trapped                         : False
PTEX Fullbanner                 : This is LuaTeX, Version beta-0.79.1 (TeX Live 2014) (rev 4971) (TeX Live 2014) kpathsea version 6.2.0