> 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/20-how-tex-macros-actually-work-part-2.md).

# Wie TeX-Makros eigentlich funktionieren: Teil 2

[Teil 1](/latex/de/weitere-themen/19-how-tex-macros-actually-work-part-1.md) [Teil 2](/latex/de/weitere-themen/20-how-tex-macros-actually-work-part-2.md) [Teil 3](/latex/de/weitere-themen/21-how-tex-macros-actually-work-part-3.md) [Teil 4](/latex/de/weitere-themen/22-how-tex-macros-actually-work-part-4.md) [Teil 5](/latex/de/weitere-themen/23-how-tex-macros-actually-work-part-5.md) [Teil 6](/latex/de/weitere-themen/24-how-tex-macros-actually-work-part-6.md)

## Einleitung: Eine Geschichte in Bildern

Wie in Teil 1 erwähnt, muss TeX jedes Zeichen in Ihrer `.tex` Datei lesen, und dieser Lesevorgang wird genauer als *Scannen*. Traditionell wird TeXs Eingabeverarbeitung (Scannen) damit verglichen, dass TeX „Augen“ hat, mit denen es die Eingabe beobachtet; daher übernehmen wir diese bewährte Analogie in den folgenden Grafiken.

### Grafik 1: Die Augen sind bereit

Wir nehmen an, dass TeX einige Eingaben aus einer `.tex` Datei erhalten hat und nun unsere Zeichenfolge verarbeiten will `Hello World \jobname` die in einem Textabsatz enthalten ist. Es wird jedes Zeichen nacheinander prüfen und seinen Kategoriecode untersuchen.

![TeXs Augen sind bereit, eine Textzeile zu scannen](/files/4692e9af15f6e658feeadb5a7c5102bf0f7836a8)

### Grafik 2: Verarbeitung von Kategoriecodes

In der nächsten Grafik sehen wir in groben Zügen (mit weiteren Details unten), wie TeX auf mehrere verschiedene Kategoriecodes reagiert. Beachten Sie, dass es insgesamt 16 Kategoriecodes gibt, wir aber der Einfachheit halber nur die Verwendung von drei darstellen: 11, 10 und 0. Andere Zeichencodes werden im Satzprozess von TeX wichtig, etwa beim Erstellen von Tabellen, beim Setzen von Mathematik und beim Erkennen von Makroparametern.

![TeX reagiert auf mehrere verschiedene Kategoriecodes](/files/ccdd96304f12ed06ad6518c2760d52d2620ef3a0)

#### Hinweise zu Grafik 2

Hier betrachten wir TeX beim Lesen (Scannen) von Zeichen, die Teil eines Textabsatzes sind. TeX prüft jedes Zeichen, kontrolliert seinen Kategoriecode und ergreift die passende Maßnahme auf der Grundlage des Kategoriecodes und von TeXs „Modus“ (einem Status, der davon abhängt, was es gerade tut).

* **(grüne Augen)** TeX wird erkennen, dass jedes dieser Zeichen den Kategoriecode 11 („Buchstabe“) hat, und es wird diese Zeichen zur Satzverarbeitung als Teil des Absatzes weiterreichen, den es gerade aufbaut. TeX reicht jedoch nicht allein den Zeichencode weiter (verwendet ihn), sondern nutzt stattdessen das Zahlenpaar (Zeichencode, Kategoriecode), um einen zusammengesetzten Ganzzahlwert zu berechnen, der genannt wird *Zeichentoken* (siehe unten). Sobald dieses Zeichentoken erzeugt wurde, gelangt es in TeXs innere Satzprozesse/-algorithmen.
* **(blaue Augen)** TeX sieht ein Leerzeichen (ASCII 32) mit Kategoriecode 10 („Leerzeichen“) — beachten Sie, dass, wie bereits besprochen, der Kategoriecode eines Leerzeichens (ASCII 32) oder eines beliebigen Zeichens durchaus vor dem Einlesen durch TeX in einen anderen Wert geändert worden sein kann.

Wie TeX Zeichen mit Kategoriecode 10 („Leerzeichen“) tatsächlich verarbeitet, hängt davon ab, wann/wo TeX es sieht — also von TeXs aktuellem „Modus“. Es gibt zum Beispiel Zeiten, in denen TeX sie einfach überspringt. Hier weiß TeX, dass es beim Verarbeiten von Absatztext ein Zeichen mit Kategoriecode 10 entdeckt hat (was zufällig ein Leerzeichen, ASCII 32, ist) und wird es schließlich in einen sogenannten Zwischenwortkleber umwandeln: eine Art flexibles Leerzeichen, das sich dehnen oder schrumpfen kann.

