> 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/cs/clanky-do-hloubky/03-a-six-part-article-series-on-expandafter-tex-tokens-and-expansion.md).

# Šestidílná série článků o \expandafter, tokenech TeXu a expanzi

## Přehled

Primitiva TeXu `\expandafter` je všestranný příkaz, který programátoři LaTeXu/TeXu používají k vytváření sofistikovaných maker — například příkazů (maker) poskytovaných balíčky LaTeXu. Na první pohled, `\expandafter` se snadno používá, ale tato maska jednoduchosti rychle mizí, když narazíte na složitější konstrukce, jako jsou více po sobě jdoucí `\expandafter` příkazy používané ke všemožným „žonglováním s tokeny“ `...\expandafter\expandafter\expandafter...`.

Tato série článků má ambiciózní cíl: vysvětlit *jak* webových stránkách `\expandafter` příkaz a expanze TeXu skutečně fungují — od základních principů až po zkoumání procesů, které probíhají hluboko uvnitř softwaru TeX enginu. Čtenáři mohou přeskočit rovnou na [články](#accessing-articles-the-navigation-bar) nebo si přečíst [úvodu](#introduction-and-who-is-this-series-for) a důvod a zdůvodnění této série.

## Přístup k článkům: navigační lišta

Každý článek má před textem i za ním následující navigační lištu, abyste mohli rychle přejít na jiný článek v sérii:

[Část 1](/latex/cs/clanky-do-hloubky/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Část 2](/latex/cs/clanky-do-hloubky/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Část 3](/latex/cs/clanky-do-hloubky/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Část 4](/latex/cs/clanky-do-hloubky/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Část 5](/latex/cs/clanky-do-hloubky/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Část 6](/latex/cs/clanky-do-hloubky/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

Zde jsou odkazy na 6 článků v této sérii:

1. [Úvod do tokenů TeXu](/latex/cs/clanky-do-hloubky/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md)
2. [Význam expanze](/latex/cs/clanky-do-hloubky/22-how-does-expandafter-work-the-meaning-of-expansion.md)
3. [TeX používá dočasné seznamy tokenů](/latex/cs/clanky-do-hloubky/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md)
4. [Od základních principů až po zkoumání zdrojového kódu TeXu](/latex/cs/clanky-do-hloubky/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md)
5. [Podrobná případová studie makra](/latex/cs/clanky-do-hloubky/17-how-does-expandafter-work-a-detailed-macro-case-study.md)
6. [Podrobná studie po sobě jdoucích `\expandafter` příkazy](/latex/cs/clanky-do-hloubky/18-how-does-expandafter-work-a-detailed-study-of-consecutive-expandafter-commands.md)

## Úvod a pro koho je tato série určena?

### \expandafter: základní principy fungování

Účelem \expandafter je vynutit předčasnou expanzi tokenu ve vstupu: jsou-li ve vstupu dva po sobě jdoucí tokeny, $$\mathrm{T\_1}$$ a $$\mathrm{T\_2}$$, `\expandafter` uloží token $$\mathrm{T\_1}$$, rozvine token $$\mathrm{T\_2}$$ a umístí token $$\mathrm{T\_1}$$ zpět před expanzi $$\mathrm{T\_2}$$:

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

V návaznosti na standardní popis `\expandafter`jeho chování jsme si všimli, že „uloží token $$\mathrm{T\_1}$$“, vynutí „expanzi“ tokenu $$\mathrm{T\_2}$$ (dříve, než by to TeX normálně udělal), a pak vloží token $$\mathrm{T\_1}$$ „zpět do vstupu“, aby jej TeX přečetl znovu. Autor tohoto článku si vzpomíná, že ho některé aspekty `\expandafter`jeho chování při „žonglování s tokeny“ mátly; konkrétně:

* Co znamená „uložit token“ nebo „vložit token zpět do vstupu“ — kam tyto uložené tokeny „jdou“ a jak je TeX znovu čte?
* Jak expanze „vypadá“ nebo co vlastně znamená?
* Jak TeX zpracovává více po sobě jdoucích `\expandafter` příkazů — jak to *ve skutečnosti* funguje?

### Cíle série článků

Tato série si klade za cíl odpovědět na výše uvedené otázky prostřednictvím zdokumentování výsledků výzkumu vnitřního fungování TeXu. Overleaf vytvořil upravenou verzi jednoho z TeX enginů a použil [Eclipse IDE](https://www.eclipse.org/ide/) k pozorování zdrojového kódu TeXu v provozu při zpracování `.tex` souboru obsahujícího ukázkové použití `\expandafter`.

Podělíme se o výsledky tohoto výzkumu, abychom prozkoumali:

* skutečnou povahu/význam tokenů TeXu;
* generování/používání dočasných seznamů tokenů TeXem;
* co „exanze“ skutečně znamená.

Prozkoumáním těchto témat dáme dohromady celkový obraz, abychom vysvětlili *jak* `\expandafter` provádí své chování při „žonglování s tokeny“. Tato série článků je určena každému, kdo si chce osvojit vhled do těchto témat: podívat se hlouběji do samotného TeXu a zkoumat ty části vnitřních operací TeXu, které umožňují `\expandafter` aby mohl předvádět své kouzlo.

Psaní článků o TeXu a s TeXem souvisejících pojmech/zásadách je náročné, protože TeX je nesmírně složitý kus softwaru — jeho vysázený zdrojový kód má mnoho stovek stran. Například se podívejte na tento [projekt Overleaf](https://www.overleaf.com/latex/examples/typeset-the-source-code-documentation-for-tex-e-tex-or-pdftex/qkgfgyspnhcv) který ve výchozím nastavení sází zdrojový kód $$\mathrm{\varepsilon}\text{-}\mathrm{\TeX}$$: vysázený soubor PDF obsahuje přes 600 stran.

Uvnitř je TeX spletitá síť vzájemně propojených akcí a procesů, které představují výzvu při pokusu popsat izolované aspekty jeho chování: vyčlenit konkrétní „komponentu“, jako je `\expandafter`, a vysvětlit ji bez neustálých odkazů na jiné aspekty softwaru TeX. Svou podstatou je `\expandafter` příkaz zapojen do procesu TeXu *rozšiřování*—proces, který je pro mnohé z nás nejasným a poněkud obtížně plně pochopitelným pojmem. Expanze je však skutečně zásadním aspektem chování TeXu, vetkaným do všech jeho vnitřností a odehrávajícím se hluboko uvnitř samotného softwaru TeX. V této sérii článků prozkoumáme skutečný význam expanze, přičemž začneme sestavením souboru souvisejících principů a chování dostatečného k vytvoření základního porozumění expanzi. Na těchto základech pak zakončíme „hlubokým ponorem“ do samotného TeXu a prozkoumáme skutečný zdrojový kód, který implementuje mechanismus expanze TeXu.

## Na závěr

V těchto článcích jsme se snažili poskytnout obsah, který je užitečný/hodnotný nebo zajímavý pro co největší počet čtenářů: usilovali jsme o vyvážení stručnosti s nevyhnutelnými detaily a zároveň jsme se snažili neriskovat trpělivost čtenáře tím, že bychom poskytli příliš mnoho nebo příliš málo kontextového materiálu. Doufáme, že jsme přispěli něčím užitečným/hodnotným k literatuře o TeXu, kterou si současní a možná i budoucí členové komunity TeXu rádi přečtou.

Příjemné $$\mathrm{\TeX}\text{ing!}$$, od Grahama Douglase a týmu 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/cs/clanky-do-hloubky/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.
