> 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/diepgaande-artikelen/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md).

# Hoe werkt \expandafter: TeX gebruikt tijdelijke tokenlijsten

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

## Uitbreiding en interne tokenlijsten

Tot nu toe hebben we tokens, tokenlijsten en de kernprincipes achter TeX’ concept van uitbreiding verkend. In deze sectie gebruiken we de TeX-primitieve `\jobname` om een belangrijk aspect van uitbreidingsverwerking te introduceren: TeX’ gebruik van *tijdelijke tokenlijsten*—die een *fundamenteel* aspect zijn van hoe `\expandafter` werkt, zoals we later in deze artikelreeks zullen zien.

`\jobname` is een uitbreidbare TeX-primitieve waarvan de expansie een reeks karaktertokens genereert die de naam van het hoofd-invoer `.tex` bestand voorstellen. Stel bijvoorbeeld dat we de volgende tekst hadden als onderdeel van een `.tex` bestand met de naam `mycode.tex`:

```
    De naam van mijn bestand is \jobname .tex %Let op de spatie na \jobname
```

Dit zou zetten

```
    De naam van mijn bestand is mycode.tex
```

Wanneer we de `\jobname` opdracht gebruiken, worden de resulterende gezette tekens niet gelezen uit uw fysieke `.tex` bestand, dus waar komen ze vandaan: waar bewaart/leest TeX die tokens? Onzichtbaar voor de gebruiker (d.w\.z. diep binnen TeX zelf) maakt het expansieproces voor `\jobname` creëert een tijdelijke tokenlijst opgebouwd uit de reeks karaktertokens die de naam van uw bestand voorstellen. Zodra `\jobname` die tokenlijst heeft aangemaakt, “verlegt” TeX tijdelijk zijn blik van zijn huidige invoerbron (hier, ons `.tex` bestand) om tokens (karaktertokens) uit die tijdelijke tokenlijst te lezen. Wanneer TeX nog een invoertoken nodig heeft, leest het het volgende token uit die interne lijst en gaat daarmee door totdat het het einde van de lijst bereikt; op dat moment hervat TeX het lezen van tokens uit zijn vorige invoerbron, wat hier tekst zou zijn die uit ons `.tex` invoerbestand gelezen is.

Zoals in het volgende diagram wordt getoond, hervat TeX het lezen van het `.tex` invoerbestand op exact de locatie waar het stopte na het verwerken van `\jobname`—na het lezen van het spatiekarakter maar vóór het lezen van het teken “.”. De punt (.) wacht in de praktijk om te worden gelezen uit TeX’ invoerbuffer — een klein gebied in TeX’ geheugen dat bedoeld is om een regel tekst vast te houden die uit het `.tex` bestand is gelezen — TeX leest en verwerkt uw `.tex` bestand regel voor regel; het leest niet het hele bestand in het geheugen.

Wanneer u de volgende afbeelding bestudeert, lees dan vanaf de onderkant en werk omhoog om de processtroom te volgen.

![Hoe TeX \jobname uitbreidt](/files/afef595e802954c721aec7d750e107745931240f)

Terugverwijzend naar onze bespreking van uitbreiding kunnen we vaststellen dat de expansie van `\jobname` resulteerde in de `\jobname` opdracht (token) die *verwijderd* uit de invoer verwijderd en *vervangen* met tokens die uit de expansie voortkomen: de tijdelijke tokenlijst die is gegenereerd om de naam van de `.tex` bestand.

Uitbreidbare opdrachten (zoals `\jobname`) zijn niet de enige TeX-primitieven die “stiekem” tokenlijsten creëren en gebruiken om hun effect te bereiken. Bijvoorbeeld, de opdrachten `\uppercase` en `\lowercase` creëren beide interne tokenlijsten om de hoofd-/kleine letters van hun argument te wijzigen. Zodra het wijzigen van de letterkast is voltooid, schakelt TeX over om karaktertokens uit de tokenlijsten te lezen die door die opdrachten zijn gegenereerd. Tokenlijsten zijn TeX’ enige mechanisme voor “opslag van tokendata” — afgezien van het wegschrijven van gegevens naar een fysiek schijfbestand.

### Bronnen van tokens: TeX is een meester-jongleur

Wanneer TeX een typisch document verwerkt, moet het omgaan met *veel* tokenbronnen: invoer afkomstig uit talloze fysieke schijfbestanden en ontelbare interne tokenlijsten die tijdens de verwerking worden aangemaakt. In deze sectie zullen we heel kort verkennen hoe TeX erin slaagt deze invoerbronnen te “jongleren”.

