AUCTeX: вставить ссылку / цитирование без макроса

Есть ли способ добавить формат ссылки / цитирования, который вставляет метку ссылки / цитирования непосредственно в буфер, не заключая его в макрос?

Чтобы было ясно: когда я ударил C-c )AUCTeX запрашивает справочный формат, когда я нажимаю return это вставит ~\ref{LABEL} в буфер [после выбора соответствующей ссылки в следующем буфере]. Я хотел бы добавить справочный формат, который связан с \?s (пробел), который вставляет только LABEL часть.

То есть я ударил C-c ), затем <space>, затем выберите ссылку и... тадаа есть LABEL в буфере.

[Изменить:] Я пытался

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

однако это заключает в себе ярлык в фигурных скобках и prepends ~ если есть слово перед точкой.

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))))
Другие вопросы по тегам