在 \begin{document} 之后使用 addbibresource

在 \begin{document} 之后使用 addbibresource

我正在使用 XeLaTeX、biblatex 和 biber 编辑每期包含 10 到 15 篇文章的期刊。

在问题的项目文件夹中,有一个journal-issue.tex包含序言的主文件夹。然后,每篇文章都有一个子文件夹,其中包含文章本身、author-title.txt文章的参考书目文件以及bib-author-title.bib与其相关的所有其他内容(图像等)。

所有不同的文章都使用 加载\input{author-title.txt}。为了使结构尽可能清晰和简单,我想在文本文件中添加每篇文章的 bib 资源,但出现错误

LaTeX 错误:只能在序言中使用。

有没有办法让我从文章文件中添加 bib 资源?我试图避免在文档的序言中单独加载所有这些资源。

这样做的原因是我必须编辑所有文章以适应 LaTeX,而不想一直更改主文件。同时,我更愿意按文章保存参考书目文件,而不是为所有文章创建一个长文件。

答案1

您不能在文档主体中使用该命令。但您可以收集所需的数据并将其写入文档末尾的某个文件中:

\documentclass{article}
\usepackage{biblatex}

\ExplSyntaxOn
\tl_new:N \g_philipp_bibresources_tl
\NewDocumentCommand\addlocalbibresource{m}
 {
   \tl_gput_right:Nn \g_philipp_bibresources_tl
    {\exp_not:n{\addbibresource{#1}}\iow_newline:}
 }
\AtEndDocument
 {
   \iow_open:Nn\g_tmpa_iow{tmp_philipp_bibresources.tex}
   \iow_now:Nx \g_tmpa_iow {\g_philipp_bibresources_tl}
   \iow_close:N\g_tmpa_iow
 } 
\ExplSyntaxOff

\InputIfFileExists{tmp_philipp_bibresources.tex}{}{}

\begin{document}


\addlocalbibresource{biblatex-examples.bib}
\addlocalbibresource{test.bib}
\cite{doody}
\printbibliography
\end{document}

相关内容