XeTeX: где скачать и как пользоваться

2026-09-11 17:15:00 Время чтения 46 мин 76

XeTeX — консольный движок TeX для Unicode-вёрстки и современных шрифтов. Он полезен для научных текстов, многоязычных изданий, книг и автоматической генерации PDF, где исходник хранится как текст, а результат собирается командой. На Xeon Live можно скачать XeTeX бесплатно в составе TeX-среды и перейти к настройке рабочего процесса.

Важно понимать роль продукта: XeTeX не является визуальным редактором PDF. Он получает TeX-исходник, выполняет набор, работает с Unicode и шрифтами OpenType, TrueType, Graphite и AAT, формирует XDV и в обычном режиме передаёт его xdvipdfmx для выпуска PDF. В практической работе чаще используется команда xelatex — тот же движок с заранее загруженным форматом LaTeX. Поэтому пользователю нужны текстовый редактор, TeX-дистрибутив, командная строка или IDE и просмотрщик готового PDF.

Что представляет собой XeTeX и как устроено рабочее место

XeTeX входит в современную TeX-экосистему как наборный движок, а не как отдельная программа с собственной лентой и панелью инструментов. Текущий выпуск движка в ветке TeX Live 2026 имеет номер 0.999998. Сам TeX Live 2026 выпущен 1 марта 2026 года. В распространённой схеме пользователь устанавливает TeX Live, редактирует файл .tex, запускает xelatex и получает PDF вместе с журналом .log и служебными файлами.

Команда --version показывает движок, базовую версию TeX и подключённые библиотеки.

Командная строка, редактор и просмотрщик PDF

Рабочая зона XeTeX фактически распределена между тремя инструментами. Редактор отвечает только за текст исходника и сохранение UTF-8. Терминал или кнопка Build запускает xelatex. Просмотрщик показывает PDF. В TeXstudio эти части объединены удобнее, но сам движок остаётся тем же; отдельный обзор TeXstudio полезен тем, кому нужен графический редактор к консольному XeTeX. Для автоматизации редактор вообще не требуется: сборка запускается из shell, Makefile, CI или latexmk.

После сборки рядом с исходником появляются PDF, log, aux и данные SyncTeX.

Что происходит между .tex и PDF

XeTeX сначала создаёт расширенный DVI-формат XDV, затем xdvipdfmx преобразует его в PDF. При обычной команде xelatex этот переход скрыт. Параметр -no-pdf сохраняет XDV отдельно, а -output-driver задаёт обработчик. Поэтому ошибки разделяются между набором и стадией выпуска PDF.

Для повседневного проекта важнее четыре файла. Исходник .tex содержит структуру и текст; .pdf — готовый документ; .log — полный журнал; .aux, .toc, .out и сходные файлы передают данные между проходами. SyncTeX создаёт файл .synctex.gz и связывает строки исходника с местом в PDF. Служебные файлы сохраняют до завершения сборки, поскольку перекрёстные ссылки и оглавление используют данные предыдущего запуска.

Параметр -no-pdf оставляет XDV, который затем преобразуется в PDF программой xdvipdfmx.

Первый документ XeLaTeX: пошаговая сборка от UTF-8 до PDF

Для первого запуска достаточно короткого файла с классом article и пакетом fontspec. Такая минимальная сборка одновременно проверяет три критических слоя: команда xelatex доступна в PATH, LaTeX-формат загружается, а XeTeX видит системный OpenType или TrueType-шрифт. Сразу включаются параметры диагностики, чтобы любая ошибка указывала имя файла и строку, а процесс останавливался на первом критическом сбое.

Минимальный проект проверяет Unicode, fontspec и выпуск PDF одной командой.

Шаг 1. Создать UTF-8 исходник и выбрать шрифт

Создайте каталог проекта и файл main.tex. Редактор сохраняет его в UTF-8 без преобразования кириллицы в восьмибитную кодировку. В начале файла задайте класс документа, затем подключите fontspec и назначьте основной шрифт командой setmainfont. Для первой проверки подходит установленное семейство с кириллицей, например DejaVu Serif или Noto Serif. После begin document добавьте короткий русский абзац, английскую строку и несколько греческих символов. Такая строка сразу показывает, что исходник действительно проходит как Unicode.

  1. Откройте новый текстовый файл и сохраните его как main.tex в UTF-8.
  2. Первая строка задаёт documentclass article. Следующей строкой подключите usepackage fontspec.
  3. Задайте основной шрифт через setmainfont с точным системным именем семейства.
  4. Поместите текст между begin document и end document. Для проверки используйте кириллицу и несколько символов другой письменности.
  5. Сохраните файл и больше не меняйте кодировку в редакторе. XeTeX получает обычный Unicode-текст.

