自动在附录前插入参考书目

自动在附录前插入参考书目

我在自动化文档时遇到了一个新问题。要求是在文档末尾插入参考书目。因此我使用\AtEndDocumentfrom etoolbox。如下面的 mwe 所示,这工作得很好。

\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\usepackage{blindtext}
\usepackage[backend=biber]{biblatex}

\addbibresource{biblatex-examples.bib}

\AtEndDocument{\printbibliography[type=article]}

\begin{document}
    \tableofcontents
    \Blinddocument

    \nocite{*}

    % Appendix is optional
    % But the bibliography should be printed first
    \appendix
    \chapter{Last chapter after bibliography}
    \blindtext
\end{document}

但还有第二个要求。如果有附录(可选),则必须提供参考书目附录。现在有两个问题:

  1. 如何测试文档中是否有附录?
  2. 如果有附录,如何自动将参考书目插入到附录之前。否则,如果没有附录,请将参考书目放在文档末尾。

答案1

您可以修补该\appendix命令以告诉它打印参考书目,并在打印时设置标志/切换。然后您可以在 中检查该标志\AtEndDocument

正如评论中所解释的那样 \pretocmd确保书目打印的逻辑性附录,而\apptocmd会使参考书目成为附录的一部分。如果您尝试使用 下面的 ,您可以看到两者之间的明显差异\printbibliography[heading=bibnumbered]\apptocmd参考书目将是第一章,附录的第一部分,\pretocmd另一方面第2章,正文的最后一章。

\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\usepackage{blindtext}
\usepackage[backend=biber]{biblatex}

\addbibresource{biblatex-examples.bib}

\newtoggle{appendixbib}
\pretocmd\appendix{\toggletrue{appendixbib}\printbibliography}{}{}
\AtEndDocument{\iftoggle{appendixbib}{}{\printbibliography}}

\begin{document}
    \tableofcontents
    \Blinddocument

    \cite{sigfridsson}

    % Appendix is optional
    % But the bibliography should be printed first
    \appendix
    \chapter{Last chapter after bibliography}
    \blindtext
\end{document}

答案2

像这样使用:

\documentclass{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\usepackage{blindtext}
\usepackage[backend=biber]{biblatex}

\addbibresource{biblatex-examples.bib}

\AtEndDocument{\printbibliography[type=article]}

\begin{document}
    \tableofcontents
    \Blinddocument

    \nocite{*}

    % Appendix is optional
    % But the bibliography should be printed first

\printbibliography[heading=none]

    \appendix
    \chapter{Last chapter after bibliography}
    \blindtext
\end{document}

相关内容