【问题标题】:Using Sublime Text to ensure one sentence per line in LaTeX documents使用 Sublime Text 确保 LaTeX 文档中每行一个句子
【发布时间】:2015-10-03 03:46:14
【问题描述】:

我们的目标是采用third way---a.k.a.使用semantic linefeeds。这包括在 TeX 文件的每一行输入一个句子。这使得在处理 TeX 文件和其他大量文本文件时更容易使用版本控制系统。 (在回复this question 时也提出了类似的建议。)

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

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

  • 检查前面是否是句尾,以及
  • 如果是,请插入换行符。

这是相关的sn-p:

{ "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"}
    }

我将它附加到Sublime/Packages/User/Default (OSX).sublime-keymap,它似乎可以解决问题。

sn-p 应该查找空格之前的内容,如果你有一个以下列之一结尾的字符串,则给你一个匹配项:

  • 句号,
  • 感叹号,
  • 一个问号,
  • 以句点开头的右括号。

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

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

我很想知道我是否应该在该列表中添加其他内容(“同上”,我想应该是其中之一)。

我也想知道这个问题是否有更简单的解决方案。

【问题讨论】:

  • 你为什么要使用额外的非正则表达式匹配?
  • 您还需要在 \ 之后允许空格。如果您复制粘贴内容(^.+\\..*?$)....,可能会出现这种情况
  • 你可以自动更正./!/? 和两个空格换行,如果你可以养成两个空格的习惯。 serif.com/appresources/PPX6/Tutorials/en-us/help/…
  • 我浏览了我自己的 LaTeX 文件,我能找到的唯一一个你丢失的案例是 et al.。
  • 虽然这是一个很好的问题,但它仍然是一个厨房水槽问题:“请把你所有的东西都扔进去。我会弄清楚的。”因此,一个客观而完整的答案几乎是不可能的。更多地将其视为一个过程,直到您的排除列表稳定下来。

标签: regex latex sublimetext3 sublimetext


【解决方案1】:

除非使用\frenchspacing(1,2),否则绝不应该有句点.,如果它不是句子的结尾,则后跟空格。 Latex 在句末和句子中的句点之间产生了差异。 句子后的空格会比平常大。

因此,如果您想确保每行一个句子,您只需要在句点后面加一个空格即可。

任何不是句尾的句点都应该跟在以下任一句点之后:

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

仅供参考:Latex 使用\@ 明确地将句点标记为句末(句间间距)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-14
    • 2013-11-14
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 2014-12-11
    相关资源
    最近更新 更多