Подтвердить что ты не робот

LaTeX иногда ставит слишком много или слишком мало места после периодов

LaTeX пытается угадать, заканчивается ли период завершением предложения, и в этом случае после него добавляется дополнительное пространство. Вот два примера, где он ошибается:

I watched Superman III. Then I went home. 

(Слишком мало места после "Супермена III.".)

After brushing teeth etc. I went to bed.

(Слишком много места после "и т.д.".)

Обратите внимание, что не имеет значения, сколько пробелов вы используете в источнике LaTeX, так как LaTeX игнорирует это.

4b9b3361

Ответ 1

Я нашел ответ здесь: http://john.regehr.org/latex/. Выдержки:

Если для периода, не связанного с предложением, должно следовать пробел, пробел должен быть явно пустым. Итак, второй пример должен быть:

After brushing teeth etc.\ I went to bed.

Обратная сторона этой проблемы возникает, когда заглавная буква предшествует периоду окончания предложения на входе, как в первом примере. В этом случае LaTeX предполагает, что период завершает аббревиатуру и следует за ней с пространством между словами, а не с пространством между предложениями. Исправление состоит в том, чтобы поставить "\@" до периода. Итак, первый пример должен быть

I watched Superman III\@. Then I went home.

Удобный способ найти эту ошибку:

grep '[A-Z]\.' *.tex

Ответ 2

Вы можете обойти проблему с интервалом, если вы предпочитаете одиночные пробелы в конце предложений: put \frenchspacing on (для более старых версий Latex это была хрупкая команда). Кнут следовал традиционному именованию, назвав его французским интервалом, хотя и вызывал двойной интервал после предложений Французский интервал стал доминирующим в публикации.

Дирк Маргулис написал хороший пост, в котором излагаются некоторые причины распространенности одиночного интервала: Пробел между предложениями.

Ответ 3

Мне нравится ответ от трихвеев и удобный поиск, который он предлагает. У меня нет комментариев "rep" Stackoverflow для комментариев, но...

Так как строки в raw *.tex имеют тенденцию быть очень длинными, вывод grep может быть подавляющим (т.е. целыми абзацами); Я предлагаю вариант, чтобы отображать только слова, заканчивающиеся на "[A-Z]". (за которым следует одно или несколько пробелов, за которым следует новое заглавное слово). Это,

grep -o -E '[A-Z]+\. +[A-Z]+[A-Za-z]+' *.tex