Editorial Craft Bible
Tablas y bloques que no se cortan
Inicio Paginación HTML/CSS → PDF Tablas y bloques que no se cortan
Paginación HTML/CSS → PDF

Tablas y bloques que no se cortan

11 reglas W3C CSS Paged Media · MDN break-insideMDN break-inside · W3C CSS FragmentationAdobe InDesign print guide · thebookdesignerA List Apart, Web Typography: Tables · CSS Text Level 4
17

Tablas y bloques que no se cortan

11 reglas
177

Repite el encabezado de tabla en cada página

Una tabla que cruza páginas debe reimprimir sus encabezados de columna en cada hoja, o el lector pierde el significado de cada columna. Declara thead { display: table-header-group }; el motor de impresión clona el encabezado tras cada salto. Marca la cabecera con un <thead> real, no una <tr> suelta dentro del cuerpo.

thead { display: table-header-group }
tfoot { display: table-footer-group }
Correcto
ConceptoCant.Total
Filas 1–18
salto de página
ConceptoCant.Total
Filas 19–36
El encabezado reaparece tras el salto; las columnas siguen legibles.
Evitar
ConceptoCant.Total
Filas 1–18
salto de página
???
Filas 19–36
Sin encabezado en la página 2; el lector adivina cada columna.
W3C CSS Paged Media · MDN break-inside
178

Nunca partas una fila entre dos páginas

Una fila cortada a la mitad, con su borde superior al pie de una página y sus celdas continuando en la siguiente, es ilegible. Aplica tr { break-inside: avoid } para que cada fila quede entera y el corte caiga entre filas. Deja table { break-inside: auto } para que la tabla sí pueda paginar.

tr { break-inside: avoid }
table { break-inside: auto }
Correcto
Pedido 1042 · completo
salto de página
Pedido 1043 · completo
El corte cae entre filas; cada una queda intacta.
Evitar
Pedido 1042
Pedido 1043 · mitad de arriba
salto de página
… mitad de abajo de 1043
La fila 1043 queda partida; sus celdas cruzan dos páginas.
MDN break-inside · W3C CSS Fragmentation
179

Mantén figuras, código y callouts sin partir

Las tablas no son los únicos bloques atómicos. Figuras, ecuaciones, listados de código y callouts también se leen como una unidad y se parten mal. Aplica break-inside: avoid a figure, pre, .callout y similares para que salten enteros a la siguiente página en vez de cortarse. Úsalo solo en unidades chicas; un bloque más alto que la página igual se partirá.

figure, pre, blockquote,
.callout { break-inside: avoid }
Correcto
texto de cuerpo…
salto de página
const total = sum(rows)
El bloque de código salta entero a la siguiente página.
Evitar
const total =
salto de página
  sum(rows)
Una sola sentencia rota entre dos páginas.
W3C CSS Paged Media · MDN break-inside
180

Encaja la tabla ancha dentro del trim, nunca la desbordes

Una tabla más ancha que el área viva se guillotina en el trim y pierde columnas enteras. Arréglalo antes de exportar: rota esa página a apaisado (@page landscape { size: Letter landscape }), reduce el cuerpo a 8–9pt, elimina columnas prescindibles o reestructura tablas largas en bloques clave–valor apilados. El scroll horizontal es una muleta de pantalla que no existe en papel.

Correcto
Apaisado · cuerpo 9pt
Rotada y escalada: todas las columnas caben en la zona segura.
Evitar
14 columnas
La tabla rebasa el trim; las columnas de la derecha se cortan.
Adobe InDesign print guide · thebookdesigner
181

Alinea números a la derecha, texto a la izquierda

Los números deben cuadrar por valor posicional para que el ojo compare magnitudes hacia abajo. Alinea las celdas numéricas a la derecha y usa font-variant-numeric: tabular-nums (o lining-nums tabular-nums) para que cada dígito ocupe el mismo ancho. Fija los decimales a un número constante para que la coma o el punto se apilen. El texto va a la izquierda; nunca centres números.

td.num { text-align: right;
  font-variant-numeric: tabular-nums }
Correcto
Papel1,240.50
Tinta98.00
Encuadernado7,305.25
Los decimales se apilan; comparas magnitudes de un vistazo.
Evitar
Papel1,240.50
Tinta98.00
Encuadernado7,305.25
Números a la izquierda: los valores posicionales ya no cuadran.
A List Apart, Web Typography: Tables · CSS Text Level 4
182

Separa filas con hairlines o cebra sutil, no rejillas pesadas

