在句子结尾处使用二空格和一空格约定是否有功能差异?


9

问:有什么现实的原因在那里来设定sentence-end-double-spacenil

最近复活的关于识别不以两个空格结尾的句子的线索启发了这个问题。

上句Emacs手册节点注意到,一句命令假设我们用把两个空间在句子的末尾(而不是,比方说,一个空间法公约)的美国打字员的约定。关于/反对两个空格约定的争论显然变得颇具争议性(例如,这本Slate文章)。

我并不特别在意外观,只要让LaTeX处理我的字体设置即可,但是两个空格的约定会影响肌肉的记忆。但是,当我从其他来源(网页等)将文本粘贴到Emacs缓冲区中时,几乎总是采用单空格惯例。这是一种恼人的如何,敢他们-不同-从-我的那种感觉,和我很想设定sentence-end-double-spacenil到面对现实。但是,我从来没有这样做过,因为我一直认为如果这样做会导致东西破裂。我只是对该假设没有任何坚实的基础。

因此:就设置sentence-end-double-space为而言,功能丧失会带来任何实际后果nil吗?我能想到的唯一重大变化是fill函数会将2空格约定更改为1空格约定。


2
喜欢这个问题,我完全理解您的感觉……
mbork

甚至您引用的Slate文章都认为,在等距类型中,双空格约定可能有助于识别句子的结尾。
alexurba 2014年

Answers:


9

我看到的唯一结果是能够识别缩写的句点。

gnu.org所述

如果只想在句子之间使用一个空格,可以将变量设置sentence-end-double-space为nil,以使句子命令在单个空格处停止。但是,这样做有一个缺点:无法区分结尾句子的期间表示缩写的期间

因此,为了方便可靠地进行编辑,我们建议您遵循两个空格的约定。该变量sentence-end-double-space还影响 填充

我从来没有使用过两个空格的约定,这取决于您编辑的方式/内容。


3

这并不是对上述问题的真正答案(“如果设置sentence-end-double-spacenil“,我会失去什么”),而是类似第三种方法的 ;-)。(此外,这是我刚刚写在博客上帖子的(部分)副本;如果不合适,请删除此帖子,但希望对您有所帮助。)

因此,基本上,为什么您要通过设置一些与自己的喜好相反的东西而损失任何东西?毕竟这是Emacs!

(defvar sentence-end-double-space-threshold 2
  "How many occurrences of \".  \" per kilobyte should be enough
  to declare this file as using two spaces after sentences.")

(defun set-sentence-end-double-space ()
  "Set `sentence-end-double-space' according to how often the
  literal string \".  \" occurs in the current buffer."
  (make-local-variable 'sentence-end-double-space)
  (if (>= (* (count-matches "\\.  ") 1024)
      (* (buffer-size) sentence-end-double-space-threshold))
      (setq sentence-end-double-space t)
    (setq sentence-end-double-space nil)))

(add-hook 'find-file-hook 'set-sentence-end-double-space)     

现在,当您打开文件时,Emacs决定(使用非常保守的值sentence-end-double-space-threshold,您可以setq根据自己的感觉选择合适的值)确定文件的样式。(显然,这在从浏览器或任何其他方式进行粘贴的情况下无济于事。可以这样做,建议yank并根据需要替换(如果需要的话)被抽中的文本中的空格,但是,我只有15分钟的时间!)

PS。当然,它不考虑EOL等的期限;但同样,门槛很低。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.