# Konfiguration: zusammengesetzte Seiten

> Seitenvorlagen für zusammengesetzte Seiten: Rahmen, Gruppen, Dekoration, Vererbung und Varianten für rechte und linke Seiten, die Beschriftungsstile der Bildanker und die Warnungen, die eine Vorlage auslösen kann

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

## Kurz gesagt

Diese Seite behandelt Seitenvorlagen. Eine Vorlage ist eine Seite, die in den Einstellungen gezeichnet wird: benannte Kästen, die Rahmen heißen, mit ihrer Lage, ihrer möglichen Größe und ihrem Aussehen. Das Markdown einer zusammengesetzten Seite füllt die Rahmen dann über ihre Namen, sodass der Text nie Positionen enthält und die Einstellungen nie Text. Eine Vorlage kann von einer anderen ausgehen und nur einige Rahmen ändern, und sie kann auf linken und rechten Seiten verschieden sein. Die Seite führt außerdem die Beschriftungsstile für Wörter auf Bildern auf sowie jede Warnung, die eine Vorlage auslösen kann, mit dem Weg, sie zu beheben.

## Seitenvorlagen

Eine zusammengesetzte Seite ist eine Seite, deren Form aus einer **Seitenvorlage** der Konfiguration stammt und deren Inhalt aus dem Markdown eines Blocks `::::page{template="…"}`. Die Vorlage benennt Rechtecke, die **Rahmen** heißen; das Markdown schickt jedes Inhaltsstück über seinen Namen (seinen Slot) an einen Rahmen. Geometrie steht nie im Markdown, und Inhaltstext steht nie in der Vorlage. Die Eigenschaft `pageTemplates` enthält die Vorlagen des Buchs:

```ts
const config: PostextConfig = {
  calloutStyles: [{ id: 'caja-azul' }, { id: 'tab-titulo' }],
  pageTemplates: [
    {
      id: 'tema-cajas',
      decoration: {
        elements: [
          { kind: 'image', id: 'fondo', resourceId: '{attr.fondo}', decorative: true,
            placement: { anchor: { to: 'bleed', edge: 'top-left' }, size: { width: 'fill', height: 'fill' } } },
        ],
      },
      frames: [
        { name: 'titulo', takes: 'h1', style: 'tab-titulo' },
        { name: 'texto', flow: true },
        { name: 'dinero', style: 'caja-azul', padding: { right: { value: 62, unit: 'mm' } } },
        { name: 'dinero-fotos', layer: 2, width: { value: 60, unit: 'mm' },
          placement: { anchor: { to: '#dinero', edge: 'top-right' } } },
      ],
      groups: [
        { name: 'pagina', kind: 'stack', gap: { value: 6, unit: 'mm' }, frames: ['titulo', 'texto', 'dinero'] },
      ],
    },
  ],
};
```

Eine Vorlage, die nur ihre `id` und einen Rahmen festlegt, ist eine ganze Seite, deren Satzspiegel dieser Rahmen füllt. Alle anderen Felder sind optional:

