Esercizio: perché ho usato \z@skip e \p@?
Ora non posso provare, perché non ho una distribuzione sotto mano.
Ma non era uguale scrivere 0pt e 10pt seguiti da \relax, come hai fatto dopo?
oppure sotto edef non funge?
Sarebbe stato quasi lo stesso; ma fra “\z@skip” e “0pt plus 0pt minus 0pt” c’è una differenza di 21 token.
Che differenza c’è tra \def, \gdef \edef, \long\def…non so se ce ne sono altri
Qui ci vorrebbe una lunga discussione. Una definizione è della forma
`
La differenza sostanziale fra \def e \edef è che il
`\def\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
L’alternativa
`\edef\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
\table}`
non avrebbe funzionato, perché l’espansione di \table richiede la ricerca di argomenti che non verrebbero trovati. Nel modo indiretto che ho usato, si ottiene solo il contenuto della lista di token \toks@ che è l’espansione “di primo livello” di \table.
È ovvio poi che \def\table{…\table} non può funzionare. Ma nemmeno \def\table{…\the\toks@}, perché nel momento in cui usiamo \table potremmo non avere più la lista giusta nel parametro \toks@. Occorrerebbe destinare un registro \toks a questo scopo: inutile spreco.
Il
Le definizioni di LaTeX con \newcommand sono tutte \long; quelle con \newcommand* no.
Ciao
Enrico