Lors de l'analyse de [Set($a,3),
racine(a,i)]: TeXgraph remplace
racine par l'expression de la macro en remplaçant le paramètre %1 par la variable a et le paramètre %2 par i, ce qui revient à analyser la commande:
[Set($a,3),
if (Ent(a)=a) And a>0
then $a:= abs(i)^(1/a),
for $k from 0 to a-1 do a*exp(i*(Arg(i)+$k*2*pi)/a) od
fi
]
c'est le développement immédiat.
On remarquera que cette fois-ci il y a une seule variable a, ce qui fait que cette commande
ne donnera pas le bon résultat (elle donne i). Par contre la commande [Set($b,3),
racine(b,i)]
donne le bon résultat ([0.866025403784+0.5*i,-0.866025403784+0.5*i,-i]). Le développement immédiat n'a lieu que
si la macro existe déjà, sinon c'est un développement différé.
Le développement immédiat est à proscrire lorsque la macro possède des variables locales et qu'il y a un risque d'ambiguïté avec les variables de l'expression appelante. Cependant il y a des cas ou celui-ci est plus intéressant que le développement différé, par exemple si on définit la macro appelée f par la commande %1*arctan(%1)/(1+%1^2) et si on crée l'élément graphique Courbe/Paramétrée avec l'expression t+i*
f(t), alors l'expression sera en réalité t+i*t*arctan(t)/(1+t^2) et comme cette expression
va être évaluée un "grand nombre" de fois, ce sera plus rapide à l'exécution que l'expression t+i*f(t), car dans celle-ci (développement différé) la macro f sera appelée à chaque évaluation de l'expression.
D'un autre côté, le développement immédiat permet d'utiliser les macros comme des variables, en particulier pour stocker des chaines de caractères8.19. Par exemple, il y a trois macros prédéfinies qui contiennent chacune une chaîne de caractères et qui s'utilisent en développement immédiat:
- InitialPath: macro qui contient le chemin d'accès au répertoire de TeXgraph (celui-ci contient les exécutables et les scripts).
- DocPath: macro qui contient le chemin d'accès au répertoire doc de TeXgraph, ce répertoire contient des docs au format pdf (dont TeXgraph.pdf).
- TmpPath: macro qui contient le chemin d'accès à un répertoire temporaire.
Exemple: la commande Exec("xpdf","TeXgraph.pdf",) , ouvrira le fichier TeXgraph.pdf avec le programme xpdf.