ma lo spazio tra didiscalia e tabella non si puó impostare direttamente tra le opzioni del pacchetto?
Metti questo nel preambolo:
`\makeatletter
\toks@=\expandafter{\table}
\edef\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
\the\toks@}
\makeatother`
Come funziona? Nelle classi normali (article, report e book), si prevede che la didascalia stia sotto anche alle tabelle, che non è spesso la pratica usuale.
Perciò occorre un modo per cambiare la scelta dei parametri di spaziatura prima e dopo la didascalia, che sono 10pt e 0pt, rispettivamente.
Lo faccio però solo per le tavole fuori testo (ambiente table): nel parametro di tipo token \toks@ metto l’espansione di \table; poi eseguo una definizione con espansione di \table. In realtà l’unica cosa che viene espansa è il \the (gli altri comandi che compaiono non sono espandibili); l’espansione di \the, in questo caso, è il contenuto del parametro \toks@.
In questo modo ho ottenuto che la nuova definizione di \table coincide con la precedente, ma preceduta dall’assegnazione di nuovi valori ai parametri di spaziatura. Un modo del tutto equivalente sarebbe di scrivere
`\def\table{%
\abovecaptionskip\z@skip \belowcaptionskip 10\p@\relax
\@float{table}}`
perché \table è definito come “\@float{table}”. Il vantaggio dell’approccio seguito prima è che non è affatto necessario conoscere la definizione di \table.
Un altro modo sarebbe di scrivere
`\let\origtable\table
\def\table{%
\abovecaptionskip 0pt\relax
\belowcaptionskip 10ptrelax
\origtable}`
ma con \expandafter e \the è più bello (e non si spreca un comando). 😀
Esercizio: perché ho usato \z@skip e \p@?
Ciao
Enrico