Re: Argomenti delimitati: lettura di un solo carattere

#42633
Up
0
Down
::

Del resto se TeX non si fermasse ad un solo token (salvo parentesi graffe), non saprebbe quando fermarsi a leggere l’argomento.

D’altra parte, però, l’uso di argomenti delimitati è indispensabile per certe applicazioni, magari insieme ad argomenti non delimitati:
`\def\@car#1#2\@nil{#1}`
permette di estrarre il primo token di una stringa di token che passiamo come “argomento” a \@car: con
`\def\stampaprimo#1{\@car#1\@nil}`
(con le precauzioni solite per @), \stampaprimo stampa il primo carattere del suo argomento. Per esempio \stampaprimo{pippo} stampa la “p”. Nota come nel testo della definizione, #1 è “nudo” e così può essere visto come sequenza di token.

Un argomento delimitato può facilmente essere vuoto: sarebbe il caso di \stampaprimo{A} che, con l’espansione, diventa \@car A\@nil, così che #1 è “A”, mentre #2 è vuoto. Per passare un argomento non delimitato vuoto occorre scrivere una coppia di graffe {}.

Capisco anche perché al comando \newcommand è possibile specificare il senza parentesi graffe
esempio:`\newcommand\mycmd[1]{something with #1})`
Immagino che se non metto le parentesi graffe a circondare un argomento con un solo token, TeX svolga il suo lavoro più velocemente, anche se la sintassi del linguaggio in questo caso produce qualche tipo di incoerenza (la regola “delimitare un argomento obbligatorio con le graffe” può essere disattesa):
`\newcommand{\mycmd}[1]{something with #1}
\newcommand\mycmd[1]{something with #1}`

Anche \frac12 funziona, ma non è consigliabile al principiante.

Curiosità: $a^\frac{1}{2}$ funziona, ma non funziona $a^\cong$. Esercizio per l’incauto lettore. 🙂

Ciao
Enrico

Go to top