我试图使用 自动打印出文档末尾的参考列表\AtEndDocument{\printbibliography}
,但最终却
包 biblatex 警告:请重新运行 LaTeX。
无论我运行 LaTeX 多少次。在使用之前\AtEndDocument
,biblatex
代码显示
这里,如果我们使用 .aux 文件中的本地号码,则我们一定不能更改校验和,因为这意味着延迟编号已完成。否则,我们会陷入无限的重新运行循环,因为由于号码更改而产生的校验和总是不同的。
因此大概我需要在打印参考书目后对插入的地方进行修改\printbibliography
或者再次调用一些代码。biblatex
虽然最简单的解决方案可能是\AtEndDocument{\printbibliography}
在之前调用\usepackage{biblatex}
,但我宁愿避免这种顺序依赖性。无论我在加载包之前还是之后运行代码,我如何才能稳健地将参考书目打印在文档末尾biblatex
。
\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\AtEndDocument{\printbibliography}
\begin{document}
\autocite{aksin}
\end{document}
答案1
通过查找内部处理来修补\@enddocumenthook
(参数附加到的宏)是有问题的,因为内部处理是\AtEndDocument
biblatex
内部的代码可能会发生变化。相反,我决定将 添加到\printbibliography
包的前面。这不取决于 biblatex 的加载时间,因为它始终位于前面。如果其他程序试图在 之前执行某些操作,则可能会导致问题。\@enddocumenthook
\preto
etoolbox
\printbibliography
\documentclass{article}
\usepackage{biblatex}
\usepackage{etoolbox}
\addbibresource{biblatex-examples.bib}
\makeatletter
\preto{\@enddocumenthook}{\printbibliography}
\makeatother
\begin{document}
\autocite{aksin}
\end{document}