Ragazzi, il pacchetto caption risolverà le cose come si deve, ma la definizione delle classi standard prevede di usare \abovecaptionskip sopra la didascalia e \belowcaptionskip sotto alla didascalia:
`
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
`
Come vedete le impostazioni riflettono esattamente quello di cui Lorenzo si lamenta. Il codice per scrivere la didascalia, un codice interno, prevede entrambi gli avanzamenti:
`
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{#1: #2}%
\ifdim \wd\@tempboxa >\hsize
#1: #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
`
per cui un semplice comando del tipo:
`
\newcommand*\fixtablecaptionskips{\abovecaptionskip=0pt\relax\belowcaptionskip=10pt}
`
messo prima della didascalia delle tabelle risolve il problema; naturalmente invece di 10pt si può mettere qualunque altro valore, come per esempio \medskipamount: per esempio:
[code]
…
\newcommand*\fixtablecaptionskips{\abovecaptionskip=0pt\relax\belowcaptionskip=\medskipamount}
\begin{document}
…
\begin{table}
\fixtablecaptionslkip
\caption{Diddascalia}
…
\end{table}
viene benissimo senza bisogno di invocare nessun pacchetto, se non per fare le cose che si desiderano veramente fare con il pacchetto caption.
Certo si potrebbero invocare pacchetti come etoolbox ed eseguire i test necessari per sapere se gli skip sono da aggiustare o non ne necessitano, e si possono fare cose avanzatissime, ma quel semplice comando ripara un presunto difetto di LaTeX, che è stato scritto in America inizialmente per gli americani e non ha mai avuto modificazioni sostanziali dai tempi di LaTeX209 (no, certo, le modificazioni ci sono state, ma un motorino da Fiat 500 è stato cambiato in un motore da Ferrari) però per motivi di compatibilità con i vecchi documenti non è stato corretto né questo punto, né l’ambiente eqnarray con le sue spaziature sbagliate per davvero.
Notare che per rendere “universale” il comando \caption basterebbero piccole modifiche al comando di ogni classe standard e non standard, sempre pensate per gli americani; basta un test per l’ “European style” e una impostazione degli skip del tipo di \fixtablecaptionskips, solo in ambiente table nel comando \@makecaption. Si tratta di poche righe di codice che riparano permanentemente il presunto errore mantenendo la compatibilità con il passato, se il test per l’ “European style” è falso. Ma so che a Lorenzo questi aggiustamenti del codice non piacciono, quindi \fixtablecaptionskips è l’unica possibilità.