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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

24 Sep 2004 2:48 p.m.<strong>TEX</strong> <strong>pour</strong> l’Impati<strong>en</strong>t N o 310288 Trucs et astuces \ §10externes parce qu’elles n’ont pas de raison d’être utilisées dans cescontextes et qu’un tel usage est probablem<strong>en</strong>t une erreur. Le seul moy<strong>en</strong>de contourner ce problème est de redéfinir la macro ou de déplacer sonutilisation dans un contexte acceptable.Utiliser une macro externe dans un contexte impropre peut aussi provoquerque <strong>TEX</strong> se plaigne d’un “runaway situation” ou d’un “incompleteconditional”. Le problème peut être difficile à diagnostiquer parce quele message d’erreur ne donne aucun indice ni ce qui se passe. Si vousobt<strong>en</strong>ez un tel message d’erreur, recherchez autour un appel à une macroexterne. Vous ne pouvez pas toujours savoir si une macro particulière estexterne, mais la commande ‘\show\a’ (p. 261) vous montrera la définitionde \a et vous dira aussi si \a est externe.Changer des codes de catégorieIl est parfois pratique de faire des changem<strong>en</strong>ts locaux au code decatégorie d’un caractère à une certaine partie de votre docum<strong>en</strong>t. Parexemple, vous devez composer un programme informatique ou quelquechose d’autre qui utilise normalem<strong>en</strong>t des caractères actifs <strong>pour</strong> un usagespécial. Vous voudrez alors désactiver ces caractères <strong>pour</strong> que <strong>TEX</strong> lestraite comme tout autre caractère.Si vous faites un tel changem<strong>en</strong>t local au code de catégorie d’uncaractère, vous serez parfois consterné de trouver que <strong>TEX</strong> semble neprêter aucune att<strong>en</strong>tion quelconque a votre changem<strong>en</strong>t. Deux aspectsdu comportem<strong>en</strong>t de <strong>TEX</strong> sont vraisemblablem<strong>en</strong>t <strong>en</strong> cause :1) <strong>TEX</strong> détermine le code de catégorie d’un caractère <strong>en</strong>trée et l’attacheau caractère quand il le lit. Supposons que vous lisiez un tilde (~) etqu’<strong>en</strong>suite vous changiez le code de catégorie des tildes, mais fassiezle changem<strong>en</strong>t avant que l’estomac de <strong>TEX</strong> ait réellem<strong>en</strong>t exécutéde tilde particulier (voir “Anatomie de <strong>TEX</strong>”, p. 48). <strong>TEX</strong> répondra<strong>en</strong>core que ce tilde utilise le code de catégorie comme il était avantle changem<strong>en</strong>t. Cette difficulté survi<strong>en</strong>t typiquem<strong>en</strong>t quand le tildefait partie d’un argum<strong>en</strong>t d’une macro et que la macro elle-mêmechange le code de catégorie du tilde.2) Quand <strong>TEX</strong> assortit un appel d’une macro à la définition de cettemacro, il n’assortit pas seulem<strong>en</strong>t les caractères du modèle deparamètre mais aussi leurs codes de catégorie. Si le code de catégoried’un modèle caractère n’est pas égal au code de catégorie du mêmecaractère dans l’appel, <strong>TEX</strong> ne considèrera pas les caractères commeconcordants. Cet effet peut produire de mystérieux résultats parceque il fait comme si le modèle concorde. Par exemple, si vous avezdéfini une macro :\def\eurodate#1/#2/#3{#2.#1.#3}

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

Saved successfully!

Ooh no, something went wrong!