TeX e LaTeX

Le tabelle

Le tabelle sono uno degli elementi fondamentali di un testo scientifico. Devono essere chiare e ben composte.

Come si compone una tabella professionale

Deve essere chiara. No filetti verticali. Filetti orizzontali quando necessari, il superiore e inferiore devono essere più spessi. Solitamente la didascalia di una tabella va posta al di sopra di questa e non sotto come si fa con le figure.

Creare tabelle in LaTeX

Una tabella in testo si crea con l'ambiente tabular o tabular*. Il primo crea una tabella normale, il secondo permette di specificare la sua larghezza.

I tipi di allineamenti a a disposizione per le colonne sono paragrafo, centrato, sinistra e destra che si ottengono con p{width},c,l,r. Esiste poi @{...} che serve per eliminare lo spazio tra due colonne e inserire qualcos'altro.

Ecco un esempio di tabella normale

\begin{tabular}{lcr}
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular}

Ecco un esempio di tabella con larghezza fissa (nel nostro caso fissata pari alla larghezza della colonna di testo)

\begin{tabular*}{\textwidth}{lcr}
  1 & 2 & 3 \\
  4 & 5 & 6 \\
  7 & 8 & 9 \\
\end{tabular*}

Per cambiare la spaziatura tra le righe si deve assegnare un nuovo valore alla variabile \arraystretch. Questa variabile va a moltiplicare la spaziatura di default tra le righe. Il suo valore è di default è chiaramente pari a 1.0. Ecco un esempio che aumenta la spaziatura del 20%

\renewcommand\arraystretch{1.2}

La ridefinizione se fatta nel preambolo ha effetto su tutte le tabelle del documento (sconsigliato). Se lo si vuole applicare tabella per tabella, basta racchiudere il codice tra parentesi graffe o metterla in un ambiente da cui la definizione non possa propagarsi. Esempio:

{
\renewcommand\arraystretch{1.2}
\begin{tabular}{lcr}
...
\end{tabular}
}

Per cambiare la spaziatura fra le colonne bisogna cambiare il valore di \tabcolsep. Nel seguente esempio viene assegnato il valore di 2 mm a tabcolsep.

\setlength{\tabcolsep}{2mm}

Cambiare il valore di tabcolsep è utile soprattutto quando si cerca di fare una tabella larga quanto la colonna del testo. È però preferibile usare una variazione rispetto al valore di default piuttosto che specificare un valore assoluto:

\addtolength{\tabcolsep}{-0.5mm}

In questo modo verrà aggiunta una certa lunghezza a quella di default.

Tabelle mobili

Una tabella mobile invece si crea racchiudendo l'ambiente tabular o tabular* in un ambiente table o table*. L'ambiente table crea un oggetto flottante che però può essere largo al massimo quanto la colonna del testo. L'ambiente table* invece crea un oggetto mobile adatto per documenti a due colonne che può occupare la larghezza di tutte e due le colonne anziché una sola.

Il pacchetto booktabs

Tra i pacchetti quasi obbligatori c'è booktabs che migliora la spaziatura tra gli elementi di tabular e mette a disposizione, tra gli altri, i comandi \toprule, \midrule, \bottomrule che servono a sostituire il brutto comando \hrule (vedere documentazione di booktabs per ulteriori dettagli).

\toprule[width]
\midrule[width]
\bottomrule[width]

\cmidrule[width](trim){n-m}

\heavyrulewidth
\lightrulewidth

Esempi

\usepackage{booktabs}
...
\begin{table}
\caption{Questa è la didascalia.}
\label{tab:etichetta}
\small   % Comando per rimpicciolire tutto il testo della tabella
% \renewcommand\arraystretch{1.2}
% \addtolength{\tabcolsep}{-0.5mm}
\centering   % eventuale comando per centrare la tabella

\begin{tabular}{cc}
\toprule
primo numero & secondo numero \\
\midrule
1 & 2 \\
3 & 4 
\end{tabular}
\bottomrule
\end{figure}

Personalizzare lo stile delle didascalie

Usare il pacchetto caption.

Il pacchetto array

Il pacchetto array è utile in moltissime circostanze. Estende le funzionalità degli ambienti tabular e array. Definisce nuovi tipi di colonne: m e b. Inoltre definisce due specificatori particolari >{decl} e <{decl} che possono essere usati rispettivamente a sinistra e destra di uno specificatore di colonna e permettono di aggiungere parti di codice rispettivamente all'inizio e alla fine di ogni cella di quella colonna senza scrivere il codice a mano per tutte le celle. Infine migliora l'uso di |, per le linee verticali, e introduce il nuovo comando !{decl} che al posto di una linea verticale ripete decl.

Esistono poi il comando per definire nuovi tipi di colonna, per esempio:

\newcolumntype{C}{>{$}c<{$}}
\newcolumntype{L}{>{$}l<{$}}
\newcolumntype{R}{>{$}r<{$}}
\newcolumntype{e}{@{\extracolsep{\fill}}

Per allargare lo spazio tra le righe: \setlength{\extrarowheight}{1pt}

Righe nelle tabelle: \firsthline, \lasthline che sono regolate dallo spazio \extratabsurround. \setlength{\arrayrulewidth}{5pt} spessore righe.

Tabelle su più pagine

Il pacchetto longtable. L'altro pacchetto, xtab, è meglio lasciarlo perdere. Diffidate anche da tutti gli altri.

Il pacchetto tabularx

Questo pacchetto serve per specificare in maniera migliore rispetto a tabular* la larghezza di una tabella introducento il tipo di colonna X (come p ma senza specificare la larghezza). Solo le colonne di tipo X verranno allargate. Un altro uso è quello di avere alcune o tutte le colonne di una tabella della stessa larghezza. Se si definisce un nuovo tipo di colonna, usando X bisogna mettere anche il comando \arraybackslash.

\newcolumntype{U}{>{\centering\arraybackslash$}X<{$}}

Il pacchetto widetable

Come il pacchetto tabularx ma migliore. Realizzato da Claudio Beccari.

Il pacchetto rotating

Mette a disposizione l'ambiente sidewaystable che serve per ruotare le tabelle di 90° in una pagina nel caso la tabella sia troppo larga.

Mettere delle note nelle tabelle