11

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):

enter image description here

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).

enter image description here

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?

  • 2
    From the docs: '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.' That seems to be what happened here. With the option set to false, all labels are assigned to the works cited at the beginning of the document. Since the last bibliography follows the global sorting scheme and contains all items, all looks good there. – moewe Oct 4 '16 at 7:30
  • 2
    ... With defernumbers=true the labels are assigned at the first printing in a bibliography command (that is the sub-bibliographies). That means that the sub-bibliographies are numbered continuously, but it disturbs the numbering (not the sorting!) in the global bibliography. – moewe Oct 4 '16 at 7:32
  • 1
    Of course you don't have to obey the warning. Just do what works for you (but double-check to be sure it really is good). If you have split bibliographies plus a global one with a numeric style, I strongly suspect that it is hard to avoid some weird effects. – moewe Oct 4 '16 at 7:35
  • 1
    As I said. The results are going to be a bit 'meh' either way. The new MWE illustrates exactly what I explained in more detail. There are situations where you want what defernumber does. Especially if you have split bibliographies without a global list and no overlapping entries that appear in two bibliographies. If you have an entry that appears more often you're out of luck if you want it to have the same number all the time. If you have a global bibliography you'll also have trouble with the sorting. – moewe Oct 8 '16 at 18:22
  • 1
    I can't speak for the developer who decided to put in the warning. All I can say is that there are situations where defernumbers gives preferable results. I other situations both settings give sub-par results and it is of course your privilege to choose the result you like and to heed or ignore the warning. – moewe Oct 9 '16 at 7:46
3

The biblatex documentation explains the defernumbers option as follows (p. 55)

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 then further on (§3.13.5 Bibliography Filters and Citation Labels, p. 132)

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.

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

  1. local bibliographies with overlapping entries
  2. and a global bibliography

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 no defernumbers setting yields brilliant results. If you have 'local' bibliographies but want to give preference to a 'global' bibliography, then defernumbers=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', where defernumbers=true is preferable. I can think of lists split by entry-type (@online vs not-@online; @books, @articles, ...), by unique keyword (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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.