在 LaTeX 中,标签定义为\label{eq:1}
。当您想要引用该方程式时,您可以轻松地\label
通过该命令在文档中搜索所有内容C-c )
,然后插入对该标签的引用\ref{eq:1}
label{eq:1}
目前我正在使用一种特殊的语言,其中每个标签都以表格和引用(没有反斜杠)的形式出现ref{eq:1}
。所以我想知道如何自定义 RefTeX 来搜索 label
和插入ref
所选标签。
答案1
RefTeX 将匹配定义的正则\label
表达式存储在 中reftex-label-regexps
;您必须对其进行自定义才能在label
不使用 的情况下进行匹配\
。您可以\
通过将其放入 shy 组中来使其成为可选项。
然后,您必须编写一些代码来运行这些函数reftex-reference
,并reftex-label
使用第二个可选NO-INSERT
参数,并将这些函数绑定到一些按键。将类似下面的代码放入您的代码中.emacs
应该可以解决问题:
(add-hook 'reftex-mode-hook
(lambda ()
;; do this all only once
(unless (member
"\\(?:\\\\\\)?label{\\(?1:[^}]*\\)}"
reftex-label-regexps)
;; label stuff
(setq reftex-label-regexps
'("\\(?:\\\\\\)?label{\\(?1:[^}]*\\)}"
"\\[[^][]\\{0,2000\\}\\<label[[:space:]]*=\[[:space:]]*\
{?\\(?1:[^],}]+\\)}?"))
(reftex-compile-variables)
(defun doconce-label ()
(interactive)
(insert "label{" (reftex-label nil t) "}"))
(local-set-key (kbd "C-c l") #'doconce-label)
;; ref stuff
(defun doconce-ref ()
(interactive)
(insert "ref{" (reftex-reference nil t) "}"))
(local-set-key (kbd "C-c r") #'doconce-ref))))