# let operation vs tkz-euclide

Before put my question to give some explanation of why I do this question. When I started to use the TeX a matter of luck that I started working with LaTeX (xelatex) and not with LuaTex for example. But now as little more experienced user does not want to leave things to luck.

Well my question:

Because I want to create several similar shapes and I do not want to go back and to fix them can you tell me in your opinion which method - pack of those presented to this question

arc that passes from (B) having a center on (A), automatically calculates (AB) distance

offers me more possibilities - options. The method with let operation or the method tkz-euclide of course there is the method with PSTricks (although I did not use it but it is never too late)

I do not know if I put my question correctly because let operation is not package ... but I hope you understand.

I would like namely to tell me the advantages and disadvantages of each method (I do not want to hurry to give myself my own right choice but I want the users through their vote to decide).

I know my question is rather general and perhaps closed ... but my concern is real

(because my English does not help me if you understand the meaning of my question please correct where necessary to have better sense)

1ο update:

To clarify ... my concern is mainly on the possibilities of let operation and tkz-euclide and not on features differences between tikz and PSTricks, I think this is covered on the links you indicated

-
tikZ experts will vote for tikZ and PSTricks experts for PSTricks ... and there is no expert in the whole wide world who is it for both and can give a good answer. – Herbert Mar 13 '13 at 8:00
@Herbert certainly this is true .... but let us hear their arguments and then we decide – karathan Mar 13 '13 at 8:12
@Herbert ... here are given the opportunity to anyone who has a package not only what I said to present and support it. – karathan Mar 13 '13 at 8:17
This is similar to tex.stackexchange.com/q/6676/15925 – Andrew Swann Mar 13 '13 at 9:04
– percusse Mar 13 '13 at 12:10

I can help you to clarify the question. You need to add pst-eucl in your question. The most important thing is

Because I want to create several similar shapes and I do not want to go back and to fix them can you tell me in your opinion which method offers me more possibilities - options.

Part 1) _Tikz Pstricks tkz-euclide pst-eucl_

Firstly you can't compare my little package tkz-euclide with main packages like Pgf-tikz and pstricks.

On one hand tkz-euclide is a package based on Pgf-tikz and on other hand pst-eucl is a package based on pstricks. These packages allow the drawing of Euclidean geometric figures using macros for specifying mathematical constraints.

If you want to create several similar shapes you need to make a choice between a general tool like pgf or pstricks and a specialized package like tkz-euclide or pst-eucl.

I agree with Herbert, it's not easy to give a correct answer. I can only say that I prefer tikz because I like the syntax, the documentation but this is just my opinion and these arguments are not necessarily objectives. Perhaps you can also find it strange that my package syntax is different from that of tikz. To understand why... I can also tell you why I wrote tkz-euclide.

My idea was like you to create several similar Euclidean geometric figures. A fine tool was pst-eucl so I decided to create a similar tool based on tikz. There are a lot of similitudes between pst-eucl and tkz-euclide. I made a mix ... the names of the macros are based on pst-eucl and the options are based on tikz. The syntax is also a mix.

An important thing is that you can mix tikz and tkz-euclide (see my answer on your first question)

Conclusion : tkz-euclide is a tool to create similar geometric figures without knowing the complete documentation of tikz. And it's the same thing for pst-eucl and pstricks.

Part 2) Update _let operation vs tkz-euclide_

The question is now ore precise. In a perfect world, tkz-euclide is unnecessary. A fine solution would be to write a library euclide to provide some useful tools to get geometrical figures with simple codes. I wrote the first version of tkz, before some libraries of pgf/tikz without the let operation without the intersections library. Now I need to update the package to add new macros for the user and the possibility to use name path and something like let.

a) The package is based on tikz but the syntax is different b) if you work with tkz-euclide, you can't use something like let or name path. It's possible to mix syntax and codes but I agree it's not satisfactory. c) Like Tikz calculations depend of TeX and it's a bad thing. Perhaps lua can change a lot of things. I agree with Garbage Collector, Pstricks with postscript is more powerful to make complex calculations.

If you only want to draw geometrical figures the package can facilitate the creation of severals shapes. If you want to use tikz

A recent example (yesterday), the next code shows a bug :

\documentclass{article}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usetikzlibrary{through,intersections}

\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-0.5,xmax=14.5,ymin=-0.5,ymax=7]
\tkzClip
\tkzDefPoints{0/0/A, 13/0/B}
\tkzDefMidPoint(A,B) \tkzGetPoint{M}
\tkzDefLine[orthogonal=through B](A,B) \tkzGetPoint{C}
\tkzInterLC(B,C)(B,M) \tkzGetSecondPoint{C}
\tkzInterLC(A,C)(C,B) \tkzGetFirstPoint{D}

%\node [name path=ci,circle through=(B)]  at (C) {};
%\path [name path=A--C] (A) -- (C);
%\path [name intersections={of=ci and A--C,by={D}}];
\tkzInterLC(A,B)(A,D) \tkzGetSecondPoint{S}

\tkzDrawSegment[color=red](A,S)
\tkzDrawSegment[color=blue](S,B)
\tkzDrawSegment[thin](A,C)
\tkzDrawSegment[thin](B,C)

\tkzDrawArc[delta=10](C,D)(B)
\tkzDrawArc[delta=10](B,C)(M)
\tkzDrawArc[delta=10](A,S)(D)
\tkzDrawPoints(A,B,C,D,S,M)
\tkzLabelPoints[above left](A,B,C,D,S,M)
\end{tikzpicture}
\end{document}


The result seems to be fine but if you look at the figure in B with a zoom, you see that :