* **(rote Augen)** Hier hat TeX ein Zeichen beobachtet, das einen sehr wichtigen Kategoriecode hat: 0 (Escape-Zeichen).

Ein Escape-Zeichen—*jedes* Zeichen mit Kategoriecode 0 — weist TeX an, in einen speziellen Lesemodus zu wechseln und die folgenden Zeichen sorgfältig zu scannen (zu lesen), da sie den Namen eines *Befehls*, nicht um Text, der gesetzt werden soll. In der TeX-Literatur wird für den Begriff „command“ auch *Kontrollsequenz*. Nachdem TeX ein Escape-Zeichen gesehen hat, prüft es den Kategoriecode des Zeichens, das *unmittelbar darauf folgt*; das liegt daran, dass TeX zwei Arten von Befehlen erkennt:

* mehrbuchstabige Befehle, genannt *Kontrollwörter*: das Zeichen, das unmittelbar auf das Escape-Zeichen folgt, hat Kategoriecode 11. Alle nachfolgenden Zeichen mit Kategoriecode 11 gelten als Teil des Namens eines Befehls. TeX hört auf, nach Zeichen zu suchen, die Teil eines Befehlsnamens sind, wenn es ein Zeichen erkennt, das *nicht* Kategoriecode 11 hat — etwa ein Leerzeichen mit Kategoriecode 10.
* einbuchstabige Befehle, genannt *Kontrollsymbole*: das Zeichen, das unmittelbar auf das Escape-Zeichen folgt *nicht* hat Kategoriecode 11.

Man kann sich ein Escape-Zeichen als Auslöser vorstellen, durch den TeX aus seinem üblichen Scanverhalten „ausbricht“ und für die nächsten wenigen Zeichen eine andere Vorgehensweise annimmt — angezeigt durch den rot gestrichelten Kasten, der zeigt, dass TeX **Mit dem Scannen nach einem Befehl beginnen**.

### Grafik 3: Verarbeitung von Kategoriecode 11 („Buchstaben“)

In Teil 1 dieser Reihe haben wir darauf hingewiesen, dass jedes Zeichen, das TeX aus seiner Eingabe liest, durch zwei Ganzzahlen beschrieben wird:

* Zeichencode: eine Ganzzahl, die die numerische Darstellung eines Zeichens definiert;
* Kategoriecode: ein Wert von 0 bis 15, den TeX jedem Zeichen zuweist, das in seiner Eingabe erscheinen könnte.

TeX verwendet diese beiden Informationen in der nächsten Verarbeitungsstufe: beim Erzeugen von Zeichentokens.

Grafik 3 baut auf Grafik 2 auf und zeigt, was TeX mit diesen Eingabezeichen mit Kategoriecode 11 (Buchstabe) macht: Es erzeugt *Zeichentokens*—Ganzzahlwerte, die TeX mithilfe einer Kombination aus Kategoriecode und Zeichencode des jeweiligen Zeichens berechnet.

**Hinweis**: In diesem Beispiel behandeln wir nur Zeichen mit Kategoriecode 11, aber Sie sollten wissen, dass TeX auch Tokenwerte für Eingabezeichen mit anderen Kategoriecodes erzeugt — außer Kategoriecode 0, der niemals in ein Token umgewandelt wird: Das Escape-Zeichen dient lediglich als „Schalter“, um eine spezielle Verarbeitung auszulösen.

![TeX verarbeitet Zeichen mit Kategoriecode 11](/files/37d74f3409cf6580bb226eb9fccf72e4aeeb1970)

Grafik 5 unten zeigt, was TeX tut, wenn es ein Zeichen mit Kategoriecode 0 sieht (ein Escape-Zeichen).

#### Hinweise zu Grafik 3: Verarbeitung von Kategoriecode 11 („Buchstabe“)

Hier konzentrieren wir uns auf die **grüne** Aktivität: Was passiert, wenn TeX Zeichen sieht, die Kategoriecode 11 („Buchstabe“) haben. Nachdem TeX ein Zeichen gelesen und seinen Kategoriecode bestimmt hat (hier ist es 11), besteht der nächste Schritt von TeX darin, *zu kombinieren* dieses Zahlenpaar zu einer einzigen Ganzzahl zusammenzuführen, die Zeichentoken genannt wird: Diese Tokens (Ganzzahlen) werden an die nächste Stufe von TeXs inneren Satzalgorithmen/-verarbeitungsprozessen weitergeleitet. Wie erwähnt, erzeugt TeX auch Zeichentokens für Zeichen mit anderen Kategoriecodes (also nicht 11); hier verwenden wir Kategoriecode 11 nur als Beispiel.

