Saltar al contingut principal

Capítol 3.6 · Part II · L'ofici

Configuració: vídues, òrfenes i equilibratge

Les regles que mantenen junts les línies i els blocs en un salt de columna, i les palanques que fan que totes les columnes acabin a la mateixa altura

Actualitzat 2026-10-1624 minAl capítol 3 Configuracióenescadefritptzhjaar

En poques paraules

Aquesta pàgina explica com decideix Postext on acaba una columna o una pàgina. Una línia d'un paràgraf no s'ha de quedar sola a dalt o a baix d'una columna, i un títol no s'ha de quedar sense el seu text. Aquestes regles poden deixar una columna més curta que les altres. Llavors Postext fa petits canvis, en un ordre fix, perquè totes les columnes acabin a la mateixa altura. La pàgina enumera cada regla i cada canvi, i explica com veure quin s'ha fet servir.

#Òrfenes, vídues, runts i regles de cohesió

Consulta Partició de mots i justificació per entendre la mecànica de demèrits que hi ha al darrere. Aquesta secció és la referència de les claus de bodyText que governen aquestes penalitzacions.

Més enllà de la partició de mots i els límits d'espaiat, la configuració del cos exposa les regles toves que eviten els salts de paràgraf estructuralment incòmodes. Totes s'injecten com a demèrits a l'algorisme de salt de línia Knuth-Plass: decanten la maquetació cap a salts nets sense imposar mai una regla dura. Posa a 0 qualsevol *Penalty per desactivar aquella penalització.