В новых XeLaTeX-проектах пакет inputenc для UTF-8 не нужен: движок работает с Unicode непосредственно. Пакет fontenc с традиционными восьмибитными кодировками также не является основным способом подключения системного OpenType-шрифта. Старый шаблон переносится аккуратно: сначала собирается исходная версия, затем по одному удаляются устаревшие шрифтовые настройки и подключается fontspec. Так проще увидеть, какой пакет меняет метрики или конфликтует с новой схемой.

PDF подтверждает, что UTF-8 и системный шрифт обработаны корректно.

Шаг 2. Запустить xelatex и прочитать результат компиляции

Перейдите в каталог проекта в терминале и выполните xelatex -interaction=nonstopmode -halt-on-error -file-line-error -synctex=1 main.tex. Параметр nonstopmode не останавливает процесс на каждом диагностическом вопросе, halt-on-error завершает работу на первой ошибке, file-line-error добавляет к сообщению имя файла и номер строки, а synctex=1 создаёт данные для переходов между исходником и PDF. Эти параметры удобны и вручную, и в автоматической сборке.

  1. Запустите команду xelatex с параметрами диагностики и именем main.tex.
  2. Дождитесь строки Output written on main.pdf. Она подтверждает создание PDF и сообщает число страниц.
  3. Проверьте строку Transcript written on main.log. В журнале остаётся полная последовательность загрузки классов, пакетов и шрифтов.
  4. Откройте main.pdf и проверьте кириллицу, греческие символы, переносы и шрифт. Пустой квадрат или пропущенный знак означает проблему покрытия шрифта, а не кодировки UTF-8 как таковой.
  5. При наличии ссылок, оглавления или библиографии повторите сборку нужное число раз либо передайте проект latexmk.
В конце успешной компиляции видны строки Output written, SyncTeX written и Transcript written.
1 / 4

После первой удачной сборки полезно зафиксировать команду в README проекта или конфигурации редактора. Один и тот же main.tex должен собираться одинаковым движком из терминала и IDE. Разные кнопки Build, которые запускают pdfLaTeX и XeLaTeX, дают разные шрифтовые модели и часто становятся причиной неочевидных ошибок. Для проекта XeTeX команда xelatex остаётся единой точкой входа.

Системные шрифты и OpenType: настройка без старых кодировок

Работа с современными шрифтами — главная практическая причина выбора XeLaTeX. fontspec предоставляет высокоуровневый интерфейс к OpenType, TrueType и другим поддерживаемым технологиям. Семейство задаётся по системному имени или по файлу. Первый вариант удобен на одной рабочей станции, второй лучше контролируется в команде и в архиве проекта. Результат всегда проверяется на конкретных начертаниях и знаках, потому что имя семейства не гарантирует наличие кириллицы, капители или математических глифов.

fc-match показывает фактический файл, выбранный для указанного имени семейства.

Шаг 1. Найти точное системное имя шрифта

На Linux и системах с fontconfig начните с fc-match. Команда fc-match "Имя семейства" возвращает файл и стиль, которые система подставит по этому имени. fc-list перечисляет установленные семейства. В macOS и Windows имя проверяется средствами системы или редактора шрифтов, а затем подтверждается минимальным документом. Такой порядок исключает ситуацию, когда в исходнике написано маркетинговое название, а fontspec ожидает другое внутреннее имя.

  1. Выберите гарнитуру, содержащую нужные письменности и начертания.
  2. Проверьте точное имя семейства. На Linux выполните fc-match и убедитесь, что найден ожидаемый файл.
  3. Укажите семейство в setmainfont. Не добавляйте расширение файла при выборе по системному имени.
  4. Соберите страницу с обычным, полужирным и курсивным текстом. fontspec сопоставляет начертания автоматически только при корректной структуре семейства.
  5. Просмотрите log и PDF. Предупреждение о замене начертания означает, что нужный вариант не найден и LaTeX использовал доступную форму.

