12.07.2015 Views

TEX pour l'Impatient - Apprendre en ligne.net

TEX pour l'Impatient - Apprendre en ligne.net

TEX pour l'Impatient - Apprendre en ligne.net

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

24 Sep 2004 2:48 p.m.<strong>TEX</strong> <strong>pour</strong> l’Impati<strong>en</strong>t N o 311Faire des fichiers de macro plus lisibles 289alors le caractère slash devra avoir le même code de catégorie quandvous appelez \eurodate que quand vous avez défini \eurodate.Si le problème surgit parce que le caractère gênant est un argum<strong>en</strong>td’une macro, alors le remède usuel est de redéfinir la macro comme unepaire de macros \mstart et \mfinish, où \mstart doit être appeléeavant le texte d’argum<strong>en</strong>t et \mfinish doit être appelé après. \mstartalors initialise les codes de catégorie et \mfinish défait le changem<strong>en</strong>t,peut-être simplem<strong>en</strong>t <strong>en</strong> finissant un groupe.Faire des fichiers de macro plus lisiblesVous pouvez faire un fichier de macros plus lisible <strong>en</strong> mettant les codes decatégories de l’espace à 9 (caractère ignoré) et \<strong>en</strong>dlinechar (p. 260) à−1 au début du fichier. Vous <strong>pour</strong>rez alors utiliser des espaces et des finsde <strong>ligne</strong>s librem<strong>en</strong>t dans les définitions de macro sans obt<strong>en</strong>ir d’espacesindésirables quand vous appelez les macros. Les caractères ignorés negénèreront pas d’espaces, mais agiront <strong>en</strong>core comme terminateurs <strong>pour</strong>des séqu<strong>en</strong>ces de contrôle. Si vous voulez réellem<strong>en</strong>t un espace, vouspouvez <strong>en</strong>core l’obt<strong>en</strong>ir avec la commande \space (p. 111).Bi<strong>en</strong> sûr vous devrez restaurer les codes de catégories de l’espace etde la fin de <strong>ligne</strong> à leur valeur normale (10 et 5, respectivem<strong>en</strong>t) à lafin du fichier. Vous pouvez faire cela soit <strong>en</strong> <strong>en</strong>globant tout le fichierdans un groupe soit <strong>en</strong> restaurant les valeurs explicitem<strong>en</strong>t. Si vouschoisissez d’<strong>en</strong>glober le fichier dans un groupe, vous devrez alors aussimettre \globaldefs à 1 <strong>pour</strong> que toutes les définitions de macro soi<strong>en</strong>tglobales et donc visibles <strong>en</strong> dehors du groupe.Un exemple miniature d’un fichier de macro de cette forme est :\catcode ‘\ = 9 \<strong>en</strong>dlinechar = -1\def \makeblankbox #1 #2 {\hbox{\lower \dp0 \vbox{\hidehrule {#1} {#2}\kern -#1 % overlap rules\hbox to \wd0{\hidevrule {#1} {#2}%\raise \ht0 \vbox to #1{} % vrule height\lower \dp0 \vtop to #1{} % vrule depth\hfil \hidevrule {#2} {#1} }\kern -#1 \hidehrule {#2} {#1} } }\def\hidehrule #1 #2 {\kern -#1 \hrule height#1 depth#2 \kern -#2 }\def\hidevrule #1 #2 {\kern -#1 {\dim<strong>en</strong>0 = #1 \advance \dim<strong>en</strong>0 by #2\vrule width \dim<strong>en</strong>0 } \kern -#2 }

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!