antonio.macrì” post=67762Grazie.
Non mi era chiaro perché si potesse fare
`\@ifnextchar\par{…}{…}
`dato che \par non è un carattere (e nemmeno la sua espansione). Mi sono rifatto ai tuoi Appunti (pagine 74-75, per chi ne fosse interessato) e ho risolto. 😉A proposito: dov’è definito \par?
Mi rimane una curiosità: perché hanno scelto come nome \@ifnextchar? Magari è vero che l’uso più diffuso è
`\@ifnextchar[{…}{…}
`(per quello che ho visto io), ma con quel nome non ho mai pensato di sfidare la sorte e provare con un token complesso invece di un carattere!
In effetti il nome può ingannare, ma l’uso principale è proprio per definire i comandi con argomento opzionale o con la variante * oppure quelli dell’ambiente picture che vogliono la parentesi tonda.
\par è una primitiva di TeX che però ha un aspetto molto particolare: una coppia di “newline” consecutivi viene sostituita dal token “\par”, così come questo viene inserito automaticamente quando TeX trova un “comando verticale” come \vskip. Non viene inserito il significato primitivo di \par, ma proprio il token che ha quel nome. Per esempio
`\let\par\undefined`
seguito da una riga vuota produce un messaggio di errore. Naturalmente questa è una ridefinizione piuttosto sciocca, ma la peculiarità permette di ridefinire \par in modo che faccia quello che ci serve in alcune situazioni.
Ciao
Enrico