Для корпоративной гарнитуры проверяют именно рабочие файлы, а не только красивый заголовок. Основной текст должен содержать кириллицу, цифры, знаки валют, длинное тире, кавычки и специальные символы проекта. Для словаря добавляют фонетические знаки и диакритику. Для технической документации — математические знаки и символы единиц. Такой тест показывает реальное покрытие семейства до того, как документ разрастётся до сотен страниц.

Пример показывает смену семейства и работу параметров fontspec в готовом PDF.

Шаг 2. Подключить шрифты по файлам для переносимого проекта

Системное имя зависит от окружения. Для долгоживущего или командного проекта шрифты размещают в отдельной папке репозитория только при лицензии, разрешающей такое распространение, а fontspec получает Path, Extension и имена файлов начертаний. В результате сборка не зависит от того, какие версии гарнитуры случайно установлены в операционной системе. Такой подход особенно полезен для издательского макета, где изменение метрик шрифта сдвигает переносы и страницы.

  1. Создайте в проекте каталог fonts и поместите туда разрешённые к распространению OTF или TTF-файлы.
  2. В setmainfont задайте Path на каталог и, при необходимости, Extension. Для семейства с нестандартными именами явно назначьте UprightFont, BoldFont, ItalicFont и BoldItalicFont.
  3. Удалите зависимость от системного семейства: исходник должен ссылаться на файлы проекта, а не на случайную установленную копию.
  4. Соберите документ на второй машине или в чистом контейнере. Сравните log: пути к шрифтам должны указывать на каталог проекта.
  5. Сохраните сведения о лицензии гарнитуры рядом с исходниками. Встраивание шрифта в PDF не означает разрешение передавать сам файл шрифта.
Подключение файла исключает неоднозначность системного поиска и делает источник гарнитуры явным.

Шаг 3. Включить OpenType-функции и проверить реальные глифы

fontspec даёт доступ к функциям OpenType через понятные параметры. Для цифр используются варианты Numbers, для лигатур — Ligatures, для стилистических наборов — RawFeature или специализированные параметры. XeTeX также умеет обращаться к низкоуровневым OpenType script и language tags. Включение функции имеет смысл только у шрифта, где соответствующая таблица действительно присутствует. SmallCaps не превращает обычные строчные буквы в настоящую капитель, когда дизайнер гарнитуры её не создал.

  1. Составьте отдельную строку-образец с цифрами 0123456789, сочетаниями fi/fl, кавычками и буквами, где видны выбранные функции.
  2. Добавляйте по одной настройке fontspec и пересобирайте страницу. Так изменение связывается с конкретным параметром.
  3. Для табличных данных используйте цифры одинаковой ширины, когда гарнитура предоставляет такой вариант. Для книжного текста выбирайте старостильные цифры только по требованиям дизайна.
  4. Не используйте искусственное утолщение и наклон как замену настоящим начертаниям основного текста. Реальные Bold и Italic дают предсказуемые контуры и интервалы.
  5. После настройки проверьте экспортируемый PDF: текст должен копироваться, искаться и содержать ожидаемые символы Unicode, а не только визуально похожие глифы.

Для глубокой диагностики XeTeX предоставляет XeTeXtracingfonts: ненулевое значение записывает в log сведения о найденных шрифтах. Низкоуровневые примитивы XeTeXfonttype, XeTeXcountglyphs, XeTeXglyphindex и XeTeXglyphbounds предназначены для разработчиков классов и шрифтовых инструментов. Обычному автору достаточно fontspec, проверки log и контрольной страницы с реальными символами проекта.

OpenType-функции XeTeX в историческом примере TeXShop: исходник слева, PDF справа.

Многоязычная вёрстка: кириллица, греческий, арабский и другие письменности

Unicode снимает проблему входной кодировки, но не решает языковую типографику автоматически. Правила переносов, направление письма, подписи и выбор гарнитуры задаются языковым пакетом и шрифтом. Для XeLaTeX применяются Babel и Polyglossia; актуальная Polyglossia 2.12 ориентирована на XeLaTeX и LuaLaTeX и опирается на fontspec. В документе отдельно задаются основной язык и дополнительные языки, а для письменности с особой гарнитурой определяется собственное семейство.

