Le 25/04/2012 09:58, projetmbc a écrit :
>> Que signifie ce code ^^M ?
>
> Le "est-ce une code ASCII ?" est en trop !!!
À part le « une » à la place du « un » c'est pourtant pile poil cela.
La notation ^^ est expliquée dans plusieurs ouvrages (dont le
TeXbook). Le principe est de prendre le code du caractère qui suit et,
si celui-ci a lui-même un code entre 64 et 127, d'enlever 64. C'est
parti : code (ASCII) de M = 77 donc code de ^^M = 77 - 64 = 13. ^^M
correspond donc à ce que le code ASCII nomme CR.
Parmi les codes utiles, on a également ^^J qui indique le code 10
(caractère utilisé pour passer à la ligne au niveau des consoles). Par
exemple :
\message{^^JJe fais^^Jmumuse avec^^Jles codes ASCII^^J^^J}
On a également ^^I pour détecter un caractère TAB (en mode verbatim
sinon TeX le transforme en espace en première lecture. Peut-être ^^@
pour le code 0.
Si le code du caractère qui suit ^^ est situé entre 0 et 63, c'est le
contraire, TeX ajoute 64 au code. Par exemple ^^? est le caractère de
code 127 (normalement interdit).
À part les exemples ^^M et ^^J, utiles en soit, cette notation peut
servir à indiquer un caractère qui n'a pas de code ASCII visualisable.
Dans le TeXbook, le caractère virage dangereux était en position 127
dans la fonte manfnt. On peut le saisir avec un truc du genre
{\accesmanfnt ^^?} (en ayant changé le code de catégorie de ce
caractère). Cela dit, c'est un peu s'emmerder pour rien parce qu'ici,
\char127 fonctionnerait aussi bien.
En revanche, \message{\char10 coucou} va lamentablement merder. Je ne
rentre pas dans tous les détails techniques mais on peut plus facilement
comprendre que \def\char65bc{...} n'est pas du tout l'équivalent de
\def\Abc{...} même si \char65 correspond au « A ». Cela ne fonctionne
que pour afficher un caractère, pas pour utiliser une lettre dans un
syntaxe TeXienne. Inversement, les ^^ sont traités comme s'ils étaient
un seul caractère. Voir le paragraphe suivant.
Il y a enfin une dernière convention concernant la notation ^^. Si
les deux caractères qui suivent sont des chiffres hexadécimaux bas de
casse (de 0 à 9 et de a à f), TeX le traduit en une lettre de code
correspondant. Là, on a vraiment une lettre. Par exemple
\def\^^61^^62^^63{Hello}
définit vraiment la macro \abc et on peut vraiment l'utiliser soit sous
la forme \abc, soit sous la forme \^^61^^62^^63 (soit un mélange). Cela
peut servir si une touche du clavier (autre que 0-9 a-f) est cassée :-)
Jean-Côme Charpentier
--
Vous êtes incroyables !
On vous demande un truc et dans le quart d'heure vous apportez la solution.
-+- Sisyphe in fr.comp.text.tex -+-