【发布时间】:2010-08-12 06:24:36
【问题描述】:
我将 Emacs 与 AucTeX 结合使用(运行 Ubuntu 10.04,如果这很重要的话)。
如果点在任何数学环境中(即在$...$、$$...$$、begin{equation}...\end{equation} ,等等)?
我想有一个相对简单的答案,因为语法突出显示使用相同的标准来为数学内容着色,但我找不到任何东西。
【问题讨论】:
我将 Emacs 与 AucTeX 结合使用(运行 Ubuntu 10.04,如果这很重要的话)。
如果点在任何数学环境中(即在$...$、$$...$$、begin{equation}...\end{equation} ,等等)?
我想有一个相对简单的答案,因为语法突出显示使用相同的标准来为数学内容着色,但我找不到任何东西。
【问题讨论】:
如果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,则显示帮助。
【讨论】:
LaTeX-math-mode 是 “一种特殊的次要模式,用于输入带有许多数学符号的文本。”(对于那些不知道如何操作的人,您可以按例如 `A 并得到 \forall。)所以我想把它留在上面没有什么坏处,即使你没有进入数学。
信息页面因此建议:
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
恕我直言,唯一的缺点是您必须按两次前缀:`` 才能获得 `,至少可以使用在 LaTeX-math-abbrev-prefix 中自定义的标准前缀 `。
【讨论】: