尝试插入引用时,RefTeX 出现以下错误:
No valid bibliography in this document, and no default available
我在 中保存了一个主.bib
文件~/Library/texmf/bibtex/bib/master_bib.bib
。当我运行 Biblatex-biber 时,它会识别该文件,因此会生成参考书目。问题是 RefTeX 无法识别该文件并产生上述错误。我还将该.bib
文件放在与该文件相同的目录中.tex
,结果相同。
这篇文章看起来很有希望https://tex.stackexchange.com/questions/23780/reftex-wont-detect-my-bib-file但那个问题自动解决了。
这RefTeX 手册(第 20 页)说
如果您不使用 BibTEX,但文档包含明确的
thebibliography
环境,RefTEX 将从那里收集其信息。
然而,我不知道在哪里或如何将其包括进去。
我怎样才能让它工作?
以下是 MWE:
\documentclass{article}
\usepackage[
backend=biber,
style=authoryear,
maxcitenames=2,
sorting=nyt,
backref=true
]{biblatex}
\addbibresource{master_bib.bib}
\begin{document}
Some text. \parencite{Mays:2005, Chow:1998}
\printbibliography
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-engine: xetex
%%% End:
我正在运行 Emacs 24,带有 AUCTeX 11.86 和 MacTeX 的 TeX Live 2011。
答案1
有两种方法可以让 RefTeX 找到你的参考书目。我建议使用两个都稳健性方法。
要使 RefTeX 识别您的参考书目,您可以将其添加到列表中
reftex-default-bibliography
。为此,请将以下内容添加到您的 .emacs:;; So that RefTeX finds my bibliography (setq reftex-default-bibliography '("path/to/bibfile.bib"))
并将其替换
path/to/bibfile.bib
为您的 bib 文件的路径。请注意,这是一个列表,因此如果您想将其指向多个参考书目,它可以包含多个路径。此方法非常适合在 Org 模式下通过 RefTeX 访问您的 .bib 文件。让 RefTeX 识别参考书目的另一种方法是通过在 .emacs 中添加以下内容
\addbibresource
将其添加到变量中:reftex-bibliography-commands
;; So that RefTeX also recognizes \addbibresource. Note that you ;; can't use $HOME in path for \addbibresource but that "~" ;; works. (setq reftex-bibliography-commands '("bibliography" "nobibliography" "addbibresource"))
两个变量记录在手册中。
答案2
添加
%%% reftex-default-bibliography: ("path/to/bibfile.bib")
在我的文件末尾与与该文件相关的其他命令一起看起来更好。
答案3
我通过插入'(reftex-use-external-file-finders t)
我的 emacs init 文件解决了这个问题。
它使 RefTeX 使用适当的命令来reftex-external-file-finders
查找文件。在我的例子中,它是kpsewhich -format=.bib %f
。
默认值为查看环境变量中指定的文件夹BIBINPUT
和TEXINPUT
。
我更喜欢这个变体,主要是因为我希望 emacs 和 latex 将使用相同的方法来确定要使用哪个 bib 文件。它也感觉更灵活,因为如果您创建另一个中心参考书目,则无需修改它。
答案4
有时问题可能只是文件尚未解析。这种情况发生在我身上几次,尽管打开时应该已经解析了(尤其是当我同时打开多个 latex 项目时)。
在这种情况下(假设您的已经reftex-bibliography-commands
包含addbibresource
),最快的解决方法就是M-x reftex-parse-all
。