Один UTF-8 исходник содержит несколько письменностей, а языковые команды управляют их набором.

Шаг 1. Задать языки и шрифты для каждого письма

Начните с основного языка документа. В Polyglossia используется setdefaultlanguage, дополнительные языки перечисляются через setotherlanguages. Основной шрифт задаётся setmainfont. Для арабского, греческого и других письменностей создаются семейства с командами вида newfontfamily и соответствующим Script. В длинном проекте имена семейства и языковые правила фиксируются в преамбуле, а текст содержит только семантические переключатели языка.

  1. Сохраните исходник в UTF-8 и подключите fontspec вместе с Polyglossia либо настройте Babel для XeLaTeX.
  2. Укажите русский как основной язык, затем объявите реально используемые дополнительные языки.
  3. Назначьте основной шрифт с кириллицей. Для арабского задайте семейство с арабскими глифами и Script=Arabic; для других письменностей используйте гарнитуры с соответствующим покрытием.
  4. Оборачивайте фрагменты в языковые команды или окружения, а не переставляйте символы вручную. Направление и локальные правила должен контролировать языковой слой.
  5. Соберите тестовую страницу с реальными словами, цифрами, скобками и знаками пунктуации. Смешанная строка выявляет проблемы направления лучше, чем изолированные буквы.

Для справа-налево особенно важна логическая последовательность текста. В исходнике арабская или ивритская фраза хранится в нормальном Unicode-порядке. Пакет направления и шейпинг создают визуальный результат. Ручная перестановка букв разрушает поиск, копирование и автоматическую обработку. В сложной письменности проверяют не отдельные глифы, а слова: OpenType-шейпинг выбирает формы и позиционирование в контексте соседних символов.

Арабский Unicode-текст в XeTeX: исходник и итоговый PDF в TeXShop.

Шаг 2. Проверить глифы, переносы и копирование из PDF

После успешной компиляции откройте PDF и проверьте три уровня. Первый — внешний вид: соединение арабских букв, положение диакритики, переносы кириллицы, форма кавычек. Второй — журнал: строк Missing character быть не должно. Третий — текстовый слой PDF: скопируйте фразу из документа и вставьте в простой редактор, затем выполните поиск по редкому слову. Такая проверка обнаруживает проблемы, которые не видны на странице.

  1. Просмотрите лог по выражению Missing character. Каждое предупреждение связывается с конкретным символом и текущим шрифтом.
  2. Проверьте переносы на длинных словах основного языка. Отсутствие переносов часто связано с неактивным языком или отсутствующей языковой коллекцией.
  3. Скопируйте из PDF фрагменты каждого языка. Сравните символы с исходником и убедитесь, что похожие латинские и кириллические буквы не смешаны.
  4. Проверьте поиск в PDF по фамилиям, терминам и строкам со знаками диакритики. Это особенно важно для словарей и академических изданий.
  5. Для проекта с нормализацией Unicode закрепите единый подход к NFC или NFD на этапе подготовки данных. XeTeX предоставляет XeTeXinputnormalization, но единообразие исходных данных проще контролировать до компиляции.

Для CJK и специализированной типографики XeTeX содержит примитивы классов символов и XeTeXinterchartoks. Механизм вставляет токены между классами символов и применяется, в частности, для границ CJK и пунктуации. Это низкоуровневый инструмент: правила действуют на множество мест сразу, поэтому их используют в классе или специализированном пакете и покрывают контрольными примерами.

Хинди в XeTeX: пример сложной письменности и готового PDF.
CJK-пример XeTeX показывает Unicode-символы и цветной набор в TeXShop.

Математика и научный документ: настройка OpenType Math

XeLaTeX работает и с традиционной математикой LaTeX, и с OpenType Math. Пакет unicode-math предоставляет единый интерфейс для XeLaTeX и LuaLaTeX и требует математический OpenType-шрифт с таблицей MATH. Обычный текстовый OTF со знаками плюс и греческими буквами не заменяет математическое семейство: растяжимые скобки, большие операторы, индексы и акценты используют специальные метрики.

Пример показывает обычный текст и формулы, собранные XeLaTeX с отдельным математическим семейством.

Шаг 1. Подключить unicode-math и выбрать математическое семейство

