如何正确地使 reftex 与多个 biblatex bib 一起工作?

如何正确地使 reftex 与多个 biblatex bib 一起工作?

我看到一条评论这里支持多种添加bibresource已集成到 Emacs 中。不过,我使用了一些自定义麦粒肿我需要比布拉特克斯包含所有必要参数的包。

出于某种原因,尽管TeX-解析-self设置为非零,我仍然得到零(reftex-using-biblatex-p)。我真的不想将 biblatex 的要求移出 sty 文件,这样“穷人的检查”\usepackage就可以在reftex-使用-biblatex-p.我会把它当作最后的手段。

有没有解决方法来添加比布拉特克斯进入TeX-active-styles? 我错过了什么?

更新

这是一个例子。运行一次,然后在 Emacs 中打开,注释掉常见的生成块(选择并命中M-;),重新访问文件(C-x C-v),最后尝试C-c [添加b2016. 它不会找到它,但会找到a2015

% runme with latexmk -pdf thisfile.tex
\documentclass{article}

\usepackage{filecontents}
\begin{filecontents}{common.sty}
\ProvidesPackage{common}
\RequirePackage[backend=biber,
backref=true,
sorting=nyvt,
url=false,
isbn=false,
doi=true,
eprint=false,
firstinits=true,
mincitenames=3,
maxcitenames=3,
maxbibnames=99,
style=authoryear]{biblatex}
\end{filecontents}

\begin{filecontents}{test1.bib}
@article{a2015,
    title = {Test 1},
    volume = {66},
    pages = {423--430},
    number = {6},
    journaltitle = {Some journal},
    author = {Author, B.C.},
    date = {2015-03-03},
}
\end{filecontents}

\begin{filecontents}{test2.bib}
@article{b2016,
    title = {Test 2},
    volume = {33},
    pages = {123--234},
    number = {2},
    journaltitle = {Another journal},
    author = {Creator, D.E.},
    date = {2016-03-03},
}
\end{filecontents}


\usepackage{common}
\addbibresource{test1.bib}
\addbibresource{test2.bib}

\begin{document}

hello\parencite{b2016}.

\printbibliography
\end{document}

更新 2

上述场景已在64 位 Emacs25.0.50.1 和 AUCTeX 11.88 在 MS Windows 上。原始值reftex-bibliography-commands包含添加bibresource

更新 3

将以下内容保存到startup.el并使用emacs -q --load startup.el

(setq TeX-parse-self t) ; Enable parse on load.
(setq TeX-auto-save t) ; Enable parse on save.
(setq reftex-save-parse-info t) ; I didn't know I had it either in my config
(add-hook 'LaTeX-mode-hook 'reftex-mode)

显然 AUCTeX 根本没有参与。而且看起来只有\usepackage{biblatex}两者中的实际结果围兜进入相关文件,即使用虚拟文件的文件内容技巧不起作用。我想知道 AUCTeX 是否受到影响TeX-active-styles现在只有“穷人的支票”在起作用(reftex-using-biblatex-p)

如果你没有\usepackage{biblatex}和 没有 rel 文件,后者将只使用第一个 bib 创建。一旦添加\usepackage{biblatex},除非你删除它,否则它不会影响 rel。

答案1

我敢于回答我自己的问题,至少对于那些现在就需要解决方法的人来说是这样。同样的例子在一个文件夹中有效,而在另一个文件夹中却无效,这让我很抓狂。显然重新访问文件并没有太大区别,所以为了彻底尝试,我建议完全关闭 Emacs。

2 个错误我怀疑。一个是reftex 无法识别间接包含 biblatex 的情况. 另一个是reftex 无法正确更新相关文件thisfile.rel如果您将原始文件命名为thisfile.tex)文件,无论\usepackage{biblatex}它在哪里。

有两种方法可以解决这个问题。手动将 bib 文件添加到 中thisfile.rel。确保在执行所有这些操作之前退出 Emacs。由于存在错误,它将保留您编辑的原样围兜进入那里。

另一种方法是删除thisfile.rel(如果存在),并\usepackage{biblatex}临时添加,这样rel文件将在保存时重新创建(前提是您启用了TeX-auto-save,但谁没有启用呢?)。这样做之后,您将得到./auto/thisfile.el由 AUCTeX (?) 生成的,其中提到了 biblatex,因此 reftex 知道这一点并可以创建thisfile.rel。您也可以使用文件内容使用一些虚拟文件。一旦您将所有条目都包含在rel文件中,您就可以将\usepackage{biblatex}其从主文档中删除,如果您将其包含在样式中的某个地方。完成此操作后,将不会有比布拉特克斯./auto/thisfile.el,但是围兜thisfile.rel也不会重新创建条目。

更新: 上面的文本经过编辑,使用明确的名称而不是一般意义,以避免混淆。此外,还澄清了第二个解决方法中关于和\jobname的内容./auto/thisfile.el比布拉特克斯入口。

相关内容