# Configuració: capçaleres i peus de pàgina

> El que s'imprimeix a dalt i al peu de cada pàgina: text amb marcadors, línies, caixes i imatges, segons la paritat de la pàgina, i on va cada element

- Versió HTML: https://postext.dev/ca/docs/configuration-headers-footers
- Última actualització: 2026-10-16
- Temps de lectura: 33 min
- Altres idiomes: [en](https://postext.dev/en/docs/configuration-headers-footers.md), [es](https://postext.dev/es/docs/configuration-headers-footers.md), [de](https://postext.dev/de/docs/configuration-headers-footers.md), [fr](https://postext.dev/fr/docs/configuration-headers-footers.md), [it](https://postext.dev/it/docs/configuration-headers-footers.md), [pt](https://postext.dev/pt/docs/configuration-headers-footers.md), [zh](https://postext.dev/zh/docs/configuration-headers-footers.md), [ja](https://postext.dev/ja/docs/configuration-headers-footers.md), [ar](https://postext.dev/ar/docs/configuration-headers-footers.md)

## En poques paraules

Aquesta pàgina reuneix el que s'imprimeix a dalt i a baix de cada pàgina. Una capçalera o un peu pot portar el número de pàgina, el títol del llibre o del capítol, una línia, una caixa o una imatge petita. Les pàgines de l'esquerra i les de la dreta poden mostrar coses diferents. Cada element pot anar a l'esquerra, al centre o a la dreta, o al marge, al costat del text. La capçalera i el peu van dins dels marges, així que mai no treuen espai al text.

## Capçaleres i peus

Les propietats `header` i `footer` controlen els blocs de capçalera i peu de pàgina. Les capçaleres i els peus es dibuixen **dins dels marges de pàgina existents** — no reserven espai addicional ni redueixen l'àrea de contingut.

**Marc del contenidor.** Un element ancorat a `'container'` es col·loca a la franja de marge entre el cos i la vora de tall, amb l'amplada de l'àrea de contingut. El contenidor de la capçalera va des de la **vora superior de tall** fins a la part superior del cos; el del peu, des de la part inferior del cos fins a la **vora inferior de tall**. Així, els ancoratges `top-*` de la capçalera i `bottom-*` del peu es mesuren des de la vora de tall, mentre que els `bottom-*` de la capçalera i `top-*` del peu es mesuren des de la vora del cos. El contenidor no inclou mai la zona de sang ni la franja de les marques de tall, de manera que una capçalera o un peu queda a la mateixa posició a la pàgina tallada tant si `page.cutLines` està activat com si no. Ancora a `'page'` (la caixa de tall) o a `'bleed'` per sortir de l'amplada de l'àrea de contingut o arribar a la zona de sang.

Els blocs utilitzen el model unificat de **ranura de disseny**: cada element defineix un `placement` amb un `anchor` (al contenidor o a un altre element per `#id`), un `offset` opcional i un `size` opcional. Els camps plans heretats `align`, `marginFromBody`, `marginFromEdge` i `width: 'full'` continuen acceptant-se com a entrada i es migren automàticament al format nou; a sota es documenta l'equivalència.

Cada bloc conté una llista d'elements de **text**, **línia** (`rule`) i **caixa** (`box`). L'ordre de l'array és l'ordre de pintura (el primer element es pinta primer, l'últim es pinta a sobre). Això es compleix siguin quins siguin els ancoratges: un element es pot ancorar a un altre que apareix després a la llista (`anchor.to: '#ttl'`), de manera que una caixa de fons pot anar primer i col·locar-se respecte al text que es pinta a sobre seu.

**Valors per defecte inclosos.** Quan `header` o `footer` són `undefined`, postext aplica un valor per defecte raonable en lloc d'un bloc buit:

- **Capçalera per defecte:** `{title}` alineat a la dreta a les pàgines senars, `{chapterTitle}` alineat a l'esquerra a les pàgines parelles i una línia a tota l'amplada — tots en el color principal de la paleta, Open Sans 8pt/600, `marginFromBody` `16pt` (text) / `13pt` (línia).
- **Peu per defecte:** `{pageNumber}` centrat a totes les pàgines en el color principal de la paleta, Open Sans 8pt/600, `marginFromBody` `16pt`.

Per renunciar als valors per defecte, estableix `header: { elements: [] }` (o `footer: { elements: [] }`). Un array `elements` buit explícit es conserva com a «sense elements» — només `undefined` activa els valors per defecte.

| Propietat | Tipus | Per defecte | Descripció |
| --- | --- | --- | --- |
| `elements` | `HeaderFooterElement[]` | valors per defecte integrats quan és `undefined`; `[]` els desactiva | Llista ordenada d'elements de text i línia. |
### Elements de text

Els elements de text renderitzen una plantilla amb substitució de marcadors. Els marcadors fan servir la sintaxi `{nombre}`; `{{` i `}}` s'emeten com a claus literals.

Els valors per defecte de la taula següent són els d'un element de text que afegeixes tu. La capçalera i el peu integrats descrits a **Valors per defecte inclosos** són elements ja fets amb els seus propis valors (Open Sans 8pt/600 en el color principal de la paleta), no els valors per defecte de l'element.

| Propietat | Tipus | Per defecte | Descripció |
| --- | --- | --- | --- |
| `kind` | `'text'` | — | Discriminador. |
| `id` | `string` | — | Id estable, únic dins del bloc. Altres elements s'hi ancoren amb `anchor.to: '#id'`. El sandbox n'assigna un en crear-lo. |
| `content` | `string` | `''` | Plantilla. Admet els marcadors que es llisten més avall, a més de `{attr.<clave>}` — un atribut escrit a la línia de l'H1 del capítol actual (`# Título {author="I. Zango"}`). Un atribut absent es resol com a cadena buida sense avís. Un salt de línia —o els dos caràcters `\n`, escrits a la plantilla o al valor d'un atribut— comença sempre una línia nova, sigui quin sigui l'`overflow`. El text que un marcador copia del document (un títol, un camp del frontmatter) s'imprimeix tal qual: aquí només un salt de línia real, com el salt d'un títol, comença una línia nova. |
| `align` | `'left' \| 'center' \| 'right' \| 'justify' \| 'start' \| 'end'` | `'center'` | Alineació horitzontal de les línies dins de la caixa de l'element. `'justify'` eixampla els espais entre paraules de cada línia ajustada, excepte l'última de cada paràgraf, fins que la línia omple la caixa; les línies que acompanyen una caplletra omplen l'espai que queda al seu costat. Amb `hyphenate`, una paraula que no cap en el que queda d'una línia justificada també es parteix per una síl·laba per omplir-la. L'última línia d'un paràgraf, una línia sense espais per eixamplar i un text que no s'ajusta s'alineen a l'esquerra. El text justificat es compon paràgraf a paràgraf, de manera que diverses línies en blanc entre paràgrafs compten com una. El llenç i el PDF col·loquen cada paraula on la va posar la maquetació; l'HTML eixampla els espais amb `word-spacing`. `'start'` i `'end'` segueixen la `direction` del text: la dreta i l'esquerra d'un text de dreta a esquerra. `'left'` i `'right'` són els costats de la caixa mateixa; en un disseny que es compon en el flux d'una pàgina de dreta a esquerra (una franja d'obertura, el disseny d'un títol) el flux està emmirallat, així que en són l'inici i el final, com al text general. |
| `direction` | `'ltr' \| 'rtl' \| 'auto'` | la del document | Direcció base del text: on van els seus caràcters neutres, l'ordre dels seus trams en una línia i quins costats volen dir `'start'` i `'end'`. `'auto'` llegeix la primera lletra forta del text resolt i, si no n'hi ha, pren la [`direction`](https://postext.dev/ca/docs/configuration-language.md#direcció-del-text) del document. Els trams en àrab o hebreu es llegeixen de dreta a esquerra sigui quina sigui la base. Un text que conté una lletra àrab no s'espaia mai (s'ignora tot el seu `letterSpacing`) i les seves paraules no es tallen en ajustar ni en truncar; una paraula més ampla que la caixa la desborda i s'avisa com a `unbreakableWordOverflow`. |
| `parity` | `'all' \| 'odd' \| 'even'` | `'all'` | En quines pàgines apareix l'element (paritat per número de pàgina: la pàgina 1 és senar). |
| `pages` | `'all' \| 'body' \| 'opener' \| 'part' \| 'blank'` | `'all'` | En quins *rols* de pàgina apareix l'element, combinat amb `parity`. Després de la col·locació cada pàgina es classifica com a `'blank'` (farciment de paritat o separador, o sense contingut), `'part'` (pàgina divisòria de part), `'opener'` (el seu primer bloc és un encapçalament el nivell del qual abasta la pàgina o força un salt de pàgina abans — la primera pàgina d'un capítol) o `'body'` (la resta). `pages: 'body'` amaga una capçalera corrent a les obertures de capítol; `pages: 'opener'` mostra un foli només allà. |
| `fontFamily` | `string` | `'EB Garamond'` | Família tipogràfica. |
| `fontSize` | `Dimension` | `8 pt` | Mida de la font. |
| `fontWeight` | `number` | `400` | Gruix de la font (100–900). |
| `italic` | `boolean` | `false` | Si es renderitza en cursiva. |
| `color` | `ColorValue` | `#000000` | Color del text. |
| `overflow` | `'wrap' \| 'ellipsis-start' \| 'ellipsis-middle' \| 'ellipsis-end' \| 'clip'` | `'wrap'` en dissenys de títol i de part; si no, `'ellipsis-end'` | Com es gestiona el text que excedeix l'amplada disponible de l'element. `'wrap'` divideix el text en diverses línies; les variants d'el·lipsi mantenen cada línia en una de sola i la trunquen amb `…` al principi, al centre o al final; `'clip'` retalla de manera estricta al rectangle de l'element sense inserir cap caràcter. Els salts de línia del contingut valen en tots els modes: l'el·lipsi i el retall s'apliquen a cada línia per separat. Un element que omet `overflow` pren el valor per defecte del seu buit: en un disseny de títol (`advancedDesign.slot`) o en una pàgina de part (`parts.design`, `parts.versoDesign`) passa de línia; en una capçalera, un foli o una fila de part de l'índex (`toc.parts.design`, una fila d'alçada fixa) acaba en `…`. Fes servir `'wrap'` en una capçalera que pugui ocupar diverses línies (una adreça), o una el·lipsi en una entradeta que s'hagi de quedar en una línia dins d'una obertura. Una línia tallada amb el·lipsi, o retallada amb tinta fora de la caixa, s'avisa amb l'avís de contingut `designTextTruncated`, una vegada per element i pàgina (una capçalera o un foli, una vegada per element i capítol). Una configuració desada abans de postext 1.24 (`configVersion` 9 o anterior) es llegeix amb `'ellipsis-end'` a cada text de títol o de part que no el fixa, perquè les seves pàgines no es moguin. Un text amb `dropCap` passa a línia nova digui el que digui aquest valor; amb `'clip'` les seves línies es continuen tallant a la vora d'una caixa d'alçada fixa. `'ellipsis-end'` i `'ellipsis-start'` tallen per un límit de paraula —*La història de la…*, no *La història de la na…*—, i cap espai ni signe d'enllaç (coma, dos punts, guió llarg, barra, parèntesi d'obertura) no queda al costat de l'el·lipsi. Només es talla una paraula per on calgui quan el límit, suprimits aquests signes, conservaria menys de la meitat del que hi cap: una paraula llarga o un URL (*http://exampl…*, no *http…*). Un espai de no separació o un guionet de no separació (U+2011, com en *MS‑DOS*) no és un límit de paraula; `'ellipsis-middle'` talla en qualsevol punt, però suprimeix els espais que l'envolten. Fins a postext 1.4 tots els modes tallaven a l'últim caràcter que hi cabia, espais inclosos. |
| `verticalAlign` | `'top' \| 'middle' \| 'bottom'` | `'middle'` | On se situa el text dins d'una caixa més alta que les seves línies — un `placement.size.height` fix, o una caixa estirada per un veí ancorat. Si les línies són més altes que la caixa (una xifra gran en una caixa d'alçada fixa, un `lineHeight` estret), sobresurten pel costat que l'alineació deixa lliure, com a l'alineació flex de CSS: `'bottom'` manté el peu de la caixa de l'última línia sobre el peu de la caixa i sobresurt per dalt, `'middle'` sobresurt el mateix pels dos extrems i `'top'` pel peu. Fins a postext 1.4 aquestes línies penjaven sempre de la part superior, fos quina fos l'alineació. La caplletra (`dropCap`) es mou amb les seves línies (fins a postext 1.4 es quedava a dalt en una caixa on `'middle'` o `'bottom'` les baixaven). |
| `lineHeight` | `number \| Dimension` | `1.2` | Interlineat de les línies de l'element. Un nombre és un múltiple de `fontSize`. També s'accepta un `Dimension`, com s'escriuen tots els altres interlineats de la configuració: `em` / `rem` és el mateix múltiple, i una longitud absoluta (`pt`, `mm`, `px`…) és la distància entre línies de base: `{ value: 15.5, unit: 'pt' }` fixa un interlineat de 15,5 pt sigui quin sigui el cos. Qualsevol altre valor (zero, un nombre negatiu, una dimensió mal formada) pren el valor per defecte. Fins a postext 1.4 un `Dimension` aquí feia impossible mesurar l'alçada del disseny: una obertura no reservava llavors cap espai, ni tan sols el seu `minHeight`, i el cos corria per sota del títol. |
| `letterSpacing` | `Dimension` | `0` | Tracking: espai addicional que avança després de cada caràcter, espais inclosos, exactament com el `letter-spacing` de CSS. Les mesures creixen amb ell, de manera que una caixa d'amplada automàtica continua ajustada. No canvia mai els glifs: les lligadures del tipus es conserven a canvas, HTML, EPUB i PDF (fins a postext 1.27 canvas i HTML les perdien en el text de disseny amb tracking, que quedava més ample del que s'havia mesurat). Un tram en hebreu porta tracking com el text llatí; només un text amb lletres àrabs no en porta. El tracking que segueix l'últim caràcter d'una línia no compta per a la seva alineació ni per a una caixa d'amplada automàtica, així que un títol espaiat i centrat queda centrat sobre les seves lletres, un d'alineat a la dreta acaba a la vora i l'última lletra d'una línia justificada arriba a la vora (fins a postext 1.4 quedaven mig espai de tracking, o un de sencer, a l'esquerra, i un element ancorat a la dreta d'un d'espaiat quedava un espai de tracking més lluny). Un valor negatiu estreny les lletres —un títol de 36 pt sol portar `{ value: -0.3, unit: 'pt' }`— i les mesures es redueixen igual; canvas, HTML i PDF el pinten igual (fins a postext 1.4 un valor negatiu es componia com a `0`, sense avís). |
| `textTransform` | `'none' \| 'uppercase'` | `'none'` | Transformació de majúscules aplicada al text resolt, marcadors inclosos — el títol d'una part en versals a l'índex. |
| `box` | `ElementBoxStyle` | — | Fons i vora opcionals dibuixats darrere del text: `backgroundColor`, `borderColor`, `borderWidth`, `borderRadius` i un `padding` per costat que amplia la caixa més enllà del text (vegeu [Elements de caixa](https://postext.dev/ca/docs/configuration-headers-footers.md#elements-de-caixa) per als camps). |
| `dropCap` | `{ lines, fontFamily, fontWeight, fontSize, color, gap }` | — | Caplletra: la primera lletra, gran, al costat de les primeres `lines` línies (2 per defecte), amb la seva pròpia font, gruix i color, i a `gap` del text. La lletra s'assenta a la línia de base de l'última línia que abasta, i `fontSize` val per defecte la mida que enrasa la seva part alta amb les majúscules de la primera línia: el cos del text més `lines` − 1 interlineats, prenent l'alçada de les majúscules com a 0,72 del cos (una font amb majúscules molt més altes o més baixes demana el seu propi `fontSize`). Un text amb caplletra s'ajusta a línies noves sigui quin sigui el seu `overflow`; amb `'clip'` les seves línies es continuen tallant a la vora d'una caixa d'alçada fixa. Un `color` enllaçat a la paleta segueix les paletes de la part i de la secció, com la resta del disseny. En el disseny d'un encapçalament, la lletra no reserva espai per sota del text: la part de la seva caixa de línia que queda sota la seva línia de base no empeny el cos cap avall. Una lletra que baixa de la seva línia de base (la Q o la J de moltes fonts) pot llavors entrar en l'espai que hi ha sota el disseny: dona a l'encapçalament un `marginBottom` per a ella. Fins a postext 1.4, la mida per defecte feia la lletra tan alta com totes les caixes de línia que abasta, de manera que sobresortia per damunt de la primera línia; qualsevol `overflow` diferent de `'wrap'` treia la lletra sense avisar; la paleta d'una secció o d'una part no en canviava el color; i una lletra tan profunda com el text del seu costat podia baixar el cos una línia de la retícula. Les configuracions desades abans conserven la mida de la 1.4, escrita com a `fontSize` (vegeu [Paquets escrits per postext 1.4 o anterior](https://postext.dev/ca/docs/configuration-bundles.md#paquets-escrits-per-postext-14-o-anterior)). La caplletra del text corrent es fixa en canvi des dels estils de paràgraf i d'encapçalament (vegeu [Caplletres](https://postext.dev/ca/docs/configuration-text.md#caplletres)), amb les alçades de les majúscules mesurades a les fonts. |
| `paragraphIndent` | `Dimension` | `0` | Sagnat de primera línia de cada paràgraf a partir del segon. Un salt de línia en el contingut —o els dos caràcters `\n`, en un text que ve d'un atribut— separa paràgrafs; diversos salts seguits compten com un. |
| `hyphenate` | `boolean` | `false` | Quan és `true` i el text passa a línia nova (`overflow: 'wrap'`, o un `dropCap`, que sempre ho fa), les paraules llargues que encara excedirien l'amplada després d'un salt de línia normal es divideixen en límits sil·làbics (fent servir la llengua de partició de mots activa del document) inserint un guionet tou al tall. En un text justificat (`align: 'justify'`), una paraula que no cap en el que queda d'una línia també es parteix per la seva última divisió sil·làbica que hi càpiga, per omplir la línia. |
| `inlineMarks` | `boolean` | `false` | Llegeix el text resolt —amb els valors dels marcadors— com a Markdown en línia: `**negrita**`, `*cursiva*`, `^superíndice^`, `~subíndice~`. Desactivat, els signes de marca s'imprimeixen tal qual. En el disseny d'un encapçalament, `{titleText}` conserva llavors els trams del mateix encapçalament en negreta, en cursiva, en superíndex i en subíndex (`*Pneumocystis*`, `CO~2~`), amb la resta de caràcters escapats perquè s'imprimeixin tal qual (des de postext 1.19). Vegeu [Marques en línia i contorns](https://postext.dev/ca/docs/configuration-headers-footers.md#marques-en-línia-i-contorns). |
| `stroke` | `{ width, color?, hollow? }` | — | Contorn traçat al voltant de les lletres: `width` (un `Dimension`, centrat a les vores dels glifs), `color` (per defecte, el del text; la caplletra pren el seu propi color) i `hollow` (`true` pinta només el contorn). Vegeu [Marques en línia i contorns](https://postext.dev/ca/docs/configuration-headers-footers.md#marques-en-línia-i-contorns). |
| `writingMode` | `'horizontal-tb' \| 'vertical-rl'` | `'horizontal-tb'` | `'vertical-rl'` compon el text de dalt a baix, les línies de dreta a esquerra i els caràcters drets: una capçalera pel marge exterior, un títol vertical al costat d'un capítol horitzontal. Vegeu [Elements de text verticals](https://postext.dev/ca/docs/configuration-headers-footers.md#elements-de-text-verticals). |
| `reserve` | `boolean` | `true` | Només en dissenys d'encapçalament: si l'element compta per a l'alçada que l'encapçalament reserva en el flux del text. `false` per a la decoració que pot quedar sota el text (un segell al peu de la pàgina, un marc, una banda lateral). Vegeu [Alçada reservada](https://postext.dev/ca/docs/configuration-headings.md#alçada-reservada). Les capçaleres i peus de pàgina i els dissenys de part l'ignoren. |
| `marginFromBody` | `Dimension` | `6 pt` | Distància absoluta entre la vora de l'element que mira cap al cos i la vora del cos. Independent d'altres elements. Migrat a `placement.offset.y`. |
| `marginFromEdge` | `Dimension` | `0 pt` | Desplaçament horitzontal respecte a la vora a la qual està alineat. Només s'aplica quan `align` és `'left'` o `'right'`. Migrat a `placement.offset.x`. |
| `placement` | `ElementPlacement` | derivat d'`align` + `marginFromBody` + `marginFromEdge` | Posicionament avançat (vegeu més avall). Quan es defineix, preval sobre els camps plans heretats. |

Marcadors disponibles:

- `{pageNumber}` — número de pàgina actual (1-indexed).
- `{totalPages}` — total de pàgines del document. En un llibre compost capítol a capítol (el Sandbox, `buildBundle`) cada capítol és un document, de manera que és el recompte del mateix capítol.
- `{bookTotalPages}` — total de pàgines del llibre sencer: tots els capítols, pàgines en blanc incloses. En un document compost tot sol coincideix amb `{totalPages}`. Consulta [Recompte de pàgines del llibre](https://postext.dev/ca/docs/configuration-headers-footers.md#recompte-de-pàgines-del-llibre) més avall.
- `{title}`, `{subtitle}`, `{author}`, `{publishDate}` — valors llegits de `content.metadata`. Les metadades desconegudes o buides es renderitzen com a cadena buida (i generen un avís al sandbox).
- `{chapterTitle}` — text de l'H1 més recent a la pàgina actual o abans. Se salta un H1 l'[estil d'encapçalament](https://postext.dev/ca/docs/configuration-styles.md#estils-dencapçalament) del qual fixa `runningChapter: false` (una làmina, un mapa).
- `{chapterTitleAtTop}`, `{chapterNumberAtTop}` — títol i número del capítol vigent al cap de la pàgina, que no coincideixen amb `{chapterTitle}` i `{chapterNumber}` en una pàgina on un capítol nou comença sota un altre text. Consulta [Capítol al cap de pàgina](https://postext.dev/ca/docs/configuration-headers-footers.md#capítol-al-cap-de-pàgina) més avall.
- `{partTitle}`, `{partNumber}` — títol i número de la part actual (la pàgina `:::part` més recent a la pàgina actual o abans; les pàgines en blanc de paritat just abans d'una pàgina de part ja hi pertanyen). Buits abans de la primera part.
- `{firstMark.<clave>}`, `{lastMark.<clave>}` — la primera i l'última paraula guia de la pàgina: un títol d'un nivell (`h1`–`h6`) o una entrada d'un estil de paràgraf. Consulta [Paraules guia](https://postext.dev/ca/docs/configuration-headers-footers.md#paraules-guia-primera-i-última-marca) més avall.

#### Recompte de pàgines del llibre

`{bookTotalPages}` imprimeix el nombre de pàgines del llibre sencer, el que el lector veu a «pàgina 12 de 348». Compta pàgines físiques, les blanques incloses, com `{totalPages}`, però al llarg de tots els capítols:

- **Un document compost tot sol** (`buildDocument` sense `continuation`) és el llibre sencer: `{bookTotalPages}` coincideix amb `{totalPages}`.
- **`buildBundle`** compon el llibre, suma les pàgines de tots els capítols i el compon un cop més amb aquest total, de manera que tots els capítols imprimeixen el mateix nombre. El recompte mai no mou un salt de pàgina, així que n'hi ha prou amb una volta més; una configuració que no imprimeix `{bookTotalPages}` no paga res.
- **El Sandbox** lliura el total a tots els capítols tan bon punt coneix les pàgines de cadascun. Fins llavors, un capítol imprimeix les pàgines fins al seu propi final. L'exportació del llibre sencer a la pestanya PDF compta les pàgines que maqueta: si un capítol va imprimir un altre recompte, perquè encara no se'n coneixien les pàgines, torna a maquetar el llibre amb el total al qual van arribar els capítols.
- **Un amfitrió que compon els capítols pel seu compte** passa el total com a `continuation.bookPageCount` (també al primer capítol). Sense això, `{bookTotalPages}` compta les pàgines fins al final del document (`continuation.pageIndexOffset` més les seves), cosa que només és exacta per a l'últim capítol.

```ts
footer: {
  elements: [{
    kind: 'text', id: 'folio', content: '{pageNumber} / {bookTotalPages}',
    fontSize: { value: 8, unit: 'pt' },
    placement: { anchor: { to: 'container', edge: 'top' }, size: { width: 'auto', height: 'auto' } },
  }],
}
```

`configUsesPlaceholder(config, 'bookTotalPages')` diu a un amfitrió si val la pena calcular el recompte.

#### Paraules guia: primera i última marca

Un diccionari imprimeix a la capçalera el primer i l'últim lema de cada pàgina («Abacà – Àncora»); una obra de consulta, la primera i l'última secció. `{firstMark.<clave>}` i `{lastMark.<clave>}` els imprimeixen. La clau diu què marca una pàgina:

- **De `h1` a `h6`**: un títol d'aquest nivell. La marca és el seu text, sense el número.
- **L'id d'un estil de paràgraf** (`entry`): un paràgraf d'un contenidor `:::paragraphs{style="entry"}`. La marca és el tram en negreta amb què obre el paràgraf, el lema, sense la puntuació final: `**Abacá.** Planta de…` marca `Abacá`. Un paràgraf que no obre en negreta no posa marca.

`{firstMark.<clave>}` és la primera marca que comença a la pàgina i `{lastMark.<clave>}` l'última. Una pàgina en què no en comença cap (una entrada llarga que continua) imprimeix en tots dos la marca vigent, l'última anterior. Les pàgines anteriors a la primera marca no imprimeixen res; en un llibre maquetat capítol a capítol és la primera marca del capítol, perquè les marques no passen d'un capítol al següent. Un títol o un paràgraf partit entre pàgines marca només la pàgina en què comença. La clau s'escriu després del punt amb lletres, dígits, `_` i `-`, començant per una lletra o `_`; una clau desconeguda no imprimeix res.

```md
:::paragraphs{style="entry"}
**Abacà.** Planta de les Filipines de la fibra de la qual es fan caps.

**Abarloar.** Situar un vaixell al costat d'un altre o al costat d'un moll.
:::
```

```ts
header: {
  elements: [{
    kind: 'text', id: 'guia', content: '{firstMark.entry} – {lastMark.entry}',
    fontSize: { value: 8, unit: 'pt' },
    placement: { anchor: { to: 'container', edge: 'bottom' }, size: { width: 'auto', height: 'auto' } },
  }],
}
```

Les paraules guia són capçaleres: es resolen a les ranures de capçalera i peu (també al `header` i al `footer` d'un estil de títol) i no imprimeixen res als dissenys de títol, de part i de l'índex; als de títol i de part, el tauler Revisió els assenyala com a marcadors desconeguts. Per mostrar el primer lema als versos i l'últim als rectos, fes servir dos elements amb `parity: 'even'` i `parity: 'odd'`. Un H1 l'estil d'encapçalament del qual fixa `runningChapter: false` no posa marca `h1`.

#### Capítol al cap de pàgina

`{chapterTitle}` i `{chapterNumber}` anomenen l'últim capítol començat a la pàgina o abans. En un llibre els capítols del qual van seguits, sense salt de pàgina entre ells, una pàgina que tanca un capítol i comença el següent a prop del peu porta llavors el títol del capítol nou sobre un text que encara pertany a l'anterior. `{chapterTitleAtTop}` i `{chapterNumberAtTop}` anomenen en canvi el capítol vigent al cap de la pàgina, com fan les novel·les de capítols seguits i moltes obres de consulta:

- una pàgina el primer bloc de la qual és l'H1 d'un capítol anomena aquest capítol;
- qualsevol altra pàgina anomena el capítol que continua, encara que més avall en comenci un de nou;
- una pàgina en blanc afegida per paritat va amb la pàgina que la segueix, i la separadora dels modes `always-*` amb la que la precedeix (consulta [Pertinença de les pàgines en blanc](https://postext.dev/ca/docs/configuration-headings.md#pertinença-de-les-pàgines-en-blanc)); si la pàgina que segueix una blanca de paritat comença amb el final d'un capítol i no amb el seu H1, la blanca també es queda amb aquest capítol;
- se salta un H1 amb `runningChapter: false`.

```ts
header: {
  elements: [{
    kind: 'text', id: 'chapter', content: '{chapterTitleAtTop}', parity: 'odd', pages: 'body',
    fontSize: { value: 8, unit: 'pt' },
    placement: { anchor: { to: 'container', edge: 'bottom-right' }, size: { width: 'auto', height: 'auto' } },
  }],
}
```

Com les paraules guia, tots dos són capçaleres: es resolen a les ranures de capçalera i peu i no imprimeixen res als dissenys de títol, de part i de l'índex. `{attr.<clave>}` llegeix sempre l'últim capítol començat.

#### Alineació implícita per vora

Quan un element de text té `placement.anchor.to` apuntant a un altre element mitjançant `#id`, la vora de l'ancoratge implica una alineació per defecte per a les línies ajustades:

- `right-of` i `align-left` impliquen `align: 'left'` — les línies ajustades flueixen cap a la dreta des de l'ancoratge.
- `left-of` i `align-right` impliquen `align: 'right'` — les línies ajustades s'enganxen al costat més proper a l'element de referència.

L'editor d'encapçalaments del sandbox aplica aquestes alineacions implícites automàticament en canviar la vora o el destí de l'ancoratge. Mantenen el text ajustat visualment lligat a l'element amb què es relaciona (de manera que, p. ex., la "P" d'un "Postext" ajustat queda verticalment sota la "I" d'"Introducció").

#### Marques en línia i contorns

Un element de text compon el seu text en una sola font per defecte: `**`, `^` i els altres signes de marca de Markdown s'imprimeixen tal qual. Amb `inlineMarks: true` el text resolt es llegeix com a Markdown en línia, amb les mateixes marques que admet el text de cos (vegeu **Format del document → Format en línia**):

- `**negrita**` compon amb gruix 700 (o amb el `fontWeight` de l'element si és més gruixut); `*cursiva*` inverteix la inclinació de l'element, de manera que l'èmfasi dins d'un element en cursiva surt en rodona; `***ambas***` fa totes dues coses. També valen les formes amb guió baix (`__negrita__`, `_cursiva_`).
- `^superíndice^` i `~subíndice~` es componen al 58 % de la mida, el superíndex elevat un terç d'aquesta i el subíndex baixat 0,15; un subíndex i un superíndex que es toquen (`T~0~^2^`) s'apilen, com al cos.
- Una barra inversa compon el mateix signe de marca (`\*`, `\_`, `\^`, `\~`). Un enllaç conserva el seu text; els accents greus de codi desapareixen.

Les marques es llegeixen després de substituir els marcadors, així que un valor les pot portar: la línia d'autors d'un atribut de l'encapçalament rep els seus números de filiació com a superíndexs. L'ajust de línia, la justificació, els modes d'el·lipsi, `dropCap` i `paragraphIndent` funcionen amb text marcat; tots els trams conserven el color de l'element.

```json
{ "kind": "text", "id": "authors", "content": "{attr.authors}", "inlineMarks": true, "overflow": "wrap",
  "fontSize": { "value": 11, "unit": "pt" },
  "placement": { "anchor": { "to": "#title", "edge": "below" }, "offset": { "y": { "value": 6, "unit": "pt" } } } }
```

```md
# Innivació i cabal dels rius {authors="Ana Ruiz^1^, Luis Gil^2^ i Marta Sanz^1,3^"}
```

`stroke` traça un contorn al voltant de les lletres: `width` és el gruix de la línia, centrada a les vores dels glifs (la meitat cau dins de les lletres i la meitat fora; l'amplada mesurada del text no canvia), `color` és per defecte el del text i `hollow: true` deixa les lletres sense farciment, de manera que només es veu el contorn: una xifra de titular perfilada, un títol que es desenganxa d'una fotografia. El contorn es pinta sobre el farciment, igual al llenç, en HTML (`-webkit-text-stroke`) i al PDF (mode de renderització de text 2, o 1 si és buit).

```json
{ "kind": "text", "id": "year", "content": "1863", "fontFamily": "Bitter", "fontSize": { "value": 120, "unit": "pt" }, "fontWeight": 700,
  "color": { "hex": "#1d3557", "model": "hex" },
  "stroke": { "width": { "value": 1.5, "unit": "pt" }, "hollow": true },
  "placement": { "anchor": { "to": "page", "edge": "bottom-right" }, "offset": { "x": { "value": -15, "unit": "mm" }, "y": { "value": -20, "unit": "mm" } } } }
```

Al PDF, els trams en negreta i en cursiva incrusten les variants corresponents de la família de l'element, així que el proveïdor de fonts les ha de subministrar.

#### Valors per defecte del text i paranys de l'ancoratge

Un element de text que escrius tu parteix d'aquests valors, i algun sorprèn:

- **`overflow` depèn del buit.** En un disseny de títol o en una pàgina de part, un títol llarg passa a més línies; en una capçalera, un foli o una fila de part de l'índex, un text massa ample per al seu espai es talla en una línia amb `…`. Fes servir `overflow: 'wrap'` en una capçalera que es pugui allargar (una adreça, una signatura) i revisa els avisos `designTextTruncated` dels textos tallats. Un salt de línia en el contingut (un salt real, o `\n` a la plantilla o al valor d'un atribut) comença una línia nova en tots els modes; els modes d'el·lipsi tallen cada línia per separat.
- **`align` val `'center'` i `verticalAlign` val `'middle'`.** Un element d'amplada automàtica s'ajusta a la seva línia més llarga, de manera que les seves línies queden centrades entre si; fes servir `align: 'left'` per a un bloc alineat a l'esquerra (un element d'amplada automàtica ancorat a un altre element alinea les seves línies tot sol del costat del seu ancoratge, vegeu més amunt).
- **La font és EB Garamond de 8 pt, en negre, amb `lineHeight` de `1.2`**, sigui quina sigui la del text de cos. A diferència dels altres interlineats de la configuració, el `lineHeight` d'un text de disseny sol ser un múltiple sense unitat (`1.2`); un `Dimension` també val (vegeu més amunt).

Un element sense `placement.size.width` (o amb `'auto'`) pren la mida del seu text, però només dins de l'espai que va del seu punt d'ancoratge a la vora del contenidor cap a la qual creix; per a un ancoratge `top` o `bottom`, el doble de la distància a la vora més propera. El seu `offset` compta. Un desplaçament que l'allunya d'aquesta vora no li treu res: una capçalera corrent ancorada a `top-left` amb una `x` negativa (que penja al marge esquerre) no perd espai, perquè creix cap a la dreta. Un desplaçament cap a aquesta vora li'n treu el mateix (el doble en un ancoratge `top` o `bottom`), i un que empeny el punt d'ancoratge més enllà de la vora el deixa sense espai: un ancoratge `top-right` amb una `x` menor que menys l'amplada del contenidor, o un ancoratge `top` desplaçat de costat més de la meitat d'aquesta amplada. Sense espai, un mode d'el·lipsi no imprimeix res i `'wrap'` apila un caràcter per línia. Hi ha tres sortides:

- donar a l'element un `size.width` fix: les amplades fixes mai no es retallen;
- ancorar-lo a `'page'` o a `'bleed'`, que converteix el marc de la pàgina (o de l'àrea de sang) en el seu espai;
- ancorar-lo a la vora oposada del contenidor.

El contenidor de la capçalera va de la vora superior de tall al cos, i el del peu, del cos a la vora inferior de tall: a la capçalera, els ancoratges `top-*` es mesuren des de la vora de tall i els `bottom-*` des del cos, i a l'inrevés al peu (vegeu **Marc del contenidor** més amunt). Una capçalera o un peu mai no desplacen el text de cos i es pinten a sobre, així que un element empès a l'àrea del cos tapa el text. Una banda d'obertura, en canvi, es pinta sota el text de cos; l'espai que ocupa en el flux es descriu a [Alçada reservada](https://postext.dev/ca/docs/configuration-headings.md#alçada-reservada).

### Elements de text verticals

Un element de text amb `writingMode: 'vertical-rl'` es compon en vertical en un bloc el text del qual és horitzontal: les capçaleres i els folis de qualsevol llibre, que es queden al plec, i qualsevol disseny d'una pàgina horitzontal. Es compon com un text horitzontal en un marc propi girat un quart de volta en el sentit de les agulles del rellotge, i es retorna girat a la pàgina:

- La seva caixa queda on la posa la col·locació. La seva alçada és la llargada d'una línia: la fixa `size.height` (o `'auto'`, el que mesura el text; `'fill'`, fins a la vora del contenidor), `size.width` fixa quantes línies hi caben d'amplada i `size.maxWidth` limita la llargada d'una línia.
- `align` col·loca les línies al llarg de la caixa (`'left'` a dalt), `verticalAlign` d'amplada (`'top'` a la dreta, on va la primera línia), i el farciment d'una caixa es queda al costat per al qual està escrit.
- Els caràcters es mesuren i es pinten com en una pàgina vertical: els hanzi drets, a un quadratí cadascun; la puntuació, en la seva forma vertical; les paraules llatines, ajagudes; els nombres curts, en una casella (`cjk.uprightDigits`). El canvas, el PDF i l'HTML ho posen al mateix rectangle.
- Amb `inlineMarks: true` les marques d'orientació separen un tram com al cos: `第:tcy[3.0]回` posa 3.0 en una casella, `:upright[GDP]` posa les lletres dretes una sota l'altra, `:sideways[…]` ajau un tram; una línia mai no es talla dins d'una d'elles. Un element horitzontal les ignora.
- Un element vertical no porta caplletra.
- En el flux d'una pàgina vertical (una obertura, una pàgina de part, el títol d'un requadre) el text ja va cap avall i `writingMode` no canvia res.

Els llibres xinesos verticals posen capçaleres i folis en un de tres llocs ([clreq §7.2](https://www.w3.org/TR/clreq/#x7-2-page-headers-footers-etc); per al japonès, [JLREQ §2.6](https://www.w3.org/TR/jlreq/#running_heads_and_page_numbers)):

| Convenció | On | Com es configura |
| --- | --- | --- |
| Capçalera i peu horitzontals | Damunt i sota de la caixa de text, com als llibres horitzontals; és el més habitual. | La capçalera i el peu tal com són. |
| Marge exterior (estil 中缝; 邊峰 a Taiwan) | Al llarg del marge exterior: el títol del capítol o del llibre des d'uns quatre caràcters per sota del cap de la caixa, i el foli fins a uns cinc per damunt del peu, en nombres xinesos, a un 80 % del cos del text. | Dos elements verticals ancorats a `'outer'`, a sota. |
| Cantonada exterior del peu | El foli al peu de la pàgina, a la cantonada exterior (les normes de Taiwan per a llibres 中式). | Un element horitzontal al peu a `'bottom-left'` amb `parity: 'odd'` i un altre a `'bottom-right'` amb `parity: 'even'` en un llibre enquadernat per la dreta (a l'inrevés en un per l'esquerra). |

Les capçaleres del marge exterior, tal com les afegeix el Sandbox (**Encapçalament › Capçaleres al marge exterior (vertical)**), aquí per a un cos de 10 pt (el Sandbox les posa al 80 % del cos del text):

```json
{
  "page": { "pageNumbering": { "format": "trad-chinese-informal" } },
  "header": { "elements": [
    { "kind": "text", "id": "head", "content": "{chapterTitle}", "writingMode": "vertical-rl",
      "fontSize": { "value": 8, "unit": "pt" }, "overflow": "clip", "align": "left",
      "placement": { "anchor": { "to": "outer", "edge": "top" }, "offset": { "y": { "value": 4, "unit": "em" } } } },
    { "kind": "text", "id": "folio", "content": "{pageNumber}", "writingMode": "vertical-rl",
      "fontSize": { "value": 8, "unit": "pt" }, "overflow": "clip", "align": "left",
      "placement": { "anchor": { "to": "outer", "edge": "bottom" }, "offset": { "y": { "value": -5, "unit": "em" } } } }
  ] }
}
```

`anchor.to: 'outer'` (vegeu [Posicionament d'elements](https://postext.dev/ca/docs/configuration-headers-footers.md#posicionament-delements)) és el marge exterior de cada pàgina, així que els dos elements baixen per la vora esquerra d'una pàgina senar i per la dreta d'una de parella en un llibre enquadernat per la dreta (`page.binding`). `{pageNumber}` surt en el format de la numeració: `trad-chinese-informal` dona 一百零三 a la pàgina 103, i `cjk-decimal`, 一〇三. Les regles de cada bloc continuen valent: `pages: 'body'` treu una capçalera de les obertures de capítol. Un ornament curt entre capçalera i foli (una cua de peix ︻, un filet) és un element més ancorat al mateix marc.

Al VDT un bloc vertical porta `vertical` (`VDTDesignTextBlock.vertical`: la regió, les xifres dretes i l'eix central de cada família); les seves línies són al marc girat del mateix bloc: `xOffset` cap avall des de la vora superior de la caixa i `baselineY` cap a l'esquerra des de la seva vora dreta. Un tram d'una línia amb marques porta `tcy` o `orientation`, com un segment del cos.
### Elements de línia

Els elements de línia dibuixen una línia: horitzontal al llarg de l'amplada del bloc, o vertical al llarg de la seva alçada.

| Propietat | Tipus | Per defecte | Descripció |
| --- | --- | --- | --- |
| `kind` | `'rule'` | — | Discriminador. |
| `id` | `string` | — | Id estable, únic dins del bloc, per a referències `anchor.to: '#id'`. |
| `direction` | `'horizontal' \| 'vertical'` | `'horizontal'` | Una línia horitzontal recorre `placement.size.width` (`'fill'` = fins a la vora del contenidor) i fa `thickness` d'alçada. Una vertical recorre `placement.size.height` (`'fill'` o sense definir = fins a la vora del contenidor) i fa `thickness` d'amplada — un separador entre el titolet i el foli. |
| `color` | `ColorValue` | `#000000` | Color del traç. |
| `thickness` | `Dimension` | `0.5 pt` | Gruix de la línia. Una línia que l'omet es dibuixa amb el valor per defecte (fins a postext 1.4 no pintava res). |
| `width` | `Dimension \| 'full'` | `'full'` | `'full'` abasta l'àrea de contingut; una `Dimension` restringeix la línia a una llargada fixa posicionada per `align`. |
| `align` | `'left' \| 'center' \| 'right'` | `'center'` | Alineació quan `width` no és `'full'`. |
| `marginFromBody` | `Dimension` | `6 pt` | Distància absoluta entre la vora de la línia que mira al cos i la vora del cos. Independent dels altres elements. |
| `marginFromEdge` | `Dimension` | `0 pt` | Desplaçament horitzontal respecte a la vora alineada. Només s'aplica quan `width` és una `Dimension` fixa i `align` és `'left'` o `'right'`. |
| `parity` | `'all' \| 'odd' \| 'even'` | `'all'` | En quines pàgines apareix la línia. |
| `pages` | `'all' \| 'body' \| 'opener' \| 'part' \| 'blank'` | `'all'` | Rols de pàgina en què apareix la línia (vegeu el camp `pages` dels elements de text). |
| `reserve` | `boolean` | `true` | Només en dissenys d'encapçalament: si la línia compta per a l'alçada que l'encapçalament reserva en el flux del text (vegeu [Alçada reservada](https://postext.dev/ca/docs/configuration-headings.md#alçada-reservada)). |
| `placement` | `ElementPlacement` | derivat d'`align` + `marginFromBody` + `marginFromEdge` | Posicionament avançat (vegeu [Posicionament d'elements](https://postext.dev/ca/docs/configuration-headers-footers.md#posicionament-delements)). `size.width` / `size.height` fixen la longitud de la línia; `width: 'fill'` és l'antic `'full'`. |

### Elements de caixa

Els elements de caixa pinten un rectangle arrodonit dins del bloc — útils com a fons darrere d'un text en obertures de capítol, columnes laterals o peus. Les caixes es posicionen exclusivament mitjançant el camp `placement`; no tenen variant plana heretada. L'emplenament, el traç i el radi de cantonada viuen a l'objecte niat `style` (`ElementBoxStyle`), com a l'exemple JSON de «Posicionament d'elements».

| Propietat | Tipus | Per defecte | Descripció |
| --- | --- | --- | --- |
| `kind` | `'box'` | — | Discriminador. |
| `id` | `string` | — | Id estable, únic dins del bloc. Els elements germans s'hi ancoren amb `anchor.to: '#id'`. El sandbox n'assigna un en crear l'element. |
| `style.backgroundColor` | `ColorValue` | `transparent` | Color d'emplenament. Posa `transparent` per a una caixa només de vora. |
| `style.borderColor` | `ColorValue` | `transparent` | Color del traç. |
| `style.borderWidth` | `Dimension` | `0 pt` | Gruix del traç. El traç es pinta cap a l'interior del rectangle de la caixa, de manera que les dimensions exteriors no varien: la vora exterior del traç va per la vora de la caixa, i una caixa arrodonida conserva el seu radi exterior. Un traç tan ample com la caixa l'omple. Canvas, HTML i PDF el dibuixen igual (fins a postext 1.4 el canvas i el PDF centraven el traç a la vora, amb la meitat fora de la caixa). |
| `style.borderRadius` | `Dimension` | `0 pt` | Radi de cantonada. Es limita a la meitat del costat més curt en temps de renderització. |
| `placement` | `ElementPlacement` | — | Obligatori. Vegeu «Posicionament d'elements» més avall. |
| `parity` | `'all' \| 'odd' \| 'even'` | `'all'` | En quines pàgines apareix la caixa. |
| `pages` | `'all' \| 'body' \| 'opener' \| 'part' \| 'blank'` | `'all'` | Rols de pàgina en què apareix la caixa (vegeu el camp `pages` dels elements de text). |
| `reserve` | `boolean` | `true` | Només en dissenys d'encapçalament: si la caixa compta per a l'alçada que l'encapçalament reserva en el flux del text (vegeu [Alçada reservada](https://postext.dev/ca/docs/configuration-headings.md#alçada-reservada)). |

### Elements d'imatge

Un element `image` dibuixa un recurs de mapa de bits o SVG del document — el logotip de l'editorial a la portada, una marca en una capçalera. La seva mida la fixa `placement.size`: si un dels costats `width` / `height` queda en `'auto'` (el valor per defecte), l'altre segueix la proporció de la imatge; amb tots dos fixats, la imatge s'ajusta dins de la caixa, centrada. Un recurs inexistent o que no sigui una imatge no dibuixa res.

```ts
{
  kind: 'image', id: 'logo', resourceId: 'logo-editorial',
  placement: { anchor: { to: 'page', edge: 'top-left' }, offset: { x: { value: 64, unit: 'mm' }, y: { value: 233, unit: 'mm' } }, size: { width: { value: 83, unit: 'mm' }, height: 'auto' } },
}
```

`resourceId` admet els mateixos marcadors que el `content` d'un element de text, de manera que un mateix disseny pot dibuixar una imatge diferent a cada encapçalament. Amb `resourceId: '{attr.vineta}'` en un estil d'encapçalament, `# Capítulo I {style="apertura" vineta="tronco"}` dibuixa el recurs `tronco` i `# Capítulo II {style="apertura" vineta="peluca"}` dibuixa `peluca`: els capítols comparteixen l'estil en lloc de clonar-lo per a cada imatge. Una capçalera o un peu llegeixen els atributs del capítol de la pàgina, com `{attr.<clave>}` en un titolet, i també hi serveixen els altres marcadors (`'mapa-{chapterNumber}'`). Un id que queda buit, com el d'un encapçalament sense l'atribut, no dibuixa res. Des de postext 1.8.

| Propietat | Tipus | Per defecte | Descripció |
| --- | --- | --- | --- |
| `id` | `string` | — | Identificador estable; altres elements s'hi poden ancorar com a `#id`. |
| `resourceId` | `string` | — | Id d'un `Resource` de mapa de bits o SVG del document. Pot portar marcadors, entre els quals `{attr.<clave>}`, que s'emplenen a cada encapçalament, part o pàgina. |
| `decorative` | `boolean` | `false` | La imatge és només ornamental (un ornament, una banda): no aporta text alternatiu a la sortida encara que el seu recurs en tingui (vegeu més avall). |
| `placement` | `ElementPlacement` | — | Ancoratge, desplaçament i mida (vegeu [Posicionament d'elements](https://postext.dev/ca/docs/configuration-headers-footers.md#posicionament-delements)). Un costat `'fill'` arriba fins a la vora del contenidor. |
| `parity`, `pages` | com a dalt | `'all'` | En quines pàgines apareix la imatge. |
| `reserve` | `boolean` | `true` | Només en dissenys d'encapçalament: si la imatge compta per a l'alçada que l'encapçalament reserva en el flux del text (vegeu [Alçada reservada](https://postext.dev/ca/docs/configuration-headings.md#alçada-reservada)). |

El backend PDF incrusta el recurs com una figura (un SVG amb màster d'impressió l'utilitza); el visor HTML el resol mitjançant `resourceImageUrl`.

Una imatge que dibuixa un disseny és contingut quan el seu recurs la descriu: l'`altText` del recurs, o el seu peu com a text sense format quan no en té (una etiqueta `:chip` es llegeix pel seu text i una `:ref` pel seu `text` si en porta), passa al VDT (`VDTDesignImageBlock.altText`), és l'`alt` del seu `<img>` en HTML i una `Figure` amb `/Alt` en un PDF etiquetat, que es llegeix just després del text del seu disseny (la làmina d'un capítol, després del títol del capítol). Una imatge el recurs de la qual no té ni l'una cosa ni l'altra, i una marcada com a `decorative`, és ornament: `alt=""` amb `role="presentation"`, i un artefacte al PDF. La imatge d'una capçalera o un peu es repeteix a totes les pàgines, així que es tracta com un element de paginació digui el que digui el seu recurs: sense `altText` al VDT, `alt=""` amb `role="presentation"` en HTML i un artefacte de la pàgina al PDF.

### Posicionament d'elements

`ElementPlacement` és el model unificat de posicionament que fan servir tots els tipus d'elements (text, línia, caixa) dins de qualsevol ranura de disseny — capçalera de pàgina, peu de pàgina o ranura de disseny avançat d'un encapçalament. Tres camps descriuen un placement:

```ts
interface ElementPlacement {
  /** A què s'ancora aquest element i a quina vora d'aquest destí. */
  anchor: {
    to: 'container' | 'page' | 'bleed' | 'outer' | `#${string}`; // container = el bloc; page = caixa de tall; bleed = caixa de tall + sang; outer = el marge exterior (capçalera, peu); #id = un altre element
    edge: AnchorEdge;
  };
  /** Distància des del punt d'ancoratge. */
  offset?: { x?: Dimension; y?: Dimension };
  /** Amplada / alçada opcional. L'amplada admet també 'fill' (estendre al llarg del bloc).
   *  `maxWidth` limita una amplada 'auto' (text): l'element continua ajustant-se al seu
   *  contingut, de manera que els elements que s'hi ancoren no se'n desenganxen, però un text llarg
   *  es talla o es plega allà — una capçalera pot reservar lloc per a l'etiqueta que
   *  en penja en comptes d'expulsar-la. */
  size?: { width?: Dimension | 'fill' | 'auto'; height?: Dimension | 'fill' | 'auto'; maxWidth?: Dimension };
}
```

`AnchorEdge` admet:

- **Vores del contenidor** (quan `anchor.to` és `'container'`, `'page'` o `'bleed'`): `top`, `top-left`, `top-right`, `bottom`, `bottom-left`, `bottom-right`, `left`, `right`.
- **Vores relatives a un altre element** (quan `anchor.to === '#someId'`): `right-of`, `left-of`, `below`, `above`, `align-top`, `align-bottom`, `align-left`, `align-right`.

Cada vora relativa a un altre element posa una cantonada de l'element sobre una cantonada de l'element al qual s'ancora, i `offset` el desplaça des d'allà:

- `right-of`: la seva cantonada superior esquerra sobre la superior dreta del de referència (al costat, amb les parts superiors a la mateixa alçada); `left-of`: la seva cantonada superior dreta sobre la superior esquerra del de referència;
- `below`: la seva cantonada superior esquerra sobre la inferior esquerra del de referència (a sota, amb les vores esquerres alineades); `above`: la seva cantonada inferior esquerra sobre la superior esquerra del de referència;
- `align-top` i `align-left`: la seva cantonada superior esquerra sobre la superior esquerra del de referència. Els dos noms donen la mateixa col·locació: s'alineen alhora les vores superiors i les esquerres;
- `align-bottom`: la seva cantonada inferior esquerra sobre la inferior esquerra del de referència;
- `align-right`: la seva cantonada superior dreta sobre la superior dreta del de referència.

Una vora relativa a un altre element usada amb `'container'`, `'page'` o `'bleed'`, i una vora de contenidor usada amb `'#id'`, es llegeixen com la cantonada superior esquerra.

`anchor.to: 'page'` ancora l'element a la **caixa de tall** (la pàgina física un cop tallada) i `'bleed'` a la caixa de tall ampliada per `cutLines.bleed` a tots els costats (idèntica a la caixa de tall mentre les marques de tall estiguin desactivades). Tots dos marcs passen a ser també la referència de `size: 'fill'` i del retall automàtic d'amplada, de manera que una banda de color pot anar de vora a vora independentment dels marges de pàgina:

```json
{ "kind": "box", "id": "band", "placement": { "anchor": { "to": "bleed", "edge": "top-left" }, "size": { "width": "fill", "height": { "value": 6, "unit": "cm" } } }, "style": { "backgroundColor": { "hex": "#1d3557", "model": "hex" } } }
```

Amb les marques de tall activades, el que un element pinta fora de la caixa de sang es retalla (vegeu [Marques de tall](https://postext.dev/ca/docs/configuration-page-layout.md#marques-de-tall)).

`anchor.to: 'outer'` (blocs de capçalera i peu) ancora l'element al **marge exterior** de la pàgina: de la vora de la caixa de text a la vora de tall al costat contrari al llom, i del cap de la caixa de text al seu peu. Queda a la dreta d'una pàgina senar i a l'esquerra d'una parella en un llibre enquadernat per l'esquerra, i al revés en un d'enquadernat per la dreta (`page.binding`), de manera que un sol element serveix per a les dues pàgines d'un plec: una capçalera pel marge exterior (vegeu [Elements de text verticals](https://postext.dev/ca/docs/configuration-headers-footers.md#elements-de-text-verticals)). En qualsevol altre bloc es llegeix com `'container'`. L'`offset` d'un element de text pot anar en `em`, quadratins del seu propi `fontSize`: quatre caràcters per sota del cap de la caixa de text és `{ "y": { "value": 4, "unit": "em" } }`.

Dins de la ranura de disseny avançat d'un encapçalament, els elements ancorats a la pàgina o a la sang no augmenten l'alçada reservada per a l'encapçalament llevat que s'estenguin per sota de la seva vora superior (una banda a la part superior de la pàgina queda darrere de l'obertura; una banda que baixi més enllà de l'encapçalament empeny el cos cap avall). Fes servir `advancedDesign.minHeight` per reservar una alçada fixa d'obertura en qualsevol cas, i `reserve: false` en un element que no hagi d'empènyer el text de cap manera. Les regles completes són a [Alçada reservada](https://postext.dev/ca/docs/configuration-headings.md#alçada-reservada).

Cada element té un `id` estable (que assigna automàticament el sandbox; també el pots establir a mà). Els elements ancorats a altres elements formen un petit graf de dependències que el motor resol abans de mesurar, així un element es pot encadenar a un altre sense coordenades manuals.

La forma heretada `align` + `marginFromBody` + `marginFromEdge` s'interpreta a l'entrada i es reescriu a un placement en el moment de resoldre la configuració, de manera que les configuracions existents continuen funcionant sense canvis.