PropietatTipusPer defecteDescripció
avoidOrphansbooleantrueDesaconsellar que un paràgraf acabi amb menys de orphanMinLines línies al principi de la columna següent. En una retícula de caràcters (cjk.grid) de la regió japan el valor per defecte és false.
orphanMinLinesnumber2Línies mínimes requerides al principi de la columna següent quan un paràgraf es parteix. Només actiu quan avoidOrphans és true.
orphanPenaltynumber1000Demèrit afegit quan s'incompleix la restricció d'òrfenes. Valors més alts decanten més fortament l'algorisme; 0 desactiva la penalització.
avoidOrphansInListsbooleantrueQuan és true, els elements de llista també reben protecció contra òrfenes (no només els paràgrafs). Només té efecte si avoidOrphans és true.
avoidWidowsbooleantrueDesaconsellar que un paràgraf comenci amb menys de widowMinLines línies al final de la columna actual. En una retícula de caràcters (cjk.grid) el valor per defecte és false: la pàgina conté les línies que la retícula compta.
widowMinLinesnumber2Línies mínimes requerides al final de la columna actual quan un paràgraf es parteix. Només actiu quan avoidWidows és true.
widowPenaltynumber1000Demèrit afegit quan s'incompleix la restricció de vídues. 0 desactiva la penalització.
avoidWidowsInListsbooleantrueQuan és true, els elements de llista també reben protecció contra vídues. Només té efecte si avoidWidows és true.
shortListSplit'allow' | 'warn' | 'avoid''allow'Una llista curta partida entre dues columnes o pàgines: una llista de fins a shortListMaxItems elements al text corregut, com una de tres elements composta 1 + 2. avoidOrphansInLists i avoidWidowsInLists mantenen juntes les línies d'un element; aquesta regla manté junts els elements d'una llista. 'allow' parteix la llista on s'acaba la columna, com qualsevol altra. 'warn' la compon igual i informa de cada llista partida (un avís shortListSplit, vegeu Avisos del document). 'avoid' compon la llista sencera: si no hi cap sota el que ja té la columna, obre la següent, i els encapçalaments que tingui just a sobre i la línia de dos punts que la introdueix (keepColonWithList) l'acompanyen. Una llista més alta que una columna buida es parteix com qualsevol altra, i se n'avisa. Les llistes de dins d'un :::callout segueixen les regles de tall de la caixa, i les entrades de :::toc i de :::index no són llistes. Des de postext 1.28.
shortListMaxItemsnumber3Quants elements pot tenir com a màxim una llista per comptar com a curta a shortListSplit, inclosos els de les seves llistes niades. Un nombre enter, 1 com a mínim. Des de postext 1.28.
avoidRuntsbooleantrueDesaconsellar que els paràgrafs acabin amb una línia curta: una última línia molt breu, p. ex. una única paraula curta aïllada. També en el text en bandera, amb optimalRagged. Un paràgraf xinès, japonès o coreà no acaba en una línia d'un sol caràcter, sol o amb els signes que el tanquen (孤字): la línia anterior li cedeix el seu últim caràcter si encara es pot justificar dins del límit d'espaiat. Una línia alineada a l'esquerra, a la dreta o centrada també el cedeix i queda un caràcter curta; amb cjk.grid.fullLines (paper de manuscrit) conserva totes les caselles, i el paràgraf pot acabar en un sol caràcter.
runtMinCharactersnumber20Llindar per a l'última línia d'un paràgraf, comptat en espais entre paraules, no en lletres: la línia és curta quan és més estreta que runtMinCharacters × anchoDeEspacioNormal píxels. En la majoria de tipus de lletra de text un espai fa entre un quart i un terç d'em, més o menys mitja lletra minúscula, així que el valor per defecte, 20, arriba a les últimes línies de menys de 4 a 7 em: unes 8 a 12 lletres. Per arribar a les de menys d'unes N lletres, posa-hi un valor proper a 2 × N.
runtPenaltynumber1000Penalització equivalent a badness (s'injecta a la fórmula quadràtica de Knuth–Plass, a la mateixa escala que el badness de línia, que se satura a 10000). 0 desactiva la penalització.
gradedRuntPenaltybooleanfalseGradua la penalització per línia curta segons com de curta es queda l'última línia: una última línia d'amplada w per sota del llindar t costa runtPenalty × (1 − w / t) en lloc de la penalització sencera. Així, un final de dues paraules costa menys que un d'una, i l'algorisme baixa una paraula quan una línia de dalt la pot cedir («…sallies of» / «our minds.» en lloc de «…sallies of our» / «minds.»). Desactivat per defecte: totes les línies curtes costen el mateix, i l'algorisme conserva les línies més atapeïdes de dalt.
avoidRuntsInListsbooleantrueQuan és true, els elements de llista també reben la penalització per línia curta. Només té efecte si avoidRunts és true.
tightenRuntsbooleantrueQuan la penalització no ha pogut evitar una línia curta, compon el paràgraf amb una línia menys: els espais s'estrenyen (mai per sota de minWordSpacing) i, si amb això no n'hi ha prou, hi entra a més una mica de tracking negatiu. La composició més curta es descarta, i la línia curta es queda, si estira una línia justificada més enllà de maxWordSpacing o, si el paràgraf ja té una línia justificada més oberta, més que aquella línia, o si compon en bandera (més de 3 vegades l'espai normal) més línies que el paràgraf. Els espais del text en bandera no canvien d'amplada, així que allà només hi intervé el tracking. Requereix optimalLineBreaking i avoidRunts (i optimalRagged en el text en bandera).
maxRuntTrackingnumber10Tracking màxim que pot prendre aquest ajust, en mil·lèsimes d'em (la unitat d'InDesign: 10 = 0,01 em per caràcter), aplicat com a estrenyiment. Amb 0 l'ajust es limita a l'espaiat entre paraules.
slackWeightnumber10Pes aplicat al cost quadràtic de l'"espai de columna no utilitzat". Valors més alts fan que la maquetació prefereixi omplir les columnes al màxim; 0 desactiva aquesta pressió del tot.
keepColonWithListbooleantrueQuan un paràgraf acaba amb dos punts que introdueixen directament una llista, manté la línia dels dos punts unida a la llista: si col·locar el paràgraf no deixa lloc perquè el primer element de la llista comenci a la mateixa columna/pàgina, l'última línia (o el paràgraf sencer, si només té una línia) es mou a la columna següent juntament amb la llista. Quant lloc és suficient ho diu colonListRoom. Quan aquesta regla hagi d'empènyer el paràgraf complet i just abans hi hagi una seqüència de títols a la columna, aquests títols també s'arrosseguen endavant perquè headings.keepWithNext es continuï complint.
colonListRoom'item' | 'line''item'El lloc que demana keepColonWithList sota la línia dels dos punts. 'item': el que les regles d'òrfenes i vídues de les llistes deixarien del primer element al peu de la columna, una línia si s'hi pot partir, tot sencer si el mantenen sencer (un element de dues línies, per exemple). 'line': una línia, com fins a postext 1.4; un primer element que aquestes regles mantenen sencer passa llavors tot sol a la columna següent i deixa la línia dels dos punts al peu. Una configuració desada abans de configVersion 6, en un llibre que introdueix una llista amb dos punts, es llegeix amb 'line' (vegeu Paquets escrits per postext 1.4 o anterior). Qualsevol altre valor es llegeix com a 'item'.
hyphenateAcrossColumnsboolean | 'withinPage'truePermet que una columna o una pàgina acabi en una paraula partida (l'Hyphenate Across Column d'InDesign). Amb false, el paràgraf que travessa el salt de columna es torna a tallar perquè la seva última línia a la columna acabi en una paraula sencera; els espais entre paraules de les línies de dalt absorbeixen la diferència, dins de maxWordSpacing i minWordSpacing. És una preferència: on cap tall dins d'aquests límits no ho evita, el guionet es queda. Ho intenta en tots els salts de columna d'un paràgraf: en el primer i en els següents que cauen on acaba una columna plena, amb un nou tall; i en un salt posterior que cau en un altre lloc (una vídua evitada, una banda tallada a nivell), amb un altre nou tall des d'aquella columna, que deixa les línies ja col·locades a les columnes anteriors amb els seus talls i només torna a tallar la resta. 'withinPage' protegeix les línies que tanquen una pàgina i cap altra: una paraula es pot partir entre dues columnes d'una mateixa pàgina, i l'última línia d'una pàgina acaba en una paraula sencera sempre que els límits ho permeten. Canvia menys línies que false, i això pesa amb tres columnes o més, on dos de cada tres finals de columna queden dins de la pàgina; amb una sola columna els dos valors donen les mateixes línies. Una columna tanca la seva pàgina quan cap columna posterior de la pàgina rep text: no en rep una columna lateral reservada als flotants, ni una columna que una taula o una figura ha omplert. No afecta el cos dels requadres. Amb optimalRagged, un paràgraf en bandera es torna a tallar igual: els seus espais entre paraules no canvien d'amplada, així que només es mouen els finals de les seves línies. Cada nou tall mesura el paràgraf una vegada més, així que un llibre amb molts guionets al peu de columna triga una mica més a compondre's. Necessita optimalLineBreaking, i optimalRagged en el text en bandera.
paragraphContainerSpacing'collapse' | 'add''collapse'L'espai sota un contenidor :::paragraphs que es tanca amb un paràgraf, entre aquest paràgraf i el bloc següent (vegeu El contenidor :::paragraphs). 'collapse': el més gran entre el spaceBetween i el marginBottom de l'estil i la separació entre paràgrafs del text que envolta el contenidor (una línia amb paragraphSpacing; en un requadre, la del requadre), fos amb l'espai que el bloc següent deixa sobre seu, com entre dos paràgrafs del text corregut: un encapçalament sota una bibliografia en queda separat pel seu propi marginTop, no per aquest marge més la separació de les entrades. 'add': com fins a postext 1.4, sota l'última línia només s'hi posa l'espai de l'estil abans de l'ajust a la retícula, l'espai que el bloc següent deixa sobre seu se suma a sota i la separació entre paràgrafs no compta, així que el paràgraf que segueix el contenidor podia quedar-hi més enganxat que a qualsevol altre. Una configuració desada abans de configVersion 8 que declara algun estil de paràgraf, en un llibre que té un d'aquests contenidors, es llegeix amb 'add' (vegeu Paquets escrits per postext 1.4 o anterior). Un marginBottom negatiu puja el bloc següent en tots dos casos. Un estil de paràgraf pot fixar la seva pròpia regla per als seus contenidors (containerSpacing, des de postext 1.28).

Sobre les línies curtes. Una línia curta (runt, en anglès) és l'última línia d'un paràgraf quan és massa curta per semblar una línia de text pròpiament dita, típicament una o dues paraules curtes encallades al final del paràgraf. Com que la comprovació es basa en l'amplada en píxels de la línia relativa a l'amplada de l'espai normal, runtMinCharacters s'adapta automàticament a la mida de font actual. Una paraula curta visualment més ampla que runtMinCharacters × anchoDeEspacio és vàlida; una paraula més estreta que això (o veritablement sola) dispara la penalització. El llindar compta espais entre paraules, que fan més o menys la meitat que una lletra: el valor per defecte, 20, equival a una última línia d'unes 8 a 12 lletres. Tota línia curta costa la penalització sencera, així que entre dos finals per sota del llindar l'algorisme conserva les línies més atapeïdes de dalt; gradedRuntPenalty valora cadascun segons el que li falta i guanya el final més llarg. Per a qui tingui curiositat matemàtica: amb el runtPenalty per defecte de 1000, evitar una línia curta domina sobre qualsevol alternativa que exigís un estirament de l'espai entre paraules de fins a aproximadament r≈2,15.

Toves, no dures. Cap d'aquestes regles no pot impedir un salt: el motor sempre produeix una maquetació. Són demèrits: l'algorisme combina en una única optimització global la "badness" (desigualtat), el cost de la partició de mots, la suavitat de classe d'encaix i aquestes penalitzacions estructurals, i tria el conjunt de salts amb el cost total més baix. Si necessites una garantia més dura, puja la penalització; si un document concret es llegeix millor amb la penalització relaxada, abaixa-la.

#Equilibratge de columnes

Les editorials esperen que cada columna comenci a la part superior de la pàgina i acabi alineada amb la part inferior. Les regles de ruptura (protecció d'òrfenes i vídues, títols units al seu text, figures indivisibles) deixen columnes curtes de manera natural — una o més línies de retícula de base buides al final. Amb l'equilibratge activat, el motor fa el que faria un maquetista, aplicant les seves palanques en ordre de prioritat editorial:

  1. Una caixa que tanca la columna — un callout que acaba una columna curta baixa exactament l'espai que queda sota el seu peu, de manera que la seva vora inferior cau a l'última casella de retícula de la pàgina, a nivell amb l'última línia de la columna contigua. Ocupa aquest espai encara que sigui menor que una línia, sempre que res no passi a una altra columna. Per defecte actua abans que qualsevol altra palanca i es queda tot el buit, de manera que un requadre que comenta el paràgraf de damunt pot acabar diverses línies per sota d'aquest; amb closingBox: 'last' els encapçalaments, els finals de llista i les altres palanques d'espai prenen abans les línies senceres, i el requadre només el que deixen, i amb closingBox: 'off' no es mou mai.
  2. Imatges amb zona segura — una imatge amb zona segura (Resource.safeArea, vegeu Format del document › Zona segura) col·locada en línia a la columna curta, o flotada al seu cap o al seu peu i només sobre ella, creix en línies senceres de retícula, retallada dins de la zona segura, fins a omplir la columna o fins que el retall arriba a la zona segura. Una imatge més alta no deixa cap forat a la pàgina, així que actua abans d'afegir cap espai; un flotant al cap d'una columna d'una pàgina o banda on els caps de columna queden anivellats (vegeu més avall) no creix. S'anota com a flexFigure. No té cap ajust propi: només creix una imatge el recurs de la qual marca una zona segura.
  3. Encapçalaments — s'afegeixen línies completes de retícula al marge superior dels encapçalaments de la columna curta. Quan calen diverses línies i la columna conté diversos encapçalaments, les línies es reparteixen entre ells, deixant sempre la major part a l'encapçalament més important (un h2 en rep més que un h3). Els encapçalaments situats al principi d'una columna no reben mai espai addicional, de manera que les columnes continuen començant a la part superior — llevat d'un encapçalament just sota una figura o taula que encapçala la seva columna en una pàgina que flueix cap a la següent: l'espai va damunt d'aquest encapçalament, sota la figura. Un encapçalament pren així com a màxim maxLinesBeforeLoose línies (dues per defecte) abans de provar les palanques següents, i les altres, fins a maxLinesPerHeading, només quan aquestes ja no poden donar més.
  4. Finals de llista — quan els encapçalaments no poden absorbir tot el buit, s'afegeix una línia de retícula on acaba una llista o enumeració (l'aire després d'una llista es llegeix amb naturalitat), amb un màxim per llista.
  5. Sota fórmules, caixes i figures — després va una línia de retícula sota una fórmula destacada o una caixa després de la qual segueix el text (stretchAfterDisplays; es llegeix com a marge del mateix element), i sota una figura o taula que encapçala la columna (stretchAfterFloats, amb el màxim de maxLinesAfterFloat).
  6. Paràgrafs correguts — com a últim recurs, es recompon un paràgraf de la columna amb una línia més (el \looseness=+1 de TeX), triant el paràgraf més llarg perquè l'espaiat addicional es dilueixi de manera invisible. La solució correguda només s'accepta quan totes les seves línies queden per sota de bodyText.maxWordSpacing — el color tipogràfic mai no supera el límit que ja tinguis configurat. Requereix bodyText.optimalLineBreaking.

En una retícula de caràcters (cjk.grid, vegeu Composició xinesa › La retícula de caràcters) cada caràcter ocupa una casella d'un quadratí d'amplada i cada línia cau al pas de línies de la retícula, que és també la retícula de base. Allà l'equilibratge està desactivat per defecte, com en el text vertical: una pàgina composta línia a línia sobre una retícula, a la manera de la GB/T 9704, que compta 22 línies de 28 caràcters, deixa curta la columna que acaba curta. Una configuració que fixa enabled: true rep palanques que respecten la retícula: els encapçalaments, els finals de llista, les fórmules en bloc i les figures prenen línies senceres de la retícula, de manera que el text de sota es desplaça files senceres, i gridLines: 'off' deixa fora aquestes palanques per a una norma que no té cap fila buida per cedir. Un paràgraf xinès o japonès guanya una línia només quan cap espai entre dos dels seus caràcters no s'obre més de maxTracking, i no rep tracking a les seves lletres: una línia a la qual falta un caràcter reparteix un quadratí entre els seus espais, molt per sobre dels 0,01 em per defecte, així que en una retícula de caselles senceres la palanca de paràgrafs correguts gairebé mai no troba res. La caixa que tanca una columna i les imatges amb zona segura queden fora de la retícula per disseny i funcionen com a qualsevol altra pàgina.

L'última columna d'una pàgina només s'equilibra quan la pàgina flueix de manera natural cap a la següent — la pàgina final d'un capítol acaba curta de manera legítima. Aquesta pàgina, i una banda de tancament tallada a nivell per trailing, mantenen a més els caps de les seves columnes a la mateixa altura: no s'afegeix cap línia sota una figura o taula que encapçali una de les seves columnes (la palanca després de flotants), i un encapçalament o una caixa que obre una columna sota aquesta figura es queda al seu cap, digui el que digui stretchAfterFloats, igual que l'encapçalament que va just a sota d'una obertura span: 'page', a la columna d'aquesta obertura, de manera que cap columna no comença més avall que la veïna només per igualar els peus.

PropietatTipusPer defecteDescripció
enabledbooleantrueSi s'equilibren els finals de columna. Desactivat per defecte en text vertical (layout.writingMode: 'vertical-rl') i en una retícula de caràcters (cjk.grid.enabled, des de postext 1.25); true l'activa també allà.
maxLinesPerHeadingnumber4Nombre màxim de línies de retícula addicionals que es poden afegir damunt d'un mateix encapçalament.
maxLinesBeforeLoosenumber2Línies de retícula que un encapçalament pot prendre abans de provar les palanques següents: els finals de llista, les fórmules i caixes, les figures i els paràgrafs correguts. L'encapçalament només rep les altres, fins a maxLinesPerHeading, quan aquestes ja no poden donar més, de manera que una pàgina amb un sol encapçalament no obre quatre línies al damunt mentre els seus paràgrafs podrien córrer una línia. Un valor igual o superior a maxLinesPerHeading dona primer totes les línies als encapçalaments, com fins a postext 1.27; 0 prova les altres palanques abans d'afegir cap línia sobre un encapçalament. Des de postext 1.28; els documents desats abans conserven l'ordre anterior (pinLegacyLooseOrder).
stretchAfterListsbooleantruePermet línies de retícula addicionals on acaba una llista, quan els encapçalaments no poden absorbir tot el buit.
maxLinesAfterListnumber1Nombre màxim de línies de retícula addicionals després del final d'una mateixa llista.
stretchAfterDisplaysbooleantruePermet una línia de retícula addicional sota una fórmula destacada, i sota una caixa, a la columna curta, després de la palanca dels finals de llista: el bloc que la segueix baixa una línia. Amb false, l'espai sota fórmules i caixes queda com el fixen els seus propis marges; el buit passa a les palanques següents i la columna acaba curta si no el tanquen. Des de postext 1.28.
stretchAfterFloatsbooleantruePermet línies de retícula addicionals sota una figura o taula que encapçala la columna curta (un flotant superior), després de la palanca dels finals de llista, de manera que el text de sota baixa en lloc d'acabar la columna curta. Mai en una pàgina que no flueix cap a la següent (la pàgina final d'un capítol) ni en una banda de tancament tallada a nivell per trailing: allà els caps de les columnes queden a la mateixa altura i l'última columna pot acabar una línia més curta. El primer bloc sota la figura pot ser la continuació d'un paràgraf començat a la pàgina anterior: baixa igualment, la línia que les regles de tall van deixar lliure al peu de la columna (una línia que la regla de vídues va deixar buida, o un espai entre paràgrafs sense lloc per a text al darrere). Amb false, el text queda just a sota de la figura. Sota un flotant a diverses columnes, les columnes baixen juntes o no baixen: vegeu stretchAfterWideFloats.
maxLinesAfterFloatnumber1Nombre màxim de línies de retícula addicionals sota un mateix flotant superior.
stretchAfterWideFloats'flush' | 'always''flush'Sota una figura o taula que ocupa dues o més columnes de text. Amb 'flush', una columna només baixa sota seu quan totes les columnes de text que queden sota el flotant prenen les mateixes línies, de manera que els seus caps continuen a la mateixa altura, o quan les línies deixen aquesta columna a ras; no s'afegeix una línia que baixaria el cap d'una columna i la deixaria curta igualment, i el buit passa als paràgrafs correguts. 'always' estira aquesta columna com sota qualsevol flotant, com fins a postext 1.27. Qualsevol altre valor es llegeix com a 'flush'. Des de postext 1.28; els documents desats abans conserven 'always' (pinLegacyWideFloatStretch).
looseParagraphsbooleantrueÚltim recurs: recompon paràgrafs d'una columna curta amb una línia més (una línia extra cadascun), sense superar bodyText.maxWordSpacing.
maxLooseParagraphsnumber2Quants paràgrafs d'una mateixa columna curta poden guanyar una línia, els més llargs primer.
trackParagraphsbooleantrueQuan amb l'espaiat entre paraules no n'hi ha prou per guanyar la línia, el paràgraf corregut pot prendre a més el menor tracking positiu (interlletratge) que ho aconsegueixi.
maxTrackingnumber10Límit d'aquest tracking, en mil·lèsimes d'em per caràcter (10 = 0,01 em).
trailingbooleantrueAnivella la banda de tancament de cada capítol i del document: quan el flux acaba abans d'omplir la pàgina (en una obertura de capítol, un :::part, una caixa placement: 'fixed' que tanca el capítol o el final del document) amb les columnes desiguals, es tallen a la mateixa altura — un topall de banda de ceil(Σ usado / N / rejilla) línies, resolt després que les palanques anteriors hagin assentat les pàgines prèvies —, de manera que una bibliografia curta acaba a la mateixa altura a totes les columnes en lloc d'omplir la primera i deixar l'última a mitges. El tall respecta les regles d'una banda sense tallar: quan un bloc que no s'hi pot partir (el final d'un paràgraf que els mínims d'òrfenes i vídues mantenen sencer, una caixa que no es parteix) el sobrepassaria — i perdria les seves últimes línies, perquè els renderitzadors retallen cada columna a la seva caixa — o un encapçalament tancaria una columna mentre el seu text obre la següent (amb headings.keepWithNext, el valor per defecte), el tall baixa una línia, fins a tres vegades, i si no n'hi ha prou es descarta. Un bloc que no pot començar a les línies que el tall deixa sota una figura que encapçala una columna (un paràgraf hi necessita el seu mínim d'òrfenes) passa a la columna següent de la banda, com ho faria des d'una columna sense tallar, i la figura queda sola a la seva columna. Les columnes els peus de les quals difereixen en una línia de la retícula o menys es deixen com estan: una banda de tancament l'última columna de la qual acaba una línia més curta és el final habitual, i tallar-la només mouria una línia. El tall va a la banda en què es va mesurar, igual que el que demana una caixa d'amplada de pàgina a mitja pàgina: fins a postext 1.4, quan el primer text de la pàgina de tancament s'havia ofert abans a una banda sense lloc per a ell (una pàgina que ocupa sencera un flotant, la banda estreta que deixa al peu de la pàgina anterior una caixa d'amplada de pàgina), el tall es gastava en aquesta banda i la pàgina de tancament deixava totes les seves línies a la primera columna. Les columnes d'amplades diferents (una disposició de columna i mitja amb text a les dues) es tallen per superfície, ponderant l'altura de cada columna per la seva amplada, perquè una línia de la columna estreta porta menys text. Només actua quan enabled és true.
trailingStep'lines' | 'grid''lines'La unitat del tall a nivell que fa trailing (i del tall que fa beforeSpan darrere d'una caixa que passa a la pàgina següent). 'lines': una banda el text de la qual va amb un interlineat propi (un índex, una llista de referències, un contenidor en cos petit) es talla, i es reintenta, per línies senceres d'aquest interlineat: l'alçada que comparteix la majoria de les línies de la banda, sense comptar encapçalaments ni caixes. Les seves columnes acaben llavors amb una línia de diferència com a màxim, com les d'una banda de text base. Una banda de text base, i una que barreja dos interlineats a parts iguals, es talla a la retícula base com abans. També una banda en què les línies comparteixen alçada però queden separades per una fracció de línia (referències amb un espai entre entrades, grups d'índex amb un marge posat a mà): quatre de cada cinc línies de cada columna han d'estar a un nombre enter de línies les unes de les altres. 'grid': tot tall és un nombre enter de línies de retícula base, com fins a postext 1.27, on un tall a la retícula deixava entrar una línia de més en una columna d'una banda fora de retícula i un tall fallit baixava més d'una de les seves línies (columnes amb fins a tres línies de diferència). Qualsevol altre valor es llegeix com a 'lines'. Des de postext 1.28; els documents desats abans conserven 'grid' (pinLegacyTrailingStep).
beforeSpanbooleantrueAnivella la banda que deixa enrere un bloc d'amplada de pàgina: quan un avís span: 'page' no cap sota les columnes actuals ni tan sols després d'un tall anivellat, i ha de passar a la pàgina següent o partir-se (calloutStyles[].keepTogether: false), les columnes que interromp es tallen a la mateixa altura — el mateix topall de tancament que rep una banda final — en lloc que la primera ompli la pàgina i l'última acabi curta. La pàgina queda com a salt explícit perquè les palanques anteriors no tornin a estirar la seva última columna fins al peu; la caixa, o la part que hi cap, queda llavors sota les columnes anivellades. Només actua quan enabled és true.
closingBox'first' | 'last' | 'off''first'Quan pren un requadre que tanca una columna curta l'espai sota el seu peu (la palanca 1, registrada com a trailingCallout). 'first': abans que qualsevol altra palanca, com fins a postext 1.4 — el requadre es queda tot el buit, encara que siguin diverses línies, i els encapçalaments de damunt no reben res. 'last': després de les palanques d'encapçalaments, finals de llista, fórmules i flotants, que prenen abans les línies senceres; el requadre baixa amb el text de damunt i després pren només el que han deixat, normalment una fracció de línia, de manera que el seu peu continua caient a l'última casella de la retícula i queda a prop del text que comenta. 'off': mai; el requadre conserva l'espai sota el seu peu, tot i que les altres palanques encara el poden baixar línies senceres quan afegeixen espai per damunt, i la fracció de línia que sobra s'hi queda. En una pàgina de tancament, on el requadre és l'única palanca que alinea el seu peu amb la columna contigua, 'off' el deixa on l'ha posat el flux. Qualsevol altre valor es llegeix com a 'first'. Un requadre que tanca l'única columna de text de la seva banda (una pàgina d'una sola columna que acaba abans d'hora i el bloc següent de la qual obre la pàgina següent) no es mou mai: no hi ha cap columna al costat amb què alinear-lo (des de postext 1.19).
gridLines'allow' | 'off''allow'En una retícula de caràcters: si poden actuar les palanques que afegeixen línies senceres de la retícula (damunt d'un encapçalament, on acaba una llista, sota una fórmula en bloc o una caixa, sota una figura que encapçala la columna). Mantenen cada caràcter a la seva casella; 'off' convé a una norma que compta les línies de la pàgina, i deixa curta la columna. Sense efecte fora de la retícula. Qualsevol altre valor es llegeix com a 'allow'. Des de postext 1.25.

#Quina palanca ha actuat

La maquetació deixa constància de cada palanca que aplica, al bloc sobre el qual l'aplica: block.balancing al VDT que retorna buildDocument. Una prova d'impremta, un test o un informe poden dir per què una columna acaba alineada — i quines columnes no va poder tancar cap palanca. Els blocs que l'equilibratge deixa com estaven no porten balancing, i un document compost amb enabled: false no el porta en cap.

En una retícula de caràcters el document diu per què una columna pot acabar curta: doc.gridBalancing és { off: true } quan l'equilibratge està desactivat perquè la pàgina va sobre una retícula i la configuració no l'activa, i { gridLines: 'off' } quan actua sense les palanques de línies senceres; una columna que continua curta porta column.gridRefused, les palanques que la retícula li ha negat ('looseParagraph' quan un paràgraf només podia guanyar la seva línia traient els caràcters de les seves caselles, i les palanques de línies senceres amb gridLines: 'off'). Cap dels dos no apareix fora de la retícula.

interface VDTBalancing {
  levers: BalanceLever[]; // normalment una: un paràgraf després d'una llista pot prendre la línia de final de llista i a més guanyar una línia
  spaceAbove: number;     // px que les palanques d'espaiat han afegit damunt del bloc (0 si només ha actuat looseParagraph o flexFigure)
  bodyGrowth?: number;    // flexFigure: px que ha crescut la imatge, retallada dins de la zona segura
  extraLines?: number;    // looseParagraph: línies que ha guanyat el paràgraf
  tracking?: number;      // looseParagraph: el tracking amb què les ha guanyades, en mil·lèsimes d'em (0 = només amb l'espaiat entre paraules)
}
type BalanceLever = 'trailingCallout' | 'flexFigure' | 'heading' | 'listEnd' | 'afterDisplay' | 'afterFloat' | 'looseParagraph';
PalancaEs registra aQuè ha fet
trailingCalloutel bloc del marc de l'avísUna caixa que tanca la columna ha baixat exactament l'espai que quedava sota el seu peu (spaceAbove; pot ser una fracció de línia).
flexFigureel bloc de la imatge (en línia) o el flotantUna imatge amb zona segura composta bodyGrowth px més alta, en línies senceres de retícula, retallada dins de la zona segura. El bodySource del bloc del recurs és la part que es veu, i bodyFlex.delta el mateix creixement.
headingl'encapçalamentLínies senceres de retícula damunt de l'encapçalament, fins a maxLinesPerHeading.
listEndel primer bloc després de la llistaUna línia de retícula on acaba una llista, fins a maxLinesAfterList.
afterDisplayel bloc després de la fórmula o la caixaUna línia de retícula sota una fórmula en bloc o una caixa d'avís.
afterFloatel primer bloc de la columnaUna línia de retícula entre una banda de flotants que encapçala la columna i el seu text, fins a maxLinesAfterFloat.
looseParagraphel paràgrafEl paràgraf recompost extraLines més llarg, amb el menor tracking que ho ha aconseguit (tracking; block.letterSpacing és el mateix valor en px).

Els talls anivellats es registren a les columnes que tallen: column.bandCapped val true a tota columna tallada a nivell (la banda que deixa un bloc d'amplada de pàgina, una banda de tancament), i column.trailingCap marca a més la banda de tancament d'un capítol o del document (trailing).

import { buildDocument } from 'postext';
 
const doc = buildDocument(content, config);
for (const page of doc.pages) {
  page.columns.forEach((column, i) => {
    const levers: string[] = column.blocks.flatMap((block) => block.balancing?.levers ?? []);
    if (column.trailingCap) levers.push('banda de tancament anivellada');
    else if (column.bandCapped) levers.push('banda anivellada');
    if (levers.length > 0) console.log(`pàgina ${page.index + 1}, columna ${i + 1}: ${levers.join(', ')}`);
  });
}
// pàgina 3, columna 1: heading, heading
// pàgina 3, columna 2: listEnd, looseParagraph