> 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/dalsi-temata/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# Šestidílná série: Jak vlastně fungují makra TeXu?

## O této sérii

Tato série článků má ambiciózní cíl: vysvětlit krok za krokem, *jak* jak TeXová makra, například příkazy LaTeXu, ve skutečnosti fungují — zkoumáním procesů, které probíhají uvnitř softwaru TeXového enginu. Snaží se vyprávět příběh zpracování v TeXu:

* čtení vstupních znaků a používání kódů kategorií;
* vytváření znakových a příkazových tokenů — a vzorce, které TeX používá;
* jak TeX identifikuje a poté zpracovává příkazy TeXu;
* interní podrobnosti ukládání definic maker a argumentů maker jako seznamů tokenů — s využitím grafik vytvořených z interních dat TeXu;
* a končí zkoumáním toho, co znamená expanze maker *ve skutečnosti* — s využitím skutečných dat z vnitřku TeXového enginu.

Nicméně, protože TeXové enginy jsou tak složité softwarové programy, nemůžeme doufat, že pokryjeme všechno, ale snažili jsme se postihnout nejdůležitější, základní prvky schopností TeXu pro zpracování maker.

#### Navigační lišta

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

[Část 1](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_1?preview=true) [Část 2](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_2?preview=true) [Část 3](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_3?preview=true) [Část 4](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_4?preview=true) [Část 5](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_5?preview=true) [Část 6](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_6?preview=true)

### Část 1: Kódy kategorií

Tento článek zkoumá zdůvodnění za koncepcí kódů kategorií v TeXu: co jsou a jak je TeX používá k filtrování svého vstupu na obsah určený k sazbě a na příkazy, které mají být vykonány.

### Část 2: Čtení vstupu TeXovýma „očima“

Prostřednictvím série grafik používáme osvědčenou analogii, že TeX má „oči“, jimiž čte (skenuje) svůj vstup. Zkoumáme příklady použití kódů kategorií v TeXu k vytváření znakových tokenů a jak TeX rozpoznává a zpracovává příkazy pomocí kódu kategorie 0 („escape znak“).

### Část 3: Od vstupního textu k příkazům

Tento článek se do hloubky zabývá tím, jak TeX rozpoznává a zpracovává příkazy zjištěné ve vstupu. Zkoumáme, jak TeX ukládá a získává informace o příkazech: kódy příkazů, modifikátory příkazů, a prozkoumáme několik interních proměnných, které TeX používá k ukládání informací o položkách načtených ze vstupu. Některé části článku jsou poměrně nízkoúrovňové a při prvním čtení je lze přeskočit.

### Část 4: Struktura makra

Zavádíme a používáme následující „rámec“ pro popis struktury maker:

```
<TeX makro primitivum><název makra><text parametrů>{<náhradní text>}
```

Poté zkoumáme řadu příkladů, abychom demonstrovali roli a účel makro `<parametrický text>` jako „tokenové šablony“, kterou lze sestavit pomocí tokenů působících jako *oddělovače*.

### Část 5: Seznamy tokenů a interní ukládání maker v TeXu

Tento článek podrobně zkoumá, jak TeX používá seznamy tokenů k ukládání definic maker. Pomocí rozsáhlých diagramů vytvořených speciálně upravenou verzí TeXu zkoumáme specializované tokeny, které TeX používá k identifikaci a zpracování uživatelských argumentů maker.

### Část 6: Expanze a zpracování maker

V části 6 používáme několik podrobných grafik k vysvětlení a prozkoumání přesného významu expanze maker a důsledků tokenizace argumentů maker v TeXu před jejich předáním do makra.

## Krátká poznámka: Používáme „TeX“, nikoli LaTeX

Jak je uvedeno v článku [Co se skrývá v názvu: Průvodce mnoha podobami TeXu](/latex/cs/clanky-do-hloubky/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) se používá široká škála termínů k označení/popisu TeXu, LaTeXu a jejich odvozenin. Proto stojí za to stručně objasnit, jak používáme/vnímáme „TeX“ v kontextu této série.

