1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
\newpage
\section{Writing Convention} % (fold)
\label{sec:writing_convention}
\subsection{Miscellaneous} % (fold)
\label{sub:miscellanous}
\begin{itemize}
\item Numerical variable: the writing conventions for real numbers are the same as for \pkg{Lua}.
\item Complex numbers: as for real numbers but to define them you must write |za = point (1,2)|. Mathematically, this corresponds to 1+2i, which you can find with |tex.print(tostring(za))|.(see \ref{sub:complex_numbers})
\item Boolean: you can write |bool = true| or |bool = false| then with Lua you can use the code :\\
\begin{mybox}
|if bool == ... then ... else ... end|
\end{mybox}
and outside the environment \tkzNameEnv{tkzelements} you can use the macro
\begin{mybox}
|\ifthenelse{\equal{\tkzUseLua{bool}}{true}}{ ... }{ ... }|
\end{mybox}
after loading the \tkzNamePack{ifthen} package.
\item String: if st = "Euler's formula" then \begin{mybox}
|\tkzUseLua{st}| gives |Euler's formula|
\end{mybox}
\end{itemize}
% subsection miscellanous (end)
\subsection{Assigning a Name to a Point} % (fold)
\label{sub:assigning_a_name_to_a_point}
Currently the only obligation is to store the points in the table |z| \footnote{To place the point M in the table, simply write |z.M| = \ldots or |z["M"]|= \ldots} if you want to use them in \TIKZ\ or \pkg{tkz-euclide}. If it is a point which will not be used, then you can designate it as you wish by respecting the conventions of Lua.
The points which occur in the environment \tkzNameEnv{tkzelements} must respect a convention which is |z.name| such that |name| will be the name of the corresponding \tkzname{node}.
What are the conventions for designating |name|? You have to respect the Lua conventions in particular cases.
\begin{enumerate}
\item The use of prime is problematic. If the point name contains more than one symbol and ends with |p| then when passing into \pkg{TikZ} or \pkg{tkz-euclide}, the letters |p| will be replaced by |'| using the macro \tkzcname{tkzGetNodes}; \index{prime}
\item One possibility, however, in order to have a more explicit code is to suppose that you want to designate a point by "euler". It would be possible for example to write |euler = ...|, and at the end of the code for the transfer, |z.E = euler|. It is also possible to use a temporary name |euler| and to replace it in \TIKZ{}. Either at the time of placing the labels, or for example by using |pgfnodealias{E}{euler}|. This possibility also applies in other cases: prime, double prime, etc.
\end{enumerate}
Here are some different ways of naming a point:
\begin{mybox}
\begin{itemize}
\item |z.A = point : new (1,2)|
\item |z.Bp = point : new (3,4)| --> this gives |B'| in the \tkzNameEnv{tikzpicture}
\item |z.H_a = T.ABC : altitude ()| --> this gives |H_a| in the \tkzNameEnv{tikzpicture} code and $H_a$ in the display.
\end{itemize}
\end{mybox}
% subsection assigning_a_name_to_a_point (end)
\subsection{Assigning a Name to Other Objects} % (fold)
\label{sub:assigning_a_name_to_other_objects}
You have the choice to give a name to objects other than points. That said, it is preferable to respect certain rules in order to make the code easier to read.
I have chosen for my examples the following conventions: first of all I store the objects in tables: |L.name| for lines and segments, |C.name| for circles, |T.name| for triangles, |E.name| for ellipses.
For lines, I use the names of the two points. So if a line passes through points $A$ and $B$, I name the line |L.AB|.
For circles, I name |C.AB| the circle of center $A$ passing through $B$, but something like |C.euler| or |C.external| is fine.
For triangles, I name |T.ABC| the triangle whose vertices are $A$, $B$ and $C$ but |T.feuerbach|.
For ellipses, I name |E.ABC| the ellipse with center $A$ through vertex $B$ and covertex $C$.
% subsection assigning_a_name_to_other_objects(end)
\subsection{Writing conventions for attributes, methods.} % (fold)
\label{sub:writing_conventions_for_attributes_methods_and_functions}
You must use the conventions of Lua, so
\begin{itemize}
\item To obtain an \Amacro{attribute}, for all objects, the convention is identical: |object.attribute|. For example, for the point $A$ we access its abscissa with |z.A.re| and its ordinate with |z.A.im|; as for its type we obtain it with |z.A.type|. To get the south pole of the circle |C.OA| you need to write: |C.OA.south|.
\item To use a method such as obtaining the incircle of a triangle ABC, just write
|C.incircle = T.ABC : in_circle ()|.
\item Some methods need a parameter. For example, to know the distance between a point $C$ to the line $(A,B)$ we will write
|d = L.AB : distance (z.C)|.
\item Use the \Amacro{underscore} to store a result you don't want to use. If you only need the second point of an intersection between a line and a circle, you would write
|_,z.J = intersection (L.AB , C.OC)|.
\end{itemize}
% section writing_convention (end)
\endinput
|