我怎样才能告诉 Emacs 正确填充 Latex 注释

我怎样才能告诉 Emacs 正确填充 Latex 注释

当我在 emacs 中编辑 .tex 文件时,我经常使用 fill-paragraph。用 '%' 表示的注释有时会正确换行,有时则不会。我不清楚是什么导致此操作失败。

例子:

% This is a comment
This is a very very very long line of very very very long text

当我运行 fill-paragraph 时,有时会出现不良结果:

% This is a comment This is a very very 
very long line of very very very long text

我在 Latex 模式下使用 Emacs 23.1.1,并启用了以下次要模式:

Enabled minor modes: Abbrev Auto-Composition Auto-Compression
Auto-Encryption Auto-Fill Display-Time File-Name-Shadow Font-Lock
Global-Auto-Composition Global-Font-Lock Iswitchb Line-Number Outline
Shell-Dirtrack Show-Paren

答案1

(只是为了将该问题从未答复列表中删除。)

M-x fill-paragraph我发现这种行为——即通过或M-q——在注释附近不正确的换行有时在 中使用 Emacs 时会发生这种情况TeX-mode。使用 时LaTeX-mode,我没有遇到过此问题。使用 AUCTeX 时情况有所改善,这是使用 AUCTeX 的最不重要的原因之一。(无论如何,有关模式的更多信息,请参阅这里

如果 Emacs 猜测你的文件模式为“错误”,你可以通过设置局部变量来帮助它。这可以通过一个简单的

% -*- mode: latex -*-

在文件顶部。但是,首选方法是Local Variables在文件末尾/附近使用块:

%%% Local Variables: 
%%% mode: latex   
%%% TeX-master: t   
%%% End:

我更喜欢这个,因为你可以同时设置其他选项;例如,

%%% Local Variables: 
%%% mode: latex   
%%% TeX-master: t   
%%% TeX-engine: luatex
%%% mode: flyspell
%%% End:

答案2

对于 GNU Emacs,这个错误已经已报告由 Michael Orlitzky 提交的补丁将包含在 Emacs 27.1 中:

--- a/tex-mode.el   2019-01-07 09:26:07.000000000 -0500
+++ b/tex-mode.el   2019-11-09 08:42:56.649424361 -0500
@@ -1155,7 +1155,7 @@
        "\\>\\|\\\\[a-z]*" (regexp-opt '("space" "skip" "page") t)
        "\\>\\)"))
   (setq paragraph-separate
-   (concat "[\f%]\\|[ \t]*\\($\\|"
+   (concat "\\([ \t]*%\\)\\|[\f]\\|[ \t]*\\($\\|"
        "\\\\[][]\\|"


该补丁修复了一些情况,但不是全部。例如,如果在一行代码的末尾有一个注释,后面跟着另一行代码,则仍然会出现该错误。我已经已报告这也是,并将根据任何更新编辑此答案。

相关内容