Page 1 sur 1

Liste de paramètres facultatifs

MessagePublié: 01 Juil 2020 09:23
par Archibald
Bonjour,

certaines commandes TeXGraph utilisent des listes de paramètres nommés, du genre

Code: Tout sélectionner
Commande(param1, param2, [param3 := 3, param4 := 4])


où param3 et param4 sont facultatifs.

Puis-je implémenter ce comportement dans mes propres macros, et si oui, comment ?

Re: Liste de paramètres facultatifs

MessagePublié: 01 Juil 2020 09:55
par P.Fradin
Bonjour,

Oui c'est possible et tu as deux méthodes :

1) Les paramètres nommés sont des variables globales dans ton fichier, par exemple :
Code: Tout sélectionner
TeXgraph#
Var
    param1 = 0;
    param2 = 1; //déclaration globales des paramètres
Mac
    essai = [//déclaration de la macro essai(x, y, [param1:= , param2:= ])
        $x:=%1, $y:=%2, //arguments 1 et 2
        param1:=0, param2:=1, //valeurs par défaut,
        %3, //on évalue l'argument 3,
        // suite du code
      ]; //fin de la macro


2) Les paramètres nommés sont des variables locales à la macro :
Code: Tout sélectionner
TeXgraph#
Mac
    essai = [//déclaration de la macro essai(x, y, [param1:= , param2:= ])
        $x:=%1, $y:=%2, //arguments 1 et 2
        $param1:=0, $param2:=1, //valeurs par défaut
        Eval(String(%3)), // évaluation du troisième argument
        //suite du code
   ];  //fin de la macro


S'il faut plus de détails n'hésite pas !

Re: Liste de paramètres facultatifs

MessagePublié: 01 Juil 2020 16:52
par Archibald
Merci beaucoup (j'y étais presque !)

Oui, j'ai une deuxième question, mais qui a peu à voir (enfin si, j'essaie toujours d'écrire mes macros) : comme puis-je tracer un segment de 1 cm, indépendamment de l'unité du repère (c'est pour faire un marquage) ?

Re: Liste de paramètres facultatifs

MessagePublié: 01 Juil 2020 17:26
par P.Fradin
Voilà une macro segL(A, B, longueur en cm) qui trace partant de A, un segment de longueur voulue en cm, direction de B :
Code: Tout sélectionner
[//segL(A,B,longueur)
$A:=%1, $B:=%2, $long:=%3,
$u:=RealCoordV(B-A), //affixe "réelle" de B-A
Line([A, A+ScrCoordV(%3*u/abs(u))])
]

Re: Liste de paramètres facultatifs

MessagePublié: 01 Juil 2020 17:49
par Archibald
Merveilleux ! Merci encore :D