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 97macro 75Une macro peut aussi avoir des “paramètres délimités”, qui peuv<strong>en</strong>têtre mélangés avec des non délimités dans toutes les combinaisons. L’idéed’un paramètre délimité est que <strong>TEX</strong> trouve l’argum<strong>en</strong>t correspondant<strong>en</strong> recherchant une certaine séqu<strong>en</strong>ce de tok<strong>en</strong>s qui marqu<strong>en</strong>t la fin del’argum<strong>en</strong>t—le délimiteur. Cela fait, quand <strong>TEX</strong> recherche un tel argum<strong>en</strong>t,il pr<strong>en</strong>d comme argum<strong>en</strong>t tout les tok<strong>en</strong>s à partir de la positioncourante de <strong>TEX</strong> mais sans inclure le délimiteur.Vous indiquez un paramètre délimité <strong>en</strong> écrivant ‘#n’ (n doit être <strong>en</strong>tre0 et 9) suivi par un ou plusieurs tok<strong>en</strong>s qui agiss<strong>en</strong>t comme le délimiteur.Le délimiteur s’ét<strong>en</strong>d jusqu’au prochain ‘#’ ou ‘{’—qui ont un s<strong>en</strong>s car ‘#’débute un autre paramètre et ‘{’ le texte de remplacem<strong>en</strong>t.Le délimiteur ne peut être ‘#’ ou ‘{’, donc vous pouvez appeler unparamètre délimité à partir d’un non délimité <strong>en</strong> recherchant ce qui le suit.Si le caractère après le paramètre est ‘#’ ou ‘{’, vous avez un paramètr<strong>en</strong>on délimité ; autrem<strong>en</strong>t il sera délimité. Notez la différ<strong>en</strong>ce dans les argum<strong>en</strong>ts<strong>pour</strong> les deux sortes de paramètres—un paramètre non délimitéest désigné soit par un simple tok<strong>en</strong>, soit par une séqu<strong>en</strong>ce de tok<strong>en</strong>s <strong>en</strong>globés<strong>en</strong>tre des accolades, tandis qu’un paramètre délimité est désignépar n’importe quel nombre de tok<strong>en</strong>s, même aucun.Un exemple de macro utilisant deux paramètres délimités est :\def\diet#1 #2.{On #1 we eat #2!}Ici le premier paramètre est délimité par un simple espace et le secondparamètre est délimité par un point. Si vous saisissez :\diet Tuesday turnips.vous obti<strong>en</strong>drez le texte “On Tuesday we eat turnips!”. Mais si les tok<strong>en</strong>sdélimitants sont <strong>en</strong>globés dans un groupe, <strong>TEX</strong> ne les considère pasdélimités. Donc si vous écrivez :\diet {Sunday mornings} pancakes.vous obti<strong>en</strong>drez le texte ‘On Sunday mornings we eat pancakes!’ mêmes’il y a un espace <strong>en</strong>tre ‘Sunday’ et ‘morning’. Quand vous utilisez unespace comme délimiteur, un caractère fin de <strong>ligne</strong> délimite aussi normalem<strong>en</strong>tl’argum<strong>en</strong>t car <strong>TEX</strong> convertit la fin de <strong>ligne</strong> <strong>en</strong> espace avant quele mécanisme de macro ne le voit.Il arrivera que vous ayez à définir une macro qui ait ‘#’ comme caractèresignificatif. Vous aurez plus de chance d’avoir besoin de faire celaquand vous définirez une macro qui à son tour définit une seconde macro.Comm<strong>en</strong>t faire à propos des paramètres de la seconde macro sans mettre<strong>TEX</strong> dans la confusion ? La réponse est que vous saisissez deux ‘#’ <strong>pour</strong>chacun de ceux que vous voulez quand la première macro est développée.Par exemple, supposons que vous écriviez la définition de macro :\def\first#1{\def\second##1{#1/##1}}Alors l’appel ‘\first{One}’ défini ‘\second’ comme :\def\second#1{One/#1}

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

Saved successfully!

Ooh no, something went wrong!