Re: Errori nel compilare una longtable

#55351
Up
0
Down
::

Risolto il problema, ne pongo un altro.

Caricare o meno booktabs (per avere i filetti ben composti) influenza la scrittura dei “preliminari” nel codice di una longtable. In particolare:

1. caricandolo, bisogna sempre mettere \\ tra intestazioni/piedi e i comandi specifici che li terminano (\endfirsthead, \endhead, \endfoot e \endlastfoot);

Non mi pare che tu lo faccia, nell’esempio. I fine riga \\ servono perché vuoi un filetto.

2. non caricandolo, i vari \\ si possono omettere tranne che dopo un’intestazione normale strutturata come nel nostro esempio; oppure si possono anche lasciare dappertutto, che male non fanno;

3. sembra che dopo \caption (o \label) \\ ci vada in ogni caso;

No, se vuoi che la didascalia si ripeta. Nel tuo esempio la didascalia fa parte del “firsthead” che è composto da didascalia, filetto \toprule, riga di intestazione e filetto \midrule.

4. è vero anche che booktabs non è obbligatorio in una longtable, ma lo si potrebbe voler caricare almeno per uniformità con le rimanenti tabelle del documento;

Si veda alla voce “Jacques II de Chabannes, dit Jacques de La Palice”. 🙂

5. inutile arroccarsi su certe posizioni: anche i detrattori più sfegatati hanno dovuto mettere una tabella lunga almeno una volta nella vita. 😉

Detto questo, dovendo proporre il codice di una long table completo di ogni sua parte in modo che chi non vuole booktabs possa semplicemente commentare la riga di chiamata del pacchetto e i comandi dei filetti, proporremmo il codice seguente (scelte di codifica a parte):

`% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = pdflatex

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}

\usepackage{longtable}
\usepackage{booktabs}

\begin{document}
\begin{longtable}{ll}

% didascalia ed etichetta
\caption{Un esempio di tabella ripartita su più pagine.}
\label{tab:longtable} \\

% intestazione iniziale
\toprule
Comando & Effetto \\
\midrule
\endfirsthead

% intestazione normale
\multicolumn{2}{l}{\footnotesize\itshape\tablename~\thetable:
continua dalla pagina precedente} \\
\toprule
Comando & Effetto \\
\midrule
\endhead

% piede normale
%\midrule
\multicolumn{2}{r}{\footnotesize\itshape\tablename~\thetable:
continua nella prossima pagina} \\
\endfoot

% piede finale
%\bottomrule
\multicolumn{2}{r}{\footnotesize\itshape\tablename~\thetable:
si conclude dalla pagina precedente} \\
\endlastfoot

% corpo della tabella
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
a & a \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
b & b \\
c & c \\
c & c \\
c & c \\
c & c \\
c & c \\
c & c \\
c & c \\
c & c \\
\end{longtable}
\end{document}`

Che dite? Dove sbagliamo?

Ciao
Tommaso

Nel non prevedere che la didascalia possa essere ripetuta. Dipende non solo dai gusti, ma anche dalla tabella. Proprio il tuo esempio è di una tabella che dovrebbe avere la ripetizione della didascalia e non i “continua” e “si conclude”, perché noterai che queste scritte sono più lunghe della larghezza naturale del corpo della tabella e, come sempre succede in questi casi, quello che avanza va a finire nell’ultima colonna. Horribile visu oppure horresco videns, a scelta. 🙂

La cosa importante è consigliare di usare longtable solo se non se ne può fare a meno: spesso una tabella “lunga” si può risparmiare a favore di una lista, quasi certamente se ci sono solo due colonne.

Ciao
Enrico

Go to top