biblatex 和子文件:以前报告的新型错误

biblatex 和子文件:以前报告的新型错误

首先我要说的是,我知道这个问题的变体已经被问过很多次了(至少在12345678),但尽管尝试了我读过的所有解决方案,我的错误仍然存​​在。

我最近更新了大量软件,因此我强烈怀疑其中一个更新触发了这个问题,因为之前一切都运行正常。

当前软件:macOS Ventura 13.1、TexLive 2022,所有软件包均通过 TexLive Utility 更新。VS Code + LaTeX Workshop(我常用的编辑器)和默认的 TexShop 都存在问题。如果我可以提供更多详细信息,请告诉我。

MWE 和重现步骤

文件层次:

main.tex
main.bib
--> chapter1.tex

main.tex 的内容:

\documentclass{report}

\usepackage{biblatex}
\addbibresource{main.bib}
\usepackage{subfiles}

\begin{document}

This citation works: \textcite{bib:Book}.
\subfile{Chapter1/chapter1.tex}

\end{document}

main.bib 的内容:

@book{bib:Book,
    author = {John Smith},
    title  = {A Book},
    year   = {2023}
}

chapter1.tex 的内容:

\documentclass[../main.tex]{subfiles}

\begin{document}

This one only works in the main document: \textcite{bib:Book}.

\end{document}

在 main.tex 上运行 pdflatex -> biber -> pdflatex (x2)(或默认 latexmk),然后在 chapter1.tex 上运行。两个引文在 main.tex 中均能很好地呈现;子文件中的一个引文呈现为“bib:Bookempty 引用。”其他错误包括“第 1 页的引用‘bib:Book’未定义”和“存在未定义的引用”。甚至日志在编译后也显示“错误 - 找不到‘main.bib’!”。

请注意,错误确实不是如果我将 chapter1.tex 移动到与 main.tex 相同的目录,则该路径仍然存在。实际上,似乎 subfiles 没有调整子文件的相对 .bib 路径,也就是说,子文件正在查找 main.bib它是文件夹而不是根文件夹。

这是新更新中的错误吗?我是否遗漏了什么?最好不要在每个文件夹中都放置一份 main.bib 副本 :)

欢迎任何想法,提前致谢!

最后说明:我的女朋友刚刚遇到了类似的问题。她正在使用 subfiles + graphicx,现在必须将她的 External Images 文件夹放在根目录和 subfiles 目录中,才能在两个地方输入图像。她今天早上没有更新所有软件,而且她的问题同样在 VS Code 和 TexShop(OS X Catalina 10.15.5)中重现,所以我很困惑。

答案1

我没有subfiles密切关注开发情况,但我很确定最近没有发生任何biblatex会对这里产生影响的变化。

如果你使用文件名\subfix{...}.bib帮助相关包弄清楚文件名始终与主文件相关,那么事情应该会起作用。因此,main.tex应该是

\documentclass{report}

\usepackage{biblatex}
\usepackage{subfiles}

\addbibresource{\subfix{main.bib}}

\begin{document}

This citation works: \textcite{bib:Book}.
\subfile{Chapter1/chapter1.tex}

\end{document}

使用子文件包时,添加参考书目文件的适当位置在哪里?这表明至少自 2021 年 2 月以来,这一程序就已经是必要的(另见ST3:在子文件中未找到 bib 文件)。快速浏览 GitHub 存储库表明手册建议\subfix使用\addbibresource 自 2019 年起

请注意,subfiles修补\bibliography命令(在 中被视为遗留命令)biblatex以包含\subfix,因此如果您\bibliography{main}使用https://tex.stackexchange.com/a/514240/35864你可以不用明确\subfix

无论哪种情况,我都建议仅在加载后才发出\addbibresource/ 。\bibliographysubfiles

相关内容