Capítol 4 · Part II · L'ofici
Configuració: pàgina i disposició
La mida de pàgina, els marges i la retícula de base, les columnes i l'espai que les separa, i les capçaleres i els peus de pàgina
En poques paraules
Aquesta pàgina reuneix els paràmetres del full. Tries la mida de pàgina, els marges, el costat per on s'enquaderna el llibre i la retícula sobre la qual reposen les línies de text. Decideixes quantes columnes té la pàgina i quant d'espai les separa. També decideixes què s'imprimeix a dalt i a baix de cada pàgina, com ara el número de pàgina o el títol del capítol. És una de les nou pàgines de la referència de configuració.
#Pàgina
La propietat page controla les dimensions físiques i l'aparença de la pàgina.
| Propietat | Tipus | Per defecte | Descripció |
|---|---|---|---|
sizePreset | PageSizePreset | '17x24' | Mida de pàgina predefinida. Estableix 'custom' per fer servir amplada/alçada explícites. |
width | Dimension | 17 cm | Amplada de pàgina. Es pren de sizePreset quan s'omet; un valor explícit sempre preval (fes servir sizePreset: 'custom' per a mides totalment personalitzades). |
height | Dimension | 24 cm | Alçada de pàgina. Es pren de sizePreset quan s'omet; un valor explícit sempre preval. |
margins | PageMargins | 2 cm tots els costats | Espai entre la vora de la pàgina i l'àrea de contingut. Cada costat (superior, inferior, esquerre, dret) es configura independentment. Amb mirror: true els marges són marges de pàgines enfrontades: left és el marge interior (del llom) i right l'exterior; les pàgines senars (la pàgina 1 és senar) els mantenen tal qual i les parelles els intercanvien, de manera que l'àrea de contingut — i amb ella les columnes, les bandes de flotants, els contenidors de capçalera/peu i les bandes d'obertura — es desplaça al llarg del plec. Per defecte false. Mira més avall. |
backgroundColor | ColorValue | transparent | Color de fons de la pàgina. |
dpi | number | 300 | Els píxels per polzada amb què treballa la maquetació: com es converteixen les unitats físiques (cm, mm, in, pt) en els seus píxels. Un mapa de bits sense resolució pròpia ocupa un píxel de maquetació per cada píxel de la imatge, així que s'imprimeix a aquests ppp: deixa-hi 300 per a impremta, o dona una resolució a les imatges (Resource.bitmap.resolution, layout.bitmapResolution; vegeu Format del document › Mida dels mapes de bits). El preflight revisa la resolució efectiva de cada imatge. |
cutLines | CutLinesConfig | desactivat | Mostrar marques de tall a les cantonades de la pàgina per a impressió. En activar-ho, el llenç s'expandeix per incloure l'àrea de sang i les marques de tall. Mira més avall. |
baselineGrid | BaselineGridConfig | desactivat | Dibuixar la retícula de base sobre les pàgines, per comprovar el ritme vertical. La maquetació s'ajusta a la retícula tant si es dibuixa com si no. Mira més avall. |
binding | 'auto' | 'left' | 'right' | 'auto' | La vora per la qual s'enquaderna el llibre. 'auto' és 'right' quan layout.writingMode és 'vertical-rl', quan el document va de dreta a esquerra (direction) o quan la seva secció comics es llegeix de dreta a esquerra (un manga, una edició japonesa o en xinès tradicional), i 'left' en cas contrari. Un llibre enquadernat per la dreta comença en una pàgina esquerra i emmiralla els marges a l'inrevés. Val per a tot el llibre: el layout propi d'un estil de títol no el canvia. Mira Enquadernació. |
#Marges simètrics (mirall)
Els llibres es llegeixen per plecs, i el marge interior sol ser diferent de l'exterior. margins.mirror converteix els quatre marges en marges de pàgines enfrontades:
{
"page": {
"margins": {
"top": { "value": 2, "unit": "cm" },
"bottom": { "value": 2.5, "unit": "cm" },
"left": { "value": 2.2, "unit": "cm" },
"right": { "value": 1.4, "unit": "cm" },
"mirror": true
}
}
}Amb aquesta configuració tota pàgina senar té 2,2 cm de marge a l'esquerra (el llom) i 1,4 cm a la dreta (el tall davanter); tota pàgina parella té 1,4 cm a l'esquerra (el tall davanter) i 2,2 cm a la dreta (el llom). Cada pàgina composta porta el seu propi contentArea a la VDTPage, així que tot el que se'n deriva — columnes, bandes de flotants a tota l'amplada, contenidors de capçalera i peu, i bandes d'obertura amb span: 'page' — segueix automàticament la geometria emmirallada. Els marcs de pàgina i de sang que fan servir els elements de disseny ancorats a 'page' / 'bleed' no se'n veuen afectats: descriuen el plec físic, no els marges.
#Enquadernació
«Els documents xinesos compostos en vertical s'enquadernen pel costat dret, i els compostos en horitzontal per l'esquerre» (clreq §7.1.1.1). page.binding: 'right' compon un llibre per a la vora dreta:
- La pàgina 1 continua sent senar i continua sent la pàgina senar del plec (recto), així que
breakBefore.parity,:::pagebreak{parity}, els elements de disseny ambparityi el recompte de pàgines conserven el seu sentit. El que canvia és el costat on queda la senar: la pàgina esquerra del plec. Un capítol que comença en senar comença en una pàgina esquerra (clreq §7.1.3.3). - Amb
margins.mirror,leftcontinua sent el marge interior, però són les pàgines senars les que el canvien de costat: la pàgina 1 té el marge interior a la seva dreta i la 2 a la seva esquerra. La columna lateral deoneAndHalfen'outer'/'inner', el flotant girat que es recolza al llom, els marges de les pàgines de part i les icones de cantonada'outer'/'inner'de les caixes segueixen la mateixa regla. - El document ho indica (
VDTDocument.binding: 'right'), de manera que qui el mostra no ha de llegir la configuració: el Sandbox ensenya els plecs com[3 | 2], amb la pàgina 1 sola a l'esquerra del llom, i el seu visor HTML ordena les pàgines de dreta a esquerra, s'obre per l'extrem dret i la fletxa esquerra passa a la pàgina següent.renderToHtmlen mode múltiple ordena la fila de dreta a esquerra. - El PDF porta
/ViewerPreferences << /Direction /R2L >>i/PageLayout /TwoPageRight(la pàgina 1 sola i després per parells), etiquetat o no. Acrobat i Foxit els respecten; el visor integrat de Chrome no fa cas de cap dels dos.
Els folis i les capçaleres no canvien de costat per si sols: una plantilla que posa el número de pàgina a la cantonada exterior necessita els seus elements de pàgina parella i senar preparats per a la vora dreta (els elements admeten parity).
Un llibre escrit de dreta a esquerra (àrab, persa, hebreu…) també s'enquaderna per la dreta: 'auto' dona la vora dreta quan la direction del document resulta 'rtl'. Un llibre així emmiralla a més tot el seu flux: la primera columna és la de la dreta, i els sagnats, els marcadors de llista, els flotants i les notes queden a la dreta; les ranures de capçalera i peu continuen sent físiques. Vegeu Composició àrab.
Un còmic que es llegeix de dreta a esquerra també s'enquaderna per la dreta: 'auto' dona la vora dreta quan la configuració té una secció comics el sentit de lectura de la qual resulta 'rtl'. És el cas d'un manga (comics.artDirection: 'rtl') i d'una edició japonesa o en xinès tradicional d'un còmic occidental. La secció decideix per tot el llibre, no els blocs :::page d'un capítol. Vegeu Còmics.
#Mides de pàgina predefinides
| Preset | Amplada | Alçada | Ús habitual |
|---|---|---|---|
'11x17' | 11 cm | 17 cm | Llibres de butxaca |
'12x19' | 12 cm | 19 cm | Format rústica estàndard |
'17x24' | 17 cm | 24 cm | Llibres tècnics, manuals |
'21x28' | 21 cm | 28 cm | Revistes, informes (proper a A4) |
'broadsheet' | 375 mm | 597 mm | Diaris de format llençol |
'berliner' | 315 mm | 470 mm | Diaris de format berlinès |
'tabloid' | 280 mm | 430 mm | Tabloides |
'compact' | 297 mm | 420 mm | Diaris compactes (un llençol doblegat per la meitat) |
Els quatre formats de diari arriben amb postext 1.18 i no surten al dibuix: una pàgina de format llençol té gairebé quatre vegades la superfície d'una de 21 × 28. Se solen compondre amb la disposició 'multiple': sis columnes són habituals en un llençol i cinc en un tabloide.
#Retícula de base
La retícula de base és el ritme del text de cos: línies separades per l'interlineat del cos, comptades des de la vora superior de l'àrea de contingut. La maquetació la fa servir tant si es dibuixa com si no: els encapçalaments, els finals de llista, els requadres, les figures i les fórmules en bloc tornen el text a la retícula (llevat que el seu propi snapToGrid estigui desactivat), de manera que les línies de columnes veïnes queden alineades. enabled només dibuixa les línies, al llenç, al PDF i a les vistes del Sandbox, per comprovar aquest ritme; activar-la o desactivar-la no mou res. Les línies cobreixen només el text real de la pàgina — des de la primera línia de text fins a l'última — de manera que les bandes de flotants, les pàgines en blanc per paritat i l'espai sobrant al final no mostren retícula.
| Propietat | Tipus | Per defecte | Descripció |
|---|---|---|---|
enabled | boolean | false | Si es dibuixen les línies de la retícula (llenç i PDF). Només el dibuix: la maquetació és la mateixa en tots dos casos. |
color | ColorValue | #cccccc | Color de les línies de la retícula. |
lineWidth | Dimension | 0.5 pt | Gruix de les línies de la retícula. |
page: {
baselineGrid: { enabled: true, color: { hex: '#e0e0e0', model: 'hex' } }
}#Marques de tall
En activar-se, el llenç s'expandeix per incloure una zona de sang i el motor dibuixa marques de tall a cada cantonada per a producció impresa. El PDF dona a cada pàgina una TrimBox i una BleedBox; un fitxer PDF/X les té encara que no hi hagi marques de tall. Al Sandbox es configuren a Exportació › Preparació per a impremta.
| Propietat | Tipus | Per defecte | Descripció |
|---|---|---|---|
enabled | boolean | false | Si s'expandeix el llenç amb sang i es dibuixen les marques de tall. |
bleed | Dimension | 3 mm | Àrea extra al voltant de la pàgina que es fa servir com a sang d'impressió. |
markLength | Dimension | 5 mm | Longitud de cada marca de tall. |
markOffset | Dimension | 3 mm | Separació entre la vora de tall i l'inici de cada marca. Una marca mai no comença dins de la sang: si bleed és més gran, la marca comença a la vora de la sang. |
markWidth | Dimension | 0.25 pt | Gruix de les marques de tall. |
color | ColorValue | #000000 | Color de les marques de tall al llenç (la vista en pantalla). El PDF les pinta sempre en color de registre (mira més avall). |
El plec creix bleed + markOffset + markLength per cada costat, i la pàgina tallada queda al centre. Cada cantonada del tall porta dues marques de markLength de llarg, cadascuna a la prolongació d'una de les vores que s'hi troben. Una marca comença a markOffset del tall, o a la vora de la sang si bleed és el més gran dels dos, de manera que cap marca no cau sobre una imatge que s'estén fins a la sang. Amb els valors per defecte (3 mm de sang i 3 mm de separació), les marques van de 3 a 8 mm fora del tall, i per fora d'elles queda una franja en blanc de 3 mm al voltant del plec. cropMarkSegments(page, doc.config.page, doc.trimOffset) retorna les vuit marques d'una pàgina en píxels, les mateixes que dibuixen el canvas i el PDF. El tercer argument és la distància a què queda el tall dins del plec, el valor amb què s'escriu el TrimBox del PDF; si falta, es calcula a partir de cutLines de la mateixa manera.
Fora de la sang només s'imprimeixen les marques. Tot el que pinta la pàgina, inclosos els elements de disseny ancorats a 'page' o a 'bleed', es retalla a la caixa de sang al canvas, al PDF i a la sortida HTML, com ho retalla una exportació de maquetació: una banda o una imatge que surt de la sang a propòsit es talla a la vora de la sang, on la guillotina la perdria de tota manera. Fins a postext 1.4 un element així continuava per damunt de les marques fins a la vora del plec.
Al PDF (postext-pdf), la MediaBox de cada pàgina és el plec sencer. La pàgina porta a més una TrimBox, la pàgina tallada, i una BleedBox, el tall més la sang, que llegeixen les eines d'imposició i de preflight. Les marques es pinten en color de registre, la separació /All, i s'imprimeixen en totes les planxes. És així en qualsevol espai de color en què s'escrigui el PDF (RGB, escala de grisos o CMYK): un negre corrent arribaria a la impremta com a negre enriquit o només a la planxa del negre. color només s'aplica al llenç.
#Numeració
El bloc page.pageNumbering controla com es formaten les etiquetes de pàgina i on comença el comptador. Defineix únicament el valor per defecte de tot el document — per reiniciar la numeració al mig del document (per exemple, números romans a les pàgines preliminars que passen a decimal des d'1 als capítols), fes servir la directiva :::numbering (consulta Format del document → Directives).
| Propietat | Tipus | Per defecte | Descripció |
|---|---|---|---|
format | 'decimal' | 'lower-roman' | 'upper-roman' | 'lower-alpha' | 'upper-alpha', o un estil de l'Àsia oriental | 'decimal' | Estil numèric utilitzat per renderitzar les etiquetes de pàgina. Els estils de l'Àsia oriental ('trad-chinese-informal' numera les pàgines 一, 二, 三) figuren a Grafies dels formats de numeració. |
startAt | number | 1 | Valor numèric assignat a la primera pàgina, independentment del format. format: 'lower-roman', startAt: 1 produeix i, ii, iii, …; format: 'decimal', startAt: 17 produeix 17, 18, 19, …. |
L'etiqueta calculada s'emmagatzema a cada VDTPage com a pageLabel i és el valor que resol el marcador {pageNumber} a capçaleres i peus. Els PDF emeten un arbre /PageLabels de manera que l'indicador de pàgina i la navegació «Vés a la pàgina» de Preview / Acrobat coincideixen exactament amb les etiquetes impreses. Un estil sense codi en PDF (els numerals xinesos, les xifres en cercle i les d'amplada completa) s'escriu pàgina a pàgina, de manera que el lector mostra també 一, 二, 三.
Grafies dels formats de numeració
Tres paràmetres trien un format de numeració, i cadascun va créixer amb la seva pròpia grafia: les etiquetes de pàgina (page.pageNumbering.format i :::numbering{format=…}) diuen lower-roman, les llistes numerades (orderedLists.numberFormat) diuen arabic per al decimal i els tipus de recurs (counterFormat) diuen roman-lower. Tots accepten totes les grafies de la taula, així que un format copiat d'un paràmetre funciona en els altres. Els noms no distingeixen majúscules; les formes d'un sol caràcter sí (i i I són diferents).
| Format | Imprimeix | Grafies acceptades |
|---|---|---|
| Decimal | 1, 2, 3 | decimal, arabic, 1 |
| Romà en minúscules | i, ii, iii | lower-roman, roman-lower, i |
| Romà en majúscules | I, II, III | upper-roman, roman-upper, I |
| Alfabètic en minúscules | a, b, c | lower-alpha, alpha-lower, lower-latin, a |
| Alfabètic en majúscules | A, B, C | upper-alpha, alpha-upper, upper-latin, A |
| Numerals xinesos, simplificat | 一, 十二, 一百零一 | simp-chinese-informal, 一 en un document en xinès simplificat |
| Numerals xinesos, tradicional | 一, 十二, 一萬 | trad-chinese-informal, cjk-ideographic, 一 en un document en xinès tradicional |
| Numerals xinesos financers, simplificat | 壹, 壹拾贰, 壹佰贰拾 | simp-chinese-formal, 壹 en un document en xinès simplificat |
| Numerals xinesos financers, tradicional | 壹, 壹拾貳, 壹佰貳拾 | trad-chinese-formal, 壹 en un document en xinès tradicional |
| Xifres xineses | 一二〇, 二〇二六 | cjk-decimal, 〇 |
| Troncs celestes | 甲, 乙, 丙 … 癸 | cjk-heavenly-stem, 甲 |
| Branques terrestres | 子, 丑, 寅 … 亥 | cjk-earthly-branch, 子 |
| Numerals japonesos | 一, 十二, 百一, 一万一 | japanese-informal, 一 en un document japonès |
| Numerals japonesos formals | 壱, 壱拾弐, 壱百 | japanese-formal, 壱 |
| Hiragana, ordre gojūon | あ, い, う … ん, ああ | hiragana, あ |
| Katakana, ordre gojūon | ア, イ, ウ … ン, アア | katakana, ア |
| Hiragana, ordre iroha | い, ろ, は … す, いい | hiragana-iroha, い |
| Katakana, ordre iroha | イ, ロ, ハ … ス, イイ | katakana-iroha, イ |
| En cercle | ①, ②, ③ … ㊿ | circled-decimal, ① |
| Xifres d'amplada completa | 1, 2, 3 | fullwidth-decimal, 1 |
| Xifres aràbigues orientals | ١, ٢, ٣ … ١٠ | arabic-indic, ١ |
| Xifres perses | ۱, ۲, ۳ … ۱۰ | persian, urdu, ۱ |
| Lletres àrabs, ordre abjad | أ, ب, ج, د, هـ … غ, أأ | abjad, أبجد |
| Lletres àrabs, ordre alfabètic | أ, ب, ت, ث … ي, أأ | hijai, arabic-alpha, arabic-alphabetic, أبتث |
| Numerals abjad | ا, ب … يا (11), غتمو (1446) | arabic-abjad |
| Numerals abjad, valors magribins | ص (60), ض (90), ش (1000) | arabic-abjad-maghrebi, maghrebi-abjad |
Els estils de l'Àsia oriental conserven el seu nom de CSS Counter Styles en els tres paràmetres. Els numerals xinesos informals escriuen 十 del 10 al 19 sense un 一 al davant (十二, però 一百一十), un sol 零 per cada tram de zeros dins del número (一百零一, 一千零五十), i 万 o 萬 per a la desena de miler, 亿 o 億 per als cent milions (一万零一十). Només cjk-decimal fa servir 〇, xifra a xifra, com s'escriuen els anys (二〇二六, GB/T 15835—2011). Els troncs arriben al 10, les branques al 12 i les xifres en cercle al 50; més enllà, el número s'imprimeix en xifres. 一 i 壹 segueixen l'escriptura del locale del document: tradicional per a zh-Hant, zh-TW o zh-HK, simplificada en els altres casos. Algunes edicions antigues escriuen 101 com 一百一, sense 零; Postext no imprimeix aquesta forma.
Els estils japonesos (des de postext 1.16) també segueixen CSS Counter Styles. japanese-informal escriu 十 sense 一 al davant i sense 零 per a una posició buida (百一, 千十), i japanese-formal, els 大字 壱 弐 参 拾 百 阡, amb 壱 davant de cada unitat (壱拾, 壱百). CSS atura tots dos a 9999; Postext continua per grups de quatre xifres amb 万 億 兆 (en el formal, 萬 億 兆), i cada grup conserva el seu 一 davant d'una unitat: 一万一 és 10 001, i 一億一万, 100 010 000. En un document japonès (ja, ja-JP…) 一 vol dir japanese-informal, així que 第{1:一}章 hi imprimeix 第百一章 i en un de xinès 第一百零一章; 壹 continua sent el dels numerals financers xinesos. Les sèries de kana són les llistes de CSS: 48 kana en l'ordre del gojūon (amb ゐ i ゑ) i 47 en el del poema iroha; després de l'últim continuen amb dos kana (ああ, いい), i no tenen zero, així que un element numerat 0 imprimeix 0. Les xifres kanji posicionals (二〇二六), la forma dels anys i dels folis, són cjk-decimal.
Els estils àrabs conserven el nom CSS quan n'hi ha (arabic-indic, persian; urdu i maghrebi-abjad, de la nota del W3C Ready-made Counter Styles, es llegeixen com persian i arabic-abjad-maghrebi). arabic manté el sentit de sempre: les xifres europees. arabic-abjad escriu els numerals abjad additius de l'àrab clàssic i de la foliació de manuscrits, el valor més gran primer: 11 és يا, 1446 غتمو, i el nombre de milers va abans de غ (2000 بغ, 1002 غب); a partir de 999 999 el número s'imprimeix en xifres. La nota del W3C fa servir aquest nom per a una sèrie de 28 lletres en què 11 és ك; Postext anomena aquesta sèrie abjad, la que lletreja els elements de llista en ordre abjad (أ، ب، ج، د، هـ), i hijai l'ordre alfabètic (أ، ب، ت، ث). Totes dues escriuen la primera lletra amb la seva hamza (أ) i una he que quedaria aïllada com هـ, amb tatweel, perquè no es llegeixin com les xifres ١ i ٥; passades les 28 lletres es dupliquen, com lower-alpha (أأ, أب). Els valors magribins segueixen la regla mnemotècnica صعفض قرست ثخذ ظغش (ص 60, ض 90); la llista del W3C intercanvia ص i ض. Una sola أ no distingeix les dues sèries de lletres, així que el seu token són les seves quatre primeres lletres: {1:أبجد}, {1:أبتث}. Les xifres del document mateix es trien amb numerals.
Les altres grafies són per a les configuracions que res no comprova en tipus: els presets en JSON i el JavaScript sense tipus. Els tipus de TypeScript continuen anomenant només la grafia pròpia de cada paràmetre —la que escriu el Sandbox i retorna resolveAllConfig, amb els noms de l'Àsia oriental inclosos—, així que un PostextConfig tipat s'hi cenyeix, i una altra grafia necessita una conversió de tipus (cast).
// JavaScript o un preset en JSON (en TypeScript, la grafia pròpia de cada paràmetre)
orderedLists: { numberFormat: 'decimal' }, // igual que 'arabic'
page: { pageNumbering: { format: 'roman-lower' } }, // igual que 'lower-roman'
resourceTypes: [{ id: 'lamina', counterFormat: 'upper-roman', … }], // igual que 'roman-upper'resolveAllConfig porta els formats de llistes i de pàgina a la grafia del seu propi paràmetre —'decimal' es resol com a 'arabic' a orderedLists, 'roman-lower' com a 'lower-roman' a page.pageNumbering— i stripConfigDefaults elimina qualsevol grafia del valor per defecte. Els taulers del Sandbox mostren cadascun dels tres paràmetres en la seva pròpia grafia, sigui quina sigui la que faci servir la configuració. Qualsevol altre valor —roman, 01, una errada— numera en decimal en lloc d'imprimir undefined, i es notifica com a avís de configuració. Les plantilles de numeració dels encapçalaments accepten els mateixos noms després dels dos punts ({1:roman-upper} equival a {1:I}), al costat del seu propi {1:01} amb zero a l'esquerra.
#Disposició
La propietat layout controla com s'organitzen les columnes dins de l'àrea de contingut.
| Propietat | Tipus | Per defecte | Descripció |
|---|---|---|---|
layoutType | 'single' | 'double' | 'oneAndHalf' | 'multiple' | 'double' | Disposició de columnes. Vegeu més avall els detalls de cada tipus. |
columnCount | number | 3 | Quantes columnes iguals fa del text una disposició 'multiple': un nombre enter de 3 a 8. Un valor fora d'aquest interval, o que no és enter, s'ajusta i s'avisa (vegeu Tipus de disposició). La disposició 'multiple' pròpia d'un estil d'encapçalament pren el nombre del document llevat que en fixi un de propi. Des de postext 1.18. |
gutterWidth | Dimension | 0.75 cm | Espai horitzontal entre columnes. Només s'aplica a les disposicions de diverses columnes. |
sideColumnPercent | number | 33 | Amplada de la columna lateral com a percentatge de l'àrea de contingut. Qualsevol valor que deixi una mica d'amplada a les dues columnes s'usa tal qual; un que no ho faci s'ajusta, i la composició n'avisa (vegeu Tipus de disposició). Només s'aplica a la disposició 'oneAndHalf'. |
sideColumnRole | 'text' | 'floats' | 'text' | Què porta la columna lateral: text corregut (hi flueix després de la columna principal) o només els recursos i avisos col·locats amb span: 'side' — una columna de marge només per a flotants. Només en 'oneAndHalf'. Amb 'text', un paràgraf que continua d'una columna a l'altra es torna a tallar per a l'amplada de la columna on continua; fins a postext 1.4 conservava les línies de la columna on havia començat, i una línia composta per a la columna principal sobresortia de la lateral, que la retallava. |
sideColumnSide | 'right' | 'left' | 'outer' | 'inner' | 'right' | Vora de l'àrea de contingut on se situa la columna lateral. 'outer' / 'inner' segueixen la paritat de la pàgina quan els marges estan emmirallats (la vora exterior d'una pàgina senar és la dreta; la d'una parella, l'esquerra). Només en 'oneAndHalf'. |
columnRule | ColumnRuleConfig | desactivat | Filet vertical opcional traçat entre columnes. Vegeu més avall. |
fitFiguresToPage | boolean | false | Redueix una figura (mapa de bits o SVG) la imatge, el peu i la nota de la qual quedarien més alts que l'àrea de contingut fins que hi càpiguen (una imatge amb zona segura, Resource.safeArea, primer es retalla dins d'aquesta zona a tota l'amplada, i només es redueix si encara no hi cap), i compon més petita una figura en línia que per poc no cap en el que queda de la seva columna (fins a la meitat de la seva amplada; el peu conserva la mida de la columna) perquè continuï al costat del seu text. La imatge reduïda se situa en el seu buit segons placement.align. El visor HTML l'activa, perquè les seves pàgines són tan altes com la pantalla; les pàgines impreses es dimensionen per a les seves figures. |
bitmapResolution | 'document' | 'file' | number | 'document' | Com pren la seva mida natural d'impressió un mapa de bits sense bitmap.resolution pròpia. 'document' llegeix els seus píxels a page.dpi; un nombre és la resolució en ppp de tots aquests mapes de bits (300: una imatge de 2400 px fa 203,2 mm d'amplada siguin quins siguin els dpi de la pàgina); 'file' fa servir la resolució que indica el seu fitxer (bitmap.fileResolution), llevat de 72 i 96, que compten com a no indicada, i si no, page.dpi. La columna continua limitant la imatge, i una de més petita no s'amplia mai. Vegeu Format del document › Mida dels mapes de bits. Des de postext 1.24. |
floatShrink | FloatShrinkConfig | mode: 'never' | El valor del document per a placement.shrink (mode: 'never', 'page' o 'slot') i placement.minScale (minScale, 0.7 si no s'indica) d'una imatge flotant: reduir-la, sense canviar-ne les proporcions, a l'espai del seu buit en lloc de portar-la més endavant (vegeu Format del document › Col·locació). La col·locació del recurs i després la defaultPlacement del seu tipus el substitueixen. fitFiguresToPage limita tota figura a l'àrea de contingut; floatShrink mira la banda que el flotant ocuparia de debò, sota una obertura, al costat d'altres flotants o damunt de les notes al peu. Des de postext 1.24. |
wrap | TextWrapConfig | minTextWidth: 12em, minLinesBeside: 2, defaultWidth: 0.45 | Text compost al costat d'una imatge o una caixa més estreta que la columna (placement.wrap, el wrap d'una caixa): gap, l'espai entre l'element i el text (una línia del cos si no s'indica); minTextWidth, la mesura més estreta que pot tenir el text del costat, una longitud o una part de la columna (més estreta: l'element ocupa la banda sencera, amb un avís textWrap); minLinesBeside, el mínim de línies que val la pena compondre al costat; defaultWidth, la part de la columna que ocupa un element ajustat sense width propi. Vegeu Format del document › Ajust del text. Des de postext 1.24. |
floatsAtCitingPage | boolean | false | El valor per defecte de placement.citingPage: un flotant 'top' o 'auto' pot ocupar el capdamunt de la pàgina (un flotant a l'amplada de la pàgina) o de la columna (un flotant de columna) on cau la línia que el cita per primer cop, en lloc del primer espai lliure després d'aquesta línia; el text que hi ha damunt de la referència baixa sota seu (vegeu Format del document › Col·locació). La col·locació del recurs i després el defaultPlacement del seu tipus el substitueixen. Des de postext 1.25. |
maxTopFraction | number | 0.7 | La fracció més gran de l'alçada de la columna, de 0 a 1, que pot ocupar un flotant que encapçala la pàgina o la columna que el cita, juntament amb els flotants que ja hi són, perquè la pàgina guardi lloc per al seu text (el \topfraction de LaTeX). Un flotant que n'ocuparia més va al seu espai habitual. Des de postext 1.25. |
hugClosingFloats | boolean | true | A la pàgina de tancament d'un capítol (i del document), les figures i taules a l'amplada de la pàgina que queden sota l'última banda de text pugen fins a quedar a un buit de flotant sota seu, apilades en el seu ordre: allà res no les segueix. Amb false es queden on les ha posat la seva col·locació, de manera que un flotant position: 'bottom' acaba al peu de la pàgina de tancament com en qualsevol altra — per exemple, en una fitxa tècnica el contorn de la qual acaba a la mateixa alçada a totes les pàgines. A les pàgines amb columna lateral no es mouen mai. |
inlineResourceGap | 'around' | 'above' | 'around' | On deixa un recurs en línia (placement.position: 'here', inserit amb ::resource) el buit dels flotants, d'una línia. 'around' el conserva damunt i sota el recurs, i el text que segueix torna a la retícula de base sota aquest buit; un encapçalament, una llista, un requadre o un altre recurs en línia just després comparteix el buit de sota amb el seu propi espai superior, i s'aplica el més gran dels dos. 'above' el conserva només a sobre: el text que segueix el recurs continua a la línia següent de la retícula, per prop que quedi —entre res i una línia—, com fins a postext 1.4. Les configuracions desades per versions anteriors els capítols de les quals insereixen un recurs es llegeixen amb 'above', perquè les seves pàgines no es moguin (vegeu Paquets escrits per postext 1.4 o anterior). Una configuració escrita en codi per a la 1.4 conserva l'espai antic si hi posa ella mateixa 'above', o si passa per pinLegacyInlineGap, de postext/bundle. |
inlineResourceGapInBoxes | boolean | true | Si un recurs en línia dins d'un requadre (:::callout) conserva el buit que fixa inlineResourceGap, una línia del text del mateix requadre: damunt del recurs i, amb 'around', també a sota, i s'aplica el més gran entre aquest buit i l'espai propi del bloc següent. Al principi o al final del requadre, o d'un fragment d'un requadre partit, ja el separa el farciment i no s'hi afegeix buit. Amb false el recurs queda just sota el text anterior i el text següent just sota el recurs, com fins a postext 1.4. Les configuracions desades per versions anteriors els capítols de les quals insereixen un recurs dins d'un requadre es llegeixen amb false (vegeu Paquets escrits per postext 1.4 o anterior); en codi, pinLegacyBoxResourceGap, de postext/bundle, fa el mateix. |
boxChildSplitMinLines | number | 2 | Mínim de línies d'un paràgraf o d'un element de llista que deixa a cada costat un tall dins seu quan una caixa es parteix (splitMinLines, a Estils d'avís, continua comptant totes les línies de la caixa a cada costat del tall). Un nombre enter, com a mínim 1. Amb el valor per defecte, un tall no deixa mai una línia sola d'un paràgraf o element al peu d'una columna ni al principi de la següent; si el splitMinLines de l'estil de la caixa és més petit, mana aquest. Amb 1 un tall pot deixar una línia del paràgraf o element a un costat, com fins a postext 1.4. Les configuracions desades per versions anteriors els capítols de les quals tenen algun :::callout es llegeixen amb 1 (vegeu Paquets escrits per postext 1.4 o anterior); en codi, pinLegacyBoxChildCut, de postext/bundle, fa el mateix. |
flowColumns | boolean | true | Una tanca :::columns fora d'un requadre compon els seus blocs en subcolumnes de la columna de text (o a tota l'amplada de la pàgina amb span="page"), i un grup, en un requadre o al text, es talla entre les seves subcolumnes quan no hi cap i continua a la columna o la pàgina següent (vegeu Format del document › :::columns). Amb false s'ignora la tanca fora d'un requadre i mai no es talla dins d'un grup, com fins a postext 1.24; les configuracions desades per versions anteriors els capítols de les quals tenen alguna tanca :::columns es llegeixen amb false; en codi, pinLegacyFlowColumns, de postext/bundle, fa el mateix. Una secció amb estil conserva el valor del document. Des de postext 1.25. |
floatsUnderOpener | boolean | true | Sota una obertura a amplada de pàgina (un nivell o un estil d'encapçalament amb span: 'page') composta sobre dues o més columnes de text, el capdamunt de la columna de la mateixa obertura, just sota la seva banda, és un buit per a un flotant 'top' o 'auto', a l'alçada dels capdamunts de les altres columnes: una caixa flotant posada just després de l'obertura, o un recurs inserit allà, queda sota l'obertura a la primera columna (i en diverses a partir d'aquesta amb columns), i el text de la columna comença a sota. Un flotant citat al text continua anant després de la línia que el cita. Amb false no s'ofereix aquest buit i el flotant cau a partir de la segona columna, com fins a postext 1.24; les configuracions desades per versions anteriors que defineixen un encapçalament a amplada de pàgina es llegeixen amb false; en codi, pinLegacyOpenerHeadFloats, de postext/bundle, fa el mateix. Una secció amb estil conserva el valor del document. Des de postext 1.25. |
writingMode | 'horizontal-tb' | 'vertical-rl' | 'horizontal-tb' | Com corren les línies. 'vertical-rl' compon el text xinès o japonès en vertical: els caràcters de dalt a baix i cada línia a l'esquerra de l'anterior. El layout d'un estil de títol l'hereta tret que en fixi un de propi, de manera que un apèndix horitzontal pot seguir un llibre vertical. Vegeu Escriptura vertical. |
#Escriptura vertical
Amb writingMode: 'vertical-rl' una pàgina es compon com una pàgina horitzontal girada un quart de volta en el sentit de les agulles del rellotge. El flux es compon en un marc tan ample com alt és el plec; les seves línies són les columnes del text vertical, que es llegeixen des de la dreta, i tot el que el motor fa amb les línies (talls, justificació, flotants, notes a peu de pàgina, regles de cohesió) funciona en aquest marc. Al plec, per tant:
- Una columna de la disposició és un pis (栏):
layoutType: 'double'dona dos pisos apilats de dalt a baix, que s'omplen des de la cantonada superior dreta;gutterWidthés el buit entre ells i el filet de columna, una línia horitzontal entre tots dos. Els pisos no s'igualen al final d'un capítol (clreq §7.1.3.4): l'equilibri de columnes està desactivat en un document vertical tret que es fixiheadings.balancing.enabled. - El que el flux anomena «dalt» és la vora dreta del plec, on comença la lectura: un flotant superior queda a la dreta de la pàgina, un d'inferior a l'esquerra, una obertura a tota la pàgina és una franja al llarg de la vora dreta i les notes a peu de pàgina cauen a l'extrem esquerre de cada pis. Un element de disseny ancorat a la part superior de la pàgina (un disseny de títol, una caixa fixa) s'ancora a la vora dreta. A
sideColumnSide,'left'és el pis de dalt i'right'el de baix;'outer'i'inner'valen com'right'i'left'. - Els marges del flux són els del plec girats: el marge dret és la part superior del flux i el superior, la seva esquerra.
page.marginsconserven els seus noms al plec. - Els encapçalaments, els folis, les marques de tall i el fons de pàgina continuen al plec, en horitzontal, com descriu clreq per als llibres verticals.
- Les figures i les taules es mantenen dretes. Una figura ocupa l'alçada del seu pis fins on ho permet el seu peu, i com a molt l'amplada de la pàgina; l'amplada que pren és l'espai que ocupa en el flux. El seu peu es compon en horitzontal sota seu, igual que les cel·les d'una taula: tots dos es mesuren com a text horitzontal. Una taula es compon dreta a l'amplada de la pàgina i, si és més alta que el pis, les seves files es reparteixen entre pisos.
placement.aligncol·loca la figura a dalt ('left'), al mig o al peu del seu pis. Unplacement.rotateno s'aplica quan la figura se cita per primer cop en text vertical: la composició n'avisa ambrotateIgnoredVertical. Una secció horitzontal del llibre (un estil de títol ellayoutdel qual fixa'horizontal-tb') gira les seves figures tal com se li demana. - Les imatges d'un disseny (la il·lustració d'una obertura o d'una pàgina de part) també queden dretes. La seva caixa en el flux es dimensiona amb l'amplada i l'alçada de la imatge intercanviades, de manera que
size.widthés el que la imatge ocupa al llarg de la columna, i la seva amplada al plec surt de les seves proporcions. - Caràcters: els hanzi, els kana i les formes d'amplada completa queden drets, a un quadratí cadascun; les paraules llatines i els números s'ajeuen amb la seva amplada horitzontal; la puntuació pren la forma vertical de la font. Els signes de pausa i de final no es giren mai: una font de la Xina continental posa 、。,. a la cantonada superior dreta de la cel·la i !?:; a la seva meitat dreta, i una de Taiwan o Hong Kong els centra (
cjk.region). Els parèntesis i les cometes prenen la seva forma vertical, i “ ” ‘ ’ es llegeixen com a 『』「」 en text de la Xina continental. Els guions llargs, els punts suspensius i la titlla d'ona prenen la forma vertical de la font quan en té (Noto CJK lliga la de — avertjuntament ambfwid: un filet pel centre de la cel·la); si no, es giren amb la tinta centrada en l'eix de la columna. El 破折号 (——) d'un text xinès és un sol filet al llarg de la columna: les seves formes verticals deixarien blanc als dos extrems de cada cel·la, així que cada guió es gira amb la línia i s'estira com en el text horitzontal (vegeu Amplades de la puntuació). Un número de dues xifres com a molt queda dret en una sola cel·la, excepte dins d'una frase llatina, les paraules de la qual segueix (vegeu Números en text vertical). El punt volat (·) ocupa mitja cel·la en text de la Xina continental i una cel·la sencera en el de Taiwan i Hong Kong. Els signes que Unicode posa drets (× © ± § ℃ ① i semblants) ocupen una cel·la pròpia, també dins d'un número:3×4són el 3 i el 4 ajaguts amb el × dret entre ells. Un apòstrof o un punt volat entre dues lletres d'una paraula llatina (don’t,l·l) continua a la paraula, ajagut. Un paràgraf llatí dins d'un flux vertical segueix les mateixes regles. Les fórmules en línia, les fitxes i les mostres de color s'ajeuen amb la línia. - Cada caràcter es mesura tal com es pinta: una cel·la avança la seva cel·la al llarg de la línia, un tram ajagut la seva amplada horitzontal. El text que queda horitzontal al plec (titolets, folis, peus, cel·les de taula) es mesura en horitzontal.
- Les amplades de la puntuació, la puntuació penjada i l'espai entre xinès i llatí s'apliquen al llarg de la línia vertical igual que en l'horitzontal. El blanc que va davant d'un dibuix queda a sobre i el que va darrere, a sota: un 、 kaiming ocupa mitja cel·la,
」「es comprimeixen a cel·la i mitja, un parèntesi d'obertura retallat al cap d'una línia comença mitja cel·la més amunt, un 。 penjat queda sota el peu de la seva línia, i l'espai entre xinès i llatí és un quart de quadratí de columna damunt i sota d'una paraula ajaguda.:;?!conserven la cel·la sencera en text vertical a totes les regions. - La retícula de caràcters compta els caràcters al llarg de la línia i les línies a l'amplada de la pàgina:
charsPerLinefixa el que mesura un pis,linesPerPagequantes línies porta una pàgina, ilayoutType: 'double'dona dos pisos de caràcters sencers amb un espai entre columnes de quadratins sencers entre ells.
Per a qui llegeix la composició: una pàgina vertical porta VDTPage.flow. El seu contentArea, les seves columnes, blocs, línies, flotants, àrees de notes, banda d'obertura i superposicions de disseny dels blocs són en coordenades del flux; width, height, header i footer són al plec. flowToPage, pageToFlow, flowRectToPage i pageRectToFlow passen de les unes a les altres, i verticalOrientation(char, region) diu com queda un caràcter. flow.centralBaselines dona, per família tipogràfica, l'eix sobre el qual la composició ha centrat els caràcters drets: el centre de la tinta de 中, el traç llarg del qual ocupa l'alçada del quadratí (0,38 quadratins sobre la línia de base a Noto Serif i Noto Sans, SC i TC per igual), i que tenen totes les fonts xineses, japoneses i coreanes. Cada línia es centra en aquest eix: la línia de base d'una línia vertical queda, des de la vora de la seva caixa, a la meitat del seu interlineat més la línia de base central de la família (la d'una línia horitzontal, a 0,8 de l'interlineat), així que una columna de caràcters queda al centre del seu pas i un filet traçat entre dues columnes a un pas sencer cau a mig camí entre elles. Un text de disseny vertical es compon igual en les seves pròpies línies. El canvas pinta la pàgina vertical pel seu compte; per pintar la puntuació amb les formes verticals pròpies de la font, un amfitrió al navegador carrega, una vegada per família, una font bessona amb aquestes formes activades: loadVerticalAlternates(family, faces), on faces són els orígens de la família (URL o bytes) i els seus descriptors. La bessona només es queda si el navegador aplica la funció al text del canvas (Chrome 140 i posteriors): dibuixa 「(《 amb la bessona i amb una còpia de les mateixes fonts carregada sense la funció, en el pes i l'estil de les fonts rebudes, i es queda amb la bessona quan la tinta és diferent. Una crida posterior amb altres fonts d'una família la bessona de la qual ja és en ús (la negreta després de la rodona) les hi afegeix. El Sandbox ho fa amb totes les famílies d'un document vertical. Sense bessona, els parèntesis es giren sobre el centre del seu quadratí i els signes de pausa i de final de la Xina continental es desplacen dins de la seva cel·la allà on els posen les formes verticals de la font: 、。,. a la cantonada superior dreta (a menys de 0,07 quadratins de les formes verticals de Noto Serif SC) i !?:; mig quadratí a la dreta i una mica cap amunt (a menys de 0,02). El PDF i l'HTML componen la mateixa pàgina: vegeu Text vertical al PDF i la taula d'En què es diferencia la sortida HTML del canvas i del PDF. Comparats cel·la a cel·la amb HarfBuzz (composició vertical amb vert) a Noto Serif TC i SC, tots els caràcters de 「賈雨村」云云,宜乎?故曰!;:、。“引”‘單’…… queden a menys de 0,02 quadratins d'aquest al canvas i al PDF, i a menys de 0,05 a l'HTML (Chrome centra un glif girat al mig de l'ascendent i el descendent de la font, que a Noto queda 0,05 quadratins per sobre del centre del quadratí). flow.dashAdvances dona, per família, l'avanç horitzontal en quadratins de cada guió que la pàgina estira fins a omplir la seva cel·la (— – ― ⸺ ⸻ -), per a qui pinta sense mètriques de font pròpies: l'HTML estira el guió amb aquest valor, com el canvas i el PDF ho fan amb les seves. Les capçaleres i els folis també poden anar en vertical: vegeu Elements de text verticals.
#Filet de columna
Dibuixa una línia vertical fina a l'espai entre columnes per separar visualment les columnes.
| Propietat | Tipus | Per defecte | Descripció |
|---|---|---|---|
enabled | boolean | false | Si es dibuixa el filet de columna. |
color | ColorValue | #cccccc | Color del filet. |
lineWidth | Dimension | 0.5 pt | Gruix del filet. |
Sota un encapçalament de pàgina completa (span: 'page'), el filet comença on comença el text de les columnes, sota la banda de l'encapçalament, tant si la pinta l'obertura per defecte com un disseny propi. Fins a postext 1.4 baixava des del principi de la caixa de text, travessant la banda.
Un estil d'encapçalament pot fixar el seu propi filet al seu layout (vegeu Estils d'encapçalament), i les pàgines de la seva secció dibuixen aquest. Un camp que l'estil deixa sense fixar pren el valor del document, així que una secció que només canvia les columnes conserva el filet del document. Fins a postext 1.4 el filet d'un estil no es dibuixava mai: totes les pàgines dibuixaven el del document.
#Tipus de disposició
-
'single'— Una columna que ocupa tota l'amplada del contingut. Ideal per a pàgines estretes o contingut amb paràgrafs llargs. -
'double'— Dues columnes d'igual amplada. La disposició editorial clàssica — manté l'amplada de línia en el rang òptim de 40–50 caràcters per a una lectura còmoda. -
'oneAndHalf'— Una disposició asimètrica amb una columna principal i una columna lateral més estreta. La columna lateral (controlada persideColumnPercent) és ideal per a notes al marge, figures petites o contingut complementari. Els valors entre el 25–40% funcionen bé, i un canal estret per numerar línies o posar marques al marge ocupa al voltant del 10–15%. La columna lateral ocupa elsideColumnPercent% de l'amplada de l'àrea de contingut i la principal, el que queda després de l'espai entre columnes — així, amb el 50% la lateral és un espai entre columnes més ampla que la principal. Qualsevol valor es compon tal qual mentre les dues columnes conservin com a mínim l'1% de l'amplada de l'àrea de contingut; un que en deixaria alguna més estreta — 0 o menys, o un de tan gran que la principal desapareix després de l'espai entre columnes — s'ajusta al valor més proper que respecti totes dues, i un valor que no és un nombre pren el valor per defecte, 33. ElsconfigWarningsdel document porten llavors{ kind: 'sideColumnPercentClamped', path: 'layout.sideColumnPercent', value, used }— la ruta dellayoutpropi d'un estil d'encapçalament anomena l'estil, com aheadingStyles[2].layout.sideColumnPercent, i es mesura amb els marges d'aquest estil —, que el Sandbox mostra al tauler Revisió;collectConfigWarnings(config)retorna la mateixa llista sense compondre res. Una disposició que no és'oneAndHalf'no llegeix el valor, i tampoc no n'avisa. AmbsideColumnRole: 'floats'el text corregut no entra mai a la columna lateral: es converteix en un canal per a les figures, taules i requadres col·locats ambspan: 'side'. Una figura o taula lateral s'apila des del cap del canal a la pàgina que la cita per primer cop: la figura marginal d'un llibre de text queda a dalt de tot de la seva pàgina encara que el text la citi més avall, i si no cap en el que queda del canal espera al de la pàgina següent. Un requadre lateral s'apila al costat del text que interromp; si la resta del canal no el pot allotjar allà, puja a la posició més baixa on hi cap (el seu peu al peu del canal) o espera a la pàgina següent. Quan el text que segueix la tanca d'un requadre continua a la pàgina següent (la columna és plena, o les regles de tall porten aquest text més enllà), el requadre es queda a la seva tanca, al costat del text anterior; un estil ambsideAtColumnEnd: 'after'el posa en canvi a l'altura de la primera línia del text que segueix la tanca, al canal de la pàgina següent, com necessiten els números de línia i els titolets marginals escrits abans de la seva línia. Un element del disseny d'un encapçalament que cau al canal —un numeral de capítol ancorat al marge exterior— també queda fora de la pila (vegeu Alçada reservada). Els flotants i requadresspan: 'page'continuen creuant totes dues columnes, i un flotant de columna ambplacement.captionSideposa el seu peu al canal, a l'altura de la figura. Combinada amb marges emmirallats isideColumnSide: 'outer', el canal queda a la vora exterior de cada pàgina — la columna marginal d'un manual. -
'multiple'— De tres a vuit columnes iguals, tantes com diguicolumnCount(3 per defecte): la retícula dels diaris i de moltes revistes (des de postext 1.18). Cada columna fa(amplada del contingut − (n − 1) × gutterWidth) / n. El text passa d'una columna a la següent com en una disposició a dues columnes; el filet es dibuixa a cada espai entre columnes, l'equilibri de columnes les iguala totes a l'última pàgina d'un capítol i abans d'una caixa a tota l'amplada, les notes al peu funcionen a cada columna, i les figures, caixes i encapçalaments a tota l'amplada creuen la pàgina sencera. Una figura o una caixa flotant pot ocupar només algunes columnes:placement.columns(vegeu Tipus de recurs) i elcolumnsd'un estil de requadre. UncolumnCountfora de 3–8, o que no és enter, s'arrodoneix i s'ajusta al nombre vàlid més proper (un valor que no és un nombre pren 3), i elsconfigWarningsdel document porten{ kind: 'columnCountClamped', path: 'layout.columnCount', value, used }(el camí dellayoutpropi d'un estil d'encapçalament anomena l'estil, com aheadingStyles[1].layout.columnCount). Una disposició d'un altre tipus no llegeix mai el valor. Un estil d'encapçalament amb unlayout'multiple'pren elcolumnCountdel document llevat que en fixi un de propi, de manera que un diari a cinc columnes pot compondre les pàgines d'opinió a quatre.
#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,marginFromBody16pt(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,marginFromBody16pt.
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 — un atribut escrit a la línia de l'H1 del capítol actual (# Título ). 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 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: 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. 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 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). La caplletra del text corrent es fixa en canvi des dels estils de paràgraf i d'encapçalament (vegeu 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, 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. |
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. |
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. |
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. 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 més avall.{title},{subtitle},{author},{publishDate}— valors llegits decontent.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 del qual fixarunningChapter: 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 més avall.{partTitle},{partNumber}— títol i número de la part actual (la pàgina:::partmé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 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 (
buildDocumentsensecontinuation) és el llibre sencer:{bookTotalPages}coincideix amb{totalPages}. buildBundlecompon 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.pageIndexOffsetmés les seves), cosa que només és exacta per a l'últim capítol.
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
h1ah6: 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…marcaAbacá. 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.
:::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.
:::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); 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.
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-ofialign-leftimpliquenalign: 'left'— les línies ajustades flueixen cap a la dreta des de l'ancoratge.left-ofialign-rightimpliquenalign: '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 elfontWeightde 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.
{ "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" } } } }# 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).
{ "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:
overflowdepè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 serviroverflow: 'wrap'en una capçalera que es pugui allargar (una adreça, una signatura) i revisa els avisosdesignTextTruncateddels textos tallats. Un salt de línia en el contingut (un salt real, o\na 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.alignval'center'iverticalAlignval'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 serviralign: '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
lineHeightde1.2, sigui quina sigui la del text de cos. A diferència dels altres interlineats de la configuració, ellineHeightd'un text de disseny sol ser un múltiple sense unitat (1.2); unDimensiontambé 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.widthfix: 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.
#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.widthfixa quantes línies hi caben d'amplada isize.maxWidthlimita la llargada d'una línia. aligncol·loca les línies al llarg de la caixa ('left'a dalt),verticalAlignd'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: trueles 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
writingModeno canvia res.
Els llibres xinesos verticals posen capçaleres i folis en un de tres llocs (clreq §7.2; per al japonès, JLREQ §2.6):
| 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):
{
"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) é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). |
placement | ElementPlacement | derivat d'align + marginFromBody + marginFromEdge | Posicionament avançat (vegeu Posicionament d'elements). 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). |
#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.
{
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). 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). |
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:
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-topialign-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:
{ "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).
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). 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.
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.