> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/latex/uk/inshi-temi/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Серія з шести частин: як насправді працюють макроси TeX?

## Про цю серію

Ця серія статей має амбітну мету: крок за кроком пояснити, *як* як насправді працюють макроси TeX, такі як команди LaTeX, — досліджуючи процеси, що відбуваються всередині програмного рушія TeX. Вона намагається розповісти про поведінку TeX під час обробки:

* читання вхідних символів і використання кодів категорій;
* утворення символьних і командних токенів — та формули, які використовує TeX;
* як TeX розпізнає, а потім обробляє команди TeX;
* внутрішні деталі зберігання визначень макросів і аргументів макросів як списків токенів — за допомогою графіки, створеної з внутрішніх даних TeX;
* і завершується дослідженням того, що таке розгортання макросів *насправді* означає — з використанням реальних даних ізсередини рушія TeX.

Однак, оскільки рушії TeX — це дуже складні програмні системи, ми не можемо сподіватися охопити все, але ми намагалися розглянути найважливіші, основні, можливості макрообробки TeX.

#### Панель навігації

Кожна стаття має таку панель навігації перед і після тексту, щоб ви могли швидко перейти до іншої статті в серії:

[Частина 1](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_1?preview=true) [Частина 2](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_2?preview=true) [Частина 3](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_3?preview=true) [Частина 4](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_4?preview=true) [Частина 5](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_5?preview=true) [Частина 6](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_6?preview=true)

### Частина 1: Коди категорій

У цій статті розглядається логіка концепції кодів категорій у TeX: що це таке і як TeX використовує їх, щоб фільтрувати вхідні дані на вміст для верстки та команди для виконання.

### Частина 2: Читання вхідних даних очима TeX

За допомогою серії графіків ми використовуємо перевірену часом аналогію, що TeX має «очі», якими читає (сканує) свій вхід. Ми розглядаємо приклади використання TeX кодів категорій для створення символьних токенів і те, як TeX розпізнає та обробляє команди, використовуючи код категорії 0 («символ виходу»).

### Частина 3: Від вхідного тексту до команд

У цій статті докладно розглядається, як TeX розпізнає та обробляє команди, виявлені у вхідних даних. Ми досліджуємо, як TeX зберігає та отримує інформацію про команди: коди команд, модифікатори команд, а також оглядаємо кілька внутрішніх змінних, які TeX використовує для зберігання інформації про елементи, прочитані з вхідних даних. Частина статті є досить низькорівневим матеріалом, який можна пропустити під час першого читання.

### Частина 4: Структура макроса

Ми вводимо та використовуємо таку «схему» для опису структури макросів:

```
<TeX macro primitive><macro name><parameter text>{<replacement text>}
```

Далі ми розглядаємо низку прикладів, щоб продемонструвати роль і призначення `<parameter text>` як «шаблону токенів», який можна побудувати за допомогою токенів, що діють як *роздільники*.

### Частина 5: Списки токенів і внутрішнє зберігання макросів у TeX

У цій статті докладно досліджується, як TeX використовує списки токенів для зберігання визначень макросів. За допомогою розгорнутих діаграм, згенерованих спеціально модифікованою версією TeX, ми розглядаємо спеціалізовані токени, які TeX використовує для розпізнавання та обробки аргументів макросів користувача.

### Частина 6: Розгортання та обробка макросів

У частині 6 ми використовуємо докладну графіку, щоб пояснити й дослідити точне значення розгортання макросів і наслідки токенізації аргументів макросів у TeX перед подачею їх у макрос .

## Коротка примітка: Використання «TeX», а не LaTeX

Як обговорюється в статті [Що в назві: путівник багатьма варіантами TeX](/latex/uk/dokladni-statti/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) для позначення/опису TeX, LaTeX та їхніх похідних використовується широкий спектр термінів. Відтак варто коротко пояснити наше використання/значення «TeX» у контексті цієї серії.

