1) le classi originarie sono state scritte inizialmente per gli americani che mettono la didascalia sotto alle tabelle come anche sotto alle figure (vedi anche Introduzione).
Ok, buono a sapersi.
2) per motivi di retrocompatibilità il LaTeX3 Team si rifiuta di modificare le classi standard; si rifiuta anche di correggere gli errori plateali come quello dell’ambiente eqnarray, oltre a quello della didascalia solamente inferiore.
E va bene: nessuno tocchi “article” e “book”. Però sarebbe ora di scrivere nuove classi prive di quei difetti. Ho appena controllato, il problema si presenta anche con le classi AMS, e anzi lì è ancora più grave:
`\documentclass{amsart}
\usepackage{booktabs}
%\usepackage{caption}
\begin{document}
\begin{table}[tp]
\caption{Didascalia.}
\centering
\begin{tabular}{ll}
\toprule
Alcaloide & Origine \\
\midrule
atropina & belladonna \\
chinina & china \\
morfina & papavero \\
nicotina & tabacco \\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[tp]
\caption{Didascalia.}
\vspace{-\bigskipamount}
\[
\begin{array}{ll}
\toprule
f(x) & f’(x) \\
\midrule
k & 0 \\
x^n & nx^{n-1} \\
e^x & e^x \\
\sin x & \cos x \\
\bottomrule
\end{array}
\]
\end{table}
\end{document}`
Tuttavia, se non altro lì basta caricare caption e si è a posto sia con tabular che con array. ma questa non è vita.
3) l’array va introdotto in ambiente matematico e \[…\] introduce gli spazi mancanti; per altro l’ambiente table non viene quasi mai usato per introdurre array […].
in realtà, le tabelle matematiche (con didascalia) si usano spesso, nei documenti scientifici. Ho sotto mano la Garzantina delle Scienze (un solo libro): sono un centinaio.
Per scrivere una tabella matematica il modo più naturale è usare l’ambiente array (che è uno standard di LaTeX). Certo, si può sempre usare tabular con colonne ad hoc definite con \newcolumntype, ma è un giro più difficile e meno “naturale”.
4) In realtà esistono già altre classi che realizzano quello che Lorenzo vorrebbe: le quattro classi della collezione KOMAscript, scrbook, scrreprt, scrartcl, scrlttr2; sono scritte da un europeo dove le convenzioni tipografiche statunitensi vengono “corrette” per venire incontro alle nostre esigenze. C’è anche la classe memoir, che fa di tutto, anche quella di mettere la didascalia sopra alle tabelle e sotto alale figure; magari richiede qualche setting iniziale, ma quando uno ha un piccolo file con i setting che preferisce, legge sempre quello e il gioco è fatto.
Molto bene. In realtà, ho provato il codice precedente con
`\documentclass{scrreprt} `
ma trovo lo spazio (uguale nei due casi, se non altro) davvero troppo risicato.
Per altro sono d’accordo con Lorenzo: è mai possibile che a 16 anni dal “defungimento” di LaTeX209, di default \caption lavori ancora come 26 anni fa?
Sono contento per averci preso. Ma scontento per LaTeX: i suoi sviluppatori son troppo conservatori, per me. 👿
In conclusione, se si usano le classi standard e si vuole mettere un array dentro a table, bisogna spaziarlo a mano ogni volta. 🙁 Provo a scrivere all’autore di caption, magari ci mette una pezza.
Grazie mille,
L.