В преамбуле сначала задайте текстовый шрифт через fontspec, затем подключите unicode-math и назначьте setmathfont. Для первой проверки используйте установленное OpenType Math-семейство. После этого соберите формулы с интегралом, суммой, дробью, корнем, греческими буквами, жирными символами и растяжимыми скобками. Один короткий пример проверяет намного больше, чем простая формула a+b.

  1. Подключите fontspec и выберите текстовое семейство документа.
  2. Подключите unicode-math и задайте setmathfont для настоящего OpenType Math-шрифта.
  3. Создайте контрольный набор формул: дробь, корень, интеграл, сумма, матрица, верхний и нижний индекс, греческие буквы.
  4. Соберите документ XeLaTeX и проверьте отсутствие ошибки fontspec о ненайденном шрифте.
  5. Откройте PDF и сравните толщину текста и математики, высоту скобок, положение индексов и форму операторов.
Сборка подтверждает загрузку unicode-math и выпуск математического PDF.

Переход старого научного шаблона выполняют постепенно. Пакеты inputenc и традиционная шрифтовая схема не переносятся механически в современный Unicode-набор. Сначала фиксируется исходный PDF, затем меняется текстовый шрифт, после этого математическая часть. Такой порядок локализует изменения. Набор страниц способен сместиться из-за другой ширины глифов, поэтому номера формул, переносы и разрывы страниц пересматриваются после миграции.

Шаг 2. Проверить формулы перед сдачей документа

Успешная компиляция подтверждает синтаксис, но не типографическое качество. В формуле проверяют размеры операторов, радикалов, скобок и акцентов; в тексте — согласование математической гарнитуры с основным шрифтом. Для диссертации или статьи важна и совместимость издательского класса. Когда класс рассчитан на pdfLaTeX и конкретные Type 1-шрифты, смена движка требует отдельной сверки, а не одной замены команды сборки.

  1. Просмотрите формулы разных типов на экране при увеличении и на тестовой печати.
  2. Проверьте жирные векторы, каллиграфические буквы, греческие символы и редкие операторы. Не все математические семейства оформляют их одинаково.
  3. Проверьте нумерацию формул и ссылки после повторной сборки. Ссылка, появившаяся как ??, требует ещё одного прохода или исправления метки.
  4. Скопируйте несколько Unicode-символов из PDF и проверьте их текстовое представление, особенно при последующей индексации или архивировании.
  5. Сохраните контрольный PDF перед обновлением дистрибутива или шрифтов. Изменение метрик способно изменить переносы и разбиение страниц.
Проверка подтверждает PDF, встроенные шрифты и доступность текстового слоя.

Автоматизация сборки: latexmk, SyncTeX, XDV и воспроизводимый процесс

Большой LaTeX-проект редко собирается одним проходом. Перекрёстные ссылки, оглавление и библиография создают промежуточные данные, после которых XeLaTeX запускается снова. latexmk автоматизирует последовательность команд и повторяет сборку до стабилизации зависимостей. Версия 4.88 выпущена в марте 2026 года и входит в TeX Live. Для XeLaTeX используется режим -xelatex.

latexmk анализирует зависимости и повторяет XeLaTeX столько раз, сколько требуется проекту.

Шаг 1. Перенести повторные проходы на latexmk

Для проекта с ссылками запустите latexmk -xelatex -interaction=nonstopmode -halt-on-error -file-line-error -synctex=1 main.tex. latexmk видит изменившиеся .aux и другие служебные файлы, повторяет XeLaTeX и прекращает цикл после стабилизации. При подключении библиографии он запускает нужный обработчик по зависимостям конфигурации. В результате одна команда заменяет ручную последовательность из нескольких запусков.

  1. Убедитесь, что main.tex успешно собирается обычным xelatex. Автоматизация не должна скрывать базовую ошибку исходника.
  2. Запустите latexmk в режиме -xelatex с теми же диагностическими параметрами, которые используются при ручной сборке.
  3. Изучите вывод latexmk: он показывает правило xelatex, номер прохода и причину повторного запуска.
  4. После завершения откройте PDF и убедитесь, что перекрёстные ссылки и номера страниц больше не отображаются как ?? или устаревшие значения.
  5. Для очистки используйте штатные режимы latexmk, но не удаляйте исходники, рисунки, библиографию и собственные стили. В CI каталог результатов лучше отделить параметром output-directory или настройкой сборщика.
