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

# Eine sechsteilige Serie: Wie funktionieren TeX-Makros eigentlich?

## Über diese Reihe

Diese Artikelreihe hat ein ehrgeiziges Ziel: Schritt für Schritt zu erklären, *wie* wie TeX-Makros, etwa LaTeX-Befehle, tatsächlich funktionieren – indem die Prozesse untersucht werden, die in der TeX-Engine-Software ablaufen. Sie versucht, die Geschichte von TeXs Verarbeitungsverhalten zu erzählen:

* das Lesen von Eingabezeichen und die Verwendung von Kategoriecodes;
* die Erzeugung von Zeichen- und Befehls-Tokens – und die Formeln, die TeX verwendet;
* wie TeX TeX-Befehle identifiziert und dann verarbeitet;
* die internen Details der Speicherung von Makrodefinitionen und Makroargumenten als Tokenlisten – mithilfe von Grafiken, die aus internen TeX-Daten erzeugt werden;
* und schließt mit einer Untersuchung dessen, was Makroexpansion *tatsächlich* bedeutet – unter Verwendung echter Daten aus dem Inneren einer TeX-Engine.

Da TeX-Engines jedoch so komplexe Softwareprogramme sind, können wir nicht hoffen, alles abzudecken, aber wir haben versucht, die wichtigsten, grundlegenden Funktionen von TeXs Makroverarbeitung zu behandeln.

#### Navigationsleiste

Jeder Artikel hat vor und nach dem Text die folgende Navigationsleiste, damit Sie schnell zu einem anderen Artikel der Reihe springen können:

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

### Teil 1: Kategoriecodes

Dieser Artikel untersucht die Überlegungen hinter TeXs Konzept der Kategoriecodes: was sie sind und wie TeX sie verwendet, um seine Eingabe in Inhalt für den Satz und in auszuführende Befehle zu filtern.

### Teil 2: Eingabe durch TeXs „Augen“ lesen

Anhand einer Reihe von Grafiken verwenden wir die bewährte Analogie, dass TeX „Augen“ hat, mit denen es seine Eingabe liest (scannt). Wir untersuchen Beispiele für TeXs Verwendung von Kategoriecodes, um Zeichen-Tokens zu erzeugen, und wie TeX Befehle anhand von Kategoriecode 0 („Escape-Zeichen“) erkennt und verarbeitet.

### Teil 3: Vom Eingabetext zu Befehlen

Dieser Artikel wirft einen detaillierten Blick darauf, wie TeX erkannte Befehle in der Eingabe erkennt und verarbeitet. Wir untersuchen, wie TeX Informationen über Befehle speichert und abruft: Befehlscodes, Befehlsmodifikatoren, und wir betrachten einige interne Variablen, die TeX verwendet, um Informationen über aus der Eingabe gelesene Elemente zu speichern. Ein Teil des Artikels ist recht niedrigstufiges Material, das man bei der ersten Lektüre überspringen kann.

### Teil 4: Die Struktur eines Makros

Wir führen das folgende „Schema“ ein und verwenden es, um die Struktur von Makros zu beschreiben:

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

Anschließend untersuchen wir eine Reihe von Beispielen, um die Rolle und den Zweck eines Makros `<parameter text>` als „Token-Vorlage“ zu veranschaulichen, die durch die Verwendung von Tokens konstruiert werden kann, die als *Begrenzer*.

### Teil 5: Tokenlisten und TeXs interne Makrospeicherung

Dieser Artikel untersucht im Detail, wie TeX Tokenlisten verwendet, um Makrodefinitionen zu speichern. Mithilfe umfangreicher Diagramme, die mit einer speziell modifizierten Version von TeX erzeugt wurden, untersuchen wir die spezialisierten Tokens, die TeX verwendet, um die Makroargumente eines Benutzers zu identifizieren und zu verarbeiten.

### Teil 6: Makroexpansion und Verarbeitung

In Teil 6 verwenden wir einige detaillierte Grafiken, um die genaue Bedeutung von Makroexpansion und die Folgen von TeXs Tokenisierung von Makroargumenten zu erklären und zu untersuchen, bevor sie in das eines Makros eingespeist werden.

## Eine kurze Anmerkung: „TeX“ und nicht LaTeX verwenden

Wie im Artikel besprochen [Was steckt in einem Namen: Ein Leitfaden zu den vielen Varianten von TeX](/latex/de/ausfuhrliche-artikel/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) Es wird eine breite Palette von Begriffen verwendet, um TeX, LaTeX und ihre Derivate zu bezeichnen/beschreiben. Daher lohnt es sich, kurz unsere Verwendung/Bedeutung von „TeX“ im Kontext dieser Reihe zu klären.

