AUCTeX:插入没有宏的引用/引用

时间:2014-09-10 16:07:11

标签: emacs auctex

有没有办法添加引用/引用格式,将引用/引用标签直接插入缓冲区而不将其封装到宏中?

要明确:当我点击C-c ) AUCTeX提示输入参考格式时,当我点击return时,它会将~\ref{LABEL}插入缓冲区[选择之后]适当参考下一个缓冲区]。我想添加一个绑定到\?s(空格)的引用格式,只插入LABEL部分。

也就是说:我点击了C-c ),然后点击了<space>,然后在缓冲区中选择了引用和... tadaa LABEL

[编辑:] 我试过

(eval-after-load "latex"
       '(progn
          (add-to-list
                'reftex-ref-style-alist
                '("Default" t
                  (("" ?\s))))))

然而,如果在点之前有一个单词,则用大括号括起标签并在前缀~

1 个答案:

答案 0 :(得分:1)

我通过向around-advice添加reftex-reference来创建解决方案,但是,它不是一个漂亮的解决方案。我会把它作为答案,但我仍然希望有更好的解决方案。

(eval-after-load "latex"
  '(progn
     (add-to-list
      'reftex-ref-style-alist
      '("Default" t
    (("LABEL ONLY" ?\s))))

     (defadvice reftex-format-special (around reftex-format-special-labely-only activate)
       "Advice `reftex-format-special' such that if
REFSTYLE is \"LABEL ONLY\" it will insert
only the reference's label."
       (if (string= (ad-get-arg 2) "LABEL ONLY")
       (setq ad-return-value (format "%s" (ad-get-arg 0)))
     ad-do-it))))