La macro \directTeg (version 1.974)

Depuis la version 1.974 il est possible dans un document LaTeX d'utiliser TeXgraph en mode serveur. Ainsi, le programme est lancé une seule fois, en début de compilation, et fermé en fin de compilation. Il suffit pour cela dans le préambule d'écrire:
NB: les anciennes options globales restent évidemment valables.
Lorsque l'on est dans ce mode, il est possible de demander à TeXgraph d'exécuter à la volée des commandes (sans avoir à lancer le programme puisqu'il est déjà actif), c'est le rôle de la macro \directTeg{<commande texgraph>}, dans cette commande on peut utiliser l'instruction Return(chaîne) qui écrit la chaîne dans un fichier de sortie, ce fichier sera automatiquement inclus par la macro \directTeg.
Exemple:
La commande envoyée à TeXgraph est Return(pgcd(12,79)), il calcule donc le pgcd demandé (la macro pgcd est prédéfinie dans TeXgraph) et écrit le résultat dans le fichier de sortie qui va ensuite être inclus.
On peut automatiser ce calcul en créant une macro \pgcd:
L'exemple précédent peut alors être remplacé par:
Lorsque la commande texgraph est complexe et/ou doit être utilisée plusieurs fois dans le document, il peut être intéressant de créer une (ou plusieurs) macro(s) texgraph et de les conserver en mémoire le temps de la compilation, c'est ce que propose l'environnement:
Le code texgraph doit obéir aux règles de syntaxe d'un fichier TeXgraph (excepté la première ligne: TeXgraph# qui sera automatiquement ajoutée). Ce code va être chargé en mémoire, toutes les variables globales et macros définies dans ce code resteront en mémoire jusqu'à la fin de la compilation. Exemple:
On définit ainsi une macro (permanente) qui calcule le pgcd d'une liste d'entiers de manière récursive (L[3,0] représente tous les éléments de la liste L à partir du troisième). On peut ensuite définir la macro TeX qui lui correspond:
Exemple:
- Code: Tout sélectionner
\usepackage[server]{texgraph}
NB: les anciennes options globales restent évidemment valables.
Lorsque l'on est dans ce mode, il est possible de demander à TeXgraph d'exécuter à la volée des commandes (sans avoir à lancer le programme puisqu'il est déjà actif), c'est le rôle de la macro \directTeg{<commande texgraph>}, dans cette commande on peut utiliser l'instruction Return(chaîne) qui écrit la chaîne dans un fichier de sortie, ce fichier sera automatiquement inclus par la macro \directTeg.
Exemple:
- Code: Tout sélectionner
Le pgcd entre 12 et 79 est $\directTeg{Return(pgcd(12,79))}$.
La commande envoyée à TeXgraph est Return(pgcd(12,79)), il calcule donc le pgcd demandé (la macro pgcd est prédéfinie dans TeXgraph) et écrit le résultat dans le fichier de sortie qui va ensuite être inclus.
On peut automatiser ce calcul en créant une macro \pgcd:
- Code: Tout sélectionner
\newcommand*{\pgcd}[2]{%
\directTeg{Return(pgcd(#1,#2))}%
}%
L'exemple précédent peut alors être remplacé par:
- Code: Tout sélectionner
Le pgcd entre 12 et 79 est $\pgcd{12}{79}$.
Lorsque la commande texgraph est complexe et/ou doit être utilisée plusieurs fois dans le document, il peut être intéressant de créer une (ou plusieurs) macro(s) texgraph et de les conserver en mémoire le temps de la compilation, c'est ce que propose l'environnement:
- Code: Tout sélectionner
\begin{tegcode}
<fichier texgraph>
\end{tegcode}
Le code texgraph doit obéir aux règles de syntaxe d'un fichier TeXgraph (excepté la première ligne: TeXgraph# qui sera automatiquement ajoutée). Ce code va être chargé en mémoire, toutes les variables globales et macros définies dans ce code resteront en mémoire jusqu'à la fin de la compilation. Exemple:
- Code: Tout sélectionner
\begin{tegcode}
Mac Pgcd = [//Pgcd(liste d’entiers)
$L:=%1, $N:=Nops(L),
if N<2 then "\textrm{error}"
else
$r:=pgcd(L[1],L[2]),
if r=1 then 1
elif N=2 then r
else Pgcd( [r,L[3,0]] )
fi
fi
];
\end{tegcode}
On définit ainsi une macro (permanente) qui calcule le pgcd d'une liste d'entiers de manière récursive (L[3,0] représente tous les éléments de la liste L à partir du troisième). On peut ensuite définir la macro TeX qui lui correspond:
- Code: Tout sélectionner
\newcommand*{\Pgcd}[1]{%
\directTeg{Return(Pgcd([#1]))}%
}%
Exemple:
- Code: Tout sélectionner
Le plus grand diviseur commun à $12$, $68$ et $36$ est $\Pgcd{12,68,36}$.