RefTeX 找不到参考书目文件

RefTeX 找不到参考书目文件

我在 MacOS 上使用最新的 Aquamacs(我想知道为什么所有这些与 emacs 相关的问题都发布在 tex.stackexchange.com 上而不是 emacs.stackexchange.com 上)。

我希望我已经正确配置了我的 Emacs。至少,这是相关的定义.emacs

(setq reftex-extra-bindings t)
(require 'reftex)
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(require 'bibtex)
(bibtex-set-dialect 'biblatex)
(setq LaTeX-biblatex-use-Biber t)
(setq TeX-command-BibTeX "Biber")
(setq reftex-bibliography-commands
      '("bibliography" "nobibliography" "addbibresource")) 
(setq reftex-bibpath-environment-variables
      '(".:~/lib/texmf/bibtex/bib//:/usr/local/texlive/texmf-local/bibtex/bib//:/usr/local/texlive/2018/texmf-dist/bibtex/bib//"))
; (reftex-use-external-file-finders t)
(setq reftex-external-file-finders
      '(("tex" . "kpsewhich -format=.tex %f")
    ("bib" . "kpsewhich -format=.bib %f")))

Emacs 毫无怨言地启动了。

接下来,我将这个 MWE(只是为了完整......)设置为文件test.tex

\documentclass{scrbook}

\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=numeric]{biblatex}

\addbibresource{computer.bib}

\begin{document}

% Waiting to insert \cite{} here

\end{document}

\addbibresource{computer.bib}我以通常的方式添加了该行: C-cRET addbi TABRET。此时,通过按下TAB,Emacs 完成命令\addbibresource并将此 LaTeX 命令插入缓冲区,而仍在 Minibuffer 中,系统会询问我选项。我RET再次按下 跳过了该问题。现在 Emacs 询问(仍在 minibuffer 中)要使用的参考书目文件。我输入comTAB,然后 Emacs 再次完成完整文件名computer.bib,我通过 插入了该文件名RET

我怀疑,Emacs 知道它的存在~/lib/texmf/bibtex/bib/JB/computer.bib,因此能够完成它的文件名,因为我定义了reftex-bibpath-environment-variables(如上所示)。

Emacs 还被指示自动扫描 LaTeX 文件。因此,此时自动生成的文件auto/test.el显示:

(TeX-add-style-hook
 "test"
 (lambda ()
   (TeX-add-to-alist 'LaTeX-provided-package-options
                     '(("fontenc" "T1") ("biblatex" "backend=biber" "style=numeric")))
   (add-to-list 'LaTeX-verbatim-environments-local "semiverbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "minted")
   (add-to-list 'LaTeX-verbatim-environments-local "Verbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "Verbatim*")
   (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "BVerbatim*")
   (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "LVerbatim*")
   (add-to-list 'LaTeX-verbatim-environments-local "SaveVerbatim")
   (add-to-list 'LaTeX-verbatim-environments-local "VerbatimOut")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperref")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperimage")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "hyperbaseurl")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "nolinkurl")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "path")
   (add-to-list 'LaTeX-verbatim-macros-with-braces-local "url")
   (add-to-list 'LaTeX-verbatim-macros-with-delims-local "path")
   (add-to-list 'LaTeX-verbatim-macros-with-delims-local "Verb")
   (add-to-list 'LaTeX-verbatim-macros-with-delims-local "url")
   (TeX-run-style-hooks
    "latex2e"
    "scrbook"
    "scrbook10"
    "fontenc"
    "biblatex")
   (LaTeX-add-bibliographies
    "computer"))
 :latex)

我很幸运,倒数第二个条目显示了正确的参考书目文件"computer"。在终端/shell 中进行快速测试可得到

<funnyprompt>:~$ kpsewhich bib computer.bib
/Users/tmjb/Library/texmf/bibtex/bib/JB/computer.bib
<funnyprompt>:~$ grep texstudio `kpsewhich bib computer.bib`
@Online{texstudio, 
                 url = {http://texstudio.sourceforge.net/manual/current/usermanual_en.html},

这应该证明该文件存在并且包含具有所需键“texstudio”的条目。


编辑:~/lib/在我的例子中扩展为/Users/tmjb/Library/


接下来我将光标移到下方\begin{document}并开始插入\cite-命令(同样以通常的方式):(C-cc这对我来说是一种快捷方式,与 相同C-c[)。在迷你缓冲区中,RefTeX 要求我插入正则表达式。我插入texstudio,我碰巧知道它存在于给定的参考书目文件中。按下 后,RETEmacs 发出抱怨Sorry, no matches found。光标离开迷你缓冲区并仍在主缓冲区中等待,但没有插入任何文本,甚至没有插入已经定义的命令\cite

-buffer*Message*说:

Making completion list...
   (?=Help)

Scanning bibliography database test.bib
Sorry, no matches found

Emacs 为什么要扫描test.bib?这个文件根本不存在。它也没有在任何地方定义(包括 LaTeX 文件和 emacs 配置文件)!

我的配置中遗漏了什么,让 Emacs 扫描参考书目​​文件,它能够完成其文件名。


更新

按照 Arash Esbati 的建议,我~用扩展路径进行了替换/Users/tmjb,最后我甚至重新启动了 emacs,它就起作用了!

我删除了\addbibliography{...}文件中的条目,然后重新输入了参考书目文件,要么添加一\bibliography{tuc-thesis,latex-base,typographie,computer}大行(每个列出的文件都在迷你缓冲区中完成),然后\addbibresource{}再添加四行。我键入C-cC-n以重新扫描 LaTeX 文件。然后我检查了自动文件。令人惊讶的是,它只包含四个参考书目文件中的三个。无论我如何设置我的文件,只有那些不在本地目录中的参考书目文件才会列在自动文件中。

然后我就能够\cite{}在主文件中插入一个命令了。到目前为止,这是朝着正确方向迈出的一步 :-)

成功将 a 插入\cite主文件后,我还能够将\cites 插入子文件。

仍然无法正常运行的是,对于不在本地目录中的参考书目,标签的自动完成功能不起作用。但我认为,我暂时可以忍受这一点!

相关内容