On 2013-01-11 07:21:35 +0000, Paul Gaborit said:
> À (at) Thu, 10 Jan 2013 08:59:13 -0800 (PST),
>
michel....@wanadoo.fr écrivait (wrote):
>
>> N'y voyez aucun reproche, je cherche seulement à comprendre pourquoi
>> faire une macro "equilatera with" est mieux que d'utiliser le travail
>> de quelqu'un que je tiens à féliciter et remercier encore une fois
>> ici.
>
> Malgré toutes ses qualités (et celles de son auteur), tkz-euclide n'est
> pas du tout écrit dans l'esprit de la syntaxe TikZ et ne s'intègre que
> difficilement avec toutes les autres extensions de TikZ.
>
> L'intérêt de passer par une clé 'equilateral with' vient à la fois de la
> simplicité de la syntaxe et de la possibilité de l'utiliser en de
> nombreuses circonstances en TikZ (par exemple, en plein milieu de la
> définition d'un path) ce que les macros de tkz-euclide ne permettent pas
> sauf à passer par un appel à \pgfextra (et souvent combiné à un appel au
> couple \pgfinterruptpath, \endpgfinterruptpath).
>
> En fait, quand je vois les macros proposées par tkz-euclide, j'ai
> presque l'impression inverse de la vôtre : c'est du code qui en est
> resté à la syntaxe de (La)TeX alors que TikZ offre des mécanismes
> d'extension de sa syntaxe beaucoup plus souples et adaptés !
Une réponse bien tardive mais je n'ai pas lu fctt depuis un bon moment.
Je suis globalement d'accord avec ce que Paul a écrit. Quelques
compléments cependant...
tkz-euclide a été créé pour aider des profs de maths à faire leurs figures
sous latex sans trop se prendre la tête, sans avoir à lire des centaines de
pages de doc et sans forcément apprendre à programmer avec Tikz et Tex.
a) Pour cela, j'ai utilisé une syntaxe proche de latex, également
proche de pst-eucl
pour ceux qui connaissaient déjà ce package sous pstricks.
b) J'ai donné de multiples exemples pour que ces profs puissent avoir
une bibliothèque où puiser leur inspiration et ne pas avoir à programmer
sans arrêt.
D'accord avec Paul, sur les problèmes de syntaxe. J'adore celle de Tikz
et à certains moments, j'ai regretté l'écriture des tkz-??? mais si mon
intention première était d'écrire une librairie tikzienne, je me suis
vite rendu
compte que la mission étaient presque impossible ( à l'époque avant pgfkeys et
la version 2.1 de pgf).
Un clone de pst-eucl était plus aisée, mais dans ce cas je ne pouvais
conserver la syntaxe de Tikz.
Tikz bien sûr est plus souple et plus puissant, mais la question est de savoir
si on veut apprendre à faire n'importe quoi avec TikZ et à le maîtriser
complètement ou bien simplement faire quelques figures de géométrie.
D'accord, avec Paul sur le fait que TkZ pose des problème lorsque l'on
veut définir
des objets au beau milieu d'un path. Il est bien difficile de faire rimer
facilité avec complexité. On peut toutefois placer du code tikzien
entre du code de tkz, même si esthétiquement ce n'est pas très beau et j'avoue
que je déteste le faire et qu'il est préférable de l'éviter.
Ces quelques explications me permettent d'émettre certains avis sur les
solutions proposées:
Premièrement, il faut une douzaine de posts avant d'arriver à une très
bonne solution
tikzienne...
Je trouve assez difficile à digérer : ($($(A)!+.5!(B)$)!2!90:(B)$) qui
devrait être
($($(A)!+.5!(B)$)!sqrt(3)!90:(B)$) . Plus simple serait de proposer la
création intermédiaire
du milieu du segment.
On trouve des explications du code dans le pgfmanual mais il faut déjà que le
lecteur comprenne les subtilités entre
⟨coordinate⟩!⟨number⟩!⟨angle⟩:⟨second coordinate⟩
⟨coordinate⟩!⟨dimension⟩!⟨angle⟩:⟨second coordinate⟩
⟨coordinate⟩!⟨projection coordinate⟩!⟨angle⟩:⟨second coordinate⟩
Pour le non matheux, c'est assez catastrophique.
Ensuite, vous avez proposé \def\equilat#1#2#3{($(#1)!1!-60:(#2)$)
coordinate (#3)}
À la complexité de la formule avec TikZ, s'ajoute une petite couche de
TeX avec manipulation
d'arguments et le résultat au niveau de de la syntaxe de TikZ est, il
me semble, horrible :
\path \equilat{I}{J}{K};
Finalement la bonne voie et la très solution est ($(I)!1!-60:(J)$);
si on comprend que c'est une rotation autour de I.
Si on ne veut pas réinventer la roue à chaque fois:
\tikzset{
equilateral with/.style args={#1 and #2}{
at={($(#1)!1!60:(#2)$)},
}
} aver \coordinate[equilateral with=I and J](K);
est excellent mais là il faut avoir jeter un oeil à pgfkeys, (pas si
évident que cela),
connaître "style arg" et surtout "at={(a,b)}" qui n'est pas l'option
la plus représentée
dans le manuel.
CE que je veux faire remarquer ici, est qu'il faut tenir compte du
niveau de l'utilisateur,
de combien de temps, il peut consacrer à son apprentissage.
La conclusion serait qu'il est peut-être intéressant de créer une
librairie "euclide"
pour tikz en regroupant des styles comme "equilateral with". J'ai du
mal à évaluer
si on peut obtenir quelques chose de complet.
Il reste une dernière remarque, c'est la précision des calculs. Si je
suis passé également
avec tkz à une sur-couche au-dessus de tikz, c'était à l'époque pour
pouvoir utiliser
fp.sty, que Tantau ne voulait pas (depuis sa position a évoluée). En effet,
sans fp, je trouve très délicat certains calculs pour des changements
de repères
et positionnement de grille. Certains calculs dans les "projections
modifiers" ne sont pas terribles
comme l'exemple du pgfmanual :
\begin{tikzpicture}
\draw [help lines] (0,0) grid (3,2);
\coordinate (a) at (0,1);
\coordinate (b) at (3,2);
\coordinate (c) at (2.5,0);
\draw (a) -- (b) -- (c) -- cycle;
\draw[red] (a) -- ($(b)!(a)!(c)$);
\draw[orange] (b) -- ($(a)!(b)!(c)$);
\draw[blue] (c) -- ($(a)!(c)!(b)$);
\end{tikzpicture}
Si on effectue un gros zoom, on voit que les hauteurs ne sont pas concourantes.
Dans le document suivant l'auteur a repris de nombreux exemples que
j'ai créé avec tkz
uniquement avec tikz, cela peut donner des idées à ceux qui veulent
uniquement utiliser tikz
http://www.guit.sssup.it/downloads/TikZxGuit2.pdf
Alain