使用Sublime Text确保LaTeX文档中每行一个句子

apc*_*apc 12 regex latex sublimetext sublimetext3

目标是采用第三种方式 ---也就是使用语义换行.这涉及在每行TeX文件中键入一个句子.这使得在处理TeX文件和其他文本繁重的文件时更容易使用版本控制系统.(在回答这个问题时也提出了类似的建议.)

当然,我可以在每个句子的末尾手动插入换行符.但是,这会导致不良习惯(例如,在撰写电子邮件时每行键入一个句子).所以我正在寻找另一种实现方法.

对于我们这些使用Sublime Text的人来说,一个解决方案就是使用ST的键绑定.从本质上讲,这会将空格键变为脚本的键盘快捷键

  • 检查它之前的是否是句子的结尾,并且
  • 如果是,请插入换行符.

这是相关的片段:

{ "keys": [" "],
        "context":  [
                {"key": "selector", "operator": "equal", "operand": "text.tex.latex"},
                {"key": "preceding_text", "operator": "regex_match", "operand": "(^.+\\.$)|(^.+\\?$)|(^.+\\!$)|(^.+\\.+\\)$)"},
                {"key": "preceding_text", "operator": "not_regex_match", "operand": "(^.*\\\\ex\\.$)|(^.*\\\\[abz]\\.$)"},
                {"key": "preceding_text", "operator": "not_regex_match", "operand": "(^.*[Cc]f\\.$)|(^.*\\b[Pp]+\\.$)|(^.*etc\\.$)|(^.*\\b[A-Z]\\.$)|(^\\w\\.$)|(^.*M[sr]\\.$)|(^.*Mrs\\.$)"}
                ],
        "command": "insert", "args": {"characters": " %\n"}
    }
Run Code Online (Sandbox Code Playgroud)

我追加了它Sublime/Packages/User/Default (OSX).sublime-keymap,它似乎做了伎俩.

该片段应该查找空格之前的内容,如果您的字符串以下列之一结尾,则为您提供匹配:

  • 一段时间,
  • 一个感叹号,
  • 一个问号,
  • 一个以句号开头的右括号.

但是,如果它们前面带有下列之一,它将忽略以句点结尾的字符串:

  • '\ ex','\ a','\ b','\ z'(这是为了能够使用该linguex包),
  • 'cf','Cf',
  • 'p','pp','P',
  • '等等'
  • '先生','太太','女士','博士',
  • 单个大写字母(用于句子中的首字母).

我很想知道是否还有其他事情要添加到该列表中('同上',我想是一个).

我也想知道这个问题是否有任何不那么笨重的解决方案.

rkt*_*kta 1

除非使用\frenchspacing( 1 , 2 ),否则.如果句号不是句子的结尾,则不应在句号后跟空格。Latex 区分句子末尾的句号和句子中的句号。句子后面的空间将比平常更大。

因此,如果您想确保每行一个句子,您只需对句点后跟一个空格进行操作即可。

任何不是句子结尾的句号后面都应跟有:

  • \,空间小
  • \字间间距(后面的空格\
  • ~ 不间断空格

仅供参考:Latex 用于\@明确将句点标记为句子结尾(句间间距)。