> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ru/podrobnye-stati/49-the-tex-family-tree-latex-pdftex-xetex-luatex-and-context.md).

# Семейное дерево TeX: LaTeX, pdfTeX, XeTeX, LuaTeX и ConTeXt

История LaTeX восходит аж к 1977 году, когда Дональд Кнут впервые понял необходимость в программе для высококачественной верстки. Это замечательное свидетельство качества LaTeX: система, которую он задумал тогда, и сегодня остается лучшим инструментом для этой задачи, хотя с тех пор за десятилетия было сделано много полезных дополнений. Фактически, LaTeX — одно из этих дополнений к оригинальной системе, разработанной Дональдом Кнутом, которая называлась [TeX](http://www.tug.org/).

Чтобы сохранить свой авторитет в мире LaTeX, нужно писать это с заглавными T и X и произносить как «Лэй-Тех». Это потому, что X в TeX на самом деле — заглавная хи (χ) из греческого алфавита. А latex с обычным написанием и произношением — это разновидность каучука!

## Оригинальный TeX

Существует большое семейство инструментов, происходящих от TeX, и с первого взгляда это может выглядеть как список бессмысленных слов: LaTeX, pdfTeX, XeLaTeX, LuaTeX, ConTeXt и так далее. Предком всего этого, конечно, является оригинальная программа TeX Кнута. Она берет документ в виде обычного текста и превращает его в красиво сверстанный документ. Кнут очень педантично относился к верстке, и внимание к деталям в TeX хорошо заметно. Пример документа TeX может выглядеть примерно так:

```latex
\TeX{} хорошо верстает такие слова, как `fjord', `efficiency',
и `fiasco'. Он также хорошо верстает математику, например,
$a^2 + b^2 = c^2$.
\bye
```

Результат после запуска этого через программу TeX выглядит так:

![Texsample.png](/files/6df6a19e6c684fffcc6b32644008403611546abd)

Обратите внимание, как сочетания букв 'fi', 'fj' и 'ff' в примерах слов красиво сливаются, а математические символы хорошо разнесены. В более крупном масштабе TeX очень хорошо разрывает строки в нужных местах, создавая хорошо выровненный текст, с переносами там, где это уместно.

Он не только красиво верстает текст, но и содержит набор команд, например `\bye` и `\TeX` в примере выше. Они могут делать простые вещи, например менять размер шрифта или способ размещения текста, а также куда более мощные вещи, такие как ведение счётчика разделов для перекрёстных ссылок на страницы или автоматическое создание оглавления. В программу TeX встроено около 300 команд, но внутри нее могут быть определены и другие команды. Дональд Кнут написал еще примерно 600 полезных команд внутри TeX в пакете под названием Plain TeX, который облегчает некоторые распространенные задачи верстки.

## LaTeX

Команды в TeX и Plain TeX по-прежнему довольно базовые, и делать с их помощью сложные вещи нелегко. Чтобы помочь с этим, Лесли Лэмпорт создал [LaTeX](http://www.latex-project.org/) в начале 1980-х годов, чтобы предоставить более высокоуровневый язык для работы, чем TeX. LaTeX — это набор команд, определённых через базовые команды TeX, часто на множестве уровней абстракции. Все команды, которые вы используете в документе LaTeX, на самом деле всего лишь сложные наборы команд TeX в основе, если, конечно, вы не используете команду TeX напрямую! Такие понятия, как пакеты (`\usepackage{...}`), окружения (`\begin{environment} ... \end{environment}`), и классы документов (`\documentclass{...}`) были введены Лесли Лэмпортом в LaTeX.

Создав стандартизированную систему пакетов для LaTeX, Лесли Лэмпорт позволил сообществу вырасти до огромных размеров. Теперь доступны тысячи и тысячи пакетов LaTeX, позволяющих верстать всё что угодно — от субфигур до узоров для вязания. Также существует множество классов документов для разных типов документов, будь то вы пишете книгу, отчёт по лабораторной работе или резюме. У многих издателей и журналов есть собственные классы документов, которые оформляют их материалы так, как они хотят.

## pdfTeX

Программа TeX удивительно стабильна для программного обеспечения старше 20 лет; Кнут объявил, что в 1989 году она стала функционально завершённой, и с тех пор вносились только исправления ошибок. Разумеется, это не остановило значительное и продолжающееся развитие LaTeX, потому что он написан на самом TeX. Фактически, стабильность TeX позволила процветать таким пакетам, как LaTeX, построенным поверх него.

Это не означает, что базовая программа TeX не получила никаких улучшений за последние 20 лет. Вовсе нет: просто улучшения делались рядом с TeX, а оригинальный TeX оставался стабильным. Самым важным улучшением 1990-х стало создание [pdfTeX](http://www.tug.org/applications/pdftex/) Ханом Тхе Тхань для его докторской диссертации. Оригинальная программа TeX выводит сверстанный документ в собственный формат под названием DVI (DeVice Independent, независимый от устройства), который затем можно преобразовать в файл PostScript для печати. Однако формат PDF появился в 1993 году, и сегодня мы видим, что он явно победил как более удачный формат по сравнению с PostScript. Есть множество функций, которые делают PDF лучше, например гиперссылки между разделами, раздел метаданных, позволяющий видеть оглавление в левой панели вашего PDF-просмотрщика, и поддержка более широкого и более современного набора форматов изображений. pdfTeX — это модификация TeX, которая позволяет ему напрямую выводить PDF и, таким образом, пользоваться этими дополнительными возможностями.

Когда вы устанавливаете дистрибутив LaTeX в свою систему сегодня, он на самом деле поставляется с двумя разными программами: `tex`, и `pdftex`. Кроме того, в дополнение к ним он включает ещё две программы: `latex` и `pdflatex`, но на самом деле это лишь обёртки вокруг `tex` и `pdftex` соответственно. Сначала они загружают пакеты LaTeX перед обработкой вашего документа, но внутри по-прежнему остаются TeX. Если вы запустите `latex` или `tex` то получите файл DVI, который затем можно преобразовать в файл PostScript или PDF, но если вы запустите `pdflatex` то получите PDF напрямую.

В основном, `pdftex` и `pdflatex` являются улучшениями по сравнению с `tex` и `latex`, но есть один недостаток. Оригинальный TeX и формат DVI поддерживают файлы Encapsulated PostScript (`.eps`) потому что их легко можно включать в файлы PostScript (получаемые путем преобразования `.dvi` файлов в PostScript через [`Dvips`](https://www.tug.org/texinfohtml/dvips.html).). Однако, `pdftex` не может включать файлы EPS, и вместо этого вам следует использовать PDF (которые можно получить из файлов EPS с помощью команды `epstopdf` которая обычно поставляется с дистрибутивами LaTeX). Взамен этого недостатка pdfTeX добавляет поддержку `.png`, `.jpg` и `.pdf` изображений, тогда как оригинальный TeX поддерживает только .eps (через [`Dvips`](https://www.tug.org/texinfohtml/dvips.html)).

## XeLaTeX и LuaTeX

До сих пор мы видели, что TeX развивался двумя разными путями с момента своего появления: благодаря добавлению более простых в использовании команд поверх оригинальной системы (LaTeX) и благодаря обновлениям базовой программы для поддержки вывода PDF (pdfTeX). Однако на этом история не заканчивается, и продолжались усилия по модернизации TeX. В 2004 году Джонатан Кью создал [XeTeX](http://tug.org/xetex/), который является ещё одной модификацией базового движка TeX, на этот раз для поддержки более широкого набора символов, выходящего далеко за рамки простых английских цифр и букв, а также для поддержки современных форматов шрифтов. Это значительно облегчает написание на иностранных языках и также позволяет использовать в LaTeX шрифты, которые традиционно были доступны только вашему текстовому процессору.

[LuaTeX](http://www.luatex.org/) является попыткой расширить оригинальную программу TeX более разумным языком программирования. Хотя в принципе из TeX можно сделать абсолютно всё, на практике это очень громоздкий язык программирования, если его вообще можно назвать языком программирования. Большая часть внутреннего устройства LaTeX сложна и трудна для понимания посторонними из-за необходимости работать только в TeX. LuaTeX расширен одноимённым скриптовым языком Lua, который является простым и стабильным языком, идеально подходящим для написания сложных макросов. По состоянию на 2012 год он всё ещё активно развивается, и его API может изменяться, но он по-прежнему очень полезен.

## ConTeXt

Мы уже упоминали LaTeX как расширение набора команд, доступных в TeX, но это не единственный пакет, который существенно расширил TeX. [ConTeXt](http://wiki.contextgarden.net/What_is_ConTeXt) — это ещё одна система, созданная в 1990 году Хансом Хагеном. LaTeX стремится избавить пользователя от необходимости принимать решения о типографике и компоновке (вы набираете `\section` и `\emph` но вам не нужно беспокоиться о том, что они делают — это оставлено на усмотрение класса документа или макета).

В качестве последней исторической ремарки я должен упомянуть [AMSTeX](http://en.wikipedia.org/wiki/AMS-LaTeX) который был расширением макросов Plain TeX и использовался Американским математическим обществом (AMS) с 1982 по 1985 год. Его наследие сохраняется в пакетах AMS-LaTeX, которые являются неотъемлемой частью многих документов LaTeX: `\usepackage{amsmath}`.

## Будущее

Что ждет TeX и LaTeX в будущем? Я пока не знаю, но, как однажды сказал Алан Кей:

> Лучший способ предсказать будущее — изобрести его.

С помощью ShareLaTeX мы надеемся развивать TeX и LaTeX в третьем направлении, внося существенные улучшения в рабочий процесс LaTeX. Несмотря на то, что LaTeX существует уже более 20 лет, он по-прежнему в основном остается программой командной строки, которую приходится использовать в неудобном цикле написания, компиляции и проверки результата. Способы совместной работы обычно сводятся к громоздким электронным письмам, а не к упрощённым процессам, доступным в системах обработки текста вроде Google Docs.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ru/podrobnye-stati/49-the-tex-family-tree-latex-pdftex-xetex-luatex-and-context.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