„TeX“ ist, etwas verwirrend, sowohl der Name eines ausführbaren Programms als auch der Name einer Satzsprache. Um zwischen beiden zu unterscheiden, wird der Begriff *TeX-Engine* verwendet, um zwischen einem ausführbaren TeX-Programm und der Satzsprache zu unterscheiden. Einige der spezifischen Daten, Informationen und Details, die in dieser Reihe verwendet werden, stammen aus einer detaillierten Untersuchung des Quellcodes von Knuths ursprünglicher TeX-Software, aber die beschriebenen Prinzipien gelten für alle TeX-Engines. Daher sollte in unserer gesamten Diskussion die Verwendung von „TeX“ so verstanden werden, dass damit eine der ausführbaren TeX-Engines gemeint ist – etwa Knuths ursprüngliches TeX, pdfTeX, XeTeX oder LuaTeX.

Innerhalb der Artikel verwenden wir den TeX-Primitivbefehl `\def` um unsere Makrobeispiele zu definieren: Wir verwenden nicht den LaTeX-Befehl `\newcommand` der den meisten Overleaf-Nutzern mit ziemlicher Sicherheit vertrauter ist. Dafür gibt es einen sehr guten Grund: Unser Ziel ist es, die grundlegenden Prinzipien zu verstehen, die TeXs Makroverhalten zugrunde liegen; dafür müssen wir jedoch die in die TeX-Software eingebauten Kernbefehle (Primitiven) verwenden. LaTeX-Befehle, wie `\newcommand`, sind selbst Makros: Befehle mit spezifischem programmiertem Verhalten, die letztlich aus Schichten niedrigerer TeX-Primärbefehle aufgebaut sind. Um das grundlegende Verhalten von TeX besser zu verstehen, müssen wir TeX-Primitiven und nicht LaTeX-Makros verwenden.

## Beispiele und Grafiken

Anstatt uns ausschließlich auf eine Reihe von Beispielmakros zu stützen, die dazu dienen, verschiedene Funktionen, Grenzfälle und Verhaltensweisen von TeX zu demonstrieren, verwenden wir auch eine umfangreiche Sammlung von Grafiken, um in TeX selbst hineinzusehen und zu sehen *wie* und *warum* warum seine Makroverarbeitung so funktioniert, wie sie funktioniert. Viele der Grafiken (Tokenlisten-/Knotendiagramme) wurden mit einer speziell modifizierten Version von Knuths ursprünglichem TeX erstellt.

Overleaf passte Knuths TeX mit zusätzlichem Code (in C geschrieben) an, der sich in TeXs Makroverarbeitung „einklinkt“ und Daten sowie Datenstrukturen untersucht, die für Benutzer normalerweise nicht zugänglich sind. Jedes Mal, wenn ein Makro aufgerufen wird, erzeugt die modifizierte TeX-Engine zusätzliche Ausgabedateien mit Daten in einem Format, das verarbeitet werden kann mit [Graphviz](https://www.graphviz.org/)einem Open-Source-Programm zur Graphvisualisierung. Das Endergebnis sind Grafiken (Knotenlistendiagramme), die genau zeigen, wie TeX die Definition eines Makros speichert, zusammen mit einer grafischen Darstellung aller Argumente, die der Benutzer beim Aufruf des Makros übergeben hat.

Notgedrungen erfordern die Ziele dieser Reihe die Diskussion einer breiten Palette von Themen, von denen viele recht niedrigstufig sind und die anfangs sehr weit von der Aufgabe entfernt erscheinen mögen, Ihre Dokumente zu setzen. Hoffentlich werden Sie nach einem tieferen Eintauchen mit einer Grundlage herauskommen, auf der Sie ein besseres Verständnis aufbauen können, das Ihnen letztlich viel Zeit spart und vielleicht auch das Frustrationsniveau verringert. Wir hoffen außerdem, dass die speziell erzeugten Grafiken, die diese Reihe begleiten, ebenfalls einen einzigartig wertvollen Einblick bieten, um Leserinnen und Leser auf ihrer Suche nach einem besseren Verständnis von TeX-Makros zu unterstützen.

## Overleafs angepasste Version von TeX

Das Video gibt eine kurze Demonstration von Overleafs modifizierter Version von TeX, die darauf angepasst wurde, Graphviz-Knotendiagramme zu erzeugen (`.gv` Dateien) – kein anderer Aspekt von TeXs Verhalten wird durch diese Änderungen beeinflusst. Die `.gv` Dateien enthalten Darstellungen der TeX-Tokenlisten, die zur Speicherung von Makrodefinitionen und Makroargumenten verwendet werden. Die Graphviz-Visualisierung wird als SVG exportiert, das dann in [Inkscape](https://inkscape.org/) zur weiteren Annotation importiert wird, bevor die Grafik in einen Artikel aufgenommen wird.

{% 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/de/weitere-themen/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.
