LaTeX文档中怎样取消自动长行截成多个短行

请各位大佬先看图:

在.tex文件中,一个长行(无论中西文),如果其中有任何操作变动(如回车、加空格、加个单词等),就自动变成多个短行。其他文档中(如*scratch*)我没有遇到这种现象。

我尝试过搜索fold、truncate、fill等词,也找不出阻止的办法。偶然发现M-x toggle-text-mode-auto-fill连续2遍,可以不再断行了,但是每次都这样感觉不够方便。

请问各位大佬,有哪一句elisp语句可以取消类似.tex文档中这种长行自动变短行的行为?先谢谢啦~~

你是不是开启了visual-line-mode?

是的,如果不用,长句转行时单词中间就分开了。

非常感谢~~~

参照您的提示,安全的做法找到了:(add-hook 'LaTeX-mode-hook 'turn-off-auto-fill)

1 个赞

latex-mode 里并没有启用 auto-fill。找出什么地方用了 turn-on-auto-fill / (auto-fill-mode -1) 才是正道。而不是稀里糊涂任它开启,然后用的时候发现问题了,再一个个 mode 里关闭它。

1 个赞

谢谢您的意见。

实在是水平所限,看问题看不深入。我用的是现成的配置,不会自己写配置,只是阅读配置的使用说明,做几个简单小调整,完全是实用主义。

这个问题也有意识到,可能是哪里开启了auto-fill(否则我用的配置里,不会是.tex文件开启了而.txt文件没开启),但不好动配置文件,只敢在使用说明划定的文件里改改。利用@ LdBeth给的链接,才有了点线索。其中讲到统一用(auto-fill-mode -1)的关闭方法,我担心可能是我个人的喜好问题,怕一棍子打死所有,就只好针对具体的LaTeX-modeorg-mode分别进行了。

先找到问题,再考虑能不能修改。而不是先认为不能改,然后因此不去找问题。这样本末倒置了。

出发点不同,路线便不同。Emacs我就是用作工具,能发挥作用就行了,没多想去hack。说到底,没有学elisp,处处拦路虎。

还有,在spacemacs这么nb的配置中,也是单独设置变量,来关掉auto-fill的。看来,这种头疼医头、脚疼医脚的办法也是有的。

 (latex :variables
        latex-build-engine 'xetex
        latex-enable-auto-fill nil)

这不是头痛医头,这是知其所以然的写法。

ctex 对中文折行不会像英文一样有新增空格,所以其实并不影响最后的生成(但 markdown org-mode 是会的,因为没有针对中文处理)。就个人习惯来说折行比较舒服

1 个赞

经您这么一说,觉得踏实了不少。LaTeX中换行相当于空格,多个空格当作一个空格处理。对于英文来说,在单词后的空格处折行根本没有影响,也增加了视觉的方便性,这也许就是LaTeX-mode默认折行的原因吧。中文是连着写的,字与字之间有空格的话排版效果就不同了,ctex宏包对此做了处理,就没有大碍了。

但如果仍旧用cjk方式,或者想把用Emacs写的.tex文件中的内容用其他LaTeX编辑器或其他文本编辑器打开,或者copy到MS Word文档中,还是不要折行的好,这样符合我们写东西的习惯,即只有另起一段时才用回车键。