Comment TeX développe t’il \uppercase ?
L’exemple ci-dessous peut être utilisé pour essayer de tester sa
compréhension. Vous trouverez ensuite la retranscription d’une session
TeX en ligne de commande, laquelle vient contredire ce que je pensais.
#+BEGIN_EXAMPLE
\catcode@=11 \uccode1=i \uccode2=`z
\uppercase{\gdef\on@12{ab}}
#+END_SRC
Il me semblait que TeX aurait défini une macro nommée \on@iz, étant donné
que les unités lexicales i et z ont le code de catégorie 11 (lettre).
Selon moi, \uppercase aurait reçu la liste d’unités lexicales
suivante : ‘\gdef’, ‘\on@’, ‘1’, ‘2’, ‘{’, ‘a’, ‘b’, ‘}’. Après
conversion, on aurait obtenu la liste suivante : ‘\gdef’, ‘\on@iz’, ‘{’,
‘A’, ‘B’, ‘}’. Enfin, TeX aurait développé la séquence
‘\gdef\on@iz{AB}’, ce qui aurait équivalu à définir une macro \on@iz.
Cependant, je me suis aperçu que ce n’était pas ça.
#+BEGIN_EXAMPLE
$ tex
- This is TeX, Version 3.14159265 (TeX Live 2020) (preloaded format=tex)
**\catcode`@=11
*\uccode1=i \uccode2=z
*\show\on@
\on@=undefined
<*> \show\on@
?
*\uppercase{\gdef\on@12{ab}}
*\show\on@
\on@=macro:
iz->AB.
<*> \show\on@
?
! Emergency stop
<*> \show\on@
No pages of output.
Transcript written on texput.log.
$
#+END_EXAMPLE
Cet exemple montre bien qu’on a défini une macro nommée \on@ et que
cette macro est délimitée avec les unités lexicales i et z.
Cordialement,
Kevin Vigouroux