首先我要说的是,我知道这个问题的变体已经被问过很多次了(至少在1,2,3,4,5,6,7,8),但尽管尝试了我读过的所有解决方案,我的错误仍然存在。
我最近更新了大量软件,因此我强烈怀疑其中一个更新触发了这个问题,因为之前一切都运行正常。
当前软件: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
/ 。\bibliography
subfiles