Search
Write a publication
Pull to refresh

Магия 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
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.