Jedes Zeichentoken (eine Ganzzahl) verbindet ein Eingabezeichen dauerhaft mit dem Kategoriecode, der diesem Zeichen zugewiesen wurde **zu dem Zeitpunkt, als es von TeX gescannt (eingelesen) wurde**: Diese Tatsache ist von entscheidender Bedeutung, um das Verhalten von TeX-/LaTeX-Makros zu verstehen. Natürlich muss TeX bei der weiteren Verarbeitung manchmal ein Zeichentoken aufteilen, um zu bestimmen, welches Paar aus (Zeichencode, Kategoriecode) zur Konstruktion dieses Tokens verwendet wurde. Sobald ein Zeichen jedoch vom Eingabeverarbeitungs-(Scan-)Prozess von TeX eingelesen wurde, führt der von TeX berechnete Zeichentokenwert dazu, dass dieses Zeichen *dauerhaft* mit dem ihm zugewiesenen Kategoriecode gekoppelt *zum Zeitpunkt seines Einlesens*.

**Berechnung von Zeichentokens**

TeX-Engines verwenden eine einfache Formel zur Berechnung eines Zeichentokens, $$T$$, aus einem Zeichen mit Kategoriecode $$C$$ und Zeichencode $$A$$:

$$T = \text{constant} \times C + A$$

8-Bit-Engines wie pdfTeX verwenden:

$$T = 256\times C + A$$

Unicode-fähige Engines wie XeTeX oder LuaTeX müssen eine andere Formel verwenden, weil Zeichencodes unter Unicode viel größer sein können als das Maximum von 255 in der älteren 8-Bit-ASCII-Codierungswelt. XeTeX verwendet zum Beispiel:

$$T= 2^{21}\times C + A \hskip5mm \text{(where } A \text{ is a Unicode character code value)}$$

Erneut sei darauf hingewiesen, dass Zeichen mit Kategoriecode 0 nicht in Zeichentokens umgewandelt werden: Kategoriecode 0 hat in TeXs Eingabefilterung einen ganz besonderen Platz und wird ausschließlich als „Schalter“ verwendet, um TeX in einen speziellen Modus zu versetzen, in dem die nächsten wenigen Zeichen gescannt werden. Grafik 5 befasst sich damit.

### Grafik 4: Verarbeitung von Kategoriecode 10 („Leerzeichen“)

Der Umgang von TeX mit Zeichen mit Kategoriecode 10 („Leerzeichen“) hängt davon ab, woran TeX gerade arbeitet, wenn es innerhalb der Eingabe ein Zeichen mit Kategoriecode 10 erkennt. In unserem Beispiel führt TeX die normale Absatzverarbeitung aus, und das Leerzeichen mit Kategoriecode 10 wird in Zwischenwortkleber umgewandelt.

![TeX verarbeitet Zeichen mit Kategoriecode 10](/files/9a21572bc7f8dd1dd787b11b4077e9940049c584)

