Grazie della spiegazione.
Sei stato chiarissimo ma voglio essere ancora più esplicito.
Dimmi se il discorso fila. Indico con “>” il punto da cui bisogna espandere e separo con “|” ciò che è stato già tokenizzato dai dati grezzi presenti nell’input buffer.
Dovrebbe aversi:
`
> | \expandafter\def\expandafter\cleardoublepage\expandafter{\expandafter\if@openright\cleardoublepage\else\clearpage\fi}
> \expandafter | \def\expandafter\cleardoublepage\expandafter{\expandafter\if@openright\cleardoublepage\else\clearpage\fi}
> \expandafter\def\expandafter | \cleardoublepage\expandafter{\expandafter\if@openright\cleardoublepage\else\clearpage\fi}
\def> \expandafter | \cleardoublepage\expandafter{\expandafter\if@openright\cleardoublepage\else\clearpage\fi}
\def> \expandafter\cleardoublepage\expandafter | {\expandafter\if@openright\cleardoublepage\else\clearpage\fi}
\def\cleardoublepage> \expandafter | {\expandafter\if@openright\cleardoublepage\else\clearpage\fi}
\def\cleardoublepage> \expandafter{\expandafter | \if@openright\cleardoublepage\else\clearpage\fi}
\def\cleardoublepage{> \expandafter | \if@openright\cleardoublepage\else\clearpage\fi}
\def\cleardoublepage{> \expandafter\if@openright\cleardoublepage | \else\clearpage\fi}
\def\cleardoublepage{\if@openright> \cleardoublepage | \else\clearpage\fi}
\def\cleardoublepage{\if@openright> [espansione di \cleardoublepage] | \else\clearpage\fi}\altri\comandi
`
in cui (più o meno) alternativamente legge dall’input buffer e espande un token.
A ogni passo, la “main token list” va dall’inizio della riga fino al “|”.
Questo è il nodo: dopo aver espanso \cleardoublepage e letto gli altri dati necessari dall’input buffer, può finire (diciamo così) un “ciclo di elaborazione”, nel senso che nella lista dei token ha tutto quello che gli serve per elaborarla. Quindi esegue il \def e dopo averlo fatto svuota la token list:
`
>|\altri\comandi
`
e si riparte.
Grazie di nuovo delle spiegazioni.
Spero che Elrond non me ne voglia per avergli invaso la discussione. 🙂
Ciao,
Antonio