2 Dicembre 2012 alle 13:58
#81131
::
Sam Qasbah” post=80359Un dubbio di teoria: come mai è possibile scrivere
` \write0{\def\string\something …`
invece di
`\write0{\noexpand\def\string\something …`
?Non ho trovato una simile possibilità nè nel TTB nè nell’Advanced TeXbook.
[tt]\def[/tt] non è espandibile. L’istruzione [tt]\write[/tt] funziona come [tt]\edef[/tt], cioè espande tutto ciò che è espandibile, fino a quando rimangono solo token non espandibili che non vengono toccati. Quando un token è preceduto da [tt]\noexpand[/tt] funziona esattamente allo stesso modo: l’espansione di [tt]\noexpand[/tt] assorbe il token successivo che viene rimesso nell’input ma reso non espandibile. Perciò [tt]\noexpand\def[/tt] fa solo un po’ di lavoro per niente.
Ciao
Enrico