Модификация шаблона

Рассмотрим как перенести документ из «традиционного» LaTeX в XeTeX на примере шаблона отчета о НИР, описанного тут. Предполагается, что читатель уже имеет навыки работы в LaTeX и слышал о XeTeX.

Если коротко, то все наши действия сводятся к выполнению трёх пунктов.

  1. Настройка шрифтов. Пакет babel меняется на polyglossia, основным шрифтом документа становится Times New Roman. Последнее не обязательно, но лично для меня послужило причиной использовать XeTeX.
  2. Настройка поддержки TeX-овских лигатур. Двойной дефис должен превращаться в «минус», тройной — в «тире» и т. д.
  3. Уборка «мусора», т. е. ненужных для работы в 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 шаблон.

Следующий пример иллюстрирует описанный подход.

sample.png

А вот как это было реализовано:

\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