我正在尝试使RefTeX的Tab补全功能有效。当键入C-c [并选择引用类型时,我会在迷你缓冲区中出现提示。当我知道我想输入的围兜 key 的开头时,例如Campbell2006
,我想输入Camp
Tab并获取Campbell2006 [唯一的完成]。
我已经设法为某些文档设置了它,但是我不完全理解为什么它对它们有用,而对其他文件不起作用。我注意到,对于具有正确Tab>补全的文档,将以下行添加到name_of_tex_file.el
子文件夹中创建的auto
文件中:
(TeX-add-style-hook "name_of_tex_file"
(lambda ()
(LaTeX-add-bibliographies
"absolute_path_to_bib")))
我想我通过在文件末尾添加
%%% reftex-default-bibliography: absolute_path_to_bib
来获得此结果,但这有点麻烦,尤其是在多台计算机上编辑同一文件时。请注意,RefTeX之所以有效,是因为当我键入C-c [
Camp
Ret时,我得到了Campbell2006条目的列表(有时有点奇怪)。我试图设置%BIBINPUTS%环境变量没有成功。
似乎需要添加
(setq reftex-bibpath-environment-variables '("c:/path_to_bib_file/"))
才能使C-c [Camp
Ret方法生效。它具有与在文件末尾添加
%%% reftex-default-bibliography:
相同的缺陷,并且没有提供Tab补全。我在指定文件时尝试了
/
,//
,\\
和\
的各种组合作为文件分隔符,但我不知道确切该使用哪个(我在Windows环境中使用emacs)。这个问题可能就这么简单,但是由于有很多尝试失败的参数,因此请确定问题出在哪里。有什么逐步方法可以使RefTeX与书目(包括制表符补全)一起顺利工作?
编辑:
根据Reftex手册中有关
reftex-citation
命令的完成,可以完成:但是,它并未提供有关如何使其工作的精确指导。
Kindahero建议设置围兜条目列表,并使用
completing-read
命令。这听起来很明智,但是我想自动生成此列表,并且似乎可行,因为它可以与我的某些文档一起使用。 最佳答案
reftex-citation
的文档有点困惑。它保证完成对已知引文键的操作,但我相信“已知”是指此 session 之前使用的键,而不是相应引用书目中的所有键。您可以使用下面定义的LaTeX-add-all-bibitems-from-bibtex
命令来加载书目中的所有键:
(defun get-bibtex-keys (file)
(with-current-buffer (find-file-noselect file)
(mapcar 'car (bibtex-parse-keys))))
(defun LaTeX-add-all-bibitems-from-bibtex ()
(interactive)
(mapc 'LaTeX-add-bibitems
(apply 'append
(mapcar 'get-bibtex-keys (reftex-get-bibfile-list)))))
欢迎使用适当的钩子(Hook)来自动实现此操作的建议。
关于emacs - 在emacs中设置RefTeX Tab补全,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9682592/