После повторных проходов ссылка получает корректный номер раздела и страницы.

Для живого предпросмотра latexmk поддерживает continuous preview mode и пересобирает документ при изменении зависимостей. В графическом редакторе аналогичную задачу выполняет встроенный watcher или расширение. В обоих случаях двигателем остаётся XeLaTeX, поэтому логика диагностики не меняется: первая критическая ошибка читается в log, а IDE лишь делает переход к строке удобнее.

Шаг 2. Включить параметры, полезные для редактора и CI

Параметры командной строки XeTeX унаследованы в основном от Web2C и Kpathsea. Для рабочих проектов особенно полезны -file-line-error, -halt-on-error, -interaction, -output-directory, -recorder, -synctex и управление shell escape. -output-directory складывает генерируемые файлы в отдельный существующий каталог. -recorder создаёт список реально прочитанных и записанных файлов. -synctex=1 связывает редактор с местом в PDF.

  1. В локальном редакторе включите -synctex=1. После сборки команда прямого или обратного поиска должна переводить курсор между исходником и PDF.
  2. В CI включите -halt-on-error и -file-line-error. Сборка завершится ненулевым кодом на первой критической ошибке, а лог укажет файл и строку.
  3. Используйте -interaction=nonstopmode для автоматического процесса без ожидания ввода. Полный log всё равно сохраняется.
  4. При раздельных каталогах задайте -output-directory и убедитесь, что редактор и latexmk ищут вспомогательные файлы в том же месте.
  5. Не включайте полный -shell-escape для непроверенного исходника. TeX с разрешённым запуском внешних программ получает права текущего пользователя и становится исполняемым содержимым.

Shell escape нужен отдельным пакетам для внешних конвертеров, генераторов графики и подсветки кода. Безопасный издательский процесс заранее генерирует внешние артефакты, затем запускает XeLaTeX без полного shell escape. Для доверенного проекта нужные команды документируются и ограничиваются контейнером или выделенной средой. Это уменьшает число скрытых зависимостей и делает сборку воспроизводимой.

--help перечисляет диагностику, SyncTeX, output-directory, recorder и режим XDV.

Шаг 3. Зафиксировать окружение, шрифты и версии

Точный PDF зависит не только от версии XeTeX. На разбиение строк влияют шрифты, fontspec, языковые пакеты, LaTeX-ядро, HarfBuzz и другие библиотеки. Для длительного издательского цикла фиксируется год TeX Live, список критических пакетов, шрифты проекта и образ CI. Обновление сначала прогоняется по контрольному набору страниц, затем принимается в основную ветку.

  1. Запишите используемый TeX Live и команду сборки в документации проекта.
  2. Храните разрешённые шрифты рядом с проектом либо зафиксируйте точные семейства и версии в среде сборки.
  3. Сохраните журнал успешной эталонной сборки и контрольный PDF. Эти файлы помогают отличить изменение содержания от изменения инструментария.
  4. Проверьте сборку в чистом окружении без пользовательских TEXMF-добавлений. Случайный локальный пакет часто становится скрытой зависимостью.
  5. Обновляйте среду отдельно от правок макета. Один тип изменения за раз упрощает сравнение страниц и поиск причины новых переносов.
Фиксация путей и версии latexmk помогает воспроизводить сборку в другой среде.

Типичные ошибки XeTeX: диагностика по журналу и исправление

XeTeX и LaTeX сообщают много служебного текста, поэтому диагностика строится не по последней строке, а по первой существенной ошибке. Параметр -file-line-error добавляет путь и номер строки, -halt-on-error прекращает лавину вторичных сообщений. После исправления исходник собирается заново, затем проверяется PDF и log. Предупреждения о ссылках, переполненных строках и отсутствующих символах не равнозначны: каждое относится к своему слою.

Сообщение fontspec отделяет проблему поиска шрифта от ошибок Unicode и структуры документа.

Шрифт не найден: проверить имя, файл и путь