„TeX“ je poněkud matoucím způsobem jak název spustitelného programu, tak název sázecího jazyka. Abychom mezi nimi rozlišili, používá se termín *TeXový engine* k odlišení mezi spustitelným programem TeXu a sázecím jazykem. Některá konkrétní data, informace a detaily použité v této sérii vycházejí z podrobného zkoumání zdrojového kódu původního Knuthova softwaru TeX, ale popsané principy jsou společné pro všechny TeXové enginy. Proto by se po celou dobu naší diskuse mělo „TeX“ chápat jako jeden z vykonatelných TeXových enginů — například původní TeX od Knutha, pdfTeX, XeTeX nebo LuaTeX.

V článcích používáme primitivní příkaz TeXu `\def` k definování našich příkladů maker: nepoužíváme příkaz LaTeXu `\newcommand` který je většině uživatelů Overleafu téměř jistě známější. Existuje pro to velmi dobrý důvod: naším cílem je pochopit základní principy stojící za chováním maker v TeXu, ale abychom to dokázali, musíme používat základní příkazy (primitive) zabudované do softwaru TeX. Příkazy LaTeXu, jako `\newcommand`, jsou samy o sobě makra: příkazy se specifickým naprogramovaným chováním a které jsou nakonec sestaveny z vrstev nízkoúrovňových primitivních příkazů TeXu. Abychom lépe porozuměli základnímu chování TeXu, musíme používat primitiva TeXu, nikoli makra LaTeXu.

## Příklady a grafiky

Místo toho, abychom se spoléhali pouze na sadu příkladových maker navržených k demonstraci různých vlastností, okrajových případů a chování TeXu, používáme také rozsáhlou škálu grafik, abychom nahlédli dovnitř samotného TeXu a viděli *jak* a *proč* jak jeho zpracování maker funguje tak, jak funguje. Mnohé z grafik (diagramů seznamů tokenů/uzlů) byly připraveny pomocí speciálně upravené verze původního Knuthova TeXu.

Overleaf upravil Knuthův TeX dalším kódem (napsaným v C), který se „napojuje“ na zpracování maker v TeXu a zkoumá data a datové struktury, které jsou běžně uživatelům nepřístupné. Při každém zavolání makra upravený TeXový engine generuje další výstupní soubory obsahující data ve formátu, který lze zpracovat pomocí [Graphvizu](https://www.graphviz.org/), programu pro vizualizaci grafů s otevřeným zdrojovým kódem. Konečným výsledkem jsou grafiky (diagramy seznamů uzlů), které přesně ukazují, jak TeX ukládá definici makra, spolu s grafickým znázorněním všech argumentů poskytnutých uživatelem při volání makra.

Z nutnosti si cíle této série vyžadují diskusi o široké škále témat, z nichž mnohá jsou poměrně nízkoúrovňová a zpočátku se mohou zdát velmi vzdálená úkolu sazby vašich dokumentů. Doufejme, že po hlubším ponoru získáte pevný základ pro budování lepšího porozumění, které vám nakonec ušetří spoustu času a snad také minimalizuje míru frustrace. Je také naším přáním, aby speciálně generované grafiky doprovázející tuto sérii poskytly jedinečně cenný vhled, který pomůže a podpoří každého čtenáře v jeho snaze lépe porozumět makrům TeXu.

## Přizpůsobená verze TeXu od Overleafu

Video ukazuje krátkou demonstraci upravené verze TeXu od Overleafu, přizpůsobené pro generování uzlových diagramů Graphvizu (`.gv` souborů) — žádný jiný aspekt chování TeXu není těmito změnami ovlivněn. Tyto `.gv` soubory obsahují reprezentace TeXových seznamů tokenů používaných k ukládání definic maker a argumentů maker. Vizualizace Graphvizu je exportována do SVG, které je poté importováno do [Inkscape](https://inkscape.org/) pro další anotaci před začleněním grafiky do článku.

{% 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://overleaf-pro.ayaka.space/latex/cs/dalsi-temata/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.
