我将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.
答案 0 :(得分:5)
尝试:
(add-hook 'LaTeX-mode-hook
(lambda ()
(add-to-list 'fill-nobreak-predicate 'texmathp)))
将其放入.emacs
并重新启动emacs。
答案 1 :(得分: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))))