Лисаков и макромир

Шрифты в LaTeX

Иногда встречаются требования заполнять документ конкретным шрифтом. Как использовать в LaTeX стандартные шрифты от Windows и не только, например, Verdana, Courier, Georgia, Comic Sans MS, Ubuntu Mono и пр.?

Стандартные шрифты в LaTeX

В LaTeX можно использовать три семейства шрифтов:

\rmfamily Roman family — шрифты с засечками (serif)

\sffamily Sans serif family — шрифты без засечек (sans-serif)

\ttfamily Typewriter family — моноширинные шрифты (они же monospace)

Вот список доступных по умолчанию шрифтов в LaTeX, которые должно быть просто использовать:

\rmfamily — с засечками

Аббревиатура Название шрифта
cmrComputer Modern Roman (default)
lmr Latin Modern Roman
pbk Bookman
bch Charter
pnc New Century Schoolbook
ppl Palatino
ptm Times

\sffamily — без засечек

Аббревиатура Название шрифта
cmss Computer Modern Sans Serif (default)
lmss Latin Modern Sans Serif
pag Avant Garde
phv Helvetica

\ttfamily — моноширинные

Моноширинные шрифты (monospace) также иногда называют Typewriter Fonts.

Аббревиатура Название шрифта
cmtt Computer Modern Typewriter (default)
lmtt Latin Modern
pcr Courier

Стандартные шрифты по умолчанию

Взглянём на стандартные шрифты по умолчанию.

1
2
3
4
5
6
7
8
9
10
11
\documentclass[12pt]{letter}
% Три следующих строки для поддержки русского языка
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\begin{document}
Просто текст будет семейства \textbackslash{}rmfamily, шрифт Computer Modern Roman.\\\\
{\rmfamily Это тоже шрифт семейства \textbackslash{}rmfamily. }\\\\
{\sffamily Это шрифт семейства \textbackslash{}sffamily, шрифт Computer Modern Sans Serif.}\\\\
{\ttfamily Это шрифт семейства \textbackslash{}ttfamily, шрифт Computer Modern Typewriter.}
\end{document}

Такой код даст следующий результат:

Standard Fonts

Смена между стандартными шрифтами

Менять шрифты из стандартных можно командой \renewcommand{семейство}{аббревиатура шрифта}. Например, поставленные в преамбулу команды

1
2
3
\renewcommand{\rmdefault}{cmr}
\renewcommand{\sfdefault}{cmss}
\renewcommand{\ttdefault}{cmtt}

установят стандартные шрифты cmr для \rmfamily, cmss для \sffamily и cmtt для \ttfamily. Расшифровку аббревиатур см. в таблицах выше. Приведённые команды никак не изменят внешний вид, потому что в них указаны стандартные значения. Если же добавить в преамбулу к последнему примеру

1
2
\renewcommand{\rmdefault}{cmss}
\renewcommand{\ttdefault}{cmss}

то весь текст будет написан одним и тем же шрифтом Computer Sans Serif. \sfdefault можно не указывать, потому что Computer Sans Serif — и так его стандартное значение. Получается, что для шрифта \rmfamily можно использовать не обязательно шрифт с засечками, но и без оных (\sffamily) или моноширинный (\ttfamily).

Любой шрифт в XeLaTeX

Что делать, если нам нужен какой-то другой шрифт, не входящий в стандартную поставку LaTeX?

Быстрее всего будет использование XeLaTeX или LuaLaTeX вместо LaTeX. Меня это фраза сначала напугала, но потом оказалось, что у меня в Ubuntu 14.10 XeLaTeX поставился вместе с LaTeX. Если команды xelatex и lualatex Вашей системе неизвестны, попробуйте поставить пакет texlive-full. В Debian/Ubuntu, наверное, это можно сделать так: sudo apt-get install texlive-full.

Такой код позволят задавать русские шрифты при компиляции XeLaTeX (LaTeX такое не скомпилирует):

1
2
3
4
5
6
7
8
9
10
11
12
13
\documentclass[12pt]{letter}
\usepackage{fontspec}
%\defaultfontfeatures{Ligatures={TeX},Renderer=Basic} %бывает нужно для того, чтобы -- превращалось в \endash, --- в \emdash, а << в «. У меня и так работает.
\setmainfont{Georgia} % задаёт \rmfamily, основной шрифт документа
\setsansfont{Verdana} % задаёт \sffamily, шрифт без засечек
\setmonofont{Courier New} % задаёт \ttfamily, моношрифт
\usepackage{indentfirst}
\begin{document}
Просто текст будет таким, каким указан \textbackslash setmainfont. В нашем случае это Georgia.\\\\
{\rmfamily Это тоже Georgia. Это шрифт семейства \textbackslash rmfamily, оно же Roman font или serif font, то есть шрифт с засечками. }\\\\
{\sffamily Это шрифт семейства \textbackslash{}sffamily, оно же sans serif или шрифт без засечек (sans serif в переводе с французского означает «без засечек»). В нашем случае это шрифт Verdana.}\\\\
{\ttfamily Это шрифт семейства \textbackslash{}ttfamily, оно же typewriter или monospace. В нашем случае это шрифт Courier New. Все буквы и символы здесь занимают одинаковую ширину. }
\end{document}

Результат будет таким:
Font-families

Причём не понадобилось даже стандартное для поддержки русского языка вступление:

1
2
3
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}

Обратите внимание, что если не уточнять, каким семейством печатать шрифт, по умолчанию будет использоваться шрифт, установленный для семейства \rmfamily, то есть то, что было указано в преамбуле командой \setmainfont.

Любой шрифт в LaTeX

А что, если нужно использовать именно LaTeX, а не XeLaTeX, и нестандартный шрифт — например, Verdana?

  1. Скачать ttf файл шрифта. Обычно запрос в Гугле «Verdana ttf скачать» быстро даёт желаемый результат.
  2. Выполнить описанное тут. Я проверил, всё получилось. Обновление: ссылка перестала работать, смотрите кеш гугла.

Источники

http://en.wikibooks.org/wiki/LaTeX/Fonts (англ.)

latex-community форум (англ.)

Font selection in LaTeX: FAQ (англ.)

Если что-то не заработало, пожалуйста, сообщите об этом.