Introduction de la doc en ligne de TeXgraph... pour tester :)
[geshi.git] / docs / texgraph / chap05.html
diff --git a/docs/texgraph/chap05.html b/docs/texgraph/chap05.html
new file mode 100644 (file)
index 0000000..8100d67
--- /dev/null
@@ -0,0 +1,673 @@
+<h1 id="liste-des-commandes">Liste des commandes</h1>
+<p>Notations:</p>
+<p>&lt;argument&gt;: signifie que l&#8217;argument est <strong>obligatoire</strong>.</p>
+<p>[argument]: signifie que l&#8217;argument est <strong>facultatif</strong>.</p>
+<h2 id="Args">Args</h3>
+<ul>
+<li><p><b>Args( &lt;entier&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction n&#8217;a d&#8217;effet que dans une macro, elle &#233;value et renvoie l&#8217;argument num&#233;ro &lt;<em>entier</em>&gt; avec lequel la macro a &#233;t&#233; appel&#233;e. Hors de ce contexte, elle renvoie la valeur <em>Nil</em>. Voir &#233;galement la commande <a href="#StrArgs">StrArgs</a></p></li>
+<li><p><u>Exemple(s)</u> :  Voir la fonction <a href="#Nargs">Nargs</a>.</p></li>
+</ul>
+<h2 id="Assign">Assign</h3>
+<ul>
+<li><p><b>Assign( &lt;expression&gt;, &lt;variable&gt;, &lt;valeur&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;value &lt;<em>valeur</em>&gt; et l&#8217;affecte &#224; la variable nomm&#233;e &lt;<em>variable</em>&gt; dans &lt;<em>expression</em>&gt;<sup><a href="#fn1" class="footnoteRef" id="fnref1">1</a></sup>. La fonction <em>Assign</em> renvoie la valeur <em>Nil</em>. Cette fonction est utile dans l&#8217;&#233;criture de macros prenant une expression comme param&#232;tre et qui doivent l&#8217;&#233;valuer.</p></li>
+<li><p><u>Exemple(s)</u> :  voici une macro <span style="color:red">Bof</span> qui prend une fonction f(t) en param&#232;tre et qui calcule la liste <span class="math">[<em>f</em>(0),&#8198;<em>f</em>(1),&#8198;.&#8198;.&#8198;.&#8198;,&#8198;<em>f</em>(5)]</span>:</p></li>
+</ul>
+<p><div style="text-align:center">{for $k from 0 to 5 do Assign(%1,t,k), %1 od}</div></p>
+<p>%1 repr&#233;sente le premier param&#232;tre de la macro (c&#8217;est &#224; dire f(t)), la boucle: pour k allant de 0 &#224; 5 elle ex&#233;cute la commande [Assign(%1, t, k), %1], celle-ci assigne la valeur de k &#224; la variable <span class="math"><em>t</em></span> dans l&#8217;expression %1, puis &#233;value %1. L&#8217;ex&#233;cution de <span style="color:red">Bof(t^2)</span> donne: <span style="color:magenta">[0,1,4,9,16,25]</span>. L&#8217;ex&#233;cution de <span style="color:red">Bof(x^2)</span> donne <em>Nil</em>.</p>
+<h2 id="Attributs">Attributs</h3>
+<ul>
+<li><p><b>Attributs()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ouvre la fen&#234;tre permettant de modifier les attributs d&#8217;un &#233;l&#233;ment graphique. Cette fonction renvoie la valeur 1 si l&#8217;utilisateur a choisi <em>OK</em>, elle renvoie la valeur 0 s&#8217;il a choisi <em>Cancel</em>. Si l&#8217;utilisateur a choisi <em>OK</em>, alors les variables globales correspondant aux attributs sont modifi&#233;es en cons&#233;quence.</p></li>
+</ul>
+<h2 id="Border">Border</h3>
+<ul>
+<li><p><b>Border( &lt;0/1&gt; )</b></p></li>
+<li><p><u>Description</u> : cette fonction d&#233;termine si un cadre doit &#234;tre dessin&#233; ou non autour des marges du graphique dans les exportations. Lorsque la valeur de l&#8217;argument est nulle (valeur par d&#233;faut), le cadre n&#8217;est pas dessin&#233;.</p>
+<p>Lorsque l&#8217;argument est vide, cette fonction renvoie l&#8217;&#233;tat de la bordure &#224; l&#8217;exportation (0 ou 1). Sinon, elle renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="ChangeAttr">ChangeAttr</h3>
+<ul>
+<li><p><b>ChangeAttr( &lt;element1&gt;, ..., &lt;elementN&gt; )</b></p></li>
+<li><p><u>Description</u> : cette fonction permet de modifier les attributs des &#233;l&#233;ments graphiques &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt;, en leur affectant la valeur des attributs en cours. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Clip2D">Clip2D</h3>
+<ul>
+<li><p><b>Clip2D( &lt;ligne polygonale&gt;, &lt;contour convexe&gt; [, close(0/1) ] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction clippe la &lt;<em>ligne polygonale</em>&gt; qui doit &#234;tre une variable contenant une liste de complexes, avec le &lt;<em>contour convexe</em>&gt;, qui est lui aussi une liste de complexes. La fonction calcule la ligne polygonale qui en r&#233;sulte modifie la variable &lt;<em>ligne polygonale</em>&gt; en cons&#233;quence, le dernier agument &lt;<em>close</em>&gt; (<span class="math">0</span> par d&#233;faut) permet de pr&#233;ciser si la &lt;<em>ligne polygonale</em>&gt; doit &#234;tre referm&#233;e ou non. La fonction renvoie <em>Nil</em>.</p></li>
+</ul>
+<h2 id="CloseFile">CloseFile</h3>
+<ul>
+<li><p><b>CloseFile()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet de fermer le fichier ouvert par la commande <a href="#OpenFile">OpenFile</a>.</p></li>
+</ul>
+<h2 id="ComposeMatrix">ComposeMatrix</h3>
+<ul>
+<li><p><b>ComposeMatrix( &lt;[z1, z2, z3]&gt; )</b></p></li>
+<li><p><u>Description</u> : cette fonction permet de composer la matrice courante (celle-ci affecte tous les &#233;l&#233;ments graphiques sauf les axes et les grilles dans la version actuelle) avec la matrice &lt;<em>[z1, z2, z3]</em>&gt;. Cette matrice repr&#233;sente l&#8217;expression analytique d&#8217;une application affine du plan, c&#8217;est une liste de trois complexes: <span class="math"><em>z</em>1</span> qui est l&#8217;affixe du vecteur de translation, <span class="math"><em>z</em>2</span> qui est l&#8217;affixe du premier vecteur colonne de la matrice de la partie lin&#233;aire dans la base (1,i), et <span class="math"><em>z</em>3</span> qui est l&#8217;affixe du deuxi&#232;me vecteur colonne de la matrice de la partie lin&#233;aire. Par exemple, la matrice de l&#8217;identit&#233; s&#8217;&#233;crit ainsi: [0,1,i] (c&#8217;est la matrice par d&#233;faut). (Voir aussi les commandes <a href="#GetMatrix">GetMatrix</a>, <a href="#SetMatrix">SetMatrix</a>, et <a href="#IdMatrix">IdMatrix</a>).</p></li>
+</ul>
+<h2 id="Copy">Copy</h3>
+<ul>
+<li><p><b>Copy( &lt;liste&gt;, &lt;index depart&gt;, &lt;nombre&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction renvoie la liste constitu&#233;e par les &lt;<em>nombre</em>&gt; &#233;l&#233;ments de la &lt;<em>liste</em>&gt; &#224; partir de l&#8217;&#233;l&#233;ment num&#233;ro &lt;<em>depart</em>&gt;[inclus]. Si &lt;<em>nombre</em>&gt; est nul, alors la fonction renvoie tous les &#233;l&#233;ments de la liste &#224; partir de l&#8217;&#233;l&#233;ment num&#233;ro &lt;<em>d&#233;part</em>&gt;.</p>
+<p>Si le num&#233;ro &lt;<em>depart</em>&gt; est n&#233;gatif, alors la liste et parcourue de droite &#224; gauche en partant du dernier, le dernier &#233;l&#233;ment a l&#8217;index <span class="math">&#8197;-&#8197;1</span>, l&#8217;avant-dernier a l&#8217;index <span class="math">&#8197;-&#8197;2</span> <span class="math">&#8943;</span> etc. La fonction renvoie les &lt;<em>nombre</em>&gt; &#233;l&#233;ments de la liste (ou toute la liste si &lt;<em>nombre</em>&gt; est nul) en allant vers la gauche, mais la liste renvoy&#233;e est dans le m&#234;me sens que la &lt;<em>liste</em>&gt;, et cette derni&#232;re n&#8217;est pas modifi&#233;e.</p></li>
+<li><p><u>Exemple(s)</u> : </p>
+<ul>
+<li><p><span style="color:red">Copy([1,2,3,4],2,2)</span> renvoie <span style="color:magenta">[2,3]</span>.</p></li>
+<li><p><span style="color:red">Copy([1,2,3,4],2,5)</span> renvoie <span style="color:magenta">[2,3,4]</span>.</p></li>
+<li><p><span style="color:red">Copy([1,2,3,4],2,0)</span> renvoie <span style="color:magenta">[2,3,4]</span>.</p></li>
+<li><p><span style="color:red">Copy([1,2,3,4],-1,2)</span> renvoie <span style="color:magenta">[3,4]</span>.</p></li>
+<li><p><span style="color:red">Copy([1,2,3,4],-2,2)</span> renvoie <span style="color:magenta">[2,3]</span>.</p></li>
+<li><p><span style="color:red">Copy([1,2,3,4],-2,0)</span> renvoie <span style="color:magenta">[1,2,3]</span>.</p></li>
+</ul></li>
+</ul>
+<p><strong>NB</strong>: pour des raisons de compatibilit&#233; avec l&#8217;ancienne version, l&#8217;index <span class="math">0</span> correspond aussi au dernier &#233;l&#233;ment de la liste.</p>
+<h2 id="DefaultAttr">DefaultAttr</h3>
+<ul>
+<li><p><b>DefaultAttr()</b></p></li>
+<li><p><u>Description</u> : cette fonction met toutes les variables correspondant aux attributs (<span style="font-style:italic;color:red">Color</span>, <span style="font-style:italic;color:red">Width</span>, ...) &#224; leur valeur par d&#233;faut. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Del">Del</h3>
+<ul>
+<li><p><b>Del( &lt;liste&gt;, &lt;depart&gt;, &lt;nombre&gt; )</b>.</p></li>
+<li><p><u>Description</u> : supprime de la &lt;<em>liste</em>&gt; &lt;<em>nombre</em>&gt; &#233;l&#233;ments &#224; partir du num&#233;ro &lt;<em>d&#233;part</em>&gt;[inclus]. Si &lt;<em>nombre</em>&gt; est nul, alors la fonction supprime tous les &#233;l&#233;ments de la liste &#224; partir de l&#8217;&#233;l&#233;ment num&#233;ro &lt;<em>d&#233;part</em>&gt;.</p>
+<p>Si le num&#233;ro &lt;<em>depart</em>&gt; est n&#233;gatif, alors la liste et parcourue de droite &#224; gauche en partant du dernier. Le dernier &#233;l&#233;ment a l&#8217;index <span class="math">&#8197;-&#8197;1</span>, l&#8217;avant-dernier a l&#8217;index <span class="math">&#8197;-&#8197;2</span> <span class="math">&#8943;</span> etc. La fonction supprime les &lt;<em>nombre</em>&gt; &#233;l&#233;ments de la liste (ou toute la liste si &lt;<em>nombre</em>&gt; est nul) en allant vers la gauche.</p>
+<p>Le param&#232;tre &lt;<em>liste</em>&gt; doit &#234;tre <strong>un nom de variable</strong>, celle-ci est modifi&#233;e et la fonction renvoie <em>Nil</em>.</p></li>
+<li><p><u>Exemple(s)</u> :  la commande <span style="color:red">[x:=[1,2,3,4], Del(x,2,2), x]</span> renvoie <span style="color:magenta">[1,4]</span>.</p>
+<p>La commande <span style="color:red">[x:=[1,2,3,4], Del(x,-2,2), x]</span> renvoie <span style="color:magenta">[1,4]</span>.</p></li>
+</ul>
+<p><strong>NB</strong>: pour des raisons de compatibilit&#233; avec l&#8217;ancienne version, l&#8217;index <span class="math">0</span> correspond aussi au dernier &#233;l&#233;ment de la liste.</p>
+<h2 id="Delay">Delay</h3>
+<ul>
+<li><p><b>Delay( &lt;nb millisecondes&gt; )</b></p></li>
+<li><p><u>Description</u> : permet de suspendre l&#8217;ex&#233;cution du programme pendant le laps de temps indiqu&#233; (en milli-secondes).</p></li>
+</ul>
+<h2 id="DelButton">DelButton</h3>
+<ul>
+<li><p><b>DelButton( &lt;texte1&gt;, ..., &lt;texteN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de supprimer dans la colonne &#224; gauche de la zone de dessin, les boutons portant les inscriptions &lt;<em>texte1</em>&gt;, ..., &lt;<em>texteN</em>&gt;. Si la liste est vide (<span style="font-style:italic"> DelButton()</span>), alors tous les boutons sont supprim&#233;s. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="DelGraph">DelGraph</h3>
+<ul>
+<li><p><b>DelGraph( &lt;element1&gt;, ..., &lt;elementN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de supprimer les &#233;l&#233;ments graphiques appel&#233;s &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt;. Si la liste est vide (<span style="font-style:italic"> DelGraph()</span>), alors tous les &#233;l&#233;ments sont supprim&#233;s. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="DelItem">DelItem</h3>
+<ul>
+<li><p><b>DelItem( &lt;nom1&gt;, ..., &lt;nomN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de supprimer de la liste d&#233;roulante &#224; gauche de la zone de dessin, les options appel&#233;es &lt;<em>nom1</em>&gt;, ..., &lt;<em>nomN</em>&gt;. Si la liste est vide (<span style="font-style:italic"> DelItem()</span>), alors toute la liste est supprim&#233;e. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="DelMac">DelMac</h3>
+<ul>
+<li><p><b>DelMac( &lt;mac1&gt;, ..., &lt;macN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de supprimer les macros (non pr&#233;d&#233;finies) appel&#233;es &lt;<em>mac1</em>&gt;, ..., &lt;<em>macN</em>&gt;. Si la liste est vide (<span style="font-style:italic">DelMac()</span>), la commande est sans effet. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="DelText">DelText</h3>
+<ul>
+<li><p><b>DelText( &lt;texte1&gt;, ..., &lt;texteN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de supprimer dans la colonne &#224; gauche de la zone de dessin, les labels &lt;<em>texte1</em>&gt;, ..., &lt;<em>texteN</em>&gt;. Si la liste est vide (<span style="font-style:italic"> DelText()</span>), alors tous les labels sont supprim&#233;s. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="DelVar">DelVar</h3>
+<ul>
+<li><p><b>DelVar( &lt;var1&gt;, ..., &lt;varN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de supprimer les variables globales (non pr&#233;d&#233;finies) appel&#233;s &lt;<em>var1</em>&gt;, ..., &lt;<em>varN</em>&gt;. Si la liste est vide (<span style="font-style:italic">DelVar()</span>), la commande est sans effet. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Der">Der</h3>
+<ul>
+<li><p><b>Der( &lt;expression&gt;, &lt;variable&gt;, &lt;liste&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction calcule la d&#233;riv&#233;e de &lt;<em>expression</em>&gt; par rapport &#224; &lt;<em>variable</em>&gt; et l&#8217;&#233;value en donnant &#224; &lt;<em>variable</em>&gt; les valeurs successives de la &lt;<em>liste</em>&gt;. La fonction <span style="font-style:italic">Der</span> renvoie la liste des r&#233;sultats. Mais si on a besoin de <span style="font-style:italic">l&#8217;expression de la d&#233;riv&#233;e</span>, alors on pr&#233;f&#233;rera la fonction <a href="#Diff">Diff</a>.</p></li>
+<li><p><u>Exemple(s)</u> : </p>
+<ul>
+<li><p>la commande <span style="color:red">Der(1/x,x,[-1,0,2] )</span> renvoie <span style="color:magenta">[-1,-0.25]</span>.</p></li>
+<li><p>Voici le texte d&#8217;une macro appel&#233;e <span style="color:red">tangente</span> qui prend une expression <span class="math"><em>f</em>(<em>x</em>)</span> en premier param&#232;tre, une valeur r&#233;elle <span class="math"><em>x</em>0</span> en second param&#232;tre et qui trace la tangente &#224; la courbe au point d&#8217;abscisse x0:</p>
+<p><div style="text-align:center">{[Assign(%1,x,%2), $A:=%2+i*%1, $Df:=Der(%1,x,%2), Droite(A, A+1+i*Df)]}</div></p>
+<p>On assigne la valeur <span class="math"><em>x</em>0</span> &#224; la variable <span class="math"><em>x</em></span> dans l&#8217;expression <span class="math"><em>f</em>(<em>x</em>)</span>, on stocke dans une variable <span class="math"><em>A</em></span> le point de coordonn&#233;es <span class="math">(<em>x</em>0,&#8198;<em>f</em>(<em>x</em>0))</span> (sous forme d&#8217;affixe), on stocke dans une variable <span class="math"><em>D</em><em>f</em></span> la d&#233;riv&#233;e en <span class="math"><em>x</em>0</span> (<span class="math"><em>f</em>&#697;(<em>x</em>0)</span>), puis on trace la droite passant par <span class="math"><em>A</em></span> et dirig&#233;e par le vecteur d&#8217;affixe <span class="math">1&#8197;+&#8197;<em>i</em><em>f</em>&#697;(<em>x</em>0)</span>.</p></li>
+</ul></li>
+</ul>
+<h2 id="Diff">Diff</h3>
+<ul>
+<li><p><b>Diff( &lt;nom&gt;, &lt;expression&gt;, &lt;variable&gt; [, param1,..., paramN] )</b></p></li>
+<li><p><u>Description</u> : cette fonction permet de cr&#233;er une macro appel&#233;e &lt;<em>nom</em>&gt;, s&#8217;il existait d&#233;j&#224; une macro portant ce nom, elle sera &#233;cras&#233;e, sauf si c&#8217;est une macro pr&#233;d&#233;finie auquel cas la commande est sans effet. Le corps de la macro cr&#233;&#233;e correspond &#224; la d&#233;riv&#233;e de &lt;<em>expression</em>&gt; par rapport &#224; &lt;<em>variable</em>&gt;. Les param&#232;tres optionnels sont des noms de variables, le nom de la variable &lt;<em>param1</em>&gt; est remplac&#233; dans l&#8217;expression de la d&#233;riv&#233;e par le param&#232;tre %1, le nom &lt;<em>param2</em>&gt; est remplac&#233; par %2 ... etc. Cette fonction renvoie <em>Nil</em>.</p></li>
+<li><p><u>Exemple(s)</u> :  apr&#232;s l&#8217;ex&#233;cution de la commande (dans la ligne de commande en bas de la fen&#234;tre): <span style="color:red">Diff(df, sin(3*t), t)</span>, une macro appel&#233;e <span style="color:magenta">df</span> est cr&#233;&#233;e et son contenu est: <span style="color:magenta">3*cos(3*t)</span>, c&#8217;est une macro sans param&#232;tre qui contient une variable locale <span class="math"><em>t</em></span>, elle devra donc &#234;tre utilis&#233;e en d&#233;veloppement imm&#233;diat (c&#8217;est &#224; dire pr&#233;c&#233;d&#233;e du symbole <span class="math">&#8197;&#8726;&#8197;</span>)<sup><a href="#fn2" class="footnoteRef" id="fnref2">2</a></sup>. Par contre apr&#232;s la commande <span style="color:red">Diff(df,sin(3*t),t,t)</span>, le contenu de la macro <span style="color:magenta">df</span> est: {3*cos(3*%1)} qui est une macro &#224; un param&#232;tre.</p></li>
+</ul>
+<h2 id="Echange">Echange</h3>
+<ul>
+<li><p><b>Echange( &lt;variable1&gt;, &lt;variable2&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;change les deux variables, ce sont en fait les adresses qui sont &#233;chang&#233;es. Les contenus ne sont pas dupliqu&#233;s alors qu&#8217;ils le seraient si on utilisait la commande:</p>
+<p>{ <span style="color:red">[aux:=variable1, variable1:=variable2, variable2:=aux]</span>}</p>
+<p>La fonction <span style="font-style:italic">Echange</span> renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="EpsCoord">EpsCoord</h3>
+<ul>
+<li><p><b>EpsCoord( &lt;affixe&gt; )</b></p></li>
+<li><p><u>Description</u> : renvoie l&#8217;affixe export&#233;e en eps. Pour les autres, il y a les macros <a href="#TeXCoord">TeXCoord</a> et <a href="#SvgCoord">SvgCoord</a>.</p></li>
+</ul>
+<h2 id="Eval">Eval</h3>
+<ul>
+<li><p><b>Eval( &lt;expression&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;value l&#8217;&lt;<em>expression</em>&gt; et renvoie le r&#233;sultat. L&#8217;&lt;<em>expression</em>&gt; est interpr&#233;t&#233;e comme une <a href="#chaine">cha&#238;ne de caract&#232;res</a>.</p></li>
+<li><p>La fonction <a href="#Input">Input</a> renvoie la saisie sous forme d&#8217;une cha&#238;ne dans la macro appel&#233;e <em>chaine()</em>. La fonction <span style="font-style:italic">Eval</span> &#233;value cette cha&#238;ne (comme n&#8217;importe quelle commande TeXgraph) et renvoie le r&#233;sultat.</p></li>
+<li><p><u>Exemple(s)</u> :  voici une commande demandant une valeur &#224; l&#8217;utilisateur pour une variable <em>x</em>:</p></li>
+</ul>
+<pre><code>     if Input(&quot;x=&quot;, &quot;Entrez une valeur pour x&quot;, x )
+     then x:= Eval( chaine() )
+     fi 
+</code></pre>
+<h2 id="Exec">Exec</h3>
+<ul>
+<li><p><b>Exec( &lt;programme&gt; [, argument(s), r&#233;pertoire de travail, attendre] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;ex&#233;cuter un &lt;<em>programme</em>&gt; (ou un script) en pr&#233;cisant &#233;ventuellement des &lt;<em>arguments</em>&gt; et un &lt;<em>r&#233;pertoire de travail</em>&gt;, ces trois arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Le dernier argument doit valoir 0 (par d&#233;faut) ou 1, il indique si le programme attend ou non la fin du processus fils. La fonction renvoie la valeur <em>Nil</em>. Un message d&#8217;erreur s&#8217;affiche lorsque: les ressources sont insuffisantes, ou bien le programme est invalide, ou bien le chemin est invalide.</p></li>
+<li><p>La macro-cha&#238;ne pr&#233;d&#233;finie @TmpPath contient le chemin vers un r&#233;pertoire temporaire. La macro <em>Apercu</em> exporte le graphique courant dans ce dossier au format pgf dans le fichier <em>file.pgf</em>, puis elle ex&#233;cute <em>pdflatex</em> sur le fichier <em>apercu.tex</em>, puis attend la fin de l&#8217;ex&#233;cution avant de lancer le lecteur de pdf.</p></li>
+<li><p><u>Exemple(s)</u> :  la macro <span style="font-style:italic">Apercu</span> contenue dans interface.mac est:</p></li>
+</ul>
+<pre><code>      [Export(pgf,[@TmpPath,&quot;file.pgf&quot;] ), 
+       Exec(&quot;pdflatex&quot;, [&quot;-interaction=nonstopmode apercu.tex&quot;],@TmpPath,1),
+       Exec(@PdfReader,&quot;apercu.pdf&quot;,@TmpPath,0)
+      ]
+</code></pre>
+<h2 id="Export">Export</h3>
+<ul>
+<li><p><b>Export( &lt;mode&gt;, &lt;fichier&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;exporter le graphique en cours, &lt;<em>mode</em>&gt; est une valeur num&#233;rique qui peut &#234;tre l&#8217;une des constantes suivantes: tex, pst, pgf, tkz, eps, psf, pdf, epsc, pdfc, svg, bmp, obj, geom, jvx ou teg. L&#8217;exportation se fait dans &lt;<em>fichier</em>&gt; qui contient donc le nom du fichier, avec &#233;ventuellement le chemin.</p>
+<p>La macro pr&#233;d&#233;finie @TmpPath contient le chemin vers un r&#233;pertoire temporaire. La macro <em>Apercu</em> exporte le graphique courant dans ce dossier au format pgf dans le fichier <em>file.pgf</em>, puis elle ex&#233;cute <em>pdflatex</em> sur le fichier <em>apercu.tex</em>, puis attend la fin de l&#8217;ex&#233;cution avant de lancer le lecteur de pdf.</p></li>
+<li><p><u>Exemple(s)</u> :  la macro <span style="font-style:italic">Apercu</span> contenue dans interface.mac est:</p></li>
+</ul>
+<pre><code>      [Export(pgf,[@TmpPath,&quot;file.pgf&quot;] ), 
+       Exec(&quot;pdflatex&quot;, [&quot;-interaction=nonstopmode apercu.tex&quot;],@TmpPath,1),
+       Exec(@PdfReader,&quot;apercu.pdf&quot;,@TmpPath,0)
+      ]
+</code></pre>
+<h2 id="ExportObject">ExportObject</h3>
+<ul>
+<li><p><b>ExportObject( &lt;argument&gt; )</b></p></li>
+<li><p><u>Description</u> : cette commande n&#8217;a d&#8217;effet que pendant un export. Elle permet d&#8217;exporter l&#8217;&lt;<em>argument</em>&gt; dans le fichier de sortie, cet &lt;<em>argumet</em>&gt; est soit le nom d&#8217;un &#233;l&#233;ment graphique, soit une commande graphique (comme pour la fonction <a href="#Get">Get</a>). Elle peut-&#234;tre utile pour &#233;crire des exports personnalis&#233;s, ceci est d&#233;crit dans <a href="#MyExport">cette section</a>.</p></li>
+</ul>
+<h2 id="Fenetre">Fenetre</h3>
+<ul>
+<li><p><b>Fenetre( &lt;A&gt;, &lt;B&gt; [, C] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction modifie la fen&#234;tre graphique, c&#8217;est l&#8217;&#233;quivalent de l&#8217;option <em>Param&#232;tres/Fen&#234;tre</em>, <strong>sauf que les &#233;l&#233;ments graphiques ne sont pas automatiquement recalcul&#233;s</strong>. Le param&#232;tre &lt;<em>A</em>&gt; et le param&#232;tre &lt;<em>B</em>&gt; sont les affixes de deux coins de la fen&#234;tre diam&#233;tralement oppos&#233;s, et le param&#232;tre facultatif &lt;<em>C</em>&gt; repr&#233;sente les deux &#233;chelles, plus pr&#233;cis&#233;ment, la partie r&#233;elle de &lt;<em>C</em>&gt; est l&#8217;&#233;chelle [en cm] sur l&#8217;axe des abscisses et la partie imaginaire de &lt;<em>C</em>&gt; est l&#8217;&#233;chelle [en cm] sur l&#8217;axe des ordonn&#233;es, ces deux valeurs doivent &#234;tre strictement positives. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Free">Free</h3>
+<ul>
+<li><p><b>Free( &lt;expression&gt;, &lt;variable&gt;</b>.</p></li>
+<li><p><u>Description</u> : cette fonction renvoie <span class="math">1</span> si l&#8217;&lt;<em>expression</em>&gt; contient la &lt;<em>variable</em>&gt;, <span class="math">0</span> sinon. Lorsque le deuxi&#232;me argument n&#8217;est pas un nom de variable, la fonction renvoie <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Get">Get</h3>
+<ul>
+<li><p><b>Get( &lt;argument&gt; [, clip(0/1)] )</b>.</p></li>
+<li><p><u>Description</u> : lorsque le param&#232;tre &lt;<em>argument</em>&gt; est un <em>identificateur</em>, la fonction cherche s&#8217;il y a un &#233;l&#233;ment graphique dont le nom est &lt;<em>argument</em>&gt;, si c&#8217;est le cas, alors la fonction renvoie la liste des points de cet &#233;l&#233;ment graphique, sinon elle renvoie la valeur <em>Nil</em>. Dans ce cas l&#8217;argument optionnel est ignor&#233;.</p>
+<p>Lorsque &lt;<em>argument</em>&gt; n&#8217;est pas un identificateur, celui-ci est consid&#233;r&#233; comme une <em>fonction graphique</em>, la fonction <span style="font-style:italic">Get</span> renvoie la liste des points de l&#8217;&#233;l&#233;ment graphique construit par cette fonction graphique mais sans cr&#233;er l&#8217;&#233;l&#233;ment en question. L&#8217;argument optionnel &lt;<em>clip</em>&gt; (qui vaut <span class="math">1</span> par d&#233;faut) indique si l&#8217;&#233;l&#233;ment doit &#234;tre clipp&#233; par la fen&#234;tre courante (valeur 1) ou non (valeur 0).</p>
+<p>Lorsque l&#8217;argument est vide: <span style="font-style:italic">Get()</span>, la fonction renvoie la liste des points de tous les &#233;l&#233;ments graphiques d&#233;j&#224; construits, ceux qui sont cach&#233;s sont ignor&#233;s.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Get(Cercle(0,1))</span> renvoie la liste des points du cercle de centre 0 et de rayon 1 mais sans cr&#233;er ce cercle, la liste des points est clipp&#233;e par la fen&#234;tre graphique.</p></li>
+<li><p><u>Exemple(s)</u> :  utilisation des points d&#8217;un objet graphique:</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>Cmd view(0,6.25,-1.5,2); size(7.5); [tMin:=0, tMax:=6.25]; Graph axe = Axes(0,1+i); C1 = [Color:=blue,Width:=8, Cartesienne(1/x) ]; C2 = [Color:=red,Width:=8, Cartesienne(sin(2*x)*1.5)]; inter = [DotScale:=2,DotStyle:=dotcircle, Color:=forestgreen, Point(Get(C1) InterL Get(C2)), Color:=blue, LabelDot(5.5+0.1*i,&quot;<span class="math"><em>C</em><sub>1</sub></span>&quot;,&quot;N&quot;), Color:=red, LabelDot(3-i,&quot;<span class="math"><em>C</em><sub>2</sub></span>&quot;,&quot;E&quot;), ];</p>
+</blockquote>
+</blockquote>
+<h2 id="GetAttr">GetAttr</h3>
+<ul>
+<li><p><b>GetAttr( &lt;argument&gt; )</b></p></li>
+<li><p><u>Description</u> : lorsque le param&#232;tre &lt;<em>argument</em>&gt; est un <em>identificateur</em>, la fonction cherche s&#8217;il y a un &#233;l&#233;ment graphique dont le nom est &lt;<em>argument</em>&gt;, si c&#8217;est le cas, alors les attributs de cet &#233;l&#233;ment graphique deviennent les attributs courants, et la fonction renvoie la valeur <em>Nil</em>. Sinon, l&#8217;argument est interpr&#233;t&#233; comme une cha&#238;ne de caract&#232;res puis la fonction effectue la m&#234;me recherche.</p></li>
+</ul>
+<h2 id="GetMatrix">GetMatrix</h3>
+<ul>
+<li><p><b>GetMatrix()</b></p></li>
+<li><p><u>Description</u> : cette fonction renvoie la matrice courante. (Voir aussi les commandes <a href="#ComposeMatrix">ComposeMatrix</a>, <a href="#SetMatrix">SetMatrix</a>, et <a href="#IdMatrix">IdMatrix</a>)</p></li>
+</ul>
+<h2 id="GetSpline">GetSpline</h3>
+<ul>
+<li><p><b>GetSpline(&lt;V0&gt;, &lt;A0&gt;,..., &lt;An&gt;, &lt;Vn&gt; )</b></p></li>
+<li><p><u>Description</u> : renvoie la liste des points de contr&#244;le correspondant &#224; la spline cubique passant par les points &lt;<em>A0</em>&gt; jusqu&#8217;&#224; &lt;<em>An</em>&gt;. &lt;<em>V0</em>&gt; et &lt;<em>Vn</em>&gt; d&#233;signent les vecteurs vitesses aux extr&#233;mit&#233;s [contraintes], si l&#8217;un d&#8217;eux est nul alors l&#8217;extr&#233;mit&#233; correspondante est consid&#233;r&#233;e comme libre (sans contrainte). Le r&#233;sultat doit &#234;tre dessin&#233; avec la commande graphique <a href="#Bezier">Bezier</a>.</p></li>
+</ul>
+<h2 id="GrayScale">GrayScale</h3>
+<ul>
+<li><p><b>GrayScale(0/1)</b> ou <b>GrayScale()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;activer ou d&#233;sactiver la conversion des couleurs en niveaux de gris. Elle &#233;quivaut &#224; l&#8217;option <span style="font-style:italic">Param&#232;tres/G&#233;rer les couleurs</span> du menu de l&#8217;interface graphique.</p>
+<p>Lorsque l&#8217;argument est vide, la fonction renvoie l&#8217;&#233;tat actuel de la conversion en niveaux de gris (0 ou 1). Sinon, elle renvoie <em>Nil</em>.</p></li>
+</ul>
+<h2 id="HexaColor">HexaColor</h3>
+<ul>
+<li><p><b>HexaColor( &lt;valeur h&#233;xad&#233;cimale&gt; )</b></p></li>
+<li><p><u>Description</u> : cette fonction renvoie la couleur correspondant &#224; la &lt;<em>valeur h&#233;xad&#233;cimale</em>&gt;, cette valeur doit &#234;tre pass&#233;e sous forme d&#8217;une cha&#238;ne de caract&#232;res. Voir aussi la commande <a href="#Rgb">Rgb</a>.</p></li>
+<li><p><u>Exemple(s)</u> :  <code>Color:=HexaColor(&quot;F5F5DC&quot;)</code>.</p></li>
+</ul>
+<h2 id="Hide">Hide</h3>
+<ul>
+<li><p><b>Hide( &lt;element1&gt;, ..., &lt;elementN&gt; )</b></p></li>
+<li><p><u>Description</u> : Cette fonction permet de cacher les &#233;l&#233;ments graphiques appel&#233;s &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt; en mettant leur attribut <span style="font-style:italic">IsVisible</span> &#224; false. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>.</p>
+<p>Pour tout cacher on invoque la commande sans arguments: <span style="font-style:italic">Hide()</span>.</p>
+<p>Pour tout cacher sauf un ou plusieurs &#233;l&#233;ments, on invoque la commande: <span style="font-style:italic">Hide(except, element1, ..., elementN)</span>. Voir aussi la commande <a href="#Show">Show</a>.</p></li>
+</ul>
+<h2 id="IdMatrix">IdMatrix</h3>
+<ul>
+<li><p><b>IdMatrix()</b></p></li>
+<li><p><u>Description</u> : change la matrice courante en la matrice identit&#233;. (Voir aussi les commandes <a href="#ComposeMatrix">ComposeMatrix</a>, <a href="#SetMatrix">SetMatrix</a>, et <a href="#GetMatrix">GetMatrix</a>)</p></li>
+</ul>
+<h2 id="Input">Input</h3>
+<ul>
+<li><p><b>Input( &lt;message&gt; [, titre, cha&#238;ne] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ouvre une boite de dialogue avec &lt;<em>titre</em>&gt; dans la barre de titre (par d&#233;faut le titre est vide), et dans laquelle le param&#232;tre &lt;<em>message</em>&gt; est affich&#233;, le param&#232;tre &lt;<em>cha&#238;ne</em>&gt; est affich&#233; dans la zone de saisie. Ces param&#232;tres sont donc interpr&#233;t&#233;s comme des <a href="#chaine">cha&#238;nes de caract&#232;res</a>, l&#8217;utilisateur est invit&#233; &#224; faire une saisie. S&#8217;il valide alors la fonction <span style="font-style:italic">Input</span> renvoie la valeur <span class="math">1</span> et la cha&#238;ne saisie est <strong>m&#233;moris&#233;e dans la macro</strong> <span style="font-style:italic">chaine()</span>. Si l&#8217;utilisateur ne valide pas ou si la cha&#238;ne saisie est vide, alors la fonction <span style="font-style:italic">Input</span> renvoie la valeur <span class="math">0</span>.</p></li>
+<li><p><u>Exemple(s)</u> :  voir la fonction <a href="#Eval">Eval</a>.</p></li>
+</ul>
+<h2 id="InputMac">InputMac</h3>
+<ul>
+<li><p><b>InputMac( &lt;nom de fichier&gt; )</b> ou <b>Load( &lt;nom de fichier&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet de charger en m&#233;moire un fichier de macros (<em>*.mac</em>), ou un fichier mod&#232;le (<em>*.mod</em>), ou tout fichier source texgraph (<em>*.teg</em>).</p>
+<p>Dans le premier cas (fichier <em>*.mac</em>), les variables globales et les macros seront consid&#233;r&#233;es comme <strong>pr&#233;d&#233;finies</strong> (elles n&#8217;apparaissent pas &#224; l&#8217;&#233;cran, elles ne seront pas enregistr&#233;es avec le graphique, mais elles sont effac&#233;es de la m&#233;moire d&#232;s qu&#8217;on commence un nouveau graphique). Le param&#232;tre &lt;<em>nom de fichier</em>&gt; est une cha&#238;ne de caract&#232;res repr&#233;sentant le fichier &#224; charger avec &#233;ventuellement son chemin. Cette fonction renvoie <em>Nil</em>, et si ce fichier &#233;tait d&#233;j&#224; charg&#233;, alors elle est sans effet. Si le fichier &#224; charger est dans le r&#233;pertoire <em>macros</em> de <em>TeXgraph</em>, ou dans le dossier <em>TeXgraphMac</em>, alors il est inutile de pr&#233;ciser le chemin.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">InputMac(&quot;MesMacros.mac&quot;)</span>.</p></li>
+</ul>
+<h2 id="Inc">Inc</h3>
+<ul>
+<li><p><b>Inc( &lt;variable&gt;, &lt;expression&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;value &lt;<em>expression</em>&gt; et ajoute le r&#233;sultat &#224; &lt;<em>variable</em>&gt;. Cette fonction est plus avantageuse que la commande <span style="color:red">variable := variable + expression</span>, car dans cette commande la &lt;<em>variable</em>&gt; est &#233;valu&#233;e [c&#8217;est &#224; dire dupliqu&#233;e] pour calculer la somme. La fonction <span style="font-style:italic">Inc</span> renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Insert">Insert</h3>
+<ul>
+<li><p><b>Insert( &lt;liste1&gt;, &lt;liste2&gt; [, position] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ins&#232;re la &lt;<em>liste2</em>&gt; dans la &lt;<em>liste1</em>&gt; &#224; la position num&#233;ro &lt;<em>position</em>&gt;. Lorsque la position vaut 0 [valeur par d&#233;faut]. La &lt;<em>liste2</em>&gt; est ajout&#233;e &#224; la fin. La &lt;<em>liste1</em>&gt; doit &#234;tre une variable et celle-ci est modifi&#233;e. La fonction <span style="font-style:italic">Insert</span> renvoie la valeur <em>Nil</em>.</p></li>
+<li><p><u>Exemple(s)</u> :  si une variable <span class="math"><em>L</em></span> contient la liste <span style="color:red">[1,4,5]</span>, alors apr&#232;s la commande <span style="color:red">Insert(L,[2,3],2)</span>, la variable <span class="math"><em>L</em></span> contiendra la liste <span style="color:magenta">[1,2,3,4,5]</span>.</p></li>
+</ul>
+<h2 id="Int">Int</h3>
+<ul>
+<li><p><b>Int( &lt;expression&gt;, &lt;variable&gt;, &lt;borne inf.&gt;, &lt;borne sup.&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction calcule l&#8217;int&#233;grale de &lt;<em>expression</em>&gt; par rapport &#224; &lt;<em>variable</em>&gt; sur l&#8217;intervalle <strong>r&#233;el</strong> d&#233;fini par &lt;<em>borne inf.</em>&gt; et &lt;<em>borne sup</em>&gt;. Le calcul est fait &#224; partir de la m&#233;thode de {Simpson} acc&#233;l&#233;r&#233;e deux fois avec la m&#233;thode de {Romberg}, &lt;<em>expression</em>&gt; est suppos&#233;e d&#233;finie et suffisamment r&#233;guli&#232;re sur l&#8217;intervalle d&#8217;int&#233;gration.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Int(exp(sin(u)),u,0,1)</span> donne <span style="color:magenta">1.63187</span> (Maple donne 1.631869608).</p></li>
+</ul>
+<h2 id="IsMac">IsMac</h3>
+<ul>
+<li><p><b>IsMac( &lt;nom&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet de savoir s&#8217;il y a une macro appell&#233;e &lt;<em>nom</em>&gt;. Elle renvoie <span class="math">1</span> si c&#8217;est le cas, <span class="math">0</span> sinon.</p></li>
+</ul>
+<h2 id="IsVar">IsVar</h3>
+<ul>
+<li><p><b>IsVar( &lt;nom&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet de savoir s&#8217;il y a une variable globale appell&#233;e &lt;<em>nom</em>&gt;. Elle renvoie <span class="math">1</span> si c&#8217;est le cas, <span class="math">0</span> sinon.</p></li>
+</ul>
+<h2 id="Liste">Liste</h3>
+<ul>
+<li><p><b>Liste( &lt;argument1&gt;, ..., &lt;argumentn&gt; )</b> ou bien <strong>[&lt;argument1&gt;, ..., &lt;argumentn&gt;]</strong>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;value chaque argument et renvoie la liste des r&#233;sultats <strong>diff&#233;rents de <em>Nil</em></strong>.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Liste(1, Arg(1+2*i), sqrt(-1), Solve(cos(x)-x,x,0,1))</span> renvoie le r&#233;sultat <span style="color:magenta">[1,1.107149,0.739085]</span>.</p></li>
+</ul>
+<h2 id="ListFiles">ListFiles</h3>
+<ul>
+<li><p><b>ListFiles()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction est disponible seulement dans la version GUI de TeXgraph, elle s&#8217;utilise dans la barre de commande en bas de la fen&#234;tre, elle affiche alors la liste des fichiers de macros (<em>*.mac</em>) charg&#233;s en m&#233;moire.</p></li>
+</ul>
+<h2 id="LoadImage">LoadImage</h3>
+<ul>
+<li><p><b>LoadImage( &lt;image&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction charge le fichier &lt;<em>image</em>&gt;, qui doit &#234;tre une image png, jpeg ou bmp. Celle-ci est affich&#233;e en image de fond et fait partie du graphique, en particulier elle est export&#233;e dans les formats tex (visible seulement dans la version postscript), pgf, pst et teg. Pour le format pgf c&#8217;est la version png ou jpg qui sera dans le document, mais pour les versions pst et tex il faut une version eps de l&#8217;image. L&#8217;argument est interpr&#234;t&#233; comme une cha&#238;ne de caract&#232;res, et la fonction renvoie la valeur <em>Nil</em>.</p>
+<p>Lors du chargement, la taille de l&#8217;image est adapt&#233;e &#224; la fen&#234;tre, mais celle-ci peut &#234;tre modifi&#233;e de mani&#232;re &#224; conserver les proportions de l&#8217;image. D&#232;s lors la position de l&#8217;image et sa taille sont fix&#233;es. On peut ensuite &#233;largir la fen&#234;tre si on ne veut pas que l&#8217;image occupe tout l&#8217;espace. Pour modifier la position ou la taille de l&#8217;image, il faut recharger celle-ci.</p></li>
+</ul>
+<h2 id="Loop">Loop</h3>
+<ul>
+<li><p><b>Loop( &lt;expression&gt;, &lt;condition&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction est une <strong>boucle</strong> qui construit une liste en &#233;valuant &lt;<em>expression</em>&gt; et &lt;<em>condition</em>&gt; jusqu&#8217;&#224; ce que le r&#233;sultat de &lt;<em>condition</em>&gt; soit &#233;gal &#224; 1 (pour <em>True</em>) ou <em>Nil</em>, la fonction <span style="font-style:italic">Loop</span> renvoie alors la liste des r&#233;sultats de &lt;<em>expression</em>&gt;. Cette commande est la repr&#233;sentation interne de la boucle <a href="#repeat">repeat</a> dont l&#8217;utilisation est pr&#233;f&#233;rable pour des raisons de lisibilit&#233;.</p></li>
+<li><p><u>Exemple(s)</u> :  les commandes (&#233;quivalentes):</p>
+<p><div style="text-align:center"><span style="color:red">[n:=1, m:=1, n, Loop([ aux:=n, n:=m, m:=aux+n, n], m&gt;100)]</span></div></p>
+<p>ou encore</p>
+<p><div style="text-align:center"><span style="color:red">[n:=1, m:=1, n, while m&lt;=100 do aux:=n, n:=m, m:=aux+n, n od]</span></div></p>
+<p>ou encore</p>
+<p><div style="text-align:center"><span style="color:red">[n:=1, m:=1, n, repeat aux:=n, n:=m, m:=aux+n, n until m&gt;100 od]</span></div></p>
+<p>renvoient la liste: <span style="color:magenta">[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]</span> (termes d&#8217;une suite de {Fibonacci} inf&#233;rieurs &#224; 100).</p></li>
+</ul>
+<h2 id="Map">Map</h3>
+<ul>
+<li><p><b>Map( &lt;expression&gt;, &lt;variable&gt;, &lt;liste&gt; [, mode] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction est une <strong>boucle</strong> qui construit une liste de la mani&#232;re suivante: &lt;<em>variable</em>&gt; parcourt les &#233;l&#233;ments de &lt;<em>liste</em>&gt; et pour chacun d&#8217;eux &lt;<em>expression</em>&gt; est &#233;valu&#233;e, la fonction <span style="font-style:italic">Map</span> renvoie la liste des r&#233;sultats. Cette commande est la repr&#233;sentation interne de la boucle <a href="#for">for</a> dont l&#8217;utilisation est pr&#233;f&#233;rable pour des raisons de lisibilit&#233;.</p>
+<p>Le param&#232;tre optionnel &lt;<em>mode</em>&gt; est un complexe qui vaut <em>Nil</em> par d&#233;faut, lorsque &lt;<em>mode</em>&gt;<span class="math">&#8196;=&#8196;<em>a</em>&#8197;+&#8197;<em>i</em><em>b</em></span>, alors:</p>
+<ul>
+<li><p>si <span class="math"><em>a</em></span> est un entier et <span class="math"><em>b</em>&#8196;=&#8196;0</span>: les &#233;l&#233;ments de la &lt;<em>liste</em>&gt; sont trait&#233;s de <span class="math"><em>a</em></span> en <span class="math"><em>a</em></span>,</p></li>
+<li><p>si <span class="math"><em>a</em></span> est un entier et <span class="math"><em>b</em>&#8196;=&#8196;1</span>: la &lt;<em>liste</em>&gt; est trait&#233;e par composante (deux composantes sont s&#233;par&#233;es par la constante <em>jump</em>) et les &#233;l&#233;ments de chaque composante sont trait&#233;s par paquets complets de <span class="math"><em>a</em></span> &#233;l&#233;ments, lorsque la constante <em>jump</em> est rencontr&#233;e dans la liste, celle-ci est renvoy&#233;e dans le r&#233;sultat. Un paquet non complet n&#8217;est pas trait&#233;.</p></li>
+<li><p>si <span class="math"><em>a</em></span> est un entier et <span class="math"><em>b</em>&#8196;=&#8196;&#8197;-&#8197;1</span>: la &lt;<em>liste</em>&gt; est trait&#233;e par composante (deux composantes sont s&#233;par&#233;es par la constante <em>jump</em>) et les &#233;l&#233;ments de chaque composante sont trait&#233;s par paquets complets de <span class="math"><em>a</em></span> &#233;l&#233;ments, lorsque la constante <em>jump</em> est rencontr&#233;e dans la liste, celle-ci n&#8217;est pas renvoy&#233;e dans le r&#233;sultat. Un paquet non complet n&#8217;est pas trait&#233;.</p></li>
+<li><p>si <span class="math"><em>a</em>&#8196;=&#8196;</span>Re(jump): la &lt;<em>liste</em>&gt; est trait&#233;e par composante (deux composantes sont s&#233;par&#233;es par la constante <em>jump</em>), lorsque la constante <em>jump</em> est rencontr&#233;e dans la liste, celle-ci est renvoy&#233;e dans le r&#233;sultat si <span class="math"><em>b</em>&#8196;=&#8196;1</span> et n&#8217;est pas renvoy&#233;e si <span class="math"><em>b</em>&#8196;=&#8196;&#8197;-&#8197;1</span>.</p></li>
+<li><p><u>Exemple(s)</u> :  voir la boucle <a href="#for">for</a> pour des exemples.</p></li>
+</ul></li>
+<li><p><u>Exemple(s)</u> :  si <span class="math"><em>L</em></span> est une variable contenant une liste de points, alors la commande:</p>
+<ul>
+<li><p><span style="color:red">[sum:=0, Map( Inc(sum,z), z, L), sum]</span> renvoie la somme des &#233;l&#233;ments de <span class="math"><em>L</em></span>.</p></li>
+<li><p>la commande <span style="color:red">Map(z*exp(i*<span class="math">&#960;</span>/3), z, L)</span> renvoie la liste des images des points de <span class="math"><em>L</em></span> par la rotation de centre O d&#8217;angle <span class="math">&#960;</span>/3.</p></li>
+</ul></li>
+</ul>
+<h2 id="Marges">Marges</h3>
+<ul>
+<li><p><b>Marges( &lt;gauche&gt;, &lt;droite&gt;, &lt;haut&gt;, &lt;bas&gt; )</b></p></li>
+<li><p><u>Description</u> : cette fonction permet de fixer les marges autour du dessin (en cm). Les nouvelles valeurs sont copi&#233;es dans les constantes <span style="font-style:italic;color:red">margeG</span>, <span style="font-style:italic;color:red">margeD</span>, <span style="font-style:italic;color:red">margeH</span> et <span style="font-style:italic;color:red">margeB</span>.</p></li>
+</ul>
+<h2 id="Merge">Merge</h3>
+<ul>
+<li><p><b>Merge( &lt;liste&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet de recoller des morceaux de listes pour avoir des composantes de longeur maximale, elle renvoie la liste qui en r&#233;sulte.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Merge([1, 2, jump, 3, 5, jump, 3, 4, 2] )</span> renvoie <span style="color:magenta">[1, 2, 3, 4, 5]</span>. Et <span style="color:red">Merge( [1, 2, jump, 3, 5, jump, 3, 4] )</span> renvoie <span style="color:magenta">[1, 2, jump, 4, 3, 5]</span>.</p>
+<p>Attention: pour que deux extr&#234;mit&#233;s soient recoll&#233;es elles doivent &#234;tre &#233;gales pour la machine.</p></li>
+</ul>
+<h2 id="Message">Message</h3>
+<ul>
+<li><p><b>Message( &lt;cha&#238;ne&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction affiche le param&#232;tre &lt;<em>cha&#238;ne</em>&gt;[qui est donc interpr&#233;t&#233; comme une <a href="#chaine">cha&#238;ne de caract&#232;res</a>] dans une fen&#234;tre. Quand l&#8217;utilisateur a cliqu&#233; sur <em>OK</em>, la fen&#234;tre se referme et la fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Move">Move</h3>
+<ul>
+<li><p><b>Move( &lt;element1&gt;, ..., &lt;elementN&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ne s&#8217;applique qu&#8217;aux &#233;l&#233;ments graphiques cr&#233;&#233;s en mode NotXor, ce qui correspond &#224; la valeur 1 de la variable <a href="#PenMode">PenMode</a>. Elle redessine les &#233;l&#233;ments graphiques &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt;, puis les recalcule, puis les redessine, et elle renvoie la valeur <em>Nil</em>.</p>
+<p>Lorsqu&#8217;on redessine un &#233;l&#233;ment graphique cr&#233;&#233; en mode NotXor, il s&#8217;efface en restituant le fond, on peut alors modifier sa position et le redessiner. Cette technique permet de faire glisser des objets sans avoir &#224; r&#233;afficher tous les autres (ce qui &#233;vite d&#8217;avoir une image qui saute).</p></li>
+<li><p><u>Exemple(s)</u> :  voir la fonction <a href="#Stroke">Stroke</a>.</p></li>
+</ul>
+<h2 id="Mtransform">Mtransform</h3>
+<ul>
+<li><p><b>Mtransform( &lt;liste&gt;, &lt;matrice&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction applique la &lt;<em>matrice</em>&gt; &#224; la &lt;<em>liste</em>&gt; et renvoie le r&#233;sultat. Si la &lt;<em>liste</em>&gt; contient la constante <em>jump</em>, celle-ci est renvoy&#233;e dans le r&#233;sultat sans &#234;tre modifi&#233;e. La &lt;<em>matrice</em>&gt; repr&#233;sente l&#8217;expression analytique d&#8217;une application affine du plan, c&#8217;est une liste de trois complexes <span class="math">[<em>z</em>1,&#8198;<em>z</em>2,&#8198;<em>z</em>3]</span>: <span class="math"><em>z</em>1</span> est l&#8217;affixe du vecteur de translation, <span class="math"><em>z</em>2</span> est l&#8217;affixe du premier vecteur colonne de la matrice de la partie lin&#233;aire dans la base (1,i), et <span class="math"><em>z</em>3</span> est l&#8217;affixe du deuxi&#232;me vecteur colonne de la matrice de la partie lin&#233;aire. Par exemple, la matrice de l&#8217;identit&#233; s&#8217;&#233;crit ainsi: [0,1,i] (c&#8217;est la matrice par d&#233;faut).</p></li>
+</ul>
+<h2 id="MyExport">MyExport</h3>
+<ul>
+<li><p><b>MyExport( &lt;&quot;nom&quot;&gt;, &lt;param&#232;tre 1&gt;, ..., &lt;param&#232;tre n&gt; )</b> ou <b>draw( &lt;&quot;nom&quot;&gt;, &lt;param&#232;tre 1&gt;, ..., &lt;param&#232;tre n&gt; )</b></p></li>
+<li><p><u>Description</u> : cette commande permet d&#8217;ajouter de nouveaux &#233;l&#233;ments graphiques avec un export personnalis&#233;. Elle est d&#233;crite dans <a href="#MyExport">cette section</a>.</p></li>
+</ul>
+<h2 id="Nargs">Nargs</h3>
+<ul>
+<li><p><b>Nargs()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction n&#8217;a d&#8217;effet que dans une macro, elle renvoie le nombre d&#8217;arguments avec lesquels la macro a &#233;t&#233; appel&#233;e. Hors de ce contexte, elle renvoie la valeur <em>Nil</em>. Voir aussi la fonction <a href="#Args">Args</a>.</p></li>
+<li><p><u>Exemple(s)</u> :  voici le corps d&#8217;une macro <em>MyLabel(affixe1, texte1, affixe2, texte2, ...)</em> prenant un nombre ind&#233;termin&#233; d&#8217;arguments:</p></li>
+</ul>
+<pre><code>    for $k from 1 to Nargs()/2 do
+         Label(Args(2*k-1), Args(2*k))
+    od
+</code></pre>
+<h2 id="NewButton">NewButton</h3>
+<ul>
+<li><p><b>NewButton( &lt;Id&gt;, &lt;nom&gt;, &lt;affixe&gt;, &lt;taille&gt;, &lt;commande&gt; [, aide] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction cr&#233;e dans la zone gris&#233;e &#224; gauche dans la fen&#234;tre un bouton dont le num&#233;ro d&#8217;identification est <strong>l&#8217;entier</strong> &lt;<em>Id</em>&gt;, le texte figurant sur le bouton est le param&#232;tre &lt;<em>nom</em>&gt; qui est donc interpr&#233;t&#233; comme une <a href="#chaine">cha&#238;ne de caract&#232;res</a>, la position du coin sup&#233;rieur gauche est donn&#233;e par le param&#232;tre &lt;<em>affixe</em>&gt; qui doit &#234;tre de la forme X+i*Y avec X et Y <strong>entiers</strong> car ce sont des coordonn&#233;es en <strong>pixels</strong>, la taille du bouton est donn&#233;e par le param&#232;tre &lt;<em>taille</em>&gt; qui doit &#234;tre de la forme <em>long+i*haut</em> o&#249; <em>long</em> d&#233;signe la longueur du bouton en pixels et <em>haut</em> la hauteur (ce sont donc des entiers), le param&#232;tre &lt;<em>commande</em>&gt; est interpr&#233;t&#233; comme une cha&#238;ne de caract&#232;res, c&#8217;est la commande associ&#233;e au bouton, chaque clic provoquera l&#8217;ex&#233;cution de cette commande. Le dernier param&#232;tre &lt;<em>aide</em>&gt; est facultatif, il contient le message de la bulle d&#8217;aide s&#8217;affichant lorsque la souris passe au-dessus du bouton.</p>
+<p>Si on cr&#233;e un bouton dont le num&#233;ro d&#8217;identification est d&#233;j&#224; pris, alors l&#8217;ancien bouton est d&#233;truit <strong>sauf si c&#8217;est un bouton pr&#233;d&#233;fini</strong> (c&#8217;est &#224; dire cr&#233;&#233; au d&#233;marrage). &#192; chaque changement de fichier, les boutons non pr&#233;d&#233;finis sont d&#233;truits. La fonction <strong>NewButton</strong> renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="NewGraph">NewGraph</h3>
+<ul>
+<li><p><b>NewGraph( &lt;cha&#238;ne1&gt;, &lt;cha&#238;ne2&gt; [, code] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction cr&#233;e un &#233;l&#233;ment graphique <span style="font-style:italic">Utilisateur</span> ayant pour nom: &lt;<em>cha&#238;ne1</em>&gt; et d&#233;fini par la commande: &lt;<em>cha&#238;ne2</em>&gt;. Les deux arguments sont donc interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>. S&#8217;il existait d&#233;j&#224; un &#233;l&#233;ment graphique portant le m&#234;me nom, alors celui-ci est &#233;cras&#233;. L&#8217;&#233;l&#233;ment graphique est cr&#233;&#233; mais non dessin&#233;, c&#8217;est la fonction <span style="font-style:italic">ReDraw()</span> qui permet de mettre l&#8217;affichage &#224; jour.</p>
+<p>Le troisi&#232;me param&#232;tre &lt;<em>code</em>&gt; est un entier positif (optionnel), un clic gauche avec la souris sur l&#8217;&#233;l&#233;ment graphique cr&#233;&#233; dans la liste des &#233;l&#233;ments graphiques, provoquera l&#8217;ex&#233;cution de la macro sp&#233;ciale <span style="font-style:italic">ClicGraph( &lt;code&gt; )</span>, cette macro n&#8217;existe pas par d&#233;faut et peut-&#234;tre cr&#233;&#233;e par l&#8217;utilisateur, elle est utilis&#233;e en particulier dans le fichier mod&#232;le <em>Mouse.mod</em> (dessin &#224; la souris).</p></li>
+<li><p>Supposons que l&#8217;utilisateur clique sur le point d&#8217;affixe 1+i, alors une fen&#234;tre de dialogue s&#8217;ouvre avec le message <span style="font-style:italic">Label=</span> et une ligne de saisie &#224; remplir. Supposons que l&#8217;utilisateur entre la cha&#238;ne <span style="font-style:italic">Test</span> et valide, alors la macro va cr&#233;er un &#233;l&#233;ment graphique <span style="font-style:italic">utilisateur</span> portant le nom <span style="font-style:italic">Label1</span> et d&#233;fini par la commande <span style="color:red">Label(1+i,&quot;Test&quot;)</span>.</p></li>
+<li><p>On peut aussi utiliser la macro pr&#233;d&#233;finie <span style="font-style:italic">NewLabel</span> et d&#233;finir la macro <span style="font-style:italic">ClicG()</span> en &#233;crivant simplement: {NewLabel(%1) }.</p></li>
+<li><p><u>Exemple(s)</u> :  voici une macro <span style="font-style:italic">ClicG()</span> permettant la cr&#233;ation &quot;&#224; la vol&#233;e&quot; de labels, on a cr&#233;&#233; auparavant une variable globale <span style="font-style:italic">num</span> initialis&#233;e &#224; 1:</p></li>
+</ul>
+<pre><code> if Input(&quot;Label=&quot;)
+ then NewGraph( [&quot;Label&quot;,num], [&quot;Label(&quot;, %1,&quot;,&quot;, &quot;&quot;&quot;&quot;,chaine(),&quot;&quot;&quot;)&quot;] ), 
+      ReDraw(), Inc(num,1)
+ fi
+</code></pre>
+<h2 id="NewItem">NewItem</h3>
+<ul>
+<li><p><b>NewItem( &lt;nom&gt;, &lt;commande&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ajoute dans la liste d&#233;roulante de la zone gris&#233;e &#224; gauche dans la fen&#234;tre, un item appel&#233; &lt;<em>nom</em>&gt;, le deuxi&#232;me param&#232;tre &lt;<em>commande</em>&gt; est la commande associ&#233;e &#224; l&#8217;item, chaque s&#233;lection de l&#8217;item provoquera l&#8217;ex&#233;cution de cette commande. Les deux arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. S&#8217;il existe d&#233;j&#224; un item portant le m&#234;me nom, alors l&#8217;ancien est d&#233;truit <strong>sauf si c&#8217;est un item pr&#233;d&#233;fini</strong> (c&#8217;est &#224; dire cr&#233;&#233; au d&#233;marrage). &#192; chaque changement de fichier, les items non pr&#233;d&#233;finis sont d&#233;truits. La fonction <span style="font-style:italic">NewItem</span> renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="NewMac">NewMac</h3>
+<ul>
+<li><p><b>NewMac( &lt;nom&gt;, &lt;corps&gt; [, param1, <span class="math">&#8230;</span>, paramN])</b>.</p></li>
+<li><p><u>Description</u> : cette fonction cr&#233;e une macro appel&#233;e &lt;<em>nom</em>&gt; et dont le contenu est &lt;<em>corps</em>&gt;. Les deux arguments sont donc interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Les param&#232;tres optionnels sont des noms de variables, le nom de la variable &lt;<em>param1</em>&gt; est remplac&#233; dans l&#8217;expression de la macro par le param&#232;tre %1, le nom &lt;<em>param2</em>&gt; est remplac&#233; par %2 <span class="math">&#8230;</span> etc. Cette fonction renvoie la valeur <em>Nil</em>. S&#8217;il existait d&#233;j&#224; une macro portant le m&#234;me nom, alors celui-ci est &#233;cras&#233;e <strong>si elle n&#8217;est pas pr&#233;d&#233;finie</strong>. Si le nom n&#8217;est pas valide, ou s&#8217;il y a d&#233;j&#224; une macro pr&#233;d&#233;finie portant ce nom, ou si l&#8217;expression &lt;<em>corps</em>&gt; n&#8217;est pas correcte, alors la fonction est sans effet.</p></li>
+</ul>
+<h2 id="NewVar">NewVar</h3>
+<ul>
+<li><p><b>NewVar( &lt;nom&gt;, &lt;expression&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction cr&#233;e une variable globale appel&#233;e &lt;<em>nom</em>&gt; et dont la valeur est &lt;<em>expression</em>&gt;. Les deux arguments sont donc interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>. S&#8217;il existait d&#233;j&#224; une variable portant le m&#234;me nom, alors celle-ci est &#233;cras&#233;e. Si le nom n&#8217;est pas valide, ou s&#8217;il y a d&#233;j&#224; une constante portant ce nom, alors la fonction est sans effet. Si &lt;<em>expression</em>&gt; n&#8217;est pas correcte, alors la valeur affect&#233;e &#224; la variable sera <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Nops">Nops</h3>
+<ul>
+<li><p><b>Nops( &lt;liste&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;value &lt;<em>liste</em>&gt; et renvoie le nombre de complexes qui la composent.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Nops([1,2,3] )</span> renvoie la valeur <span style="color:magenta">3</span>.</p></li>
+</ul>
+<h2 id="NotXor">NotXor</h3>
+<ul>
+<li><p><b>NotXor( &lt;element1&gt;, ..., &lt;elementN&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ne s&#8217;applique qu&#8217;aux &#233;l&#233;ments graphiques cr&#233;&#233;s en mode normal, ce qui correspond &#224; la valeur 0 de la variable <a href="#PenMode">PenMode</a>. Elle change le mode des &#233;l&#233;ments graphiques &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt; en mode NotXor puis les recalcule, et elle renvoie la valeur <em>Nil</em>.</p>
+<p>Lorsqu&#8217;on redessine un &#233;l&#233;ment graphique qui est en mode NotXor, il s&#8217;efface en restituant le fond, on peut alors modifier sa position et le redessiner. Cette technique permet de faire glisser des objets sans avoir &#224; r&#233;afficher tous les autres (ce qui &#233;vite d&#8217;avoir une image qui saute).</p></li>
+<li><p><u>Exemple(s)</u> :  voir la fonction <a href="#Move">Move</a>.</p></li>
+</ul>
+<h2 id="OpenFile">OpenFile</h3>
+<ul>
+<li><p><b>OpenFile( &lt;nom fichier&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;ouvrir un fichier texte en &#233;criture. ATTENTION: s&#8217;il existe un fichier du m&#234;me nom, alors celui-ci sera &#233;cras&#233;.</p>
+<p>En combinaison avec les commandes <a href="#WriteFile">WriteFile</a> et <a href="#CloseFile">CloseFile</a>, cela permet &#224; l&#8217;utilisateur de cr&#233;er ses propres fichiers textes.</p></li>
+</ul>
+<h2 id="OriginalCoord">OriginalCoord</h3>
+<ul>
+<li><p><strong>OriginalCoord( &lt;0/1&gt; )</strong> ou <b>OriginalCoord()</b></p></li>
+<li><p><u>Description</u> : cette fonction d&#233;termine si le rep&#232;re &#224; l&#8217;exportation en <em>pstricks</em> et <em>tikz/pgf</em> est identique &#224; celui de l&#8217;&#233;cran (ce qui correspond &#224; la valeur 1 de l&#8217;argument, valeur par d&#233;faut), ou non. Lorsque la valeur de l&#8217;argument est nulle, le rep&#232;re &#224; l&#8217;exportation (<em>pstricks</em> et <em>tikz/pgf</em>) aura son origine en bas &#224; gauche et l&#8217;unit&#233; sera le cm sur les deux axes. Cela est utile lorsqu&#8217;on travaille dans des r&#233;p&#232;res o&#249; certaines valeurs num&#233;riques ne sont plus accept&#233;es par .</p>
+<p>Lorsque l&#8217;argument vaut 1, les coordonn&#233;es des points dans le fichier export&#233; sont les m&#234;mes qu&#8217;&#224; l&#8217;&#233;cran.</p>
+<p>Lorsque l&#8217;argument vaut 0, les coordonn&#233;es dans le fichier export&#233; (tex, pst, tikz/pgf) du point d&#8217;affixe z &#224; l&#8217;&#233;cran, sont x=Re(TexCoord(z)) et y=Im(TeXCoord(z)) (et EpsCoord &#224; la place de TeXCoord pour l&#8217;export eps).</p>
+<p>Lorsque l&#8217;argument est vide, la fonction renvoie l&#8217;&#233;tat actuel du rep&#232;re &#224; l&#8217;exportation (0 ou 1). Sinon, elle renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="PermuteWith">PermuteWith</h3>
+<ul>
+<li><p><b>PermuteWith( &lt;liste d&#8217;index&gt;, &lt;liste &#224; permuter&gt;, [, taille des paquets ou jump] )</b></p></li>
+<li><p><u>Description</u> : la &lt;<em>liste &#224; permuter</em>&gt; doit &#234;tre une variable, celle-ci sera permut&#233;e selon le &lt;<em>liste d&#8217;index</em>&gt; qui est une liste d&#8217;entiers strictement positifs. La &lt;<em>liste &#224; permuter</em>&gt; est trait&#233;e par composante si elle contient la constante <em>jump</em>, et les &#233;l&#233;ments de chaque composante sont trait&#233;s par paquets (de <span class="math">1</span> par d&#233;faut) ou par composante enti&#232;re (une composante se termine par <em>jump</em>), la liste est donc modifi&#233;e.</p></li>
+<li><p><u>Exemple(s)</u> : :</p>
+<ul>
+<li><p><span style="color:red">[L:=[-1,0,3,5], PermuteWith([4,3,2,1], L), L]</span> renvoie <span style="color:magenta">[5,3,0,-1]</span>.</p></li>
+<li><p><span style="color:red">[L:=[-1,0,3,5], PermuteWith([4,3,4,1], L), L]</span> renvoie <span style="color:magenta">[5,3,5,-1]</span>.</p></li>
+<li><p><span style="color:red">[L:=[-1,0,3,5,6,7,8], PermuteWith([4,3,2,1], L, 2), L]</span> renvoie <span style="color:magenta">[6,7,3,5,-1,0]</span>.</p></li>
+<li><p><span style="color:red">[L:=[-1,jump,0,3,jump,5,6,7,jump,8,jump], PermuteWith( [4,3,3,1,2], L, jump), L]</span> renvoie <span style="color:magenta">[8,jump,5,6,7,jump,5,6,7,jump,-1,jump,0,3,jump]</span>.</p></li>
+<li><p><span style="color:red">[L:=[-1,jump,0,3,jump,5,6,7,jump,8], PermuteWith([4,3,3,1,2], L, jump), L]</span> renvoie <span style="color:magenta">[5,6,7,jump,5,6,7,jump,-1,jump,0,3,jump]</span>.</p></li>
+<li><p><span style="color:red">[L:=[-1,1,5,jump,0,3,jump,5,6,7,jump,8,9], PermuteWith( [2,1], L), L]</span> renvoie <span style="color:magenta">[1,-1,jump,3,0,jump,6,5,jump,9,8]</span>.</p></li>
+</ul></li>
+</ul>
+<h2 id="ReadData">ReadData</h3>
+<ul>
+<li><p><b>ReadData( &lt;fichier&gt; [, type de lecture, s&#233;parateur] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ouvre un &lt;<em>fichier</em>&gt; texte en lecture, celui-ci est suppos&#233; contenir une ou plusieurs listes de valeurs num&#233;riques. Le premier argument est interpr&#233;t&#233; comme une <a href="#chaine">cha&#238;ne de caract&#232;res</a> qui contient le nom du fichier (plus &#233;ventuellement son chemin). L&#8217;argument (optionnel) suivant &lt;<em>type de lecture</em>&gt; est une valeur num&#233;rique qui peut valoir:</p>
+<ul>
+<li><p>&lt;<em>type de lecture</em>&gt;=1: la fonction lit le fichier r&#233;el par r&#233;el et renvoie la liste ou les listes lues: <code>[x1, x2, ...]</code>,</p></li>
+<li><p>&lt;<em>type de lecture</em>&gt;=2: La fonction lit le fichier complexe par complexe, c&#8217;est &#224; dire <strong>par paquets de deux r&#233;els</strong> et renvoie la ou les listes lues sous forme d&#8217;affixes: <code>[x1+i*x2, x3+i*x4, ...]</code>. C&#8217;est la valeur par d&#233;faut,</p></li>
+<li><p>&lt;<em>type de lecture</em>&gt;=3: La fonction lit le fichier par paquet de 3 r&#233;els (points de l&#8217;espace ou point3D) et renvoie la ou les listes lues sous la forme: <code>[x1+i*x2, x3, x4+i*x5, x6, ...]</code>.</p></li>
+</ul>
+<p>Le troisi&#232;me argument &lt;<em>s&#233;parateur</em>&gt;, est interpr&#233;t&#233; comme une cha&#238;ne, il est suppos&#233; contenir le caract&#232;re servant &#224; indiquer la fin de liste, entre deux listes la constante <em>jump</em> sera ins&#233;r&#233;e, cet argument est facultatif et par d&#233;faut il n&#8217;y a pas de s&#233;parateur (ce qui fait donc une seule liste). Lorsque le s&#233;parateur est la fin de ligne dans le fichier, on utilisera la cha&#238;ne <span style="color:red">&quot;LF&quot;</span> (<em>line feed</em>) en troisi&#232;me param&#232;tre. Lorsqu&#8217;il y a un s&#233;parateur et lorsque la lecture se fait par paquet de 2 ou 3 r&#233;els, un paquet non &#248;g complet&#160;est ignor&#233;.</p></li>
+<li><p><u>Exemple(s)</u> :  supposons qu&#8217;un fichier texte <em>test.dat</em> contienne exactement ceci:</p>
+<pre><code>1 2 3 4 5/ 6
+7 8 9 10 11/ 12
+13 14 15 16 17/ 18
+</code></pre>
+<p>alors l&#8217;ex&#233;cution de:</p>
+<ul>
+<li><p><span style="color:red">ReadData(&quot;test.dat&quot;)</span> donne: <span style="color:magenta">[1+2*i,3+4*i,5+6*i,7+8*i,9+10*i,11+12*i,13+14*i,15+16*i,17+18*i]</span>,</p></li>
+<li><p><span style="color:red">ReadData(&quot;test.dat&quot;,1,&quot;/&quot;)</span> donne: <span style="color:magenta">[1,2,3,4,5,jump,6,7,8,9,10,11,jump,12,13,14,15,16,17,jump,18]</span>,</p></li>
+<li><p><span style="color:red">ReadData(&quot;test.dat&quot;,2,&quot;/&quot;)</span> donne: <span style="color:magenta">[1+2*i,3+4*i,jump,6+7*i,8+9*i,10+11*i,jump,12+13*i,14+15*i,16+17*i,jump]</span>,</p></li>
+<li><p><span style="color:red">ReadData(&quot;test.dat&quot;,3,&quot;/&quot;)</span> donne: <span style="color:magenta">[1+2*i,3,jump,6+7*i,8,9+10*i,11,jump,12+13*i,14,15+16*i,17,jump]</span>,</p></li>
+<li><p><span style="color:red">ReadData(&quot;test.dat&quot;,3,&quot;LF&quot;)</span> donne: <span style="color:magenta">[1+2*i,3,4+5*i,6,jump,7+8*i,9,10+11*i,12,jump,13+14*i,15,16+17*i,18,jump]</span>.</p></li>
+</ul></li>
+</ul>
+<h2 id="ReadFlatPs">ReadFlatPs</h3>
+<ul>
+<li><p><b>ReadFlatPs( &lt;fichier&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction ouvre un &lt;<em>fichier</em>&gt; en lecture, celui-ci est cens&#233; &#234;tre un fichier &#233;crit en <em>flattened postscript</em>. La fonction renvoie la liste des chemins contenus dans le fichier, le premier complexe de la liste est <em>largeur+i*hauteur</em> en cm, puis le premier complexe de chaque chemin est <em>Color+i*Width</em>. Chaque chemin se termine par un <em>jump</em> dont la partie imaginaire est un enter n&#233;gatif: <span class="math">&#8197;-&#8197;1</span> pour eofill, <span class="math">&#8197;-&#8197;2</span> pour fill, <span class="math">&#8197;-&#8197;3</span> pour stroke et <span class="math">&#8197;-&#8197;4</span> pour clip.</p>
+<p>Il est possible de transformer un fichier pdf ou un fichier postscript en <em>flattened postscript</em> gr&#226;ce &#224; l&#8217;utilitaire <em>pstoedit</em> (<a href="http://www.pstoedit.net/"><code class="url">http://www.pstoedit.net/</code></a>). La macro <a href="#conv2FlatPs">conv2FlatPs</a> permet cette conversion en supposant que l&#8217;utilitaire est install&#233; sur votre syst&#232;me.</p>
+<p>La fonction <span style="font-style:italic">ReadFlatPs</span> est surtout utilis&#233;e en interne par la macro <a href="#loadFlatPs">loadFlatPs</a> qui en plus du chargement, adpate les coordonn&#233;es des points avant de renvoyer &#224; son tour la liste des chemins que l&#8217;on peut alors dessiner avec la macro <a href="#drawFlatPs">drawFlatPs</a>.</p>
+<p>Ce syst&#232;me est utilis&#233; par la macro <a href="#NewTeXlabel">NewTeXLabel</a> pour r&#233;cup&#233;rer les formules TeX compil&#233;es.</p></li>
+</ul>
+<h2 id="ReCalc">ReCalc</h3>
+<ul>
+<li><p><strong>ReCalc( &lt;nom1&gt;, ..., &lt;nomN&gt; )</strong> ou <b>ReCalc()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction force le recalcul des &#233;l&#233;ments graphiques dont les noms sont dans la liste m&#234;me si ceux-ci ne sont pas en mode <span style="font-style:italic">Recalcul Automatique</span>. Si la liste est vide (<span style="font-style:italic">ReCalc()</span>) alors tout le graphique est recalcul&#233;. Apr&#232;s le recalcul l&#8217;affichage est mis &#224; jour et la fonction renvoie <em>Nil</em>.</p></li>
+</ul>
+<p><strong>Attention</strong>: l&#8217;utilisation de <span style="font-style:italic">ReCalc()</span> dans un &#233;l&#233;ment graphique entra&#238;ne une r&#233;cursion infinie et donc un plantage du programme!</p>
+<h2 id="ReDraw">ReDraw</h3>
+<ul>
+<li><p><strong>ReDraw( &lt;nom1&gt;, ..., &lt;nomN&gt; )</strong> ou <b>ReDraw()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction (re)dessine les &#233;l&#233;ments graphiques dont les noms sont dans la liste. Si la liste est vide (<span style="font-style:italic">ReDraw()</span>) alors tous les &#233;lments sont redessin&#233;s. Cette fonction renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="RenCommand">RenCommand</h3>
+<ul>
+<li><p><b>RenCommand( &lt;nom&gt;, &lt;nouveau&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction renomme la commande appel&#233;e &lt;<em>nom</em>&gt;. Les deux arguments sont donc interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>. Si le &lt;<em>nom</em>&gt; n&#8217;est pas valide, ou s&#8217;il n&#8217;y a pas de commande portant ce &lt;<em>nom</em>&gt;, ou s&#8217;il a d&#233;j&#224; une commande portant le nom &lt;<em>nouveau</em>&gt;, alors la fonction est sans effet.</p></li>
+</ul>
+<h2 id="RenMac">RenMac</h3>
+<ul>
+<li><p><b>RenMac( &lt;nom&gt;, &lt;nouveau&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction renomme la macro appel&#233;e &lt;<em>nom</em>&gt;. Les deux arguments sont donc interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>. Si le &lt;<em>nom</em>&gt; n&#8217;est pas valide, ou s&#8217;il n&#8217;y a pas de macro portant ce &lt;<em>nom</em>&gt;, ou s&#8217;il a d&#233;j&#224; une macro portant le nom &lt;<em>nouveau</em>&gt;, alors la fonction est sans effet.</p></li>
+</ul>
+<h2 id="RestoreAttr">RestoreAttr</h3>
+<ul>
+<li><p><b>RestoreAttr()</b>.</p></li>
+<li><p><u>Description</u> : restaure l&#8217;ensemble des attributs sauvegard&#233;s dans une pile par la commande <a href="#SaveAttr">SaveAttr</a>.</p></li>
+</ul>
+<h2 id="Reverse">Reverse</h3>
+<ul>
+<li><p><b>Reverse( &lt;liste&gt; )</b>.</p></li>
+<li><p><u>Description</u> : renvoie la &lt;<em>liste</em>&gt; invers&#233;e.</p></li>
+</ul>
+<h2 id="Rgb">Rgb</h3>
+<ul>
+<li><p><b>Rgb( &lt;rouge&gt;, &lt;vert&gt;, &lt;bleu&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction renvoie un entier repr&#233;sentant la couleur dont les trois composantes sont &lt;<em>rouge</em>&gt;, &lt;<em>vert</em>&gt; et &lt;<em>bleu</em>&gt;, ces trois valeurs doivent &#234;tre des nombres <strong>compris entre 0 et 1</strong>. Voir aussi la commande <a href="#HexaColor">HexaColor</a>.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Color:= Rgb(0.5,0.5,0.5))</span> s&#233;lectionne le gris.</p></li>
+</ul>
+<h2 id="SaveAttr">SaveAttr</h3>
+<ul>
+<li><p><b>SaveAttr()</b>.</p></li>
+<li><p><u>Description</u> : sauvegarde sur une pile l&#8217;ensemble des attributs courants. Voir aussi <a href="#RestoreAttr">RestoreAttr</a>.</p></li>
+</ul>
+<h2 id="Seq">Seq</h3>
+<ul>
+<li><p><b>Seq( &lt;expression&gt;, &lt;variable&gt;, &lt;d&#233;part&gt;, &lt;fin&gt; [, pas] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction est une <strong>boucle</strong> qui construit une liste de la mani&#232;re suivante: &lt;<em>variable</em>&gt; est initialis&#233;e &#224; &lt;<em>d&#233;part</em>&gt; puis, tant que &lt;<em>variable</em>&gt; est dans l&#8217;intervalle (ferm&#233;) d&#233;fini par &lt;<em>d&#233;part</em>&gt; et &lt;<em>fin</em>&gt;, on &#233;value &lt;<em>expression</em>&gt; et on incr&#233;mente &lt;<em>variable</em>&gt; de la valeur de &lt;<em>pas</em>&gt;. Le pas peut &#234;tre n&#233;gatif mais il doit &#234;tre non nul. Lorsqu&#8217;il n&#8217;est pas sp&#233;cifi&#233;, sa valeur par d&#233;faut est 1. Lorsque &lt;<em>variable</em>&gt; sort de l&#8217;intervalle, la boucle s&#8217;arr&#234;te et la fonction <span style="font-style:italic">Seq</span> renvoie la liste des r&#233;sultats. Cette commande est la repr&#233;sentation interne de la boucle <a href="#for">for</a> dont l&#8217;utilisation est pr&#233;f&#233;rable pour des raisons de lisibilit&#233;.</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Seq(exp(i*k*pi/5,k,1,5)</span> renvoie la liste des racines cinqui&#232;mes de l&#8217;unit&#233;. La commande:</p>
+<p><div style="text-align:center"><span style="color:red">Ligne( Seq( exp(2*i*k*pi/5, k, 1, 5), 1)</span></div></p>
+<p>renverra la valeur <em>Nil</em> mais dessinera un pentagone (voir <a href="#Ligne">Ligne</a>) si elle est utilis&#233;e dans un &#233;l&#233;ment graphique <em>utilisateur</em>.</p></li>
+</ul>
+<h2 id="Set">Set</h3>
+<ul>
+<li><p><b>Set( &lt;variable&gt;, &lt;valeur&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;affecter &#224; &lt;<em>variable</em>&gt;<sup><a href="#fn3" class="footnoteRef" id="fnref3">3</a></sup> la &lt;<em>valeur</em>&gt; sp&#233;cifi&#233;e. La fonction <span style="font-style:italic">Set</span> renvoie la valeur <em>Nil</em>.</p>
+<p>Cette commande est la repr&#233;sentation interne de l&#8217;affectation <span style="font-style:italic">:=</span>, dont l&#8217;utilisation est pr&#233;f&#233;rable pour des raisons de lisibilit&#233;.</p></li>
+</ul>
+<h2 id="SetAttr">SetAttr</h3>
+<ul>
+<li><p><b>SetAttr()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction n&#8217;a d&#8217;effet que dans un &#233;l&#233;ment graphique Utilisateur. Elle permet d&#8217;affecter aux attributs de l&#8217;&#233;l&#233;ment la valeur des attributs actuellement en cours. La fonction <span style="font-style:italic">SetAttr</span> renvoie la valeur <em>Nil</em>.</p></li>
+</ul>
+<h2 id="SetMatrix">SetMatrix</h3>
+<ul>
+<li><p><b>SetMatrix( &lt;[z1, z2, z3]&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet de modifier la matrice courante (celle-ci affecte tous les &#233;l&#233;ments graphiques sauf les axes et les grilles dans la version actuelle). Cette matrice repr&#233;sente l&#8217;expression analytique d&#8217;une application affine du plan, c&#8217;est une liste de trois complexes: <span class="math"><em>z</em>1</span> qui est l&#8217;affixe du vecteur de translation, <span class="math"><em>z</em>2</span> qui est l&#8217;affixe du premier vecteur colonne de la matrice de la partie lin&#233;aire dans la base (1,i), et <span class="math"><em>z</em>3</span> qui est l&#8217;affixe du deuxi&#232;me vecteur colonne de la matrice de la partie lin&#233;aire. Par exemple, la matrice de l&#8217;identit&#233; s&#8217;&#233;crit ainsi: [0,1,i] (c&#8217;est la matrice par d&#233;faut). (Voir aussi les commandes <a href="#GetMatrix">GetMatrix</a>, <a href="#ComposeMatrix">ComposeMatrix</a>, et <a href="#IdMatrix">IdMatrix</a>)</p></li>
+<li><p><u>Exemple(s)</u> :  si <span class="math"><em>f</em>:&#8198;<em>z</em>&#8196;&#8614;&#8196;<em>f</em>(<em>z</em>)</span> est une application affine, alors sa matrice est <span class="math">[<em>f</em>(0),&#8198;<em>f</em>(1)&#8197;-&#8197;<em>f</em>(0),&#8198;<em>f</em>(<em>i</em>)&#8197;-&#8197;<em>f</em>(0)]</span>, ce calcul peut-&#234;tre fait par la macro <em>matrix()</em> de TeXgraph.mac: <span style="color:red">SetMatrix(matrix(i*bar(z)))</span> affecte la matrice de la sym&#233;trie orthogonale par rapport &#224; la premi&#232;re bissectrice.</p></li>
+</ul>
+<blockquote>
+<blockquote>
+<p>view(-5,5,-3,3), size(7.5), SetMatrix([0,1,1+i]), axes(0,1+i), tMin:=-5, tMax:=5, Color:=red, Width:=8, Cartesienne(2*sin(x)), Color:=black, Arrows:=2, tangente(2*sin(x), pi/2, 1.5), Arrows:=0, LineStyle:=dotted, Ligne( [2*i,pi/2+2*i, pi/2], 0), Point(pi/2+2*i), LabelDot( pi/2, &quot;<span class="math">$\frac{\pi}2$</span>&quot;,&quot;S&quot;,1), IdMatrix()</p>
+</blockquote>
+</blockquote>
+<h2 id="Show">Show</h3>
+<ul>
+<li><p><b>Show( &lt;element1&gt;, ..., &lt;elementN&gt; )</b>.</p></li>
+<li><p><u>Description</u> : Cette fonction permet de montrer les &#233;l&#233;ments graphiques appel&#233;s &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt; en mettant leur attribut <span style="font-style:italic">IsVisible</span> &#224; true. Les arguments sont interpr&#233;t&#233;s comme des cha&#238;nes de caract&#232;res. Cette fonction renvoie la valeur <em>Nil</em>. Pour tout montrer on invoque la commande sans arguments: <span style="font-style:italic">Show()</span>. Pour tout montrer sauf un ou plusieurs &#233;l&#233;ments, on invoque la commande: <span style="color:red">Show(except, element1, ..., elementN)</span>. Voir aussi la commande <a href="#Hide">Hide</a>.</p></li>
+</ul>
+<h2 id="Si">Si</h3>
+<ul>
+<li><p><b>Si( &lt;condition1&gt;, &lt;expression1&gt;, ..., &lt;conditionN&gt;, &lt;expressionN&gt; [, sinon] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &#233;value &lt;<em>condition1</em>&gt;. Une condition est une expression dont le r&#233;sultat de l&#8217;&#233;valuation doit &#234;tre 0 [pour <em>False</em>] ou 1 [pour <em>True</em>], sinon il y a un &#233;chec et la fonction renvoie la valeur <em>Nil</em>. Si la condition donne la valeur 1 alors la fonction &#233;value &lt;<em>expression1</em>&gt; et renvoie le r&#233;sultat, si elle vaut 0, elle &#233;value &lt;<em>condition2</em>&gt;, si celle-ci donne la valeur 1 alors la fonction &#233;value &lt;<em>expression2</em>&gt;, sinon etc... Lorsqu&#8217;aucune condition n&#8217;est remplie, la fonction &#233;value l&#8217;argument &lt;<em>sinon</em>&gt;, s&#8217;il est pr&#233;sent, et renvoie le r&#233;sultat, sinon la fonction renvoie <em>Nil</em>. Cette commande est la repr&#233;sentation interne de l&#8217;alternative <a href="#if">if</a> dont la syntaxe est pr&#233;f&#233;rable pour des raisons de lisibilit&#233;.</p></li>
+<li><p><u>Exemple(s)</u> :  d&#233;finition d&#8217;une macro <span style="color:red">f(x)</span> repr&#233;sentant une fonction f d&#8217;une variable x d&#233;finie en plusieurs morceaux:</p>
+<p><div style="text-align:center">{Si(%1&lt;-1,1-exp(pi*(%1+1)),%1&lt;0,sin(<span class="math">&#960;</span>*%1),sh(pi*%1))},</div></p>
+<p>c&#8217;est &#224; dire <span class="math"><em>f</em>(<em>x</em>)&#8196;=&#8196;1&#8197;-&#8197;<em>e</em><em>x</em><em>p</em>(&#960;(<em>x</em>&#8197;+&#8197;1))</span> si <span class="math"><em>x</em>&#8196;&lt;&#8196;&#8197;-&#8197;1</span>, <span class="math"><em>f</em>(<em>x</em>)&#8196;=&#8196;<em>s</em><em>i</em><em>n</em>(&#960;<em>x</em>)</span> si <span class="math">&#8197;-&#8197;1&#8196;&#8804;&#8196;<em>x</em>&#8196;&lt;&#8196;0</span>, <span class="math"><em>f</em>(<em>x</em>)&#8196;=&#8196;</span>sh<span class="math">(&#960;<em>x</em>)</span> sinon.</p></li>
+</ul>
+<h2 id="Solve">Solve</h3>
+<ul>
+<li><p><b>Solve( &lt;expression&gt;, &lt;variable&gt;, &lt;borne inf.&gt;, &lt;borne sup.&gt; [, n] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction &quot;r&#233;sout&quot; l&#8217;&#233;quation &lt;<em>expression</em>&gt;=0 par rapport &#224; la variable <strong>r&#233;elle</strong> &lt;<em>variable</em>&gt; dans l&#8217;intervalle d&#233;fini par &lt;<em>borne inf.</em>&gt; et &lt;<em>borne sup.</em>&gt;. Cet intervalle est subdivis&#233; en &lt;<em>n</em>&gt; parties [par d&#233;faut n=25] et on utilise la m&#233;thode de { Newton} sur chaque partie. La fonction renvoie la liste des r&#233;sultats.</p></li>
+<li><p><u>Exemple(s)</u> : </p>
+<ul>
+<li><p><span style="color:red">Solve(sin(x), x, -5, 5)</span> donne <span style="color:magenta">[-3.141593, 0, 3.141593]</span>.</p></li>
+<li><p>&#201;quation: <span class="math">$\displaystyle \int_0^x \exp(t^2)dt=1$</span>: <span style="color:red">Solve(Int( exp(u^2),u,0,x)-1, x, 0, 1)</span> donne <span style="color:magenta">0.795172</span> et l&#8217;ex&#233;cution de <span style="color:red">Int(exp(u^2), u, 0, 0.795172)</span> donne <span style="color:magenta">1</span>.</p></li>
+<li><p><span style="color:red">Solve( <span class="math"><em>x</em><sup>2</sup>&#8197;+&#8197;<em>x</em>&#8197;+&#8197;1</span>, x, -1, 1)</span> renvoie <em>Nil</em>.</p></li>
+</ul></li>
+</ul>
+<h2 id="Sort">Sort</h3>
+<ul>
+<li><p><b>Sort( &lt;liste de complexes&gt; [, option] )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction trie la liste pass&#233;e en argument dans l&#8217;ordre lexicographique, si l&#8217;argument &lt;<em>option</em>&gt; vaut 0 (valeur par d&#233;faut), ou dans l&#8217;ordre lexicographique inverse si l&#8217;argument &lt;<em>option</em>&gt; vaut 1. Cette liste doit &#234;tre une variable, et celle-ci sera modifi&#233;e. Si la liste contient la constante <em>jump</em> alors celle-ci est recopi&#233;e telle quelle dans le r&#233;sultat, et les &#248;g composantes connexes&#160;de la liste sont tri&#233;es ind&#233;pendamment les unes des autres. La fonction renvoie la valeur <em>Nil</em>.</p></li>
+<li><p><u>Exemple(s)</u> :  si la variable <span style="font-style:italic">L</span> contient la liste <span style="color:magenta">[-2,-3+i,1,1-2*i, jump, 3,5,-6]</span> alors apr&#232;s l&#8217;ex&#233;cution de <span style="color:red">Sort(L)</span>, la variable contiendra la liste <span style="color:magenta">[-3+i,-2,1-2*i,1,jump,-6,3,5]</span>, et apr&#232;s l&#8217;ex&#233;cution de <span style="color:red">Sort(L,1)</span>, la variable contiendra la liste <span style="color:magenta">[1,1-2*i,-2,-3+i,jump,5,3,-6]</span>. La m&#233;thode utilis&#233;e est le Quick Sort..</p></li>
+</ul>
+<h2 id="Special">Special</h3>
+<ul>
+<li><p><b>Special( &lt;cha&#238;ne&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction n&#8217;aura d&#8217;effet que dans un &#233;l&#233;ment graphique Utilisateur (comme les fonctions graphiques). L&#8217;argument doit &#234;tre une cha&#238;ne de caract&#232;res (d&#233;limit&#233;e par &quot; et &quot;), si cette cha&#238;ne contient les balises <code>\[</code>, et <code>\]</code>, alors tout le texte contenu entre ces deux balises est interpr&#233;t&#233; par TeXgraph et le r&#233;sultat est replac&#233; dans la cha&#238;ne. Puis cette cha&#238;ne sera &#233;crite telle quelle dans le fichier d&#8217;exportation (c&#8217;est en fait un Label cr&#233;&#233; avec LabelStyle= special).</p></li>
+<li><p><u>Exemple(s)</u> :  <span style="color:red">Special(&quot;&#92;psdot(&#92;[1+&#92;],&#92;[2^3&#92;] )&quot;)</span>, &#233;crira dans le fichier export&#233;: <span style="color:magenta">&#92;psdot(2,8)</span>.</p></li>
+</ul>
+<h2 id="Str">Str</h3>
+<ul>
+<li><p><b>Str( &lt;nom de macro&gt; )</b>.</p></li>
+<li><p><u>Description</u> : lors d&#8217;une &#233;valuation alphanum&#233;rique, cette fonction renvoie la d&#233;finition de la macro appel&#233;e &lt;<em>nom de macro</em>&gt; (sauf si c&#8217;est une macro pr&#233;d&#233;finie). En dehors de ce contexte, la fonction <span style="font-style:italic">Str</span> renvoie <em>Nil</em>. L&#8217;argument &lt;<em>nom de macro</em>&gt; est lui-m&#234;me interpr&#233;t&#233; comme une cha&#238;ne de caract&#232;res.</p></li>
+<li><p><u>Exemple(s)</u> :  supposons que la macro <span style="color:red">f</span> soit d&#233;finie par {%1+i*sin(%1)}, alors la commande {Label(0,[&quot;f(%1)=&quot;,Str(&quot;f&quot;)] )} affichera &#224; l&#8217;&#233;cran &#224; l&#8217;affixe 0, le texte: {f(%1)=%1+i*sin(%1)}.</p></li>
+</ul>
+<h2 id="StrArgs">StrArgs</h3>
+<ul>
+<li><p><b>StrArgs( &lt;entier&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction n&#8217;a d&#8217;effet que dans une macro, elle renvoie l&#8217;argument num&#233;ro &lt;<em>entier</em>&gt; avec lequel la macro a &#233;t&#233; appel&#233;e, sous forme d&#8217;une cha&#238;ne. Hors de ce contexte, elle renvoie la valeur <em>Nil</em>. Voir &#233;galement la commande <a href="#Args">Args</a></p></li>
+<li><p><u>Exemple(s)</u> :  Voir la fonction <a href="#Nargs">Nargs</a>.</p></li>
+</ul>
+<h2 id="StrComp">StrComp</h3>
+<ul>
+<li><p><b>StrComp( &lt;cha&#238;ne1&gt;, &lt;cha&#238;ne2&gt; )</b>.</p></li>
+<li><p><u>Description</u> : les deux arguments sont interpr&#233;t&#233;s comme une cha&#238;ne de caract&#232;res, et les deux cha&#238;nes sont compar&#233;es, si elles sont &#233;gales alors la fonction renvoie la valeur 1, sinon la valeur 0.</p></li>
+<li><p><u>Exemple(s)</u> :  la combinaison de touches: Ctrl+Maj+&lt;lettre&gt; lance automatiquement l&#8217;ex&#233;cution de la macro sp&#233;ciale: <span style="font-style:italic"> OnKey( &lt;lettre&gt; )</span>. L&#8217;utilisateur peut d&#233;finir cette macro avec par exemple la commande:</p>
+<p><div style="text-align:center">{if StrComp(%1, &quot;A&quot;) then Message(&quot;Lettre A&quot;) fi}</div></p></li>
+</ul>
+<h2 id="String">String</h3>
+<ul>
+<li><p><b>String( &lt;expression math&#233;matique&gt; )</b>.</p></li>
+<li><p><u>Description</u> : lors d&#8217;une &#233;valuation alphanum&#233;rique, cette fonction renvoie &lt;<em>expression math&#233;matique</em>&gt; sous forme d&#8217;une cha&#238;ne. En dehors de ce contexte, la fonction <span style="font-style:italic">String</span> renvoie <em>Nil</em>.</p></li>
+</ul>
+<h2 id="Stroke">Stroke</h3>
+<ul>
+<li><p><b>Stroke( &lt;element1&gt;, ..., &lt;elementN&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction recalcule les &#233;l&#233;ments graphiques &lt;<em>element1</em>&gt;, ..., &lt;<em>elementN</em>&gt;, puis les red&#233;ssine en mode NORMAL, et renvoie la valeur <em>Nil</em>.</p></li>
+<li><p><u>Exemple(s)</u> :  on a cr&#233;&#233; deux variables globales: <span class="math"><em>a</em></span> et <em>drawing</em>. On va cr&#233;er le cercle de centre a et de rayon 1, appel&#233; <span style="font-style:italic">objet1</span>, on souhaite pouvoir d&#233;placer cet objet &#224; la souris. Pour cela, on cr&#233;e la macro <span style="font-style:italic">ClicG</span> avec la commande:</p></li>
+</ul>
+<pre><code>          [PenMode:=1, {mode NotXor}
+           NewGraph(&quot;objet1&quot;, &quot;Cercle(a,1)&quot;),
+           PenMode:=0, {mode normal}
+           ReDraw(), {on montre}
+           drawing:=1]
+</code></pre>
+<p>on cr&#233;e la macro <span style="color:magenta">MouseMove</span> avec la commande: <span style="color:red">if drawing then a:=</span>,</p>
+<p>puis la macro <span style="color:magenta">LButtonUp</span> avec la commande: <span style="color:red">if drawing then Stroke(objet1), drawing:=0 fi</span>.</p>
+<p>La macro <span style="font-style:italic">ClicG</span> cr&#233;e l&#8217;objet1 en mode NotXor, rafra&#238;chit l&#8217;affichage graphique et passe en mode &quot;dessin&quot;. La macro <span style="font-style:italic"> MouseMove</span> permet de placer le centre &#224; la position de la souris, puis de d&#233;placer l&#8217;objet1. Lorsque le bouton gauche est rel&#226;ch&#233;, on dessine l&#8217;objet1 en mode normal, puis on quitte le mode &quot;dessin&quot;.</p>
+<h2 id="TeX2FlatPs">TeX2FlatPs</h3>
+<ul>
+<li><p><b>TeX2FlatPs( &lt;&quot;formule&quot;&gt; [, dollar(0/1)] )</b>.</p></li>
+<li><p><u>Description</u> : cette renvoie une &lt;<em>formule</em>&gt; {} sous forme d&#8217;une liste de chemins, le r&#233;sultat doit &#234;tre dessin&#233; avec la macro <a href="#drawFlatPs">drawFlatPs</a>. La &lt;<em>formule</em>&gt; est &#233;crite dans un fichier appel&#233; <em>formula.tex</em>. Ce fichier est appel&#233; par le fichier <em>formule.tex</em> qui se trouve dans le dossier de travail de TeXgraph, pour &#234;tre compil&#233; par {}. Si l&#8217;option &lt;<em>dollar</em>&gt; vaut <span class="math">1</span> alors la formule sera d&#233;limit&#233;e par <code>\]</code> et <code>\]</code>, sinon elle est &#233;crite telle quelle. Pour plus de renseignements sur la fa&#231;on dont sont r&#233;cup&#233;r&#233;s ces chemins, voir la commande <a href="#ReadFlatPs">ReadFlatPs</a>.</p></li>
+</ul>
+<h2 id="Timer">Timer</h3>
+<ul>
+<li><p><b>Timer( &lt;milli-secondes&gt; )</b>.</p></li>
+<li><p><u>Description</u> : r&#232;gle l&#8217;intervalle de temps pour le timer, celui ex&#233;cute r&#233;guli&#232;rement une certaine macro (que l&#8217;on peut d&#233;finir avec la commande TimerMac). Pour stopper le timer il suffit de r&#233;gler l&#8217;intervalle de temps &#224; 0.</p></li>
+</ul>
+<h2 id="TimerMac">TimerMac</h3>
+<ul>
+<li><p><b>TimerMac( &lt;corps de la macro &#224; ex&#233;cuter&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette commande permet de cr&#233;er une macro qui sera attach&#233;e au timer. L&#8217;argument est interpr&#233;t&#233; comme une cha&#238;ne de caract&#232;res et doit correspondre au corps de la macro (celle-ci sera app&#233;l&#233;e TimerMac). Pour des raisons de performances, il est pr&#233;f&#233;rable d&#8217;&#233;viter trop d&#8217;appels &#224; d&#8217;autres macros dans celle-ci. Cette fonction renvoie la valeur 1 si la macro est correctement d&#233;finie, 0 en cas d&#8217;erreur. Attention, l&#8217;ex&#233;cution de TimerMac ne d&#233;clenche pas le timer! Il faut utiliser la commande Timer pour cela.</p></li>
+<li><p><u>Exemple(s)</u> :  soit <span class="math"><em>A</em></span> une variable globale (un point), soit <em>dotA</em> un &#233;l&#233;ment graphique qui dessine le point, voil&#224; une commande qui d&#233;place <span class="math"><em>A</em></span>:</p>
+<p><div style="text-align:center"> <span style="color:red">[TimerMac(&quot;[Inc(A,0.1), if Re(A)&gt;5 then Timer(0) else ReCalc(dotA) fi]&quot;), A:=-5, Timer(10)]</span></div></p></li>
+</ul>
+<h2 id="VisibleGraph">VisibleGraph</h3>
+<ul>
+<li><p><strong>VisibleGraph( &lt;0/1&gt; )</strong> ou <b>VisibleGraph()</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;activer ou d&#233;sactiver la zone de dessin dans l&#8217;interface graphique. Lorsque celle-ci est d&#233;sactiv&#233;e, son contenu ne change plus car il n&#8217;y a plus de mise &#224; jour de la zone. D&#233;sactiver l&#8217;affichage graphique peut permettre dans certains cas un gain de temps pour enregistrer une animation par exemple.</p>
+<p>Lorsque l&#8217;argument est vide, la fonction renvoie simplement l&#8217;&#233;tat actuel de l&#8217;affichage graphique (0 ou 1). Sinon, elle renvoie <em>Nil</em>.</p></li>
+</ul>
+<h2 id="WriteFile">WriteFile</h3>
+<ul>
+<li><p><b>WriteFile( &lt;argument&gt; )</b>.</p></li>
+<li><p><u>Description</u> : cette fonction permet d&#8217;&#233;crire soit dans le fichier texte ouvert par la commande <a href="#OpenFile">OpenFile</a>, soit dans le fichier d&#8217;exportation si l&#8217;ex&#233;cution de cette commande a lieu pendant une exportation par l&#8217;interm&#233;diare des macros <a href="#Bsave">Bsave</a> et/ou <a href="#Esave">Esave</a>.</p></li>
+<li><p><u>Exemple(s)</u> :  voici ce que pourrait &#234;tre la macro <span style="font-style:italic">Bsave</span> pour modifier la taille des fl&#234;ches en pstricks:</p></li>
+</ul>
+<pre><code> if ExportMode=pst then WriteFile(&quot;\psset{arrowscale=3}&quot;) fi
+</code></pre>
+<div class="footnotes">
+<hr />
+<ol>
+<li id="fn1"><p>C&#8217;est la premi&#232;re occurrence de &lt;<em>variable</em>&gt; dans &lt;<em>expression</em>&gt; qui est assign&#233;e, car toutes les occurrences pointent sur la m&#234;me &lt;case m&#233;moire&gt;, sauf &#233;ventuellement pour les macros apr&#232;s l&#8217;affectation des param&#232;tres. <a href="#fnref1" class="footnoteBackLink" title="Jump back to footnote 1">&#8617;</a></p></li>
+<li id="fn2"><p>Si par exemple on veut tracer la courbe repr&#233;sentative de cette fonction, dans l&#8217;option <em>Courbe/Param&#233;tr&#233;e</em>, il faudra saisir la commande <em>t+i*<span class="math">&#8197;&#8726;&#8197;</span>df</em> et non pas <em>t+i*df(t)</em>. <a href="#fnref2" class="footnoteBackLink" title="Jump back to footnote 2">&#8617;</a></p></li>
+<li id="fn3"><p>Il n&#8217;est pas n&#233;cessaire de d&#233;clarer les variables, elles sont implicitement locales et initialis&#233;es &#224; <em>Nil</em> sauf si c&#8217;est le nom d&#8217;une variable globale ou d&#8217;une constante pr&#233;d&#233;finie (comme i, <span class="math">&#960;</span>, e, ...). <a href="#fnref3" class="footnoteBackLink" title="Jump back to footnote 3">&#8617;</a></p></li>
+</ol>
+</div>

Licence Creative Commons Les fichiers de Syracuse sont mis à disposition (sauf mention contraire) selon les termes de la
Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.