将 \eqref 与 RefTeX 结合使用

将 \eqref 与 RefTeX 结合使用

如何在 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)))))

相关内容