Bei defernumbers sind die numerischen Beschriftungen von biblatex auch bei skipbib richtig, aber bei der Zitierung \AtEndDocument falsch.

Bei defernumbers sind die numerischen Beschriftungen von biblatex auch bei skipbib richtig, aber bei der Zitierung \AtEndDocument falsch.

Kontext: biblatex 2.9aUnd biber 1.9.

Dank defernumbers' biblatexsind die numerischen Beschriftungen auch bei aus der Bibliographie übersprungenen Einträgen ( options={skipbib}) korrekt, wie das folgende MWE zeigt:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{skipbib-aaaa,
  title={Aaaa (skipped from bibliography)},
  options={skipbib}
}
@misc{bbbb,
  title = {Bbbb}
}
@misc{cccc,
  title={Cccc (manually added at end of document)}
}
@misc{dddd,
  title={Dddd (automatically added at end of document)}
}
\end{filecontents}
%
\usepackage[backend=biber,defernumbers]{biblatex}%
\addbibresource{\jobname.bib}
%
\begin{document}
\citetitle{skipbib-aaaa} and \citetitle{bbbb}
\printbibliography
\citetitle{cccc}%
% \AtEndDocument{and \citetitle{dddd}}
\end{document}

was ergibt (ASCII-Art):

   Aaaa (skipped from bibliography) and Bbbb

References
[1] Bbbb.
[2] Cccc (manually added at end of document).

   Cccc (manually added at end of document)

Sobald jedoch ein Zitat hinzugefügt wird \AtEndDocument(durch Auskommentieren der vorletzten Zeile), werden die numerischen Beschriftungen falsch (ASCII-Art):

   Aaaa (skipped from bibliography) and Bbbb

References
[2] Bbbb.
[3] Cccc (manually added at end of document).
[4] Dddd (automatically added at end of document).

   Cccc (manually added at end of document)
   and Dddd (automatically added at end of document)

Anmerkungen:

  • Mit bibtexunserem Backend kein Problem.
  • Mit biblatex 3.0und biber 2.0ist es noch schlimmer: Wenn ein Zitat hinzugefügt wird \AtEndDocument, lauten alle numerischen Beschriftungen 0.

Antwort1

biblatex erledigt eine Menge Arbeit (Aufräumarbeiten und andere) im Hook „Dokument beenden“. Sie sollten sicherstellen, dass Ihr Befehl „cite“ früher angezeigt wird. Verschieben Sie also entweder Ihr „ \AtEndDocumentbefore“ \usepackage{biblatex}oder stellen Sie den Code dem Hook voran:

\citetitle{cccc}%
\makeatletter\preto\@enddocumenthook{and \citetitle{dddd}}\makeatother

(Ich weiß nicht, ob eines der Patchpakete einen „\PreToAtEndDocument“-Befehl bietet).

verwandte Informationen