Как стать автором
Обновить

Магия XeTeX

Предисловие



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

Предисловие


Для начала пришлось обновить свой MikTeX (именно его, сижу я под вистой — привычка, возможно и вредная)… и потом докачивать несколько пакетов (тут стоит отметить пакет polyglossia).

Работа



Давайте напишем коротенький tex-файл.
Для начала преамбула:

\usepackage[cm-default]{fontspec}
\usepackage{xltxtra} % \XeLaTeX macro
\defaultfontfeatures{Mapping=tex-text}
\usepackage{polyglossia}
\setdefaultlanguage{russian}

%% PostSctipt:
%\setmainfont{DejaVu Sans}
%\setmainfont{TimesNRomCyrMT}
%\setmainfont{Garamond}

%% не PostSctipt:
%\setmainfont{GaramondPremrPro} % --- бледновато
%\setmainfont{DejaVu Serif Condensed} % --- жирновато

\setmainfont{Constantia}
\setsansfont{Myriad Pro}
\setmonofont{Consolas}


Шрифты я использую виндовые.
Сойдут любые другие. Заметил, только, что с PostScript шрифтами долго строится таблица символов.
И выводится предупреждение, что для шрифта нет поддержки русского, но это только с

\usepackage{polyglossia}
\setdefaultlanguage{russian}


И проблема, видимо именно в polyglossia.
Отображаются они как и должны.
Замечу, что для оооочень фигурных шрифтов построение идет еще дольше.
Надо иметь ввиду, что не для всех шрифтов вообще определены русские символы.
Но таких меньшинство. Если шрифта, который вы указали в вашей система нет, XeTeX на долго задумается, а потом выдаст ошибку.

Обратите внимание, мы не указывает тут никаких.
\usepackage[utf8]{inputenc}


Если наш файл в utf8, ничего не нужно.
Для XeTeX это родная кодировка.
Нужно так же обратить внимание на Mapping=tex-text.
Без указания этого ключа, стандартная TeX-разметка будет восприниматься как простой текст
и символ --- будет восприниматься как 3 минуса, а не длинное тире.

После преамбулы идет простой код TeX-файла.
А в чём фичи??? Только в произвольных шрифтах?
Отчасти да. Я пока использую в XeTeX только ее. Но, есть и другая, как я сказал UTF8. Можно спокойно в одном файле иметь текст на разных языках. Если при этом использовать пакет polyglossia, то не обязательно их даже указывать. polyglossia сама найдет нужные описания. Об этом можно почитать документацию в СTAN.
Есть еще 1 момент, который меня весьма порадовал. Я ползуюсь pdfTeX.
Не хочу возиться с dvi, удобнее когда выходной файл сразу в pdf. Но к сожалению, pdfTeX плохо дружит с PSTricks, вернее никак. И я всегда использовал tikz, для графиков. Но в XeTeX есть полная поддержка PSTricks. Как я понял, на самом деле там используются свой пакет для PSTricks, который устанавливается при первой компиляции файла, содержащего pspicture. Удобно иметь и pspicture и pdf на выходе.

Шрифты



Вернемся к шрифтам. XeTeX позволяет их менять в середине документа.
Добавим в преамбулу

%% Фигурные
\newcommand{\Debby}{\fontspec{Debby}}
\newcommand{\AnnaC}{\fontspec{AnnaC}}

%% Смашные
\newcommand{\comic}{\fontspec{Comic Sans MS}}
\newcommand{\DoloresCyr}{\fontspec{DoloresCyr Black}}
\newcommand{\PopularScript}{\fontspec{PopularScript}}
\newcommand{\DecorC}{\fontspec{DecorC}}

\newcommand{\ZhikharevC}{\fontspec{ZhikharevC}}

%% Рубленные
\newcommand{\PragmaticaC}{\fontspec{PragmaticaC}}
\newcommand{\Mechanica}{\fontspec{Mechanica}}
\newcommand{\MechanicaInline}{\fontspec{MechanicaInline}} %% с обводкой, очень медленно компилится

%% С засечками
\newcommand{\DejaVuSerif}{\fontspec{DejaVu Serif}}


Дальше напишем в теле документа что-то вроде:

{ \Huge \ZhikharevC {Лекции по курсу}

}
{ \Huge \Mechanica {<<Псевдовычислительная \TeX ника>>}

}
{ \Large \DoloresCyr Не по программе.

}


Какой будет результат мы оставляем на откуп читателю.
Кое-что можно почитать в моей статье на википедии. И про polyglossia там же.

Если я тут будет возможность загружать картинки и я смогу поправить этот пост я покажу как это выглядит.

Примерно тоже самое (но не совсем то) можно найти по ссылке:
http://w-495-stud.ru/non-stud/polygraphic/XeTeX/XeTemplate-0.2.pdf
И исходник:
http://w-495-stud.ru/non-stud/polygraphic/XeTeX/XeTemplate-0.2.zip
Если будут ошибки, в том числе и в этом посте, пишите w@w-495.ru
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.