Tabelle e immagini sono il punto in cui molti abbandonano LaTeX, di solito per due ragioni: la sintassi delle tabelle sembra ostile e le figure «scappano» in un'altra pagina. Entrambe le cose hanno una spiegazione e una soluzione. Capito il meccanismo, LaTeX produce tabelle più pulite di quasi qualsiasi programma di videoscrittura.
Inserire un'immagine
Serve il pacchetto graphicx nel preambolo. Il comando base è:
\includegraphics[width=0.8\textwidth]{img/schema-rete.pdf}
width=0.8\textwidthimposta la larghezza all'80% della giustezza del testo: meglio delle misure assolute, perché si adatta se cambiate i margini.- I formati accettati con pdfLaTeX sono PDF, PNG e JPG. Per schemi e grafici preferite il PDF vettoriale, che resta nitido a qualsiasi ingrandimento; PNG per catture dello schermo; JPG per fotografie.
- Evitate spazi e caratteri accentati nei nomi dei file: sono una causa frequente di errori misteriosi.
Gli ambienti float
Un'immagine inserita così sta esattamente dove la scrivete. Il problema è che, se non c'è spazio in fondo alla pagina, lascia un buco bianco. Per questo LaTeX offre gli ambienti float (fluttuanti) figure e table, che possono spostarsi nel punto tipograficamente migliore:
\begin{figure}[htbp]
\centering
\includegraphics[width=0.7\textwidth]{img/schema-rete.pdf}
\caption{Schema della rete dell'ufficio.}
\label{fig:rete}
\end{figure}
Le lettere tra quadre indicano le posizioni consentite: h qui, t in cima a una pagina, b in fondo, p in una pagina di sole figure. Dare più opzioni lascia a LaTeX libertà di trovare una buona soluzione. Usare solo [h] è il modo più rapido per ritrovarsi con tutte le figure accumulate in fondo al capitolo.
Riferimenti invece di «qui sotto»
Il fatto che le figure si spostino è il motivo per cui nel testo non si scrive «la figura qui sotto», ma:
Come mostra la figura~\ref{fig:rete}, il firewall separa le due reti.
Il numero viene assegnato e aggiornato in automatico. Con il pacchetto hyperref il riferimento diventa anche cliccabile nel PDF. Mettete sempre \label dopo \caption, altrimenti il riferimento punterà al numero sbagliato.
La sintassi delle tabelle
Il contenuto di una tabella sta nell'ambiente tabular. La specifica delle colonne dice quante sono e come sono allineate:
\begin{tabular}{l c r}
Servizio & Porta & Utenti \\
Posta & 993 & 42 \\
Web & 443 & 120 \\
\end{tabular}
l,c,rallineano a sinistra, al centro, a destra.&separa le celle,\\chiude la riga.p{4cm}crea una colonna di larghezza fissa in cui il testo va a capo: utile per descrizioni lunghe.
Tabelle professionali con booktabs
Le tabelle con griglia completa, linee verticali e doppie orizzontali, sono difficili da leggere. Il pacchetto booktabs propone un approccio più pulito: solo tre linee orizzontali di spessore diverso e nessuna verticale.
\begin{table}[htbp]
\centering
\caption{Servizi esposti e utenti attivi.}
\label{tab:servizi}
\begin{tabular}{l c r}
\toprule
Servizio & Porta & Utenti \\
\midrule
Posta & 993 & 42 \\
Web & 443 & 120 \\
\bottomrule
\end{tabular}
\end{table}
Per le tabelle, la convenzione diffusa è mettere la didascalia sopra, mentre per le figure va sotto. Allineate i numeri a destra, o sulla virgola decimale con il pacchetto siunitx, in modo che le cifre si confrontino a colpo d'occhio.
Problemi tipici e soluzioni
| Problema | Causa probabile | Soluzione |
|---|---|---|
| La figura finisce alla fine del capitolo | Solo [h] o figure troppo grandi |
Usare [htbp] e ridurre le dimensioni |
| La tabella esce dal margine | Colonne con testo lungo | Colonne p{} o pacchetto tabularx |
| Tabella più lunga di una pagina | tabular non si spezza |
Pacchetto longtable |
| Riferimento con «??» | Manca una seconda compilazione | Ricompilare o usare latexmk |
| Numero sbagliato nel riferimento | \label prima di \caption |
Spostare \label dopo |
Un consiglio pratico
Scrivere a mano tabelle grandi è noioso. Esistono generatori che convertono un foglio di calcolo in codice tabular, e Pandoc converte tabelle Markdown in LaTeX. Per i dati che cambiano spesso, è ancora meglio tenerli in un file CSV e importarlo con pacchetti come csvsimple: così la tabella si aggiorna da sola.
In sintesi
graphicxe\includegraphicsinseriscono immagini; meglio PDF vettoriali per gli schemi.figureetablesono float: si spostano per evitare buchi nella pagina.- Si citano con
\refe\label, mettendo\labeldopo\caption. booktabsproduce tabelle pulite con tre linee orizzontali e nessuna verticale.tabularx,longtableesiunitxrisolvono larghezza, lunghezza e allineamento dei numeri.