如何在 Emacs 中输入时自动打开 RefTeX 中的公式选择缓冲区?我的文件\eqref
中有以下行.emacs
(setq reftex-label-alist '((nil ?e nil "~\\eqref{%s}" nil nil)))
但这似乎没有像我希望的那样起作用(http://www.gnu.org/software/emacs/manual/html_node/reftex).. 现在,输入\eqref
然后按 Enter 键,只会
\eqref{}
在缓冲区中插入一个空值。我希望发生的是打开 RefTeX 中的方程式选择缓冲区,之后我将能够从该缓冲区中选择要引用的标签。
(请注意,输入\ref
(不是\eqref
)会按预期工作,也就是说,首先我得到一个问题:“标签类型:[efinNst]”,选择类型后,选择缓冲区就会打开)
我在 Ubuntu 12.04 上使用 GNU Emacs 版本 23.3.1。
我的.emacs
初始化文件是
(setq TeX-electric-escape t)
(setq reftex-label-alist '((nil ?e nil "~\\eqref{%s}" nil nil)))
(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
考虑示例文件t.tex
\documentclass{amsart}
\begin{document}
\begin{align}
\label{eq:1}
1+1=2
\end{align}
\end{document}
运行emacs t.tex
会在 Emacs 消息缓冲区中产生以下内容:
Loading 00debian-vars...done
Loading /etc/emacs23/site-start.d/50auctex.el (source)...
Loading /usr/share/emacs/23.3/site-lisp/auctex.el (source)...done
Loading /usr/share/emacs/23.3/site-lisp/preview-latex.el (source)...done
Loading /etc/emacs23/site-start.d/50auctex.el (source)...done
Loading /etc/emacs/site-start.d/50autoconf.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...done
Loading debian-ispell...done
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...done
Loading /etc/emacs/site-start.d/50emacs-goodies-el.el (source)...done
Loading /etc/emacs/site-start.d/50latex-cjk-common.el (source)...
Loading cjk-enc...done
Loading /etc/emacs/site-start.d/50latex-cjk-common.el (source)...done
Loading /etc/emacs/site-start.d/50latex-cjk-thai.el (source)...done
Loading /etc/emacs/site-start.d/50lilypond-data.el (source)...done
Loading /etc/emacs/site-start.d/50magit.el (source)...done
Loading /etc/emacs/site-start.d/50octave3.2-emacsen.el (source)...done
Loading /etc/emacs/site-start.d/50org-mode.el (source)...done
Loading /etc/emacs/site-start.d/50psvn.el (source)...done
Loading /etc/emacs/site-start.d/50thailatex.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Automatic display of crossref information was turned on
Applying style hooks... done
Sorting environment...
Removing duplicates... done
答案1
为了覆盖可能的其他宏定义,您应该在宏定义中eqref
添加一个虚拟宏。 您的 中的以下代码可实现此目的:(ignore)
.emacs
(add-hook 'LaTeX-mode-hook
'(lambda ()
(TeX-add-symbols '("eqref" TeX-arg-ref (ignore)))))