Подробности о шрифтах

Каждый из доступных в LaTeX'е текстовых шрифтов характеризуется следующими четырьмя атрибутами: семейством (family), насыщенностью (series), начертанием (shape) и размером (size)1) Что такое размер, читатель разберется самостоятельно, а смысл остальных атрибутов следующий:

  • семейство означает примерно (но не в точности) то же, что отечественный термин "гарнитура"; в стандартной поставке определены семейства rmfamily (шрифты с засечками), sffamily (шрифты без засечек) и ttfamily (шрифты типа "пишущая машинка");
  • насыщенность определяет ширину и жирность шрифта. В стандартной поставке возможны насыщенности средняя (mdseries) и полужирная (bfseries);
  • начертание бывает прямое (upshape), курсивное (itshape), наклонное (slshape) и " капитель"(scshape).

Семейство, насыщенность, начертание и размер шрифта могут различным образом сочетаться. Это предложение, например, набрано шрифтом семейства "без засечек" (sffamily), полужирной насыщенности (bfseries), прямого начертания (upshape) и размера \large.

Каждый из шрифтовых атрибутов можно менять независимо от остальных. Разберем, какие команды для этого предусмотрены.

Все команды для изменения размера вам уже известны: это десять команд, от \tiny до \Huge, перечисленных в предыдущем разделе. Каждая из команд для изменения остальных атрибутов существует в LaTeX'е в двух вариантах:

  1. в виде команды без аргументов, меняющей атрибут текущего шрифта вплоть до того момента, пока он не будет изменен другой командой (или пока не закончится группа, если атрибут менялся внутри группы);
  2. в виде команды с одним аргументом (помещаемым, как водится, в фигурные скобки), меняющей атрибут шрифта только у своего аргумента (т.е. у текста в фигурных скобках) — некоторые из этих команд (\textit, \upshape и т.д.) уже нам знакомы.

Имя команды без аргумента совпадает с английским названием соответствующего атрибута (например, \sffamily или \scshape); имя команды с аргументом состоит из слова \texttt{text}, к которому добавлены две буквы, описывающие атрибут (например, \textsf или \textsc).

Ниже перечислены все команды для смены атрибутов в обоих вариантах.

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

Вот пример применения этих команд:

Сменим сначала \slshape начертание, затем \ttfamily семейство, затем \small размер, затем \bfseries насыщенность, затем \upshape\mdseries \rmfamily\normalsize все вернем на место.

Некоторым сочетаниям атрибутов никакого шрифта не соответствует. В этом случае затребованный, но отсутствующий шрифт заменяется на другой (по возможности, с близкими атрибутами). В нашем примере, в частности, не существует шрифта с атрибутами \ttfamily и \bfseries, поэтому LaTeX действует так, словно была дана команда \mdseries. О каждой такой замене выдается сообщение в процессе трансляции.

А вот пример, когда для смены атрибутов шрифта используются команды с аргументом:

Выберем \textbf{полужирный шрифт в \textit{курсивном} начертании} (временно, конечно же).

Обратите внимание, что на фоне полужирного шрифта (\bfseries) команда \textit поменяла только атрибут " начертание", сменив его на курсивное.

После многочисленных изменений атрибутов шрифта хочется вернуться к обычному шрифту "одним махом", не устанавливая заново все четыре атрибута. Для этих целей предусмотрена команда \normalfont, переключающая шрифт на " нормальный" — основной шрифт документа. Наряду с ней есть, как водится, и команда с одним аргументом \textnormal, печатающая текст, являющийся ее аргументом, основным шрифтом.

В стандартных TeX'овских шрифтах (гарнитура Computer modern и ее русские аналоги) жирный шрифт, задаваемый командами \bfseries, \textbf и т.п., выглядит, по мнению многих, довольно неудачно. Можно сделать его несколько более приемлемым, если написать в преамбуле такую строку:\renewcommand{bfdefault}{b}.

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

You {\itshape and} I\\ You {\itshape and \/} I

(команда \\ используется здесь для разрыва строки).

Если фрагмент текста, имеющий наклон, завершается точкой или запятой, то после них ставить \/ не нужно: требуемый эффект достигается за счет места, занимаемого в тексте этим знаком.

Всё это, повторим, относится лишь к командам изменения атрибутов без аргумента; команды \textit, \textsl и \emph вносят нужную поправку автоматически.

Если команда \/ поставлена между двумя символами, дающими на печати лигатуру, то вместо лигатуры на печати получатся два этих символа по отдельности; если эту команду поставить в слове между двумя символами, между которыми в текущем шрифте предусмотрен кернинг, то кернинг между этими символами будет отключен.

"Старые" команды изменения шрифта

Наряду с описанными выше, в LaTeX'е пока сохраняются (для совместимости с LaTeX'ом 2.09) команды переключения шрифта, перечисленные в таблице 3.1 .

Таблица 3.1. Смена начертания: старые команды.
Команда Равносильна последовательности команд
\bf \normalfont\bfseries
\it \normalfont\itshape
\sl \normalfont\slshape
\sf \normalfont\sffamily
\sc \normalfont\scshape
\tt \normalfont\ttfamily
\rm \normalfont\rmfamily

До некоторых шрифтов с помощью "старых" команд добраться невозможно (поскольку шрифты, получаемые с помощью этих команд, отличаются от "основного" не более чем в одном атрибуте).