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