«TeX», дещо заплутано, є і назвою виконуваної програми, і назвою мови верстки. Щоб розрізняти ці два значення, термін *рушій TeX* використовується для розрізнення виконуваної програми TeX і мови верстки. Частина конкретних даних, відомостей і подробиць, використаних у цій серії, походить із детального аналізу вихідного коду оригінального ПЗ TeX Кнута, але описані принципи є спільними для всіх рушіїв TeX. Тож упродовж нашого обговорення під «TeX» слід розуміти один із виконуваних рушіїв TeX — таких як оригінальний TeX Кнута, pdfTeX, XeTeX або LuaTeX.

У статтях ми використовуємо примітивну команду TeX `\def` для визначення наших прикладів макросів: ми не використовуємо команду LaTeX `\newcommand` яка, безсумнівно, більш знайома більшості користувачів Overleaf. На це є дуже вагома причина: наша мета — зрозуміти фундаментальні принципи, що лежать в основі поведінки макросів TeX, але для цього нам потрібно використовувати базові команди (примітиви), вбудовані в програмне забезпечення TeX. Команди LaTeX, такі як `\newcommand`є самі по собі макросами: командами з певною запрограмованою поведінкою, які, зрештою, складаються з шарів нижчорівневих примітивних команд TeX. Щоб краще зрозуміти фундаментальну поведінку TeX, ми маємо використовувати примітиви TeX, а не макроси LaTeX.

## Приклади та графіка

Замість того щоб покладатися лише на набір прикладних макросів, призначених для демонстрації різних можливостей, крайніх випадків і поведінки TeX, ми також використовуємо широкий набір графіки, щоб зазирнути всередину самого TeX і побачити *як* та *чому* чому його макрообробка працює саме так, як працює. Багато з цих графічних матеріалів (діаграми списків токенів/вузлів) підготовлено за допомогою спеціально модифікованої версії оригінального TeX Кнута.

Overleaf адаптував TeX Кнута, додавши код (написаний мовою C), який «вбудовується» в макрообробку TeX і досліджує дані та структури даних, які зазвичай недоступні користувачам. Кожного разу, коли викликається макрос, модифікований рушій TeX створює додаткові вихідні файли, що містять дані у форматі, який можна обробляти за допомогою [Graphviz](https://www.graphviz.org/)— програми з відкритим кодом для візуалізації графів. Підсумковий результат — це графіка (діаграми списків вузлів), яка точно показує, як TeX зберігає визначення макроса, разом із графічним представленням будь-яких аргументів, наданих користувачем під час виклику макроса.

З необхідності цілі цієї серії вимагають обговорення широкого кола тем, багато з яких є досить низькорівневими і, спочатку, можуть здаватися дуже далекими від завдання верстки ваших документів. Сподіваємося, що після глибшого занурення ви отримаєте основу для побудови кращого розуміння, яке зрештою заощадить вам багато часу і, можливо, також зменшить рівень розчарування. Ми також сподіваємося, що спеціально згенерована графіка, яка супроводжує цю серію, також дасть унікально цінне розуміння, щоб допомогти й підтримати всіх читачів у їхньому прагненні краще розуміти макроси TeX.

## Налаштована Overleaf версія TeX

Відео дає коротку демонстрацію модифікованої версії TeX від Overleaf, пристосованої для створення діаграм вузлів Graphiviz (`.gv` файлів) — жоден інший аспект поведінки TeX не зазнає впливу цих змін.  `.gv` Файли містять подання списків токенів TeX, які використовуються для зберігання визначень макросів і аргументів макросів. Візуалізацію Graphviz експортують у SVG, який потім імпортується до [Inkscape](https://inkscape.org/) для подальшого анотування перед включенням графіки до статті.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/40EAwKxZnNwgxwe9SpAwNY/5bce5de21509f3324bc50527ec6815e7/texdemo.mp4>" %}


---

# 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://ayakaleaf-pro.ayaka.space/latex/uk/inshi-temi/01-a-six-part-series-how-do-tex-macros-actually-work.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.
