我开始使用org-mode编写数学论文,因此我大量使用了乳胶环境,例如proof
,theorem
,lemma
等。例如,我经常写< / p>
\begin{proof}
a very long proof follows
\end{proof}
问题是在组织模式下fill-paragraph
(或M-q
)在乳胶环境中不起作用。这使我的生活变得复杂,因为一些证明可能很长,在编译为pdf时达到几页,我无法在org-mode中有效地格式化它们。我无法在手册中找到有关控制段落填充的选项的任何信息。在这种情况下是否可以启用fill-paragraph
?
答案 0 :(得分:1)
我有一个命令可以绑定到Org中的M-q:
(defun leuven-good-old-fill-paragraph ()
(interactive)
(let ((fill-paragraph-function nil)
(adaptive-fill-function nil))
(fill-paragraph)))
虽然,我不明白为什么默认情况下没有启用它。也许是Org ML的问题?
答案 1 :(得分:0)
如果使用组织块而不是乳胶环境,问题就会消失:
#+BEGIN_proof
...
#+END_proof
这将导出为\begin{proof}...\end{proof}
。它还允许您在块内使用org语法,并填充段落作品。
如果您不想这样做,可以尝试visual-line-mode
作为解决方法。
编辑:更改填充段落行为
如果你想填充段落在乳胶环境中工作,你必须深入挖掘一下。填充由org-fill-paragraph
中的org.el
完成,此功能默认忽略乳胶环境。要更改此设置,请转到功能的末尾并替换
;; Ignore every other element.
(otherwise t)
与
(latex-environment nil) ;; use default fill-paragraph
;; Ignore every other element.
(otherwise t)
如果您不想更改组织来源,可以改用建议,例如
(defun org-fill-paragraph--latex-environment (&rest args)
"Use default fill-paragraph in latex environments."
(not (eql (org-element-type (org-element-context)) 'latex-environment)))
(advice-add 'org-fill-paragraph :before-while #'org-fill-paragraph--latex-environment)