Модификация шаблона
Рассмотрим как перенести документ из «традиционного» LaTeX в XeTeX на примере шаблона отчета о НИР, описанного тут. Предполагается, что читатель уже имеет навыки работы в LaTeX и слышал о XeTeX.
Если коротко, то все наши действия сводятся к выполнению трёх пунктов.
- Настройка шрифтов. Пакет babel меняется на polyglossia, основным шрифтом документа становится Times New Roman. Последнее не обязательно, но лично для меня послужило причиной использовать XeTeX.
- Настройка поддержки TeX-овских лигатур. Двойной дефис должен превращаться в «минус», тройной — в «тире» и т. д.
- Уборка «мусора», т. е. ненужных для работы в XeTeX пакетов. В частности, теперь нет нужды использовать cmap для создания PDF-документа с возможностью полнотекстового поиска.
Пункты 1 и 2 реализуются следующими команды из преамбулы:
\usepackage{polyglossia} %% загружает пакет многоязыковой вёрстки
\setdefaultlanguage[spelling=modern]{russian} %% устанавливает главный язык документа
\setotherlanguage{english} %% устанавливает второй язык документа
\defaultfontfeatures{Ligatures={TeX},Renderer=Basic} %% задаёт свойства шрифтов по умолчанию
\setmainfont{Times New Roman} %% задаёт основной шрифт документа
где за лигатуры отвечает фрагмент
Ligatures={TeX}
Убрав из шаблона cmap
\usepackage{cmap}
и языковую поддержку, ориентированную на babel (т. е. выполнив пункт 3),
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}
получим готовый к работе в XeTeX шаблон.
Следующий пример иллюстрирует описанный подход.
А вот как это было реализовано:
\documentclass{article}
\usepackage{polyglossia} %% загружает пакет многоязыковой вёрстки
\setdefaultlanguage[spelling=modern]{russian} %% устанавливает главный язык документа
\setotherlanguage{english} %% устанавливает второй язык документа
\defaultfontfeatures{Ligatures={TeX},Renderer=Basic} %% задаёт свойства шрифтов по умолчанию
\setmainfont{Times New Roman} %% задаёт основной шрифт документа
\setsansfont{Arial} %% задаёт шрифт без засечек
\setmonofont{Courier New} %% задаёт моноширинный шрифт
\newfontfamily\cyrillicfonttt[Script=Cyrillic]{Courier New}
\usepackage{unicode-math} %% использование Unicode-шрифтов для формул
\usepackage{xltxtra} %% здесь используется для вывода логотипа XeTeX
%% не имеет отношения к XeTeX
\usepackage{indentfirst}
\begin{document}
\section{Возможности}
\XeTeX позволяет:
\begin{itemize}
\item использовать любые шрифты, установленные в операционной системе;
\item использовать продвинутые возможности шрифтовых технологий OpenType, Apple Advanced Typography и Graphite;
\item верстать математические формулы с помощью Unicode-шрифтов, содержащих математические расширения.
\end{itemize}
\section{Примеры}
\subsection{Шрифты}
\textsf{Этот абзац использует шрифт без засечек, заданный \textit{по умолчанию}.}
{\fontspec{Comic Sans MS}А этот --- шрифт Comic Sans MS.}
{\fontspec{CMU Serif}Традиционный \TeX-овский вид обеспечит документу шрифт CMU Serif.}
Наконец, возвращаемся к основному шрифту Times New Roman.
\subsection{Формулы}
\[
\int x^2 dx = \frac{x^3}{3} + C .
\]
Для следующей формулы используем шрифт Cambria Math:
\setmathfont{Cambria Math}
\[
\int x^2 dx = \frac{x^3}{3} + C .
\]
\subsection{Листинг}
\begin{verbatim}
/* Prints Hello World */
#include <stdio.h>
int main (void)
{
printf ("Hello World!"); // This is an english commentary
return 0; // А это русский комментарий
}
\end{verbatim}
\end{document}
Обратите внимание, что единицы измерения в LaTeX и в Word различаются, хотя в обоих случаях называются «пунктами». LaTeX использует пункты pt
, величина которых равна 1/72.27 дюйма, а Word — так называемые PostScript-пункты, равные 1/72 дюйма. LaTeX называет такие пункты «большими» (big point) и обозначает bp
. Поэтому для сходства с Word нужно установить в LaTeX шрифт размера 14bp. Как это сделать описано здесь.
Универсальный шаблон для (PDF)LaTeX и XeLaTeX
Можно настроить шаблон документа так, чтобы он реагировал на используемую разновидность LaTeXa, например, PDFLaTeX или XeTeX. Сделать это можно с помощью пакета ifxetex. Этот пакет позволяет проверить условие \ifxetex
, используется XeTeX или нет. Благодаря этому можно создать условный оператор, в блоки которого поместить команды, специфические для той или иной разновидности LaTeX. Например, так
\usepackage{ifxetex}
% select kind of TeX
\ifxetex % for xetex
\usepackage{polyglossia}
\setdefaultlanguage[spelling=modern]{russian}
\setotherlanguage{english}
\defaultfontfeatures{Ligatures={TeX},Renderer=Basic}
\setmainfont[Scale=.98]{Times New Roman} % scale to 14bp
\setsansfont{Arial}
\setmonofont{Courier New}
\newfontfamily\cyrillicfonttt[Script=Cyrillic]{Courier New}
\else % for pdftex
% PDF search
\usepackage{cmap}
% cyrillic
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\fi
Коллекции шрифтов
Шрифты, в частности CMU Serif, можно найти в Open Font Library. Свободные шрифты Free Serif, Free Sans и Free Mono — аналоги Times New Roman, Arial и Courier хранятся на FontSpace. Множество свободных шрифтов можно найти в коллекциях DaFont.com и Google Fonts.
В 2016 г. появились новые общедоступные шрифты PT Astra Sans и PT Astra Serif. Шрифты разработаны на основе PT Sans и PT Serif, модифицированных таким образом, чтобы они подходили под стандарты оформления документов, эталоном ёмкости для которых является Times New Roman. Помимо стандартного набора знаков для работы с языками Западной и Восточной Европы, а также стандартной кириллицы, шрифты содержат знаки всех алфавитов государственных титульных языков Российской Федерации.
Во многих книгах для отображения математических формул используются Times-подобные шрифты. Однако в Times-шрифтах предназначенных для текста недостаточно математических символов. Вот свободные Times-подобные математические шрифты:
Подключим XITS Math в качестве математического шрифта:
\usepackage{unicode-math}
\setmainfont{XITS}
\setmathfont{XITS Math}
Напомним, что пакет unicode-math нужен для использования юникод-шрифтов в формулах (вместо стандартных TeX-овских шрифтов).
Комментарии
comments powered by Disqus