Опубликован: 07.02.2007 | Доступ: свободный | Студентов: 4012 / 1340 | Оценка: 4.56 / 3.95 | Длительность: 23:09:00
Специальности: Художник
Лекция 3:

Набор текста

Промежутки между словами

Неразрывный пробел

Иногда необходимо обеспечить, чтобы два соседних слова не попали на разные строки. В этом случае между ними надо вставить " символ неразрывного пробела" "~". Такая необходимость возникает, например, в сочетаниях типа "на с.5": нельзя отрывать номер страницы от сокращения "с.". Вот еще примеры:

Число овец в стаде обозначено
буквой~$x$. Да здравствует
император Франц-Иосиф~I!
Муж и жена~--- одна сатана.
С~кем вы, мастера культуры
?
Число овец в стаде обозначено
буквой~$x$. Да здравствует
император Франц-Иосиф~I!
Муж и жена~--- одна сатана.
С~кем вы, мастера культуры?

В предпоследнем из этих примеров мы поставили неразрывный пробел, поскольку согласно отечественным полиграфическим правилам строка не должна начинаться с тире, а в последнем — потому что однобуквенное слово, начинающее предложение, не должно стоять последним в строке. Полный список русских однобуквенных слов (который может быть полезен, если вы автоматически расставляете символы ~ после них с помощью текстового редактора) содержится в магическом слове "АВИКОСУЯ".

Промежутки между предложениями

В обычном режиме TeX выравнивает справа строки абзаца, при необходимости делая переносы и слегка растягивая или сжимая промежутки между словами. Промежутки между предложениями при этом сами по себе шире и являются более растяжимыми, чем между словами внутри предложения. Посмотрите внимательно на следующий пример (из "Винни-Пуха"; для наглядности все промежутки равномерно растянуты):

North Pole. Discovered by Pooh. Pooh found it.

Такая печать соответствует английским типографским правилам, но в русских текстах промежутки между словами и между предложениями отличаться не должны. Чтобы так и было, следует включить в преамбулу команду \frenchspacing.

Если среди русского текста встречается фрагмент, написанный по-английски, то можно командой \nonfrenchspacing восстановить действие английского правила относительно межсловных промежутков. Когда английский текст кончится, надо восстановить действие российского правила командой \frenchspacing (другой вариант: заключить английский фрагмент вместе с командой \nonfrenchspacing в группу — по выходе из группы действие команды \nonfrenchspacing забудется).

Для читателей, которым необходимо набирать английские тексты, объясним более подробно правила расстановки промежутков в тех случаях, когда команда \frenchspacing не дается.

Чтобы отличить промежутки между словами от промежутков между предложениями, TeX применяет следующие правила:

  1. Пробел увеличивается после:
    • точки, вопросительного знака, восклицательного знака (в максимальной степени);
    • двоеточия (несколько меньше);
    • точки с запятой (еще меньше);
    • запятой (совсем чуть-чуть).
  2. Если последняя из букв, встретившихся перед одним из упомянутых в пункте 1 знаков препинания, была прописной, то пробел после этого знака препинания не увеличивается.
  3. Если после одного из упомянутых в пункте 1 знаков препинания следует закрывающая скобка (круглая или квадратная) или закрывающие кавычки, а затем — пробел, то этот пробел увеличивается.

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

Как это и бывает обычно с "машинными эвристиками", сформулированные правила иногда приводят к неверным результатам: точка после строчной буквы может встретиться и в середине предложения, например, в сокращении, а точка после прописной буквы может, напротив, попасть в конец предложения. В этих случаях надо следующим образом помочь TeX'у сделать правильные пробелы:

  • Если точка после строчной буквы не заканчивает предложения, то после нее следует поставить команду \ (backslash с пробелом), генерирующую обычный пробел между словами .
  • Если точка (или любой другой из перечисленных в пункте 1 знаков препинания) после прописной буквы заканчивает предложение, то перед ней следует поставить команду \@ - тогда пробел будет обычным образом увеличен.

Вот примеры:

If $n$ is even (resp.\ odd),
then $(-1)^n$ equals one
(resp.\ minus one).

This research was supported by
the NSF\@. The author is
grateful to Prof.~Smith
.
If $n$ is even (resp.\ odd),
then $(-1)^n$ equals one
(resp.\ minus one).

This research was supported by
the NSF\@. The author is
grateful to Prof.~Smith.

Наконец, последнее правило относительно увеличения пробелов: если пробел задан как неразрывный с помощью символа ~, то он не увеличивается, невзирая ни на какие предшествующие знаки препинания.

Установка промежутков вручную

Как команда "backslash с пробелом" "\ ", так и символ неразрывного пробела "~" генерируют пробел, но делать пробелы вручную с помощью набора чего-нибудь вроде "~~~" или "\ \ \ "неразумно, поскольку эти пробелы, как правило, могут растягиваться или сжиматься ради выравнивания строк, и вы не сможете проконтролировать реальный размер пустого пространства, полученного таким способом.

Чаще всего требуется получить промежуток величиной в один или два em . Для этого служат команды \quad, дающая промежуток в 1em, и \qquad, дающая промежуток в 2em. Команда \enskip дает промежуток, в два раза меньший, чем \quad (в стандартных шрифтах он равен ширине цифры). Про команду \, (" backslash с запятой") уже шла речь в разд." Кавычки".

Если необходимо задать промежуток с указанием конкретной длины, можно воспользоваться командой \hspace {длина}

Если этот промежуток должен сохраняться также и в начале (или конце) строки, используется команда \hspace * вместо \hspace . Указание длины состоит из числа и названия единицы , например, \hspace{1.5cm}

Пользуясь командами типа \quad, не сделайте лишнего пробела (разумеется, кроме того, который ограничивает имя команды, состоящей из букв). Вот примеры того, как надо и как не надо делать:

Здесь\quad 1em промежутка.\\
Здесь\quad{}1em промежутка.\\
Здесь\quad{} 1em
          плюс еще немного
.
Здесь\quad 1em промежутка.\\
Здесь\quad{}1em промежутка.\\
Здесь\quad{} 1em
          плюс еще немного.

В этом примере используется еще команда \\, начинающая новую строку .

Нина Казачек
Нина Казачек
Василий Майоров
Василий Майоров