Riepilogo
Questa lezione estende la tabella leggibile della lezione precedente ai casi che la griglia semplice non risolve. Insegna a unire celle in orizzontale con \multicolumn, per raggruppare intestazioni sotto un filetto parziale e per cambiare l’allineamento di una sola cella, e ricava dove va la larghezza in eccesso di un’intestazione raggruppata; insegna a unire celle in verticale con \multirow e a decidere quando conviene evitarlo; confronta tre modi di dare a una tabella la larghezza della riga (tabularx con la sua colonna X, tabular* con \extracolsep, e il ridimensionamento con \resizebox, che si sconsiglia); compone tabelle di più pagine con longtable, con la loro intestazione ripetuta e le passate di cui hanno bisogno; presenta la rotazione delle pagine per le tabelle molto larghe; genera tabelle da un file di dati con csvsimple e pgfplotstable, creando il file con filecontents; mostra tabularray come alternativa moderna; e termina con gli errori tipici, letti in file di log reali.
Obiettivi di apprendimento
- Costruire intestazioni raggruppate con
\multicolumne\cmidrule, contare le celle di ogni riga e prevedere il risultato quando il conto non torna. - Scegliere tra
\multirowe la cella vuota della tradizione di booktabs, giustificando la scelta con la lettura. - Adattare una tabella alla larghezza della riga con tabularx o con
tabular*, e spiegare perché non la si ridimensiona con\resizebox. - Comporre con longtable una tabella di più pagine con intestazione e piede propri, interpretarne gli avvisi e sapere perché non può stare dentro un oggetto flottante.
- Generare una tabella da un file di dati e spiegare che cosa si guadagna con un’unica origine dei dati.
Celle che occupano più colonne
Il comando \multicolumn{n}{allineamento}{testo} occupa il posto di n celle contigue di una riga e le sostituisce con una sola, con l’allineamento indicato nel secondo argomento, che si scrive come nel preambolo della tabella (l, c, r, p{…}, e anche @{}). Ne segue una regola di conto che l’autore deve verificare in ogni riga: la somma delle celle semplici e delle larghezze dichiarate in ogni \multicolumn deve essere, al massimo, il numero di colonne del preambolo.
Cambiare l’allineamento di una sola cella
L’uso più modesto di \multicolumn occupa una sola colonna: \multicolumn{1}{c}{…} non unisce nulla, ma impone a quella cella un allineamento diverso da quello della sua colonna. È il modo di centrare l’intestazione di una colonna di cifre allineate a destra, o di allineare a destra l’etichetta di una riga di totale, che deve stare accanto alla sua cifra.
\documentclass{article}\usepackage{fontspec}\usepackage[italian]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{llr}\topruleVoce & Dettaglio & \multicolumn{1}{c}{Importo} \\\midruleViaggi & Due visite all’archivio & 1\,200 \\Materiali & Carta e dischi esterni & 300 \\Servizi & Digitalizzazione dei fondi & 850 \\\midrule\multicolumn{2}{r}{Totale} & 2\,350 \\\bottomrule\end{tabular}\end{document}L’intestazione «Importo» si centra sopra una colonna che resta allineata a destra, e l’etichetta «Totale», che occupa le prime due colonne, si allinea a destra, accanto alla sua cifra.
Intestazioni raggruppate
Quando più colonne condividono una categoria, la tabella guadagna con un’intestazione a due livelli: sopra, il nome del gruppo, che occupa le sue colonne; sotto, quello di ciascuna colonna. Tra i due livelli, booktabs offre il filetto parziale \cmidrule{2-3}, che sottolinea solo le colonne da 2 a 3; con le opzioni (lr), \cmidrule(lr){2-3}, il filetto si accorcia un poco a sinistra e a destra, in modo che due filetti contigui non si tocchino e l’occhio veda due gruppi.
\documentclass{article}\usepackage{fontspec}\usepackage[italian]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{lrrrr}\toprule& \multicolumn{2}{c}{Gruppo di controllo}& \multicolumn{2}{c}{Gruppo sperimentale} \\\cmidrule(lr){2-3} \cmidrule(lr){4-5}Misura & Media & DS & Media & DS \\\midruleIniziale & 52,1 & 8,3 & 51,7 & 7,9 \\Finale & 54,0 & 8,1 & 61,2 & 7,4 \\\bottomrule\end{tabular}\end{document}La prima riga ha una cella vuota (la & iniziale) e due celle di due colonne: uno più due più due, cinque, come il preambolo. Si osservi che entrambe le colonne della deviazione standard sono più larghe di quanto richiedano le loro cifre.
Dove va la larghezza in eccesso
La larghezza in più dell’esempio precedente non è casuale. Se il testo di un \multicolumn è più largo della somma delle colonne che occupa, la tabella deve allargarsi, e il motore dà tutto l’eccesso all’ultima di quelle colonne; le altre conservano la loro larghezza naturale. «Gruppo sperimentale» è più largo di «Media» e «DS» insieme, e la differenza la riceve la seconda. Con un’intestazione molto più lunga dei suoi dati, l’effetto smette di essere discreto.
\documentclass{article}\usepackage{fontspec}\usepackage[italian]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{lrr}\toprule& \multicolumn{2}{c}{Gruppo sperimentale dopo l’intervento} \\\cmidrule(lr){2-3}Misura & Media & DS \\\midruleIniziale & 51,7 & 7,9 \\Finale & 61,2 & 7,4 \\\bottomrule\end{tabular}\end{document}La cifra della media resta lontana da quella della sua deviazione, separate da un bianco che non significa nulla. La correzione non è tipografica, ma redazionale: un’intestazione breve («Sperimentale») e la spiegazione nella didascalia della tabella o nel testo.
Caricamento del contenuto…