Re: disporre tabella in orizzontale splittata su più fogli

#8573
Up
0
Down
::

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
`{}`
può essere \def, \gdef, \edef oppure \xdef; \gdef e \xdef sono uguali a \def e \edef, rispettivamente, ma il viene definito globalmente.

La differenza sostanziale fra \def e \edef è che il , nel secondo caso, viene espanso. Ovviamente non vengono eseguiti i comandi inespandibili, ma solo eseguita l’espansione: quindi la definizione data è equivalente a
`\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 è una qualunque combinazione di \long, \outer e \global; lasciamo perdere \outer; \global dice che la definizione è globale e non vale solo nel gruppo in cui è data. Con \long ammettiamo che negli argomenti del comando ci possa essere il token \par.

Le definizioni di LaTeX con \newcommand sono tutte \long; quelle con \newcommand* no.

Ciao
Enrico

Go to top