2010-08-12 5 views
5

Я использую Emacs в сочетании с AucTeX (работает Ubuntu 10.04, если это имеет значение).Emacs/Auctex: Автоматическое включение/выключение LaTeX-Math-mode

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

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

ответ

4

Если ответ 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.

2

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

На странице информации, следовательно, предполагает:

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

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