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

# Een serie van zes delen: hoe werken TeX-macro's eigenlijk?

## Over deze reeks

Deze artikelreeks heeft een ambitieuze doelstelling: stap voor stap uitleggen, *hoe* hoe TeX-macro's, zoals LaTeX-opdrachten, eigenlijk werken—door processen te onderzoeken die plaatsvinden binnen de software van de TeX-engine. Ze probeert het verhaal te vertellen van het verwerkingsgedrag van TeX:

* het lezen van invoertekens en het gebruik van categoriecodes;
* de productie van teken- en opdrachttokens—en de formules die TeX gebruikt;
* hoe TeX TeX-opdrachten identificeert en vervolgens verwerkt;
* de interne details van het opslaan van macrodefinities en macro-argumenten als tokenlijsten—met behulp van grafieken die zijn gegenereerd uit interne TeX-gegevens;
* en eindigt met het verkennen van wat macro-uitbreiding *eigenlijk* betekent—met gebruik van echte gegevens van binnen een TeX-engine.

Het is echter onmogelijk om alles te behandelen, omdat TeX-engines zulke complexe softwareprogramma’s zijn; we hebben wel geprobeerd de belangrijkste, kernaspecten van TeX’ macroverwerkingsmogelijkheden aan te pakken.

#### Navigatiebalk

Elk artikel heeft vóór en na de tekst de volgende navigatiebalk, zodat je snel naar een ander artikel in de reeks kunt springen:

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

### Deel 1: Categoriecodes

Dit artikel onderzoekt de redenering achter TeX’ concept van categoriecodes: wat ze zijn en hoe TeX ze gebruikt om zijn invoer te filteren tot inhoud voor zetwerk en tot opdrachten die moeten worden uitgevoerd.

### Deel 2: Invoer lezen door TeX’ “ogen”

Aan de hand van een reeks grafieken gebruiken we de beproefde analogie van TeX dat “ogen” heeft waarmee het zijn invoer leest (scant). We onderzoeken voorbeelden van TeX’ gebruik van categoriecodes om teken-tokens te maken en hoe TeX opdrachten herkent en verwerkt door categoricode 0 (“escapeteken”) te gebruiken.

### Deel 3: Van invoertekst naar opdrachten

Dit artikel werpt een diepgaande blik op hoe TeX opdrachten herkent en verwerkt die in de invoer zijn gedetecteerd. We onderzoeken hoe TeX informatie over opdrachten opslaat en ophaalt: opdrachtcodes, opdrachtmodificatoren, en bekijken enkele interne variabelen die TeX gebruikt om informatie op te slaan over items die uit de invoer zijn ingelezen. Sommige delen van het artikel zijn vrij laag-niveau materiaal dat bij een eerste lezing overgeslagen kan worden.

### Deel 4: De structuur van een macro

We introduceren en gebruiken het volgende “raamwerk” voor het beschrijven van de structuur van macro’s:

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

Vervolgens verkennen we een reeks voorbeelden om de rol en het doel van het `<parameter text>` als een “tokensjabloon” dat kan worden opgebouwd door middel van tokens die fungeren als *scheidingstekens*.

### Deel 5: Tokenlijsten en TeX’ interne macroopslag

Dit artikel onderzoekt in detail hoe TeX tokenlijsten gebruikt om macrodefinities op te slaan. Met behulp van uitgebreide diagrammen die zijn gegenereerd met een speciaal aangepaste versie van TeX, verkennen we de gespecialiseerde tokens die TeX gebruikt om de macro-argumenten van een gebruiker te identificeren en te verwerken.

### Deel 6: Macro-uitbreiding en verwerking

In Deel 6 gebruiken we enkele gedetailleerde grafieken om de exacte betekenis van macro-uitbreiding uit te leggen en te verkennen, en de gevolgen van TeX’ tokenisering van macro-argumenten voordat ze in een macro’s .

## Een korte opmerking: gebruik van “TeX” en niet LaTeX

Zoals besproken in het artikel [Wat zit er in een naam: een gids voor de vele smaken van TeX](/latex/nl/diepgaande-artikelen/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) wordt een breed scala aan termen gebruikt om te verwijzen naar/beschrijven TeX, LaTeX en hun afgeleiden. Daarom is het de moeite waard om kort ons gebruik/de betekenis van “TeX” binnen de context van deze reeks toe te lichten.

