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

# Wie funktioniert \expandafter: TeX verwendet temporäre Tokenlisten

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

## Erweiterung und interne Tokenlisten

Bisher haben wir Tokens, Tokenlisten und die Grundprinzipien hinter TeXs Konzept der Expansion untersucht. In diesem Abschnitt verwenden wir das TeX-Primitive `\jobname` um einen wichtigen Aspekt der Expansionsverarbeitung einzuführen: TeXs Verwendung von *temporären Tokenlisten*—die ein *grundlegender* Aspekt dafür sind, wie `\expandafter` funktioniert, wie wir später in dieser Artikelserie sehen werden.

`\jobname` ist ein expandierbares TeX-Primitive, dessen Expansion eine Folge von Zeichentokens erzeugt, die den Namen der Haupt-Eingabedatei darstellen `.tex` Datei. Angenommen, wir hätten den folgenden Text als Teil einer `.tex` Datei mit dem Namen `mycode.tex`:

```
    Der Name meiner Datei ist \jobname .tex %Beachte das Leerzeichen nach \jobname
```

Dies würde setzen

```
    Der Name meiner Datei ist mycode.tex
```

Wenn wir den `\jobname` Befehl verwenden, werden die resultierenden gesetzten Zeichen nicht aus Ihrer physischen `.tex` Datei gelesen. Woher kommen sie also: Wo speichert/liest TeX diese Tokens? Für den Benutzer unsichtbar (d. h. tief in TeX selbst) erstellt der Expansionsprozess für `\jobname` erstellt eine temporäre Tokenliste, die aus der Folge von Zeichentokens gebildet wird, welche den Namen Ihrer Datei darstellen. Sobald `\jobname` diese Tokenliste erstellt hat, richtet TeX seinen „Blick“ vorübergehend von seiner aktuellen Eingabequelle weg (hier unsere `.tex` Datei), um Tokens (Zeichentokens) aus dieser temporären Tokenliste zu lesen. Wenn TeX ein weiteres Eingabetoken benötigt, liest es sein nächstes Token aus dieser internen Liste und fährt damit fort, bis es das Ende der Liste erreicht; dann nimmt TeX das Lesen von Tokens aus seiner vorherigen Eingabequelle wieder auf, die hier der aus unserer `.tex` Eingabedatei gelesene Text wäre.

Wie im folgenden Diagramm gezeigt, setzt TeX das Lesen der `.tex` Eingabedatei genau an der Stelle fort, an der es nach der Verarbeitung von `\jobname`—nachdem es das Leerzeichen gelesen hat, aber bevor es das Zeichen „.“ liest. Der Punkt (.) wartet in der Praxis darauf, aus TeXs Eingabepuffer gelesen zu werden – einem kleinen Bereich von TeXs Speicher, der dazu dient, eine aus der `.tex` Datei gelesene Textzeile zu speichern – TeX liest und verarbeitet Ihre `.tex` Datei zeilenweise; es liest nicht die gesamte Datei in den Speicher.

Wenn Sie die folgende Grafik studieren, lesen Sie von unten nach oben, um dem Prozessablauf zu folgen.

![Wie TeX \jobname expandiert](/files/653f58ed97a0455e9cceba03ed10d42274960854)

In Anlehnung an unsere Diskussion über Expansion können wir beobachten, dass die Expansion von `\jobname` dazu führte, dass der `\jobname` Befehl (Token) *entfernt* aus der Eingabe entfernt und *ersetzt* durch aus der Expansion hervorgehende Tokens ersetzt wurde: die temporäre Tokenliste, die erzeugt wurde, um den Namen der `.tex` Datei zu speichern.

Erweiterbare Befehle (wie `\jobname`) sind nicht die einzigen TeX-Primitiven, die „heimlich“ Tokenlisten erzeugen und verwenden, um ihre Wirkung zu erzielen. Zum Beispiel erzeugen die Befehle `\uppercase` und `\lowercase` beide interne Tokenlisten, um die Groß-/Kleinschreibung ihres Arguments zu ändern. Sobald die Arbeit zur Änderung der Groß-/Kleinschreibung erledigt ist, wechselt TeX dazu, Zeichentokens aus den von diesen Befehlen erzeugten Tokenlisten zu lesen. Tokenlisten sind TeXs einziges „Speichermechanismus für Token-Daten“ – abgesehen davon, Daten in eine physische Festplattendatei zu schreiben.

### Tokenquellen: TeX ist ein Meisterjongleur

Wenn TeX ein typisches Dokument verarbeitet, muss es *viele* Tokenquellen verwalten: Eingabe aus zahlreichen physischen Datendateien und unzähligen internen Tokenlisten, die während der Verarbeitung erstellt werden. In diesem Abschnitt untersuchen wir sehr kurz, wie TeX diese Eingabequellen „jongliert“.

Angenommen, wir möchten ein einfaches Makro, das den Namen unserer `.tex` Datei setzt:

```
    \def\myfile{Der Name meiner Datei ist \jobname .tex}
```

