Update
In order to better illustrate my question, I change the MWE for a more complete one and explain a bit further what I mean.
Context
Consider the following MWE:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[%
backend=biber,refsegment=section,
% defernumbers=true,
]{biblatex}
%
\addbibresource{biblatex-examples.bib}
%
\pagestyle{empty}
\AtBeginDocument{\footnotesize}
\AtBeginBibliography{\footnotesize}
\begin{document}
\section{First section}
\autocite{westfahl:space,herrmann,gillies}.
\printbibliography[heading=subbibliography,segment=\therefsegment]
%
\section{Second section}
\autocite{glashow,aksin,gillies,matuz:doody}.
\printbibliography[heading=subbibliography,segment=\therefsegment]
%
\printbibliography
\end{document}
Its compilation leads to this duplicated warning:
Package biblatex Warning: Setting 'defernumbers=true' recommended.
Advice not followed (defernumbers=false
)
The result is not so bad IMHO (sort order as expected):
Advice followed (defernumbers=true
)
Following the advice to set defernumbers=true
, no warning but a an esoteric order of the labels: sorting is by name but the labels are not sorted in ascending order (see below the following image a much more complete example).
Much more complete example
Below is a more complete example that better illustrates the troubles coming from the non ascending order of the labels.
Children play: just by reading the resulting document as if it would be printed, try to find details of reference e.g. [84]
cited in 2nd section ๐
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[cm]{fullpage}
\usepackage{multicol}
\usepackage[%
backend=biber,refsegment=section,
defernumbers=true,
]{biblatex}
%
\addbibresource{biblatex-examples.bib}
%
\pagestyle{empty}
\AtBeginDocument{\tiny}
\AtBeginBibliography{\tiny}
\begin{document}
\begin{multicols}{3}%
\section{First section}
\autocite{%
gaonkar,%
companion,%
nietzsche:ksa1,%
moore,%
cicero,%
augustine,%
britannica,%
maron,%
kullback:reprint,%
vizedom:related,%
markey,%
weinberg,%
wassenberg,%
augustine,%
almendro,%
knuth:ct:related,%
murray,%
sigfridsson,%
geer,%
westfahl:space,%
bertram,%
baez/article,%
kastenholz,%
shore,%
kullback:related,%
hammond,%
worman,%
knuth:ct:a,%
spiegelberg,%
knuth:ct:b,%
aksin,%
wilde,%
sorace,%
matuz:doody,%
vangennep:related,%
padhye,%
cicero,%
malinowski,%
baez/online,%
aristotle:anima,%
kullback:reprint,%
vangennep,%
nietzsche:historie,%
knuth:ct,%
kant:ku,%
piccato,%
gaonkar:in,%
piccato,%
sarfraz,%
glashow,%
massa,%
knuth:ct:e,%
itzhaki,%
jcg,%
angenendt,%
cms,%
gaonkar,%
knuth:ct:d,%
padhye,%
averroes/hercz,%
kant:kpv,%
moore,%
vazques-de-parga,%
nietzsche:ksa,%
chiu,%
geer,%
knuth:ct,%
reese,%
maron,%
knuth:ct:a,%
sigfridsson,%
knuth:ct:c,%
hyman,%
gonzalez,%
kant:kpv,%
gillies,%
aristotle:rhetoric,%
nussbaum,%
britannica,%
iliad,%
brandt,%
springer,%
knuth:ct:e,%
knuth:ct:related,%
westfahl:frontier,%
massa,%
baez/online,%
vangennep:trans,%
moore:related,%
jcg,%
nussbaum,%
}
\printbibliography[heading=subbibliography,segment=\therefsegment,title=References
of section 1]
%
\section{Second section}
\autocite{%
averroes/bland,%
almendro,%
vangennep:related,%
murray,%
averroes/hercz,%
sarfraz,%
bertram,%
angenendt,%
knuth:ct:c,%
herrmann,%
gerhardt,%
companion,%
aristotle:anima,%
aristotle:rhetoric,%
baez/article,%
ctan,%
moraux,%
cms,%
spiegelberg,%
moore:related,%
doody,%
wassenberg,%
reese,%
matuz:doody,%
coleridge,%
ctan,%
salam,%
moraux,%
loh,%
vizedom:related,%
aristotle:poetics,%
malinowski,%
laufenberg,%
cotton,%
salam,%
aristotle:poetics,%
gaonkar:in,%
gonzalez,%
knuth:ct:b,%
glashow,%
aristotle:physics,%
nietzsche:ksa,%
nietzsche:historie,%
hammond,%
vangennep:trans,%
worman,%
westfahl:space,%
pines,%
weinberg,%
knuth:ct:d,%
westfahl:frontier,%
laufenberg,%
nietzsche:ksa1,%
kullback,%
yoon,%
chiu,%
kant:ku,%
vangennep,%
aristotle:physics,%
vazques-de-parga,%
sorace,%
yoon,%
kowalik,%
brandt,%
aksin,%
loh,%
doody,%
averroes/bland,%
itzhaki,%
kastenholz,%
hyman,%
shore,%
kullback:related,%
kowalik,%
kullback,%
jaffe,%
gerhardt,%
coleridge,%
herrmann,%
iliad,%
springer,%
cotton,%
markey,%
gillies,%
pines,%
wilde,%
averroes/hannes,%
averroes/hannes,%
jaffe,%
}
\printbibliography[heading=subbibliography,segment=\therefsegment,title=References
of section 2]
%
\printbibliography
\end{multicols}
\end{document}
Question
Hence, we see defernumbers=true
possibly makes details of references very hard to find. So, what are the pros of defernumbers=true
?
Best Answer
The
biblatex
documentation explains thedefernumbers
option as follows (p. 55)and then further on (ยง3.13.5 Bibliography Filters and Citation Labels, p. 132)
This explains what you are seeing in your examples. With
defernumbers=false
the labels are assigned to the full set of references at the beginning of the document (according to the global sorting scheme). Since the global\printbibliography
at the end prints all references with the global sorting scheme, the numbering there is 'correct'. In the local bibliographies, however, entries are 'skipped' now, so they don't read chronologically.If you have
defernumbers=true
a reference gets its (unique) label the first time it is printed in any bibliography. So the numbers are chronological in the local bibliographies. With the notable exception of[1]
that appears in both local lists. It can't be assigned[7]
in the second list, because it is already[1]
. And it can't be placed before all other references in the second list, because then the sorting would not be according to the sorting scheme. The global bibliography of course suffers the same fate: if entries are sorted according to the sorting scheme, the numbering is not going to be continuous.You'll find that in the situation you have of
both settings give sub-par results. And it is not clear at all if and how that issue should be resolved, i.e. how 'good' output would look like in this case.
If you, however, have a document with non-overlapping sub-bibliographies (and no global bibliography) then
defernumbers=true
is preferable. Because then the numbering of the first bibliography will then be resumed by the second.So you could argue that there are situations where
defernumbers=true
is preferable, while in other situations nodefernumbers
setting yields brilliant results. If you have 'local' bibliographies but want to give preference to a 'global' bibliography, thendefernumbers=false
might be the better choice, because then at least the global list will be good, while the local ones might not look as nice (but at least the numbering is strictly increasing for each list).Note that many use cases for split bibliographies that do not include splitting by
refsegment
are probably going to be of the type 'multiple sub-bibliographies with non-overlapping entries without global list', wheredefernumbers=true
is preferable. I can think of lists split by entry-type (@online
vs not-@online
;@book
s,@article
s, ...), by uniquekeyword
(split 'primary' and 'secondary' references), by author ('works by this author' vs. 'works by all the other people'), ...tl;dr
In some situations both settings yield sub-par results. But in most cases with split bibliographies,
defernumbers=true
, which makes sure that the sub-bibliographies have proper numbering, is probably to be preferred.