| Eigenschaft | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `id` | `string` | erforderlich | Der Name, den ein Seitenblock anfordert (`template="tema-cajas"`). Eindeutig unter den Vorlagen: Eine zweite Vorlage mit derselben ID wird ignoriert. |
| `name` | `string` | die ID | Der Name, den die Sandbox anzeigt. Das Layout liest ihn nie. |
| `extends` | `string` | keine | Die ID einer Vorlage, von der diese ausgeht. Siehe [Vererbung und Varianten](https://postext.dev/de/docs/configuration-composed-pages.md#vererbung-und-varianten). |
| `area` | `'content' \| 'trim' \| 'bleed'` | `'content'` | Das Rechteck, auf das sich die Positionen der Rahmen beziehen. `'content'` ist der Satzspiegel der Seite, auf linken und rechten Seiten gespiegelt wie der Fließtext; `'trim'` ist die beschnittene Seite; `'bleed'` die Seite mit ihrem Anschnitt. |
| `grid` | `{ columns, rows, columnGap?, rowGap? }` | keins | Teilt den Bereich in Zellen, sodass sich ein Rahmen oder eine Gruppe über eine Zelle platzieren lässt (`grid: { col: 2, row: 1, cols: 2 }`, ab 1 gezählt) statt über `placement`. Die Abstände sind standardmäßig `0`. |
| `frames` | `FrameConfig[]` | `[]` | Die Rahmen in der Reihenfolge der Vorlage: In dieser Reihenfolge werden sie gemessen, und sie entscheidet bei Gleichstand. Siehe [Rahmen](https://postext.dev/de/docs/configuration-composed-pages.md#rahmen). |
| `groups` | `FrameGroupConfig[]` | `[]` | Stapel und Reihen von Rahmen, die sich Platz teilen. Siehe [Gruppen](https://postext.dev/de/docs/configuration-composed-pages.md#gruppen). |
| `decoration` | `DesignSlot` | keine | Bilder, Linien und Kästen, die mit der Seite gezeichnet werden, in der Elementsprache der [Kopf- und Fußzeilen](https://postext.dev/de/docs/configuration-headers-footers.md#kopf--und-fußzeilen). Textelemente enthalten nur Platzhalter (`{pageNumber}`, `{chapterTitle}`, `{attr.x}` für ein Attribut des Seitenblocks). Ein Element kann an einem Rahmen oder einer Gruppe verankert werden (`'#dinero'`) und bewegt sich dann mit. Die Dekoration wird nach den Rahmen gesetzt und verdrängt nie Text. |
| `header`, `footer` | `DesignSlot \| false` | geerbt | Kolumnentitel und Seitenzahl der Seite. Nicht gesetzt, behält die Seite die ihres Kapitels; `false` blendet sie aus. |
| `spread` | `boolean` | `false` | Die Vorlage beschreibt zwei gegenüberliegende Seiten, die wie ein einziges Blatt angelegt sind. Eine Doppelseite beginnt in einem Buch mit Schreibrichtung von links nach rechts immer auf einer linken Seite (in einem von rechts nach links auf einer rechten), und bei Bedarf wird davor eine leere Seite eingefügt. |
| `gutter` | `Dimension` | `0` | Auf einer Doppelseite der Streifen am Bund, den die Rahmen freihalten, sofern sie nicht `crossGutter: true` setzen. |
| `variants` | `{ recto?, verso? }` | keine | Änderungen für eine rechte (`recto`) oder eine linke Seite (`verso`), geschrieben wie die Vorlage selbst. Gemeint ist die physische Seite, daher funktionieren Bücher von links nach rechts und von rechts nach links gleichermaßen. |
| `overflowTemplate` | `string` | diese Vorlage | Die Vorlage der Seiten, die hinzukommen, wenn ein Rahmen auf der nächsten Seite weiterläuft (`overflow.continueIn: 'next-page'`). Nicht gesetzt, verwendet die hinzugefügte Seite diese Vorlage, in der nur die fortgesetzten Rahmen gefüllt sind. |
| `bodyStyle` | `string` | keins | Ein Absatzformat für den Text der Seite, wie es Überschriftenformate haben. |
| `palette` | `string` | keine | Eine abweichende Palette für die Seite, wie sie Überschriftenformate und Teile haben. |
| `role` | `string` | `'composed'` | Die Seitenrolle, die Gestaltungselemente mit einem Filter `pages` sehen. |

### Rahmen

Ein Rahmen ist ein benanntes Rechteck, das gesetzten Inhalt aufnimmt. Sein `name` ist der Slot, den das Markdown anfordert, und er ist in seiner Vorlage eindeutig (auch eine Gruppe kann nicht den Namen eines Rahmens tragen, da Anker beide auf dieselbe Weise benennen).

Ein Rahmen wird über seine Zelle `grid` platziert, wenn die Vorlage ein Raster hat, sonst über sein `placement`, das wie das eines Gestaltungselements funktioniert: ein Anker (`'container'` ist der Bereich, `'page'`, `'bleed'` oder `'#name'` für einen anderen Rahmen oder eine Gruppe), eine Kante, ein Versatz und eine Größe. Ein Rahmen, der an einem anderen verankert ist, bewegt sich mit ihm. Ohne beides beginnt der Rahmen in der oberen linken Ecke des Bereichs, ist so breit wie der Bereich und so hoch, wie seine Höhenregel es vorgibt. Wie der Inhalt in die Rahmen fließt, wie Rahmen verkettet und wie sie beschnitten werden, beschreibt [Zusammengesetzte Seiten › Wie die Seite gesetzt wird](https://postext.dev/de/docs/composed-pages.md#wie-die-seite-gesetzt-wird).

| Eigenschaft | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `name` | `string` | erforderlich | Der Name des Slots. |
| `placement` | `ElementPlacement` | der ganze Bereich | Anker, Kante, Versatz und Größe wie bei der [Platzierung von Elementen](https://postext.dev/de/docs/configuration-headers-footers.md#platzierung-von-elementen). Wird ignoriert, wenn eine Rasterzelle den Rahmen platziert. |
| `grid` | `{ col, row, cols?, rows? }` | keine | Eine Zelle des Vorlagenrasters, ab 1 gezählt, über `cols` × `rows` Zellen (standardmäßig 1). Eine Zelle außerhalb des Rasters wird hineingeholt. Wird ignoriert, wenn die Vorlage kein Raster hat. |
| `width`, `height` | `Dimension \| { percent } \| 'auto' \| 'fill'` | `'fill'`, `'auto'` | Eine feste Länge, ein Prozentsatz des Bereichs (0 bis 100), `'auto'` (die eigene Größe des Inhalts) oder `'fill'` (was bis zu der Kante bleibt, an der der Rahmen verankert ist). Nicht gesetzt, liest der Rahmen `placement.size` und dann den Standard: volle Breite, so hoch wie sein Inhalt. Ein Textrahmen braucht eine Satzbreite, daher ergibt die Breite `'auto'` nur für einen Rahmen mit einem einzigen Bild Sinn (die Breite des Bilds bei der Höhe des Rahmens). Ein Wert, den die Engine nicht verwenden kann (eine negative Länge, eine unbekannte Einheit), gilt als Standard. |
| `minWidth`, `maxWidth`, `minHeight`, `maxHeight` | `Dimension` | keine | Grenzen für eine Größe `'auto'` oder `'fill'` und für den Platz, den eine Gruppe abgibt oder nimmt. Das Minimum hat Vorrang vor dem Maximum, und eine feste Größe außerhalb der Grenzen wird zwischen sie gebracht (`frameMinMax` warnt in beiden Fällen). |
| `style` | `string` | ohne Kasten | Die ID eines [Kastenstils](https://postext.dev/de/docs/configuration-callouts.md#kastenstile): Rahmen werden mit Kastenstilen gezeichnet (Hintergrund, Kontur, Innenabstand, Streifen, Symbol, Beschriftungsreiter, Titel). Die Wörter eines Reiters kommen aus dem Markdown (`:::frame{slot="dinero" label="El dinero"}`). Die Kasteneinstellungen dazu, wo ein Kasten im Fließtext steht (`placement`, `span`, `columns`, `width`, `fixed` …), gelten für einen Rahmen nicht. |
| `padding` | `{ top?, right?, bottom?, left? }` | der des Stils | Überschreibt den Innenabstand des Stils Kante für Kante: zum Beispiel Platz für die Fotos, die über einem Kasten liegen. |
| `layer` | `number` | `1` | Die Zeichenreihenfolge. Die Dekoration ist Ebene 0; eine negative Ebene wird darunter gezeichnet. |
| `rotate` | `number` | `0` | Grad, im Uhrzeigersinn. Der Kasten und sein Inhalt drehen sich gemeinsam. |
| `verticalAlign` | `'top' \| 'middle' \| 'bottom' \| 'justify'` | `'top'` | Wo der Inhalt in einem Rahmen steht, der höher ist als er. |
| `columns`, `columnGap` | `number`, `Dimension` | `1`, der des Stils | Spalten innerhalb des Rahmens. |
| `exclude` | `'none' \| 'push'` | `'none'` | `'push'`: Der Text anderer Rahmen umfließt das Rechteck dieses Rahmens. |
| `flow` | `boolean` | `false` | Der Rahmen nimmt den Inhalt auf, der keinen Slot nennt. |
| `takes` | `'h1'` … `'h6'` | keins | Der Rahmen nimmt die erste Überschrift dieser Ebene auf, die keinen Slot nennt; ein Seitentitel ist also einfach `# Title` am Anfang des Blocks. |
| `next` | `string` | keins | Eine Kette: Inhalt, der nicht passt, läuft im Rahmen dieses Namens auf derselben Seite weiter. |
| `overflow.continueIn` | `string` | keins | Wo Inhalt weiterläuft, der nicht passt: `'#frame'` (ein anderer Rahmen der Seite, wie `next`), `'next-page'` (derselbe Rahmen auf einer Seite, die nach dieser hinzukommt) oder `'template:<id>'` (eine Seite dieser Vorlage). |
| `overflow.mark` | `string \| false` | je nach Sprache | Die Marke am Ende eines abgeschnittenen Stücks. Nicht gesetzt, das Fortsetzungswort der Dokumentsprache (wie bei geteilten Tabellen); `false` setzt keine. |
| `fit.shrinkText` | `boolean` | `true` | Wenn nichts anderes den Inhalt passend macht, darf sein Text kleiner gesetzt werden. |
| `fit.minScale` | `number` | `0.9` | Der kleinste Textmaßstab, über 0 und höchstens 1 (ein größerer Wert gilt als 1). |
| `fit.scaleImages`, `fit.imageMinScale` | `boolean`, `number` | `true`, `0.8` | Ob die Bilder im Rahmen kleiner gesetzt werden dürfen, und bis zu welchem Maßstab. |
| `pin` | `boolean` | `false` | Der Rahmen bewegt sich nie und ändert nie seine Größe, für einen Kasten, der an der Illustration ausgerichtet bleiben muss. Eine Gruppe ordnet sich um ihn herum an. |
| `grow`, `shrink`, `priority` | `number` | `0` | Wie der Rahmen den Platz seiner Gruppe teilt: `grow` nimmt einen Anteil am freien Platz, `shrink` lässt den Rahmen Platz zurückgeben, und Rahmen mit niedrigerer `priority` geben ihn zuerst ab. |
| `optional` | `boolean` | `false` | Keine Warnung, wenn das Markdown dem Rahmen nichts schickt. |
| `crossGutter` | `boolean` | `false` | Auf einer Doppelseite darf der Rahmen den Streifen am Bund überqueren. |
| `writingMode`, `direction` | `'horizontal-tb' \| 'vertical-rl'`, `'ltr' \| 'rtl'` | die der Seite | Ein senkrechter Kasten auf einer waagerechten Seite oder umgekehrt. |
| `remove` | `boolean` | `false` | In einer Vorlage, die eine andere erweitert, oder in einer Variante: entfernt den geerbten Rahmen dieses Namens. |

### Gruppen

Eine Gruppe ist ein Stapel (von oben nach unten) oder eine Reihe (vom Anfang zum Ende) von Rahmen, die sich Platz teilen und sich gemeinsam bewegen. Innerhalb einer Gruppe wird die eigene Position der Rahmen in Richtung der Gruppe ignoriert: Die Gruppe ordnet sie der Reihe nach an, mit `gap` dazwischen. Wenn der Text eines Rahmens wächst, rücken die Rahmen danach weiter. Eine Gruppe ist ein Kasten, an dem Rahmen und Dekoration verankert werden können (`'#pagina'`).

| Eigenschaft | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `name` | `string` | erforderlich | Eindeutig unter den Rahmen und Gruppen der Vorlage. |
| `kind` | `'stack' \| 'row'` | `'stack'` | Von oben nach unten oder vom Anfang zum Ende. |
| `frames` | `string[]` | `[]` | Die Rahmen der Gruppe in ihrer Reihenfolge auf der Seite. Ein Rahmen gehört höchstens zu einer Gruppe; ein Name, der kein Rahmen der Vorlage ist, oder ein bereits aufgeführter Rahmen wird übersprungen. |
| `gap` | `Dimension` | `0` | Der Abstand zwischen zwei Rahmen der Gruppe. |
| `placement`, `grid` | wie bei Rahmen | der Kasten ihrer Rahmen | Der eigene Kasten der Gruppe. Nicht gesetzt, der Kasten um die angegebenen Kästen ihrer Rahmen. |
| `align` | `'start' \| 'center' \| 'end' \| 'space-between'` | `'start'` | Wohin der freie Platz geht, wenn kein Rahmen der Gruppe wächst. |
| `remove` | `boolean` | `false` | In einer Vorlage, die eine andere erweitert, oder in einer Variante: entfernt die geerbte Gruppe. |

### Vererbung und Varianten

Eine Vorlage mit `extends` geht von der Vorlage aus, die sie nennt (und die selbst eine andere erweitern kann), und ändert nur, was sie schreibt:

- Ein Feld wie `area`, `header` oder `overflowTemplate` ersetzt das der Elternvorlage. `grid` wird Schlüssel für Schlüssel zusammengeführt. Auch `spread`, `gutter` und `role` werden geerbt; `id`, `name` und `extends` gehören der Vorlage selbst.
- `frames` und `groups` werden **nach Namen** zusammengeführt: Ein Eintrag mit dem Namen eines geerbten ändert die Felder, die er schreibt, und behält die übrigen (`fit`, `overflow` und `padding` werden Schlüssel für Schlüssel zusammengeführt; `placement` wird als Ganzes ersetzt); `remove: true` entfernt ihn; ein neuer Name wird nach den geerbten angefügt.
- Dekorationselemente werden auf dieselbe Weise nach `id` zusammengeführt; ein Element mit neuer ID oder ohne ID wird angefügt.

`variants.recto` und `variants.verso` werden wie eine Vorlage geschrieben und auf dieselbe Weise zusammengeführt, auf einer rechten oder einer linken Seite. Sie gelten nach der ganzen `extends`-Kette, die Variante der Wurzel zuerst. Eine Doppelseite hat beide Seiten, daher gilt für sie keine Variante.

```ts
pageTemplates: [
  { id: 'tema', frames: [{ name: 'texto', flow: true }, { name: 'margen', width: { value: 30, unit: 'mm' },
      placement: { anchor: { to: 'container', edge: 'top-left' } } }],
    variants: { recto: { frames: [{ name: 'margen', placement: { anchor: { to: 'container', edge: 'top-right' } } }] } } },
  { id: 'tema-sin-margen', extends: 'tema', frames: [{ name: 'margen', remove: true }] },
]
```

Ein Wert, der einem Standardwert gleicht, wird beim Speichern einer Vorlage in der Sandbox nie verworfen: In einer Vorlage, die eine andere erweitert, oder in einer Variante überschreibt er den Wert der Elternvorlage.

Im Code liefert `resolvePageTemplate(config, id, { parity })` eine Vorlage mit zusammengeführter Kette, angewandter Variante der jeweiligen Seite, allen eingesetzten Standardwerten und jedem Verweis so aufgelöst, wie es die Warnungen unten beschreiben; `validatePageTemplates(config)` liefert die Warnungen.

### Was der Umbruch umsetzt

Der Umbruch setzt Platzierung und Größen jedes Rahmens um (Raster, Anker, `min`/`max`, `verticalAlign`), seinen Stil und sein `padding`, `columns`, `layer`, `rotate`, `exclude`, `flow`, `takes`, `next` und `overflow.continueIn: "#frame"`, dazu `area`, `grid`, `decoration`, `header`, `footer` und `variants` der Vorlage. Gelesen und geprüft, aber noch nicht umgesetzt werden: die Raumverteilung in einer Gruppe (`grow`, `shrink`, `priority`, `pin` sowie `gap` und `align` einer Gruppe; ihre Rahmen behalten ihre eigene Platzierung), `fit`, `overflow.continueIn: "next-page"` und `overflowTemplate`, `spread` und `crossGutter`, `writingMode` und `direction` eines Rahmens sowie `bodyStyle` und `palette` der Vorlage. Eine Breite `'auto'` wird als `'fill'` gelesen.

## Beschriftungsstile

Die Eigenschaft `labelStyles` benennt das Aussehen der Beschriftungen auf einem Bild: die Meere und Städte einer Karte, die Teile eines Schemas. Eine Beschriftung steht an einem Anker des Bilds (einem Punkt, der mit der Ressource gespeichert ist, wie die Sprecher in Comics) und übernimmt den Stil, den der Anker oder die Beschriftung nennt.

```ts
labelStyles: [
  { id: 'mar', fontStyle: 'italic', textTransform: 'uppercase', letterSpacing: 0.12,
    color: { hex: '#2b6ca3', model: 'hex' } },
  { id: 'ciudad', fontWeight: 600, halo: { color: { hex: '#ffffff', model: 'hex' }, width: { value: 0.6, unit: 'pt' } } },
]
```

| Eigenschaft | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `id` | `string` | erforderlich | Der Name, den Anker und Beschriftungen verwenden. |
| `name` | `string` | die ID | Der Name, den die Sandbox anzeigt. |
| `paragraphStyle` | `string` | keins | Ein Absatzformat, dessen Schrift die Beschriftung übernimmt; die Felder unten überschreiben es. |
| `fontFamily`, `fontSize`, `fontWeight` | `string`, `Dimension`, `number` | die des Fließtexts | Die Schrift der Beschriftung. |
| `fontStyle` | `'normal' \| 'italic'` | `'normal'` | Aufrecht oder kursiv. |
| `color` | `ColorValue` | Farbe des Fließtexts | Die Farbe der Buchstaben. |
| `textTransform` | `'none' \| 'uppercase'` | `'none'` | Versalien, wie Karten Meere und Länder setzen. |
| `letterSpacing` | `number` | `0` | Zusätzlicher Abstand zwischen den Buchstaben, in Geviert. |
| `halo` | `{ color, width }` | keiner | Eine Kontur hinter den Buchstaben, damit sie auf einem unruhigen Bild lesbar bleiben. |
| `background`, `padding` | `ColorValue`, `Dimension` | keiner | Eine Fläche hinter der Beschriftung und der Raum um ihren Text. |
| `minScale` | `number` | `0.85` | Wie klein eine Beschriftung gesetzt werden darf, wenn sie nicht in ihre Breite passt. |

### Beschriftungsfelder eines Ankers

Die Anker eines Bilds (`Resource.anchors`, die Punkte, die Comics für Sprecher verwenden) nehmen einige optionale Felder für Beschriftungen auf. Es sind Bruchteile des Bilds, daher gelten sie in jeder Sprache und bei jedem Zuschnitt des Bilds. Comics ignorieren sie.

| Feld | Typ | Standard | Beschreibung |
| --- | --- | --- | --- |
| `width` | `number` | die der Beschriftung | Die Satzbreite der Beschriftung als Bruchteil der Bildbreite: Ein langer Name bricht darin auf zwei Zeilen um. |
| `align` | `'start' \| 'center' \| 'end'` | `'center'` | Welche Seite der Beschriftung am Ankerpunkt steht. |
| `verticalAlign` | `'top' \| 'middle' \| 'bottom'` | `'middle'` | Welche Kante der Beschriftung auf der Höhe des Ankers steht. |
| `rotate` | `number` | `0` | Grad, im Uhrzeigersinn, um den Ankerpunkt: der Name eines Flusses entlang seines Laufs. |
| `style` | `string` | keiner | Eine ID aus `labelStyles`. Eine Beschriftung, die ihren eigenen Stil nennt, überschreibt ihn. |

## Warnungen zu Seitenvorlagen

Anderswo ignoriert die Engine einen Schlüssel, den sie nicht kennt. Seitenvorlagen und Beschriftungsstile werden dagegen geprüft, und jedes Problem ist eine Konfigurationswarnung in `postext check` und im Bedienfeld Prüfungen der Sandbox. Der `path` dieser Warnungen ist ein JSON-Pointer auf das fehlerhafte Feld: `/pageTemplates/3/frames/2/style`, `/pageTemplates/0/variants/recto/frames/1/next`, `/resources/4/anchors/0/style`. Wurde das Feld geerbt, nennt der Pointer die Vorlage, die es geschrieben hat. Eine Warnung, die eine nicht vorhandene ID oder einen nicht vorhandenen Namen nennt, schlägt außerdem den nächstliegenden vorhandenen vor.

Ein falsch geschriebener Schlüssel einer Vorlage, eines Rahmens, einer Gruppe, eines Rasters, von `fit`, von `overflow`, einer Variante oder eines Beschriftungsstils ist ein `unknownConfigKey`; ein Wort außerhalb der Auswahl einer Einstellung (`area`, `verticalAlign`, `exclude`, `takes`, `kind`, `align`, `writingMode`, `direction`, `fontStyle`, `textTransform`) ist ein `unknownConfigValue`, und die Einstellung behält ihren Standardwert. Eine Vorlage ohne `id` oder ein Rahmen oder eine Gruppe ohne `name` wird mit einem `unknownConfigValue` an diesem Feld ignoriert.

| Warnung | Ursache | Abhilfe |
| --- | --- | --- |
| `templateDuplicate` | Zwei Vorlagen haben dieselbe `id`. Die erste wird verwendet, die spätere ignoriert. | Benennen Sie eine davon um, oder löschen Sie die Kopie. |
| `templateExtendsCycle` | Wer `extends` folgt, landet wieder bei derselben Vorlage (`a → b → a`). Jede Vorlage der Schleife und jede Vorlage, die eine davon erweitert, entfällt: Keine Seite kann sie verwenden. | Entfernen Sie das `extends` einer Vorlage der Schleife. |
| `templateExtendsUnknown` | `extends` nennt eine ID, die keine Vorlage hat. Die Vorlage wird für sich allein verwendet, ohne etwas zu erben. | Korrigieren Sie die ID (die Warnung schlägt die nächstliegende vor), oder fügen Sie die Elternvorlage hinzu. |
| `frameDuplicate` | Zwei Rahmen oder zwei Gruppen einer Liste haben denselben `name`, oder eine Gruppe trägt den Namen eines Rahmens. Der spätere Eintrag wird ignoriert; ein Anker auf diesen Namen liest den Rahmen. | Geben Sie jedem Rahmen und jeder Gruppe einen eigenen Namen. Um einen geerbten Rahmen zu ändern, schreiben Sie einen einzigen Eintrag mit seinem Namen. |
| `frameStyleUnknown` | Das `style` eines Rahmens nennt keinen Kastenstil. Der Rahmen wird ohne Kasten gezeichnet. | Korrigieren Sie die ID, oder fügen Sie den Stil zu `calloutStyles` hinzu. |
| `frameAnchorUnknown` | Ein Rahmen, eine Gruppe oder ein Dekorationselement ist an `'#name'` verankert, und die Vorlage hat keinen Rahmen, keine Gruppe und kein Element dieses Namens; oder Rahmen und Gruppen sind in einer Schleife aneinander verankert (auch über eine Gruppe ohne eigenen Anker, deren Kasten der ihrer Rahmen ist). Der Anker gilt als `'container'`, der Bereich. | Verankern Sie an einem vorhandenen Rahmen oder einer vorhandenen Gruppe, oder brechen Sie die Schleife auf, indem Sie eines der Glieder am Bereich verankern. |
| `frameMinMax` | Ein Minimum ist größer als sein Maximum (`minHeight 40mm > maxHeight 30mm`), oder eine feste `width` oder `height` liegt außerhalb der Grenzen. Das Minimum hat Vorrang, eine feste Größe wird zwischen die Grenzen gebracht, und `used` gibt an, was der Rahmen einnimmt. Längen in verschiedenen Einheiten werden in der Auflösung der Seite verglichen, Geviert beim Schriftgrad des Fließtexts. | Machen Sie das Minimum nicht größer als das Maximum, oder entfernen Sie die Grenze, der die feste Größe widerspricht. |
| `groupFrameUnknown` | Die `frames` einer Gruppe führen einen Namen auf, der kein Rahmen der Vorlage ist (vielleicht von einer Kindvorlage oder einer Variante entfernt). Die Gruppe überspringt ihn. | Korrigieren Sie den Namen, oder entfernen Sie ihn aus der Liste. |
| `groupFrameTwice` | Ein Rahmen ist in zwei Gruppen aufgeführt oder zweimal in derselben. Ein Rahmen gehört nur zu einer Gruppe: Die spätere Nennung wird übersprungen. | Belassen Sie den Rahmen in der einen Gruppe, mit der er sich bewegt. |
| `frameChainLoop` | Rahmen laufen über `next` oder `overflow.continueIn: '#frame'` in einer Schleife ineinander weiter (`a → b → a`). Die Verbindung, die die Schleife schließt, entfällt, sodass die Kette beim Rahmen davor endet. | Lassen Sie die Kette bei ihrem letzten Rahmen enden: Entfernen Sie dessen `next`, oder lassen Sie ihn auf der nächsten Seite weiterlaufen. |
| `overflowTargetUnknown` | Ein `next` nennt keinen Rahmen der Vorlage; ein `overflow.continueIn` nennt keinen Rahmen (`'#x'`) oder keine Vorlage (`'template:x'`), oder es hat keine der Formen `'#frame'`, `'next-page'` und `'template:<id>'`; oder `overflowTemplate` nennt keine Vorlage. Inhalt, der nicht passt, läuft dort nicht weiter. | Korrigieren Sie den Namen oder die ID, oder schreiben Sie eine der drei Formen. |
| `labelStyleUnknown` | Ein Anker eines Bilds nennt einen `style`, den `labelStyles` nicht hat. Die Warnung nennt die Ressource. Die Beschriftungen an diesem Anker erhalten das Standardaussehen. | Korrigieren Sie die Stil-ID am Anker, oder fügen Sie den Stil zu `labelStyles` hinzu. |

Die Konfigurationsversion ist seit den Seitenvorlagen 15 (vorher geschriebene Bundles laden weiterhin unverändert: Nichts, was eine ältere Konfiguration sagt, ändert seine Bedeutung).
