Resumen
Esta clase extiende la tabla legible de la clase anterior a los casos que la cuadrícula simple no resuelve. Enseña a unir celdas a lo ancho con \multicolumn, para agrupar encabezados bajo una regla parcial y para cambiar la alineación de una sola celda, y deduce adónde va el ancho sobrante de un encabezado agrupado; enseña a unir celdas a lo alto con \multirow y a decidir cuándo conviene evitarlo; compara tres maneras de dar a una tabla el ancho de la línea (tabularx con su columna X, tabular* con \extracolsep, y el escalado con \resizebox, que se desaconseja); compone tablas de varias páginas con longtable, con su encabezado repetido y las pasadas que necesita; presenta los giros de página para tablas muy anchas; genera tablas desde un archivo de datos con csvsimple y pgfplotstable, creando el archivo con filecontents; muestra tabularray como alternativa moderna; y termina con los errores típicos, leídos en registros reales.
Objetivos de aprendizaje
- Construir encabezados agrupados con
\multicolumny\cmidrule, contar las celdas de cada fila y predecir el resultado cuando la cuenta no coincide. - Decidir entre
\multirowy la celda vacía de la tradición de booktabs, justificando la elección por la lectura. - Ajustar una tabla al ancho de la línea con tabularx o con
tabular*, y explicar por qué no se escala con\resizebox. - Componer con longtable una tabla de varias páginas con encabezado y pie propios, interpretar sus avisos y saber por qué no puede ir dentro de un flotante.
- Generar una tabla desde un archivo de datos y explicar qué se gana con un solo origen de los datos.
Celdas que abarcan columnas
La instrucción \multicolumn{n}{alineación}{texto} ocupa el lugar de n celdas contiguas de una fila y las reemplaza por una sola, con la alineación indicada en su segundo argumento, que se escribe como en el preámbulo de la tabla (l, c, r, p{…}, y también @{}). De ello se sigue una regla de cuenta que el autor debe verificar en cada fila: la suma de las celdas simples y de los anchos declarados en cada \multicolumn debe ser, como máximo, el número de columnas del preámbulo.
Cambiar la alineación de una sola celda
El uso más modesto de \multicolumn abarca una sola columna: \multicolumn{1}{c}{…} no une nada, pero impone a esa celda una alineación distinta de la de su columna. Es la manera de centrar el encabezado de una columna de cifras alineadas a la derecha, o de alinear a la derecha el rótulo de una fila de total que debe quedar junto a su cifra.
\documentclass{article}\usepackage{fontspec}\usepackage[spanish]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{llr}\toprulePartida & Detalle & \multicolumn{1}{c}{Monto} \\\midruleViajes & Dos visitas al archivo & 1\,200 \\Material & Papel y discos externos & 300 \\Servicios& Digitalización de fondos & 850 \\\midrule\multicolumn{2}{r}{Total} & 2\,350 \\\bottomrule\end{tabular}\end{document}El encabezado «Monto» se centra sobre una columna que sigue alineada a la derecha, y el rótulo «Total», que abarca las dos primeras columnas, se alinea a la derecha, junto a su cifra.
Encabezados agrupados
Cuando varias columnas comparten una categoría, la tabla gana con un encabezado de dos niveles: arriba, el nombre del grupo, que abarca sus columnas; debajo, el de cada columna. Entre ambos niveles, booktabs ofrece la regla parcial \cmidrule{2-3}, que subraya solo las columnas 2 a 3; con las opciones (lr), \cmidrule(lr){2-3}, la regla se recorta un poco por la izquierda y por la derecha, de modo que dos reglas contiguas no se toquen y el ojo vea dos grupos.
\documentclass{article}\usepackage{fontspec}\usepackage[spanish]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{lrrrr}\toprule& \multicolumn{2}{c}{Grupo de control}& \multicolumn{2}{c}{Grupo experimental} \\\cmidrule(lr){2-3} \cmidrule(lr){4-5}Medición & Media & Desv. & Media & Desv. \\\midruleInicial & 52,1 & 8,3 & 51,7 & 7,9 \\Final & 54,0 & 8,1 & 61,2 & 7,4 \\\bottomrule\end{tabular}\end{document}La primera fila tiene una celda vacía (el & inicial) y dos celdas de dos columnas: uno más dos más dos, cinco, como el preámbulo. Obsérvese que la columna de la desviación del grupo experimental es más ancha que la del grupo de control.
Adónde va el ancho sobrante
La diferencia de anchos del ejemplo anterior no es casual. Si el texto de un \multicolumn es más ancho que la suma de las columnas que abarca, la tabla debe ensancharse, y el motor da todo el exceso a la última de esas columnas; las demás conservan su ancho natural. «Grupo experimental» es más ancho que «Media» y «Desv.» juntas, y la diferencia la recibe la segunda. Con un encabezado mucho más largo que sus datos, el efecto deja de ser discreto.
\documentclass{article}\usepackage{fontspec}\usepackage[spanish]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{lrr}\toprule& \multicolumn{2}{c}{Grupo experimental tras la intervención} \\\cmidrule(lr){2-3}Medición & Media & Desv. \\\midruleInicial & 51,7 & 7,9 \\Final & 61,2 & 7,4 \\\bottomrule\end{tabular}\end{document}La cifra de la media queda lejos de la de su desviación, separadas por un blanco que no significa nada. La corrección no es tipográfica, sino de redacción: un encabezado breve («Experimental») y la explicación en el pie de la tabla o en el texto.
Cargando el contenido…