Контекст: biblatex 2.9a
и biber 1.9
.
Благодаря defernumbers
, biblatex
цифровые метки верны даже при пропущенных записях в библиографии ( options={skipbib}
), как показано в следующем MWE:
\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}
что дает (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)
Но как только добавляется цитата \AtEndDocument
(путем комментирования предпоследней строки), числовые метки становятся неправильными (ASCII-арт):
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)
Примечания:
- С
bibtex
бэкэндом проблем нет. - С
biblatex 3.0
иbiber 2.0
все хуже: при добавлении цитаты\AtEndDocument
все числовые метки становятся0
.
решение1
biblatex выполняет много работы (очистки и т. д.) в хуке "end document". Вы должны убедиться, что ваша команда cite видна раньше. Так что либо переместите ваш \AtEndDocument
before \usepackage{biblatex}
, либо добавьте код к хуку:
\citetitle{cccc}%
\makeatletter\preto\@enddocumenthook{and \citetitle{dddd}}\makeatother
(Я не знаю, предлагает ли какой-либо из пакетов исправлений команду "\PreToAtEndDocument").