Приложение В. Шрифты и LaTeX
Семейства шрифтов
Конечно, хотелось бы подключать к LaTeX'у не один шрифт фиксированного размера, а целый набор новых шрифтов таким образом, чтобы в tex}-файле можно было менять их начертание и размер с помощью команд, аналогичных рассмотренным нами в "Набор текста" .
Такие возможности действительно есть. Например, образцы шрифтов типа Times, приведенные на с. 360, были получены с помощью таких команд:
{\fontfamily{ptm} \selectfont \begin{center} This is Times font sample\\ ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\\ \fontshape{it}\selectfont ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz \fontseries{b}\fontshape{n}\selectfont ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz\\ \fontshape{it}\selectfont ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz \end{center} }
В них устанавливаются желаемые параметры шрифта, а затем этот шрифт вызывается командой \selectfont.
Сначала мы устанавливаем семейство шрифтов с помощью команды
\fontfamily{ptm}
(где ptm есть внутреннее имя семейства шрифтов типа таймс). При этом остальные параметры (размер, насыщенность, начертание) остаются неизменными. Команда \selectfont переключает шрифт. Затем мы меняем начертание с помощью команды \fontshape, делая его курсивным (it}, прямое начертание обозначается n), и снова переключаем шрифт с помощью \selectfont. После этого мы меняем насыщенность с помощью команды \fontseries (при этом b} означает полужирный шрифт, а обычный шрифт обозначается m}) и возвращаемся к прямому начертанию. И так далее.
Есть еще команда изменения размера шрифта, явно указывающая кегль и интерлиньяж. Например, команды
\fontfamily{ptm} \fontsize{17pt}{24pt} \selectfont This is Times Roman\\ 17 pt / 24 pt
позволяют напечатать две строки шрифтом типа таймс с размером 17 pt и расстоянием между строками 24 pt:
Команды \fontfamily, \fontseries, \fontshape и \fontsize являются командами "нижнего уровня": как правило, надо использовать не их, а команды типа \textbf, \textit, \textsf или же команды смены начертания и насыщенности ( \rmfamily, \sffamily, \upshape, \bfseries и др.).
Но откуда же LaTeX узнаёт, что, например, команда \rmfamily предписывает переключиться на семейство шрифтов, известное под внутренним именем cmr, а команда \bfseries устанавливает насыщенность, известную под внутренним именем bx? Эта информация содержится в определении следующих команд:
Команда | Определение в стандартных классах |
---|---|
\rmdefault | cmr |
\sfdefault | cmss |
\ttdefault | cmtt |
\bfdefault | bx |
\mddefault | m |
\itdefault | it |
\sldefault | sl |
\scdefault | sc |
\updefault | n |
Читать эту таблицу надо следующим образом: если семейство, насыщенность или начертание шрифта обозначается буквами xx, то команда \xxfamily, \xxseries или \xxshape (или команда с одним аргументом \textxx ) установит соответствующий атрибут шрифта с внутренним именем, указанным в таблице в строчке с командой \xxdefault.
Сказанное объясняет рецепт уменьшения ширины жирного шрифта, приведенный на стр.114: переопределяя команду \bfdefault, мы заставляем LaTeX по командам \textbf или \bfseries (а также \bf ) выбирать шрифт насыщенности b}, менее широкой, чем насыщенность bx, получающаяся по умолчанию.
А если, например, вы захотите, чтобы основным шрифтом вашего документа был шрифт без засечек, то можно переопределить в преамбуле команду \rmdefault:
\renewcommand*{\rmdefault}{cmss}
(согласно нашей таблице, cmss — это LaTeX'овское внутреннее имя для шрифта без засечек). Другой вопрос, будет ли это удачным полиграфическим решением. Не слишком увлекайтесь подобными экспериментами, если вы не полиграфист!