Emacs / Auctex: автоматическое включение / отключение LaTeX-Math-режима - PullRequest
5 голосов
/ 12 августа 2010

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

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

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

Ответы [ 2 ]

5 голосов
/ 12 августа 2010

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

(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.

3 голосов
/ 12 августа 2010

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

На информационной странице предлагается:

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

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

...