Будь-які відмінності функціональних можливостей із використанням конвенції з двох пробілів проти простору в кінці речення?


9

Питання: Які практичні причини є НЕ в набір , sentence-end-double-spaceщоб nil?

Нещодавно відроджена нитка розпізнавання речень, які не закінчуються в двох просторах, надихнула це питання.

Керівний вузол Emacs на реченнях зазначає, що команди речень припускають, що ми використовуємо конвенцію американського машиніста про розміщення двох пробілів у кінці речення (на відміну, скажімо, від французької конвенції про один пробіл). Аргументи проти / проти двопросторової конвенції, очевидно, стають досить полемічними (наприклад, цей фрагмент Шиферу ).

Я не особливо дбаю про зовнішність, наскільки я дозволяю LaTeX впоратися з моїм типом, але двосторонній конвент занурюється в м'язову пам'ять. Однак, коли я вставляю текст у буфер Emacs з інших джерел (веб-сторінок тощо), це майже завжди в єдиному просторі. Це вид дратує в як-сміє вони-відрізняються-від-мене - то чином, і я відчуваю до набору sentence-end-double-spaceдля nilмати справу з реальністю. Я ніколи цього не маю, тому що я завжди припускав, що щось зламається, якщо я це зробив. У мене просто немає твердої основи для цього припущення.

Отже: чи є якісь - або практичні наслідки з точки зору втрати функціональності для установки sentence-end-double-spaceв nil? Єдине суттєве зміна, про яке я можу подумати, - це те, що функції заповнення змінять двопросторову конвенцію на конвенцію про один простір.


2
Люблю це запитання, я повністю розумію, що ти відчуваєш ...
mbork

Навіть цитата статті, яку ви цитуєте, стверджує, що в односхилому типі угода про подвійний пробіл може допомогти визначити закінчення речень.
алексурба

Відповіді:


9

Єдиний наслідок, який я бачу, - це здатність розпізнавати періоди за абревіатурами.

Як зазначає gnu.org :

Якщо ви хочете використовувати лише один пробіл між реченнями, ви можете встановити змінну sentence-end-double-spaceна нуль, щоб зупинити команди речень для одиничних пробілів. Однак у цього є недолік: немає способу розрізнити періоди, які закінчуються реченнями, і ті, що позначають абревіатури .

Для зручного та надійного редагування, радимо дотримуватися двопросторової конвенції. Змінна sentence-end-double-spaceтакож впливає на заповнення .

Я ніколи не використовував двопросторовий конвент, я думаю, це залежить від того, як / що ви редагуєте.


3

Це не зовсім відповідь на питання , як сказано ( «Що я втрачаю , якщо я ставлю sentence-end-double-spaceна nil"), а що - щось на зразок третього шляху ;-). (Крім того, це (часткова) копія з публікації, яку я щойно писав у своєму блозі ; якщо це недоречно, хтось, будь ласка, видаліть це, але я сподіваюся, що це може бути корисним.)

Отже, в основному, чому ви хочете щось втратити , налаштовуючи щось на свій смак? Це ж 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. Зрозуміло, він не враховує періодів у ЗНО тощо; але знову ж таки поріг дуже низький.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.