Später, an irgendeinem Punkt in unserer `.tex` Datei rufen wir das Makro `\myfile`: vorübergehend wechselt TeX von der Erzeugung/dem Lesen von Tokens über Text in Ihrer Text-(`.tex`)-Datei zum Lesen von Tokens aus der `\myfile` Definition (Tokenliste), die in seinem Speicher gespeichert ist. Wenn TeX das `\myfile` Makro ausführt (seine Tokens verarbeitet), erkennt es ein Token, das den `\jobname` Befehl repräsentiert, dessen Expansion eine weitere, temporäre Tokenliste erzeugt, aus der TeX Tokens lesen muss. Selbst in diesem einfachen Szenario muss TeX drei Eingabequellen verwalten:

1. dem `.tex` Textdatei, die das `\myfile` Makro enthält;
2. die Tokenliste, die die Definition von `\myfile` Makro enthält;
3. eine Tokenliste, die durch den `\jobname` Befehl innerhalb des `\myfile` Makros erzeugt wurde.

Während TeX ein Dokument verarbeitet, wechselt es ständig zwischen Eingabequellen: physischen Dateien und Tokenlisten. Wie behält TeX also den Überblick darüber? Die Antwort ist, dass TeX-Engines intern einen sogenannten [Eingabestapel](https://en.wikipedia.org/wiki/Stack_\(abstract_data_type\)) unterhalten, der als eine Art „Gedächtnis“ dient und TeX erlaubt, sich daran zu erinnern, was es gerade tat (wo es gerade las), während es zwischen Eingabequellen wechselt.

Ohne allzu sehr ins Detail zu gehen, verwendet der interne Code in TeX-Engines eine globale Variable namens `curinput` (aktuelle Eingabe), die TeX unter anderem mitteilt, ob es gerade aus einer physischen Datei oder einer Tokenliste liest. `curinput` weist TeX auch auf die Stelle (in der aktuellen Tokenliste oder ihrem Textpuffer) hin, von der es das nächste Token holen soll. Wenn TeX aus einer Tokenliste liest `curinput` zeichnet es auch auf, welche Art von Tokenliste verarbeitet wird – z. B. die als Makro gespeicherte Tokenliste oder ob diese Tokens aus einer anderen Quelle entstanden sind.

Wenn nötig wird die `curinput` Variable geändert, um auf eine neue Eingabequelle zu verweisen, und TeXs aktueller „Eingabestatus“ (Quelle und Position) wird im Eingabestapel gespeichert, damit TeX später genau zu dieser Stelle zurückkehren kann (Position in einer `.tex` Datei oder das nächste Token in einer Tokenliste). Sobald diese neue Eingabequelle erschöpft ist (z. B. keine weiteren Tokens in der Tokenliste vorhanden sind oder das Dateiende erreicht ist), wird sie vom Stapel entfernt und `curinput` wird aktualisiert, damit TeX wieder Tokens aus der vorherigen Quelle bezieht.

## Tiefer eintauchen (optionale Lektüre)

Die folgenden Abschnitte bieten zusätzliche Hintergrundinformationen für Leser, die Details mögen.

### Echte Tokenlisten

Die folgende Grafik wurde mit Overleafs eigener Build-Version von Knuths TeX erzeugt, die Zugriff auf TeXs interne Daten und Datenstrukturen bietet. Diese Darstellung einer Tokenliste baut auf der oben vorgestellten vereinfachten Version auf und enthält zusätzliche Daten, etwa die Zeichen, die von `\jobname` haben den Kategoriecode 12, nicht den üblichen Kategoriecode 11. In diesem Diagramm ist „node“ einfach der Name für eine von TeX verwendete Speichereinheit.

![In einer TeX-Tokenliste](/files/f2479133fabfb7155a5aded633be433acdf43d23)

### Wie TeX \jobname liest und verarbeitet

Außerdem hier, der Vollständigkeit halber, ein Überblick über TeXs „Denkprozesse“, während es `\jobname` in unserer Eingabe `.tex` Datei. In dieser Grafik sehen wir, wie TeX ein Escape-Zeichen erkennt (`\` mit Kategoriecode 0), die Zeichenfolge verarbeitet `jobname`, ein Token erzeugt und die Bedeutung des `\jobname` Befehls nachschlägt, wobei TeX feststellt, dass er einen Befehlscode > 100 hat, was anzeigt, dass es sich um einen erweiterbaren Befehl handelt.

![Wie TeX nach \jobname sucht und es verarbeitet](/files/812d5970757f1cd6371d0862f1f0180c26a70aee)

[Teil 1](/latex/de/ausfuhrliche-artikel/19-how-does-expandafter-work-an-introduction-to-tex-tokens.md) [Teil 2](/latex/de/ausfuhrliche-artikel/22-how-does-expandafter-work-the-meaning-of-expansion.md) [Teil 3](/latex/de/ausfuhrliche-artikel/21-how-does-expandafter-work-tex-uses-temporary-token-lists.md) [Teil 4](/latex/de/ausfuhrliche-artikel/20-how-does-expandafter-work-from-basic-principles-to-exploring-tex-s-source-code.md) [Teil 5](/latex/de/ausfuhrliche-artikel/17-how-does-expandafter-work-a-detailed-macro-case-study.md) [Teil 6](/latex/de/ausfuhrliche-artikel/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/de/ausfuhrliche-artikel/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.
