Emacs / Auctex: автоматическое включение / отключение LaTeX-Math-mode

Я использую Emacs вместе с AucTeX (работаю под Ubuntu 10.04, если это важно).

Кто-нибудь знает, есть ли способ автоматически включить LaTeX-math-mode (второстепенный режим AucTeX), если точка находится в какой-либо математической среде (т.е. в $...$, $$...$$, begin{equation}...\end{equation} и т. Д.)?

Я полагаю, что есть относительно простой ответ, так как подсветка синтаксиса использует тот же критерий для раскраски математических вещей, но я ничего не нашел.


person phimuemue    schedule 12.08.2010    source источник


Ответы (2)


Если ответ andre-r вас не удовлетворяет, вот код, который настраивает ` для самостоятельной вставки в текстовом режиме и действует как префикс математического режима в математическом режиме. LaTeX-math-mode должен быть выключен.

(defun LaTeX-maybe-math ()
  "If in math mode, act as a prefix key for `LaTeX-math-keymap'.
Otherwise act as `self-insert-command'."
  (interactive)
  (if (texmathp)
      (let* ((events (let ((overriding-local-map LaTeX-math-keymap))
                       (read-key-sequence "math: ")))
             (binding (lookup-key LaTeX-math-keymap events)))
        (call-interactively binding))
    (call-interactively 'self-insert-command)))
(define-key LaTeX-mode-map "`" 'LaTeX-maybe-math)

Следующие улучшения оставлены в виде упражнений:

  • Сделайте это второстепенным режимом.

  • Сделайте его более устойчивым к неожиданному вводу (я тестировал только базовую операцию).

  • Лучшее отображение сообщения об ошибке, если пользователь нажимает несвязанную последовательность клавиш.

  • Показывать справку, если пользователь нажимает C-h или f1.

person Gilles 'SO- stop being evil'    schedule 12.08.2010

LaTeX-math-mode - это «специальный второстепенный режим для ввода текста с большим количеством математических символов». (Для тех, кто не знает, как это сделать, вы нажимаете, например, `A и получаете \ forall.) Так что я думаю, что это не так ' Больно оставить его включенным, даже если вы не изучаете математику.

Информационная страница поэтому предлагает:

(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

ИМХО, единственным недостатком будет то, что вам придется дважды нажать префикс: `` чтобы получить '', по крайней мере, это работает со стандартным префиксом `, настроенным в LaTeX-math-abbrev-prefix.

person andre-r    schedule 12.08.2010