2010-08-12 85 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定製工作。