Ошибка fontspec с текстом The font cannot be found означает, что выбранное имя или файл не разрешился в доступный шрифт. Исправление начинается с проверки точного системного имени. На fontconfig-системах используется fc-match. При подключении по файлу проверяются Path, Extension и написание имени. После установки нового шрифта перезапустите редактор и заново запустите сборку.

  1. Найдите первую ошибку fontspec и выпишите имя шрифта в точности из сообщения.
  2. Проверьте системный поиск шрифта. При отсутствии результата установите нужную гарнитуру или замените её на доступную.
  3. Для проекта с локальными файлами проверьте относительный Path и регистр букв в имени файла. На Linux регистр различается.
  4. Соберите минимальный документ только с fontspec и одной строкой текста. Это отделяет шрифтовую проблему от остальной преамбулы.
  5. После успешного минимального теста верните настройку в основной проект и проверьте обычное, жирное и курсивное начертания.
XeTeXtracingfonts помогает увидеть, откуда движок получил конкретное семейство.

Missing character: найти символ без глифа

Предупреждение Missing character сообщает, что текущий шрифт не содержит нужный кодовый пункт. Unicode-исходник при этом остаётся корректным; проблема находится в покрытии гарнитуры. Журнал XeTeX для системного шрифта показывает код символа в форме U+.... Правильное исправление — выбрать семейство с нужным диапазоном или назначить отдельный шрифт для соответствующей письменности. Подмена похожей латинской буквой ломает смысл текста и поиск.

  1. Найдите все строки Missing character в log, а не только первую.
  2. Сопоставьте код U+.... с символом исходника и языком, где он используется.
  3. Проверьте, содержит ли текущая гарнитура данный знак. Для целой письменности назначьте отдельное семейство через языковой пакет или fontspec.
  4. Пересоберите документ и повторите поиск Missing character в log. Исправление считается завершённым после исчезновения предупреждений для ожидаемых символов.
  5. Откройте PDF и скопируйте исправленный фрагмент в текстовый редактор. Вставленный текст должен содержать тот же Unicode-символ.
Предупреждение показывает, что выбранный шрифт не содержит конкретный Unicode-символ.

Undefined control sequence и отсутствующий пакет

Undefined control sequence означает, что TeX встретил не объявленную управляющую последовательность. Причина находится в опечатке, отсутствующем пакете, неверном порядке подключения или команде другого движка. Ошибка File ... not found относится к поиску файла пакета или класса. Оба случая исправляются определением источника команды, а не случайным добавлением библиотек до исчезновения сообщения.

  1. Откройте первую строку Undefined control sequence и строку исходника рядом с ней.
  2. Проверьте написание команды и документацию пакета, который должен её определять.
  3. Проверьте наличие пакета через менеджер TeX-дистрибутива или kpsewhich. Установите недостающий компонент штатным способом своей дистрибуции.
  4. При переносе проекта с pdfLaTeX или LuaLaTeX проверьте ветвления по движку и пакеты, рассчитанные на другую шрифтовую модель.
  5. После исправления удалите только повреждённые вспомогательные файлы при необходимости и выполните чистую сборку. Исходники и ресурсы проекта сохраняются.
-halt-on-error останавливает сборку на первой критической неизвестной команде.

Плюсы, минусы и место XeTeX среди альтернатив

XeTeX занимает чёткую нишу: декларативная типографская сборка документов с Unicode и современными шрифтами. Он особенно удобен там, где исходник важнее ручной правки готовой страницы. Для редактирования существующего PDF предназначены другие инструменты; базовое устройство формата и типичные операции разобраны в материале что такое PDF. XeTeX относится к стадии создания документа до появления финальных страниц.

XeTeX, LuaTeX и pdfTeX устанавливаются рядом и выбираются под требования конкретного проекта.

Плюсы

  1. Нативный Unicode-ввод без старой восьмибитной схемы для обычного современного проекта.
  2. Прямой доступ к системным OpenType и TrueType-шрифтам через fontspec, а также поддержка Graphite и AAT на уровне движка.
  3. Сильная база для многоязычной типографики, сложных письменностей и лингвистических изданий.
  4. OpenType Math через unicode-math и современные математические семейства.
  5. Удобная автоматизация из командной строки, CI и latexmk; исходники хорошо подходят для систем контроля версий.
  6. Входит в TeX Live и MiKTeX и работает вместе с большой экосистемой LaTeX-пакетов.