TeXs Umgang mit Leerzeichen kann recht eigenwillig erscheinen, aber einen guten Überblick findet man in den Kapiteln 1 und 2 von [TeX by Topic](http://www.eijkhout.net/texbytopic/texbytopic.html) von Victor Eijkhout — Sie können [eine kostenlose PDF-Kopie herunterladen](https://bitbucket.org/VictorEijkhout/tex-by-topic) über seine Website.

Wenn TeX beispielsweise ein Zeichen mit Kategoriecode 10 sieht, gibt es Fälle, in denen TeX:

* alle überspringen (ignorieren) — z. B. wenn TeX im Vertikalmodus ist;
* mehrere Leerzeichen zu einem einzigen Leerzeichen zusammenfassen — zusätzliche Leerzeichen überspringen, etwa bei der Absatzverarbeitung;
* sie absorbieren — z. B. ein einzelnes Leerzeichen nach einem Befehlsnamen absorbieren;

Beachten Sie außerdem, dass TeX manchmal auch *erzeugen* Leerzeichen erzeugt — indem es Zeilenendzeichen in ein Leerzeichen umwandelt. Das Verhalten/der Umgang mit Leerzeichen (jedes Zeichen mit Kategoriecode 10) ist eine der „Eigenheiten“ von TeX: Es braucht Zeit/Übung, um mit diesem Aspekt von TeX vertraut (sicher) zu werden.

### Grafik 5a: Verarbeitung von Kategoriecode 0 (ein „Escape-Zeichen“)

In dieser Grafik hat TeX alle Zeichen bis zum `\` Zeichen verarbeitet, das den Kategoriecode 0 hat: das „Escape-Zeichen“ — wir verwenden eine weitere Abfolge von Grafiken, um zu zeigen, wie TeX ein Escape-Zeichen verarbeitet und den Namen eines Befehls identifiziert.

![TeX verarbeitet Zeichen mit Kategoriecode 0](/files/a6a3f93a7dd0469cc091d878395df93823096bfd)

### Grafik 5b: Auf der Suche nach einem Befehlsnamen

In dieser Grafik blicken wir in den Bereich des rot gepunkteten Kastens (**Mit dem Scannen nach einem Befehl beginnen**), um zu sehen, was TeX tut, nachdem es ein Escape-Zeichen gesehen hat.

![TeX sucht nach einem Befehlsnamen](/files/35c81579556b83ee2aac60feda22cc65db78e21b)

**Hinweise zu Grafik 5b**

* Sobald es erkannt wurde, hat das Escape-Zeichen seine Aufgabe erfüllt: Es diente als Schalter und nimmt an keiner weiteren Verarbeitung teil — genauer gesagt wird es **nicht** in ein Zeichentoken umgewandelt.
* Der Einfachheit halber wiederholen wir einige bereits erwähnte Details. Nachdem TeX ein Escape-Zeichen gesehen hat, prüft es den Kategoriecode des Zeichens, das *unmittelbar darauf folgt*; das liegt daran, dass TeX zwei Arten von Befehlen erkennt:
* * mehrbuchstabige Befehle, genannt *Kontrollwörter*: das Zeichen, das unmittelbar auf das Escape-Zeichen folgt, hat Kategoriecode 11. Alle nachfolgenden Zeichen mit Kategoriecode 11 gelten als Teil des Namens eines Befehls (*Kontrollwort*). TeX hört auf, nach Zeichen zu suchen, die Teil eines Befehlsnamens sind, wenn es ein Zeichen erkennt, das *nicht* Kategoriecode 11 hat — etwa ein Leerzeichen mit Kategoriecode 10.
  * einbuchstabige Befehle, genannt *Kontrollsymbole*: das Zeichen, das unmittelbar auf das Escape-Zeichen folgt *nicht* hat Kategoriecode 11.
* In unserem Beispiel ist das erste Zeichen nach dem `\` ist ein `j` (Kategoriecode 11), was TeX dazu veranlasst, nach einem Befehl zu suchen, der (möglicherweise) eine mehrbuchstabige Folge von Zeichen mit Kategoriecode 11 ist.
* TeX prüft weiterhin, ob noch mehr Zeichen mit Kategoriecode 11 folgen. Sobald es ein Zeichen mit einem anderen Kategoriecode erkennt, etwa ein Leerzeichen mit Kategoriecode 10, weiß TeX, dass es das Ende des Befehlsnamens erreicht hat. Nur um das noch einmal zu betonen: Hier war es ein Leerzeichen (Kategoriecode 10), das das Ende des Befehls „beendete“, aber es hätte jedes Zeichen sein können, das **nicht** hat Kategoriecode 11.

## Teil 3

In Teil 3 setzen wir bei Grafik 5b an, um diesen Teil der Geschichte zu vervollständigen — wie TeX einen Befehl identifiziert — und wenden uns dem zu, was es als Nächstes tut. Außerdem werfen wir einen tieferen Blick auf einige interne Aspekte der Verarbeitung von TeX — Teile davon können beim ersten Lesen übersprungen werden, es sei denn, Sie mögen Details wirklich sehr.

[Teil 1](/latex/de/weitere-themen/19-how-tex-macros-actually-work-part-1.md) [Teil 2](/latex/de/weitere-themen/20-how-tex-macros-actually-work-part-2.md) [Teil 3](/latex/de/weitere-themen/21-how-tex-macros-actually-work-part-3.md) [Teil 4](/latex/de/weitere-themen/22-how-tex-macros-actually-work-part-4.md) [Teil 5](/latex/de/weitere-themen/23-how-tex-macros-actually-work-part-5.md) [Teil 6](/latex/de/weitere-themen/24-how-tex-macros-actually-work-part-6.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/weitere-themen/20-how-tex-macros-actually-work-part-2.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.
