# Sandbox

> Interaktive Spielwiese zum Experimentieren mit der Layout-Engine von Postext

- HTML-Fassung: https://postext.dev/de/docs/sandbox
- Zuletzt aktualisiert: 2026-10-11
- Lesezeit: 16 min
- Andere Sprachen: [en](https://postext.dev/en/docs/sandbox.md), [es](https://postext.dev/es/docs/sandbox.md), [ca](https://postext.dev/ca/docs/sandbox.md), [fr](https://postext.dev/fr/docs/sandbox.md), [it](https://postext.dev/it/docs/sandbox.md), [pt](https://postext.dev/pt/docs/sandbox.md), [zh](https://postext.dev/zh/docs/sandbox.md), [ja](https://postext.dev/ja/docs/sandbox.md), [ar](https://postext.dev/ar/docs/sandbox.md)

## Kurz gesagt

Die Sandbox ist ein kostenloses Werkzeug auf dieser Website, mit dem Sie Postext ausprobieren können, ohne etwas zu installieren. Sie schreiben Ihren Text auf der einen Seite und sehen auf der anderen die fertigen Seiten, die sich beim Tippen mitändern. Sie können Schriften, Seitenformate, Spalten und Farben wählen und Bilder hinzufügen. Sie können Ihre Arbeit als Buch mit Kapiteln ordnen und es als PDF oder als E-Book im Format EPUB herunterladen. Ihre Arbeit wird laufend in Ihrem eigenen Browser gespeichert.

**Eine interaktive Spielwiese für die Layout-Engine von Postext.**

Die Sandbox bietet Ihnen eine Oberfläche nach Art eines Editors, in der Sie den Text schreiben, Ressourcen und Schriften verwalten, die Gestaltung anpassen und das Ergebnis in Echtzeit in fünf synchronisierten Ansichten sehen: **Canvas**, **PDF**, **Folio** (das gedruckte Buch in 3D), **HTML** und **EPUB 3**. Sie ist zum Experimentieren gebaut. Sie können die Typografie oder die Zahl der Spalten ändern, verschiedene Platzierungen von Abbildungen ausprobieren und beobachten, wie die Engine reagiert. Die Bedienfelder verwenden die Begriffe des Verlagswesens (Bücher, Abbildungen, Kästen, Kolumnentitel) statt Begriffe der Engine, sodass sich Menschen aus der Verlagsbranche zurechtfinden, ohne das Konfigurationsschema zu kennen. Jedes Bedienelement ist per Tastatur und mit Screenreadern zugänglich.

## Aufbau der Oberfläche

Die Sandbox hat drei Hauptbereiche: eine schmale **Aktivitätsleiste**, über die Sie zwischen den Bedienfeldern wechseln, eine in der Breite verstellbare **Seitenleiste** mit dem aktiven Bedienfeld und rechts den **Ansichtsbereich** mit den Ausgabe-Tabs. Die Kopfzeilen der Bedienfelder, die Tab-Leiste des Ansichtsbereichs und das Logofeld oben in der Aktivitätsleiste sind gleich hoch, sodass das obere Band als eine durchgehende Linie über das Fenster läuft.

> **Abbildung: Oberfläche der Sandbox**
> Aktivitätsleiste links mit sechs beschrifteten Bedienfeldern, verstellbare Seitenleiste in der Mitte und rechts der Ansichtsbereich mit den Tabs Canvas, PDF, Folio, HTML und EPUB 3.
>
> *Drei Bereiche: Aktivitätsleiste, verstellbare Seitenleiste und Ansichtsbereich mit den Ausgabe-Tabs.*

### Aktivitätsleiste

Ein schmaler Streifen am linken Rand enthält je Bedienfeld eine Schaltfläche. Jede Schaltfläche zeigt ein Symbol mit einer Beschriftung aus einem Wort darunter und als Tooltip einen längeren Hinweis (derselbe Hinweis ist die barrierefreie Beschreibung der Schaltfläche). Von oben nach unten:

- **Bücher** (Symbol `Files`): Ihre Bücher und die Beispielbücher
- **Kapitel** (Symbol `BookOpen`): das geöffnete Buch und seine Kapitel
- **Text** (Symbol `FileCode`): den Text des aktuellen Kapitels schreiben und bearbeiten
- **Ressourcen** (Symbol `FolderOpen`): Bilder, SVG-Zeichnungen und Tabellen, die das Buch verwendet
- **Schriften** (Symbol `Type`): die Schriften des Buchs und Ihre eigenen Schriftdateien
- **Gestaltung** (Symbol `Settings2`): Seite, Typografie, Überschriften, Abbildungen, Kästen und Exporteinstellungen
- **Prüfungen** (Symbol `AlertTriangle`): Satzprobleme, die im Layout gefunden wurden. Das Symbol trägt ein laufend aktualisiertes Zählerabzeichen mit der Zahl der aktuellen Warnungen, höchstens `99+`.

Ein Klick auf die Schaltfläche des aktiven Bedienfelds klappt die Seitenleiste ein, ein Klick auf eine andere Schaltfläche wechselt zu deren Bedienfeld. Die Leiste ist ein einziger Tabstopp: Die Pfeiltasten (↑ / ↓, mit Umlauf), **Pos1** und **Ende** bewegen den Fokus zwischen den Schaltflächen, Eingabe oder Leertaste öffnet das fokussierte Bedienfeld.

Die Host-Anwendung kann der Leiste eigene Elemente hinzufügen: oben im Kopffeld einen optionalen **Logo-Link zur Startseite** (über die Props `homeUrl` oder `homeLink`) und unten einen **Umschalter für das Farbschema** sowie eine **Sprachauswahl**. Ganze Bücher werden im Bedienfeld Bücher als `.postext`-Dateien ausgetauscht, und die Kopfzeilen der Bedienfelder Text und Gestaltung exportieren jeweils ihren eigenen Teil (siehe [Export und Import](https://postext.dev/de/docs/sandbox.md#export-und-import)).

### Bedienfelder der Seitenleiste

Die Seitenleiste ist in der Breite verstellbar. Ziehen Sie den Trenner zwischen Seitenleiste und Ansichtsbereich, oder fokussieren Sie ihn mit der Tabulatortaste und verwenden Sie die Tastatur: ← / → ändern die Breite um 2 % (mit Umschalt um 10 %), **Pos1** / **Ende** springen zur schmalsten und zur breitesten Größe. Der Trenner meldet Screenreadern seinen aktuellen Wert, und dem Ansichtsbereich bleiben immer mindestens 200 px. Ist kein Bedienfeld aktiv, klappt die Seitenleiste ganz ein; ihre Breite wird zwischen Sitzungen gespeichert.

Einstellungszeilen setzen ihre Beschriftung neben das Bedienelement oder, wenn die Seitenleiste schmal ist, darüber. Dafür werden Container-Queries verwendet, die Anordnung folgt also der Breite der Seitenleiste und nicht der des Fensters.

#### Bedienfeld Text

Ein CodeMirror-6-Editor für das Markdown des Kapitels. Screenreader nennen ihn *Kapiteltext*. Er bietet:

- **Syntaxhervorhebung**: Überschriften, Hervorhebungen, Links, Codeblöcke und Zitatblöcke sind optisch unterschieden, mit eigener Hervorhebung für **YAML-Front-Matter**, **LaTeX-Formelbereiche**, **Inline-Chips** (`:chip[…]`: die Klammern und Attribute sind markiert, der Chiptext ist eingefärbt), **Kapitälchen** (`:smallcaps[…]`: die Klammern sind markiert, der Text erscheint in Kapitälchen), die **Ausrichtungszeichen** vertikalen Texts (`:tcy[…]`, `:upright[…]`, `:sideways[…]`: die Klammern markiert, der Text punktiert unterstrichen) und die **chinesischen Auszeichnungen** (`:dots[…]`, `:name[…]` und `:book[…]` mit ihren Zeichen unter dem Text; `:ruby[…]{rt="…"}` und `{紅樓|hóng|lóu}`; `:warichu[…]` mit kleiner gesetzter Anmerkung). Die Eingabe von `:do`, `:na`, `:bo`, `:ru` oder `:wa` bietet die jeweilige Direktive an
- **Chip-Vervollständigung**: Die Eingabe von `:c` am Wortanfang bietet `:chip[…]` an (die Einfügemarke landet zwischen den Klammern). Innerhalb von `{style="…"}` werden die konfigurierten Chip-Stil-IDs angeboten.
- **Kapitälchen-Vervollständigung**: Die Eingabe von `:sm` am Wortanfang (oder direkt nach `*` / `_`) bietet `:smallcaps[…]` an, mit der Einfügemarke zwischen den Klammern.
- **Tabulatoren**: `:tab` und `:tab{…}` werden hervorgehoben und wie die anderen Inline-Direktiven in der Vervollständigung angeboten. Die Tabulatortaste des Editors tippt kein Tabulatorzeichen, deshalb schreibt man einen Tabulator in der Sandbox als `:tab`; ein mit dem Text eingefügtes Tabulatorzeichen bleibt erhalten und wirkt als Tabulator in einem Absatz, dessen Format Tabstopps festlegt.
- **Zeilennummern** und Hervorhebung der aktiven Zeile
- **Zeilenumbruch** für lange Absätze
- **Zeilen von rechts nach links**: Eine Zeile, deren Text mit einem arabischen oder hebräischen Buchstaben beginnt, läuft von rechts nach links, und Einfügemarke und Pfeiltasten folgen ihr. Das Markup darin (Attribute `{…}`, Marken `[^id]`, der Name einer Direktive, ein ganzes `:ref[fig-1]`, Formeln, Code, Linkziele) bleibt links nach rechts, damit es sich so liest, wie es getippt wurde. Codeblöcke, Front Matter und Zeilen, die mit einem lateinischen Wort beginnen, laufen wie bisher von links nach rechts.
- **Werkzeugleiste**: beginnt mit **Rückgängig / Wiederholen**, gefolgt von Fett, Kursiv, Überschriftenebenen 1–3, Link, Inline-Code, **Chip** (umschließt die Auswahl mit `:chip[…]`), **Kapitälchen** (umschließt sie mit `:smallcaps[…]`), Zitatblock, nummerierten und unnummerierten Listen sowie vier Schaltflächen zum Einfügen von Direktiven:
  - `:::pagebreak`
  - `:::space`: eine Zeile vertikaler Abstand (`:::space{lines=N}` für mehr)
  - **Spalten**: eine zweispaltige Gruppe `:::columns{count=2}`, die Einfügemarke in ihrer ersten Zeile, im Text oder in einem Kasten (seit postext 1.25)
  - `:::numbering{format="decimal" startAt=1}`: mit Beispielattributen eingefügt, die Sie anpassen können

Ein Code-Listing (ein Codeblock aus ```` ``` ```` oder `~~~` mit seinen Zeilen) ist im Editor ein einziger Bereich: Es erhält einen Code-Hintergrund, und das Postext-Markup darin (Formeln, Chips, Tabulatoren, Registermarken) bleibt ungefärbt, da die Engine es nicht auswertet. Host-Anwendungen können über `extraActions` eigene Schaltflächen in die Werkzeugleiste setzen. Der Editor meldet außerdem Cursor und Auswahl an die Vorschauen; das ermöglicht die Synchronisierung per Klick: Ein Klick auf Text in der gerenderten Ausgabe setzt die Einfügemarke an die entsprechende Stelle im Markdown, und die Vorschauen können die aktuelle Auswahl hervorheben.

Die Kopfzeile des Bedienfelds ist ein **Kapitelwechsler**: Pfeile für vorheriges und nächstes Kapitel, Position und Titel des Kapitels und ein Menü mit allen Kapiteln des Buchs samt Seitenbereich, sobald dessen Paginierung bekannt ist (siehe [Bücher und Kapitel](https://postext.dev/de/docs/sandbox.md#bücher-und-kapitel)). Jedes Kapitel hat eine eigene Editorinstanz, sodass Rückgängig-Verlauf und Position der Einfügemarke je Kapitel erhalten bleiben. Die Kopfzeile bietet dann fünf Aktionen:

- **Zurücksetzen** (mit Rückfrage): lädt den **Dokumentteil** des geöffneten Beispielbuchs neu. Alle Kapitel und der gesamte Abbildungsbestand werden durch die des Beispiels ersetzt (beim eingebauten Beispiel durch das Beispieldokument und die Beispielressourcen der jeweiligen Sprache). Die Gestaltung bleibt unverändert, abgesehen von den eigenen Schriften des Beispiels. Siehe [Bedienfeld Bücher](https://postext.dev/de/docs/sandbox.md#bedienfeld-bücher).
- **Exportieren**: lädt das aktive Kapitel als reine Markdown-Datei (`.md`) herunter, in einem Buch mit mehreren Kapiteln unter dem Namen `<book>-<nn>-<chapter>.md`, sonst nach dem geöffneten Buch benannt oder als `document.md`
- **Importieren**: ersetzt das aktive Kapitel durch den Inhalt einer Markdown-Datei (`.md`)
- **Word-Dokument importieren**: öffnet ein Word-Manuskript (`.docx`) und ordnet seine Word-Formatvorlagen Postext-Formaten zu, bevor sich irgendetwas ändert (siehe [Word-Dokumente](https://postext.dev/de/docs/sandbox.md#word-dokumente))
- **Nach Word exportieren**: lädt das Kapitel oder das ganze Buch als `.docx` herunter, das beim erneuten Import mit allen Formatvorlagen zurückkommt

#### Bedienfeld Bücher

Das erste Bedienfeld der Aktivitätsleiste: die Galerie Ihrer Bücher und der Beispielbücher, mit dem Menü **Neu**, dem Status der letzten Aktion und dem Banner eines Beispielbuchs, von dem es eine neue Version gibt. In Code und Speicher heißt ein Buch weiterhin *project* und ein Beispielbuch *preset*.

Ein Klick auf ein Buch (oder auf eines der Sprachkürzel eines Beispielbuchs) öffnet es, und sobald es auf dem Bildschirm steht, wechselt die Seitenleiste zum [Bedienfeld Kapitel](https://postext.dev/de/docs/sandbox.md#bedienfeld-kapitel). Ein Klick auf das bereits geöffnete Buch führt sofort dorthin. Die Zeilenmenüs (umbenennen, duplizieren, herunterladen, ausblenden, löschen) wechseln nie das Bedienfeld. Das geöffnete Buch bleibt in der Liste markiert. Das Bedienfeld hat zwei Gruppen:

- **Meine Bücher**: lokale, bearbeitbare Bücher, die im Browser (IndexedDB) gespeichert sind. Das geöffnete ist markiert; seine Kapitel stehen im Bedienfeld Kapitel.

  Solange eines Ihrer eigenen Bücher geöffnet ist, *ist* das Arbeitsdokument dieses Buch. Jede Änderung an Text, Gestaltung, Abbildungen und Schriften wird automatisch darin gespeichert (mit derselben Verzögerung von 1 Sekunde wie bei `localStorage`), sodass Sie Bücher wechseln und zurückkehren können, ohne etwas zu verlieren. Neue Bücher legen Sie über das Menü **Neu** in der Kopfzeile an:
    - **Kopie des geöffneten Buchs** kopiert das geöffnete Buch mit seinen Abbildungen und Schriften in ein neues Buch.
    - **Leeres Buch** beginnt ein leeres.
    - **Eine .postext-Datei öffnen …** importiert eine Datei.

  Sie können auch jede Zeile duplizieren. Solange Sie keine eigenen Bücher haben, zeigt die Gruppe einen leeren Zustand mit derselben Abkürzung. Jede Zeile hat ein beschriftetes Menü **⋯** (*Weitere Aktionen für „…“*) mit **Umbenennen …**, **Duplizieren**, **Herunterladen (.postext)** und **Löschen …**. Löschen fragt direkt neben der Schaltfläche ⋯ nach.

  Umbenennen öffnet Eingabefelder für Name und Beschreibung direkt in der Zeile. Die Eingabetaste in einem der beiden Felder übernimmt beide, Escape bricht ab.

  Ein Buch hat außerdem ein **Titelbild**, das dort erscheint, wo ein Beispielbuch sein Vorschaubild zeigt. Eine Kopie eines Beispielbuchs (oder eines anderen Buchs) übernimmt dessen Titelbild. Während eine Zeile umbenannt wird, ist das Titelbild das Bedienelement, mit dem Sie es festlegen: Klicken Sie darauf, um eine PNG-, JPEG-, WebP-, GIF- oder SVG-Datei zu wählen, oder entfernen Sie das aktuelle mit dem X daneben. Das Titelbild gehört zum Buch, nicht zu seinen Abbildungen, und wird beim Export und Import mitgenommen.

  Ein Buch ohne Titelbild erhält eines von seiner **ersten Seite** (der ersten Seite seines ersten Kapitels): Wenn diese Seite zum ersten Mal im Tab Canvas gesetzt und gezeichnet wird, nimmt die Sandbox davon ein kleines Bild auf (240 px breit, JPEG), sobald der Browser untätig ist und die Schriften und Bilder der Seite geladen sind. Es wird als Titelbild des Buchs gespeichert, sodass ein Download es als `thumbnail` des Pakets mitträgt. Ein Beispielbuch, das kein Vorschaubild mitbringt, erhält auf dieselbe Weise eines, das im Browser bleibt (im Speicher `presetCovers` der IndexedDB-Datenbank, eines je Beispiel und Sprache), in seiner Zeile erscheint und von einer Kopie oder einem Download übernommen wird. Ein vorhandenes Titelbild wird nie ersetzt, ob es mit dem Beispiel kam, mit einer importierten Datei, aus Ihrer eigenen Wahl oder aus einer früheren Aufnahme. Ein Titelbild, das Sie entfernen, wird bei einem späteren Besuch erneut von der ersten Seite genommen.

  Das Öffnen eines Buchs fragt nie nach: Das Buch, das Sie verlassen, wird zuerst gespeichert, welches es auch ist. Während das nächste lädt, zeigt der Ansichtsbereich *Buch wird geöffnet …* statt des verlassenen Buchs. Wird das geöffnete Buch gelöscht, kehrt die Sandbox zum eingebauten Beispiel zurück.

- **Beispielbücher**: Ausgangspunkte, unter Ihren Büchern aufgeführt. Das Paket selbst wird nie verändert, aber Ihre Änderungen an einem Beispielbuch bleiben erhalten: Die erste Änderung speichert eine Kopie davon (seinen *Entwurf*) im Browser, eine je Beispiel und Sprache, und die Zeile trägt die Marke *Bearbeitet*. Öffnen Sie dieses Beispiel erneut in dieser Sprache, kommt Ihre Fassung zurück; ein Beispiel, das Sie nie geändert haben, öffnet sich wie veröffentlicht. Das Menü ⋯ jeder Zeile bietet:
    - **Eigene Kopie anlegen** macht aus dem Beispiel ein eigenes Buch mit eigenen Kopien der Dateien des Pakets, sodass spätere Änderungen am Paket auf der Festplatte es nie berühren.
    - **Herunterladen (.postext)** speichert das Beispiel als `.postext`-Datei.
    - **In der Liste ausblenden** entfernt das Beispiel aus der Liste (das eingebaute lässt sich nicht ausblenden).
    - **Original wiederherstellen …** verwirft Ihre Änderungen am Beispiel (in allen Sprachen) und lädt, wenn es geöffnet ist, an seiner Stelle die veröffentlichte Fassung. Es fragt vorher nach und erscheint nur bei bearbeiteten Beispielen.

  Ein Beispiel in mehreren Sprachen zeigt ein Kürzel je Sprache, in der Reihenfolge, in der sein Manifest sie aufführt: 繁 und 简 für traditionelles und vereinfachtes Chinesisch, für die übrigen der Sprachcode (EN, ES); der Tooltip nennt die Sprache in der Sprache der Oberfläche (*Die Fassung in traditionellem Chinesisch laden*). Ein Beispiel, dessen Original in einer anderen Sprache als der Oberfläche vorliegt (ein chinesischer Roman mit englischer Übersetzung), gibt an, in welcher es sich öffnet (`openLocale`, siehe [Format der Vorlagenpakete](https://postext.dev/de/docs/sandbox.md#format-der-vorlagenpakete)), sodass ein Klick auf seine Zeile das Original öffnet.

  Ausgeblendete Beispiele sind unten in der Gruppe unter einem aufklappbaren Eintrag *Ausgeblendete Beispielbücher* gesammelt, jedes mit **In der Liste zeigen**. Die Wahl wird in `localStorage` gespeichert.

Eine `.postext`-Datei, die über das Menü **Neu** geöffnet wird, wird zu einem neuen, geöffneten Buch. Eine Datei in mehreren Sprachen fragt zuerst, welche importiert werden soll, beginnend mit der, in der sie geschrieben ist (die `locale` ihres Manifests). Der Export ist eine Aktion je Zeile: Die Zeile des geöffneten Buchs exportiert, was auf dem Bildschirm steht. Eine `.postext`-Datei ist ein gezipptes Verzeichnis eines Vorlagenpakets (siehe [Export und Import](https://postext.dev/de/docs/sandbox.md#export-und-import)).

Die Schaltflächen Zurücksetzen in den Bedienfeldern Text und Gestaltung stellen das Beispiel wieder her, von dem ein Buch kopiert wurde. Ein leeres oder importiertes Buch hat kein Original, deshalb sind die Schaltflächen ausgeblendet, solange es geöffnet ist.

#### Bedienfeld Kapitel

Das zweite Bedienfeld der Aktivitätsleiste zeigt nur das geöffnete Buch. Oben stehen sein Name, die Art des Buchs (*Ihr Buch* oder *Beispielbuch* mit seiner Sprache und, sobald Sie es ändern, der Marke *Bearbeitet*) und ein Menü ⋯ mit den Aktionen dafür: **Umbenennen …** für Ihre Bücher (ein Doppelklick auf den Namen bewirkt dasselbe), **Duplizieren** oder **Eigene Kopie anlegen**, **Herunterladen (.postext)** und **Original wiederherstellen …** für ein bearbeitetes Beispielbuch.

Darunter füllen seine **Kapitel** den Rest des Bedienfelds und scrollen für sich (siehe [Bücher und Kapitel](https://postext.dev/de/docs/sandbox.md#bücher-und-kapitel)). Jede Kapitelzeile zeigt ihren Seitenbereich und die Wortzahl, das aktive Kapitel ist markiert. Ein chinesisches, japanisches oder koreanisches Buch zählt stattdessen Zeichen: Jedes Han-Zeichen, Kana oder Hangul zählt eins, ebenso jedes lateinische Wort dazwischen. **Kapitel hinzufügen** sitzt in der Kopfzeile des Bedienfelds neben der Kapitelzahl, Zeilen lassen sich an ihrem Griff ziehen (oder mit den Pfeiltasten darauf) umsortieren, und das Menü ⋯ jedes Kapitels bietet **Umbenennen**, **Nach oben** / **Nach unten**, **An H1-Überschriften teilen**, **Mit vorherigem Kapitel zusammenführen** und **Löschen** (das letzte Kapitel lässt sich nie löschen).

##### Beispielbücher (Vorlagen)

Ein **Vorlagenpaket** ist ein vollständiger Ausgangspunkt, der als Einheit geladen wird: das Markdown der Kapitel, eine `PostextConfig`, die Ressourcen (mit ihren Bitmap- und SVG-Daten und Tabellenmodellen) und die eigenen Schriftdateien, auf die die Konfiguration verweist. Das Bedienfeld führt jede Vorlage auf, die die Sandbox erreichen kann, und markiert die geöffnete:

- **Eingebaute Vorlage**: der *Postext-Leitfaden*, das Standard-Beispielbuch, das mit dem Paket ausgeliefert wird. Er ist immer verfügbar, steht immer an erster Stelle der Liste und ist **öffentlich**. Es gibt ihn auf Englisch, Spanisch, Katalanisch, Arabisch, vereinfachtem Chinesisch, Japanisch und brasilianischem Portugiesisch (die Schaltflächen ES, CA, EN, ع, 简, 日 und PT der Zeile; `#preset=postext-guide&lang=zh-Hans` verweist auf die chinesische Ausgabe, `lang=ar` auf die arabische, `lang=ja` auf die japanische, `lang=pt-BR` auf die brasilianisch-portugiesische). Die arabische Ausgabe ist ein arabisches Buch: von rechts nach links, rechts gebunden, arabisch-indische Ziffern, Amiri, Noto Kufi Arabic und IBM Plex Sans Arabic, Blocksatz mit Kaschida und gespiegelt gezeichnete Abbildungen mit arabischen Beschriftungen. Die chinesische Ausgabe hat eine eigene Gestaltung (Noto Serif SC und Noto Sans SC, Zeichensetzung und Zeilenumbruch nach festlandchinesischer Norm) und Abbildungen mit chinesischen Beschriftungen. Die japanische Ausgabe ist ebenfalls ein vertikales Buch, gesetzt nach den japanischen Regeln (JLReq): Noto Serif JP und Noto Sans JP, 9,25 pt Schriftgrad in zwei Stufen zu 34 Zeichen, Abschnittsüberschriften drei Zeilen tief (行取り), Kolumnentitel und arabische Seitenzahlen über Kopf und Fuß, Abbildungen mit japanischen Beschriftungen. Jede Oberfläche öffnet den Leitfaden in ihrer eigenen Sprache. Ein unveränderter chinesischer, japanischer oder arabischer Leitfaden, der aus einer anderen Oberfläche geöffnet wurde (über seine Schaltfläche oder einen Link mit `lang=`), bleibt in seiner Sprache, gleich in welcher Sprache die Oberfläche läuft; derjenige, den die chinesische, japanische oder arabische Oberfläche selbst geöffnet hat, wechselt wie die anderen Ausgaben in die Sprache, in der die Sandbox als Nächstes geöffnet wird.
- **Entfernte Vorlagen**: Pakete, die per HTTP von den Basis-URLs ausgeliefert werden, die im Prop `presetSources` übergeben werden (siehe [Props](https://postext.dev/de/docs/sandbox.md#props)). Jede Quelle ist entweder öffentlich oder **privat**. Private Vorlagen tragen in der Liste die Marke *Privat* und sind für Material gedacht, das einen Rechner nicht verlassen darf. Die öffentliche Website führt eine private Quelle nur in der lokalen Entwicklung auf, wo die Next.js-App den mit `POSTEXT_PRIVATE_PRESETS_DIR` benannten Ordner über `/api/private-presets` ausliefert. Im Produktivbetrieb wird sie nie aufgeführt. Die öffentliche Quelle der Website, `/presets`, liefert ihre Beispielbücher: *Bioquímica*, *Deep Sky*, *Don Quijote*, *Physics (OpenStax)*, *Spanish Painting* und *Signals 2020* auf Spanisch und Englisch, *Dream of the Red Chamber* in drei Ausgaben und *Paradise Lost* auf Englisch, mit Veritys Anmerkungen als Fußnoten und Dorés Tafeln. Jedes bringt seine Lizenz und seine Nachweise mit.
- **`default: true`**: Eine als Standard markierte private Vorlage wird automatisch geladen, wenn eine *unberührte* Sandbox (eingebautes Dokument unverändert) zum ersten Mal geöffnet wird. Sind mehrere markiert, gewinnt diejenige, deren `locale` zur Sprache der Oberfläche passt. Öffentliche Vorlagen werden nie automatisch geladen.

Jede Zeile zeigt den Namen der Vorlage, eine optionale Beschreibung, ihr Sprachkürzel und ihre Marken *Privat* / *Standard*. Ein Klick auf eine Zeile lädt die Vorlage **vollständig**: Text, Abbildungen, Gestaltung und Schriften. Die Sandbox schreibt zuerst die Schriftdateien und Abbildungsdaten in die IndexedDB, damit die Ansichten nie ein halb übernommenes Dokument sehen. Ein Klick auf eine Zeile öffnet das Beispiel in der Sprache der Oberfläche, es sei denn, Sie haben es nur in einer anderen Sprache bearbeitet: Dann öffnet sich Ihre jüngste Fassung. Die Sprachkürzel eines zweisprachigen Beispiels öffnen es in der jeweiligen Sprache (in Ihrer Fassung dort, falls vorhanden).

**Lebende Vorlagen.** Entfernte Vorlagen werden automatisch verfolgt. Immer wenn eine Vorlage übernommen wird, speichert die Sandbox den *Fingerabdruck* des Pakets zusammen mit Hashes des Markdowns, der Konfiguration und des Ressourcenbestands, die sie übernommen hat. Solange die Seite sichtbar ist, fragt sie den Fingerabdruck alle 3 Sekunden ab, und sofort, wenn der Tab sichtbar wird oder das Fenster den Fokus zurückerhält. Ändert sich der Fingerabdruck:

- Ist das Buch **unverändert** (Markdown, Konfiguration und Ressourcen ergeben noch die Hashes, die die Vorlage übernommen hat), wird die Vorlage vollständig neu übernommen, und im Bedienfeld erscheint kurz ein Hinweis.
- Gibt es **lokale Änderungen**, bleiben sie erhalten. Ein Banner oben im Bedienfeld (*Von diesem Beispielbuch gibt es eine neue Fassung. Ihre Änderungen bleiben erhalten.*) bietet **Neue Fassung laden** an, das vor dem Verwerfen Ihrer Änderungen an dieser Sprache des Beispiels nachfragt, und die Schaltfläche Bücher in der Aktivitätsleiste zeigt währenddessen einen Punkt. Der Entwurf merkt sich die Version, aus der er entstanden ist, sodass das Banner bei jedem Öffnen wiederkommt, bis Sie die neue Version laden. Abbildungen des Entwurfs, deren Dateien sich in der neuen Version geändert haben, behalten ihre bisherigen Bytes: Der Entwurf erhält eine eigene Kopie davon, bevor die des Pakets geschrieben werden. Pakete werden nur verfolgt, solange ein Beispielbuch geöffnet ist. Ein davon kopiertes Buch behält seine eigene Kopie.

Dieselbe Prüfung läuft beim Laden: Wenn Sie ein Paket bearbeiten und dann die Sandbox öffnen, übernimmt sie die neue Version, sofern das Buch unverändert war. Der Fingerabdruck stammt aus `<preset-dir>/fingerprint.json`. Auf der Entwicklungsroute ist das eine virtuelle Datei, die einen nur aus Metadaten gebildeten Hash des Verzeichnisses liefert (siehe den Anhang [Format der Vorlagenpakete](https://postext.dev/de/docs/sandbox.md#format-der-vorlagenpakete)). Quellen, die sie nicht ausliefern, werden nicht verfolgt.

Das geöffnete Beispielbuch legt auch fest, was die Schaltflächen **Zurücksetzen** der anderen Bedienfelder wiederherstellen:

| Bedienfeld | Zurücksetzen stellt wieder her |
| --- | --- |
| Text | Text und Abbildungsbestand des Beispiels (den Dokumentteil) |
| Gestaltung | Die Gestaltung des Beispiels, einschließlich seiner Schriften |
| Bücher (Original wiederherstellen …) | Alles: Text, Abbildungen, Gestaltung und Schriften |

Eine Vorlage, die in einer früheren Sitzung geöffnet war, aber von keiner Quelle mehr aufgeführt wird (typischerweise eine private Vorlage in einem Build, der sie nicht ausliefert), erscheint weiterhin, ausgegraut als *In diesem Build nicht verfügbar*. Die Sandbox behält den geladenen Inhalt, statt ihn stillschweigend gegen das eingebaute Beispiel auszutauschen. Die ID der geöffneten Vorlage wird unter dem Schlüssel `postext-sandbox-preset` gespeichert (siehe [Persistenz](https://postext.dev/de/docs/sandbox.md#persistenz)). Das Paketformat beschreibt der Anhang [Format der Vorlagenpakete](https://postext.dev/de/docs/sandbox.md#format-der-vorlagenpakete).

#### Bedienfeld Ressourcen

Verwaltet die Ressourcen des Buchs: Bitmap-Bilder, SVG-Abbildungen, Tabellen und Videos. Der Text verweist auf sie mit Blöcken `::resource{id="…"}` und Querverweisen `:ref{id="…"}` im Fließtext. Zur Verweissyntax und zum Gleitmodell siehe [Dokumentformat → Ressourcen](https://postext.dev/de/docs/document-format.md#ressourcen).

**Listenansicht.** Die Kopfzeile zeigt die Zahl der Ressourcen. Ressourcen sind nach dem Namen ihres Ressourcentyps gruppiert, und jede Gruppe ist eine Liste mit Zähler. Ressourcen, deren `typeId` zu keinem konfigurierten Typ mehr passt, landen in einer Gruppe *Ohne Typ*, damit Sie sie weiterhin erreichen. Jeder Eintrag zeigt neben Legende und ID ein Vorschaubild von 36 px: eine echte Vorschau für Bitmaps und SVGs, das Vorschaubild mit einem Wiedergabe-Abzeichen für Videos und ein Symbol für Tabellen. Hat das Buch mehr als sechs Ressourcen, filtert ein **Suchfeld** (*Ressourcen suchen …*) die Liste nach Legende und ID, ohne auf Akzente zu achten. Hat das Buch noch keine Ressourcen, erklärt ein leerer Zustand, wie man welche hinzufügt und mit `:ref{#id}` in den Text setzt. Ein Aufklappmenü **Neu** bietet vier Wege, eine hinzuzufügen:

- **Bild hochladen**: PNG, JPEG, WebP oder GIF
- **SVG hochladen**
- **Neue Tabelle**: beginnt als Raster von 2 × 2 Zellen mit einer Kopfzeile
- **Video hinzufügen**: ein YouTube- oder Vimeo-Video, eine Videodatei oder deren Adresse (ein MP4 oder ein HLS-Stream; siehe *Video* unten). Ein Buch, dessen Ressourcentypen älter als die Videos sind, erhält beim ersten Video den eingebauten Typ *Video*.

Sie können auch Dateien von der Festplatte auf das Bedienfeld ziehen, Videodateien (MP4, WebM, Ogg, QuickTime) eingeschlossen. Sie werden gesammelt hochgeladen, mit IDs, die aus den Dateinamen als Slug gebildet werden. Nicht unterstützte Dateien werden übersprungen, und ein kurzer Hinweis meldet, wie viele hinzugefügt und wie viele übersprungen wurden.

**Detailansicht.** Die Auswahl einer Ressource öffnet ihren Editor:

- **ID**: bearbeitbar und als Slug geprüft. Doppelte IDs werden markiert und nie übernommen, und eine leere ID erhält einen Vorschlag, der aus der Legende abgeleitet ist. Beim Umbenennen bleibt die gespeicherte Bild- oder SVG-Datei erhalten.
- **Typ**: einer der konfigurierten Ressourcentypen
- **Legende**: unterstützt Inline-Markdown (fett, kursiv, Code und `:ref`). `\\` oder ein Backslash am Zeilenende beginnt eine neue Zeile; ein einfacher Zeilenumbruch zählt als Leerzeichen
- **Anmerkung**: eine optionale Quellenzeile, ein Nachweis oder eine Bemerkung, kleiner unter die Ressource gesetzt (mit denselben Inline-Auszeichnungen und Zeilenumbrüchen wie die Legende). Gestaltet wird sie über die Gruppe *Anmerkung* der Einstellungen *Legenden*.
- **Alternativtext**: Beschreibung für die Barrierefreiheit der HTML-Ausgabe
- **Tabellenstil**: bei Tabellen der benannte Stil, in dem die Tabelle gesetzt wird (`table.styleId`). Das ist entweder *Tabellenstil des Dokuments* (der Standard) oder einer der in den Einstellungen deklarierten *Tabellenstile*. Eine ID, die kein Stil deklariert, wird als fehlend aufgeführt und im Tabellenstil des Dokuments gesetzt.
- **Platzierung**:
  - **Position**: `auto` (der erste freie Platz, der Standard), `top`, `bottom` oder `here`.
  - **Spannweite**: `column`, `page` oder `side`. Sie ist deaktiviert, wenn die Position `here` ist. Die Standardwerte entsprechen denen der Engine, `auto` + `column`.
  - **Spalten**: wie viele benachbarte Spalten ein Spalten-Gleitobjekt auf einer mehrspaltigen Seite einnimmt (`placement.columns`), etwa ein Bild über zwei der vier Spalten einer Zeitung. So viele, wie die Seite hat, machen es seitenbreit. Das Feld erscheint, wenn das Buch oder einer seiner Abschnitte mehr als eine Spalte hat und die Spanne `column` ist, nicht aber bei einer auf `here` gesetzten oder gedrehten Ressource.
  - **Ausrichtung**: aufrecht oder um eine Vierteldrehung gedreht (Oberkante nach links oder nach rechts). Eine gedrehte Ressource nimmt eine eigene Seite ein, bündig am Bund, deshalb ist die Auswahl der Spanne deaktiviert.
  - **Breite**: ein Breitenanteil mit einer Ausrichtung, für Gleitobjekte und eingebettete Elemente, die schmaler als ihre Spalte sind. Die Ausrichtung platziert auch eine Bitmap oder ein SVG, das bei voller Breite schmaler als sein Platz ist (eine Bitmap, die kleiner als die Spalte ist, oder eine Abbildung, die `layout.fitFiguresToPage` verkleinert hat); für Bilder bleibt sie deshalb aktiviert, für eine Tabelle braucht sie eine Breite unter 100 %. Eine gedrehte Ressource hat keines von beiden.
  - **Legende neben der Abbildung**: ein Schalter für die Nebenspalte eines Layouts mit anderthalb Spalten. Er gilt für Spalten-Gleitobjekte und ist deshalb ausgeblendet, wenn die Position `here` ist.
  - **Verkleinern zum Einpassen**: für ein gleitendes Bild *Nie*, *Auf neuer Seite* oder *An jedem Platz* (`placement.shrink`), mit **Kleinster Maßstab** (`placement.minScale`), sobald es verkleinert; und **Breite der Legende**, *Platz* oder *Bild* (`placement.captionMeasure`), für jedes nicht gedrehte Bild. Ressourcentypen bieten dieselben drei Felder in ihrer Standardplatzierung.
  - **An den Kopf der zitierenden Seite**: für ein oben oder automatisch platziertes Gleitobjekt über eine Spalte oder die ganze Seite, das nicht gedreht ist (`placement.citingPage`): Es darf den Kopf der Seite oder Spalte einnehmen, auf der die Zeile mit dem Verweis darauf landet, und der Text über dem Verweis rückt darunter. Ressourcentypen bieten denselben Schalter in ihrer Standardplatzierung.
  - **Textumfluss**: für eine im Text gesetzte Ressource oder ein einspaltiges Gleitobjekt *Keiner* oder die Seite der Spalte, an der es mit dem Text daneben steht (`placement.wrap`), und sein **Umflussabstand** (`placement.wrapGap`), sobald der Text es umfließt; eine umflossene Ressource ohne eigene Breite zeigt den Standardanteil des Layouts. Ressourcentypen bieten beides in ihrer Standardplatzierung.
- **Daten**: Upload-Felder, die die Bitmap- oder SVG-Datei ersetzen
- **Größe und Auflösung**: bei einer Bitmap ihre Pixel, die Auflösung, die ihre Datei angibt (*keine angegeben*, oder 72 und 96 als nicht gesetzt gelesen markiert), ihre natürliche Größe in mm bei der Auflösung, mit der sie gesetzt wird, und die ppi, mit denen sie dort gedruckt wird, wo das aktuelle Layout sie platziert (die niedrigsten, wenn sie mehrfach platziert ist). Unter dem Minimum der Druckvorstufenprüfung erscheint sie im Warnstil, unter dem kritischen Wert im kritischen Stil, bei einem für den Druck eingerichteten Buch mit **In Prüfungen öffnen**. **Auflösung** legt die eigene ppi des Bilds fest (`bitmap.resolution`; siehe [Dokumentformat › Bitmap-Größe](https://postext.dev/de/docs/document-format.md#bitmap-größe)), und **… ppi der Datei verwenden** übernimmt sie aus der Datei. Ein hochgeladenes Bild behält die Auflösung, die seine Datei angibt (`bitmap.fileResolution`).
- **Video**: bei einer Video-Ressource ([Dokumentformat › Videos](https://postext.dev/de/docs/document-format.md#videos)):
  - **Quelle**: *YouTube*, *Vimeo* oder *Datei*.
  - **Videoadresse** (YouTube, Vimeo): ein beliebiger Link auf das Video. Nennt er ein neues Video, werden Vorschaubild, Bildgröße und Titel von der Plattform abgerufen (der Titel wird zum Alternativtext, wenn dieser leer ist); **Vorschaubild erneut abrufen** wiederholt das. Ein Link, der kein Video der Plattform nennt, wird unter dem Feld markiert.
  - **Videodatei** (Datei): das Upload-Feld für eine MP4-, WebM-, Ogg- oder QuickTime-Datei, mit Format, Größe und Länge. Ein erstes Vorschaubild wird bei einem Zehntel der Laufzeit genommen. **Standbild** spielt die Datei ab: Halten Sie an dem Bild an, das gedruckt werden soll, oder spulen Sie dorthin, und drücken Sie **Dieses Bild als Vorschaubild verwenden**. **Produktionsadresse**: wo das veröffentlichte Video liegen wird (`https://…`), geöffnet vom QR-Code und vom PDF-Link; ohne sie erhält der Druck weder QR-Code noch Link.
  - **Videoadresse** (Datei, ohne hochgeladene Datei): Das Video wird allein über seine Adresse abgespielt, ein MP4 oder WebM auf einem Server oder ein HLS-Stream (`.m3u8`, über dem Feld als *HLS-Stream* markiert). Die Eingabe einer Adresse liest Größe und Länge des Videos, und **Standbild** spielt es von dort ab, HLS eingeschlossen. Ein Bild auszuwählen braucht einen Server, der ursprungsübergreifendes Lesen erlaubt (CORS); andernfalls sagt das Bedienfeld das, und das Vorschaubild wird stattdessen hochgeladen. QR-Code und PDF-Link öffnen diese Adresse.
  - **Vorschaubild**: das gedruckte Bild mit seiner Größe und ein Upload-Feld, um es durch ein eigenes Bild zu ersetzen.
  - **Start (s)** / **Ende (s)**: der Abschnitt, der abgespielt wird; 0 lässt Anfang oder Ende unverändert.
  - **Player**: die Schalter dieses Videos (Bedienelemente, Download-Schaltfläche, Vollbild, Geschwindigkeitsmenü, Bild im Bild, automatische Wiedergabe, stummer Start, Endlosschleife, Wiedergabe neben anderen Videos), jeder *Buch-Einstellung*, *Ja* oder *Nein*. Aufgeführt werden nur die Schalter, die der Player des Videos beachtet.
- **Sicherheitsbereich**: bei Bitmaps und SVGs der Teil des Bilds, der immer gezeigt wird (`Resource.safeArea`; siehe [Dokumentformat › Sicherheitsbereich](https://postext.dev/de/docs/document-format.md#sicherheitsbereich)). Das Feld zeigt ein Vorschaubild mit markiertem Bereich und dessen Größe in Prozent, oder *Keiner*, wenn das Bild keinen hat, mit den Schaltflächen **Sicherheitsbereich markieren** / **Sicherheitsbereich bearbeiten** und **Sicherheitsbereich entfernen**. Der Dialog zeigt das Bild: Ziehen Sie außerhalb des Rechtecks, um ein neues zu zeichnen, innerhalb, um es zu verschieben, oder an seinen Anfassern, um seine Größe zu ändern; ist das Rechteck fokussiert, verschieben es die Pfeiltasten, und Umschalt mit den Pfeiltasten ändert seine Größe. Die Felder *Links*, *Oben*, *Breite* und *Höhe* legen es in Prozent fest, und zwei Vorschauen zeigen den höchsten und den niedrigsten Zuschnitt, den der Bereich erlaubt.
- **Schriften in der Zeichnung**: bei SVG-Abbildungen die Schriftfamilien, die der Text der Zeichnung nennt (Familie, Schriftstärke, Stil), und was aus jeder wurde: *eingebettet* mit ihrer Größe, *im SVG deklariert* (die Datei bringt ihr eigenes `@font-face` mit), *keine Schriftdatei* (das Bild weicht auf eine andere Schrift aus) oder *über der Größengrenze*. Die Schriften kommen aus den eigenen Schriften des Buchs, dann aus Google Fonts, und werden nur eingebettet, wenn das Bild gezeigt oder exportiert wird, nie in der gespeicherten Datei. **Schriften des Buchs einbetten** schaltet das für diese Abbildung ab (`svg.inlineFonts: false`), für ein SVG, das seine eigenen Schriften mitbringt oder unverändert bleiben muss.
- **SVG-Quelltext**: bei SVG-Abbildungen ein Quelltexteditor unter dem Upload-Feld. Nur die Textknoten nehmen Änderungen an: der Inhalt der Elemente `<text>` und `<tspan>`, im Editor eingefärbt. Eingaben an anderer Stelle werden abgewiesen, und in einen Textknoten getippte Zeichen `<`, `>` und `&` werden maskiert, damit die Datei wohlgeformt bleibt. Jede Änderung wird nach einer kurzen Pause als **neue** gespeicherte Datei gesichert, und die Abbildung wird neu gerendert (einschließlich der Umfärbung in einer Farbe). Der Editor weist darauf hin, wenn das SVG keine Textknoten hat.
- **Vorschau**: ein laufend aktualisiertes Modell, wie die Ressource aussehen wird, mit `#` als Platzhalter für die Nummer (die tatsächlichen Nummern hängen davon ab, wo die Ressource im Dokument landet). Die Legende beginnt mit der Marke, die das Dokument setzt: dem Legendenpräfix des Typs und der Nummer (`Figure #.`), dem Präfix allein bei einem Typ, der mit einer leeren Vorlage nummeriert wird (`Do.`), und nichts bei einem Typ ohne Legendenpräfix
- **Löschen**: fragt zuerst nach und warnt, wie viele Verweise `::resource` und `:ref` im Text danach ins Leere zeigen würden

**Tabelleneditor.** Tabellen-Ressourcen öffnen einen interaktiven Rastereditor:

- **Werkzeugleiste**:
  - Zeilen und Spalten hinzufügen oder entfernen, Zellen verbinden oder teilen.
  - Eine Kopfzeile oder eine Kopfspalte ein- oder ausschalten.
  - Die waagerechte und senkrechte Ausrichtung jeder Zelle festlegen (oben, Mitte oder unten). Der Zellinhalt bewegt sich in einer höheren Zeile als Einheit.
  - Die Füllung jeder Zelle festlegen: eine Farbauswahl, mit der Palette verknüpfbar, mit einer Schaltfläche zum Entfernen. Die Füllung wird in `TableCell.background` geschrieben und im Raster gezeigt.
- **Spaltenbreiten**: eine Gewichtung je Spalte unter dem Raster (`2, 1, 1` gibt der ersten Spalte die halbe Breite; leer bedeutet gleiche Breiten), geschrieben in `table.model.columnWidths`. Beim Hinzufügen oder Entfernen einer Spalte bleiben die Gewichtungen zugeordnet, und ein Link *Gleiche Breiten* löscht sie.
- **Als Tabelle einfügen**: Das Einfügen von TSV (oder einfachem CSV mit Anführungszeichen) füllt das Raster
- **Rückgängig/Wiederholen**: Cmd/Strg+Z und Umschalt+Cmd/Strg+Z
- **Tastaturnavigation**: Tab / Umschalt-Tab (mit Zeilenumlauf) und die Pfeiltasten bewegen sich zwischen den Zellen
- **Aus der Vorschau per Klick bearbeiten**: Klicken Sie in einem der beiden Vorschau-Tabs auf eine Tabellenzelle, eine Legende, eine Anmerkung oder ein Textfragment einer SVG-Abbildung. Das Bedienfeld Ressourcen öffnet sich auf dieser Ressource und fokussiert das passende Feld, mit der Einfügemarke am angeklickten Zeichen. Ziehen wählt einen Bereich innerhalb derselben Zelle oder desselben Felds aus, ein Doppelklick das Wort. Solange das Feld den Fokus hat, wird seine Auswahl auf der Seite als Hervorhebung gespiegelt (als schmale Einfügemarke, wenn sie leer ist), in den Tabs Canvas und HTML.

Alle Änderungen laufen über reine Modellfunktionen, die der Postext-Kern exportiert (`addRow`, `addColumn`, `removeRow`, `removeColumn`, `mergeCells`, `unmergeCell`, `setCellContent`, `setAlignment` und `parseTSV`), sodass sich dasselbe Tabellenmodell innerhalb und außerhalb der Sandbox gleich verhält.

#### Bedienfeld Schriften

Zeigt die Schriften, die das Buch verwendet, und verwaltet Ihre eigenen Schriftdateien neben dem eingebauten Katalog von Google Fonts:

- **Schriften in diesem Buch** führt jede Schriftfamilie auf, die die Gestaltung verwendet. Jeder Familienname ist in seiner eigenen Schrift gesetzt, mit seiner Rolle (*Grundtext*, *Überschriften* oder *Andere Elemente*) und seiner Quelle: *Google Fonts*, *Fontsource* (eine Familie, die Google Fonts nicht hat), *Ihre Datei* oder *Nicht gefunden* für eine Familie, die keine Quelle hat. Die Quelle erscheint, sobald der Loader sie kennt. Die Schriften selbst ändern Sie unter **Gestaltung → Typografie** und **Überschriften & Inhalt**.
- **Die Dateien, mit denen ein Buch gemessen wird.** Eine Familie aus Google Fonts oder Fontsource wird aus den statischen Dateien von Fontsource auf jsDelivr gesetzt (`@fontsource/<family>@5`), eine je Schriftstärke, Stil und Teilmenge. Es sind die Dateien, die ein Pen des Rezeptbuchs lädt und die das PDF einbettet, sodass ein Buch seine Zeilen in den Vorschauen, in seinem PDF und in einem Pen bei denselben Wörtern umbricht. Die Kommandozeile setzt mit `bodyText.shapingLanguage: 'host'`, sodass eine Zeile dort an einem anderen Wort umbrechen kann (siehe [Unterschiede zur Sandbox](https://postext.dev/de/docs/command-line.md#unterschiede-zur-sandbox)). Die Vorschauen deklarieren die Schriftstärken und Stile, die Gestaltung und Seiten verwenden, und der Browser lädt jede Datei, wenn der Text sie braucht. Seit postext 1.30 warten die Vorschauen außerdem, bevor sie ein Kapitel zum ersten Mal zeichnen, auf jede Schrift, die seine gesetzten Seiten nennen, geladen für die Zeichen dieser Seiten (eine Familie, die je Schnitt in mehr als 16 Dateien zerlegt ist, eine chinesische oder japanische, lädt sie wie bisher). Von postext 1.28.3 bis 1.29.2 wurde eine Schrift, die nur die Seiten nennen und die in einer anderen als der lateinischen Schrift gesetzt ist (die Kursive der Zusammenfassungen eines arabischen Inhaltsverzeichnisses), in einer Ersatzschrift gezeichnet, bis ihre Datei eintraf. Eine Schriftstärke zwischen zwei Schnitten einer variablen Familie (eine 450) hat keine statische Datei: Die Vorschauen setzen sie aus der variablen Datei von Google in dieser Stärke, und das PDF bettet den nächstgelegenen Schnitt ein; wählen Sie also eine Stärke, die die Familie hat, wenn beide übereinstimmen müssen. Eine Familie, für die Fontsource keine Dateien hat, wird aus dem Stylesheet von Google genommen. Alle Dateien einer Familie stammen aus einer Version ihres Pakets, aus der, mit der jsDelivr ihr Stylesheet beantwortet hat: `@5` bezeichnet die Version, zu der die jeweilige Adresse aufgelöst wird, und nach einem Release, das eine Familie neu schneidet, könnten ihre Dateien sonst aus zwei Schnitten stammen.
- **Eine Datei, die langsam ist oder die das Netz nicht liefert.** Die Dateien der Schriften eines Buchs werden vor seinem ersten Layout abgerufen, und das Layout wartet auf sie, solange sie weiter eintreffen: Ein Buch mit mehreren hundert Dateien (ein chinesisches oder japanisches) wird bei langsamer Verbindung einmal gesetzt, mit allen. Die Anfragen werden erst aufgegeben, wenn 15 Sekunden lang keine Schriftdatei etwas empfangen hat; das Kapitel wird dann mit den eingetroffenen Schriften gesetzt, die übrigen in der Ersatzschrift, die seine Warnungen nennen. Ein solches Layout ist vorläufig: Seine Seitenzahlen werden weder mit dem Buch gespeichert noch in ein Paket geschrieben. Die Datei wird dreimal im Abstand von einer halben Minute erneut angefragt, und bei jedem späteren Layout; trifft sie ein, werden die Vorschauen und jedes Kapitel, das ohne sie gesetzt wurde, neu gesetzt, Inhaltsverzeichnis und Seitenverweise mit ihnen, und PDF und EPUB werden als veraltet markiert.
- **Eine Schriftstärke oder Neigung, die die Familie nicht hat.** Die Vorschauen und das PDF setzen jede Familie in ihren eigenen Dateien. Wo eine Familie keinen fetten (Bangers, Zen Antique und die meisten Displayschriften haben nur eine Stärke) oder keinen kursiven Schnitt hat, werden Fett und Kursiv in ihrem nächstgelegenen Schnitt gesetzt, wie er ist, ohne die kräftigeren oder schrägen Buchstaben, die ein Browser zeichnen würde, und es wird kein `fontFallback` für sie aufgeführt. Eine Stärke, die ein anderer echter Schnitt der Familie abdeckt (eine 600 aus der 700 gesetzt), wird aufgeführt. Eine Familie, die Fontsource führt, Google Fonts aber nicht, etwa Commit Mono, wird von Fontsource geladen.
- **Ihre Schriftdateien** ist der Ort, an dem Sie eigene Familien hinzufügen, umbenennen und löschen.
  - **Datei hochladen** je Schriftstärke (100–900) und Stil (normal / kursiv). Akzeptiert werden WOFF2, WOFF, TTF und OTF, erkannt an der Dateiendung. Die Dateien werden in der IndexedDB des Browsers gespeichert.
  - Eigene Familien erscheinen in jeder Schriftauswahl in einer Gruppe **Eigene** neben den Ergebnissen aus Google Fonts. Eine eigene Familie **hat Vorrang** vor einer Google-Schrift gleichen Namens.
  - In einem chinesischen Dokument führt jede Schriftauswahl zuerst, unter *Chinesisch (Kurzzeichen)* oder *Chinesisch (Langzeichen)*, die Google-Familien auf, die die Zeichen des Dokuments enthalten (die Teilmengen `chinese-simplified`, `chinese-traditional` und `chinese-hongkong` von Fontsource), dann die übrigen.
  - In einem Dokument auf Arabisch (oder in einer anderen Sprache in arabischer Schrift) führt jede Schriftauswahl zuerst, unter *Arabisch*, die Google-Familien mit der Teilmenge `arabic` von Fontsource auf, die Buchschriften zuerst (Amiri, Noto Naskh Arabic, Scheherazade New, Markazi Text, Lateef, dann Noto Kufi Arabic, Reem Kufi, Aref Ruqaa, El Messiri). Die Vorschauen laden die arabische Datei jeder Schrift vor dem ersten Layout, und das PDF bettet sie mit der lateinischen ein, wenn der Text beide verwendet.
  - Verwaiste Schriftdateien (hochgeladene Dateien, die keine Familie mehr verwendet) werden automatisch aus der IndexedDB entfernt.

#### Bedienfeld Gestaltung

Ein formularbasierter Editor für `PostextConfig` mit mehr als fünfhundert Feldern.

**Übersicht.** Beim Öffnen zeigt das Bedienfeld Gestaltung eine Übersicht:

- Eine Karte **Dieses Buch** mit einer laufend aktualisierten Zeichnung der Seite. Die Zeichnung ist maßstabsgetreu und zeigt die Ränder, die Spalten sowie Papier- und Druckfarbe, als Doppelseite, wenn die Ränder gespiegelt sind. Die Zeilen eines vertikalen Buchs sind von rechts beginnend senkrecht über die Seite gezeichnet, seine Spalten als Stufen. Daneben stehen Endformat, Spaltenaufteilung, Schriftsystem, Schrift und Schriftgrad des Fließtexts sowie die Palette. Die Zeile zum Schriftsystem nennt die Dokumentsprache und, wo eine Wahl besteht, Richtung und Bindung (*Vertikal · rechts gebunden · 中文（繁體）*, *Rechts nach links · rechts gebunden · العربية*); sie öffnet **Schriftsystem**.
- Die Liste der dreizehn **Einstellungsgruppen**. Jede Gruppe hat eine Beschreibung in einem Satz und die Zahl der Abschnitte, die Sie darin geändert haben.

**Eine Seite je Gruppe.** Das Öffnen einer Gruppe zeigt deren Abschnitte als eigene Seite. Nur diese Gruppe wird aufgebaut, was das Bedienfeld auch bei großen Büchern schnell hält.

- Eine Brotkrumennavigation (**Gestaltung › Gruppe**) führt zurück zur Übersicht.
- Chips unter der Seitenüberschrift springen zu den einzelnen Abschnitten der Seite.
- Ein Link **Weiter** unten öffnet die nächste Gruppe.
- Beim Öffnen einer Gruppe wandert der Fokus zur Seitenüberschrift und bei der Rückkehr zurück auf die Zeile der Gruppe.
- Die geöffnete Gruppe wird zwischen Sitzungen gespeichert.

Die Gruppen in der Reihenfolge des Durchblätterns:

- **Seite und Spalten**
  - *Seite*: Die Felder sind gruppiert als **Format**, **Ränder**, **Papier** und **Nummerierung**.
    - **Format**: Die Formatvorgaben sagen, wofür sie gedacht sind: *Taschenbuch* 11 × 17, *Roman, Erzählung* 12 × 19, *Essay, Handbuch* 17 × 24 und *Lehrbuch, Zeitschrift* 21 × 28; die Zeitungsformate *Nordisches Format* 37,5 × 59,7, *Berliner Format* 31,5 × 47, *Tabloid* 28 × 43 und *Compact* 29,7 × 42 (seit postext 1.18); oder *Eigenes*. **Layoutauflösung (px pro Zoll)** (`page.dpi`) steht ebenfalls hier: die Pixel, in denen das Layout rechnet, nicht die Auflösung der Bilder, wobei eine Bitmap ohne eigene Auflösung mit ebenso vielen ppi gedruckt wird.
    - **Ränder**: Jeder Rand ist mit der Seitenzeichnung verknüpft. Zeigen Sie auf ein Randfeld oder fokussieren Sie es, wird dieser Rand in der Zeichnung eingefärbt. Ein Schalter **Gespiegelte Ränder** macht aus linkem und rechtem Rand Bundsteg und Außensteg für gegenüberliegende Seiten.
    - **Papier**: die Hintergrundfarbe der Seite.
    - **Nummerierung**: das Format der Seitenzahlen und die Zahl, mit der die Seiten beginnen.
  - *Spalten*: Das Layout wird auf Bildkarten gewählt: *Eine Spalte* (Romane, Essays), *Zwei Spalten* (Lehrbücher, Zeitschriften, Nachschlagewerke), *Anderthalb Spalten* (eine Hauptspalte und eine schmale Nebenspalte für Anmerkungen und kleine Abbildungen) oder *Mehrere Spalten* (drei bis acht gleiche Spalten für Zeitungen und Zeitschriften, mit einer Anzahl **Spalten**; seit postext 1.18). Der Abschnitt enthält außerdem den Spaltenabstand, die Nebenspalte, **Zu große Abbildungen verkleinern** (`layout.fitFiguresToPage`), **Bitmap-Auflösung** (`layout.bitmapResolution`: *Seiten-dpi*, *Aus Datei*, das auch die Auflösung zuvor hochgeladener Bilder liest, oder *Fest* mit ihrer ppi), **Gleitende Bilder verkleinern** mit **Kleinster Maßstab** (`layout.floatShrink`), **Gleitobjekte an den Kopf der verweisenden Seite** (`layout.floatsAtCitingPage`) mit **Größtes Gleitobjekt am Kopf der verweisenden Seite** (`layout.maxTopFraction`), **Gleitobjekte unter seitenbreiter Überschrift ab der ersten Spalte** (`layout.floatsUnderOpener`, seit postext 1.25 standardmäßig an: Ein Gleitobjekt, das direkt nach einer über mehrere Spalten gesetzten Überschrift steht, nimmt den Kopf der ersten ein), **Abstand um Abbildungen im Text** (`layout.inlineResourceGap`), **Abstand um Abbildungen in Kästen** (`layout.inlineResourceGapInBoxes`), **Absatzzeilen an einem Kastenschnitt** (`layout.boxChildSplitMinLines`), **Spalten im Text und teilbare Gruppen** (`layout.flowColumns`, seit postext 1.25 standardmäßig an: Eine Gruppe `:::columns` außerhalb eines Kastens setzt ihre Blöcke in Spalten, und eine Gruppe, die nicht passt, läuft in der nächsten Spalte oder auf der nächsten Seite weiter) und **Abschließende Gleitobjekte an den Text** (`layout.hugClosingFloats`).
  - *Textumfluss*: **Umflussabstand**, **Schmalster Text daneben**, **Wenigste Zeilen daneben** und **Umflossene Breite** (`layout.wrap`), die Standardwerte der Bilder und Kästen, neben denen der Text läuft.
- **Schriftsystem**. Die Seite beginnt mit der Zeichnung aus Seite und Spalten. Ihre Doppelseite trägt Seitenzahlen: 2 | 3 in einem links gebundenen Buch, 3 | 2 in einem rechts gebundenen, dessen ungerade Seite die linke ist; die Legende sagt, wann das Buch rechts gebunden ist und wann seine Zeilen vertikal laufen.
  - *Sprache und Richtung*:
    - **Dokumentsprache**, mit Chinesisch als 中文（简体）, 中文（繁體） und 中文（香港） und Arabisch als العربية, العربية (مصر) und العربية (المغرب) (die Region legt regionale Standardwerte wie die Ziffern fest). Ein Sprachkennzeichen, das die Liste nicht hat (`es-ES`, `zh-TW`, `sv`), erscheint als zusätzliche Option, benannt nach der Sprache, als die es gelesen wird. Eine Änderung benennt die eingebauten Abbildungs- und Tabellentypen um, wenn sie noch die der vorherigen Sprache sind (ein spanisches Buch, auf Chinesisch umgestellt, druckt 图 und 表, nicht *Figura* und *Tabla*); Typen, die Sie umbenannt haben, behalten ihre Namen.
    - **Textrichtung**: *Automatisch*, das nennt, wozu es aufgelöst wird (rechts nach links für Arabisch), *Links nach rechts* oder *Rechts nach links* (`direction`).
    - **Schreibrichtung**, auf Bildkarten: *Horizontal* oder *Vertikal*, mit Zeilen von oben nach unten und von rechts nach links (`layout.writingMode`).
    - **Bindung**: *Automatisch*, das nennt, wozu es aufgelöst wird (der rechte Rand für ein vertikales oder von rechts nach links laufendes Buch und für einen von rechts nach links gelesenen Comic), *Linke Kante* oder *Rechte Kante* (`page.binding`).
    - **Ziffern**: *Automatisch*, das die Ziffern der Sprache nennt (٠ ١ ٢ ٣ für Arabisch, 0 1 2 3 für das Arabisch des Maghreb und jede andere Sprache), *Europäisch*, *Arabisch-indisch* oder *Persisch* (`numerals`).
    - **Chinesische Standards**: **Prüfen…** listet auf, was die Einrichtung des Buchs für Chinesisch ändert. Wählen Sie *Vereinfacht 简体* oder *Traditionell 繁體* und die Richtung: Ein neues traditionelles Buch beginnt vertikal, ein neues vereinfachtes horizontal, und ein Buch, das schon chinesisch ist, behält seine Richtung. Jede Zeile zeigt die Einstellung, wie sie ist und wie sie wird: die Dokumentsprache (ein chinesisches Kennzeichen derselben Schrift, etwa `zh-TW`, bleibt), die Schreibrichtung mit der Bindung, die sich daraus ergibt, Noto Serif und Noto Sans in SC, TC oder HK für Fließtext und Überschriften (die Zeile der Überschriften nennt auch die Schriften, die Überschriftenebenen und Überschriftenformate für sich selbst festlegen, und setzt diese angehakt ebenfalls in der chinesischen Schrift), ein Erstzeileneinzug von 2 em, Einzug nach Überschriften, kein Abstand zwischen Absätzen, Blocksatz, keine Silbentrennung, 图 oder 圖 und 表 je Kapitel nummeriert (`{h1}-{n}`), Legenden als 图1-1　标题 gesetzt (nichts vor der Nummer, ein ideografisches Leerzeichen danach), Kapitel als 第一章 nummeriert (`第{1:一}章`, ein ideografisches Leerzeichen vor dem Titel) und nummerierte Listen 一、 （一） 1. （1） ①. Aufgeführt wird nur, was sich unterscheidet. Eine Einstellung, die Sie selbst geändert haben, erscheint nicht angehakt, als *Ihre Einstellung* markiert, und bleibt, wie sie ist, sofern Sie sie nicht anhaken; Sprache und Richtung gelten immer, ebenso die Silbentrennung, die ein chinesisches Dokument von sich aus abschaltet (es sei denn, Sie haben sie für eine lateinisch geschriebene Sprache eingeschaltet, die Sie als Trennsprache angegeben haben). **Änderungen anwenden** führt die angehakten Änderungen in einem Schritt aus, und **Rückgängig** neben der Bestätigung nimmt diesen Schritt im selben Buch zurück: Jede Einstellung, die er geändert hat, kehrt zu ihrem vorherigen Wert zurück, auch wenn Sie seither andere Einstellungen derselben Gruppe geändert haben; eine, die Sie seither erneut geändert haben, bleibt, wie Sie sie hinterlassen haben, und die Bestätigung sagt das. Das Öffnen eines anderen Buchs verwirft das Rückgängig.
    - **Arabische Standards** (in einem Dokument auf Arabisch): **Prüfen…** listet auf, was die Einrichtung des Buchs für Arabisch ändert. Wählen Sie die Schriften: *Klassisch (Amiri)*, Amiri für Fließtext und Überschriften, oder *Modern (Noto Naskh)*, Noto Naskh Arabic mit Überschriften in Noto Kufi Arabic. Die Zeilen: die Richtung zurück auf *Automatisch*, wenn das Buch von links nach rechts eingestellt war (immer übernommen), die Bindung zurück auf *Automatisch* (der rechte Rand), die beiden Schriften, die Schrift der Gestaltungstexte (Kolumnentitel, Pagina, Gestaltung von Kapitelauftakten und Überschriften), sofern sie in einer Schrift ohne arabische Buchstaben gesetzt ist, auf die Überschriftenschrift umgestellt, damit das PDF keine leeren Kästchen druckt, ein Zeilenabstand von 1,75 em, Blocksatz, keine Silbentrennung, die Ziffern der Region, wenn das Buch andere nennt, شكل und جدول je Kapitel nummeriert, Legenden als شكل ١-١: العنوان gesetzt, Kapitel als الفصل الأول nummeriert (`الفصل {1:ordinal}`, ein Doppelpunkt vor dem Titel), nummerierte Listen ١- أ- (١) und Fußnoten auf jeder Seite neu nummeriert, alles in den Ziffern des Dokuments. Häkchen, *Ihre Einstellung*, **Änderungen anwenden** und **Rückgängig** funktionieren wie in der chinesischen Liste.
    - **Japanische Standards** (in einem Dokument auf Japanisch): **Prüfen…** listet auf, was die Einrichtung des Buchs für Japanisch ändert. Wählen Sie die Art des Buchs: *Vertikal 縦組*, ein rechts gebundener Bunko- oder Tankōbon-Roman auf einem Zeichenraster, oder *Horizontal 横組*, ein links gebundenes Fachbuch. Die Zeilen: Dokumentsprache und Schreibrichtung (immer übernommen), die Bindung zurück auf *Automatisch*, Noto Serif JP und Noto Sans JP für Fließtext und Überschriften (und für Gestaltungstexte, die in einer Schrift ohne Kana gesetzt sind), ein Zeilenabstand von 1,75 em, das Zeichenraster, das eine vertikale Seite bei dieser Größe fasst (höchstens 52 Zeichen), ein Einzug von einem Geviert ohne zusätzlichen Abstand zwischen Absätzen, Blocksatz ohne Silbentrennung, die chinesischen typografischen Einstellungen zurück auf *Automatisch*, damit die japanischen gelten, 図 und 表 mit Legenden als 図1-1　… gesetzt, Kapitel als 第一章 (vertikal) oder 第1章 (horizontal) nummeriert, Überschriften über drei und zwei Zeilen (行取り) mit ihren Einzügen, japanische Listennummern, chinesische Einstellungen für Anmerkungen zurück auf *Automatisch* und Seitenzahlen in Kanji, wenn eine vertikale Pagina am Außensteg steht. **Änderungen anwenden** und **Rückgängig** funktionieren wie bei Chinesisch. In einem japanischen Buch ergänzt die Werkzeugleiste des Editors **Ruby** und **Quer in senkrechtem Text**. Siehe [Japanischer Satz](https://postext.dev/de/docs/japanese-layout.md#in-der-sandbox-und-im-rezeptbuch).
  - *Ostasiatische Typografie* (`cjk`): oben **Regionale Konventionen** (Festlandchina, Taiwan, Hongkong, Japan), dann die Felder in neun Gruppen: **Zeilenränder** (**Zeilenumbruch**: keiner, einfach, GB, streng, japanisch sehr streng, japanisch streng, japanisch locker; **Umbruch zwischen Zeichen**; **Buchtitel: Zeichen am Umbruch**, `cjk.titleMinChars`; **Eingekreiste Zahlen**: als chinesische Zeichen oder als lateinische Buchstaben; **CJK-Regeln im Gestaltungstext**; **Klammern am Zeilenrand kürzen**; **Klammer am Absatzbeginn**: ①, ③ oder bündig; **Hängende Satzzeichen**), **Satzzeichenbreiten** (**Satzzeichenbreite**: Kaiming, volle Breite, halb am Zeilenende, halbe Breite; **Benachbarte Zeichen stauchen**), **Abstände** (**Abstand zwischen Han und Latein**; **Abstand nach ？ und ！**), **Vertikaler Text** (**Zahlen in einer aufrechten Zelle**: aus, oder bis zu 2, 3 oder 4 Ziffern, `cjk.uprightDigits`), **Annotationen** (**Hervorhebung in chinesischem und japanischem Text**: was `*…*` druckt, Betonungszeichen oder Kursive; **Betonungszeichen**, **Füllung** und **Seite der Zeichen**; **Buchtitel (:book)**: Klammern, eine Wellenlinie oder nichts, und deren **Klammern**, 《》 〈〉 oder 『』 「」; **Zeichenfarbe**), **Ruby** (Schrift, Größe, Farbe und Position der Lesungen, **Überhang der Lesung**, **Ausrichtung der Lesung** und **Kleine Kana in Lesungen**), **Warichu-Anmerkungen** (Größe, Farbe sowie öffnende und schließende Klammern der Anmerkungen), **Kanbun-Zeichen** (ihre Größe, Farbe und wohin die Rückkehrzeichen kommen) und **Zeichenraster** (Zeichen je Zeile, Zeilen je Seite, das auf dem Bildschirm gezeichnete Raster und die Anzeige 字 × 行 mit den Rändern, die das Raster festlegt). Jedes *Automatisch* folgt der Dokumentsprache und nennt, wozu es aufgelöst wird. In einem Dokument, dessen Sprache weder Chinesisch, Japanisch noch Koreanisch ist und das keine dieser Einstellungen festlegt, zeigt der Abschnitt eine Zeile, die das sagt, und eine Schaltfläche **Einstellungen anzeigen**; eine Suche zeigt die Felder in jedem Dokument. [Chinesischer Satz](https://postext.dev/de/docs/chinese-layout.md) und [Japanischer Satz](https://postext.dev/de/docs/japanese-layout.md) erklären, was diese Einstellungen bewirken; die Schlüssel stehen unter [Ostasiatische Typografie](https://postext.dev/de/docs/configuration-east-asian.md#ostasiatische-typografie), [Vertikale Schrift](https://postext.dev/de/docs/configuration-page-layout.md#vertikale-schrift), [Zahlen im vertikalen Text](https://postext.dev/de/docs/configuration-east-asian.md#zahlen-im-vertikalen-text) und [Bindung](https://postext.dev/de/docs/configuration-page-layout.md#bindung).
- **Farben**
  - *Palette*: benannte Farben, die jede Farbauswahl wiederverwendet. Ändern Sie einen Eintrag, werden alle Verweise darauf aktualisiert.
  - *Kontrast* (`contrast`): **Kontrast prüfen**, die **Stufe** (AA oder AAA), **Geprüft für** (*Automatisch*, *Bildschirm*, *Druck*, *Bildschirm und Druck*) und unter **Negativer Text** die Größen, unter denen heller Text auf bedrucktem Grund gemeldet wird. Änderungen daran setzen keine Seite neu. Siehe [Kontrastprüfung](https://postext.dev/de/docs/configuration-fonts-colors-viewers.md#kontrastprüfung-konfiguration).
  - *Das Kontrastverhältnis neben einer Farbe*: Ein Farbfeld, dessen Farbe die Seiten als Text oder als Grund von Text setzen, zeigt das niedrigste Kontrastverhältnis, das es dort hat, mit einem Häkchen, wenn es die Stufe erreicht, und einem Warnzeichen, wenn nicht. Das Öffnen des Felds listet jede Farbe auf, mit der es gesetzt ist (*Text auf #ffffff*, *Grund für Text in #1a1a1a*), die kleinste Größe und das Verhältnis auf dem Bildschirm und, bei einem für den Druck eingerichteten Buch, auf Papier. Die Zahlen folgen der Farbauswahl schon beim Ziehen, bevor die Seite neu gesetzt wird. Eine Farbe, die nur für Linien oder Rahmen verwendet wird, zeigt kein Verhältnis.
- **Typografie**
  - *Grundtext*: beginnt mit einem **Schriftmuster** in Originalgröße, gesetzt in der aktuellen Schrift, Größe, Zeilenabstand und Farbe, in der Sprache des Dokuments: Ein chinesisches Buch zeigt den Anfang von 紅樓夢 in seiner Schrift, `*…*` mit Betonungspunkten, und setzt ihn von oben nach unten, wenn seine Zeilen vertikal laufen. Seine Zeilenumbrüche sind die des Browsers; die Seite verwendet die von Postext. Die Felder sind gruppiert als:
    - **Schrift**: Schriftart, Größe, Zeilenhöhe sowie normale und fette Schriftstärke.
    - **Absätze**: Ausrichtung (bei Blocksatz mit Silbentrennung, den Grenzen des Blocksatzes und **Max. Sperrung für Blocksatz** (`bodyText.maxJustifyTracking`), bei Flattersatz mit **Flattersatz trennen** und seiner Zone, **Optimaler Zeilenumbruch** und **Optimaler Flattersatz** (`bodyText.optimalRagged`); unter einem Fließtext in Blocksatz folgt **Optimaler Flattersatz** auf **Optimaler Zeilenumbruch**, für die Absatzformate und Kästen im Flattersatz; **Trennung über Spalten** (`bodyText.hyphenateAcrossColumns`) unter der Silbentrennung, wenn der Fließtext im Blocksatz steht, und unter **Optimaler Flattersatz**, solange dieser an ist, wenn der Fließtext im Flattersatz steht; **Komposita trennen** (`bodyText.hyphenation.compounds`) mit der Trennsprache), **Umbruch nach Strichen** (`bodyText.breakAfterDashes`), **Umbruch nach Bindestrichen** (`bodyText.breakAfterHyphens`), **Bindestrich in Folgezeile wiederholen** (`bodyText.repeatHyphen`), **Erzwungene Zeilenumbrüche** (`bodyText.hardLineBreaks`), **Tabstopps** (`bodyText.tabStops`: eine Liste von Tabstopps, jeder mit Position, Ausrichtung, Füllzeichen, Abstand des Füllzeichens und Dezimalzeichen) mit **Standard-Tabintervall** (`bodyText.tabInterval`), Einzüge und Absatzabstände.
    - **Farbe**: die Farben für Text, Fett und Kursiv.
    - **Sprache**: die Dokumentsprache, in ihrer eigenen Sprache benannt. Sie wird unter **Schriftsystem** festgelegt; die Zeile öffnet diese Gruppe.
    - **Witwen, Waisen und kurze Zeilen** (aufklappbar): enthält **Gestufter Strafwert** (`bodyText.gradedRuntPenalty`), **Enger setzen gegen kurze Ausgangszeile** (`bodyText.tightenRunts`), **Stärkste Laufweitenverringerung** (`bodyText.maxRuntTracking`) und **Doppelpunkt bei Liste halten** mit **Platz unter dem Doppelpunkt** (`bodyText.colonListRoom`): wie viel Platz die auf einen Doppelpunkt endende Zeile unter sich braucht, um bei ihrer Liste zu bleiben, was der erste Eintrag braucht oder, wie bis postext 1.4, eine Zeile.
    - **Blockzitate** (aufklappbar): die Farbe der Zitate mit `>`, **Blockzitate kursiv**, **Einzug der Blockzitate** und **Erstzeileneinzug der Blockzitate** (`bodyText.blockquote`).
    - **Verse** (aufklappbar): **Gedichte ohne Trennzeichen** (*Zeile für Zeile* oder *Als Halbverse (1.22)*), **Einzug je Leerzeichen**, **Überlauf** (*Hängend* oder *Rechtsbündig*) mit **Überlaufeinzug** oder **Überlaufzeichen**, **Strophenabstand**, **Kurze Strophen zusammenhalten** und **Vor dem Überlauf verengen** (`bodyText.verse`, die Standardwerte von Gedichten in `:::verse`, die Zeile für Zeile gesetzt werden).
    - **Querverweise** (aufklappbar).
  - *Absatzformate* (`paragraphStyles`): benannte Formate für Container `:::paragraphs{style="…"}`. Sie können IDs hinzufügen, entfernen und umbenennen und dann festlegen: Schriftart, Größe, Zeilenhöhe, Farbe, die Farben fetter und kursiver Passagen, normale und fette Schriftstärke, Schalter für **Kursiv** und **Kapitälchen**, Ausrichtung, Silbentrennung, den linken Einzug jeder Zeile, Erstzeilen- und hängenden Einzug (gemessen vom linken Einzug), Abstand zwischen Absätzen, Ränder, **Aufs Raster** (`paragraphStyles[].snapToGrid`), **Schreibung** (`textTransform`, Versalien), **Zeilennummern** (`paragraphStyles[].lineNumbers`: *Wie das Dokument*, *Gezählt* oder *Nicht gezählt*), **Tabstopps** mit **Standard-Tabintervall** (`paragraphStyles[].tabStops`, `tabInterval`), festgelegt wie im Fließtext, und **Initiale** (`paragraphStyles[].dropCap`): die Zeilen, über die sie reicht und um die sie absinkt, die groß gesetzten Buchstaben, ihre Schrift, Stärke, Kursive, Größe, Farbe und ihr Abstand, das **Öffnende Zeichen** (*Mit der Initiale*, *Außen hängend*, *In der ersten Zeile*), der **Auftakt** (keiner, eine Anzahl Wörter oder die erste Zeile, in Kapitälchen oder Versalien), was ein **Kurzer Absatz** tut (*Raum freihalten*, *Initiale verkleinern*, *Keine Initiale*) und **Jeder Absatz** für einen Katalog von Einträgen (siehe [Initialen](https://postext.dev/de/docs/configuration-text.md#initialen)). Nicht gesetzte Felder erben vom Fließtext. Über den Formaten legt **Abstand unter einem Container** (`bodyText.paragraphContainerSpacing`) fest, wie der Abstand unter einem Container auf den folgenden Block trifft: *Zusammenfassen* oder *Addieren (1.4)*.
  - *Inline-Etiketten* (`chipStyles`): benannte Stile für das Inline-Element `:chip[text]{style="…"}`. Der eingebaute Stil `chip` wird gezeigt, solange die Konfiguration keinen hat. Sie können IDs hinzufügen, entfernen und umbenennen und dann festlegen:
    - **Text**: Schriftart, Größe, Farbe, fett und kursiv. Jedes erbt vom umgebenden Text, bis Sie es festlegen.
    - **Kasten**: Füllung, Breite und Farbe der Kontur, Eckenradius, waagerechter und senkrechter Innenabstand (mit **Innenabstand oben** und **Innenabstand unten**, um sie getrennt festzulegen, was eine Versalie in einem runden Chip zentriert) und der Mindestabstand zu den benachbarten Wörtern.
  - *Code* (`codeStyle`): **Codeblöcke** und **Eingerückter Code** (wie Listings gelesen werden); die **Codeschrift**, Größe, Zeilenabstand, **Am Raster ausrichten**, Farbe und **Tabbreite**; der **Kasten** (Seitenbreite, Hintergrund, Rahmen, Eckenradius, Innenabstand, Abstand darüber und darunter); **Lange Zeilen** (**Zeile breiter als der Kasten**: *Umbrechen*, *Verkleinern* mit **Kleinster Grad** oder *Abschneiden*; der **Einzug der Folgezeile** und das **Umbruchzeichen**); **Nummern und hervorgehobene Zeilen** (**Zeilen nummerieren**, die Farbe der Nummern und der Platz danach, der Farbton der Zeilen, die ein Codeblock hervorhebt); die Teilung **Über Spalten und Seiten** (zusammenhalten, Zeilen auf jeder Seite, Titel wiederholen, Fortsetzungsvermerk); **Syntaxfarben** (*Integriert* oder *Keine*, und eine Farbe und ein Stil je Art von Token, Palettenfarben eingeschlossen); und **Code im Fließtext** in einer Code-Schrift mit seiner Füllung. Siehe [Code-Listings](https://postext.dev/de/docs/configuration-styles.md#code-listings).
  - *Formeln* (`math`), mit **Einzug nach abgesetzter Formel** (`math.indentAfterDisplay`) und **Mit Einleitungszeile zusammenhalten** (`math.keepWithLeadIn`).
  - *Fußnoten* (`footnotes`): **Platzierung** (Spaltenfuß oder Kapitelende), **Position in der Spalte** am Kapitelende, **Nummerierung** (je Kapitel oder durchgehend), Größe, Zeilenabstand, Farbe, Ausrichtung und hängender Einzug der Fußnoten, die Abstände darüber und zwischen den Fußnoten und den **Trennstrich** (Länge, Stärke, Farbe). Siehe [Fußnoten](https://postext.dev/de/docs/configuration-notes-references.md#fußnoten).
  - *Zeilennummern* (`lineNumbers`): **Zeilen nummerieren**, **Zählen** (*Verse* oder *Jede Zeile*), **Alle** (das Intervall), **Erste Zeile nummerieren**, **Neu beginnen** (nie, oder bei jedem Kapitel, Abschnitt, jeder Seite oder jedem Gedicht) mit **Erste Nummer**, **Position** (Außen- oder Bundsteg, links, rechts, Zeilenanfang, Zeilenende, Nebenspalte), **Bei Spalten** (Außenkanten, in den Spaltenabständen, neben jeder Spalte), **Abstand zum Text**, **Ausrichtung** sowie Schrift, Größe, Stärke, Kursive, Farbe und **Zahlenformat** der Nummern. Siehe [Zeilennummern](https://postext.dev/de/docs/configuration-notes-references.md#zeilennummern).
- **Überschriften & Inhalt**
  - *Überschriften*: allgemeine Standardwerte und Einstellungen je Ebene H1–H6. Dazu gehören:
    - Schreibung, **Laufweite** (`levels[].letterSpacing`, negativ zum Engersetzen), Ausrichtung (Flattersatz rechts, Blocksatz, zentriert oder Flattersatz links), Umbruch davor mit Seitenparität und Spanne;
    - ein Schalter **Nach Überschriften aufs Raster zurück** (`headings.snapToGrid`, standardmäßig an: Der Text rastet unter einer Überschrift wieder auf dem Grundlinienraster ein) und je Ebene **Nach dieser Überschrift aufs Raster zurück** (`levels[].snapToGrid`), das ihn für diese Ebene übersteuert;
    - ein Schalter **Auszeichnungen in Überschriften** (`headings.inlineMarks`, standardmäßig an): Eine Überschrift setzt die darin geschriebenen Kursiven, Fettungen, Hoch- und Tiefstellungen, Kapitälchen und Links wie ein Absatz; ausgeschaltet druckt sie die ausgezeichneten Wörter in ihrem eigenen Stil;
    - je Ebene **Verborgen (strukturell)** (`levels[].hidden`): Die Überschrift druckt nichts und nimmt keinen Platz ein, bricht aber weiterhin um, nummeriert und speist Inhaltsverzeichnis, Kolumnentitel und PDF-Lesezeichen;
    - je Ebene **Initiale nach der Überschrift** (`levels[].dropCap`): Der erste Absatz nach einer Überschrift der Ebene beginnt mit einer Initiale, mit denselben Feldern wie bei einem Absatzformat;
    - ein erweiterter Editor für Gestaltungsplätze je Ebene mit einer Mindesthöhe des Auftakts; jedes Element einer Überschriftengestaltung hat einen Schalter **Reserviert Platz** (aus: Es wird gezeichnet, ohne die Höhe zu vergrößern, die die Überschrift reserviert);
    - die Hebel des Spaltenausgleichs mit ihren Obergrenzen je Hebel und **Kasten am Spaltenende** (`balancing.closingBox`): wann ein Kasten, der eine kurze Spalte beendet, an den Fuß der Spalte rückt – zuerst, nach den anderen Hebeln oder nie.
  - *Überschriftenstile* (`headingStyles`): benannte Formate, die mit `{style="…"}` auf einer Überschriftenzeile angewendet werden. Sie können IDs hinzufügen, entfernen und umbenennen und für jedes Format:
    - festlegen, ob die Überschrift nummeriert und im Inhaltsverzeichnis aufgeführt wird, und ihr eine eigene Nummerierungsvorlage geben;
    - **In Kolumnentiteln genannt** (`runningChapter`) ausschalten, für eine Tafel oder eine Karte, die als H1 innerhalb eines Kapitels gesetzt ist, damit die Kolumnentitel weiter das Kapitel nennen, das sie unterbricht;
    - die Typografie der Überschrift (Sperrung eingeschlossen), Umbruch und Spanne, **Nach dieser Überschrift aufs Raster zurück** und **Verborgen (strukturell)** übersteuern und die **Initiale nach der Überschrift** wählen: *Wie die Ebene*, *Eigene* (ihre Felder wie bei einem Absatzformat) oder *Keine*;
    - dem Abschnitt eigene Kolumnentitel geben, wahlweise ausgehend von denen des Dokuments;
    - seine Ränder und seine Spaltenaufteilung festlegen (mit Rolle und Kante der Nebenspalte wie unter *Spalten* und einem eigenen *Zu große Abbildungen verkleinern*);
    - das Fließtextformat, Listen-Übersteuerungen und Palettenfarben festlegen.
  - *Inhaltsverzeichnis* (`toc`): die Überschriftenebenen, die ein `:::toc` aufführt, jeweils mit der Typografie ihrer Einträge. Es umfasst auch die nicht nummerierten Einträge, Seitenzahlen, Füllpunkte, die aus einem Überschriftenattribut gelesene Untertitelzeile und die Zeilen der Teile mit ihrem eigenen Gestaltungsplatz.
- **Listen**
  - *Aufzählungen*, mit **Oben aufs Raster** (`unorderedLists.snapTopToGrid`), das den Abstand über einer Liste aufrundet, damit ihr erster Eintrag auf dem Grundlinienraster steht.
  - *Nummerierte Listen*: für jede Ebene Schriftart, Stärke, Kursive, Farbe und Abstand des Trennzeichens neben der Nummerierung; **Oben aufs Raster** (`orderedLists.snapTopToGrid`), wie bei Aufzählungen; und **Nummernspalte** (`orderedLists.numberWidth`): wo der Text eines Eintrags beginnt, nach der breitesten Nummer seiner eigenen Folge (*Je Folge*) oder seiner Ebene im Kapitel (*Je Ebene*) oder nach der eigenen Nummer des Eintrags (*Je Punkt*), sodass jeder Text seiner Marke im festgelegten Abstand folgt. **Ausrichtung der Nummer** (`orderedLists.numberAlign`) setzt die Nummern zum Text hin, gemeinsam endend (*Zum Text hin*), oder an den Anfang ihrer Spalte, gemeinsam beginnend (*Am Anfang*).
- **Abbildungen & Tabellen**
  - *Nummerierung und Platzierung* (`resourceTypes`): für jeden Ressourcentyp:
    - Namen und Kurzbezeichnungen;
    - Nummerierungsvorlagen mit den Platzhaltern `{n}` und `{h1}`…`{h6}`, das Zahlenformat und die Rücksetzebene des Zählers sowie das Legendenpräfix, mit einer laufend aktualisierten Vorschau im Stil von „Fig. 1.7“;
    - eine Gruppe **Platzierung**: die Standardposition des Typs, Spanne (Spalte, Seite oder die Nebenspalte), **Spalten** (wie viele benachbarte Spalten ein Spalten-Gleitobjekt des Typs auf einer mehrspaltigen Seite einnimmt; so viele, wie die Seite hat, machen es seitenbreit) und Drehung, ein Breitenanteil, eine Ausrichtung für Ressourcen, die schmaler als ihr Platz sind (Gleitobjekte und eingebettete Elemente, die durch die Breite verschmälert sind, und Bilder, die schmaler als die Spalte sind), und ein Schalter für die Legende neben der Abbildung;
    - eine aufklappbare **Abweichender Legendenstil**, die nur die Legendenfelder ersetzt, die Sie für diesen Typ festlegen (Position, Balken, Farben, Schrift), und den Rest erbt.
  - *Legenden* (`captionStyle`): Schrift, Größe, Ausrichtung und **Position** über oder unter der Ressource. Es gibt einen optionalen **Hintergrundbalken** mit Farbe und Innenabstand, und Marke und Beschreibung werden unabhängig voneinander gestaltet. Eine Gruppe **Anmerkung** legt Größe, Farbe, Neigung, Ausrichtung und Abstand der Anmerkung zur Ressource fest.
  - *Tabellen* (`tableStyle`):
    - Typografie von Tabellenkörper und Kopf, mit **Laufweite** (`headerLetterSpacing`) und **Schreibung** (`headerTextTransform`) des Kopfs, und Füllungen;
    - Rahmen, mit einem Muster der **Linien**: volles Raster, nur waagerecht, äußerer Rahmen, keine oder **Booktabs** (eine kräftige Linie über und unter der Tabelle, eine feine unter dem Kopf, gekürzte Linien unter übergreifenden Kopfzellen). Booktabs zeigt seine Linienstärken, die Linien unter übergreifenden Kopfzellen und deren Kürzung, **Gruppenlinien** und unter *Tabellen über Seitenhöhe* die Linie unter einem Teil, der umseitig weitergeht, und blendet Rahmenbreite und Eckenradius aus;
    - ein **Eckenradius** für den äußeren Rahmen;
    - Zellinnenabstand;
    - unter *Tabellen über Seitenhöhe* **Wenn eine Tabelle nicht passt** (`overflow`) und **Auch für Tabellen im Text** (`splitInline`, seit postext 1.25 standardmäßig an: Eine mit `here` platzierte Tabelle, die nicht in den Rest ihrer Spalte passt, wird zwischen Zeilen geteilt und läuft in der nächsten Spalte weiter);
    - unter *Tabellenzellen* **Zebrastreifen** (`bodyAlternateBackgroundEnabled`), das jede zweite Zeile des Tabellenkörpers mit der **Farbe der Wechselzeilen** (`bodyAlternateBackground`) füllt, die erscheint, solange der Schalter an ist.
  - *Tabellenstile* (`tableStyles`): benannte Tabellenstile. Sie können IDs hinzufügen, entfernen und umbenennen (beim Umbenennen werden die Tabellen mitgenommen, die die ID verwenden) und dann jedes Feld aus *Tabellen* festlegen. Jedes Bedienelement zeigt den von *Tabellen* geerbten Wert, bis Sie es festlegen.
  - *Diagramme* (`diagramStyle`): ein Schalter **Einfarbige Diagramme**, der SVG-Diagramme für den einfarbigen Druck in Tonwerte einer Druckfarbe umfärbt, dazu eine Auswahl der Druckfarbe, die standardmäßig die Hauptfarbe der Palette ist, und **Schriften in SVG-Text einbetten** (`inlineFonts`, standardmäßig an), das den Text jedes SVG in den Schriften des Buchs setzt (siehe [Konfiguration › Schriften in SVG-Text](https://postext.dev/de/docs/configuration-resources.md#schriften-in-svg-text)).
  - *Videostil* (`videoStyle`): das **Wiedergabezeichen** (Form, Position, Größe, Abstand vom Rand, Farben und Deckkraft des Hintergrunds) und der **QR-Code** (Position, Größe, Abstand vom Rand, Fehlerkorrektur, Rand, Farben und Eckenradius), die auf das Vorschaubild eines Videos gedruckt werden; **Ausgaben**: ob das Vorschaubild auf das Video verlinkt und ob der HTML-Betrachter den Player oder das Vorschaubild zeigt; und die Schalter unter **Player**, mit denen jedes Video beginnt. Darunter **Neben anderen Videos abspielen**: An lässt der Start einer Videodatei die anderen weiterlaufen, sodass die stummen Schleifen einer Seite gemeinsam laufen; aus hält der Start eines Videos die anderen an. Das gilt im HTML-Betrachter und in Folio.
- **Kästen**
  - *Kastenstile* (`calloutStyles`): benannte Stile für `:::callout{type="…"}`. Sie können IDs hinzufügen, duplizieren, entfernen und umbenennen und dann festlegen:
    - Standardtitel, Spanne, Platzierung und Breite sowie **Spalten**: wie viele benachbarte Spalten ein gleitender Kasten (Platzierung *Auto*, *Oben* oder *Unten*, Spanne Spalte) auf einer mehrspaltigen Seite einnimmt. Das Attribut `columns` eines `:::callout` übersteuert das;
    - Hintergrund, Rahmen, Eckenradius und Innenabstand sowie einen **Streifen**;
    - ein **Icon**: entweder ein Textzeichen oder ein SVG bzw. eine Bitmap aus dem Bedienfeld Ressourcen. Es kann im Text oder als Eckabzeichen gesetzt werden, mit seiner Ecke und einer Breite für nicht quadratische Grafiken.
    - eine Gruppe **Etikett** (`calloutStyles[].label`): Schriftart, Größe, Stärke, Farbe, Füllung, Ecke, Höhe, Innenabstand, Versatz und Einrückung, eine Symbol-Ressource neben dem Reiter und eine Linie entlang der Oberkante;
    - Typografie des Titels, mit Sperrung, Einzug und **Titel-Zeilenabstand** (`titleStyle.lineHeight`);
    - Übersteuerungen für Fließtext und Listen, die vom Dokumenttext erben. Dazu gehören die Fettfarbe und die **Kursivfarbe** des Fließtexts, seine normale und fette Schriftstärke, Schalter für **Kursiv** und **Kapitälchen**, seine **Tabstopps** und sein **Standard-Tabintervall** (`body.tabStops`, `body.tabInterval`) sowie Größe und Stärke des Aufzählungszeichens.
    - ein Spaltenabstand für Gruppen `:::columns` im Kasten;
    - ein Schalter **Am Raster ausrichten** (`calloutStyles[].snapToGrid`, standardmäßig an; aus behält bei gestapelten Kästen den exakten unteren Rand);
    - die Markerspalte, ein fester Anker, Zusammenhalten und Mindestzeilen bei Teilung sowie die Einstellungen für Gleitobjekt-Barrieren;
    - eine Wahl **Randkasten am Spaltenende** (`sideAtColumnEnd`) für Seitenkästen, deren Text nicht in derselben Spalte weiterläuft: neben dem Text vor dem Direktivenblock oder neben dem Text danach;
    - eine Gruppe **Geteilte Kästen**: den Titel bei jeder Fortsetzung mit einem Zusatz wiederholen (`repeatTitle`, `continuedSuffix`) und einen Fortsetzungsvermerk unter jedem Teil, der weitergeht, mit Text, Ausrichtung und Kursive (`continuesMarkerEnabled`, `continuesMarker`, `continuesMarkerAlign`, `continuesMarkerItalic`). Die Texte folgen standardmäßig der Dokumentsprache.
- **Kopf- & Fußzeilen**
  - *Kopf- & Fußzeilen*: Text-, Linien-, Kasten- und Bildelemente je Platz.
    - **Textelemente**: senkrechte Ausrichtung, **Textausrichtung** innerhalb ihres eigenen Kastens (`align`: linksbündig, zentriert oder rechtsbündig, sichtbar, wenn der Kasten breiter als der Text ist, oder Blocksatz, der die Wortabstände jeder Zeile außer der letzten jedes Absatzes dehnt, um den Kasten zu füllen, und bei eingeschalteter **Silbentrennung** ein Wort an einer Silbe trennt, um eine Zeile zu füllen), Zeilenhöhe, Sperrung (negativ, um einen Schautitel enger zu setzen), Groß-/Kleinschreibung, eine angepasste, füllende oder feste Breite und Höhe und eine Höchstbreite. **Inline-Auszeichnungen** (`inlineMarks`) setzt `**bold**`, `*italic*` und die anderen Inline-Auszeichnungen im Text des Elements, und eine Kontur zeichnet die Umrisse der Buchstaben: **Konturstärke**, **Konturfarbe** und **Hohle Buchstaben** (`stroke`).
    - **Linien**: waagerecht oder senkrecht.
    - **Platzhalter**, ausgewählt aus der Positivliste der Engine: Seitenzahl, Gesamtseiten, Gesamtseiten des Buchs, Titel, Untertitel, Autor, Erscheinungsdatum, Kapiteltitel und -nummer, Titel und Nummer des Teils sowie `{attr.key}` für ein Kapitelattribut. Kopf- und Fußzeilen nehmen außerdem Kapiteltitel und -nummer oben auf der Seite, `{chapterTitleAtTop}` / `{chapterNumberAtTop}` (siehe [Kapitel am Kopf der Seite](https://postext.dev/de/docs/configuration-page-layout.md#kapitel-am-kopf-der-seite)), und die Leitwörter `{firstMark.h2}` / `{lastMark.h2}` (eine Überschriftenebene oder die ID eines Absatzformats nach dem Punkt; siehe [Leitwörter](https://postext.dev/de/docs/configuration-page-layout.md#leitwörter-erste-und-letzte-marke)).
    - **Wo ein Platz erscheint**: Seitenparität und ein Filter **Seiten**: alle, Fließtext, Kapitelauftakte, Teiltitel oder Vakatseiten.
    - **Platzierung**: Überlauf und ein Anker am Container, an einem Geschwisterelement oder am Rahmen **Seite** / **Anschnitt** für randabfallende Bänder; Elemente von Kopf- und Fußzeilen können sich außerdem am **Außensteg** (`'outer'`) verankern, dem Rand, der vom Bund abgewandt ist.
    - **Schreibrichtung** eines Textelements: *Horizontal* oder *Vertikal, Zeilen von rechts nach links* (`writingMode`), für Kolumnentitel, die am Außensteg eines vertikalen Buchs hinunterlaufen. **Kolumnentitel am Außenrand (vertikal)** im Editor der Kopfzeile fügt den Kapiteltitel vier Zeichen unter dem Kopf des Satzspiegels und die Pagina fünf über seinem Fuß hinzu, beide vertikal, in 80 % der Fließtextgröße, am Außensteg verankert (siehe [Vertikale Textelemente](https://postext.dev/de/docs/configuration-page-layout.md#vertikale-textelemente)).
    - Eine Gruppe **Initiale** (Zeilen, Schriftart, Stärke, Größe, Farbe und Abstand) und ein Absatzeinzug. Ein Text mit Initiale bricht um, gleich welcher **Überlauf** eingestellt ist, und ohne festgelegte Größe steht die Oberkante des Buchstabens auf der Höhe der Versalien der ersten Zeile.
    - Jeder andere Gestaltungsplatz bietet dieselben Textbedienelemente.
- **Teile**
  - *Teile* (`parts`):
    - **Teiltitelseite** (`parts.page`): Ausgeschaltet öffnet sie keine Seite, und Nummer, Titel und Farben des Teils gelten einfach ab dem nächsten Inhalt. Außerdem blendet sie die Einstellungen darunter aus.
    - die Seitenparität der Seite, auf der ein `:::part` beginnt, und ein optionaler Umbruch nach dem Teil mit eigener Parität;
    - die Ränder der Teilseite. Sie erben die Seitenränder, mit denselben gespiegelten Bezeichnungen für Bund- und Außensteg.
    - ein Gestaltungsplatz **Design der Auftaktseite**, gesetzt am Endformatrahmen der Seite. Seine Platzhalterauswahl ergänzt die Überschriftengruppe: den aktuellen Titel und seine Nummer in dezimaler, römischer oder alphabetischer Form.
    - ein **Textstil** für die Blöcke innerhalb des Teils. Es erbt vom Fließtext und von den Listenfarben und umfasst die Listen-Übersteuerungen (Nummerierungsformat und Versätze, Ränder, hängender Einzug und die Felder der Aufgabenlisten).
- **Export**
  - *Druckvorbereitung* (`print` und `page.cutLines`), in vier Gruppen:
    - **Schnittmarken und Anschnitt**: die Schnittlinien, der Anschnitt, Länge, Versatz und Stärke der Marken und ihre Bildschirmfarbe.
    - **PDF/X und Farbe**: **PDF-Standard** (*Keiner*, *PDF/X-1a:2003*, *PDF/X-4*); **Ausgabeprofil**, aus den fünfzehn freien Profilen (standardmäßig FOGRA39, FOGRA51 und FOGRA52 für die Bedingungen nach PSO v3, GRACoL, SWOP, Zeitungsdruck); **ICC-Profil hochladen** für das Profil, das Ihnen Ihre Druckerei gibt, mit seiner **Druckbedingung** (dem Registernamen, den der Output Intent nach PDF/X nennt) und einer Schaltfläche, die es entfernt; **Rendering Intent**, **Tiefenkompensierung**, **Bilder in CMYK umwandeln** (ausgeblendet bei PDF/X-1a, das immer umwandelt) und **Max. Farbauftrag**.
    - **Schwarz**: **Grau und Schwarz nur in K**, **100 % Schwarz überdrucken**, **Tiefschwarz für große Flächen** mit seiner C/M/Y/K-Mischung und der Größe, ab der eine Fläche tiefschwarz wird.
    - **Preflight**: **Preflight in Prüfungen**, die minimale und die kritische Bildauflösung, die minimale Linienstärke, die Größe, unter der Text in mehreren Druckfarben gemeldet wird, die Sicherheitszone, der Abstand, unter dem ein Kasten in den Anschnitt laufen sollte, und **Schriften platzierter PDFs prüfen**.

    Siehe [Konfiguration › Druckvorstufe](https://postext.dev/de/docs/configuration-fonts-colors-viewers.md#druckvorstufe-konfiguration).
  - *PDF*: Lesezeichen, das barrierefreie (getaggte) PDF und der erzwungene Farbraum. CMYK wird mit dem Profil aus *Druckvorbereitung* separiert.
  - *Web-Leseansicht (HTML)*: die Einstellungen von `htmlViewer`.
- **Folio**
  - *Folio-Betrachter (3D)* (`folio`), in fünf Gruppen: **Ansicht** (Neigung und Drehung), **Papier** (Sorte, Grammatur, Volumen mit der sich ergebenden Papierdicke, Oberfläche, Struktur und ihre Stärke, Farbton, Durchscheinen), **Bindung** (Art, Umschläge, Material und Farbe des Umschlags, Rückenbild; die Art *Gefalzt (Zeitung)* legt einmal gefalzte Bogen ineinander, ohne dass etwas sie zusammenhält, wie bei einer Zeitung, und da sie wie *Rückendrahtheftung (geklammert)* keinen Rücken zum Bedrucken hat, ist das Rückenbild ausgeblendet), **Unterlage** (das Material der Tischfläche und sein Farbton) und **Beleuchtung** (Umgebung, Belichtung, Schatten). Die Wahl einer anderen Papiersorte füllt die Felder, die Sie nicht geändert haben, mit den Werten dieser Sorte; die von Ihnen geänderten behalten Ihre Werte. Bei einem Zeitungsformat erscheinen Sorte und Bindung, die Sie nicht gewählt haben, als *Zeitungspapier* und *Gefalzt (Zeitung)*. Das Rückenbild wird aus den Bitmaps und SVGs des Bedienfelds Ressourcen gewählt. Siehe [Tab Folio](https://postext.dev/de/docs/sandbox.md#tab-folio).
- **Erweitert**
  - *Bildschirmhilfen* (`debug`): das **Grundlinienraster** (`page.baselineGrid`), das hier statt unter *Seite* steht, und die anderen Überlagerungen zur Kontrolle des Layouts.
  - *Warnungen*: welche Probleme das Bedienfeld Prüfungen meldet und ihre Schwellenwerte.

**Eine Einstellung finden.** Die Werkzeugleiste unter der Kopfzeile wirkt über alle Gruppen hinweg:

- **Einstellungen durchsuchen…** filtert jedes Feld in jedem Abschnitt nach seiner Beschriftung, seinem Hilfetext und den Namen seiner Optionen. Die Suche ignoriert Akzente und trifft Wortanfänge: *marg* findet *Top margin* und *Margen superior*, und *h3* öffnet *Überschriften › H3*. Die Ergebnisse sind nach Einstellungsgruppe gruppiert. Passende Abschnitte öffnen sich automatisch, nicht passende Zeilen und Abschnitte werden ausgeblendet, und Treffer werden hervorgehoben. Escape leert die Suche und verlässt dann das Feld.
- **Geändert** zeigt nur die Felder, deren Wert vom Standard abweicht.

**Hilfetext.** Jedes Feld hat eine kurze Erklärung. Screenreader hören sie als Beschreibung des Felds, auf dem Bildschirm bleibt sie verborgen, bis Sie sie mit der Schaltfläche **?** der Zeile öffnen (*Was ist „…“?*). Der Schalter **Alle Erklärungen zeigen** in der Kopfzeile öffnet alle Erklärungen auf einmal, und die Wahl wird gespeichert.

**Geänderte Werte.** Das Bedienfeld folgt einem durchgängigen **Übersteuerungsmodell**:

- Abschnittsköpfe tragen ein Abzeichen mit der Zahl der geänderten Felder darin, durch verschachtelte Gruppen hindurch gezählt.
- Ein Abschnittskopf zeigt eine Schaltfläche zum Zurücksetzen (mit Rückfrage) nur, solange er Änderungen enthält.
- Ein geändertes Feld hat einen Punkt neben seiner Beschriftung (vorgelesen als *geändert*) und eine eigene kleine Schaltfläche zum Zurücksetzen.
- Gespeichert oder exportiert wird immer nur der geänderte Teilbaum. Standardwerte werden entfernt, sodass eine unberührte Sandbox eine leere Konfiguration speichert.
- Das Zurücksetzen von *Seite* lässt das Grundlinienraster unberührt, da das Raster unter *Erweitert* bearbeitet wird.

**Die Bedienelemente:**

- Auswahlen sind Aufklappmenüs, deren Optionen eine einzeilige Beschreibung tragen können, oder segmentierte Schaltflächen, wenn es nur wenige gibt.
- Ein/Aus-Einstellungen sind Schalter.
- Zahlen haben die Schrittschaltflächen − / +. Die Pfeiltasten ändern den Wert schrittweise, mit Umschalt um das Zehnfache und mit Alt um ein Zehntel.
- Längen haben eine Einheitenauswahl, die den Wert umrechnet, wenn sich die Einheit ändert (cm, mm, in, pt, px, em, rem).
- Eine Farbe ist eine einzelne Schaltfläche, die Farbfeld und Wert zeigt.
- Die Schriftauswahl lässt sich mit den Pfeiltasten bedienen.

Die Bedienelemente richten sich nach dem Kontext. Die Breite des Spaltenabstands erscheint nur bei mehrspaltigen Layouts, die Einstellungen des Blocksatzes nur, wenn der Text im Blocksatz steht (Flattersatz zeigt stattdessen **Flattersatz trennen**, und ein Absatzformat oder Kasten zeigt seinen Schalter für die Silbentrennung, wenn er im Blocksatz steht oder die Trennung im Flattersatz an ist), und der Prozentsatz der Nebenspalte nur beim Layout mit anderthalb Spalten. Änderungen wirken sofort in der Vorschau des Ansichtsbereichs. Eine vollständige Referenz aller Konfigurationsoptionen und ihrer Standardwerte bietet die Seite [Konfiguration](https://postext.dev/de/docs/configuration.md).

Die Kopfzeile des Bedienfelds bietet außerdem **Zurücksetzen** (mit Rückfrage; nur sichtbar, wenn die Gestaltung von der des geöffneten Beispielbuchs abweicht, und es stellt die Gestaltung dieses Beispiels einschließlich der Schriften wieder her), **Exportieren** und **Importieren**. Siehe [Export und Import](https://postext.dev/de/docs/sandbox.md#export-und-import).

#### Bedienfeld Prüfungen

Laufende Diagnosen, neu berechnet aus dem Text, der Gestaltung, den Abbildungen und dem letzten Build. Die Zahl entspricht dem Abzeichen auf der Schaltfläche der Aktivitätsleiste. Die Warnungen sind nach Art gruppiert, in der Reihenfolge der Dringlichkeit: zuerst, was die Ausgabe beschädigt, dann das Markup, dann der feine Satz, der meist aus vielen kleinen Punkten besteht. Jede Gruppe lässt sich einklappen und zeigt ihre Zahl:

- **Schriften**: eine fehlende Schriftfamilie oder fehlende bzw. doppelte Schnitte (Stärke/Stil) in einer eigenen Familie, und *Schriftliste in einer Schriftfamilie*: eine Einstellung `fontFamily`, die einen CSS-Schriftstapel enthält (der Text wird in dessen erster Familie gesetzt; der Eintrag nennt den Pfad der Einstellung)
- **Abbildungen & Tabellen**: eine unbekannte Ressourcen-ID in einem `::resource` / `:ref` – auch in der Legende, der Anmerkung oder den Zellen einer Abbildung, die der Text verwendet, oder als Bild einer Tabellenzelle –, doppelte Ressourcen-IDs, Verweise auf einen nicht vorhandenen Ressourcentyp, Bitmaps, die deutlich größer als ihre Pixelgröße gerendert werden, eine Tabelle, deren Stil-ID keinen Tabellenstil nennt, ein unregelmäßig gebliebenes Tabellenraster (eine verbundene Zelle, deren überdeckte Zellen fehlen, oder eine Zeile mit einer Lücke: verbinden Sie die Zellen im Tabelleneditor erneut), ein Bild, dessen Datei im Speicher fehlt oder sich nicht dekodieren lässt (es erscheint als Platzhalter), ein SVG, dessen Text eine Familie ohne einbettbare Schriftdatei nennt (*Schrift in einem SVG fehlt*: das Bild setzt sie in einer Ersatzschrift) oder dessen Schriften die Grenze von 2 MB überschreiten (*SVG-Schriften zu groß zum Einbetten*), und ein Video ohne Vorschaubild, eine Videodatei ohne Produktionsadresse (kein QR-Code und kein Link im Druck) oder eine YouTube- oder Vimeo-Adresse, die kein Video nennt, sowie ein gleitendes Bild, das kleiner gesetzt wurde, um in den Platz auf seiner Seite zu passen (*Bild verkleinert*: der Eintrag nennt den Maßstab und den Überstand in mm, wenn es selbst im kleinsten Maßstab über den Satzspiegel hinausragt), und ein Bild oder Kasten, den der Text nicht wie verlangt umfließt (*Umflossenes Bild oder umflossener Kasten*: zu schmale Satzbreite daneben, zu kurz für Zeilen daneben, in die nächste Spalte gerückt oder in vertikalem Text gesetzt)
- **Text & Auszeichnung**:
  - übersprungene Ebenen in der Überschriftenhierarchie (zum Beispiel H1 → H3) und aufeinanderfolgende Überschriften ohne Fließtext dazwischen;
  - ungültige oder nicht geschlossene Formeln `$…$` / `$$…$$`;
  - unbekannte Direktivennamen (jeder Name, den der Parser kennt, wird akzeptiert: `pagebreak`, `columnbreak`, `space`, `numbering`, `toc`, `callout`, `paragraphs`, `part` und `columns`), ungültige Nummerierungs- oder Paritätsattribute und ein `:::space{lines=N}` außerhalb von 0–20 Zeilen;
  - ein Direktivenblock `:::`, der am Ende des Dokuments nicht geschlossen ist (ein Klick fokussiert seine Anfangszeile);
  - ein `:::paragraphs{style="…"}`, `:::callout{type="…"}`, `:chip[…]{style="…"}` oder ein `{style="…"}` an einer Überschrift, dessen Stil nicht konfiguriert ist;
  - eine Zeile `::resource`, die als Text gedruckt wird – fehlerhaft oder ohne Leerzeile unter einen Absatz geklebt;
  - *Markup in voller Breite*: Markup, das mit einer chinesischen oder japanischen Eingabemethode getippt wurde (`：：：`, `＃`, `［＾…］`, `｛…｝`, `＊＊…＊＊`) und als Text gedruckt wird; der Eintrag zeigt die ASCII-Form, die zu tippen ist;
  - *Attributschlüssel nicht gelesen*: ein Attributschlüssel, der nicht in ASCII geschrieben ist (`作者=曹雪芹`) und den der Parser ignoriert;
  - *Nicht geschlossener Codeblock*: ein Codeblock ```` ``` ```` oder `~~~` ohne schließende Zeile, sodass der Rest des Texts als Code gesetzt wird (`unclosedCodeBlock`; ein Klick fokussiert den Codeblock);
  - *Tabulator in vertikalem Text*: ein `:tab` in vertikal gesetztem Text, das als Wortzwischenraum gesetzt wird, da Tabstopps nur in horizontalem Text gesetzt werden (`tabInVerticalText`);
  - *Frontmatter ignoriert*: ein Kapitel außer dem ersten, das mit einem Front-Matter-Block beginnt (nur das Front Matter des ersten Kapitels gehört zum Buch);
  - *Unbekannter Spaltenfluss*: ein `:::columns{flow=…}`, das weder `snake` noch `parallel` ist; die Gruppe nimmt den Standard (`columnsFlowUnknown`).
- **Gestaltung**:
  - Namen von Platzhaltern in Kopf- und Fußzeilen außerhalb der Positivliste der Engine (`{attr.…}` und die Platzhalter für Teile werden akzeptiert) und Platzhalter, deren Dokument-Metadaten fehlen;
  - zyklische Anker zwischen Gestaltungselementen oder Anker auf ein nicht vorhandenes Element. Diese Prüfung und die der Platzhalter decken jeden Gestaltungsplatz ab: die Kolumnentitel, den Auftakt eines Teils, die leere linke Seite nach einer Teilseite, die Teilzeilen des Inhaltsverzeichnisses, die Gestaltung jeder Überschriftenebene sowie die Gestaltung jedes Überschriftenformats und die Kolumnentitel seines Abschnitts. Ein Eintrag aus einem Überschriftenformat nennt das Format, etwa `{style="index"} header · #rh → #missing`, und einer von der linken Seite oder den Teilzeilen des Inhaltsverzeichnisses nennt seine Einstellung, etwa `toc.parts.design · #row → #missing`;
  - Textelemente, deren Überlauf `clip` immer abschneidet;
  - *Gestaltungstext gekürzt*: ein Gestaltungstext, der nicht in seine Breite passte und mit einer Ellipse endet oder mit Farbe über seinen Kasten hinaus abgeschnitten wurde (`designTextTruncated`). Der Eintrag nennt Platz und Element und gibt den ganzen Text wieder; ein Klick öffnet die Seite, auf der er gekürzt wurde, und wählt im Editor eine Überschrift oder einen Titel aus dem Front Matter aus. Ein Kolumnentitel, der auf jeder Seite eines Kapitels gekürzt wird, wird einmal aufgeführt;
  - *Überschriftengestaltung abgeschnitten*: eine Überschriftengestaltung, die höher ist, als ihre Seite fassen kann – Text eines Auftakts, der über den Fuß der Seite hinaus gesetzt wurde, oder einer Gestaltung in der Spalte über den Fuß ihrer Spalte hinaus (ein langer Vorspann auf einer kleinen Bildschirmseite). Die Überschrift beansprucht den Rest ihrer Seite oder Spalte, sodass der Text danach auf der nächsten beginnt, aber dieser Teil der Gestaltung geht verloren; ein Klick auf den Eintrag fokussiert die Überschrift;
  - *Seitenspalte außerhalb des Bereichs*: eine Nebenspalte eines Layouts mit anderthalb Spalten, die die Engine begrenzen musste, um Platz für die Hauptspalte zu lassen;
  - *Spaltenzahl außerhalb des Bereichs*: eine Spaltenzahl eines Layouts `multiple`, die keine ganze Zahl von 3 bis 8 ist und die die Engine begrenzt hat;
  - *Unbekanntes Zahlenformat*: ein Zahlenformat für Listen, Seiten oder Ressourcentypen, das die Engine nicht kennt und das dezimal nummeriert;
  - *Unbekannte Einstellung*: ein Schlüssel, den die Überschriften, eine Überschriftenebene, ein Überschriftenformat oder ein Tabstopp nicht haben (ein falsch geschriebenes `letterSpacng`) und den die Engine ignoriert; der Eintrag schlägt die Einstellung vor, der er am nächsten kommt, sofern es eine gibt.
  - *Keine Zeilennummern in vertikalem Text*: Zeilennummern, die in einem vertikalen Dokument eingeschaltet sind, das keine erhält.

  Diese letzten vier stammen wie *Schriftliste in einer Schriftfamilie* aus der Konfiguration statt aus dem Text: Der Eintrag nennt den Pfad der Einstellung, und ein Klick darauf bewegt den Editor nicht.
- **Kontrast**:
  - *Geringer Kontrast*: eine Textfarbe unter dem Kontrastverhältnis, das ihre Größe und Stärke auf der Stufe des Buchs (`contrast.level`) gegenüber dem Grund verlangen, auf dem sie steht. Der Eintrag zitiert den Text und nennt beide Farben, die Größe und das Verhältnis auf dem Bildschirm und, bei einem für den Druck eingerichteten Buch, auf dem Papier seines Ausgabeprofils. Ein Paar wird einmal aufgeführt, mit der Zahl der Stellen, die so gesetzt sind;
  - *Negativer Text zu fein für den Druck*: heller Text auf bedrucktem Grund unter den Größen von **Farben → Kontrast → Negativer Text**, in einem für den Druck eingerichteten Buch.

  Jeder Eintrag nennt die Seite seines ersten Vorkommens; ein Klick darauf öffnet diese Seite und wählt den Text im Editor aus.
- **Satz**:
  - zu lockere Zeilen (Wortabstände über den konfigurierten Schwellenwert hinaus gedehnt);
  - *Blocksatzzeile im Flattersatz*: eine Zeile eines Absatzes im Blocksatz, die kurz gelassen wurde, weil das Erreichen der Satzbreite ihre Wortabstände über das Dreifache ihrer Breite gedehnt hätte; der Eintrag zitiert die Zeile und nennt die Dehnung, die nötig gewesen wäre, und ein Klick wählt die Zeile aus;
  - *CJK-Zeile zu kurz gesetzt*: eine Zeile chinesischen, japanischen oder koreanischen Texts, die kürzer als ihre Satzbreite gelassen wurde, weil ihr Auffüllen die Zeichen über die Grenze hinaus gesperrt hätte;
  - *Zeichen bedrängen die nächste Zeile* und *Lesungen bedrängen die nächste Zeile*: Betonungspunkte, Namens- und Titellinien oder Ruby-Lesungen, die mehr Zeilenzwischenraum brauchen, als der Absatz hat; der Eintrag nennt beides in em;
  - Kästen, die über ihre Spalte hinauslaufen;
  - *Chips berühren die nächste Zeile*: ein Chip, dessen Kasten in einen Chip der Zeile darüber oder darunter hineinläuft (die Überlappung wird in Punkt angegeben); ein hoher Chip ohne Chip darüber oder darunter wird nicht gemeldet;
  - Paritätskaskaden;
  - *Zeilennummer über einem seitlichen Kasten*: eine Zeilennummer in der Nebenspalte (`lineNumbers.position: 'side'`), die dort über einem Kasten, einer Legende oder einer Abbildung steht; beide werden gedruckt, wo sie sind;
  - *Initiale nicht wie eingestellt gesetzt*: ein Absatz, der kürzer ist, als seine Initiale absinkt (der Eintrag sagt, ob der Platz gehalten, die Initiale verkleinert oder weggelassen wurde), einer, der vor der letzten Zeile der Initiale in einer zu kurzen Spalte umbricht, einer, dessen erster Buchstabe mit dem nächsten verbunden ist (Arabisch), einer in vertikalem Text oder einer, der ohne Buchstaben beginnt (`dropCap`);
  - *Codezeile breiter als ihr Kasten*: ein Listing mit Zeilen, die breiter als sein Kasten sind, umbrochen, kleiner gesetzt (der Eintrag nennt die Größe) oder abgeschnitten, wie **Code → Lange Zeilen** es festlegt (`codeOverflow`);
  - *Spalten zu schmal*: eine Gruppe `:::columns`, deren Spalten schmaler als sechs Geviert ihres Texts sind (`columnsTooNarrow`);
  - *Seitlicher Kasten oder Abbildung nach dem Textende*: ein Seitenkasten oder eine Abbildung der Nebenspalte, auf eine Seite ohne Text gesetzt, weil der Text ihres Kapitels endete, während sie auf Platz in der Nebenspalte warteten; der Eintrag nennt die Seite (`afterText`);
  - *Auf keiner Seite*: ein Kasten oder ein Gleitobjekt, das beim Ende des Layouts noch auf einen Platz wartete und auf keiner Seite steht (`unplaced`);
  - *Kurze Liste über Spalten getrennt*: eine Liste mit wenigen Einträgen, die auf zwei Spalten oder Seiten gesetzt ist; aufgeführt, wenn **Grundtext → Kurze Listen über Spalten getrennt** auf *Warnen* steht, und bei *Vermeiden* für eine Liste, die keine Spalte ganz fassen konnte (`shortListSplit`);
  - *Gleitobjekt auf einer Auftaktseite*: eine Abbildung, eine Tabelle oder ein gleitender Kasten auf der Seite, auf der ein Kapitel oder ein Teil beginnt; aufgeführt, wenn **Spalten → Gleitobjekte auf Auftaktseiten** auf *Warnen* steht (`openerFloat`);
  - *Keine Trennmuster für diese Sprache*: Für die Dokumentsprache (ihr Trennungs-Locale, sonst `locale`) gibt es keine mitgelieferten Muster, deshalb wird ihr Text mit den US-englischen getrennt. Die Warnung verschwindet, wenn die Silbentrennung abgeschaltet wird.
- **Preflight**, bei einem für den Druck eingerichteten Buch (ein PDF/X-Standard, ein CMYK-PDF oder Schnittmarken), kritische Befunde zuerst:
  - *Geringe Bildauflösung*: ein Bild unter der Mindestauflösung bei seiner Druckgröße (kritisch unter der kritischen), berechnet aus den Pixeln, die seine Datei tatsächlich hat;
  - *Angegebene Pixel weichen von der Datei ab*: eine Bitmap, deren angegebene Breite und Höhe nicht die der Datei sind (eine Warnung, wenn sie mehr angibt);
  - *RGB-Bild*: beim Export in CMYK separiert oder von einem PDF/X-4, das Bilder nicht umwandelt, in RGB belassen;
  - *Linie zu dünn*, *Kleiner Text in mehreren Farben*, *Farbauftrag über dem Limit* (eine selbst angegebene CMYK-Farbe, die Mischung für Tiefschwarz);
  - *Text im Sicherheitsabstand* und *Endet knapp vor dem Endformat* (ein Kasten oder Bild, das in den Anschnitt laufen sollte);
  - *Nicht eingebettete Schriften in einem platzierten PDF*, *RGB in einem platzierten PDF* und *Transparenz in einem platzierten PDF* (kritisch bei PDF/X-1a), aus der Druckvorlage jeder Abbildung.

  Jeder Eintrag nennt seine Seite; ein Klick darauf öffnet diese Seite im Betrachter.
- **Browser**: Speicher nicht verfügbar (IndexedDB fehlt)

Jeder Eintrag zeigt ein Symbol, einen Titel, ein einzeiliges Detail und, wo zutreffend, Kapitel und Quellzeile (*Kap. 2 · Zeile 12* in einem Buch mit mehreren Kapiteln). Ein Klick auf einen Eintrag mit Quellposition wechselt zu diesem Kapitel und fokussiert den Editor an dieser Stelle. Ist alles in Ordnung, zeigt das Bedienfeld **Alles in Ordnung**. Welche Prüfungen laufen, legen Sie unter **Gestaltung → Erweitert → Warnungen** fest.

### Hauptansichtsbereich

Die rechte Seite der Oberfläche zeigt die gerenderte Ausgabe. Es gibt fünf Tabs, einen je Darstellungsart, in dieser Reihenfolge: **Canvas**, **PDF**, **Folio**, **HTML** und **EPUB 3**. Ein Tabwechsel löst kein neues Layout aus: Derselbe VDT speist jedes Backend, sodass der Inhalt, den Sie sehen, in allen Darstellungsarten übereinstimmt. Der Tab Folio wird nur angeboten, wo der Browser WebGL2 hat und der Bildschirm nicht der eines Telefons ist (siehe [Tab Folio](https://postext.dev/de/docs/sandbox.md#tab-folio)).

Jeder Ansichtsbereich führt die Layout-Pipeline in einem eigenen **Web Worker** (`postext/worker`) aus. Ein Hook `useLayoutWorker` je Ansichtsbereich hält das Worker-Handle, übergibt ihm die Schriften als übertragbare `ArrayBuffer` und steuert die Builds mit **Abbruch nach dem Prinzip „der Letzte gewinnt“** – ein Tastendruck oder das Ziehen eines Schiebereglers bricht das `AbortSignal` des vorherigen Builds ab, bevor der nächste beginnt, sodass sich bei schnellem Tippen im Haupt-Thread nie veraltete Arbeit staut. Wird ein Ansichtsbereich ausgehängt, gibt er seinen Worker frei und weist jeden ausstehenden Build zurück. Das hier verwendete Integrationsmuster beschreibt [Konfiguration → Layout in einem Web Worker ausführen](https://postext.dev/de/docs/configuration-programmatic-usage.md#layout-in-einem-web-worker-ausführen).

> **Abbildung: Ein VDT, fünf Ausgaben**
> Markdown und Konfiguration der Sandbox speisen einen einzigen VDT im Arbeitsspeicher. Canvas, PDF, Folio, HTML und EPUB 3 rendern jeweils aus diesem selben VDT, sodass jeder Tab dasselbe Layout zeigt.
>
> *Ein einziger VDT speist die fünf Ausgabe-Tabs.*

#### Tab Canvas

Rendert eine gerasterte Vorschau des Dokuments auf einem HTML5-Element `<canvas>`. Das ergibt eine pixelgenaue Darstellung davon, wie das fertig gesetzte Dokument aussehen wird, einschließlich genauer Textpositionen, Spaltenaufteilung und Platzierung der Ressourcen.

Eine Werkzeugleiste oben im Canvas-Ansichtsbereich bietet:

- **Zoom** – Vergrößern und Verkleinern (Faktor 1,25 je Schritt, Bereich 0,25x–4x). Manuelles Zoomen schaltet den Anpassungsmodus ab.
- **Anpassungsmodi** – An Seitenbreite oder an Seitenhöhe anpassen. Lässt sich ein- und ausschalten; die Anpassung wird bei einer Größenänderung des Fensters automatisch neu berechnet.
- **Ansichtsmodi** – Einzelseite (eine Seite je Reihe) oder Doppelseite (buchartige Anordnung, bei der die erste Seite rechts als Recto steht und die folgenden Seiten zu Doppelseiten gepaart werden). Ein rechts gebundenes Buch (`page.binding`, vertikales Chinesisch) zeigt seine Doppelseiten andersherum: Seite 1 allein links, dann `[3 | 2]`, `[5 | 4]`. Auf einer vertikalen Seite landet ein Klick auf dem Zeichen unter dem Zeiger, und die Einfügemarke ist ein Balken quer über die Spalte.
- **Druckvorschau** (Symbol `Printer`) – Zeigt die Seiten so, wie sie gedruckt werden, standardmäßig aus und vom Browser gespeichert: jede Farbe über das Ausgabeprofil aus *Druckvorbereitung* separiert und auf dem eigenen Weiß des Papiers gezeigt, große schwarze Flächen in Tiefschwarz; ein auf Graustufen gezwungenes PDF erscheint allein in schwarzer Druckfarbe. Nur was gedruckt wird: keine Bildschirmhilfslinien und keine Umrisse (die Befunde des Preflights stehen unter **Prüfungen**). Der Tab Folio teilt den Schalter. Er zeichnet die Seiten neu und setzt sie nie neu.

Seiten werden verzögert über `IntersectionObserver` gerendert – nur sichtbare Seiten (plus ein Rand von 200 px) werden auf das Canvas gezeichnet, was den GPU-Speicherbedarf bei langen Dokumenten niedrig hält.

#### Tab PDF

Erzeugt über das Paket `postext-pdf` ein echtes PDF des aktuellen Dokuments und zeigt es in einem eingebetteten PDF-Betrachter des Browsers. Das PDF wird beim ersten Einhängen und bei jeder weiteren Neuerzeugung automatisch neu gebaut, aus demselben VDT, der die Tabs Canvas und HTML speist – deshalb stimmen Zeilenumbrüche, Seitengrenzen und Platzierung der Ressourcen in den drei Backends pixelgenau überein, bis hin zur Stauchung überfüllter Schlusszeilen, die Knuth-Plass gelegentlich zulässt.

Eine schwebende Werkzeugleiste unten rechts im Ansichtsbereich bietet:

- **Neu berechnen** (Symbol `RefreshCw`) – Baut das PDF aus dem aktuellen Markdown und der aktuellen Konfiguration neu. Nützlich nach der Änderung einer Einstellung, die nicht automatisch einen Neuaufbau auslöst, oder wenn die Schriften fertig geladen sind.
- **Herunterladen** (Symbol `Download`) – Speichert das aktuelle PDF auf der Festplatte. Der Dateiname wird aus der ersten H1-Überschrift des Dokuments abgeleitet (ersatzweise `document.pdf`).
- **Drucken** (Symbol `Printer`) – Öffnet den Druckdialog des Browsers für den eingebetteten PDF-Betrachter, mit dem Sie in den meisten Browsern drucken oder erneut als PDF speichern können.
- **Aktuelles Kapitel / Ganzes Buch** (Auswahl links in der Tab-Leiste, bei Büchern mit mehr als einem Kapitel) – Rendert alle Kapitel als ein durchgehendes PDF statt des aktiven Kapitels als Fortsetzung der vorhergehenden (der Standard). Eine Änderung erzeugt das PDF neu. Das Canvas hat eine eigene Auswahl (siehe [Bücher und Kapitel](https://postext.dev/de/docs/sandbox.md#bücher-und-kapitel)).

Intern verwendet die Sandbox eine Hilfsfunktion `createPdfFontProvider()`, die statische WOFF2-Dateien je Schriftstärke vom jsDelivr-CDN von Fontsource abruft, die Dateien, mit denen ihre Vorschauen gemessen werden, sie im Browser zu TTF dekomprimiert und die Bytes über `renderToPdf` an `pdf-lib` übergibt. Statische Schriften je Stärke (statt einer einzigen variablen Schrift) sind nötig, damit fetter Text tatsächlich in der fetten Stärke eingebettet wird. Dasselbe Muster außerhalb der Sandbox beschreibt [PDFs erzeugen](https://postext.dev/de/docs/configuration-programmatic-usage.md#pdfs-erzeugen).

#### Tab Folio

Zeigt das Buch als gedrucktes Objekt: die von der Engine gesetzten Seiten, gebunden und aufgeschlagen auf einem Tisch liegend, in 3D (`postext-folio`, three.js). Die Seiten sind die Zeichnungen des Canvas selbst, Texel für Pixel gezeigt, sodass der Text so scharf ist wie im Tab Canvas; anders ist alles um sie herum. Papier, Bindung, Tisch und Licht stammen aus der Gruppe **Folio** des Bedienfelds Gestaltung (der Konfiguration `folio`), und ein Abschnitt `:::paper` im Text druckt seine Seiten auf einer anderen Papiersorte (siehe [Dokumentformat › `:::paper`](https://postext.dev/de/docs/document-format.md#paper)).

- **Was er zeigt.** Der Tab Folio folgt der Auswahl **Aktuelles Kapitel / Ganzes Buch** des Canvas. Ein Kapitel wird als Teil seines Buchs gezeigt: Die Seiten davor und danach zählen in die Dicke der beiden Seitenblöcke ein, und das Kapitel beginnt auf seiner tatsächlichen Seite der Doppelseite. Ein rechts gebundenes Buch (`page.binding: 'right'` oder ein vertikales Buch) liegt gespiegelt und blättert seine Blätter nach links.
- **Umblättern.** Fassen Sie eine Seite an ihrer Kante und ziehen Sie sie hinüber; lassen Sie sie hinter der Hälfte los, blättert sie um, davor fällt sie zurück. Ein Klick auf eine Seite blättert sie um (die rechte vorwärts, die linke zurück), ebenso die Schaltflächen ‹ › der Werkzeugleiste und die Pfeiltasten, Bild auf/ab, Pos1 und Ende, wenn das Buch den Fokus hat. Jedes Blatt biegt sich gemäß seinem Papier: Dünndruckpapier rollt sich eng, Karton blättert in weitem Bogen, Pappe und die Deckel wenden sich als starre Platten.
- **Weite Sprünge.** Eine Seite, die mehr als zehn Seiten entfernt ist (im Seitenfeld eingegeben, vom Permalink genannt, über einen Link oder die Einfügemarke im Bedienfeld Text erreicht), wird in einer Bewegung erreicht: Der Seitenblock dazwischen hebt sich als Ganzes, so dick wie diese Seiten, und wird auf die andere Seite gelegt. Bis zu zehn Seiten werden die Blätter einzeln umgeblättert.
- **Um das Buch herumschauen.** Ziehen mit der rechten Maustaste kreist die Ansicht um das Buch, bis zu 70° von oben gesehen: um den Rücken, den Vorderschnitt oder die Dicke des Blocks zu sehen. Die Ansicht bleibt, wo Sie sie lassen, auch während Seiten umblättern, bis **Ansicht zurücksetzen** sie sanft auf die Ansicht der Einstellungen zurückführt (*Neigung* und *Drehung*). **Als Standardansicht speichern** speichert die Ansicht, wie Sie sie sehen, in diesen Einstellungen, sodass sich das Buch dort öffnet und Ansicht zurücksetzen dorthin zurückkehrt.
- **Funktion des Zeigers.** Drei Schaltflächen in der Werkzeugleiste legen fest, was die linke Maustaste (ein Finger, ein Stift) auf dem Buch tut: **Von Hand blättern**, der Standard, wie oben; **Ansicht drehen**, dasselbe wie Ziehen mit der rechten Maustaste, für ein Trackpad oder ein Tablet; **Text auswählen**, das wie im Tab Canvas auf dem Buch wirkt, wie es zu sehen ist, geneigt oder gekreist: Ein Klick setzt die Einfügemarke im Bedienfeld Text, Ziehen wählt aus, ein Doppelklick nimmt ein Wort, ein Klick auf einen Link folgt ihm. Die Wahl wird gespeichert; H, O und S wechseln sie, solange das Buch den Fokus hat.
- **Dem Editor folgen.** Einfügemarke und Auswahl des Bedienfelds Text werden auf die Seiten gezeichnet und bleiben dort, während Sie tippen: Die Seite zeigt die Änderung, sobald sie neu gesetzt ist. Bewegen Sie die Einfügemarke im Editor auf eine Seite, die nicht zu sehen ist, blättert das Buch dorthin.
- **Deckel.** Mit *Umschlag: Eine Buchdecke um die Seiten* wird das Buch in eine Decke aus Leinen, Karton oder Leder in der Deckelfarbe gebunden. Mit *Die Seiten des Dokuments* ist die erste Seite der vordere Deckel und die letzte Seite (wenn sie auf eine linke Seite fällt) der hintere: Das Buch liegt geschlossen, bis der Deckel umgeschlagen wird, und das Umblättern des letzten Blatts schließt es wieder. Ein dickes Buch öffnet sich mit seinem Rücken aufrecht zwischen den beiden Blöcken.
- **Die Werkzeugleiste.** Eine schwebende Leiste wie die des Canvas: **Neu berechnen**, **Ansicht zurücksetzen**, **Als Standardansicht speichern**, die drei Zeigermodi, **Druckvorschau** (der Proof des Canvas, auf dem Papierweiß des Ausgabeprofils, sodass der Papierton des Buchs währenddessen beiseitegelassen wird; derselbe Schalter wie beim Canvas), die Pinnadel, ‹ › und das Seitenfeld, das eine Seitenzahl des Buchs annimmt und zu deren Doppelseite blättert. Die Seite rechts in der geöffneten Doppelseite ist die, die der Permalink nennt (`view=folio&page=N`).
- **Einstellungen wirken sofort.** Die Folio-Einstellungen gehören nicht zum Layout: Eine Änderung von Papier, Bindung oder Licht zeichnet das Buch neu, ohne eine Seite neu zu setzen.
- **Wo er angeboten wird.** Der Tab braucht WebGL2 und einen Bildschirm, dessen kurze Seite mindestens 600 px misst: Auf einem Telefon braucht das 3D-Buch mehr Speicher, als der Browser einem Tab gibt, deshalb wird der Tab dort nicht gezeigt (ebenso wenig in einem Browser ohne WebGL2). In einem Bereich, der schmaler als 560 px ist, zeigt das Buch eine Seite auf einmal; das Blatt wendet sich trotzdem über den Rücken. Verlangt das System reduzierte Bewegung, wechseln die Doppelseiten ohne Umblättern.
- **Videos auf der Seite.** Ein Klick auf das Vorschaubild eines Videos spielt es auf der Seite ab, in jedem der drei Zeigermodi, und das Bild läuft weiter, während sich das Blatt wendet und wölbt. Ein weiterer Klick hält es an; der Start eines anderen stoppt das erste, es sei denn, *Neben anderen Videos abspielen* ist an; das Video stoppt, wenn das Buch auf einer Doppelseite zur Ruhe kommt, die es nicht mehr zeigt. Die Leertaste spielt das Video der geöffneten Doppelseite ab oder hält es an. Ein Video mit eingeschaltetem *Automatisch abspielen* startet von selbst, wenn seine Doppelseite zum ersten Mal gezeigt wird, mit Ton, sobald Sie auf die Seite geklickt haben (vorher stumm, und ein Klick schaltet den Ton ein); die beiden Videos des Leitfadens tun das. Hochgeladene Dateien und Videos unter einer Adresse (MP4, HLS) werden so abgespielt, wenn ihr Server ursprungsübergreifendes Lesen erlaubt; YouTube- und Vimeo-Videos blättern die Seite wie bisher um (siehe [Dokumentformat › Videos auf den Seiten von Folio](https://postext.dev/de/docs/document-format.md#videos-auf-den-seiten-von-folio)).
- **Textalternativen.** Jede Seite wird als Bild gezeichnet; ihr barrierefreier Name verweist für ihren Text auf den Tab HTML und das Bedienfeld Text.

#### Tab HTML

Rendert die Postext-Ausgabe in einem Shadow-DOM-Container und sorgt so für eine vollständige Trennung der Stile von der Host-Seite. Das redaktionelle CSS (Typografie, Abstände, Spaltenlinien) wird in die Shadow Root eingefügt, sodass es von den Stilen der umgebenden Anwendung weder beeinflusst werden noch in sie durchsickern kann.

Markdown-Links sind hier und im PDF aktiv (siehe [Dokumentformat › Links](https://postext.dev/de/docs/document-format.md#links)). In diesem Tab öffnet ein Klick darauf das Ziel in einem neuen Browser-Tab, sodass die Sandbox geöffnet bleibt; Verweise mit `:ref` springen weiterhin innerhalb des Dokuments.

Videos werden hier abgespielt: ein YouTube- oder Vimeo-Video im Player der Plattform, eine Datei oder eine Adresse im Player des Browsers (ein HLS-Stream über hls.js, wo der Browser kein eigenes HLS hat), mit den Player-Optionen aus *Videostil* im Bedienfeld Gestaltung und denen jedes Videos. Klicks auf einen Player gehen an den Player, nicht an den Editor. Steht **Im HTML-Betrachter** auf *Vorschaubild*, zeigt der Tab das gedruckte Vorschaubild, verlinkt mit dem Video.

Eine Werkzeugleiste oben im Ansichtsbereich bietet:

- **Schriftgröße** – Verkleinert oder vergrößert den Fließtext und erhält dabei jedes relative Maß der Konfiguration.
- **Spaltenmodi** – Einzeln (eine hohe, scrollbare Spalte) oder mehrspaltig (so viele Spalten, wie deren Breite der konfigurierten Satzbreite am nächsten kommt, mit waagerechtem Einrasten beim Scrollen zwischen den Seiten). Ein zweispaltiges Dokument behält seine zweispaltigen Seiten, aber der Betrachter kann eine ungerade Zahl von Spalten zeigen – drei statt zwei gedehnter oder vier gestauchter –, wenn das am besten passt; die letzte gehört dann zur nächsten Seite und ist halb zu sehen. Ein Dokument oder ein Abschnitt im Modus *Mehrere Spalten* wird ebenfalls als zweispaltige Seiten gezeigt: Drei bis acht Druckspalten wären bei Bildschirmbreite schmale Streifen, deshalb setzt der Betrachter seinen Text zweispaltig je Seite und zeigt so viele nebeneinander, wie die Satzbreite erlaubt. Ein rechts gebundenes Buch (`page.binding`) lässt seine Seiten im mehrspaltigen Modus von rechts nach links laufen: Der Betrachter öffnet am rechten Ende, und der Pfeil ‹ führt zur nächsten Seite. Ein vertikal gesetztes Buch liest sich nur im mehrspaltigen Modus: Die Schaltfläche **Einzeln** ist deaktiviert, mit einem Tooltip, der den Grund nennt, und Ihre gespeicherte Wahl kehrt mit dem nächsten horizontalen Buch zurück.

Die Spaltengeometrie wird vom Abschnitt **Web-Leseansicht (HTML)** des Bedienfelds Gestaltung gesteuert (**Gestaltung → Export**): `maxCharsPerLine` legt die Ziel-Satzbreite in Zeichen der Fließtextschrift fest, `columnGap` den waagerechten Abstand zwischen den Spalten im mehrspaltigen Modus, und `optimalLineBreaking` schaltet Knuth-Plass im Betrachter ein oder aus. Dasselbe Muster, das die Sandbox intern verwendet, zeigen die [Referenz zur Konfiguration des HTML-Betrachters](https://postext.dev/de/docs/configuration-fonts-colors-viewers.md#html-betrachter) und das durchgängige [Integrationsbeispiel](https://postext.dev/de/docs/configuration-programmatic-usage.md#den-html-betrachter-einbinden).

#### Tab EPUB 3

Schreibt das ganze Buch mit dem Paket `postext-epub` als EPUB-3-Datei, zeigt es in einem Lesesystem im Tab und lädt es herunter. Die Datei wird im Browser aus demselben kapitelweisen Layout gebaut, das der Tab PDF für **Ganzes Buch** verwendet, sodass Seitenzahlen, Anmerkungen, Querverweise, Inhaltsverzeichnis und Register dieselben sind, die das PDF druckt. Der Tab hat keine Auswahl **Aktuelles Kapitel / Ganzes Buch**, da ein EPUB immer das ganze Buch enthält. An ihrer Stelle bietet er links in der Tab-Leiste die Darstellungsform an (auf einem Telefon als Symbole).

EPUB 3 kennt zwei Darstellungsformen, benannt nach der Eigenschaft `rendition:layout` des Pakets:

- **Festes Layout** (`pre-paginated`, oft FXL genannt): jede Seite so, wie sie gedruckt wird. Jede Seite ist ein eigenes Dokument mit der Größe der Seite, und der Text steht dort, wo das PDF ihn hinsetzt, in den Schriften des Buchs, bleibt aber echter Text, der sich auswählen, durchsuchen und vorlesen lässt. Doppelseiten werden wie im Druck gepaart, und ein rechts gebundenes Buch (Arabisch, vertikales Chinesisch) blättert von rechts nach links. Die Gestaltung bleibt erhalten: Spalten, Gleitobjekte, Kolumnentitel, Kapitelauftakte, die genauen Zeilenumbrüche. Wählen Sie es für Bücher, deren Seiten als Seiten gestaltet sind, etwa illustrierte Bücher, Lehrbücher, Kataloge und Zeitschriften, und für Lesesysteme mit großem Bildschirm. Auf einem kleinen Bildschirm wird die Seite verkleinert, und die Leserin oder der Leser zoomt hinein, um sie zu lesen.
- **Umfließend** (der Standard auf Telefonen und Computern und der Standard von EPUB): Text, Abbildungen und Tabellen in Lesereihenfolge, vom Lesesystem neu gesetzt für seinen Bildschirm und für Schrift, Schriftgrad und Ränder, die die Lesenden wählen. Absätze werden aus den gesetzten Zeilen wieder aufgebaut (die am Zeilenende hinzugefügten Trennstriche werden entfernt), Abbildungen und Tabellen folgen dem Text, der auf sie verweist, Kästen werden zu Asides, Fußnoten verlinken auf die Anmerkungen am Ende jedes Kapitels und zurück, und die gedruckten Seitenzahlen bleiben als Seitenmarken erhalten. Ein aus der Gestaltung abgeleitetes Stylesheet gibt Überschriften, Kästen, Tabellen und Legenden ihr Aussehen, aber die Seitengeometrie entfällt: keine Spalten, keine Kolumnentitel, keine festen Zeilenumbrüche. Wählen Sie es für Fließtext, etwa Romane, Essays und Berichte, und für Telefone und E-Ink-Lesegeräte.

Solange keine gewählt ist, öffnet sich der Tab auf einem Tablet wie einem iPad, dessen Bildschirm Platz für die gedruckte Seite hat, im festen Layout und überall sonst umfließend. Die Wahl wird zwischen Besuchen gespeichert (`postext-sandbox-epub-layout`), und ein Wechsel schreibt die Datei sofort neu.

- **Erzeugung.** Das EPUB wird beim ersten Öffnen des Tabs geschrieben und erneut, wenn **Neu berechnen** gedrückt wird. Ein Fortschrittsbalken zählt die gesetzten Kapitel, dann die Schritte des Schreibers (Schriften, Bilder und Titelbild; die Seiten oder Kapitel; das Paket), und Screenreader hören, wann die Datei fertig oder fehlgeschlagen ist. Nach einer Änderung zeigt ein Pfeil neben **Neu berechnen**, dass die Datei nicht mehr zum Text passt, wie im Tab PDF. Das Verlassen des Tabs oder ein Wechsel der Darstellungsform bricht eine laufende Erzeugung ab. Ein langes Buch braucht einige Sekunden, in denen die Seite nicht reagiert.
- **Was in die Datei kommt.** Die Metadaten stammen aus dem Front Matter des ersten Kapitels: `title`, `subtitle`, `author` (ein Name oder eine Liste), `publishDate` oder `date`, `isbn` oder `identifier`, `publisher`, `rights` und `description`; die Sprache kommt aus `locale` der Konfiguration. Ein Buch ohne Kennung erhält eine, die aus dem Projekt (oder aus dem Beispielbuch und seiner Sprache) abgeleitet ist, sodass jedes EPUB desselben Buchs in der Bibliothek eines Lesesystems eine Identität behält. Jede Schriftfamilie, die die Gestaltung nennt, wird eingebettet: Teilstücke von Google Fonts nur dort, wo das Buch Zeichen druckt, die sie enthalten, eigene Familien, sofern sie nicht als nicht weitergebbar markiert sind. Bilder kommen so hinein, wie sie gespeichert sind, nie als Druckvorlage des PDF; jedes SVG trägt die Schriften, die sein Text nennt (eigene Familien wie Google-Familien), außer als nicht weitergebbar markierten Familien, die gemeldet werden. Videodateien kommen unter `media/` hinein und werden im Player des Lesesystems abgespielt; eine Datei ohne ihre Bytes wird von ihrer Produktionsadresse abgespielt, die das Paket als entfernte Ressource deklariert, und ein YouTube- oder Vimeo-Video ist sein Vorschaubild, verlinkt mit dem Video. Das Titelbild ist das eigene Bild des Buchs, wenn es eine Bitmap von mindestens 600 px Breite ist, sonst die erste Seite, 1.600 px breit gerendert, ohne den Rand für die Schnittmarken.
- **Das Lesesystem.** Der Tab öffnet die Datei, die er gerade geschrieben hat, also die Bytes, die Sie herunterladen, keine separate Vorschau. Das feste Layout zeigt eine Seite oder, wenn der Bereich breit genug ist, eine Doppelseite, eingepasst; das umfließende Buch wird bildschirmweise geblättert (bei vertikalem Chinesisch von oben nach unten), und seine Seiten laufen von einem Kapitel zum nächsten weiter. Links im Buch bewegen das Lesesystem; Web- und Mail-Links öffnen sich in einem neuen Browser-Tab. ← / →, Bild auf / Bild ab, Pos1 und Ende blättern, und in einem Buch von rechts nach links geht ← vorwärts.
- **Die Werkzeugleiste.** Eine schwebende Leiste wie die des Tabs PDF: **Neu berechnen**, die Pinnadel, **EPUB herunterladen** mit der Dateigröße (die Datei ist nach dem Titel des Buchs benannt), eine Schaltfläche für Warnungen, wenn der Schreiber etwas gemeldet hat, **Inhalt** (eine Sprungliste aus dem Inhaltsverzeichnis des Buchs), **Schrift vergrößern** und **Schrift verkleinern** (nur umfließend, die Leseposition bleibt erhalten), ‹ › und im festen Layout das Seitenfeld. Das Seitenfeld zählt Seiten in der Lesereihenfolge der Datei, wobei das Titelbild 1 ist; die Rahmen benennen jede Seite mit ihrer gedruckten Nummer.
- **Warnungen.** Die Schaltfläche für Warnungen listet auf, was die Datei nicht so tragen konnte, wie das Buch es hat: ein Bild ohne gespeicherte Datei (ein leerer Rahmen tritt an seine Stelle), eine Familie, Stärke oder ein Stil ohne eingebettete Schrift (Lesesysteme ersetzen sie), eine ausgelassene Familie, weil sie nicht weitergegeben werden darf, und alles, was die Darstellungsform nicht ausdrücken kann. Dieselben Meldungen gehen an die Konsole des Browsers.
- **Die Datei prüfen.** Beide Darstellungsformen des Leitfadens und der Beispielbücher bestehen [W3C EPUBCheck](https://www.w3.org/publishing/epubcheck/) 5.4 ohne Fehler oder Warnungen. Um Ihr eigenes Buch zu prüfen, laden Sie es herunter und führen Sie `epubcheck book.epub` aus, oder lesen Sie es in Apple Books, Thorium Reader oder Calibre.

Wie Sie dieselben Dateien aus Ihrem eigenen Code schreiben, beschreibt [EPUB-Bücher](https://postext.dev/de/docs/configuration-programmatic-usage.md#epub-bücher-postext-epub).

### Telefone und kleine Bildschirme

Unterhalb von 768 px Breite wechselt die Sandbox zu einem eigenen Layout:

- **Bedienfelder.** Die Leiste der Bedienfelder wandert an den unteren Fensterrand, mit denselben Schaltflächen in derselben Reihenfolge. Ein geöffnetes Bedienfeld überdeckt die Vorschau, statt neben ihr zu stehen; die Vorschau bleibt darunter, wo sie war, außerhalb der Tab-Reihenfolge, sodass sie sich nach dem Schließen des Bedienfelds auf derselben Seite wiederfindet.
- **Obere Leiste.** Die Ausgabe-Tabs, die Bereichsauswahl (die Wahl der Darstellungsform im Tab EPUB) und die Bedienelemente des Hosts (große Zielflächen, Farbschema, Sprache) teilen sich die Leiste über der Vorschau. Unterhalb von 640 px wird sie zweizeilig: oben Logo, Bereich und Bedienelemente, unten die Tabs, die sich die volle Breite teilen; fünf Tabs passen auf 320 px.
- **Werkzeugleisten.** Die schwebenden Werkzeugleisten der Vorschauen docken unten an der Vorschau an und brechen in eine zweite Reihe um, wenn sie nicht passen.
- **Folio.** Der Tab Folio wird auf dem Bildschirm eines Telefons nicht angeboten (siehe [Tab Folio](https://postext.dev/de/docs/sandbox.md#tab-folio)).
- **PDF.** Telefone und reine Touch-Tablets können kein PDF innerhalb der Seite zeigen (Android hat keinen eingebetteten Betrachter, und iOS zeichnet nur die erste Seite), deshalb zeigt der Tab PDF stattdessen eine Karte mit **PDF öffnen**, die die Datei in einem neuen Tab öffnet; **Herunterladen** in der Werkzeugleiste speichert sie weiterhin.

## Bücher und Kapitel

Alles, was Sie in der Sandbox öffnen, ist ein **Buch**, so wie eine InDesign-Buchdatei je Kapitel ein Dokument zusammenfasst: Konfiguration, eigene Schriften und Ressourcenbestand gelten für das ganze Buch, und jedes **Kapitel** ist ein eigenes Markdown-Dokument. Lange Werke – ein Lehrbuch von fünfhundert Seiten – werden Kapitel für Kapitel bearbeitet, während Nummerierung, Querverweise und Export weiterhin ein einziges Dokument sehen.

- **Die Struktur** liegt im Bedienfeld Kapitel und im Kapitelwechsler des Bedienfelds Text: hinzufügen, umbenennen (Doppelklick auf eine Zeile), umsortieren, ein Kapitel in je eines pro Überschrift der Ebene 1 teilen, ein Kapitel mit dem vorherigen zusammenführen, löschen. Jedes Kapitel behält seinen eigenen Rückgängig-Verlauf und seine Einfügemarke.
- **Ein Kapitel nach dem anderen.** Standardmäßig setzen die Vorschauen das **aktive Kapitel** als Fortsetzung der Kapitel davor: Seine erste Seitenzahl folgt auf die letzte Seite des vorherigen Kapitels, Überschriften der Ebene 1 zählen weiter (Kapitel 4 trägt die Nummer 4, seine Abbildungen 4.1, 4.2, …), Kolumnentitel mit `{chapterNumber}` und `{chapterTitle}` folgen, die Seitenparität von rechter und linker Seite bleibt erhalten (ein Kapitelauftakt fügt eine Vakatseite genau so ein, wie er es mitten im Buch täte), und ein `:ref` auf eine Abbildung, die zuerst in Kapitel 1 erwähnt wird, behält diese Nummer. Die Seitenzahlen der vorhergehenden Kapitel stammen aus dem Layout, das jedes von ihnen zuletzt gezeigt hat; nie besuchte (oder seither bearbeitete) Kapitel werden im Hintergrund eines nach dem anderen gesetzt, und die Kapitelliste zeigt *Seiten ausstehend*, bis sie eintreffen. Die Seitenbereiche sind genau für Kapitel, die auf einer neuen Seite beginnen (der Standard); ein Kapitel, dessen Text auf der vorherigen Seite weitergelaufen wäre, wird stattdessen oben auf eine eigene Seite gesetzt.
- **Ganzes Buch.** Canvas, HTML-Vorschau und Tab PDF können das ganze Buch als ein durchgehendes Dokument zeigen: Wählen Sie **Ganzes Buch** in der Auswahl links in der Tab-Leiste (bei Büchern mit mehr als einem Kapitel). Das Canvas setzt dann alle Kapitel der Reihe nach, jedes nach den Seiten, auf die die vorherigen kamen, und zeigt die zusammengefügten Dokumente – eine Änderung setzt nur ihr Kapitel neu und die folgenden Kapitel nur, wenn sich ihre erste Seite verschoben hat; die Kapitelliste, die Teile `chapter=` und `page=` des Permalinks und die Synchronisierung mit dem Editor folgen dem Kapitel der Seite. Die Wahl wird mit dem Buch gespeichert (ein kurzer Roman liest sich als ein Dokument, ein Lehrbuch Kapitel für Kapitel), und eine Vorlage kann sich über `view.canvasScope` im Manifest so öffnen. Die HTML-Vorschau teilt die Wahl des Canvas und setzt das ganze Buch ab seiner ersten Seite als ein Dokument, wobei Inhaltszeilen und Fragment dem Kapitel jeder Seite folgen; der Tab PDF behält seine eigene Auswahl.
- **Lange Bücher.** Ein Buch mit 120 Kapiteln funktioniert wie ein kurzes. Das Kapitelmenü in der Kopfzeile des Bedienfelds Text scrollt innerhalb des Fensters und öffnet sich beim aktiven Kapitel; die Pfeiltasten bewegen sich von dort aus. Ein Buch in Teilen (Direktivenblöcke `:::part` in seinen Kapiteln) führt seine Kapitel unter ihren Teilen auf, im Menü und im Bedienfeld Kapitel, und ein Klick auf einen Teil im Menü öffnet dessen erstes Kapitel. Ab 30 Kapiteln hat das Menü oben ein Suchfeld, das Kapitelnummern (`27`) und Wörter der Titel und Teilnamen (`埋香`, `卷三`) findet; die Eingabetaste öffnet den ersten Treffer. Solange eine Eingabemethode Zeichen zusammensetzt (Zhuyin, Cangjie, Pinyin, Kana), gehören Eingabetaste und Pfeiltasten ihr: Die Eingabetaste bestätigt die Umwandlung und öffnet nichts. Die Kapiteldateien eines Beispielbuchs laden zu acht auf einmal, und während die Kapitel im Hintergrund paginiert werden, zeigt das Bedienfeld Kapitel den Fortschritt (*Umbruch 34/120*). Canvas und HTML-Vorschau zeigen ein Buch mit mehr als 200 Kapiteln immer kapitelweise, gleich was das Buch oder sein Manifest verlangen: Alle Kapitel auf einmal zu setzen hält das ganze Buch im Speicher. Ein Buch darunter kann sich ganz öffnen: 紅樓夢 (129 Kapitel, rund 2.000 Seiten) braucht auf dem Canvas etwa 25 Sekunden und 100 MB. Der Tab PDF kann jedes Buch weiterhin ganz exportieren.
- **Front Matter.** Das Front Matter des ersten Kapitels ist das Front Matter des Buchs (Titel, Autor, …). Ein Front-Matter-Block am Anfang eines anderen Kapitels wird ignoriert, und das Bedienfeld Prüfungen weist darauf hin. `buildBundle` folgt derselben Regel, sodass ein Buch in der Sandbox und in Ihrem eigenen Programm gleich gerendert wird.
- **Seitenzahlen.** Jedes Kapitel wird als eigenes Dokument gesetzt, deshalb zählt `{totalPages}` die Seiten des Kapitels. `{bookTotalPages}` zählt das ganze Buch: Sobald die Seiten jedes Kapitels bekannt sind, setzen die Vorschauen jedes Kapitel mit dieser Gesamtzahl (nur wenn eine Kopf- oder Fußzeile oder eine Gestaltung sie druckt). Bis dahin druckt ein Kapitel die Seiten bis zu seinem eigenen Ende. **Ganzes Buch** im Tab PDF zählt die Seiten, die es setzt, sodass die Datei immer die tatsächliche Gesamtzahl des Buchs druckt.
- **Kapitelauftakte.** Zwischen Kapiteln wird kein Seitenumbruch erzwungen: Ein Kapitel, dessen erster Block eine Überschrift der Ebene 1 ist, beginnt über die eigene Einstellung *Umbruch davor* der Überschrift auf einer neuen Seite, genau wie ein Kapitel, das mitten im Dokument beginnt.
- **Synchronisierung.** Ein Klick auf einen Absatz eines beliebigen Kapitels in der Canvas- oder HTML-Vorschau wechselt den Editor zu diesem Kapitel und setzt die Einfügemarke; die Einfügemarke des Editors wird in den Vorschauen hervorgehoben, wo immer das Kapitel im Buch steht. Warnungen tragen ihr Kapitel.
- **Bestehende Dokumente** öffnen sich als Buch mit einem Kapitel; nichts ändert sich, bis ein zweites Kapitel hinzukommt.

## Comics bearbeiten

Ein Kapitel mit Comicseiten (`:::page`) oder Streifen (`:::strip`) lässt sich direkt auf den Seiten bearbeiten, im Tab Canvas, im Tab HTML und im Auswahlmodus von Folio. Die Werkzeuge funktionieren gleich bei einem Streifen, der in einer Spalte steht, an den Kopf einer Seite oder über sie gleitet, schmaler als seine Satzbreite ist oder unter einer Legende steht, und schreiben in den eigenen Direktivenblock des Streifens. Jede Änderung wird in das Markdown des Kapitels geschrieben, wie es eine getippte Änderung täte, sodass das Rückgängig des Editors sie zurücknimmt. Markup und Regeln des Letterings erklärt [Comics](https://postext.dev/de/docs/comics.md).

- **Trennlinien.** Über dem Zwischenraum zwischen zwei Panels wird der Zeiger zum Größenänderungscursor. Ziehen Sie ihn, um die Trennlinie zu verschieben; beim Loslassen wird der neue Prozentwert in das Attribut `split` der Seite geschrieben (dem Direktivenblock hinzugefügt, wenn die Seite keines hat), und die Seite wird neu gesetzt. Umschalt rastet die Linie in Schritten von 5 % ein, Alt verschiebt nur das Ende, das dem Zeiger näher ist, und schrägt die Linie so an, und kein Panel wird schmaler als 5 %. Während Sie ziehen, wird ein Panel, dessen Bild seinen Sicherheitsbereich nicht mehr im Blick behielte, mit einem Hinweis markiert. Jede Trennlinie ist auch ein fokussierbarer Trenner: Die Pfeiltasten verschieben sie um 1 % (mit Umschalt um 5 %), die Eingabetaste schreibt die Position, Escape setzt sie zurück.
- **Teilen und verbinden.** Über einem Panel bietet eine kleine Werkzeugleiste **Mit waagerechter Linie teilen**, **Mit senkrechter Linie teilen** (für die neue Zelle wird direkt nach diesem Panel eine leere Zeile `::panel` hinzugefügt) und **Mit dem nächsten Panel verbinden**: Die Linie zwischen ihnen verschwindet, und das verbundene Panel behält das Bild des ersten Panels und übernimmt die Skriptzeilen beider. Die Panels sind auch mit der Tabulatortaste erreichbar: Ein fokussiertes Panel wird umrandet, H teilt es mit einer waagerechten Linie, V mit einer senkrechten, und M verbindet es mit dem nächsten Panel; der Fokus bleibt auf dem Panel, nachdem die Seite neu gesetzt ist. Die Eingabetaste öffnet die Werkzeugleiste, Escape führt von dort zurück zum Panel.
- **Sprechblasen.** Ziehen Sie eine Sprechblase, um sie festzusetzen: Beim Loslassen erhält ihre Skriptzeile `at="x% y%"`, den Punkt in Prozent des Panelbilds (der Zelle bei einem Panel ohne Bild), sodass die Fixierung durch Zuschnitte, verschobene Trennlinien und Übersetzungen hindurch an derselben Stelle der Zeichnung bleibt. Eine verbundene Gruppe bewegt sich als Ganzes, fixiert durch ihre erste Sprechblase. Die Pfeiltasten verschieben eine fokussierte Sprechblase um 1 % (mit Umschalt um 5 %), und ein Doppelklick auf eine fixierte Sprechblase entfernt ihr `at` und gibt sie an die automatische Platzierung zurück. Ein einfacher Klick setzt die Einfügemarke des Editors auf die Zeile der Sprechblase.
- **Hinweis auf Überstand.** Während sich eine Sprechblase bewegt, per Zeiger oder per Pfeiltasten, prüft die Vorschau, wo sie landen würde. Würde sie ein Gesicht oder eine Sperrzone verdecken oder weiter aus ihrem Panel ragen als jetzt, wird der bewegte Umriss orange, die Gesichter und Sperrzonen des Panels werden gestrichelt gezeichnet, und der Tooltip sagt, was zutrifft: *Hier würde sie ein Gesicht verdecken.*, *Hier würde sie einen frei gehaltenen Teil des Bilds verdecken.*, *Hier würde sie aus dem Panel ragen.* Eine Zeile mit `break` wird nicht gemeldet, wenn sie ihr Panel verlässt. Der Hinweis sieht nicht voraus, wie die anderen Sprechblasen des Panels ausweichen, um Platz zu machen.
- **Dorne.** Über der Spitze eines Dorns wird der Zeiger zum Fadenkreuz. Ziehen Sie die Spitze dorthin, wohin der Dorn zeigen soll: Beim Loslassen erhält die Zeile `to="x% y%"`, den Punkt in Prozent des Panelbilds, und der Dorn dreht sich dorthin und endet kurz davor, wie er es vor einem Mund tut. Escape bricht das Ziehen ab, und ein Doppelklick auf die Spitze entfernt `to`, sodass der Dorn wieder auf seinen Sprecher zeigt. Über die Tastatur wechselt T auf einer fokussierten Sprechblase zu ihrem Dorn: Die Pfeiltasten verschieben den Zielpunkt um 1 % (mit Umschalt um 5 %), die Eingabetaste schreibt ihn, Escape setzt ihn zurück, Entf entfernt `to`, und T kehrt zur Sprechblase zurück.
- **Sprecher und Sperrzonen.** Bei einem Bild im [Bedienfeld Ressourcen](https://postext.dev/de/docs/sandbox.md#bedienfeld-ressourcen) öffnet das Feld **Sicherheitsbereich und Lettering** einen Dialog mit drei Modi. **Sicherheitsbereich** markiert den Teil des Bilds, der sichtbar bleiben muss. **Sprecher** setzt einen Punkt je Figur: Ein Klick auf das Bild fügt dort einen Sprecher hinzu und fokussiert seine ID, die der Sprecherschlüssel sein muss, den das Skript verwendet (`maya: …`); Mund, Kopf (wohin Gedankenblasen zeigen) und Gesicht (nie von einer Sprechblase verdeckt) werden an ihren Platz gezogen. **Sperrzonen** sind Rechtecke, die keine Sprechblase verdeckt, durch Ziehen über das Bild gezeichnet. Derselbe Modus markiert die Gesichter von Figuren, die nicht sprechen (**Stummes Gesicht hinzufügen** oder der Schalter **Ein Gesicht** in der Zeile einer Zone): Keine Sprechblase verdeckt ein solches Gesicht, während eine Sperrzone nachgibt, wenn ein Panel keinen anderen Platz hat. Jede Markierung lässt sich mit den Pfeiltasten verschieben (Umschalt für größere Schritte) und mit Entf entfernen; der Dialog hat ein eigenes Rückgängig, und ein Sprecher außerhalb des Sicherheitsbereichs wird markiert.
- **Einstellungen.** Die Gruppe **Comics** des Bedienfelds Gestaltung enthält die Comic-Konfiguration: Leserichtung und gespiegelte Bilder, Rahmen und Zwischenräume, das Standardpanel und die benannten Panelstile, das Lettering und die Sprechblasenstile, jeder mit einer Vorschau seines Umrisses.
- **Editor und Prüfungen.** Der Texteditor färbt Zeilen mit `:::page`, `:::strip` und `::panel` sowie Schlüssel und Attribute der Skriptzeilen ein. Das Bedienfeld Prüfungen führt die Comic-Warnungen (eine unlesbare Teilung, Panels und Zellen, die nicht zusammenpassen, eine Sprechblase, die nicht passt …) bei der Zeile auf, die sie betreffen; siehe [Comics › Comic-Warnungen](https://postext.dev/de/docs/comics.md#comic-warnungen).

## Word-Dokumente

Manuskripte kommen meist als Word-Dateien. Das Bedienfeld Text importiert eine `.docx` direkt, ohne KI-Agenten und ohne etwas zu installieren, und ordnet ihre Formatvorlagen so zu, wie *Platzieren* es in InDesign tut. **Word-Dokument importieren** liest die Datei im Browser (sie wird nie hochgeladen) und öffnet einen Dialog; das Buch ändert sich erst, wenn Sie **Importieren** drücken. Eine Datei, die kein Word-Dokument ist, etwa eine alte binäre `.doc`, wird mit einer entsprechenden Meldung abgewiesen; speichern Sie sie zuerst in Word als `.docx`.

Der Dialog hat diese Teile, die sich jeweils einklappen lassen:

- **Qualität des Originals.** Eine Einschätzung, wie das Manuskript vorbereitet wurde: *Gut formatiert* (es lässt sich sauber umwandeln), *Teilweise formatiert* (einige Absätze sind von Hand formatiert) oder *Keine Formatvorlagen* (alles steht in „Standard“, daher kommt der Text als einfache Absätze an). Darunter die Zahlen (Absätze, wie viele davon in einer anderen Formatvorlage als „Standard“ stehen, Bilder, Tabellen, Anmerkungen) und was gefunden wurde, jeweils mit den ersten Wörtern einiger Absätze, in denen es vorkommt: Absätze mit von Hand gesetzter Formatierung (Schriften, Größen, Farben, Ausrichtung; sie wird weggelassen, da die Gestaltung sie festlegt), kurze fette Absätze, die wie von Hand getippte Überschriften aussehen, getippte Nummern oder Aufzählungszeichen statt Word-Listen, manuelle Zeilenumbrüche, manuelle Seitenumbrüche, leere Absätze als Abstand, Tabulatoren und doppelte Leerzeichen, nachverfolgte Änderungen (Einfügungen bleiben erhalten, Löschungen werden weggelassen; nehmen Sie sie vorher in Word an oder lehnen Sie sie ab), Kommentare (nicht importiert), Textfelder (ihr Text folgt dem Absatz, an dem sie jeweils verankert sind), Formeln (in TeX umgewandelt; prüfen Sie sie), verborgener Text und Bilder in Formaten, die der Browser nicht anzeigen kann (EMF, WMF, TIFF).
- **Importvorlage.** Die verwendete Zuordnung: *Automatisch* (nach Namen der Formatvorlage), eine gespeicherte Vorlage oder *In diesem Dokument gespeichert* bei einer aus der Sandbox exportierten Datei. **Als neue Vorlage speichern** fragt nach einem Namen und speichert die Zuordnung, einschließlich jeder Formatvorlage dieses Dokuments, im Browser; **Änderungen speichern** aktualisiert die gewählte Vorlage; die Download-Schaltfläche schreibt sie als JSON-Datei (`.json`), und die Upload-Schaltfläche lädt eine, sodass ein ganzes Team dieselbe Vorlage teilen kann. Löschen fragt nach. Die zuletzt verwendete Vorlage wird beim nächsten Mal zuerst angeboten.
- **Absatzformate.** Jede Absatzformatvorlage, die das Dokument verwendet, mit der Zahl der Absätze darin und den ersten Wörtern eines davon, und was daraus wird: **Grundtext**, **Überschrift** (eine Ebene von 1 bis 6 und, wenn die Gestaltung Überschriftenstile hat, einer davon), **Absatzformat** (eines der Absatzformate der Gestaltung; aufeinanderfolgende Absätze darin ergeben eine Gruppe `:::paragraphs`), **Kasten** (aufeinanderfolgende Absätze ergeben einen Kasten dieses Typs), **Kastentitel** (eröffnet einen Kasten mit dem Text des Absatzes als Titel), **Zitat**, **Legende** des Bilds oder der Tabelle daneben, **Beginn eines neuen Kapitels**, **Postext-Markdown, wie geschrieben** (der Text wird unverändert übernommen, für in Word getippte Direktiven) oder **Weglassen**. Absätze in nummerierten Listen und Aufzählungen von Word werden unabhängig von ihrer Formatvorlage zu Postext-Listen, mit ihren Nummern und ihrer Verschachtelung. **Gedicht (:::verse, Zeile für Zeile)** setzt die Absätze der Formatvorlage als Gedicht `:::verse`, wahlweise in einem der Absatzformate der Gestaltung: Umschalt+Eingabe bricht eine Zeile um, ein Absatz ist eine Strophe, einzeilige Absätze hintereinander ergeben eine Strophe und ein leerer Absatz einen Strophenwechsel; vermutet wird es bei Formatvorlagen namens Verse, Poem oder Poesía.
- **Zeichenformate.** Dasselbe für Zeichenformatvorlagen: **Normaler Text**, **Fett**, **Kursiv**, **Fett kursiv**, **Kapitälchen**, **Hochgestellt**, **Tiefgestellt**, **Chip** (einer der Chip-Stile der Gestaltung), **Postext-Markdown, wie geschrieben** oder **Weglassen**.
- **Optionen.** Manuelle Zeilenumbrüche (Umschalt+Eingabe) bleiben als Zeilenumbrüche im Absatz erhalten (ein Backslash am Ende der Markdown-Zeile, der Standard), werden mit einem Leerzeichen verbunden oder beginnen einen neuen Absatz; von Hand gesetztes Fett, Kursiv, Kapitälchen und Hoch- und Tiefstellungen bleiben erhalten oder werden weggelassen; kurze fette Absätze bleiben Absätze oder werden Überschriften einer Ebene; manuelle Seitenumbrüche werden weggelassen (die Gestaltung bestimmt die Seitenwechsel) oder als `:::pagebreak` behalten; Bilder und Tabellen werden als Ressourcen hinzugefügt oder nicht.
- **Vorschau des Markdown**, aktualisiert, sobald sich die Zuordnung ändert.

Die Fußzeile wählt, wohin der Text geht: **Dieses Kapitel ersetzen**, **Neue Kapitel nach diesem** oder **Ganzes Buch ersetzen**; die beiden letzten beginnen bei jeder Überschrift der Ebene 1 ein Kapitel. Bilder (PNG, JPEG, GIF, WebP, SVG) werden zu Abbildungsressourcen und Tabellen zu Tabellenressourcen (Kopfzeilen, verbundene Zellen, Spaltenbreiten und Zellfüllungen bleiben erhalten), jede mit `::resource{id="…"}` an ihrer Stelle platziert und mit einem Legendenabsatz daneben beschriftet, wobei ihre getippte Marke (*Abbildung 3.*) weggelassen wird, weil Postext Ressourcen selbst nummeriert. Fußnoten und Endnoten werden zu Postext-Fußnoten (`[^1]`), Registereinträge von Word (XE-Felder) zu Marken `:index`, Links bleiben Links, und Formeln werden zu `$…$` / `$$…$$`. Ein Tabulator im Fließtext wird zu `:tab` mit dem Tabstopp, den Word dafür festgelegt hat (`:tab{at=432pt align=end leader="."}`), oder zu einem bloßen `:tab`, wenn der Absatz einem Absatzformat des Buchs mit eigenen Tabstopps zugeordnet wird; die Füllzeichen Punkt, Bindestrich und Mittelpunkt von Word werden zu `.`, `-` und `·`, seine Füllzeichen Unterstrich und dicke Linie zu einer Linie. Ein Tabulator in einer Überschrift, einer Tabellenzelle oder einer Anmerkung wird zu einem Leerzeichen.

Bevor sie Formatvorlagen nach Namen abgleicht, erkennt die automatische Zuordnung die eigenen Rollen von Word in jeder Sprache der Oberfläche (*Überschrift 1*–*6*, *Titel*, *Zitat*, *Beschriftung*; Absätze von Inhaltsverzeichnis, Index, Kopf- und Fußzeile werden weggelassen) sowie die Formate der Gestaltung: Eine Word-Formatvorlage, die so heißt wie ein Absatzformat, ein Kastentyp, ein Überschriftenstil oder ein Chip-Stil des Buchs (nach ID oder Name, ohne Rücksicht auf Groß-/Kleinschreibung und Akzente), wird diesem zugeordnet.

**Nach Word exportieren** lädt das geöffnete Kapitel oder das ganze Buch als `.docx` herunter, damit jemand in Word daran arbeiten kann. Dieselbe Vorlage wird umgekehrt angewendet: Überschriften erhalten die Überschriften-Formatvorlagen von Word, Absatzformate, Kästen, Zitate und Chips erhalten eigene Word-Formatvorlagen (benannt nach den Formaten der Gestaltung, *Callout: Note*, *Chip: Key*), Listen werden zu Word-Listen, Fußnoten zu Word-Fußnoten, und Links bleiben Links. `:tab` wird zu einem Word-Tabulator, ein `:tab{…}` mit eigenem Tabstopp bleibt, wie es geschrieben ist, und die Tabstopps eines Absatzformats, die auf eine Länge gesetzt sind, werden zu den Tabstopps seiner Word-Formatvorlage, mit dem nächstliegenden Füllzeichen von Word (ein Tabstopp bei `'end'` oder bei einem Prozentwert hängt von der Seite ab, auf der Word den Text setzt, und wird weggelassen). Was Word nicht darstellen kann (Front Matter, Code- und Direktivenblöcke, Direktiven, `:ref`, Formeln, Marken `:index`, Ressourcenzeilen), bleibt, wie es geschrieben ist, in den grauen Formatvorlagen *Postext Markup* erhalten. Ein Buch wird mit einem Absatz *Postext Chapter* am Anfang jedes Kapitels exportiert. Die Vorlage reist in der Datei mit, sodass sich das bearbeitete Dokument mit derselben Zuordnung wieder importieren lässt, als ganzes Buch, wenn es Kapitelabsätze enthält. Lassen Sie den grauen Text, wie er ist, kommt der Text so zurück, wie er hinausging; Fußnotenmarken werden neu nummeriert (`[^1]`, `[^2]`…), was gleich gedruckt wird, und `_italic_` kommt als `*italic*` zurück.

Für Umwandlungen, die dieser Dialog nicht abdeckt (Quellen in PDF, PowerPoint, EPUB oder IDML, Nachbildung der Layoutregeln eines Originals), verwenden Sie den [Agent-Skill](https://postext.dev/de/docs/skill.md).

## Persistenz

Die Sandbox speichert Ihre Arbeit automatisch im Browser:

- **Buch und Konfiguration** – Die Kapitel, das aktive Kapitel und der Canvas-Bereich werden automatisch in `localStorage` unter `postext-sandbox-book` gespeichert (ein einzelnes Dokument, das eine frühere Version gespeichert hat, wird aus `postext-sandbox-markdown` als Buch mit einem Kapitel gelesen und beim ersten Speichern migriert); die Konfiguration wird nach 1 Sekunde Inaktivität ohne Standardwerte gespeichert, sodass nur Ihre Übersteuerungen abgelegt werden, zusammen mit ihrer Version (`postext-sandbox-config-version`); eine Konfiguration, die gespeichert wurde, bevor es die Version gab, wird wie unten unter *Überschriftenumbrüche, gespeichert mit postext 1.4 oder früher* beschrieben gelesen
- **Zustand der Oberfläche** – Das aktive Bedienfeld und der aktive Tab des Ansichtsbereichs, die Breite der Seitenleiste, die geöffnete Gruppe des Bedienfelds Gestaltung (`postext-sandbox-settings-group`), dessen Schalter *Alle Erklärungen zeigen* (`postext-sandbox-settings-help`) und der Auf-/Zuklappzustand der Abschnitte, ausgeblendete Beispielbücher, Zoom-, Anpassungs- und Ansichtsmodus des Canvas, Schriftskalierung und Spaltenmodus der HTML-Ansicht, die Darstellungsform des Tabs EPUB (`postext-sandbox-epub-layout`) und der Pin-Zustand der Werkzeugleisten werden alle in `localStorage` gespeichert
- **Geöffnetes Buch** – Die ID des geöffneten eigenen Buchs (ein *project*) wird in `localStorage` unter `postext-sandbox-project` gespeichert; die Projekte selbst (Kapitel, Konfiguration und Ressourceneinträge; Eintrag `version: 9`, die `CONFIG_VERSION` der Engine, mit der auch die Arbeitskonfiguration und Exporte von `postext-config.json` gestempelt werden, sodass jedes einmal migriert wird, wenn sich die Regeln der Engine ändern; Einzeldokument-Einträge früherer Versionen werden beim Lesen migriert, und die Überschriftenumbrüche von Einträgen älter als Version 3, die Formelgröße von Einträgen älter als Version 4, der Abstand unter Abbildungen im Text von Einträgen älter als Version 5, der Abstand um Abbildungen im Text in Kästen, die Auszeichnungen in Überschriften, die Größen der Initialen, der Platz unter einer Doppelpunktzeile und die Kastenschnitte von Einträgen älter als Version 6, die Umbrüche an Strichen und der Umbruch von Flattersatz von Einträgen älter als Version 7 sowie die Teilungen unter einer Überschrift, die Umbrüche an Bindestrichen von Komposita und der Abstand unter Containern `:::paragraphs` von Einträgen älter als Version 8 werden wie unten beschrieben fixiert) liegen im Speicher `projects` der IndexedDB-Datenbank der Sandbox, und ihre binären Daten teilen sich die Blob- und Schriftenspeicher mit dem Arbeitsdokument. Daten werden per Garbage Collection entfernt, wenn weder das Arbeitsdokument noch ein Projekt auf sie verweist
- **Bearbeitete Beispielbücher** – Ihre Fassung eines Beispielbuchs (seine Kapitel, das aktive Kapitel, der Canvas-Bereich, die Konfiguration und die Ressourceneinträge, zusammen mit dem, was das Beispiel beim Öffnen übernommen hat) wird im Speicher `presetDrafts` der IndexedDB-Datenbank der Sandbox gespeichert, ein Eintrag je Beispiel und Inhaltssprache, und ihre Dateien werden von der Garbage Collection wie die eines Projekts behalten. Original wiederherstellen löscht sie
- **Titelbilder von Beispielbüchern** – Das Titelbild, das von der ersten Seite eines Beispielbuchs ohne mitgeliefertes Vorschaubild genommen wird, liegt im Speicher `presetCovers` der IndexedDB-Datenbank der Sandbox, ein Eintrag je Beispiel und Inhaltssprache (siehe [Bedienfeld Bücher](https://postext.dev/de/docs/sandbox.md#bedienfeld-bücher)). Ein eigenes Buch hält sein Titelbild in seinem Projekteintrag.
- **Speichern beim Verlassen** – Ausstehende Änderungen werden sofort geschrieben, wenn die Seite verborgen oder geschlossen wird, wenn Sie die Sandbox über einen Link (das Logo) verlassen und bevor sich ein anderes Buch öffnet, statt erst nach der Pause von 1 Sekunde
- **Geöffnetes Beispielbuch** – Die ID der zuletzt geladenen Vorlage wird in `localStorage` unter `postext-sandbox-preset` gespeichert, sodass die Schaltflächen Zurücksetzen der Bedienfelder diese Vorlage über Sitzungen hinweg wiederherstellen (eine Vorlage, die nicht mehr ausgeliefert wird, erscheint als nicht verfügbar). Was diese Vorlage übernommen hat – ihr Paket-Fingerabdruck plus Hashes von Markdown, Konfiguration und Ressourcenbestand –, wird unter `postext-sandbox-preset-applied` gespeichert; daran erkennt der nächste Besuch ein unverändertes von einem bearbeiteten Dokument
- **Ressourcen und Schriften** – Ressourceneinträge, ihre binären Blobs (Bitmaps und SVGs) und eigene Schriftdateien werden in der **IndexedDB** gespeichert; ist die IndexedDB nicht verfügbar (z. B. in manchen privaten Browsermodi), erscheint im Bedienfeld Prüfungen (unter *Browser*) die Warnung *Speicher nicht verfügbar*
- **Permalink** – Das URL-Fragment nennt, was auf dem Bildschirm steht, sodass ein Neuladen, ein Lesezeichen oder ein an jemand anderen weitergegebener Link auf derselben Seite desselben Buchs im selben Betrachter landet: `#preset=bioquimica-feduchi&lang=es&view=canvas&chapter=1&page=7` öffnet die Vorlage Bioquímica auf Spanisch im Tab Canvas bei Kapitel 1, Seite 7 (der auf der Seite gedruckten Zahl). `view` ist `canvas`, `pdf`, `folio`, `html` oder `epub`; im Tab Folio ist die Seite die rechte Seite der geöffneten Doppelseite. Ein lokales Projekt wird als `project=ID` benannt – seine Speicher-ID, sodass nur der Browser, der das Projekt hält, einem solchen Link folgen kann. Die Sandbox hält das Fragment aktuell, während Sie Bücher, Tabs und Kapitel wechseln und während Sie scrollen. Ein weggelassener Teil bedeutet, was gerade da ist (keine Seite: die erste Seite des Kapitels; kein Buch: das zuletzt geöffnete), und ein Buch, das der Browser nicht öffnen kann, wird übergangen. Einen Link in die Adressleiste einer geöffneten Sandbox einzufügen öffnet ihn an Ort und Stelle. Wird die Seite über einen Link auf ein anderes Buch als das zuletzt geöffnete aufgerufen, zeigt die Sandbox ihren Ladezustand, bis das verlinkte Buch da ist, nie das vorherige. Ein Host kann mit dem Prop `hashBundles` auch auf eigene Bücher verlinken (siehe [Props](https://postext.dev/de/docs/sandbox.md#props)): Die Website öffnet ein Rezept des Rezeptbuchs mit `#recipe=<slug>&lang=es`. Der erste Besuch importiert die `.postext`-Datei des Rezepts als eines Ihrer Bücher. Ein späterer Besuch desselben Links fragt zuerst (*Sie haben dieses Buch bereits*): **Meine Kopie öffnen** öffnet dieses Buch samt Ihren Änderungen, und **Durch die veröffentlichte Fassung ersetzen** importiert das Rezept neu, das seither korrigiert worden sein kann, und löscht Ihre Kopie, sobald die neue geöffnet ist; Escape behält Ihre Kopie. Das Fragment nennt dann das Projekt. Die Sprache der Oberfläche bleibt im Pfad (`/en/sandbox`, `/es/sandbox`); `lang` ist die Inhaltssprache eines zweisprachigen Pakets, ein beliebiges BCP-47-Kennzeichen in kanonischer Schreibung (`lang=zh-hant` wird als `zh-Hant` gelesen). Ein Kennzeichen, das das Paket nicht aufführt, öffnet die Ausgabe, die es bedient: `zh-TW` und `zh-HK` öffnen die traditionell-chinesische (`zh-Hant`), `zh` und `zh-CN` die vereinfachte (`zh-Hans`), `en-GB` die englische. Die jeweils andere chinesische Schrift wird nur gelesen, wenn das Paket keine Ausgabe in der des Lesers hat: Ein Link mit `zh-TW` auf ein Buch in `zh-Hans` und Englisch öffnet den vereinfachten Text, nicht den englischen. Ein Link ohne `lang` öffnet die `openLocale` des Pakets, sofern es eine nennt, sonst die Ausgabe in der Sprache der Oberfläche. Kapitel und Seite eines Links gelten für die Ausgabe, die er öffnet, und das Fragment nennt diese Ausgabe dann mit ihrem eigenen Kennzeichen (`lang=zh-TW&chapter=28` wird zu `lang=zh-Hant&chapter=28`).

**Überschriftenumbrüche, gespeichert mit postext 1.4 oder früher.** Bis postext 1.4 setzte eine Konfiguration mit einem Objekt `headings` ihre Überschriften der Ebene 1 ohne Seitenumbruch, sofern sie den Schalter *Umbruch davor* für H1 nicht ausdrücklich setzte (und beim Speichern ging ein ausgeschalteter H1-Umbruch verloren), ein unvollständiger H1-Umbruch nahm sein fehlendes Feld aus dem Standard ohne Umbruch, und der Umbruch eines Überschriftenstils tat dasselbe, statt mit dem seiner Ebene zusammengeführt zu werden. Die Engine behält jetzt den Standard jeder Ebene – H1 beginnt auf einer neuen rechten Seite (`always-odd`) – und führt einen unvollständigen Umbruch damit zusammen. Damit ein damals gespeichertes Buch seine Seiten behält, schreibt die Sandbox diese Umbrüche aus, wenn sie einen Projekteintrag älter als Version 3 oder eine Arbeitskonfiguration ohne Version liest: `enabled: false` bei H1, wo der Umbruch aus war, und `parity: 'any'` neben einem `enabled: true`, das keine Parität nannte, bei H1 und bei Überschriftenstilen. Das Bedienfeld Gestaltung zeigt dann den Umbruch, mit dem die Seiten gesetzt wurden. Seit postext 1.5 tragen auch Dateien die Version: Eine `.postext`-Datei, deren Manifest kein `configVersion` hat, und eine `postext-config.json` ohne Version wurden von postext 1.4 oder früher geschrieben und werden beim Import oder Öffnen genauso gelesen (siehe [Pakete, die postext 1.4 oder früher geschrieben hat](https://postext.dev/de/docs/configuration-programmatic-usage.md#pakete-die-postext-14-oder-früher-geschrieben-hat)).

**Formelgröße, gespeichert vor postext 1.5.** Bis postext 1.4 kam jede Formel 1,131-mal größer heraus, als ihr *Größenfaktor* angibt (siehe [Formelgröße](https://postext.dev/de/docs/configuration-text.md#mathematik)). Damit ein damals gespeichertes Buch seine Seiten behält, fixiert die Sandbox diese Größe, wenn sie einen Projekteintrag älter als Version 4 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 4` ist, oder eine vorher exportierte `postext-config.json`: *Größenfaktor* wird zum gespeicherten Faktor × 1,1312, und ein Abstand abgesetzter Formeln in `em` wird durch 1,1312 geteilt, sodass die Formeln und der Raum um sie bleiben, wie sie waren. Ein Buch, dessen Kapitel kein `$` enthalten, bleibt, wie es war (eine `postext-config.json` enthält keine Kapitel, daher wird ihre Größe immer fixiert, wenn Formeln eingeschaltet sind), ebenso eines mit ausgeschaltetem *LaTeX aktivieren*. Der Abschnitt Formeln zeigt dann die Werte, mit denen das Buch gesetzt wird; setzen Sie *Größenfaktor*, *Abstand oben (abgesetzt)* und *Abstand unten (abgesetzt)* zurück, um es in der heutigen Größe zu setzen. Die Fixierung wird einmal geschrieben: Der Eintrag wird unter der aktuellen Version erneut gespeichert und ab dann so gelesen, wie er ist. Eine damals übernommene und nie bearbeitete Vorlage gilt weiterhin als unverändert (die Sandbox vergleicht sie mit ihren fixierten Werten, und das gilt auch für die Fixierung der Überschriftenumbrüche): Neu laden oder Bücher wechseln fragt nicht nach dem Verwerfen von Änderungen, die Sie nie gemacht haben, und eine neuere Version der Vorlage, etwa die des eingebauten Leitfadens, ersetzt sie weiterhin.

**Abbildungen im Text, gespeichert vor postext 1.5.** Bis postext 1.4 hielt eine im Text gesetzte Abbildung oder Tabelle (Platzierung *Im Text (hier)*) nur über sich eine Zeile Abstand: Der Text danach setzte an der nächsten Rasterlinie wieder ein, wie nah diese auch war. Jetzt hält sie dieselbe Zeile auch darunter (**Spalten → Abstand um Abbildungen im Text**, *Darüber und darunter*). Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Abstand um Abbildungen im Text* auf *Nur darüber*, wenn sie einen Projekteintrag älter als Version 5 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 5` ist, oder eine vorher exportierte `postext-config.json`, sofern eine Zeile des Buchs eine Ressource einbettet – `::resource{id="…"}` allein in seiner Zeile, keine Erwähnung im Text. Eine `postext-config.json` enthält keine Kapitel, daher wird es dort immer gesetzt, wenn die Datei älter ist. Wählen Sie *Darüber und darunter*, um das Buch mit den heutigen Abständen zu setzen.

**Abbildungen in Kästen, gespeichert vor postext 1.5.** Bis postext 1.4 stand eine in einem Kasten im Text gesetzte Abbildung oder Tabelle direkt am umgebenden Kastentext. Jetzt hält sie über sich eine Zeile des Kastentexts Abstand, und mit *Darüber und darunter* auch darunter (**Spalten → Abstand um Abbildungen in Kästen**). Damit ein damals gespeichertes Buch seine Seiten behält, schaltet die Sandbox *Abstand um Abbildungen in Kästen* aus, wenn sie einen Projekteintrag älter als Version 6 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 6` ist, oder eine vorher exportierte `postext-config.json`, sofern ein Kasten des Buchs eine Ressource in einer eigenen Zeile einbettet. Eine `postext-config.json` enthält keine Kapitel, daher wird es dort immer ausgeschaltet, wenn die Datei älter ist. Schalten Sie es ein, um das Buch mit den heutigen Abständen zu setzen.

**Auszeichnungen in Überschriften und Initialen, gespeichert vor postext 1.5.** Bis postext 1.4 druckte eine Überschrift die Wörter ihrer Auszeichnungen `*italic*`, `**bold**` und anderer in ihrem eigenen einfachen Stil, und eine Initiale ohne Größe war so hoch wie alle Zeilen, über die sie reicht, mit ihrer Oberkante über der ersten Zeile. Jetzt setzt eine Überschrift ihre Auszeichnungen (**Überschriften → Auszeichnungen in Überschriften**), und die Oberkante einer Initiale steht auf der Höhe der Versalien der ersten Zeile. Damit ein damals gespeichertes Buch seine Seiten behält, schaltet die Sandbox *Auszeichnungen in Überschriften* aus, wenn sie einen Projekteintrag älter als Version 6 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 6` ist, oder eine vorher exportierte `postext-config.json`, sofern eine Überschrift des Buchs eine Auszeichnung trägt (eine `postext-config.json` enthält keine Kapitel, daher wird er dort immer ausgeschaltet, wenn die Datei älter ist); und sie schreibt die Größe, in der jede Initiale gesetzt war, in ihre **Größe der Initiale**. Schalten Sie den Schalter ein oder löschen Sie die Größe, um das Buch nach den heutigen Regeln zu setzen. Beachten Sie, dass eine kursive Überschrift, deren ganzer Titel mit `*…*` ausgezeichnet ist, dann aufrecht herauskommt.

**Listen nach einem Doppelpunkt, gespeichert vor postext 1.5.** Bis postext 1.4 hielt *Doppelpunkt bei Liste halten* eine Zeile Platz unter der auf einen Doppelpunkt endenden Zeile für genug für die Liste, sodass ein zweizeiliger erster Eintrag, den die Regeln für Witwen und Waisen zusammenhalten, in die nächste Spalte rückte und die Doppelpunktzeile allein am Fuß ließ. Jetzt verlangt sie den Platz, den der erste Eintrag braucht (**Typografie → Grundtext → Witwen, Waisen und kurze Zeilen → Platz unter dem Doppelpunkt**, *Was der erste Punkt braucht*). Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Platz unter dem Doppelpunkt* auf *Eine Zeile (1.4)*, wenn sie einen Projekteintrag älter als Version 6 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 6` ist, oder eine vorher exportierte `postext-config.json`, sofern eine Liste des Buchs auf eine Zeile folgt, die auf einen Doppelpunkt endet. Eine `postext-config.json` enthält keine Kapitel, daher wird es dort immer gesetzt, wenn die Datei älter ist. Wählen Sie *Was der erste Punkt braucht*, um das Buch nach der heutigen Regel zu setzen.

**Kastenschnitte, gespeichert vor postext 1.5.** Bis postext 1.4 konnte ein Kasten, der innerhalb eines Absatzes oder Listeneintrags geteilt wurde, eine einzelne Zeile davon auf einer Seite lassen, solange jede Seite des Kastens ihre *Zeilen auf jeder Seite einer Teilung* hielt. Ein Schnitt lässt jetzt mindestens zwei Zeilen des Absatzes oder Eintrags auf jeder Seite (**Spalten → Absatzzeilen an einem Kastenschnitt**). Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Absatzzeilen an einem Kastenschnitt* auf 1, wenn sie einen Projekteintrag älter als Version 6 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 6` ist, oder eine vorher exportierte `postext-config.json`, sofern ein Kapitel des Buchs ein `:::callout` öffnet. Eine `postext-config.json` enthält keine Kapitel, daher wird es dort immer gesetzt, wenn die Datei älter ist. Setzen Sie es auf 2 zurück, um das Buch nach der heutigen Regel zu setzen.

**Striche und Flattersatz, gespeichert vor postext 1.5.** Bis postext 1.4 beendete der optimale Zeilenumbruch nie eine Zeile nach einem Geviert- oder Halbgeviertstrich, der ohne Abstand zwischen Wörtern stand (`say—that’s`), und Flattersatz wurde immer Zeile für Zeile gesetzt, jede Zeile gefüllt vor der nächsten. Jetzt darf eine Zeile nach einem solchen Strich enden (**Typografie → Grundtext → Absätze → Umbruch nach Strichen**), und auch fließender Flattersatz wird mit Knuth-Plass umbrochen (**Optimaler Flattersatz**). Damit ein damals gespeichertes Buch seine Seiten behält, schaltet die Sandbox *Umbruch nach Strichen* aus, wenn sie einen Projekteintrag älter als Version 7 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 7` ist, oder eine vorher exportierte `postext-config.json`, sofern ein Kapitel des Buchs einen solchen Strich setzt (eine `postext-config.json` enthält keine Kapitel, daher wird er dort immer ausgeschaltet, wenn die Datei älter ist); und sie schaltet *Optimaler Flattersatz* aus, wenn die Konfiguration fließenden Text im Flattersatz setzt: den Grundtext, ein Absatzformat, den Text eines Kastens, den Text eines Teils oder den Text eines Abschnittsstils. Schalten Sie beide ein, um das Buch nach den heutigen Regeln zu setzen.

**Teilungen unter einer Überschrift, gespeichert vor postext 1.5.** Bis postext 1.4 behielt der Absatz unter einer Überschrift am Fuß einer Spalte so viele Zeilen, wie dort passten, wie wenige auch in die nächste Spalte gingen. Jetzt hält er auch das Minimum gegen Waisen ein, oder die Überschrift rückt mit ihm weiter (**Überschriften & Inhalt → Überschriften → Unter einer Überschrift trennen**). Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Unter einer Überschrift trennen* auf *Spalte füllen*, wenn sie einen Projekteintrag älter als Version 8 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 8` ist, oder eine vorher exportierte `postext-config.json`, sofern ein Kapitel des Buchs eine Überschrift hat (eine `postext-config.json` enthält keine Kapitel, daher wird es dort immer gesetzt, wenn die Datei älter ist) und die Konfiguration *Mit Folgetext halten* und die Waisenkontrolle eingeschaltet lässt. Setzen Sie es auf *Nach den Regeln*, um das Buch nach der heutigen Regel zu setzen.

**Absatzcontainer, gespeichert vor postext 1.5.** Bis postext 1.4 war der Abstand unter einem Container `:::paragraphs` der eigene des Formats (der größere von Absatzabstand und unterem Rand), gesetzt unter die letzte Zeile, bevor der Text wieder auf dem Raster einrastete; der Abstand, den eine Überschrift über sich hält, kam darunter hinzu, und der Absatzabstand des Fließtexts zählte nicht, sodass eine Überschrift weiter von einer Bibliografie entfernt stand als von einem Absatz und der Absatz nach einer Gruppe enger Einträge näher daran stand als an jedem anderen. Jetzt verschmilzt der Abstand mit dem eigenen des nächsten Blocks und ist mindestens der Absatzabstand des Texts (**Typografie → Absatzformate → Abstand unter einem Container**, *Zusammenfassen*). Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Abstand unter einem Container* auf *Addieren (1.4)*, wenn sie einen Projekteintrag älter als Version 8 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 8` ist, oder eine vorher exportierte `postext-config.json`, sofern die Konfiguration ein Absatzformat deklariert und ein Kapitel des Buchs einen Container `:::paragraphs` öffnet. Eine `postext-config.json` enthält keine Kapitel, daher wird es dort immer gesetzt, wenn die Datei älter ist und ein Absatzformat deklariert. Wählen Sie *Zusammenfassen*, um das Buch nach der heutigen Regel zu setzen.

**Komposita, gespeichert vor postext 1.5.** Bis postext 1.4 beendete der optimale Zeilenumbruch nie eine Zeile im Blocksatz nach dem Bindestrich eines Kompositums (`well-known`) in einem Absatz ohne Fett, Kursiv oder andere Formatierung, während er es in einem formatierten Absatz tat. Jetzt darf eine Zeile dort in jedem Absatz enden (**Typografie → Grundtext → Absätze → Umbruch nach Bindestrichen**). Damit ein damals gespeichertes Buch seine Seiten behält, schaltet die Sandbox *Umbruch nach Bindestrichen* aus, wenn sie einen Projekteintrag älter als Version 8 liest, eine Arbeitskonfiguration mit älterem Stempel (oder ohne), eine `.postext`-Datei, deren Manifest älter als `configVersion: 8` ist, oder eine vorher exportierte `postext-config.json`, sofern ein Kapitel des Buchs einen Bindestrich zwischen zwei Buchstaben setzt (eine `postext-config.json` enthält keine Kapitel, daher wird er dort immer ausgeschaltet, wenn die Datei älter ist). Schalten Sie ihn ein, um das Buch nach der heutigen Regel zu setzen.

**Gedichte und hängende Formate, gespeichert vor postext 1.23.** Bis postext 1.22 wurde ein Gedicht `:::verse`, dessen Zeilen kein `||` enthielten, als einzelne Halbverse gesetzt, jede Zeile zentriert, und der hängende Einzug eines Absatzformats ersetzte seinen Erstzeileneinzug. Ein solches Gedicht wird jetzt Zeile für Zeile gesetzt (**Typografie → Grundtext → Verse → Gedichte ohne Trennzeichen**, *Zeile für Zeile*), und ein Format, das beide Einzüge festlegt, beginnt seine erste Zeile beim Erstzeileneinzug. Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Gedichte ohne Trennzeichen* auf *Als Halbverse (1.22)*, wenn sie einen Projekteintrag älter als Version 9 liest oder eine Arbeitskonfiguration oder einen Export von `postext-config.json` mit einem Stempel unter 9, deren Kapitel ein solches Gedicht enthalten, und entfernt den Erstzeileneinzug eines Formats, das auch hängt. Außerdem schaltet sie **Erzwungene Zeilenumbrüche** (**Typografie → Grundtext → Absätze**) aus, wenn die Kapitel eines solchen Eintrags eine Zeile mit einem Backslash beenden oder `\\` vor ein Leerzeichen setzen, was bis postext 1.22 gedruckt wurde (bei einem Export von `postext-config.json`, der keine Kapitel enthält, immer). Und sie schaltet **Codeblöcke** (**Typografie → Code**) aus, wenn die Kapitel einen Codeblock ```` ``` ```` oder `~~~` enthalten, dessen Zeilen bis postext 1.22 als Markdown gelesen wurden (bei einem Export immer).

**Gedichte, gespeichert mit postext 1.23.** In postext 1.23 wurde eine Zeile eines Zeile für Zeile gesetzten Gedichts, die auch nur ein wenig breiter als die Satzbreite war, umbrochen. Jetzt verengt sie ihre Wortabstände bis zum minimalen Wortabstand und bleibt in einer Zeile, wenn das genügt (**Typografie → Grundtext → Verse → Vor dem Überlauf verengen**). Damit ein damals gespeichertes Buch seine Seiten behält, schaltet die Sandbox *Vor dem Überlauf verengen* aus, wenn sie einen Projekteintrag, eine Arbeitskonfiguration oder einen Export von `postext-config.json` mit dem Stempel 9 oder darunter liest, deren Kapitel ein Gedicht Zeile für Zeile setzen (bei einem Export, der keine Kapitel enthält, immer).

**Gestaltungstexte, gespeichert mit postext 1.23.** Bis postext 1.23 wurde ein Textelement einer Überschriftengestaltung oder einer Teilseite, das keinen Überlauf festlegte, mit einer Ellipse auf eine Zeile gekürzt. Jetzt bricht es auf weitere Zeilen um, und **Text hinzufügen** überlässt den *Überlauf* dem Platz. Damit ein damals gespeichertes Buch seine Seiten behält, setzt die Sandbox *Überlauf* bei jedem dieser Elemente auf *Auslassung am Ende (…)*, wenn sie einen Projekteintrag, eine Arbeitskonfiguration, eine `.postext`-Datei oder einen Export von `postext-config.json` mit dem Stempel 9 oder darunter liest.

**Tabellen und Spalten im Text, gespeichert mit postext 1.24.** Bis postext 1.24 rückte eine mit `here` platzierte Tabelle, die nicht in den Rest ihrer Spalte passte, als Ganzes in die nächste, ein Direktivenblock `:::columns` außerhalb eines Kastens wurde ignoriert, und ein Kasten wurde nie innerhalb einer Gruppe `:::columns` geschnitten. Jetzt wird die Tabelle zwischen Zeilen geteilt, und die Gruppe setzt ihre Blöcke in Spalten und läuft in der nächsten Spalte oder auf der nächsten Seite weiter. Damit ein damals gespeichertes Buch seine Seiten behält, schaltet die Sandbox **Auch für Tabellen im Text** (**Tabellen**) aus, wenn sie einen Projekteintrag, eine Arbeitskonfiguration oder einen Export von `postext-config.json` mit einem Stempel unter 11 liest, deren Kapitel eine Ressource einbetten, und **Spalten im Text und teilbare Gruppen** (**Spalten**), wenn sie einen Direktivenblock `:::columns` enthalten (bei einem Export, der keine Kapitel enthält, immer).

Diese Fixierungen halten zurück, was jede dieser Regeländerungen verschieben würde. Version 1.5 behebt außerdem Layoutfehler, und eine Fehlerbehebung hat keine Fixierung, sodass sich in einem gespeicherten Buch eine Seite noch verschieben kann, wo einer davon greift: das Band einer seitenbreiten Kapitelüberschrift ohne Gestaltung, eine Initiale in einer Überschriftengestaltung, ein Absatz in einem Kasten, ein zu lockerer Absatz, den der Spaltenausgleich dehnt, ein gleitender Kasten mit einem Rand, der breiter als eine Zeile ist, ein zentrierter oder rechtsbündiger Kolumnentitel mit Laufweite, die zweite Spalte unter einem seitenbreiten Auftakt, ein Kolumnentitel aus einer nach einem Bindestrich umbrochenen Überschrift, ein Wort, das breiter als seine Zeile ist und neben seinem eigenen Bindestrich geschnitten wird, der Rest eines Worts, das breiter als seine Zeile ist und jetzt seine eigenen Trennstellen behält, der Eintrag nach einer in eine andere verschachtelten Liste (die Liste steht unter [Formelgröße](https://postext.dev/de/docs/configuration-text.md#mathematik)).

Der Speicher wird **über alle Sprachen der Oberfläche geteilt**. Ein unberührtes Standarddokument wechselt zum Standard-Markdown der aktuellen Sprache und legt die Beispielressourcen neu an, wenn sich die Sprache ändert – so zeigt die spanische Sandbox spanische Beispiele. Jede Änderung durch den Benutzer nimmt das Dokument von diesem Verhalten aus. Alle Vorschauen leiten außerdem ein Trennungs-Locale aus der Sprache der Oberfläche ab, wenn die Konfiguration keine Sprache nennt (weder ein Trennungs-Locale noch `locale`).

### Export und Import

Ein ganzes Buch reist als **`.postext`-Datei**: ein Zip-Archiv mit genau dem Aufbau eines Vorlagenpaket-Verzeichnisses – `preset.json`, `chapters/*.md`, `resources/*` und `fonts/*` (siehe [Format der Vorlagenpakete](https://postext.dev/de/docs/sandbox.md#format-der-vorlagenpakete)). Das Archiv trägt außerdem die **Paginierung** des Buchs als `layouts.json` – Seitenzahl und Nummerierung jedes Kapitels, gestempelt mit der Engine-Version, der Konfiguration und den Ressourcen, mit denen sie gebaut wurde –, sodass sich ein importiertes Buch paginiert öffnet und nur das neu gesetzt wird, wofür diese Stempel nicht mehr bürgen. Ein Paket in mehreren Sprachen setzt jede mit ihrer eigenen Konfiguration und kann deshalb stattdessen eine je Sprache tragen, `layouts.<locale>.json` (`layouts.zh-Hant.json`), die vor `layouts.json` gelesen wird. Das aktive Dokument exportiert die Paginierung, die es hält; ein Projekt oder eine Vorlage, die aus ihrer Zeile exportiert wird, trägt die, die aufgezeichnet wurde, als sie zuletzt das Arbeitsbuch war. Ein Titelbild wird als `thumbnail` des Manifests geschrieben und übersteht so den Hin- und Rückweg. Das Menü **Neu** des **Bedienfelds Bücher** (**Eine .postext-Datei öffnen …**) importiert eine Datei als neues Buch; das Menü ⋯ jeder Zeile hat sein eigenes **Herunterladen (.postext)**, und das des geöffneten Buchs exportiert das Arbeitsdokument. Von früheren Versionen geschriebene Dateien (ein Manifest der Version 1 mit einer einzigen `document.md`) werden als Buch mit einem Kapitel importiert. Ein Buch in einer Sprache behält die Abbildungs- und Tabellenbezeichnungen dieser Sprache, gleich in welcher Sprache die Oberfläche läuft: Eine spanische Datei, die aus `/en/sandbox` geöffnet wird, druckt *Figura* und *Tabla*, sofern ihre Konfiguration keine anderen Ressourcentypen nennt. Die Sprache ist die, die die Datei nennt, oder, wenn sie keine nennt, die, die ihre Konfiguration festlegt (`locale`, dann die Trennsprache). Der Import akzeptiert die Dateien im Wurzelverzeichnis des Archivs oder unter einem einzigen Ordner der obersten Ebene (wie er beim Zippen des Ordners selbst entsteht; Einträge `__MACOSX` und Punktdateien werden ignoriert). Schriften werden als eigene Dateien geschrieben, nie innerhalb von `config.customFonts`; Schriften im Format `.woff` werden in beide Richtungen mit einer Warnung übersprungen, ebenso Ressourcen, deren Bytes fehlen. Entpacken Sie eine exportierte Datei nach `<presets-root>/<dir>/` und fügen Sie einen Eintrag in `index.json` hinzu, um sie als Vorlage auszuliefern.

Dieselben Dateien liest und schreibt das Paket `postext` (`openBundle`, `createBundle`, `buildBundle`; siehe [Pakete](https://postext.dev/de/docs/configuration-programmatic-usage.md#pakete-dateien-im-format-postext)). Ein hier exportiertes Buch öffnet sich in Ihrem eigenen Programm, und ein Buch, das Ihr Programm schreibt, öffnet sich hier. Damit wird die Sandbox zu einem Ort, an dem Sie prüfen und feinjustieren, was ein Programm setzt: aus dem Programm exportieren, hier importieren, mit der Live-Vorschau korrigieren, erneut exportieren und wieder in das Programm laden. Der [Agent-Skill](https://postext.dev/de/docs/skill.md) liefert seine Portierungen ebenfalls als `.postext`-Dateien.

Text und Gestaltung lassen sich außerdem getrennt aus den Kopfzeilen der Bedienfelder Text und Gestaltung exportieren.

Die Kopfzeile des **Bedienfelds Gestaltung** lädt `postext-config.json` ohne Standardwerte herunter:

```json
{
  "type": "postext-config",
  "version": 1,
  "config": { ... }
}
```

Die Kopfzeile des **Bedienfelds Text** lädt das aktive Kapitel als reine Markdown-Datei (`.md`) herunter, und ihre Schaltfläche **Importieren** ersetzt das aktive Kapitel durch den Inhalt einer Markdown-Datei (`.md`). Die Schaltfläche **Importieren** des Bedienfelds Gestaltung öffnet eine Dateiauswahl für JSON-Dateien (`.json`), die gegen den erwarteten `type` und die erwartete `version` geprüft werden; ungültige Dateien werden stillschweigend ignoriert. Die Hülle `postext-markdown.json` und das kombinierte Format `postext-sandbox.json` früherer Versionen gibt es nicht mehr.

## Agenten: WebMCP

Die Sandbox gibt einem Agenten im Browser über [WebMCP](https://webmachinelearning.github.io/webmcp/) (`document.modelContext`) eigene Werkzeuge an die Hand, sodass ein Assistent direkt am Buch arbeitet, statt sich durch die Oberfläche zu klicken. Es ist nichts einzurichten: Die Werkzeuge werden registriert, solange die Sandbox auf dem Bildschirm ist, und der Rest dieser Website registriert auf jeder Seite einige eigene (Dokumentation und Rezeptbuch durchsuchen, eine Seite als Markdown lesen, ein Rezept in der Sandbox öffnen, Sprache und Farbschema wechseln).

Sie sind für den Kreislauf gebaut, den eine Gestalterin oder ein Gestalter nach Augenmaß durchläuft – etwas ändern, die Seite ansehen, wieder ändern:

- **Sehen** – `sandbox_get_state`, `sandbox_render_page`, `sandbox_inspect_pages`, `sandbox_inspect_point`, `sandbox_inspect_comic`, `sandbox_get_warnings`: das Buch mit seinen Kapiteln und Seitenbereichen und was in der Oberfläche vor sich geht (die Auswahl, ein Hinweis, eine Frage, die auf Antwort wartet); jede Seite als JPEG, PNG oder WebP in der verlangten Breite oder ein Ausschnitt davon für einen genauen Blick, auf Wunsch mit der Druckvorschau; dieselbe Seite als Daten (ihre Blöcke und Zeilen, wie voll jede Spalte ist, welche Zeilen zu locker sind oder mit einem getrennten Wort enden); was an einem Punkt einer Seite liegt (die Zeile der Quelle, ein Link und wohin er führt, eine Tabellenzelle); die Panels und Sprechblasen einer Comicseite; und was die Prüfungen in einem beliebigen Kapitel oder im ganzen Buch finden, gleich welches Kapitel und welcher Betrachter auf dem Bildschirm sind.
- **Ändern** – `sandbox_set_config`, `sandbox_get_config`, `sandbox_find_setting`, `sandbox_edit_text`, `sandbox_write_text`, `sandbox_read_text`, `sandbox_search_text`, `sandbox_select_text`, `sandbox_undo_text`, `sandbox_manage_chapters`, `sandbox_save_resource`, `sandbox_save_font`, `sandbox_edit_comic`, `sandbox_import_word`: jede Einstellung über ihren Pfad (`bodyText.fontSize`, `page.margins.top`, `headings.levels[level=2].fontSize`, `header.elements[id=titleOdd].italic`), den Text durch exaktes Suchen und Ersetzen, mit Rückgängig, Kapitel, Bilder, SVG-Zeichnungen, Videos, Tabellen mit ihrer Formatierung, Schriften, die Panels und Sprechblasen eines Comics und ein Word-Dokument, importiert mit zugeordneten Formatvorlagen. Eine Änderung antwortet mit jedem Wert vorher und nachher und den Seiten, auf die jedes Kapitel kam; eine Einstellung sagt außerdem, wozu die Engine sie aufgelöst hat und welche anderen Einstellungen ihr gefolgt sind, und ein Wert, den die Engine nicht auflösen kann, wird abgewiesen, ohne dass sich etwas ändert.
- **Zeigen** – `sandbox_set_view`, `sandbox_go_to_page`, `sandbox_run_viewer`: den Betrachter-Tab, das Seitenbedienfeld, Kapitel oder ganzes Buch, Zoom, Anpassung und Doppelseiten, den Schriftgrad des Lesesystems, die Druckvorschau, die auf die Seiten gezeichneten Hilfslinien, die Lupe von Folio und die Seite auf dem Bildschirm (über ihre Nummer, eine Textstelle, einen Anker oder einen Eintrag im Inhaltsverzeichnis eines EPUB); PDF oder EPUB neu schreiben, drucken und ein Video auf einer Seite abspielen.
- **Behalten** – `sandbox_list_books`, `sandbox_open_book`, `sandbox_save_book`, `sandbox_import_book`, `sandbox_export`, `sandbox_word_templates`, `sandbox_answer`: die Beispiele und Ihre Projekte mit ihren Titelbildern, eine importierte `.postext`-Datei, das Buch – oder eines, das nicht geöffnet ist – geschrieben als PDF, EPUB, `.postext`, Word, Markdown oder seine Einstellungen als JSON, die Vorlagen des Word-Imports und die Antwort auf eine Frage, die die Sandbox stellt.

Ein Werkzeug, das das Buch ändert, wartet auf das Layout, sodass das nächste Bild immer die neuen Seiten zeigt; eine Seite wird für das Werkzeug gesetzt und gezeichnet, gleich welcher Tab auf dem Bildschirm ist. Was sich nicht zurücknehmen lässt – ein Kapitel, eine Ressource oder ein Projekt löschen, das Original wiederherstellen, ein Word-Dokument über den Text importieren, Ihre Kopie eines Buchs ersetzen –, ist als folgenreich markiert, sodass der Browser Sie vorher fragen kann. Wie bei der Oberfläche bleibt alles in Ihrem Browser: Die Werkzeuge erreichen nichts, was die Sandbox selbst nicht erreicht.

WebMCP ist ein Entwurf: Chrome bietet es als Origin Trial an und hinter `chrome://flags/#enable-webmcp-testing`. In einem Browser ohne WebMCP stehen dieselben Werkzeuge unter `window.postextWebMcp` bereit (`listTools()`, `executeTool(name, args)`), für einen Agenten, der Skripte in der Seite ausführen kann. Wenn Sie die Sandbox einbetten, lässt `webmcp={false}` die Werkzeuge weg (siehe [Props](https://postext.dev/de/docs/sandbox.md#props)).

Die Seite [WebMCP](https://postext.dev/de/docs/webmcp.md) zeigt mit Beispielen, worum man einen Agenten bitten kann und wie jedes Werkzeug aufgerufen wird.

## Eigenständige Verwendung

Die Sandbox gibt es als eigenständiges React-Paket (`postext-sandbox`), das sich in jede React-Anwendung einbetten lässt:

```bash
npm install postext-sandbox postext
```

```tsx
import { PostextSandbox } from 'postext-sandbox';

function App() {
  return (
    <PostextSandbox
      initialMarkdown="# Hello World"
      initialConfig={{ layout: { layoutType: 'double' } }}
      onMarkdownChange={(md) => console.log(md)}
      onConfigChange={(cfg) => console.log(cfg)}
    />
  );
}
```

### Props

| Prop | Typ | Beschreibung |
| --- | --- | --- |
| `initialMarkdown` | `string` | Markdown-Inhalt zu Beginn |
| `initialConfig` | `PostextConfig` | Layout-Konfiguration zu Beginn |
| `className` | `string` | CSS-Klasse für den Wurzelcontainer |
| `labels` | `Partial<SandboxLabels>` | Ersatz für Beschriftungen der Oberfläche, über die eingebauten englischen Standardwerte gelegt – übergeben Sie übersetzte Beschriftungen zusammen mit `locale`, wenn Sie die Sandbox in einer anderen Sprache einbetten |
| `locale` | `string` | Sprache der Oberfläche (Standard `'en'`). Wählt die lokalisierten Standard-Ressourcentypen und Beispielressourcen (eine Vorlage oder Datei in einer Sprache erhält die Ressourcentypen ihrer eigenen Sprache) und liefert das Trennungs-Locale, das die Vorschauen verwenden, wenn keines konfiguriert ist |
| `presetSources` | `{ url: string; private?: boolean }[]` | Quellen entfernter Vorlagen, der Reihe nach nach der eingebauten Vorlage abgefragt. Jede `url` ist eine Basis-URL, die eine `index.json` ausliefert (siehe [Format der Vorlagenpakete](https://postext.dev/de/docs/sandbox.md#format-der-vorlagenpakete)); `private: true` markiert die Vorlagen der Quelle als privat und macht ihre Markierung `default` für das automatische Laden wirksam. Quellen, die nicht antworten, tragen einfach nichts bei |
| `hashBundles` | `Record<string, (id: string, lang: string \| null) => string \| string[] \| null>` | Bücher, die über einen eigenen Fragmentschlüssel des Hosts verlinkt werden: `{ recipe: (slug, lang) =>  0  }` lässt `#recipe=<slug>&lang=es` dieses Paket öffnen. Geben Sie die URL einer `.postext`-Datei auf dem eigenen Ursprung der Seite zurück, mehrere, die der Reihe nach versucht werden (die erste, die antwortet, gewinnt), oder `null` für eine ID, die der Host nicht ausliefert. Der erste Besuch importiert die Datei als Projekt, das mit dem Link verknüpft wird (`recipe:<slug>:<lang>`); ein späterer Besuch fragt, ob dieses Projekt samt Änderungen geöffnet oder durch die Datei in ihrer jetzt ausgelieferten Form ersetzt werden soll. Das Fragment wird dann zu `#project=<id>` umgeschrieben |
| `onConfigChange` | `(config) => void` | Callback bei Änderungen der Konfiguration |
| `onMarkdownChange` | `(markdown) => void` | Callback bei Änderungen des Markdowns |
| `webmcp` | `boolean` | Registriert die [WebMCP-Werkzeuge](https://postext.dev/de/docs/sandbox.md#agenten-webmcp) der Sandbox für Agenten im Browser, solange sie eingehängt ist. Standard `true` |
| `themeToggle` | `ReactNode` | Eigene Komponente zum Umschalten des Farbschemas, unten in der Aktivitätsleiste eingesetzt |
| `languageSwitcher` | `ReactNode` | Eigene Komponente zur Sprachauswahl, unten in der Aktivitätsleiste eingesetzt |
| `homeUrl` | `string` | Wenn gesetzt, wird oben in der Aktivitätsleiste ein Logo-Link zur Startseite gerendert, der auf diese URL verweist |
| `homeLink` | `ReactNode` | Eigener Knoten für den Platz der Startseite, der den Standard-Logo-Link ersetzt (hat Vorrang vor `homeUrl`) |

### CSS-Anforderungen

Das Paket verwendet Utility-Klassen von Tailwind CSS, die auf CSS-Custom-Properties verweisen. Ihre Host-Anwendung muss diese Variablen bereitstellen:

- `--background`, `--foreground` – Grundfarben
- `--surface` – Farbe erhöhter Flächen; `--surface-2` – Zeilen unter dem Zeiger und hervorgehobene Optionen (ersatzweise `--background`)
- `--slate` – Farbe für gedämpften Text
- `--rule` – Farbe für Rahmen und Trennlinien; `--rule-strong` – kräftigere Linie für Bedienelemente unter dem Zeiger (ersatzweise `--slate`)
- `--brand` – Akzentfarbe: die Markierung des aktiven Bedienfelds, Fokusringe, Schalter und gewählte Optionen
- `--brand-hover` – Akzentfarbe unter dem Zeiger
- `--brand-soft` – durchscheinende Akzentfüllung hinter gewählten Optionen (ersatzweise `--surface`)
- `--brand-contrast` – Knopf eines eingeschalteten Schalters (ersatzweise `--background`)
- `--destructive` – Farbe destruktiver Aktionen und von Fehlern
- `--accent-blue` – Link- und Akzentfarbe
- `--font-sans` – Schriftfamilie der Oberfläche
- `--font-mono` – Monospace-Schriftfamilie (für den Code-Editor)
- `--font-display`, `--brand-blue`, `--brand-gilt` – optionale Schrift und Farben des Standard-Logos in der Aktivitätsleiste (ersatzweise Georgia, `#2b4acb` und `#d8a21a`)

Die Website setzt `--brand` im dunklen Farbschema auf Gold und im hellen auf Blau. Frühere Versionen lasen `--gilt` und `--gilt-hover`; die Sandbox verwendet sie nicht mehr.

Popover, Menüs und Tooltips werden in einem Portal auf `document.body` gerendert, definieren Sie die Variablen also auf `:root` (oder `body`), nicht nur auf dem Element, das die Sandbox umschließt. Der Tailwind-Build des Hosts muss die Quellen des Pakets scannen (`@source "…/postext-sandbox/src/**/*.tsx"` in Tailwind 4), damit die verwendeten Utility-Klassen erzeugt werden.

## Format der Vorlagenpakete

Anhang. Eine Vorlagenquelle ist ein Verzeichnis (über HTTP ausgeliefert), in dessen Wurzel eine `index.json` liegt, die Vorlagenverzeichnisse aufführt; jedes Verzeichnis enthält ein Manifest `preset.json` sowie die Markdown-, Ressourcen- und Schriftdateien, auf die es verweist. Die Werkzeuge in `scripts/presets/` im Repository legen Pakete genau in dieser Form an, und eine aus der Sandbox exportierte `.postext`-Datei ist ein solches Verzeichnis, gezippt (ohne die `index.json`).

```
<presets-root>/
  index.json
  <preset-dir>/
    preset.json
    chapters/              one .md per chapter, in order (a version 1 manifest names a single document instead)
    resources/             figures: .svg / .png / .jpg / .jpeg / .webp / .gif (+ optional .pdf print masters)
    fonts/                 .otf / .ttf / .woff2 single faces
```

### `index.json`

```jsonc
{
  "version": 1,
  "presets": [
    {
      "id": "acme-journal",          // stable id, [a-z0-9-]
      "dir": "acme-journal",         // directory name relative to index.json
      "name": "Acme Journal",
      "description": "Two-column journal article",   // optional
      "locale": "en",                 // optional
      "default": true,                // optional, at most one
      "locales": ["en", "es"],        // optional: every locale the bundle carries
      "openLocale": "en",             // optional: the locale it opens in when none is asked for
      "thumbnail": "thumbnail.jpg",   // optional: preview shown in the picker
      "license": "CC BY 4.0",         // optional: shown as a tag
      "credits": "Text and images: ESO",  // optional: one line under the description
      "tags": ["magazine", "two-column"], // optional
      "binding": "left"               // optional: the edge the website's shelf draws the spine on ("right" for a right-bound book)
    }
  ]
}
```

### `preset.json`

```jsonc
{
  "version": 2,
  "id": "acme-journal",
  "name": "Acme Journal",
  "description": "Two-column journal article",       // optional
  "locale": "en",                                     // optional
  "default": true,                                    // optional
  "configVersion": 8,                                 // optional: the configuration rules `config` is written for
  // The same optional showcase fields as the index entry:
  // "locales", "openLocale", "thumbnail", "license", "credits", "tags"

  // The book's chapters, in order — or one list per locale
  "chapters": [
    { "title": "Introduction", "file": "chapters/01-introduction.md" },
    { "title": "Methods", "file": "chapters/02-methods.md" }
  ],
  // "chapters": { "en": [ … ], "es": [ … ] },
  // Version 1 manifests use a single document instead and are still accepted:
  // "version": 1, "markdown": "article.md"  (or a locale → file map)

  // Optional PostextConfig JSON (page, margins, columns, typography...).
  // Do NOT put customFonts here: fonts come from the `fonts` array below.
  "config": { },

  "resources": [
    {
      "id": "fig-1-1",                 // referenced from markdown (:ref)
      "typeId": "figure",              // resource type id (figure, table, ...)
      "kind": "svg",                   // "svg" | "bitmap" | "table"
      "file": "resources/fig-1-1.svg", // svg/bitmap only, relative to preset.json
      "width": 240.5,                  // optional, pt (svg) / px (bitmap)
      "resolution": 300,               // optional, bitmap only: ppi at its natural print size
      "pdfFile": "resources/fig-1-1.pdf", // optional, svg only: vector print master (see notes)
      "height": 180,                   // optional
      "caption": "Caption text",
      "altText": "Accessible description",            // optional
      "safeArea": { "x": 0.18, "y": 0.25, "width": 0.5, "height": 0.6 }, // optional, svg/bitmap only: the part always shown, in fractions of the picture
      "placement": { "position": "top", "span": "column" },  // optional
      "note": "Source: ...",                          // optional
      "table": { "model": { "rows": [[{ "content": "A", "isHeader": true }]], "headerRowCount": 1 } }
                                                      // kind "table" only
    }
  ],

  "fonts": [
    {
      "name": "Some Family",           // family name used by the config
      "variants": [
        { "weight": 400, "style": "normal", "file": "fonts/SomeFamily-Regular.otf" },
        { "weight": 400, "style": "italic", "file": "fonts/SomeFamily-Italic.otf" },
        { "weight": 700, "style": "normal", "file": "fonts/SomeFamily-Bold.otf" }
      ]
    }
  ]
}
```

Hinweise:

- Die `id` in `preset.json` muss mit dem Eintrag in `index.json` übereinstimmen; `description`, `locale` und `default` im Manifest überschreiben die Werte des Index, sobald die Vorlage geladen ist, ebenso die Schaufensterfelder `locales`, `openLocale`, `license`, `credits` und `tags`. `openLocale`, eine der `locales`, ist die Sprache, in der sich das Buch öffnet, wenn ein Link oder ein Klick keine verlangt (auch das Regal der Startseite verlinkt darauf): Setzen Sie es, wenn das Original nicht in der Sprache des Lesers vorliegt, wie es das Schaufensterbuch 紅樓夢 mit `zh-Hant` tut, damit sich nicht für jeden englischsprachigen Leser die englische Übersetzung öffnet. Ohne diese Angabe entscheidet die Sprache der Oberfläche. Die Auswahl zeigt jede Sprache in `locales` (oder `locale`) und die Lizenz als Marken, die Mitwirkenden unter der Beschreibung und `thumbnail` – ein kleines Seitenbild, relativ zum Vorlagenverzeichnis – anstelle der Spalte mit dem Häkchen in der Zeile; ein aus der Vorlage kopiertes Buch (**Eigene Kopie anlegen**) behält es als Titelbild. Die öffentlichen Schaufenstervorlagen unter `apps/web/public/presets/` nutzen jedes Feld und enthalten eine `CREDITS.md` mit Lizenz und Quelle jedes Textes und jedes Bildes.
- `configVersion` (optional) nennt die Konfigurationsregeln, für die `config` und die `localized`-Konfigurationen geschrieben sind. Seit postext 1.5 setzt jedes Programm, das Manifeste schreibt, den Wert 8. Ein Manifest ohne diese Angabe wurde von postext 1.4 oder älter geschrieben, und seine Überschriftenumbrüche, Formelgröße, Abstände um Abbildungen im Textfluss (im Text und in Kästen), Auszeichnungen in Überschriften, Initialen, Raum unter einer Doppelpunktzeile, Kastenschnitte, Umbrüche an Strichen und an Bindestrichen von Komposita, Flattersatz, Teilungen unter einer Überschrift und Abstände unter Absatzcontainern werden so gelesen, wie 1.4 sie gesetzt hat (siehe *Überschriftenumbrüche, gespeichert mit postext 1.4 oder früher*, *Formelgröße, gespeichert vor postext 1.5*, *Abbildungen im Text, gespeichert vor postext 1.5*, *Abbildungen in Kästen, gespeichert vor postext 1.5*, *Auszeichnungen in Überschriften und Initialen, gespeichert vor postext 1.5*, *Listen nach einem Doppelpunkt, gespeichert vor postext 1.5*, *Kastenschnitte, gespeichert vor postext 1.5*, *Striche und Flattersatz, gespeichert vor postext 1.5*, *Komposita, gespeichert vor postext 1.5*, *Teilungen unter einer Überschrift, gespeichert vor postext 1.5* und *Absatzcontainer, gespeichert vor postext 1.5* unter [Persistenz](https://postext.dev/de/docs/sandbox.md#persistenz)); ein Manifest mit einem Wert von 3 bis 7 (eine Vorabversion von 1.5) erhält nur die Fixierungen der späteren Regeln. Bei 3 sind das die Formelgröße, der Abstand im Textfluss, die fünf Fixierungen der Regeln 6, die zwei der Regeln 7 und die drei der Regeln 8; bei 4 der Abstand im Textfluss und die Fixierungen der Regeln 6, 7 und 8; bei 5 die Fixierungen der Regeln 6, 7 und 8; bei 6 die Fixierungen der Regeln 7 und 8; bei 7 allein die Fixierungen der Regeln 8. Setzen Sie den Wert 8, wenn Sie ein Manifest von Hand für die heutigen Regeln schreiben.
- `view` (optional) legt fest, wie die Sandbox das Paket öffnet: `{ "canvasScope": "book" }` setzt das ganze Buch im Canvas (siehe [Bücher und Kapitel](https://postext.dev/de/docs/sandbox.md#bücher-und-kapitel)); fehlt die Angabe, zeigt der Canvas ein Kapitel nach dem anderen. Exportierte Bücher tragen sie, wenn sie gesetzt ist. Ein Buch mit mehr als 200 Kapiteln öffnet sich kapitelweise, was immer es verlangt.
- `start` (optional) gibt an, wo das Buch beginnt, wenn das Paket einen Teil eines längeren Buches enthält: `{ "pageIndexOffset": 57, "pageNumbering": { "startAt": 58 }, "headings": { "h1": 3 } }` öffnet es auf Seite 58, einer geraden Seite, in Kapitel 4. Es ist die `continuation` des ersten Kapitels (`buildDocument`); die Sandbox setzt das Buch von dort aus, bewahrt die Angabe beim Speichern als Projekt mit dem Buch auf und schreibt sie beim Export zurück. Kein Bedienfeld bearbeitet sie. Ein Eintrag in `localized` kann für seine Ausgabe ein eigenes `start` tragen.
- `localized` (optional) enthält sprachspezifische Überschreibungen für ein zweisprachiges Paket: `{ "es": { "config": { … }, "resources": [ { "id": "fig-1", "caption": "…", "note": "…", "altText": "…" } ] } }`. Die Überschreibungen der Sprache, aus der die Kapitel gewählt wurden, gelten über der gemeinsamen `config` (Schlüssel der obersten Ebene werden vollständig ersetzt – typischerweise `resourceTypes` mit übersetzten Präfixen für Legenden) und den `resources` (Legende, Anmerkung, Alternativtext und Tabellenzellen werden nach ID zusammengeführt); eine Sprache ohne Eintrag behält den gemeinsamen Wortlaut. Ein Eintrag kann auch ein eigenes `view` tragen, das für diese Ausgabe über dem gemeinsamen gilt: 紅樓夢 öffnet seine chinesischen Ausgaben auf dem ganzen Buch und die englische von Joly, die als Ganzes viel langsamer zu zeichnen ist, kapitelweise (`"en": { "view": { "canvasScope": "chapter" } }`).
- `chapters` (Version 2) ist eine Liste von `{ title, file }` in der Reihenfolge des Buches oder eine Zuordnung von Sprache zu Liste; `markdown` (Version 1) ist ein Dateiname oder eine Zuordnung von Sprache zu Datei. In beiden Fällen wählt die Sandbox den Eintrag, der zur verlangten Sprache passt (exakte Kennung ohne Rücksicht auf Groß- und Kleinschreibung; dann dieselbe Sprache und Schrift, sodass `zh-TW` vor `zh-Hans` zu `zh-Hant` greift; dann dieselbe Sprache in der anderen Schrift, sodass ein Leser mit `zh-TW` bei einem Paket, das nur mit `zh` beschlüsselt ist, das Chinesische erhält; dann die eigene `locale` der Vorlage, dann den ersten Eintrag), und nur die Kapiteldateien dieser Sprache werden gelesen. Ein leerer Kapitel-`title` wird aus der ersten Überschrift der Ebene 1 der Datei abgeleitet. Die Sandbox schreibt immer Version 2.
- `width` / `height` sind für Ressourcen vom Typ `svg` und `bitmap` optional – fehlen sie, werden sie beim Laden aus der Datei gelesen. Eine Bitmap kann außerdem `resolution` tragen (ihre ppi in natürlicher Druckgröße) und `fileResolution` (die in ihrer Datei angegebene, beim Laden gelesen, wenn die Konfiguration `layout.bitmapResolution: 'file'` setzt).
- `pdfFile` (nur bei SVG-Ressourcen) verweist auf ein einseitiges PDF, das dieselbe Abbildung als Vektoren enthält – typischerweise das Original aus Illustrator oder den PDF-Export, aus dem das SVG abgeleitet wurde. Der PDF-Export bettet diese Seite unverändert ein (Schriften, Verläufe und Farbräume intakt) statt des SVG; die Vorschauen in Canvas und HTML verwenden weiterhin das SVG. Im Einfarbmodus wird es ignoriert, weil dessen Umfärbung nur auf SVG-Markup arbeitet, und eine fehlende Datei lässt nur die Druckvorlage weg, nie die Abbildung. Wer die SVG-Quelle im Ressourcendetail bearbeitet, löst die Druckvorlage (sie wurde für die Quelle in ihrem damaligen Zustand gemacht), sodass der PDF-Export von da an dem bearbeiteten SVG folgt; stellen Sie das Original wieder her (**Original wiederherstellen…** im Bedienfeld Bücher), um sie zurückzubekommen. SVGs ohne Druckvorlage werden als Vektorpfade ausgegeben, wenn sie innerhalb der Teilmenge des PDF-Backends bleiben (Grundformen, Pfade, Gruppen, `use`, Beschneidungspfade, Volltonflächen und -konturen, Deckkraft sowie `text`-/`tspan`-Läufe in den Schriften, die das Dokument laden kann – zuerst eigene Schriften, dann bei Google gehostete Familien), andernfalls werden sie mit 600 dpi gerastert.
- SVG-`text` wird überall in den Schriften des Buches dargestellt: Die Vorschauen und das EPUB betten die Schnitte, die sein Text nennt, in das SVG ein, bevor es angezeigt wird (ein `<img>` sieht die Schriften der Seite nicht), eigene Familien so, wie sie hochgeladen wurden, und Google-Familien als die Fontsource-Dateien, die die Zeichen enthalten; der PDF-Export setzt die Läufe als echten, auswählbaren Text in denselben eingebetteten Schnitten. Nennen Sie die Familie in `font-family` genau so, wie sie unter Schriften erscheint. Eine Ressource kann sich mit `"inlineFonts": false` in ihrem Manifesteintrag davon ausnehmen (`svg.inlineFonts`).
- Der Editor für SVG-Quellen lässt Sie nur innerhalb von Textknoten (eingefärbt) tippen, damit eine Abbildung nicht versehentlich kaputtgeht; die Schlossschaltfläche in seinem Kopf öffnet die ganze Quelle – Koordinaten, Farben, Struktur –, und erneutes Sperren liest die Textknoten neu ein.
- `table.model` ist ein `TableModel` von Postext: `rows` ist ein zeilenweises Array von Zellen (`content`, optional `colSpan`, `rowSpan`, `isHeader`, `align`, `verticalAlign`), `headerRowCount` die Zahl der führenden Kopfzeilen und `columnWidths` ein optionales Array relativer Spaltengewichte. `table.styleId` nennt optional einen der `tableStyles` der Konfiguration.
- Schriftdateien werden in IndexedDB unter IDs gespeichert, die aus der ID der Vorlage und dem Dateipfad abgeleitet sind, und die Familien werden beim Anwenden der Vorlage an `config.customFonts` angehängt; eine fehlende oder fehlerhafte `index.json` ergibt keine Vorlagen statt eines Fehlers.
- `<preset-dir>/fingerprint.json` ist optional und auf der Entwicklungsroute **virtuell**: Existiert keine solche Datei, beantwortet `GET` die Anfrage mit `{ "fingerprint": "<sha1 hex>", "files": <n> }`, berechnet aus den Dateimetadaten des Verzeichnisses (relativer Pfad, Änderungszeit und Größe jeder Datei bis zu vier Ebenen tief, wobei Dotfiles und `node_modules` übersprungen werden), nie aus dem Inhalt der Dateien, mit `Cache-Control: no-store`. Die Sandbox fragt sie regelmäßig ab, um Änderungen am Paket zu folgen (siehe [Bedienfeld Bücher](https://postext.dev/de/docs/sandbox.md#bedienfeld-bücher)). Ein statischer Host kann eine echte `fingerprint.json` derselben Form ausliefern oder gar keine; dann wird seinen Vorlagen nicht gefolgt.

## Ausblick

Die folgenden Funktionen sind für künftige Versionen geplant:

- **Gemeinsames Bearbeiten** – ein Buch gemeinsam in mehreren Browsern bearbeiten
