8

我正在尝试Tab使用 RefTeX 完成工作。键入C-c [并选择参考类型时,我会在 minibuffer 中出现提示。当我知道我想输入的围兜键的开头时,例如Campbell2006,我想输入Camp Tab并获取 Campbell2006 [sole completion]。

我已经设法为一些文件设置了它,但我不明白为什么它对他们有用,而不适用于其他文件。我注意到对于正确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方法起作用。它在某种程度上与在文件末尾添加 a 具有相同的缺陷,%%% reftex-default-bibliography:并且没有提供Tab完成。

在指定文件时,我尝试了、和作为文件分隔符的各种组合/,但我不知道应该使用哪个(我在 windows 环境中使用 emacs)。问题可能就这么简单,但是由于要尝试的参数很多,我确实无法确定问题出在哪里。//\\\

使RefTeX与参考书目顺利工作的分步方法是什么,包括Tab完成?

编辑:根据有关命令的 Reftex 手册条目可以完成reftex-citation

正则表达式使用扩展语法:&&' is interpreted as and. Thus,aaaa&&bbb' 匹配同时包含aaaa' andbbb' 的条目。输入正则表达式时,可以在 know [sic] citation keys 上完成。`=' 是一个很好的正则表达式,可以匹配所有文件中的所有条目。

但是,它没有提供有关如何使其工作的精确指导。

Kindahero 建议设置围兜条目列表并使用该completing-read命令。这听起来很明智,但是我想自动生成这个列表,这似乎是可行的,因为它适用于我的一些文档。

4

1 回答 1

5

的文档reftex-citation有点混乱。它承诺完成已知的引文关键字,但我相信“已知”是指之前在本次会议中使用过的关键字,而不是相应参考书目中的所有关键字。您可以使用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)))))

欢迎就适当的钩子提出建议以自动实现这一点。

于 2012-07-26T00:03:06.243 回答