AUCTeX:关闭自动缩进

AUCTeX:关闭自动缩进

这本身不是 TeX,但它是关于编写 TeX 的,所以也许它是合适的。我发现 AUCTeX 的自动缩进方式与我的工作方式相反。例如,如果我不清楚,我喜欢将脚注缩进如下。当我输入右花括号并按 ENTER 时,AUCTeX 会将脚注带回到第一列。我将其移回并开始一个新行,如下所示,当我输入“paragraph.”并按 ENTER 时,它会将“Start”移动两个空格。

end.\footnote{%
    This is a footnote.}

Start of a new paragraph.
Second line

发生一次就很烦人。发生数百次就成了问题。

我花了太多时间调整自动缩进,现在我宁愿手动缩进。我搜索了如何在很多地方关闭它,包括这里和 emacs 网站上,但没有找到答案。目前这是我的 .emacs 文件,但我只是在挣扎。

;; JH trying to turn off AUCTeX indenting
(setq LaTeX-indent-environment-list '())
(setq LaTeX-indent-level 0)
(setq LaTeX-item-indent 0)
(setq LaTeX-left-right-indent-level 0)
(setq TeX-brace-indent-level 0)

答案1

大卫·卡莱尔说得有道理提到TeX-newline-function,默认情况下设置为newline。查看后者的文档字符串,我们发现:

如果启用了“electric-indent-mode”,则会缩进其添加的最后一行新行,并重新缩进前一行。要插入换行符,请使用 Mx electric-indent-just-newline。

我可以用我的设置重现您描述的行为,并且electric-indent-mode默认情况下它似乎是启用的(我的初始化文件中没有明确启用它,但它在这里启用了)。事实上,禁用它后,编辑器确实允许我“开始一个新段落。”而没有多余的空格。

因此,禁用electric-indent-mode(在 LaTeX 模式下,或者在任何地方,按照您的喜好)或设置TeX-newline-functionelectric-indent-just-newline可能是两个不错的选择。

建议禁用electric-indent-mode特定模式的一种合理方法是仅对一种模式(latex 模式)禁用 electric-indent-mode。即创建一个要禁用的函数electric-indent-local-mode,然后将其挂接到感兴趣的模式:

(defun JH/remove-electric-indent-mode ()
  (electric-indent-local-mode -1))

(add-hook 'LaTeX-mode-hook 'JH/remove-electric-indent-mode)
(add-hook 'tex-mode-hook 'JH/remove-electric-indent-mode)
;; and so on

但是,您似乎总是在反对自动缩进,而它本应帮助您。例如,为什么“当我输入右花括号并按 ENTER 时,AUCTeX 会将脚注带回到第一列。”似乎是因为您设置了(setq TeX-brace-indent-level 0)。此外,“当我输入“段落。”并按 ENTER 时,它会将“开始”移动两个空格”这一事实似乎表明您将缩进设置为两个空格。但是,当您手动缩进脚注时,您添加了空格。

默认行为似乎严重依赖于自动缩进做正确的事情,这是有道理的。但是,我认为你可以让事情非常接近你所想象的,以及自动缩进,使用:

(setq TeX-brace-indent-level 4)

这会将脚注(以及任何其他左括号)缩进四个空格,而其余部分仍缩进两个空格。仅此一点就足以让您输入您描述的内容。

相关内容