Про шрифты с продолжением. Часть 9
Шрифты для формул
Переключение шрифтов для формул имеет серьезные отличия от того, как это делается в обычном тексте. Выбор некоторых математических шрифтов осуществляется явно при помощи команд вида “\mathsf{... }”, “\mathbf{... }”
и т.д. с одним аргументом. Такие команды называются математическими алфавитами. Другие шрифты неявно выбираются компилятором при обработке команд, печатающих математические символы, такие как “\oplus”. Подобные шрифты называются символьными.
Математические алфавиты
Стандартные классы содержат определения следующих математических алфавитов:
\mathrm{math}
\mathbf{math}
\mathsf{math}
\mathit{math}
\mathtt{math}
\mathcal{math}
\mathnormal{math}
Набор математических алфавитов дополняется различными пакетами. Например, пакет amsfonts вводит алфавиты “\mathfrak” и “\mathbb” для печати готических и контурных букв соответственно.
Перед использованием русских букв в математических формулах необходимо загрузить пакет mathtext из коллекции T2, причем сделать это нужно до загрузки пакетов, изменяющих внутреннюю кодировку, таких как fontenc или babel.
Символьные шрифты
Непосредственно в математической формуле LATЕX использует так называемые символьные шрифты с кодировками OML, OMS и OMX. Часть символов, которые имеют прямое начертание, заимствуется из текстовых шрифтов, так что всего существует четыре типа символьных шрифтов (табл. 1). Символьные шрифты имеют те же пять атрибутов (кодировка (ENC), гарнитура (family), насыщенность (series), начертание (shape) и размер (size)), что и текстовые. Однако для математических формул нет команд, которые бы переключали только один атрибут, поскольку формула — это единое целое.
Таблица 1. Символьные шрифты |
||
Название
|
Кодировка |
Примечание |
operators |
OT1 |
Прямые символы из \mathrm |
letters |
OML |
Курсивные символы из \mathnormal |
symbols |
OMS |
Математические символы |
largesymbols |
OMX |
Большие символы |
Соответствие алфавита шрифту с заданным перечнем атрибутов контролирует математическая версия. Версию изменяет декларация “\mathversion{versionname }”, где versionname — название версии. Ее можно менять только вне математической формулы. Стандартные классы предопределяют две версии — normal и bold; первая из них используется по умолчанию.
Изменение версии обычно влияет не только на буквы и цифры, но и на другие символы, поскольку сопровождается заменой реального, так называемого внешнего шрифта.
Внешний шрифт
Результат переключения шрифтов был бы легко предсказуем, если бы все гарнитуры имелись в одинаковом наборе начертаний и насыщенности. Но это невозможно в принципе. Например, рукописные шрифты обычно есть только в варианте светлого курсива.
Что же произойдет, если шрифт с запрошенным набором атрибутов отсутствует? Система NFSS предпримет попытку разрешить возникшую проблему, руководствуясь информацией, записанной в файлах определения шрифтов (font definition) с расширением *.fd. Название файла образуется объединением аббревиатур кодировки ENC и гарнитуры family. Например, если заказана гарнитура cmr (Computer Modern Roman) в кодировке T2A, то компилятор попытается найти файл t2acmr.fd. Несколько примеров соответствия атрибутов внешнему шрифту приведены в табл. 2. Если комбинация кодировки, семейства, насыщенности и начертания не определена, то NFSS меняет значение атрибута начертания на принятое по умолчанию. Если получившаяся комбинация попрежнему неизвестна, значение по умолчанию присваивается атрибуту насыщенности (series). Если это не помогает, то предпринимается попытка изменить атрибут (family).
Таблица 2. Соответствие атрибутов внешнему шрифту |
||
Атрибуты шрифта |
Внешний шрифт и его название |
|
OT1 cmr m n 10pt |
cmr10 at 10pt |
CM Roman |
OT1 cmss m sl 12pt |
cmssi12 at 12pt |
CM Sans Slanted |
OML cmm m it 10pt |
cmmi10 at 10pt |
CM Math Italic |
T1 ptm b it 18pt |
ptmbi8t at 18pt |
Adobe Times Bold Italic |
T2A cmr m n 10pt |
lhr10 at 10pt |
LH Roman |
T2A cmss m sl 12pt |
lhssi12 at 12pt |
LH Sans Slanted |
Пакеты PSNFSS
Казалось бы, кому интересна информация о пакетах, не поддерживающих кириллицу? Однако нельзя не упомянуть о некоммерческих шрифтах, поддерживаемых пакетами PSNFSS, тем более что здесь есть замечательные шрифты семейств Palatino и Times для математических формул.
Чтобы изменить шрифт, пользователь выбирает один из основных пакетов avant, bookman, charter, chancery, helvet и т.д. Они заменяют одну или сразу несколько гарнитур, используемых по умолчанию. В табл. 3 показано, какую замену производит каждый пакет из коллекции PSNFSS. Два из них — mathpazo и mathptmx — подменяют шрифты не только в тексте, но и в математических формулах. Соответствие аббревиатур названиям реальных шрифтов приведено в табл. 4. Все перечисленные в этой таблице гарнитуры есть в кодировках OT1, T1 и TS1. Исключение составляют две последние гарнитуры — Symbol и ZapfDingbats, которые имеются только в кодировке U.
Таблица 3. Гарнитуры, используемые пакетами PSNFSS версии 9.0 |
||||
Пакет |
\rmdefault |
\sfdefault |
\ttdefault |
Формулы |
cmr |
cmss |
cmtt |
CM Roman |
|
avant |
pag |
|||
bookman |
pbk |
pag |
pcr |
|
chancery |
pzc |
|||
charter |
bch |
|||
courier |
pcr |
|||
helvet |
phv |
|||
mathpazo |
ppl |
Palatino |
||
mathptmx |
ptm |
Times |
||
newcent |
pnc |
pag |
pcr |
|
pifont |
||||
utopia |
put |
|||
Примечание. Пропуск означает, что гарнитура не изменяется пакетом. |
Таблица 4. Шрифты, поддерживаемые пакетами PSNFSS версии 9.0 |
||||
ENC |
Family |
Series |
Shape |
Гарнитура |
OT1 T1 TS1 |
ptm |
mb |
n sl it sc |
Times |
OT1 T1 TS1 |
ppl |
mb |
n sl it sc |
Palatino |
OT1 T1 TS1 |
pnc |
mb |
n sl it sc |
NewCenturySchlbk |
OT1 T1 TS1 |
pbk |
mb |
n sl it sc |
Bookman |
OT1 T1 TS1 |
phv |
m b mc bc |
n sl sc |
Helvetica |
OT1 T1 TS1 |
pag |
mb |
n sl sc |
AvantGarde |
OT1 T1 TS1 |
pcr |
mb |
n sl sc |
Courier |
OT1 T1 TS1 |
pzc |
m |
It |
ZapfChancery |
OT1 T1 TS1 |
put |
mb |
n sl it sc |
Utopia |
OT1 T1 TS1 |
bch |
mb |
n sl it sc |
CharterBT |
U |
psy |
m |
n |
Symbol |
U |
pzd |
m |
n |
ZapfDingbats |
Для документов на русском языке пакеты PSNFSS не подходят, поскольку в них нет русских букв. Но, как указывалось выше, эти пакеты полезны для набора формул.
Пакеты FontsC
Существует несколько пакетов, которые позволяют подключать русские шрифты PostScript. Наиболее известным из них является пакет pscyr. Теоретически он может приводить к конфликтам с другими пакетами, поскольку использует обозначения гарнитур, противоречащие схеме, принятой в системе LATЕX. Альтернативой может быть коллекция пакетов FontsC. Эти пакеты, наряду с поддержкой PostScriptшрифтов, позволяют применять в документах LATЕX шрифты TrueType и OpenType, поставляемые корпорацией Microsoft (частично по лицензии Monotype) в составе операционных систем Windows, начиная с Windows 2000 (гарнитуры Arial, Courier New и Times New Roman поставляются также с Windows 95 и 98, а гарнитура Garamond — с Windows 98). PostScriptшрифты, поддерживаемые пакетами коллекции FontsC, разработаны фирмой РагаТуре. Некоторые из них распространяются бесплатно. Все пакеты FontsC перечислены в табл. 5, а в табл. 6 приведены образцы и названия шрифтов. Определить шрифты PostScript в табл. 5 можно по принадлежности к фирмепроизводителю. Обозначение гарнитур PostScriptшрифтов, разработанных компанией РагаТуре, начинается с буквы «t», а аббревиатуры гарнитур шрифтов TrueType и OpenType компаний Microsoft и Monotype начинаются с букв «j» и «m» соответственно.
В большей части приложений для подключения перечисленных шрифтов достаточно загрузить одиндва пакета из коллекции FontsC. Эти пакеты подменяют стандартные шрифты Computer Modern, используемые в документах LATЕX по умолчанию. Подмена шрифтов производится посредством переопределения деклараций
“\rmdefault”, “\sfdefault” и “\ttdefault” согласно табл. 5.
Таблица 5. Шрифты, поддерживаемые пакетами FontsC версии 1.1 |
||||
Пакет |
\rmdefault |
\sfdefault |
\ttdefault |
Формулы |
cmr |
cmss |
cmtt |
CM Roman |
|
AcademyC |
tdy |
|||
AvantC |
tag |
|||
BalticaC |
tl5 |
|||
BaskerC |
tnb |
|||
ChanceryC |
tzc |
|||
LiteraturnayaC |
tl6 |
|||
mathmnt |
Times New Roman |
|||
OffSerifC |
to8 |
|||
PetersburgC |
tp7 |
|||
SclBookC |
tcs |
tag |
to8 |
|
StScriptC |
tud |
|||
GaramondC |
mgm |
ma1 |
mcr |
|
TimesC |
mnt |
ma1 |
mcr |
Times New Roman |
VerdanaC |
jvn |
|||
Примечание. Пропуск означает, что гарнитура не изменяется пакетом. |
Таблица 6. Шрифты, поддерживаемые пакетами FontsC версии 1.1 |
||||
ENC |
family |
series |
shape |
Гарнитура |
OT1 T1 T2A |
jvn |
m bx |
n sl |
Verdana |
OT1 T1 T2A |
ma1 |
m bx mc bc |
n sl sc |
Arial |
OT1 T1 T2A |
maq |
m bx mc bc |
n sl sc |
Book Antiqua |
OT1 T1 T2A |
mbk |
m bx |
n sl sc |
Bookman Old Style |
OT1 T1 T2A |
mcr |
m bx |
n sl sc |
Courier New |
OT1 T1 T2A |
mgm |
m bx |
n it sl sc |
Garamond |
OT1 T1 T2A |
mnt |
m bx |
n it sl sc ui |
Times New Roman |
OT1 T1 T2A |
myg |
m bx |
n sl sc |
Century Gothic |
OT1 T1 T2A |
tag |
m bx |
n sl sc |
Avant Garde Gothic |
OT1 T1 T2A |
tcs |
m bx |
n it sl sc ui |
School Book |
OT1 T1 T2A |
tdy |
m bx |
n it sl sc ui |
Academy |
OT1 T1 T2A |
tl5 |
m bx |
n it sl sc ui |
Baltica |
OT1 T1 T2A |
tl6 |
m bx |
n it sl sc ui |
Literaturnaya |
OT1 T1 T2A |
tnb |
m bx |
n it sl sc ui |
New Baskerville |
OT1 T1 T2A |
to8 |
m bx |
n sl sc |
Officina Serif |
OT1 T1 T2A |
tp7 |
m bx |
n it sl sc ui |
Peterburg |
OT1 T1 T2A |
tud |
m |
it |
Studio Script |
OT1 T1 T2A |
tzc |
m |
it |
ZapfChancery |
Пакет mathmnt заменяет шрифты в формулах. Пакет TimesC имеет две опции: nomath и math. По умолчанию применяется первая, а шрифты заменяются только в тексте. Если же пакет загружен с опцией math, происходит также частичная подмена математических шрифтов аналогично тому, как это делает пакет mathmnt.
При загрузке пакетов происходит подмена шрифтов во всем печатном документе.
Послесловие
Напоследок хотелось бы прояснить неоднозначный момент. Русификаций LATЕX написано много, но надо различать интернационализацию и русификацию, что не совсем одно и то же.
Русификация, основанная на результатах работы T2 team и подразумевающая использование пакетов inputenc, babel, и fontenc, — это интернационализация, а не русификация.
Пакет T2 незаменим, когда надо набирать смешанные многоязычные тексты, ведь он поддерживает стандарт utf8. Но тут есть подвох: кириллические буквы нельзя использовать в именах команд, метках и аргументах комады cite. То есть они не являются буквами с точки зрения LATЕX — это активные символы.
Можно пользоваться русификацией Александра Черепанова, которая объединила в себе все преимущества русификации ШеняЛьвовского и русификации T2. Это уже не интернационализация, а именно русификация.
Что лучше — выбирать вам. А для сомневающихся напомним, что в файле cyrguide.tex, который является частью дистрибутива LATЕXε, описываются настройка и использование кириллицы при работе с LATЕX. Не знаешь, что выбрать, — прочитай инструкцию!