Stel dat we een eenvoudige macro willen die de naam van ons `.tex` bestand:

```
    \def\myfile{De naam van mijn bestand is \jobname .tex}
```

Later, op een bepaald moment in ons `.tex` bestand roepen we de macro aan `\myfile`: tijdelijk schakelt TeX van het creëren/lezen van tokens via tekst in uw tekst (`.tex`)-bestand naar het lezen van tokens uit de `\myfile` definitie (tokenlijst) die in zijn geheugen is opgeslagen. Wanneer TeX de `\myfile` macro uitvoert (zijn tokens verwerkt), zal het een token detecteren dat de `\jobname` opdracht voorstelt, waarvan de expansie nog een andere, tijdelijke tokenlijst creëert waaruit TeX tokens moet lezen. Zelfs in dit eenvoudige scenario moet TeX drie invoerbronnen beheren:

1. het `.tex` tekstbestand dat de `\myfile` macro bevat;
2. de tokenlijst die de definitie van `\myfile` macro bevat;
3. een tokenlijst gecreëerd door de `\jobname` opdracht binnen de `\myfile` macro.

Terwijl TeX een document verwerkt, schakelt het voortdurend tussen invoerbronnen: fysieke bestanden en tokenlijsten, dus hoe houdt TeX dit bij? Het antwoord is dat TeX-engines intern een zogenaamde [invoerstapel](https://en.wikipedia.org/wiki/Stack_\(abstract_data_type\)) bijhouden, die fungeert als een soort “geheugen” waarmee TeX kan onthouden wat het aan het doen was (waar het van aan het lezen was) wanneer het tussen invoerbronnen wisselt.

Zonder te diep op de details in te gaan, gebruikt de interne code binnen TeX-engines een globale variabele genaamd `curinput` (huidige invoer) die TeX onder andere vertelt of het momenteel uit een fysiek bestand of een tokenlijst leest. `curinput` wijst TeX ook naar de locatie (in de huidige tokenlijst of zijn tekstbuffer) waar het het volgende token moet halen. Als TeX uit een tokenlijst leest `curinput` registreert het ook welk type tokenlijst wordt verwerkt — bijvoorbeeld de lijst tokens die als een macro is opgeslagen of of die tokens uit een andere bron zijn voortgekomen.

Wanneer nodig, zal de `curinput` variabele worden gewijzigd om naar een nieuwe invoerbron te wijzen en TeX’ huidige “invoerstatus” (bron en locatie) wordt in de invoerstapel opgeslagen zodat TeX later naar exact die locatie kan terugkeren (positie in een `.tex` bestand of het volgende token in een tokenlijst). Zodra die nieuwe invoerbron is uitgeput (bijv. geen tokens meer in de tokenlijst of het einde van een bestand is bereikt), wordt deze van de stapel gehaald en `curinput` wordt bijgewerkt om ervoor te zorgen dat TeX teruggaat naar het ophalen van tokens uit de vorige bron.

## Dieper graven (optionele lectuur)

De volgende secties bieden aanvullende achtergrondinformatie voor lezers die van details houden.

### Echte tokenlijsten

De volgende afbeelding is gegenereerd met Overleaf’s aangepaste build van Knuths TeX, die toegang biedt tot TeX’ interne gegevens en datastructuren. Deze illustratie van een tokenlijst bouwt voort op de vereenvoudigde versie hierboven en bevat aanvullende gegevens, zoals het tonen van de tekens gegenereerd door `\jobname` hebben categoriecode 12, niet de gebruikelijke categoriecode 11. In dit diagram is “node” simpelweg de naam die wordt gegeven aan een geheugeneenheid die door TeX wordt gebruikt.

![Binnen een TeX-tokenlijst](/files/85f4ce15f13f1131af7c9255905055ff9681c405)

### Hoe TeX \jobname leest en verwerkt

Ook, voor de volledigheid, hier is een overzicht van TeX’ “denkprocessen” terwijl het detecteert `\jobname` in onze invoer `.tex` bestand. In deze afbeelding zien we hoe TeX een escape-teken detecteert (`\` met categoriecode 0), de tekenreeks verwerkt `jobname`, een token genereert en de betekenis van de `\jobname` opdracht opzoekt, waarbij TeX zal ontdekken dat deze een opdrachtcode > 100 heeft, wat aangeeft dat het een uitbreidbare opdracht is.

![Hoe TeX zoekt naar en \jobname verwerkt](/files/c0a1b7a38c3e41dce3ad38343012b6ef3fc069bb)

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


---

# 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/diepgaande-artikelen/21-how-does-expandafter-work-tex-uses-temporary-token-lists.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.
