Re: Una tabella con nota (pacchetto ctable)

#21667
Up
0
Down
::

È ovvio che quel codice può essere migliorato. Per un paio di tabelle è più che sufficiente, direi. Mica vorrai la pappa pronta ogni volta! 😉

Ehi, in fondo sono un gran pigrone… 😳 😥

Quanto a ctable, perché non provi a leggere la documentazione? Non è proprio il meglio che offre il panorama, ma certe cose si riescono a capire.

La studierò senz’altro. L’ho trovata davvero difficile: fa degli esempi molto complicati (forse anche inutilmente), mancano degli esempi semplici semplici con i quali farsi un’idea…

L’ho trovata anch’io illeggibile. Il fatto poi che con un esempio minimo come il tuo (corretto) venga ogni volta emesso un avviso, mi lascia perplesso.

Ogni comando che prenda come argomento il contenuto di un ambiente come tabular non mi convince. Sulle note nelle tabelle non sarei drastico: a volte una nota può anche andare al piede della tabella invece che nella didascalia; dipende da molti fattori. Se non c’è la didascalia, per esempio?

Per tornare al problema, definire un comando che metta automaticamente l’esponente non dovrebbe essere difficile; in ctable occorre comunque indicare in \tnote l’esponente. Si può anche evitare di indicare il numero di colonne, usando una box di ampiezza zero.
`\makeatletter
\newcounter{table@note}
\renewcommand{\thetable@note}{%
\textsuperscript{\normalfont\itshape\alph{table@note}}}
\newcommand{\tmark}[1]{\refstepcounter{table@note}\label{tn@@#1}\thetable@note}
\newcommand{\tnote}[2]{\multicolumn{1}{l}
{\rlap{\footnotesize\ref{tn@@#1}\ #2\hss}}}
\makeatother`
A \tmark si dà come argomento un’etichetta (come se fosse un \label} che verrà poi data come primo argomento di \tnote; il secondo argomento di \tnote è il testo della nota.
`\begin{tabular}{ll}
\toprule
abcd\tnote{prima} & efgh\tnote{seconda}\\
\bottomrule
\tnote{prima}{Ciao}\\
\tnote{seconda}{Wow}
\end{tabular}`
L’ovvia limitazione è che il testo della nota non può essere più lungo della larghezza della tabella. Più che sufficiente per semplici applicazioni.

È più interessante analizzare alcune sottigliezze: \refstepcounter agisce sempre globalmente, quindi il valore del contatore table@note è corretto anche con una seconda nota; ricordo che una cella di tabella è in un gruppo implicito e le assegnazioni non globali spariscono.

L’altra curiosità è su \rlap{} che equivale a \hbox to 0pt{\hss}: si costruisce una \hbox che non occupa alcuno spazio orizzontale, e \hss fornisce la “glue” necessaria per evitare un overfull. Meglio non scrivere \rlap{ABC}D, se non si sa che cosa si sta facendo; nel nostro caso, dopo \rlap{…} non andrà nulla.

Ciao
Enrico

Go to top