> 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/uk/dokladni-statti/03-a-six-part-article-series-on-expandafter-tex-tokens-and-expansion.md).

# Серія з шести статей про \expandafter, токени TeX і розгортання

## Огляд

Примітив TeX `\expandafter` є універсальною командою, яку програмісти LaTeX/TeX використовують для створення складних макросів — таких як команди (макроси), що надаються пакетами LaTeX. На поверхні, `\expandafter` його нескладно використовувати, але ця маска простоти швидко зникає, коли ви стикаєтеся зі складнішими конструкціями, такими як кілька послідовних `\expandafter` команд, що використовуються для виконання всіляких операцій із «жонглюванням токенами» `...\expandafter\expandafter\expandafter...`.

Ця серія статей має амбітну мету: пояснити *як* сайті `\expandafter` як насправді працюють команда та розгортання TeX — від базових принципів до дослідження процесів, що відбуваються глибоко всередині програмного ядра TeX. Читачі можуть одразу перейти до [статей](#accessing-articles-the-navigation-bar) або прочитати [вступі](#introduction-and-who-is-this-series-for) і причину та обґрунтування цієї серії.

## Доступ до статей: панель навігації

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

[Частина 1](/latex/uk/dokladni-statti/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Частина 2](/latex/uk/dokladni-statti/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Частина 3](/latex/uk/dokladni-statti/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Частина 4](/latex/uk/dokladni-statti/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Частина 5](/latex/uk/dokladni-statti/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Частина 6](/latex/uk/dokladni-statti/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

Ось посилання на 6 статей серії:

1. [Вступ до токенів TeX](/latex/uk/dokladni-statti/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md)
2. [Значення розгортання](/latex/uk/dokladni-statti/22-how-does-expandafter-work-the-meaning-of-expansion.md)
3. [TeX використовує тимчасові списки токенів](/latex/uk/dokladni-statti/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md)
4. [Від базових принципів до дослідження вихідного коду TeX](/latex/uk/dokladni-statti/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md)
5. [Докладне дослідження макросу](/latex/uk/dokladni-statti/17-how-does-expandafter-work-a-detailed-macro-case-study.md)
6. [Докладне дослідження послідовних `\expandafter` команди](/latex/uk/dokladni-statti/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

## Вступ і для кого ця серія?

### \expandafter: базові принципи роботи

Призначення \expandafter — примусити передчасне розгортання токена у вхідних даних: якщо вхід містить два послідовні токени, $$\mathrm{T\_1}$$ та $$\mathrm{T\_2}$$, `\expandafter` збереже токен $$\mathrm{T\_1}$$, розгорне токен $$\mathrm{T\_2}$$ і помістить токен $$\mathrm{T\_1}$$ назад перед розгортанням $$\mathrm{T\_2}$$:

$$\verb\*\expandafter\*\ \mathrm{T\_1}\mathrm{T\_2} \rightarrow \mathrm{T\_1}\text{\<expansion of }\mathrm{T\_2}\text{>}$$

Узгоджуючись зі стандартним описом `\expandafter`його поведінки ми зазначили, що він «зберігає токен $$\mathrm{T\_1}$$», примушує до «розгортання» токена $$\mathrm{T\_2}$$ (до того, як TeX зазвичай зробив би це), а потім поміщає токен $$\mathrm{T\_1}$$ «назад у вхідні дані», щоб TeX знову прочитав його. Автор цієї статті пригадує, що був спантеличений деякими аспектами `\expandafter`його поведінки «жонглювання токенами»; зокрема:

* Що означає «зберегти токен» або «покласти токен назад у вхідні дані» — куди «зникають» ці збережені токени і як TeX зчитує їх знову?
* Як «виглядає» розгортання або що воно насправді означає?
* Як TeX обробляє кілька послідовних `\expandafter` команд — як це *насправді* працює?

### Цілі серії статей

Ця серія має на меті відповісти на поставлені вище запитання, документуючи результати дослідження внутрішнього устрою TeX. Overleaf створив спеціалізовану версію одного з рушіїв TeX і використав [середовища Eclipse IDE](https://www.eclipse.org/ide/) щоб спостерігати за роботою вихідного коду TeX під час обробки `.tex` файла, що містить приклади використання `\expandafter`.

Ми поділимося результатами цього дослідження, щоб розглянути:

* справжню природу/значення токенів TeX;
* створення/використання TeX тимчасових списків токенів;
* що насправді означає «розгортання».

Досліджуючи ці теми, ми складемо цілісну картину, щоб пояснити *як* `\expandafter` виконує свою поведінку «жонглювання токенами». Ця серія статей написана для всіх, хто зацікавлений у глибшому розумінні цих тем: зазирнути глибше всередину самого TeX, досліджуючи ті частини внутрішніх операцій TeX, які дають змогу `\expandafter` творити своє диво.

Писати статті про TeX та пов’язані з TeX концепції/принципи складно, тому що TeX — надзвичайно складний програмний продукт: його набраний вихідний код налічує багато сотень сторінок. Наприклад, подивіться на цей [проєкт Overleaf](https://www.overleaf.com/latex/examples/typeset-the-source-code-documentation-for-tex-e-tex-or-pdftex/qkgfgyspnhcv) який за замовчуванням верстає вихідний код $$\mathrm{\varepsilon}\text{-}\mathrm{\TeX}$$: згенерований PDF-файл містить понад 600 сторінок.

Усередині TeX — це складна мережа взаємопов’язаних дій і процесів, що створює труднощі, коли намагаєшся обговорювати ізольовані аспекти його поведінки: виокремити певний «компонент», такий як `\expandafter`, і намагатися пояснити його, не постійно посилаючись на інші аспекти програмного забезпечення TeX. За своєю природою, `\expandafter` команда взаємодіє з процесом TeX *розширення*— процес, який для багатьох із нас є розмитим і дещо складним для повного розуміння поняттям. Однак розгортання є справді фундаментальним аспектом поведінки TeX, пронизуючи внутрішню роботу TeX і відбуваючись глибоко всередині самого програмного забезпечення TeX. У цій серії статей ми дослідимо справжнє значення розгортання, спершу зібравши набір пов’язаних принципів і поведінкових особливостей, достатній для побудови базового розуміння розгортання. Спираючись на ці основи, ми завершуємо, зробивши «глибоке занурення» всередину самого TeX, досліджуючи реальний вихідний код, який реалізує механізм розгортання TeX.

## На завершення

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

Щасливого $$\mathrm{\TeX}\text{ing!}$$, від Graham Douglas і команди Overleaf.


---

# 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/uk/dokladni-statti/03-a-six-part-article-series-on-expandafter-tex-tokens-and-expansion.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.
