2010-08-12 40 views
5

我使用Emacs与AucTeX(运行Ubuntu 10.04,如果有的话)。Emacs/Auctex:自动启用/禁用LaTeX数学模式

有谁知道是否有一种方法来自动启用乳胶数学模式(AucTeX的次要模式),如果该点在任何数学环境(即在$...$,一个$$...$$begin{equation}...\end{equation},等等) ?

我想有一个相对简单的答案,因为语法突出显示使用相同的标准着色数学的东西,但我找不到任何东西。

回答

4

如果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-hf1显示帮助。

2

LaTeX-math-mode“用于输入具有许多数学符号的文本的特殊次要模式”。(对于那些不知道如何操作的人,例如按“A”键即可)。所以我猜想,如果你不打算进入数学计算,那也不会伤害它。

信息页面,因此建议:

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

恕我直言,唯一的缺点是,你必须按两次前缀:``得到`,至少与标准前缀`在LaTeX-math-abbrev-prefix定制工作。