Il est possible par le biais de la commande MyExport (ou la commande draw qui est un alias) de créer de nouveaux éléments graphiques avec un export personnalisé différent de l’export prévu par défaut dans TeXgraph.
Description : cette commande s’utilise comme une commande graphique. L’utilisateur choisit un <"nom"> et doit créer deux macros :
Lors de l’évaluation graphique, la commande MyExport appelle la macro de dessin "Draw"+"nom" en lui passant les différents paramètres : <paramètre 1>, ..., <paramètre n>.
Lors d’un export, la commande MyExport appelle la macro d’exportation "Export"+"nom" en lui passant les différents paramètres : <paramètre 1>, ..., <paramètre n>. Si cette macro renvoie la valeur 0 alors TeXgraph procède à l’export « classique ».
Exemple(s) : exportation des courbes cartésiennes en pstricks en utilisant la macro \psplot. Choisissons le nom pstcartesian, on écrit alors la macro de dessin Drawpstcartesian( f(x), [options] ) avec les options :
Ces options doivent être des variables globales.
{Drawpstcartesian(f(x),[options])} [SaveAttr(), clip:=0, clipwin:=[Xmin+i*Ymin, Xmax+i*Ymax], x:=[tMin,tMax], $aux:=%2, {Evaluation des options} tMin:=x[1], tMax:=x[2], if clip then SaveWin(), $a:=clipwin[1], $b:=clipwin[2], Fenetre( Re(a)+i*Im(b), Re(b)+i*Im(a)) fi, Cartesienne(%1,0), if clip then RestoreWin() fi, RestoreAttr() ]
On écrit ensuite la macro d’exportation : Exportpstcartesian( f(x), [options] )
{Exportpstcartesian(expression,[options])} if ExportMode=pst then {on teste le mode d’exportation} SaveAttr(), clip:=0, clipwin:=[Xmin+i*Ymin, Xmax+i*Ymax], x:=[tMin,tMax], $aux:=%2, {Evaluation des options} tMin:=x[1], tMax:=x[2], WriteFile([if clip then $a:=clipwin[1], $b:=clipwin[2], "\psclip{", "\psframe[linestyle=none,fillstyle=none]", @coord(a),@coord(b),"}%",LF fi, "\psplot[algebraic", if NbPoints<>50 then ",plotpoints=",NbPoints fi, "]", "{",Round(tMin,6),"}{",Round(tMax,6),"}{", @cvfunction(String(%1)),"}", if clip then LF,"\endpsclip" fi ]), RestoreAttr() else 0 { <- 0 signifie export normal} fi
La macro cvfunction renvoie la fonction au format pstricks sous forme d’une chaîne :
{cvfunction( chaine ): conversion vers la syntaxe de pstricks} [$aux:=StrReplace(%1,"cos","COS"), aux:=StrReplace(aux,"sin","SIN"), aux:=StrReplace(aux,"tan","TAN"), aux:=StrReplace(aux,"arccos","ACOS"), aux:=StrReplace(aux,"arcsin","ASIN"), aux:=StrReplace(aux,"arctan","ATAN"), aux:=StrReplace(aux,"ch","COSH"), aux:=StrReplace(aux,"sh","SINH"), aux:=StrReplace(aux,"th","TANH"), aux:=StrReplace(aux,"argch","ACOSH"), aux:=StrReplace(aux,"argsh","ASINH"), aux:=StrReplace(aux,"argth","ATANH"), aux:=StrReplace(aux,"exp","EXP"), aux]
Si on crée ensuite un élément graphique avec la commande : MyExport("pstcartesian", x^2*sin(x), [x :=[-2,2], clip=1] ), alors l’export pstricks donnera le fichier :
\psset{xunit=1cm, yunit=1cm} \begin{pspicture}(-5.5,-5.5)(5.5,5.5)% %objet1 (Utilisateur) \psclip{\psframe[linestyle=none,fillstyle=none](-5,-5)(5,5)}% \psplot[algebraic]{-4}{4}{x^2*SIN(x)} \endpsclip \end{pspicture}%
NB : cet exemple est incomplet car il ne traite pas le problème de l’exportation des attributs : couleurs, épaisseur, style de ligne, ...