C'est surtout pour montrer ce que j'aimerais faire pour les prochaines versions de TeXgraph au niveau de l'homogénéité des commandes de dessin 2d:
Pour l'instant le fichier ne définit que les types: line, dot, cartesian, polar, parametric (les 3 derniers faisant appel au premier). Outre l'homogénéité, les avantages sont les suivants:
- On peut ajouter de nouvelles options ou styles à un type, cela ne remet pas en cause la syntaxe. Par exemple, j'ai ajouté le FillStyle:=gradient, ainsi que LineStyle:=gradient, DotStyle:=pix dans ce modèle, ainsi que l'option marker:=[pos1, marker1, pos2, marker2, ...].
- On peut ajouter ou modifier les exports d'un type sans modifier le source de TeXgraph. Par exemple pour le type line: la commande draw("line", ...) va appeler la macro Drawline lors du rendu écran, et Exportline lors d'un export, si cette dernière n'existe pas, alors TeXgraph procède à l'export par défaut.
- On peut créer ses propres types, par exemple pour créer le type "domaine1", il faut créer la macro Drawdomaine1(données, [options] ), si on veut un export personnalisé, alors il faut aussi créer la macro Exportdomaine1( données, [options] ).
- Code: Tout sélectionner
{Drawdomaine1( f(x), [options] )}
[
SaveAttr(),
x:=if ForMinToMax then [Xmin,Xmax] else [tMin,tMax] fi,
discont:=0, nbdiv:=5,
$options:=%2,
tMin:=x[1], tMax:=x[2], x:=Nil,
if Free(%1,x) then $L1:=Get(Courbe(t+i*%1,nbdiv),0)
else $L1:=Get(Cartesienne(%1,nbdiv),0)
fi,
draw("line", [tMin, for $z in L1 By jump do z od, tMax], [%2,close:=0]),
RestoreAttr()
]
Un exemple d'élément graphique et son résultat:
- Code: Tout sélectionner
[
frenchBabel:=1, {si le document utilise l'option french de Babel}
draw( "line", [-4.5+i,-0.5+i,-3+4*i],
[FillStyle:=gradient, colorA:=white, colorB:=darkblue, gradstyle:=radial, radialcenter:=0.5+i*0.5, close:=1] ),
Width:=8,
draw( "cartesian", Ent(x),
[x:=[-4,4], discont:=1, Color:=red, marker:=[0,Dot,1,Oarc] ] ),
draw( "domaine1", sin(x)-2,
[x:=[1,4], Color:=forestgreen, FillStyle:=gradient, gradstyle:=horizontal, colorA:=white, colorB:=gray] ),
Axes(0,1+i)
]
pour les options, voici les variables du fichier:
- Code: Tout sélectionner
Var
pix = -1; {style pixel pour DotStyle, nécessite un NewBitmap() dans l'élément graphique}
x = 1/0; {option intervalle pour les courbes cartesiennes x:=[-5, 4], pour les autres c'est t:=[ ; ]}
discont = 0; {discontinuité (0/1) pour les courbes}
nbdiv = 5; {nb de dichotomies pour les courbes}
marker = Nil; {liste de marqueurs [pos1, type1, pos2, type2, ...] où pos est entre 0 et 1}
{type de marker}
Oarc = 1; {arc ouvert}
Carc = 1+i; {arc fermé}
Ocro = 3; {crochet ouvert}
Ccro = 3+i; {crochet fermé}
Circle = 7; {cercle}
Dot = 2; {point}
Oarrow = 4; {flèche ouverte}
Carrow = 4+i; {flèche fermée}
OTarrow = 5; {flèche triangulaire ouverte}
CTarrow = 5+i; {flèche triangulaire}
{dimensions des markers, utiliser l'option size:= }
arcSize = 0.1;
{dotSize = 2;}
croHeight = 0.1 {cm};
croWidth = 0.05;
arrowHeight = 0.1;
arrowWidth = 0.15;
Line = 6;
lineHeight = 0.1;
{style gradient}
gradient = 8; {style pour FillStyle ou LineStyle}
colorA = white;
colorB = red;
frenchBabel = 0; {pour l'export tikz et pgf il y a un conflit avec les caractères actifs de Babel}
gradstyle = horizontal; {radial/horizontal/vertical}
radial = 5;
radialcenter = 0.25+075*i; {pour le style radial, le centre est dans [0;1]x[0;1]}
SvgGradient = 0; {pour les exports en svg}
{options déjà définies
scale = 1; pour les marker
close = 0; pour le type line
radius = 0 pour le type line}
Si vous avez un avis sur cette uniformisation de la syntaxe, ou des idées supplémentaires, n'hésitez pas! Bien sûr ce fichier n'est qu'une ébauche.