8

我将 Emacs 与 AUCTeX 结合使用,使用$. 当自动填充时(例如,使用M-q),Emacs 经常在干扰阅读流畅性的位置(例如,下标等)处破坏这些内联数学环境。

$…$如果这样可以防止破坏,有没有办法告诉 Emacs 更喜欢将整个环境放在一个新行中?更具体地说,如果发生数学中断,则应将整个环境移至不应拆分的新行。

一个例子:

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed $a^2 + b^2 = c^2$ eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.

应该导致

Lorem ipsum dolor sit amet, consectetur adipisici elit, sed
$a^2 + b^2 = c^2$ eiusmod tempor incidunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam.
4

2 回答 2

5

尝试:

(add-hook 'LaTeX-mode-hook
          (lambda ()
            (add-to-list 'fill-nobreak-predicate 'texmathp)))

将其放入您的.emacs并重新启动 emacs。

于 2013-06-12T14:33:29.423 回答
1

您可以执行以下操作:

(add-hook 'LaTeX-mode-hook
          (lambda ()
            (add-hook 'fill-nobreak-predicate 'my-latex-fill-nobreak)))

如果你在一个简短的数学环境中,然后定义一个my-latex-fill-nobreak返回非零的函数,例如:

(defun my-latex-fill-nobreak ()
  (save-excursion
    (when (search-backward "$" (- (point) 20) t)
      ;; We found a nearby $.  Now let's see if it's an opening $
      ;; rather than a closing one.  Using font-lock properties is
      ;; a hack, but it might be good enough.  Apparently (texmathp)
      ;; could be a better choice.
      (eq (get-text-property (point) 'face) 'font-latex-math-face))))
于 2013-06-11T15:40:43.213 回答