Edited by moewe (2018-07-14) to conform with the new names and sorting template definitions of biblatex
>= v3.8. See the edit history for older versions.
Under any of the predefined sorting schemes, you can override the order of the bibliography using the presort
and sortkey
fields. The presort
field is intended to group entries together in the bibliography. The sortkey
field serves as a master sort key.
From the appendix the biblatex manual, you can see that the predefined sorting schemes establish chronology only with the year
and volume
fields. With biber as the backend you can use \DeclareSortingTemplate
to also consider month
and day
. When data are not available, fallback values can be specified with \literal{<value>}
. Otherwise "small" fallback values are used.
Here I've defined a new sorting scheme based on nyt
from biblatex.def
.
\documentclass{article}
\usepackage{csquotes}
\usepackage[american]{babel}
\usepackage[backend=biber,sorting=nymdt]{biblatex}
\DeclareSortingTemplate{nymdt}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\field[padside=left,padwidth=2,padchar=0]{month}
\literal{00}
}
\sort{
\field[padside=left,padwidth=2,padchar=0]{day}
\literal{00}
}
\sort{
\field{sorttitle}
}
\sort{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{0000}
}
}
\begin{filecontents}{\jobname.bib}
@Article{ref1,
author = {Lastname, Firstname},
title = {Article entry with presort field},
journaltitle = {Journal},
volume = {12},
date = {2001-01/2001-02},
pages = {92--122},
presort = {A}}
@Book{ref2,
author = {Lastname, Firstname},
title = {A book entry with presort field},
year = {2001},
month = feb,
day = {11},
presort = {A}}
@Book{ref3,
author = {Lastname, Firstname},
title = {A book entry with sortkey field},
date = {2000-01-01},
sortkey = {1}}
@article{itzhaki:phys,
author = {Itzhaki, Nissan},
volume = {54},
number = {2},
journal = {Phys. Rev. D},
doi = {10.1103/PhysRevD.54.1557},
year = {1996},
month = {7},
day = {15},
title = {Black hole information versus locality},
pages = {1557--1563}}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\nocite{ref1,ref2,ref3}
\nocite{knuth:ct,knuth:ct:a,knuth:ct:b,itzhaki,itzhaki:phys}
\printbibliography
\end{document}
Note the various ways dates are specified in the example. The date
field follows the yyyy-mm-dd
format, but you can omit -mm-dd
or -dd
. This field also takes date ranges separated by /
(e.g. yyyy/yyyy
, yyyy-mm-dd/yyyy-mm-dd
, yyyy/
). By default the beginning of ranges are used for sorting. You can also specify dates with the year
, month
and day
fields. String values for month
are accepted, but only in 3-letter abbreviations (jan
, feb
, mar
, ...). These must be given without quotes or braces (e.g. month = jul
).
You can override the chronological order somewhat with the sortyear
field. In biblatex-examples.bib
, the knuth:ct
, knuth:ct:a
and knuth:ct:b
entries are given the sortyear
values 1984-0
, 1984-1
and 1986-1
, respectively.
For descending dates, use the direction=descending
option setting for \sort
.
\DeclareSortingTemplate{ndymdt}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\field{sortname}
\field{author}
\field{editor}
\field{translator}
\field{sorttitle}
\field{title}
}
\sort[direction=descending]{
\field{sortyear}
\field{year}
\literal{9999}
}
\sort[direction=descending]{
\field[padside=left,padwidth=2,padchar=0]{month}
\literal{99}
}
\sort[direction=descending]{
\field[padside=left,padwidth=2,padchar=0]{day}
\literal{99}
}
\sort{
\field{sorttitle}
}
\sort[direction=descending]{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{9999}
}
}
Further details on \DeclareSortingTemplate
can be found in the biblatex manual.
Follow biblatex
's advice in the .log
file
Package biblatex Warning: Setting 'defernumbers=true' recommended.
and use defernumbers=true
.
edit: Newer versions of biblatex
do not recommend defernumbers
in the .log
file any more following https://github.com/plk/biblatex/issues/493. In most cases it is still a very good idea to use defernumbers
with split numeric bibliographies.
The biblatex
documentation explains on p. 53
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 [...] are assigned the first time an entry is printed in any
bibliography.
and notes in ยง3.12.5 Bibliography Filters and Citation Labels, p. 121, that
The citation labels generated by this package are assigned to the full
list of references before it is split up by any bibliography filters.
They are guaranteed to be unique across the entire document (or a
refsection
environment), no matter how many bibliography filters 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 first time an entry
is printed in any bibliography.
Best Answer
Use
\nocite
to "cite" the publications in the order you want.