“TeX” is, enigszins verwarrend, zowel de naam van een uitvoerbaar programma als de naam van een zettaal. Om onderscheid tussen de twee te maken, wordt de term *TeX-engine* gebruikt om onderscheid te maken tussen een uitvoerbaar TeX-programma en de zettaal. Sommige van de specifieke gegevens, informatie en details die in deze reeks worden gebruikt, zijn afgeleid van een gedetailleerd onderzoek van de broncode van Knuths oorspronkelijke TeX-software, maar de beschreven principes gelden voor alle TeX-engines. Dus, gedurende onze bespreking, moet het gebruik van “TeX” worden opgevat als een van de uitvoerbare TeX-engines—zoals Knuths oorspronkelijke TeX, pdfTeX, XeTeX of LuaTeX.

Binnen de artikelen gebruiken we de TeX-primitieve opdracht `\def` om onze macrovoorbeelden te definiëren: we gebruiken niet LaTeX-opdracht `\newcommand` die voor de meeste Overleaf-gebruikers vrijwel zeker vertrouwder is. Daar is een heel goede reden voor: ons doel is de fundamentele principes te begrijpen die ten grondslag liggen aan TeX’ macrogedrag, maar om dat te doen moeten we de kernopdrachten (primitieven) gebruiken die in de TeX-software zijn ingebouwd. LaTeX-opdrachten, zoals `\newcommand`, zijn zelf macro’s: opdrachten met specifiek geprogrammeerd gedrag en die uiteindelijk zijn opgebouwd uit lagen van TeX-primitieve opdrachten op een lager niveau. Om het fundamentele gedrag van TeX beter te begrijpen, moeten we TeX-primitieven gebruiken, geen LaTeX-macro’s.

## Voorbeelden en grafieken

In plaats van uitsluitend te vertrouwen op een reeks voorbeeldmacro’s die zijn ontworpen om verschillende functies, randgevallen en gedragingen van TeX te demonstreren, gebruiken we ook een uitgebreid scala aan grafieken om in TeX zelf te kijken en te zien *hoe* en *waarom* dat zijn macroverwerking werkt zoals die werkt. Veel van de grafieken (tokenlijsten/knooplijstdiagrammen) zijn voorbereid met behulp van een speciaal aangepaste versie van Knuths oorspronkelijke TeX.

Overleaf heeft Knuths TeX aangepast met extra code (geschreven in C) die ‘aankoppelt’ aan TeX’ macroverwerking en gegevens, en datastructuren, onderzoekt die normaal gesproken niet toegankelijk zijn voor gebruikers. Elke keer dat een macro wordt aangeroepen, genereert de aangepaste TeX-engine extra uitvoerbestanden met gegevens in een formaat dat kan worden verwerkt met [Graphviz](https://www.graphviz.org/), een open-source programma voor grafische visualisatie. Het eindresultaat is grafieken (knooplijstdiagrammen) die precies laten zien hoe TeX de definitie van een macro opslaat, samen met een grafische weergave van eventuele argumenten die door de gebruiker zijn opgegeven toen de macro werd aangeroepen.

Uit noodzaak vereisen de doelen van deze reeks bespreking van een breed scala aan onderwerpen, waarvan veel vrij laag-niveau zijn en aanvankelijk erg ver van de taak van het zetwerk van je documenten lijken te staan. Hopelijk kom je, na een diepere duik, weg met een basis om een beter begrip op te bouwen dat je uiteindelijk veel tijd bespaart en misschien ook de frustratie vermindert. We hopen ook dat de speciaal gegenereerde grafieken die deze reeks begeleiden eveneens een uniek waardevol inzicht bieden om lezers te helpen en te ondersteunen in hun zoektocht om TeX-macro’s beter te begrijpen.

## Overleafs aangepaste versie van TeX

De video geeft een korte demonstratie van Overleafs aangepaste versie van TeX, aangepast om Graphviz-knoopdiagrammen te genereren (`.gv` -bestanden)—geen ander aspect van TeX’ gedrag wordt door die wijzigingen beïnvloed. De `.gv` -bestanden bevatten representaties van de TeX-tokenlijsten die worden gebruikt om macrodefinities en macro-argumenten op te slaan. De Graphviz-visualisatie wordt geëxporteerd naar SVG, dat vervolgens wordt geïmporteerd in [Inkscape](https://inkscape.org/) voor verdere annotatie voordat de grafiek in een artikel wordt opgenomen.

{% 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/nl/meer-onderwerpen/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.