Una rejilla completa de filetes gruesos enmarca cada celda y compite con los datos. Usa un solo hairline (0.5pt) bajo cada fila, o una cebra tenue en filas alternas, y elimina casi todos los filetes verticales. Deja que la alineación numérica y el aire hagan la separación. Reserva los filetes fuertes para el subrayado del encabezado y la línea de totales.

Correcto
Capítulo 112
Capítulo 234
Capítulo 358
Hairlines y cebra tenue: silencioso, los datos mandan.
Evitar
Capítulo 112
Capítulo 234
Capítulo 358
Una rejilla pesada enmarca cada celda y mete ruido visual.
A List Apart, Web Typography: Tables · Butterick Practical Typography
183

Mantén el pie de tabla y sus notas junto a la tabla

Totales, unidades y notas al pie pertenecen a la tabla y no deben quedar solos en la página siguiente. Pon la fila de totales en un <tfoot> real con display: table-footer-group para que se reimprima y quede anclada. Envuelve la tabla junto a su pie y notas en un figure con break-inside: avoid cuando quepa en una página.

tfoot { display: table-footer-group }
figure.table { break-inside: avoid }
Correcto
Subtotal8,643.75
Total9,850.00
* Incluye 16% de impuesto.
Total y nota quedan con la tabla en la misma página.
Evitar
Subtotal8,643.75
salto de página
Total9,850.00
El total flota a la página siguiente, huérfano de sus filas.
W3C CSS Paged Media · MDN table-footer-group
184

Da suficiente aire a las celdas

Las celdas apretadas hacen la tabla difícil de escanear y fácil de leer mal entre filas. Da a cada celda un padding generoso, aproximadamente 6–10px vertical y 8–12px horizontal a cuerpo de texto, y mantén cómoda la altura de fila. Más aire separa mejor que más filetes. Si falta espacio, quita columnas antes que padding.

Correcto
A4 couché150 g0.42
Bond90 g0.18
El padding holgado deja leer cada fila con claridad.
Evitar
A4 couché150 g0.42
Bond90 g0.18
Las filas apretadas se confunden e invitan a leer mal.
Butterick Practical Typography · A List Apart
185

En tablas largas, que el corte caiga entre filas

Algunas tablas de verdad ocupan varias páginas, y está bien: la meta es un corte limpio entre filas enteras con el encabezado repetido, no forzar la tabla a una sola página. Combina thead { display: table-header-group }, tr { break-inside: avoid } y table { break-inside: auto }. No envuelvas una tabla multipágina en break-inside: avoid o el motor la apretuja y desborda.

table { break-inside: auto }
tr { break-inside: avoid }
thead { display: table-header-group }
Correcto
Ref · Descripción
filas 40–72
corte limpio entre filas
Ref · Descripción
filas 73–110
La tabla cruza páginas; el encabezado se repite, filas enteras.
Evitar
Ref · Descripción
filas 40–110 apretadas, desbordan
Forzada a una página con break-inside: avoid, se desborda.
W3C CSS Fragmentation · MDN break-inside
186

No aísles los totales al inicio o fin de página

Filas críticas como totales o una línea resumen pierden sentido si quedan solas, separadas de los datos que suman. Mantén la fila de totales agrupada con al menos las últimas filas de datos usando un envoltorio con break-inside: avoid, o empuja todo el bloque resumen a la siguiente página con break-before: avoid en el total. El lector siempre debe ver los totales junto a sus filas de origen.

Correcto
salto de página
Concepto 44320.00
Concepto 45210.00
Total9,850.00
El total viaja con sus últimas filas a la nueva página.
Evitar
Concepto 44320.00
Concepto 45210.00
salto de página
Total9,850.00
El total queda solo arriba, aislado de sus filas.
W3C CSS Paged Media · MDN break-before
187

Evita celdas combinadas complejas que rompen la paginación

Los rowspan profundos y los colspan anidados confunden al motor de fragmentación: una celda que abarca muchas filas puede forzar un corte feo o desbordar, y los lectores de pantalla pierden la asociación de encabezado. Prefiere una rejilla plana donde cada celda tenga un valor; repite la etiqueta en cada fila en vez de fusionar hacia abajo. Si debes agrupar, usa una fila de subtítulo en lugar de una celda alta combinada.

Correcto
Trimestre 1
Ene1,200
Feb1,450
Una fila de subtítulo agrupa limpio; toda celda pagina bien.
Evitar
Trimestre 1Ene1,200
Feb1,450
Una celda con rowspan alto puede partirse o perderse en un corte.
PDF/UA (ISO 14289) · W3C WCAG tables