Emacs/Auctex:自动启用/禁用LaTeX-Math模式

6
我正在使用Emacs配合AucTeX(运行Ubuntu 10.04,如果有影响的话)。
请问是否有一种方法可以在光标在数学环境中(即在$...$、$$...$$、\begin{equation}...\end{equation}等中)自动启用LaTeX-math-mode(AucTeX的一个副模式)?
我想这应该有一个相对简单的答案,因为语法高亮使用相同的标准来着色数学内容,但我没有找到任何东西。
2个回答

6
如果 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-hf1,则显示帮助信息。


我遇到了一个错误:Debugger entered--Lisp error: (void-variable LaTeX-mode-map) (define-key LaTeX-mode-map "" 'LaTeX-maybe-math)`。 - alper

4

LaTeX-math-mode是一种特殊的次要模式,用于输入许多数学符号的文本。 (对于不知道如何操作的人,您可以按例如 `A` 并获得 \forall。)因此,我想即使您不输入数学公式,也不妨将其保留。

因此,信息页面建议:

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

我认为唯一的缺点是你需要按两次前缀:``才能得到`,至少在LaTeX-math-abbrev-prefix中自定义的标准前缀中可以实现这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接