It's probably a rounding error. The mistake comes from the macro \tkzInterLC. A solution is to use some codes from Tikz, an I can replace : \tkzInterLC(A,C)(C,B) \tkzGetFirstPoint{D} by

 \node [name path=ci,circle through=(B)]  at (C) {};
\path [name path=A--C,red] (A) -- (C);
\path [name intersections={of=ci and A--C,by={D}}];


You can see that the code from tikz is very different and less concise.

This is ironic. I used the fp package with the tkz packages to avoid these kinds of problems (there are other problems like this with tikz) but it seems to be insufficient.

Conclusion. Tikz is very useful for a lot of things and I think it's a good idea to study this tool. If you don't have a lot of time and if you want to draw only geometrical figures tkz-euclide can help you. It's obvious that it's possible to draw all the pictures with only Tikz but sometimes it's not easy when you want to draw complex figures (but Tikz is not a mathematical tool !).

-
My english is not very good as it might be a good thing someone corrects my mistakes. – Alain Matthes Mar 13 '13 at 18:57
Your response to my concern is very important (as author of tkz-euclide). I am really confused ... perhaps begin to put a series in my mind. – karathan Mar 13 '13 at 19:20
Could you please modify my question if you think I should correct it, welcome any changes as I have written. :) – karathan Mar 13 '13 at 19:30

This is another longish comment. I think you are overwhelmed with the variety of options within TikZ which I consider it to be a great advantage. First this let operation...

TikZ/PGF has a layered structure. TikZ part is the frontend where you literally type what you want to do and I can't overemphasize how much thought went into that (having a big influence from PSTricks is also quite visible). But the stuff that is literal and easy to use is mapped back to lower level PGF commands, example:

\draw (0,0) -- (1,1);


is, roughly mapped to

\pgfpathmoveto{\pgfpointorigin}
\pgfpathlineto{\pgfpoint{1cm}{1cm}}
\pgfusepath{stroke}


This is the lower level that is being mentioned in the manual etc. These are once more mapped to a stream of system level commands like (I'm really approximating here)

\pgfsys@moveto{0pt}{0pt}
\pgfsys@lineto{1cm}{1cm}
\pgfsys@stroke


These last ones are actually great convenience since they translate into PDF or PS specials depending on your compilation driver where PSTricks use only the mighty PostScript. Now when you start a let operation it causes a \pgfextra{...} instruction which pauses the current path construction computes some stuff such as length and angle as we did in the previous question and records it into some macros such as \p1,\n2 etc. Then resumes the path with those macro values remembered.

Coming back to the PSTricks discussion, I think you already have an idea how powerful it is compared to TikZ but it's usability and the steepness of the learning curve is often gets in the way. But that's not a major obstacle but let's leave that discussion for the linked questions. We all hail to Herbert. There is also Asymptote which is yet another monster but that's again irrelevant.

We also have the TKZ-family which is a layer in the opposite direction namely it's built on top of TikZ. Again they are the great accomplishments of our Alain Matthes (or Altermundus as we have known him) In other words, its commands invoke TikZ and PGF commands in the background. So it might happen that some of them might use a let or \pgfextra{} behind the scenes however the usage is super easy and it really does a great job immitating pst-eucl without typing out a let or whatever each time you want to mark an angle etc.

Long story short, it's all two and a half main families; TikZ/PGF, PSTricks and Asymptote. within these families you have lots of varieties but still they all come back to the same primitive commands. So, you only need to decide on what you want to do and choose the easiest way out.

-

Assume we have constraints as follows:

1. We need better typography with microtype package.

2. Sometimes we need to annotate some parts of the text in a document or in your presentation with beamer.

3. We intensively need to draw standalone diagrams.

4. Sometimes we need to draw 3D diagrams involving 3D projection, etc.

My consideration is as follows

1. Use microtype package and compile the main TeX input file with pdflatex.

2. As we use pdflatex for compiling the main TeX file, any annotation must be done with TikZ. In most cases, the annotations are so simple that grasping basic knowledge of TikZ should be more than enough.

3. For 2D drawing, both TikZ and PSTricks are great and powerful. We can choose either one. Write the diagram with standalone documentclass, compile with proper compiler and make sure all standalone diagrams are in PDF such that they can be imported from the main TeX input file.

4. PSTricks is superior in 3D drawing. See Manuel Luque's blog to see how sophisticated PSTricks in 3D drawing. Write the diagram with standalone document class, compile with latex-dvips-ps2pdf (faster) or xelatex (slower) to get PDF outputs that consumable for the main TeX input file.

## Summary:

• If you are bound to all constraints above

• and if you have limited time and memory, I think devoting time for mastering PSTricks should be in the correct path. :-) Or Waiting for someone to create better 3D suppport for TikZ will waste time.

• you need to consider that putting PSTricks as the main tool and TikZ as the second tool (just for inline annotations in pdflatex compilation) should be more efficient than putting TikZ as the main tool and PSTricks as the second tool (just for 3D drawing support).

• If you don't need 3D capability, use TikZ only.

• If you don't need inline anotation in the text or presentation with beamer, use PSTricks only.

Note: It is my personal opinion and please correct my bad English sentences (if any).

-
This is not because a package is more powerful than another, it is superior. It's your opinion but you need to consider the syntax, the documentation and the ease of use. These considerations depend of each user and I think it's not possible to give a correct answer. I'm not sure it's a good idea to choice a package with 3D consideration. You can also get 3D figures with Asymptote if you need a powerful tool. – Alain Matthes Mar 13 '13 at 22:02
@AlainMatthes: PSTricks syntax seems to be good enough (but there is inconsistency, for sure) but I admit its adopted naming conventions are rather inconsistent (plus counter intuitive) and the documentations are a bit difficult to understand (because of the language and less detailed explanation). :-) – kiss my armpit Mar 13 '13 at 22:25