我已经看到 StackOverflow 上至少有两条建议在编辑LaTeX文档时在句子之间插入换行符.原因是该实践有助于源代码控制,diff
协作编辑.
我基本上确信,但我很懒,而且我不想考虑它.
所以我正在寻找一些emacs咒语来为我处理它.可能是次要模式,可能是需要设置的一组变量.
我想我不想要的是
文本的软包装(比如使用延绳和(set long-lines-auto-wrap 't)
).这是因为我不想对我的协作者编辑施加要求,有时我会使用其他unix工具来检查这些文件.
我想我不想要的是
用于fill-paragraph
填充看起来像是标记句子结尾的换行符.
与之合作的解决方案auto-fill-mode
将是一个奖励.
那是:
聊天聊天.
一个新的句子
包含了需要修复的包装.
嘟m嘟
转变为:
聊天聊天.
一个新的句子包含了需要修复的包装.
嘟m嘟
您的意见和建议表示赞赏.
编辑:JouniK.Seppänen的建议指出了我LaTeX-fill-break-at-separators
,这表明emacs几乎知道如何做到这一点.无论如何,我要读一些代码,然后报告回来.再次感谢.
同一问题的更一般版本:编辑摊牌:在句子末尾保持换行符.谢谢,dreeves.
这就是我使用的东西,其中大部分来自Luca de Alfaro:
(defun fill-sentence () (interactive) (save-excursion (or (eq (point) (point-max)) (forward-char)) (forward-sentence -1) (indent-relative t) (let ((beg (point)) (ix (string-match "LaTeX" mode-name))) (forward-sentence) (if (and ix (equal "LaTeX" (substring mode-name ix))) (LaTeX-fill-region-as-paragraph beg (point)) (fill-region-as-paragraph beg (point))))))
我把它绑M-j
在一起
(global-set-key (kbd "M-j") 'fill-sentence)
引用"LaTeX"
是针对AUCTeX支持的.如果您不使用AUCTeX,let
可以简化为
(let (beg (point)) (forward-sentence) (fill-region-as-paragraph beg (point)))