在文档末尾打印参考文献

在文档末尾打印参考文献

我试图使用 自动打印出文档末尾的参考列表\AtEndDocument{\printbibliography},但最终却

包 biblatex 警告:请重新运行 LaTeX。

无论我运行 LaTeX 多少次。在使用之前\AtEndDocumentbiblatex代码显示

这里,如果我们使用 .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(参数附加到的宏)是有问题的,因为内部处理是\AtEndDocumentbiblatex内部的代码可能会发生变化。相反,我决定将 添加到\printbibliography包的前面。这不取决于 biblatex 的加载时间,因为它始终位于前面。如果其他程序试图在 之前执行某些操作,则可能会导致问题。\@enddocumenthook\pretoetoolbox\printbibliography

\documentclass{article}
\usepackage{biblatex}
\usepackage{etoolbox}
\addbibresource{biblatex-examples.bib}
\makeatletter
\preto{\@enddocumenthook}{\printbibliography}
\makeatother
\begin{document}
  \autocite{aksin}
\end{document}

相关内容