Минусы

  1. Нет собственного визуального редактора: рабочая среда собирается из редактора, терминала и просмотрщика.
  2. Журналы ошибок требуют привычки к TeX-диагностике; вторичные сообщения легко отвлекают от первой причины.
  3. Точный вид документа зависит от версий шрифтов, пакетов и библиотек шейпинга, поэтому долгие проекты требуют фиксации окружения.
  4. Старые шаблоны pdfLaTeX с Type 1, fontenc и специализированными пакетами не всегда переносятся простой сменой движка.
  5. Для глубокого программирования процесса LuaLaTeX предоставляет более мощный встроенный язык Lua.
  6. XeTeX не заменяет PDF-редактор, OCR, форму для заполнения или инструмент перестановки страниц.

Кому подойдёт

  1. Авторам диссертаций, книг и технической документации с Unicode и современными гарнитурами.
  2. Лингвистам и издателям многоязычных материалов со сложными письменностями и диакритикой.
  3. Командам, которые хранят документы как код и собирают PDF автоматически.
  4. Проектам с корпоративным OpenType-шрифтом и строгой повторяемой структурой страниц.

Кому не подойдёт

  1. Пользователям, которым нужно мышью исправить уже готовый PDF без исходного TeX.
  2. Командам без компетенции LaTeX, где макет постоянно перестраивается вручную в визуальном редакторе.
  3. Проектам, глубоко зависящим от старого pdfLaTeX-класса и не требующим Unicode-шрифтовой модели.
  4. Системам, где основная ценность строится на программируемой обработке узлов и Lua-коде внутри движка.

XeTeX, LuaLaTeX, pdfLaTeX и Tectonic

LuaLaTeX близок к XeLaTeX по Unicode и fontspec, но добавляет встроенный Lua и глубокий доступ к внутренним структурам набора. Его выбирают для новых программируемых шаблонов, сложной автоматизации внутри движка и задач, где Lua является частью архитектуры. XeLaTeX остаётся проще там, где главная задача — системные шрифты, языки и стабильная традиционная модель без собственного Lua-кода.

Движок выбирается командой сборки проекта; TeX Live устанавливает несколько вариантов рядом.

pdfLaTeX рационален для старых издательских классов и давно отлаженных шаблонов. Он напрямую создаёт PDF и использует другую шрифтовую модель. Современный LaTeX принимает UTF-8, однако произвольные системные OpenType-шрифты и сложные письменности остаются сильной стороной XeLaTeX. Миграция оправдана конкретной типографской задачей.

Tectonic основан на XeTeX и TeX Live, но упрощает процесс: сам получает необходимые файлы и ориентирован на автоматическую сборку. В 2026 году выпущен Tectonic 0.17.0. TeX Live с XeLaTeX удобнее проектам, зависящим от множества дополнительных утилит и привычной инфраструктуры tlmgr.

Практические рекомендации по выбору и эксплуатации XeTeX

Для нового многоязычного документа с современными OTF или TTF-шрифтами XeLaTeX остаётся практичным выбором. Используйте одну TeX-дистрибуцию, UTF-8, fontspec, языковой пакет и latexmk. Контрольный документ с реальными символами, начертаниями и формулами выявляет несовместимость до работы с основной рукописью.

Контрольный цикл проверяет успешный PDF, отсутствие пропущенных символов и текстовый слой.

Для командного проекта фиксируются TeX Live, команда сборки, шрифты и критические пакеты. Обновление инструментов отделяется от правок текста. Перед выпуском проверяются PDF, log, Missing character, ссылки, оглавление и встраивание шрифтов. PDF/A и PDF/X требуют отдельной конфигурации и профильного валидатора: успешный XeLaTeX сам по себе не удостоверяет соответствие стандарту.

Для старого проекта pdfLaTeX сначала сохраняется рабочая сборка, затем оценивается миграция. Переход полезен при системных OpenType-шрифтах и сложных письменностях. Без этих требований разумно сохранить исходный движок. Для программируемого шаблона подходит LuaLaTeX, для компактной автоматической среды — Tectonic. XeTeX ценен специализацией на Unicode-наборе и современной шрифтовой модели.

Базовая последовательность остаётся простой: подготовить UTF-8 исходник, выбрать шрифты, собрать xelatex, прочитать первую существенную ошибку, проверить PDF и автоматизировать повторные проходы. После освоения этой схемы XeTeX перестаёт восприниматься как сложный PDF-инструмент и становится тем, чем он является по архитектуре: движком, который надёжно превращает структурированный текст в типографски рассчитанный документ.