texlive[71827] Master/texmf-dist: tkz-elements (17jul24)

commits+karl at tug.org commits+karl at tug.org
Wed Jul 17 21:41:11 CEST 2024


Revision: 71827
          https://tug.org/svn/texlive?view=revision&revision=71827
Author:   karl
Date:     2024-07-17 21:41:10 +0200 (Wed, 17 Jul 2024)
Log Message:
-----------
tkz-elements (17jul24)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-ellipse.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-matrices.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-misc.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-regular.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-intersection.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/tkz-elements.pdf
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
    trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,10 +1,10 @@
 # tkz-elements — for euclidean geometry
 
-Release 2.25c 2024/04/28
+Release 2.30c 2024/07/16
 
 ## Description
 
-`tkz-elements v.2.25c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`. 
+`tkz-elements v.2.30c` is the new version of a library written in lua, allowing to make all the necessary calculations to define the objects of a Euclidean geometry figure. You need to compile with `LuaLaTeX`. With `tkz-elements`, the definitions and calculations are only done with `Lua`. 
 
  The main possibility of programmation  proposed is oriented "object programming" with object classes like point, line, triangle, circle and ellipse.  For the moment, once the calculations are done, it is `tkz-euclide` or `TikZ` which allows the drawings. You can use the option `mini` with `tkz-euclide` to load only the modules required for tracing.
 
@@ -62,6 +62,15 @@
 are on the site.
 
 ## History
+
+   - version 2.30c
+       - new version of the macro `\tkzGetNodes` written by Sanskar Singh. This version now fixes a bug that prevented a figure from being centred with `centering` or the `center` environment.
+       - adding methods  `bevan_circle`, `symmedial_circle`.
+       - correction of the methods `function triangle: bevan_point ()` and `function triangle: mittenpunkt_point ()`.
+       - adding `function triangle: similar ()`
+       - adding `function line : perpendicular_bisector ()` which is similar to `function line : mediator ()` 
+       - correction of documentation.
+   
    - version 2.25c
        - French documentation at my site:  [http://altermundus.fr](http://altermundus.fr)
        - Added `colinear_at` a new method for the classe `line`

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -25,8 +25,8 @@
 \Iattr{circle}{south}   &  |C.AB.south|  &    |z.S = C.OA.south| \\
 \Iattr{circle}{east}    &  |C.AB.east|   &   |z.E = C.OA.east| \\
 \Iattr{circle}{west}    &  |C.AB.west|   &   |z.W = C.OA.west| \\
-\Iattr{circle}{opp}    &  |z.Ap = C.AB.opp|   & Refer to    (\ref{ssub:example_circle_attributes})  \\
-\Iattr{circle}{ct}    &  |L = C.AB.ct|   & Refer to (\ref{ssub:example_circle_attributes})   \\
+\Iattr{circle}{opp}    &  |z.Ap = C.AB.opp|   & [\ref{ssub:example_circle_attributes}]  \\
+\Iattr{circle}{ct}    &  |L = C.AB.ct|  [ \ref{ssub:example_circle_attributes} ]  \\
 \bottomrule %
 \end{tabular}
 \egroup
@@ -71,8 +71,8 @@
    z.c   = C.ab.opp
    z.r,z.t = get_points (C.ab.ct : ortho_from (z.b))
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
+
+\emph{\begin{tikzpicture}
 \tkzGetNodes
 \tkzDrawPoints(a,b,c,s,w)
 \tkzLabelPoints(a,b,c,s,w)
@@ -79,8 +79,8 @@
 \tkzDrawCircle(a,b)
 \tkzDrawSegments(a,b r,t b,c)
 \tkzLabelSegment[sloped](a,b){ab = \tkzUseLua{r}}
-\end{tikzpicture}
-\hspace*{\fill}
+\end{tikzpicture}}
+
 \end{minipage}
 % subsubsection example_circle_attributes (end)
 % subsection attributes_of_a_circle (end)
@@ -96,184 +96,314 @@
 \toprule
 \textbf{Methods} & \textbf{Comments}   & \\
 \midrule   \\
-\Igfct{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & circle  center $O$ through $A$\\
-\Igfct{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & circle  center $O$ radius =2 cm\\
-\Igfct{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & circle diameter $[AB]$  \\
+\Igfct{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & center $O$ through $A$; [\ref{ssub:method_imeth_circle_new}]\\
+\Igfct{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & center $O$ radius =2 cm; [\ref{ssub:method_imeth_circle_radius}]\\
+\Igfct{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & diameter $[AB]$; [\ref{ssub:method_imeth_circle_diameter}]  \\
 \midrule 
  \textbf{Points} &&\\
 \midrule 
-\Imeth{circle}{antipode (pt)} & |z.C = C.OA: antipode (z.B)| &    $[BC]$ is a diameter   \\
-\Imeth{circle}{inversion (pt)} & |z.Bp = C.AC: inversion (z.B)|&\\
-\Imeth{circle}{midarc (pt,pt)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$\\
-\Imeth{circle}{point (r)} & |z.E = C.AB: point (0.25)|& |r| between 0 and 1\\
+\Imeth{circle}{antipode (pt)} & |z.C = C.OA: antipode (z.B)| &    $[BC]$ = diameter;  [\ref{ssub:method_imeth_circle_antipode}]   \\
+\Imeth{circle}{midarc (pt,pt)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$; [\ref{ssub:method_imeth_circle_midarc}]\\
+\Imeth{circle}{point (r)} & |z.E = C.AB: point (0.25)|& |r| between 0 and 1;  [\ref{ssub:method_imeth_circle_point}]\\
 \Imeth{circle}{random\_pt(lower, upper)} & &\\
-\Imeth{circle}{internal\_similitude (C)}  &  |z.I  = C.one : internal_similitude (C.two)| &\\
-\Imeth{circle}{external\_similitude (C)} &    |z.J  = C.one : external_similitude (C.two)|  & \\ 
-\Imeth{circle}{radical\_center (C1<,C2>)} &  or only (C1) & Refer to \ref{sub:radical_center}   \\
+\Imeth{circle}{inversion (obj)} & |z.Bp = C.AC: inversion (z.B)|& [\ref{ssub:inversion}]\\
+\Imeth{circle}{internal\_similitude (C)} & |z.I= C.one: internal_similitude(C.two)| &  [\ref{ssub:method_imeth_circle_internal__similitude}]\\
+\Imeth{circle}{external\_similitude (C)} & |z.J= C.one: external_similitude(C.two)| &  [\ref{ssub:method_imeth_circle_external__similitude}] \\ 
+\Imeth{circle}{radical\_center (C1<,C2>)} & or only (C1) & [\ref{ssub:radical_center} ]  \\
 \midrule 
  \textbf{Lines} & & \\
 \midrule 
-\Imeth{circle}{radical\_axis (C)} &  Refer to ( \ref{sub:d_alembert_2} ; \ref{sub:radical_axis_v1} ; \ref{sub:radical_axis_v2} ; \ref{sub:radical_axis_v3} ; \ref{sub:radical_axis_v4})& \\
-\Imeth{circle}{tangent\_at (pt)} & |z.P = C.OA: tangent_at (z.M)| & Refer to (\ref{ssub:lemoine} ; \ref{ssub:example_combination_of_methods})\\
-\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N = C.OA: tangent_from (z.P)| & Refer to (\ref{tangent_from})\\
-\Imeth{circle}{inversion (line)} & |L or C = C.AC: inversion (L.EF)|& Refer to (\ref{ssub:inversion_line})\\
-\Imeth{circle}{common\_tangent (C)} & |z.a,z.b = C.AC: common_tangent (C.EF)|& Refer to  (\ref{sub:common_tangent} ; \ref{sub:common_tangent_orthogonality})\\
+\Imeth{circle}{radical\_axis (C)} &   [ \ref{ssub:method_imeth_circle_radical__axis_c} ; \ref{sub:d_alembert_2} ] & \\
+\Imeth{circle}{tangent\_at (pt)} & |z.P=C.OA:tangent_at(z.M)| & [\ref{ssub:method_imeth_circle_tangent}] \\
+\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N=C.OA: tangent_from (z.P)| & [\ref{ssub:method_imeth_circle_tangent} ] \\
+\Imeth{circle}{common\_tangent (C)}& |z.a,z.b = C.AC: common_tangent (C.EF)|&  [\ref{ssub:common_tangent} ; \ref{sub:common_tangent_orthogonality}] \\
 \midrule 
  \textbf{Circles}& &\\
 \midrule 
-\Imeth{circle}{orthogonal\_from (pt)}  &|C=C.OA:orthogonal_from (z.P)|  & Refer to (\ref{ssub:altshiller} ; \ref{sub:common_tangent_orthogonality} ; \ref{sub:orthogonal_circles_v1} ; \ref{sub:pencil_v1}) \\
-\Imeth{circle}{orthogonal\_through (pta,ptb)}&|C=C.OA:orthogonal_through (z.z1,z.z2)| & Refer to (\ref{sub:orthogonal_circle_through})\\
-\Imeth{circle}{inversion (...)} &|C.AC:inversion (pt, pts, L or C)|& Refer to \ref{ssub:inversion}, \ref{ssub:inversion_point},  \ref{ssub:inversion_line},  \ref{ssub:inversion_circle}\\
-\Imeth{circle}{midcircle (C)}  & |C.inv = C.OA: midcircle (C.EF)|  & Refer to \ref{ssub:midcircle} \\
-\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) & Refer to \ref{sub:radical_circle}\\
+\Imeth{circle}{orthogonal\_from (pt)}  &|C=C.OA:orthogonal_from (z.P)|  & [\ref{ssub:method_imeth_circle_orthogonal_from_pt} ;\ref{sub:altshiller} ; \ref{sub:pencil_v1}]  \\
+\Imeth{circle}{orthogonal\_through(pta,ptb)}&|C=C.OA:orthogonal_through (z.z1,z.z2)| &  [\ref{ssub:method_imeth_circle_orthogonal_through}]\\
+\Imeth{circle}{midcircle (C)}  & |C.inv = C.OA: midcircle (C.EF)|  & [\ref{ssub:midcircle}] \\
+\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) &  [\ref{ssub:radical_circle}] \\
 \midrule 
  \textbf{Miscellaneous} &&\\
 \midrule 
-\Imeth{circle}{power (pt)}     &|p = C.OA: power (z.M)| &   Refer to (\ref{sub:power_v1} ; \ref{sub:power_v2} ; \ref{sub:apollonius_circle_v1_with_inversion})  \\
-\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & Refer to (\ref{sub:in_out_for_circle_and_disk})  \\
-\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & Refer to (\ref{sub:in_out_for_circle_and_disk})  \\
+\Imeth{circle}{power (pt)}     &| r = C.OA: power (z.M)| &  [\ref{par:power_v1} ; \ref{par:power_v2} ; \ref{sub:apollonius_circle_v1_with_inversion} ] \\
+\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & [\ref{ssub:in_out_for_circle_and_disk}]  \\
+\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & [\ref{ssub:in_out_for_circle_and_disk}]  \\
 \Imeth{circle}{draw ()} & for further use &\\
-\Imeth{circle}{circles\_position (C1)} & result = string &Refer to (\ref{sub:circles_position}) \\
+\Imeth{circle}{circles\_position (C1)} & result = string & [\ref{ssub:circles_position}] \\
 \bottomrule 
 \end{tabular}
 \egroup
 % subsection methods_circle (end)
 
-\subsubsection{Altshiller} % (fold)
-\label{ssub:altshiller}
+\subsubsection{Method \Imeth{circle}{new}} % (fold)
+\label{ssub:method_imeth_circle_new}
 
+A circle is defined by its centre and a point through which it passes.
+
+\vspace{6pt}
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
-   z.P   = point : new (0,0)
-   z.Q   = point : new (5,0)
-   z.I   = point : new (3,2)
-   C.QI  = circle :    new (z.Q,z.I)
-   C.PE  = C.QI : orthogonal_from (z.P)
-   z.E   = C.PE.through
-   C.QE  = circle :    new (z.Q,z.E)
-   _,z.F = intersection (C.PE,C.QE)
-   z.A   = C.PE: point (1/9)
-   L.AE  = line : new (z.A,z.E)
-   _,z.C = intersection (L.AE,C.QE)
-   L.AF  = line : new (z.A,z.F)
-   L.CQ  = line : new (z.C,z.Q)
-   z.D   = intersection (L.AF,L.CQ)
+z.O     = point:    new (0,0)
+z.A     = point:    new (2,1)
+C       = circle:   new (z.O , z.A)
 \end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(P,E Q,E)
-   \tkzDrawLines[add=0 and 1](P,Q)
-   \tkzDrawLines[add=0 and 2](A,E)
-   \tkzDrawSegments(P,E E,F F,C A,F C,D)
-   \tkzDrawPoints(P,Q,E,F,A,C,D)
-   \tkzLabelPoints(P,Q,E,F,A,C,D)
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,O)
+\tkzLabelPoints[right](A,O)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
-\hspace*{\fill}  
 \begin{minipage}{.5\textwidth}
-   \begin{tkzelements}
-      scale =.5
-   z.P  = point : new (0,0)
-   z.Q  = point : new (5,0)
-   z.I  = point : new (3,2)
-   C.QI = circle :    new (z.Q,z.I)
-   C.PE = C.QI : orthogonal_from (z.P)
-   z.E  = C.PE.through
-   C.QE = circle :    new (z.Q,z.E)
-   _,z.F    = intersection (C.PE,C.QE)
-   z.A  = C.PE: point (1/9)
-   L.AE = line : new (z.A,z.E)
-   _,z.C    = intersection (L.AE,C.QE)
-   L.AF = line : new (z.A,z.F)
-   L.CQ = line : new (z.C,z.Q)
-   z.D  = intersection (L.AF,L.CQ)
-   \end{tkzelements}
-   \begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(P,E Q,E)
-   \tkzDrawLines[add=0 and 1](P,Q)
-   \tkzDrawLines[add=0 and 2](A,E)
-   \tkzDrawSegments(P,E E,F F,C A,F C,D)
-   \tkzDrawPoints(P,Q,E,F,A,C,D)
-   \tkzLabelPoints(P,Q,E,F,A,C,D)
-   \end{tikzpicture}
+\begin{tkzelements}
+z.O     = point:    new (0,0)
+z.A     = point:    new (2,1)
+C       = circle:   new (z.O , z.A)
+\end{tkzelements}
+  \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,O)
+\tkzLabelPoints[right](A,O)
+\end{tikzpicture}
+  \end{center}
+
 \end{minipage}
-%subsubsection altshiller (end)
 
-\subsubsection{Lemoine} % (fold)
-\label{ssub:lemoine}
+% subsubsection method_imeth_circle_new (end)
 
+\subsubsection{Method \Imeth{circle}{radius}} % (fold)
+\label{ssub:method_imeth_circle_radius}
+
+
+We define a circle with its centre and radius.
+
+\vspace{6pt}
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
-   scale = 1.25
-   z.A   = point: new (1,0)
-   z.B   = point: new (5,2)
-   z.C   = point: new (1.2,2)
-   T     = triangle: new(z.A,z.B,z.C)
-   z.O   = T.circumcenter
-   C.OA  = circle: new (z.O,z.A)
-   L.tA  = C.OA: tangent_at (z.A)
-   L.tB  = C.OA: tangent_at (z.B)
-   L.tC  = C.OA: tangent_at (z.C)
-   z.P   = intersection (L.tA,T.bc)
-   z.Q   = intersection (L.tB,T.ca)
-   z.R   = intersection (L.tC,T.ab)
+z.O     = point:    new (0,0)
+z.A     = point:    new (2,1)
+C       = circle:   radius (z.A , math.sqrt(5))
+z.T     = C.through 
 \end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes  
-   \tkzDrawPolygon[teal](A,B,C)
-   \tkzDrawCircle(O,A)
-   \tkzDrawPoints(A,B,C,P,Q,R)
-   \tkzLabelPoints(A,B,C,P,Q,R)
-   \tkzDrawLine[blue](Q,R)
-   \tkzDrawLines[red](A,P B,Q R,C)
-   \tkzDrawSegments(A,R C,P C,Q)
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(A,T)
+\tkzDrawPoints(A,O,T)
+\tkzLabelPoints[right](A,O,T)
 \end{tikzpicture}
 \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+  z.O     = point:    new (0,0)
+  z.A     = point:    new (2,1)
+  C       = circle:   radius (z.A , math.sqrt(5))
+  z.T     = C.through 
+  \end{tkzelements}
+  \begin{center}
+    \begin{tikzpicture}[gridded]
+    \tkzGetNodes
+    \tkzDrawCircles(A,T)
+    \tkzDrawPoints(A,O,T)
+    \tkzLabelPoints[right](A,O,T)
+    \end{tikzpicture}
+  \end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_radius (end)
 
+\subsubsection{Method \Imeth{circle}{diameter}} % (fold)
+\label{ssub:method_imeth_circle_diameter}
+
+A circle is defined by two points at the ends of one of its diameters.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A     = point:    new (0,0)
+z.B     = point:    new (2,1)
+C       = circle:   diameter (z.A , z.B)
+z.O     = C.center
+z.T     = C.through 
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,T)
+\tkzDrawPoints(A,B,O,T)
+\tkzLabelPoints[right](A,B,O,T)
+\end{tikzpicture}
+\end{Verbatim}
 \end{minipage}
 \begin{minipage}{.5\textwidth}
 \begin{tkzelements}
-scale = .75
-z.A   = point: new (1,0)
-z.B   = point: new (5,2)
-z.C   = point: new (1.2,2)
-T     = triangle: new(z.A,z.B,z.C)
-z.O   = T.circumcenter
-C.OA  = circle: new (z.O,z.A)
-L.tA  = C.OA: tangent_at (z.A)
-L.tB  = C.OA: tangent_at (z.B)
-L.tC  = C.OA: tangent_at (z.C)
-z.R   = intersection (L.tC,T.ab)
-z.P   = intersection (L.tA,T.bc)
-z.Q   = intersection (L.tB,T.ca)
+z.A     = point:    new (0,0)
+z.B     = point:    new (2,1)
+C       = circle:   diameter (z.A , z.B)
+z.O     = C.center
+z.T     = C.through 
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[rotate=90]
-\tkzGetNodes  
-\tkzDrawPolygon[teal](A,B,C)
+  \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,T)
+\tkzDrawPoints(A,B,O,T)
+\tkzLabelPoints[right](A,B,O,T)
+\end{tikzpicture}
+  \end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_diameter (end)
+
+\subsubsection{Method \Imeth{circle}{antipode}} % (fold)
+\label{ssub:method_imeth_circle_antipode}
+This method is used to define a point that is diametrically opposed to a point on a given circle.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A     = point:    new (0,0)
+z.O     = point:    new (2,1)
+C       = circle:   new (z.O , z.A)
+z.B     = C : antipode (z.A)
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O)
+\tkzLabelPoints[right](A,B,O)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A     = point:    new (0,0)
+z.O     = point:    new (2,1)
+C       = circle:   new (z.O , z.A)
+z.B     = C : antipode (z.A)
+\end{tkzelements}
+  \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O)
+\tkzLabelPoints[right](A,B,O)
+\end{tikzpicture}
+  \end{center}
+\end{minipage}
+
+
+% subsubsection method_imeth_circle_antipode (end)
+
+\subsubsection{Method \Imeth{circle}{midarc}} % (fold)
+\label{ssub:method_imeth_circle_midarc}
+The definition given in [ \href{https://mathworld.wolfram.com/Mid-ArcPoints.html}{Weisstein, Eric W. "Mid-Arc Points." From MathWorld--A Wolfram Web Resource.}] is as follows:
+The mid-arc points  of a triangle as defined by Johnson (1929) are the points on the circumcircle of the triangle which lie half-way along each of the three arcs determined by the vertices. These points arise in the definition of the Fuhrmann circle and Fuhrmann triangle, and lie on the extensions of the perpendicular bisectors of the triangle sides drawn from the circumcenter.
+
+The definition I use here is more general: the defined point is simply the point that divides an arc into two arcs of the same length.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A     = point:    new (0,0)
+z.O     = point:    new (2,1)
+C       = circle:   new (z.O , z.A)
+z.B     = C : point (0.25)
+z.M     = C : midarc (z.A,z.B)
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O,M)
+\tkzLabelPoints[right](A,B,O,M)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A     = point:    new (0,0)
+z.O     = point:    new (2,1)
+C       = circle:   new (z.O , z.A)
+z.B     = C : point (0.25)
+z.M     = C : midarc (z.A,z.B)
+\end{tkzelements}
+  \begin{center}
+\begin{tikzpicture}[gridded]
+\tkzGetNodes
+\tkzDrawCircles(O,A)
+\tkzDrawPoints(A,B,O,M)
+\tkzLabelPoints[right](A,B,O,M)
+\end{tikzpicture}
+  \end{center}
+\end{minipage}
+
+% subsubsection method_imeth_circle_midarc (end)
+
+\subsubsection{Method \Imeth{circle}{point (r)}} % (fold)
+\label{ssub:method_imeth_circle_point}
+
+Let $C$ be a circle with centre $O$ and passing through $A$ such that |z.A = C.through|. This method defines a point $M$ on the circle from A such that the ratio of the length of $\widearc{AM}$ to the circumference of the circle is equal to $r$.
+
+In the next example, $r=\dfrac{1}{6}$ corresponds to $\dfrac{\pi/3}{2\pi}$, so the angle $\widehat{AOE}$ has the measure $\pi/3$.
+
+If $r=.5$ the defined point is diametrically opposed to $A$, the angle $\widehat{AOD}$ has the measure $\pi$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+ \begin{tkzelements}
+   z.O  = point:  new (0,0)
+   z.A  = point:  new (1,2)
+   C.OA = circle:  new (z.O,z.A)
+   z.B = C.OA: point (1/6)
+   z.C = C.OA: point (0.25)
+   z.D = C.OA: point (0.5)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
 \tkzDrawCircle(O,A)
-\tkzDrawPoints(A,B,C,P,Q,R)
-\tkzLabelPoints(A,B,C,P,Q,R)
-\tkzDrawLine[blue](Q,R)
-\tkzDrawLines[red](A,P B,Q R,C)
-\tkzDrawSegments(A,R C,P C,Q)
+\tkzDrawPoints(A,...,D,O)
+\tkzLabelPoints(A,...,D,O)
 \end{tikzpicture}
+\end{Verbatim}
 \end{minipage}
-%\caption{Lemoine line}
-% subsubsection lemoine (end)
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+   z.O  = point:  new (0,0)
+   z.A  = point:  new (1,2)
+   C.OA = circle:  new (z.O,z.A)
+   z.B = C.OA: point (1/6)
+   z.C = C.OA: point (0.25)
+   z.D = C.OA: point (0.5)
+\end{tkzelements}
+\begin{center}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircle(O,A)
+\tkzDrawPoints(A,...,D,O)
+\tkzLabelPoints(A,...,D,O)
+\end{tikzpicture}
+\end{center}
 
+\end{minipage}
 
-\subsubsection{Inversion: point, line and circle} % (fold)
+
+% subsubsection method_imeth_circle_point (end)
+
+\subsubsection{Method \Imeth{circle}{inversion (obj)}: point, line and circle} % (fold)
 \label{ssub:inversion}
 
 The \code{inversion} method can be used on a point, a line or a circle. Depending on the type of object, the function determines the correct algorithm to use.
 
-\subsubsection{Inversion: point} % (fold)
-\label{ssub:inversion_point}
+\paragraph{Inversion: point} % (fold)
+\label{par:inversion_point}
 
 The \code{inversion} method can be used on a point, a group of points, a line or a circle. Depending on the type of object, the function determines the correct algorithm to use.
 
@@ -308,20 +438,23 @@
    z.d   = C.oa:     inversion (z.c)
    p     = C.oa:     power (z.c)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-    \tkzGetNodes   
-    \tkzDrawCircle(o,a)
-    \tkzDrawSegments(o,a o,c)
-    \tkzDrawPoints(a,o,c,d)
-    \tkzLabelPoints(a,o,c,d)
-    \tkzLabelSegment[sloped,above=1em](c,d){%
-     La puissance de c est \tkzUseLua{p}}
- \end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+      \tkzGetNodes   
+      \tkzDrawCircle(o,a)
+      \tkzDrawSegments(o,a o,c)
+      \tkzDrawPoints(a,o,c,d)
+      \tkzLabelPoints(a,o,c,d)
+      \tkzLabelSegment[sloped,above=1em](c,d){%
+       La puissance de c est \tkzUseLua{p}}
+   \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 
-\subsubsection{Inversion: line} % (fold)
-\label{ssub:inversion_line}
+\paragraph{Inversion: line} % (fold)
+\label{par:inversion_line}
 
 The result is either a straight line or a circle.
 
@@ -333,7 +466,7 @@
    C.oa     = circle:   new (z.o,z.a)
    z.c      = point:    new (3,2)
    z.d      = point:    new (0,4)
-   L.cd     = line:    new (z.c,z.d)
+   L.cd     = line:     new (z.c,z.d)
    C.OH     = C.oa: inversion (L.cd)
    z.O,z.H  = get_points(C.OH)
 \end{tkzelements}
@@ -357,19 +490,22 @@
    C.OH     = C.oa: inversion (L.cd)
    z.O,z.H  = get_points(C.OH)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-    \tkzGetNodes    
-    \tkzDrawCircles(o,a)
-    \tkzDrawCircles[new](O,H)
-    \tkzDrawLines(c,d o,H)
-    \tkzDrawPoints(a,o,c,d,H)
-    \tkzLabelPoints(a,o,c,d,H)
- \end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+      \tkzGetNodes    
+      \tkzDrawCircles(o,a)
+      \tkzDrawCircles[new](O,H)
+      \tkzDrawLines(c,d o,H)
+      \tkzDrawPoints(a,o,c,d,H)
+      \tkzLabelPoints(a,o,c,d,H)
+   \end{tikzpicture}
+\end{center}
+
 \end{minipage}
  
- \subsubsection{Inversion: circle} % (fold)
- \label{ssub:inversion_circle}
+\paragraph{Inversion: circle} % (fold)
+ \label{par:inversion_circle}
 
 The result is either a straight line or a circle.
 
@@ -423,19 +559,697 @@
          else z.f,z.b = get_points(obj) end
       color = "orange"
    \end{tkzelements}
-   \hspace{\fill}
-   \begin{tikzpicture}
-       \tkzGetNodes 
-       \tkzDrawCircles[black](o,a)
-       \tkzDrawCircles[teal](c,o e,d)
-       \tkzDrawCircles[\tkzUseLua{color}](f,b)
-       \tkzDrawLines[\tkzUseLua{color}](p,q)
-       \tkzDrawPoints(a,...,f,o,p,q)
-      \tkzLabelPoints(a,...,f,o,p,q)
-    \end{tikzpicture}
+
+   \begin{center}
+     \begin{tikzpicture}
+         \tkzGetNodes 
+         \tkzDrawCircles[black](o,a)
+         \tkzDrawCircles[teal](c,o e,d)
+         \tkzDrawCircles[\tkzUseLua{color}](f,b)
+         \tkzDrawLines[\tkzUseLua{color}](p,q)
+         \tkzDrawPoints(a,...,f,o,p,q)
+        \tkzLabelPoints(a,...,f,o,p,q)
+      \end{tikzpicture}
+   \end{center}
 \end{minipage}
+
 % subsubsection inversion (end)
 
+\subsubsection{Method \Imeth{circle}{internal\_similitude}} % (fold)
+\label{ssub:method_imeth_circle_internal__similitude}
+
+Circles are geometrically similar to one another and mirror symmetric. Hence, a pair of circles has both types of homothetic centers, internal and external, unless the centers are equal or the radii are equal; these exceptional cases are treated after general position. These two homothetic centers lie on the line joining the centers of the two given circles, which is called the line of centers. Circles with radius zero can also be included (see exceptional cases), and negative radius can also be used, switching external and internal. [Wikipedia]
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale = 0.75
+z.A  = point : new ( 0  , 0  )
+z.a  = point : new ( 2 ,  2 )
+z.B  = point : new ( 5  , 2  )
+z.b  = point : new ( 6  , 1  )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I  = C.Aa : internal_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircles(A,a B,b)
+\tkzDrawPoints(A,a,B,b,I,A1,A2)
+\tkzDrawLines[add = 1 and 2](A1,I A2,I)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale = .75
+z.A  = point : new ( 0  , 0  )
+z.a  = point : new ( 2 ,  2 )
+z.B  = point : new ( 5  , 2  )
+z.b  = point : new ( 6  , 1  )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I  = C.Aa : internal_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(A,a B,b)
+  \tkzDrawPoints(A,a,B,b,I,A1,A2)
+  \tkzDrawLines[add = 1 and 2](A1,I A2,I)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+% subsubsection method_imeth_circle_internal__similitude (end)
+
+\subsubsection{Method \Imeth{circle}{external\_similitude}} % (fold)
+\label{ssub:method_imeth_circle_external__similitude}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A  = point : new ( 0  , 0  )
+z.a  = point : new ( 2 ,  2 )
+z.B  = point : new ( 3  , 2  )
+z.b  = point : new ( 4  , 1  )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I  = C.Aa : external_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircles(A,a B,b)
+\tkzDrawPoints(A,a,B,b,I,A1,A2)
+\tkzDrawLines[add = .5 and .2](A1,I A2,I)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale = .75
+z.A  = point : new ( 0  , 0  )
+z.a  = point : new ( 2 ,  2 )
+z.B  = point : new ( 3  , 2  )
+z.b  = point : new ( 4  , 1  )
+C.Aa = circle : new (z.A,z.a)
+C.Bb = circle : new (z.B,z.b)
+z.I  = C.Aa : external_similitude (C.Bb)
+L.TA1,L.TA2 = C.Aa : tangent_from (z.I)
+z.A1 = L.TA1.pb
+z.A2 = L.TA2.pb
+\end{tkzelements}
+\begin{center}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircles(A,a B,b)
+\tkzDrawPoints(A,a,B,b,I,A1,A2)
+\tkzDrawLines[add = .5 and .2](A1,I A2,I)
+\end{tikzpicture}
+\end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_external__similitude (end)
+
+
+\subsubsection{Method \Imeth{circle}{radical\_center (C1,C2)}} % (fold)
+\label{ssub:radical_center}
+
+The radical lines of three circles are concurrent in a point known as the radical center (also called the power center). This theorem was originally demonstrated by Monge (Dörrie 1965, p. 153). [\href{https://mathworld.wolfram.com/RadicalCenter.html}{Weisstein, Eric W. "Radical Center." From MathWorld--A Wolfram Web Resource. }
+]
+
+Here I have also named \code{radical\_center} the point of intersection of the radical axis of two circles with the centre axis. See the following example for how to obtain point $H$.
+
+
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
+\begin{tkzelements}
+   z.O      = point : new (0,0)
+   z.x      = point : new (1,0)
+   z.y      = point : new (4,0)
+   z.z      = point : new (2,0)
+   z.Op     = point : new (4,2)
+   z.P      = point : new (2,2.5)
+   C.Ox     = circle :    new (z.O,z.x)
+   C.Pz     = circle :    new (z.P,z.z)
+   C.Opy    = circle :    new (z.Op,z.y)
+   z.ap,z.a = intersection (C.Ox,C.Pz)
+   z.bp,z.b = intersection (C.Opy,C.Pz)
+   L.aap    = line : new (z.a,z.ap)
+   L.bbp    = line : new (z.b,z.bp)
+   --  z.X      = intersection (L.aap,L.bbp)
+   z.X      = C.Ox : radical_center(C.Pz,C.Opy)
+   --   L.OOp    = line : new (z.O,z.Op)
+   --   z.H      = L.OOp : projection (z.X)
+   z.H = C.Ox : radical_center(C.Opy)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(O,a O',b P,z)
+   \tkzDrawLines[red](a,X b',X H,X O,O')
+   \tkzDrawPoints(O,O',P,a,a',b,b',X,H)
+   \tkzLabelPoints[below right](O,O',P,H)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{tkzelements}
+z.O         = point : new (0,0)
+z.x         = point : new (1,0)
+z.y         = point : new (4,0)
+z.z         = point : new (2,0)
+z.Op        = point : new (4,2)
+z.P         = point : new (2,2.5)
+C.Ox        = circle :    new (z.O,z.x)
+C.Pz        = circle :    new (z.P,z.z)
+C.Opy       = circle :    new (z.Op,z.y)
+z.ap,z.a    = intersection (C.Ox,C.Pz)
+z.bp,z.b    = intersection (C.Opy,C.Pz)
+L.aap       = line : new (z.a,z.ap)
+L.bbp       = line : new (z.b,z.bp)
+z.X         = intersection (L.aap,L.bbp)
+L.OOp       = line : new (z.O,z.Op)
+z.H         = L.OOp : projection (z.X)
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(O,a O',b P,z)
+  \tkzDrawLines[red](a,X b',X H,X O,O')
+  \tkzDrawPoints(O,O',P,a,a',b,b',X,H)
+  \tkzLabelPoints[below right](O,O',P,H)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection radical_center (end)
+
+\subsubsection{Method \Imeth{circle}{radical\_axis}(C)} % (fold)
+\label{ssub:method_imeth_circle_radical__axis_c}
+
+The radical line, also called the radical axis, is the locus of points of equal circle power with respect to two nonconcentric circles. By the chordal theorem, it is perpendicular to the line of centers (Dörrie 1965). [\href{https://mathworld.wolfram.com/RadicalLine.html}{Weisstein, Eric W. "Radical Line." From MathWorld--A Wolfram Web Resource.} ]
+
+\vspace{6pt}
+\paragraph{Radical axis v1} % (fold)
+\label{par:radical_axis_v1}
+
+\begin{Verbatim}
+\begin{tkzelements}
+scale    = .75
+z.X      = point : new (0,0)
+z.B      = point : new (2,2)
+z.Y      = point : new (7,1)
+z.Ap     = point : new (8,-1)
+L.XY     = line :    new (z.X,z.Y)
+C.XB     = circle : new (z.X,z.B)
+C.YAp    = circle : new (z.Y,z.Ap)
+z.E,z.F  = get_points (C.XB : radical_axis (C.YAp))
+z.A      = C.XB : point (0.4)
+T.ABAp   = triangle: new (z.A,z.B,z.Ap)
+z.O      = T.ABAp.circumcenter
+C.OAp    = circle : new (z.O,z.Ap)
+_,z.Bp   = intersection (C.OAp,C.YAp)
+L.AB     = line : new (z.A,z.B)
+L.ApBp   = line : new (z.Ap,z.Bp)
+z.M      = intersection (L.AB,L.ApBp)
+z.H      = L.XY : projection (z.M)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(X,B Y,A')
+   \tkzDrawArc[dashed,delta=30](O,A')(A)
+   \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
+   \tkzDrawLines[red](A,M A',M X,Y E,F)
+   \tkzDrawLines[red,add=1 and 3](M,H)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+scale    = .75
+z.X      = point : new (0,0)
+z.B      = point : new (2,2)
+z.Y      = point : new (7,1)
+z.Ap     = point : new (8,-1)
+L.XY     = line :    new (z.X,z.Y)
+C.XB     = circle : new (z.X,z.B)
+C.YAp    = circle : new (z.Y,z.Ap)
+z.E,z.F  = get_points (C.XB : radical_axis (C.YAp))
+z.A      = C.XB : point (0.4)
+T.ABAp   = triangle: new (z.A,z.B,z.Ap)
+z.O      = T.ABAp.circumcenter
+C.OAp    = circle : new (z.O,z.Ap)
+_,z.Bp   = intersection (C.OAp,C.YAp)
+L.AB     = line : new (z.A,z.B)
+L.ApBp   = line : new (z.Ap,z.Bp)
+z.M      = intersection (L.AB,L.ApBp)
+z.H      = L.XY : projection (z.M)
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(X,B Y,A')
+  \tkzDrawArc[dashed,delta=30](O,A')(A)
+  \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
+  \tkzDrawLines[red](A,M A',M X,Y E,F)
+  \tkzDrawLines[red,add=1 and 3](M,H)
+  \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v1 (end)
+
+\paragraph{Radical axis v2} % (fold)
+\label{par:radical_axis_v2}
+
+\begin{Verbatim}
+\begin{tkzelements}
+scale       = 1.25
+z.O         = point : new (-1,0)
+z.Op        = point : new (4,-1)
+z.B         = point : new (0,2)
+z.D         = point : new (4,0)
+C.OB        = circle :    new (z.O,z.B)
+C.OpD       = circle :    new (z.Op,z.D)
+L.EF        = C.OB : radical_axis (C.OpD)
+z.E,z.F     = get_points (L.EF)
+z.M         = L.EF : point (.75)
+L.MT,L.MTp  = C.OB : tangent_from (z.M)
+_,z.T       = get_points (L.MT)
+_,z.Tp      = get_points (L.MTp)
+L.MK,L.MKp  = C.OpD : tangent_from (z.M)
+_,z.K       = get_points (L.MK)
+_,z.Kp      = get_points (L.MKp)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(O,B O',D)
+   \tkzDrawLine(E,F)
+   \tkzDrawLine[add=.5 and .5](O,O')
+   \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
+   \tkzDrawCircle(M,T)
+   \tkzDrawPoints(O,O',T,M,T',K,K')
+   \tkzLabelPoints(O,O',T,T',K,K',M)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+scale =1.25
+z.O     = point : new (-1,0)
+z.Op    = point : new (4,-1)
+z.B     = point : new (0,2)
+z.D     = point : new (4,0)
+C.OB    = circle :    new (z.O,z.B)
+C.OpD   = circle :    new (z.Op,z.D)
+L.EF    = C.OB : radical_axis (C.OpD)
+z.E,z.F = get_points (L.EF)
+z.M     = L.EF : point (.75)
+L.MT,L.MTp  = C.OB : tangent_from (z.M)
+_,z.T = get_points (L.MT)
+_,z.Tp = get_points (L.MTp)
+L.MK,L.MKp  = C.OpD : tangent_from (z.M)
+_,z.K = get_points (L.MK)
+_,z.Kp = get_points (L.MKp)
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(O,B O',D)
+  \tkzDrawLine(E,F)
+  \tkzDrawLine[add=.5 and .5](O,O')
+  \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
+  \tkzDrawCircle(M,T)
+  \tkzDrawPoints(O,O',T,M,T',K,K')
+  \tkzLabelPoints(O,O',T,T',K,K',M)
+  \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v2 (end)
+
+\paragraph{Radical axis v3} % (fold)
+\label{par:radical_axis_v3}
+
+\begin{Verbatim}
+   \begin{tkzelements}
+   z.O      = point : new (0,0)
+   z.B      = point : new (4,0)
+   z.Op     = point : new (6,0)
+   C.OB     = circle :    new (z.O,z.B)
+   C.OpB    = circle :    new (z.Op,z.B)
+   L.EF     = C.OB : radical_axis (C.OpB)
+   z.E,z.F  = get_points(L.EF)
+   z.M      = L.EF : point (0.2)
+   L        = C.OB : tangent_from (z.M)
+   _,z.T    = get_points (L)
+   L        = C.OpB : tangent_from (z.M)
+   _,z.Tp   = get_points (L)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(O,B O',B)
+   \tkzDrawSegments(M,T M,T')
+   \tkzDrawSegments(E,F)
+   \tkzDrawLine[add=.5 and .5](O,O')
+   \tkzDrawPoints(O,B,O',E,F,M,T,T')
+   \tkzLabelPoints(O,O',B,E,F,T,T')
+   \tkzDrawArc(M,T')(T)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+z.O      = point : new (0,0)
+z.B      = point : new (4,0)
+z.Op     = point : new (6,0)
+C.OB     = circle :    new (z.O,z.B)
+C.OpB    = circle :    new (z.Op,z.B)
+L.EF     = C.OB : radical_axis (C.OpB)
+z.E,z.F  = get_points(L.EF)
+z.M      = L.EF : point (0.2)
+L        = C.OB : tangent_from (z.M)
+_,z.T    = get_points (L)
+L        = C.OpB : tangent_from (z.M)
+_,z.Tp   = get_points (L)
+\end{tkzelements}
+ 
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(O,B O',B)
+  \tkzDrawSegments(M,T M,T')
+  \tkzDrawSegments(E,F)
+  \tkzDrawLine[add=.5 and .5](O,O')
+  \tkzDrawPoints(O,B,O',E,F,M,T,T')
+  \tkzLabelPoints(O,O',B,E,F,T,T')
+  \tkzDrawArc(M,T')(T)
+  \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v3 (end)
+
+\paragraph{Radical axis v4} % (fold)
+\label{par:radical_axis_v4}
+
+\begin{Verbatim}
+\begin{tkzelements}
+   z.O     = point : new (0,0)
+   z.B     = point : new (5,0)
+   z.Op    = point : new (3,0)
+   C.OB    = circle :    new (z.O,z.B)
+   C.OpB   = circle :    new (z.Op,z.B)
+   L.EF    = C.OB : radical_axis (C.OpB)
+   z.E,z.F = get_points(L.EF)
+   z.H     = L.EF.mid
+   z.M     = L.EF : point (.8)
+   _,L     = C.OB : tangent_from (z.M)
+   _,z.T   = get_points (L)
+   _,L     = C.OpB : tangent_from (z.M)
+   _,z.Tp  = get_points (L)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(O,B O',B)
+   \tkzDrawSegments(M,T M,T')
+   \tkzDrawSegments(E,F)
+   \tkzDrawLine[add=.3 and .3](O,H)
+   \tkzDrawPoints(O,O',B,E,H,M)
+   \tkzLabelPoints[below right](O,O',E,F,M,T,T')
+   \tkzDrawArc(M,B)(T)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+   z.O     = point : new (0,0)
+   z.B     = point : new (5,0)
+   z.Op    = point : new (3,0)
+   C.OB    = circle :    new (z.O,z.B)
+   C.OpB   = circle :    new (z.Op,z.B)
+   L.EF    = C.OB : radical_axis (C.OpB)
+   z.E,z.F = get_points(L.EF)
+   z.H     = L.EF.mid
+   z.M     = L.EF : point (.8)
+   _,L     = C.OB : tangent_from (z.M)
+   _,z.T   = get_points (L)
+   _,L     = C.OpB : tangent_from (z.M)
+   _,z.Tp  = get_points (L)
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawCircles(O,B O',B)
+     \tkzDrawSegments(M,T M,T')
+     \tkzDrawSegments(E,F)
+     \tkzDrawLine[add=.3 and .3](O,H)
+     \tkzDrawPoints(O,O',B,E,H,M)
+     \tkzLabelPoints[below right](O,O',E,F,M,T,T')
+     \tkzDrawArc(M,B)(T)
+  \end{tikzpicture}
+\end{center}
+% paragraph radical_axis_v4 (end)
+
+% subsubsection method_imeth_circle_radical__axis_c (end)
+
+
+\subsubsection{Methods \Imeth{circle}{tangent\_at (P)} and  \Imeth{circle}{tangent\_from (P)}} % (fold)
+\label{ssub:method_imeth_circle_tangent}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+ \begin{tkzelements}
+   z.A  = point:  new (0,0)
+   z.B  = point:  new (1,2)   
+   C.AB = circle: new (z.A,z.B)
+   z.C  = point:  new (3,-2)
+   L.T  = C.AB : tangent_at (z.B)
+   z.D  = L.T.pb
+   L.T1,L.T2 = C.AB : tangent_from (z.C)
+   z.T1 = L.T1.pb
+   z.T2 = L.T2.pb
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawCircle(A,B)
+\tkzDrawLines[add =.5 and .5](B,D C,T1 C,T2)
+\tkzDrawSegments[dashed](A,B A,T1 A,T2)
+\tkzDrawPoints(A,...,D,T1,T2)
+\tkzLabelPoints[below left](A,T2,C)
+\tkzLabelPoints[above right](B,T1,D)
+\tkzMarkRightAngles(A,B,D A,T1,C A,T2,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+ \begin{tkzelements}
+   z.A  = point:  new (0,0)
+   z.B  = point:  new (1,2)   
+   C.AB = circle: new (z.A,z.B)
+   z.C  = point:  new (3,-2)
+   L.T  = C.AB : tangent_at (z.B)
+   z.D  = L.T.pb
+   L.T1,L.T2 = C.AB : tangent_from (z.C)
+   z.T1 = L.T1.pb
+   z.T2 = L.T2.pb
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle(A,B)
+  \tkzDrawLines[add =.5 and .5](B,D C,T1 C,T2)
+  \tkzDrawSegments[dashed](A,B A,T1 A,T2)
+  \tkzDrawPoints(A,...,D,T1,T2)
+  \tkzLabelPoints[below left](A,T2,C)
+  \tkzLabelPoints[above right](B,T1,D)
+  \tkzMarkRightAngles(A,B,D A,T1,C A,T2,C)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection  (end)
+
+\subsubsection{Common tangent: Angle of two intersecting circles} % (fold)
+\label{ssub:common_tangent}
+
+Let be a tangent common to both circles at $T$ and $T'$ (closest to $C$). Let a secant parallel to this tangent pass through $C$. Then the segment $[TT']$ is seen from the other common point $D$ at an angle equal to half the angle of the two circles.
+
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A   = point : new ( 0  , 0  )
+   z.B   = point : new ( 5  , 2  )
+   L.AB = line : new ( z.A , z.B )
+   z.C   = point : new ( 1 , 2 )
+   C.AC  = circle : new (z.A,z.C)
+   C.BC  = circle : new (z.B,z.C)
+   z.T,z.Tp = C.AC : common_tangent (C.BC)
+   L.TTp = line : new (z.T,z.Tp)
+   z.M   = C.AC : point (0.45)
+   L.MC  =line : new (z.M,z.C)
+   z.Mp  = intersection (L.MC, C.BC) 
+   L.mm = L.TTp : ll_from (z.C)
+   _,z.M = intersection (L.mm, C.AC)
+   z.Mp = intersection (L.mm, C.BC)
+   _,z.D = intersection (C.AC,C.BC)
+\end{tkzelements}         
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(A,C B,C)
+   \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
+   \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
+   \tkzDrawPoints(A,B,C,D,M,M',T,T')
+   \tkzLabelPoints(A,B,D,M)
+   \tkzLabelPoints[above](C,M',T,T')
+   \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
+   \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
+\end{tikzpicture}
+\end{Verbatim}
+
+
+\begin{tkzelements}
+z.A   = point : new ( 0  , 0  )
+z.B   = point : new ( 5  , 2  )
+L.AB = line : new ( z.A , z.B )
+z.C   = point : new ( 1 , 2 )
+C.AC  = circle : new (z.A,z.C)
+C.BC  = circle : new (z.B,z.C)
+z.T,z.Tp = C.AC : common_tangent (C.BC)
+L.TTp = line : new (z.T,z.Tp)
+z.M   = C.AC : point (0.45)
+L.MC  =line : new (z.M,z.C)
+z.Mp  = intersection (L.MC, C.BC) 
+L.mm = L.TTp : ll_from (z.C)
+_,z.M = intersection (L.mm, C.AC)
+z.Mp = intersection (L.mm, C.BC)
+_,z.D = intersection (C.AC,C.BC)
+\end{tkzelements}
+    
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(A,C B,C)
+  \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
+  \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
+  \tkzDrawPoints(A,B,C,D,M,M',T,T')
+  \tkzLabelPoints(A,B,D,M)
+  \tkzLabelPoints[above](C,M',T,T')
+  \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
+  \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
+  \end{tikzpicture}
+\end{center}
+% subsubsection common_tangent (end)
+
+\subsubsection{Method \Imeth{circle}{orthogonal\_from (pt)}} % (fold)
+\label{ssub:method_imeth_circle_orthogonal_from_pt}
+
+In geometry, two circles are said to be orthogonal if their respective tangent lines at the points of intersection are perpendicular (meet at a right angle). [wikipedia]
+
+This method determines a circle with a given centre, orthogonal to a circle that is also given.
+
+\begin{Verbatim}
+\begin{tkzelements}
+   scale    = .6
+   z.C_1    = point: new (0,0)
+   z.C_2    = point: new (8,0)
+   z.A      = point: new (5,0)
+   C        = circle: new (z.C_1,z.A)
+   z.S,z.T  = get_points (C: orthogonal_from (z.C_2))
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(C_1,T C_2,T)
+   \tkzDrawSegments(C_1,T C_2,T)
+   \tkzDrawLine(C_1,C_2)
+   \tkzMarkRightAngle[fill=teal,%
+  opacity=.2,size=1](C_1,T,C_2)
+   \tkzDrawPoints(C_1,C_2,T)
+   \tkzLabelPoints(C_1,C_2)
+   \tkzLabelPoints[above](T)
+   \tkzLabelSegment[left](C_1,T){r}
+   \tkzLabelSegments[right](C_2,T){$\gamma$}
+   \tkzLabelSegment[below](C_1,C_2){d}
+   \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
+   \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+scale    = .6
+z.C_1    = point: new (0,0)
+z.C_2    = point: new (8,0)
+z.A  = point: new (5,0)
+C    = circle: new (z.C_1,z.A)
+z.S,z.T  = get_points (C: orthogonal_from (z.C_2))
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(C_1,T C_2,T)
+  \tkzDrawSegments(C_1,T C_2,T)
+  \tkzDrawLine(C_1,C_2)
+  \tkzMarkRightAngle[fill=teal,opacity=.2,size=.5](C_1,T,C_2)
+  \tkzDrawPoints(C_1,C_2,T)
+  \tkzLabelPoints(C_1,C_2)
+  \tkzLabelPoints[above](T)
+  \tkzLabelSegment[left](C_1,T){r}
+  \tkzLabelSegments[right](C_2,T){$\gamma$}
+  \tkzLabelSegment[below](C_1,C_2){d}
+  \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
+  \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
+  \end{tikzpicture}
+\end{center}
+
+% subsubsection method_imeth_circle_orthogonal__from_pt (end)
+
+\subsubsection{Method \Imeth{circle}{orthogonal\_through}} % (fold)
+\label{ssub:method_imeth_circle_orthogonal_through}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.O   = point: new (0,1)
+   z.A   = point: new (1,0)
+   z.z1  = point: new (-1.5,-1.5)
+   z.z2  = point: new (2.5,-1.25)
+   C.OA  = circle: new (z.O,z.A)
+   C     = C.OA: orthogonal_through (z.z1,z.z2)
+   z.c   = C.center
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircle(O,A)
+   \tkzDrawCircle[new](c,z1)
+   \tkzDrawPoints[new](O,A,z1,z2,c)
+   \tkzLabelPoints[right](O,A,z1,z2,c)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}\begin{tkzelements}
+   z.O   = point: new (0,1)
+   z.A   = point: new (1,0)
+   z.z1  = point: new (-1.5,-1.5)
+   z.z2  = point: new (2.5,-1.25)
+   C.OA  = circle: new (z.O,z.A)
+   C = C.OA: orthogonal_through (z.z1,z.z2)
+   z.c   = C.center
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle(O,A)
+  \tkzDrawCircle[orange](c,z1)
+  \tkzDrawPoints[orange](O,A,z1,z2,c)
+  \tkzLabelPoints[right](O,A,z1,z2,c)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+% subsubsection method_imeth_circle_orthogonal__through (end)
+
 \subsubsection{midcircle} % (fold)
 \label{ssub:midcircle}
 
@@ -473,8 +1287,8 @@
 z.F = C.BP.north
 z.G = C.BP.south
 C.IT,C.JV = C.AO : midcircle (C.BP)
-z.I,z.T = get_points (   C.IT    ) 
-z.J,z.V = get_points (   C.JV    ) 
+z.I,z.T = get_points (C.IT) 
+z.J,z.V = get_points (C.JV) 
 z.X,z.Y = intersection (C.AO,C.BP)
 \end{tkzelements}  
 \end{Verbatim}
@@ -493,8 +1307,8 @@
    z.F = C.BP.north
    z.G = C.BP.south
    C.IT,C.JV = C.AO : midcircle (C.BP)
-   z.I,z.T = get_points (   C.IT    ) 
-   z.J,z.V = get_points (   C.JV    ) 
+   z.I,z.T = get_points (C.IT) 
+   z.J,z.V = get_points (C.JV) 
    z.X,z.Y = intersection (C.AO,C.BP)
    \end{tkzelements}
    \begin{tikzpicture}
@@ -520,7 +1334,7 @@
 \vfill
 
 \item  One given circle is in the interior of the other given circle.
-
+\label{midcircle_diameter}
 \begin{minipage}{.6\textwidth}
 \begin{Verbatim}
    \begin{tkzelements}
@@ -539,7 +1353,7 @@
    z.x = C.SV.center
    z.y = C.UR.center
    C.IT = C.AO : midcircle (C.BP)
-   z.I,z.T = get_points (   C.IT    ) 
+   z.I,z.T = get_points (C.IT) 
 \end{tkzelements}
 \end{Verbatim}
 \end{minipage}
@@ -560,7 +1374,7 @@
       z.x = C.SV.center
       z.y = C.UR.center
       C.IT = C.AO : midcircle (C.BP)
-      z.I,z.T = get_points (   C.IT    ) 
+      z.I,z.T = get_points (C.IT) 
    \end{tkzelements}
    \begin{tikzpicture}
    \tkzGetNodes
@@ -597,7 +1411,7 @@
 z.F = C.Bb.north
 L.EF = line :  new (z.E,z.F)
 C.IT =  C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points (   C.IT   ) 
+z.I,z.T = get_points (C.IT) 
 L.TF = C.Bb : tangent_from (z.I)
 z.H = intersection (L.TF,C.IT)
 z.E = intersection (L.TF,C.Aa)
@@ -620,7 +1434,7 @@
 z.F = C.Bb.north
 L.EF = line :  new (z.E,z.F)
 C.IT =  C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points (	C.IT	) 
+z.I,z.T = get_points (C.IT) 
 L.TF = C.Bb : tangent_from (z.I)
 z.H = intersection (L.TF,C.IT)
 z.E = intersection (L.TF,C.Aa)
@@ -662,7 +1476,7 @@
 z.F = C.Bb.north
 L.EF = line :  new (z.E,z.F)
 C.IT =  C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points (	C.IT	) 
+z.I,z.T = get_points(C.IT) 
 L.TF = C.Bb : tangent_from (z.I)
 z.H = intersection (L.TF,C.IT)
 z.E = intersection (L.TF,C.Aa)
@@ -685,7 +1499,7 @@
 z.F = C.Bb.north
 L.EF = line :  new (z.E,z.F)
 C.IT =  C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points (	C.IT	) 
+z.I,z.T = get_points (C.IT) 
 L.TF = C.Bb : tangent_from (z.I)
 z.H = intersection (L.TF,C.IT)
 z.E = intersection (L.TF,C.Aa)
@@ -711,14 +1525,14 @@
 \begin{minipage}{.4\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
-z.A      = point : new ( 2 , 0 )
-z.B      = point : new ( 4 , 0 )
-z.a      = point :  new ( 1 , 0)
-z.b      = point :  new ( 1 , 0)
-C.Aa     = circle  :  new (z.A,z.a)
-C.Bb     = circle  :  new (z.B,z.b)
-C.IT     =  C.Aa : midcircle (C.Bb)
-z.I,z.T  = get_points (	C.IT	)
+z.A     = point : new ( 2 , 0 )
+z.B     = point : new ( 4 , 0 )
+z.a     = point :  new ( 1 , 0)
+z.b     = point :  new ( 1 , 0)
+C.Aa    = circle  :  new (z.A,z.a)
+C.Bb    = circle  :  new (z.B,z.b)
+C.IT    =  C.Aa : midcircle (C.Bb)
+z.I,z.T  = get_points(C.IT)
 \end{tkzelements}
 \end{Verbatim}
 \end{minipage}
@@ -731,7 +1545,7 @@
 C.Aa = circle  :  new (z.A,z.a)
 C.Bb = circle  :  new (z.B,z.b)
 C.IT =  C.Aa : midcircle (C.Bb)
-z.I,z.T = get_points (	C.IT	) 
+z.I,z.T = get_points (C.IT) 
 \end{tkzelements}
 
 \begin{tikzpicture}
@@ -748,206 +1562,205 @@
 \end{enumerate}
 
 % subsubsection midcircle (end)
-% subsection methods_of_the_class_circle (end)
 
-\subsection{Circles\_position} % (fold)
-\label{sub:circles_position}
 
-This function returns a string indicating the position of the circle in relation to another. Useful for creating a function. Cases are:
+\subsubsection{Radical circle} % (fold)
+\label{ssub:radical_circle}
 
-\begin{itemize}
-   \item \code{outside}
-   \item \code{outside tangent}
-   \item \code{inside tangent}
-   \item \code{inside}
-   \item \code{intersect}
-\end{itemize}
-
-\begin{minipage}{.5\textwidth}
-\begin{Verbatim}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim} 
 \begin{tkzelements}
-   z.A      = point : new ( 0  , 0  )
-   z.a      = point : new ( 3  , 0  )
-   z.B      = point : new ( 2  , 0  )
-   z.b      = point : new ( 3  , 0  )
-   C.Aa     = circle: new (z.A,z.a)
-   C.Bb     = circle: new (z.B,z.b)
-   position = C.Aa : circles_position (C.Bb)
-   if position == "inside tangent" 
-   then color = "orange" 
-   else color = "blue" end
+   scale       = .5
+   z.A         = point: new (0,0)
+   z.B         = point: new (6,0)
+   z.C         = point: new (0.8,4)
+   T.ABC       = triangle : new ( z.A,z.B,z.C ) 
+   C.exa       = T.ABC : ex_circle ()
+   z.I_a,z.Xa  = get_points (C.exa)
+   C.exb       = T.ABC : ex_circle (1)
+   z.I_b,z.Xb  = get_points (C.exb)
+   C.exc       = T.ABC : ex_circle (2)
+   z.I_c,z.Xc  = get_points (C.exc)
+   C.ortho     = C.exa : radical_circle (C.exb,C.exc)
+   z.w,z.a     = get_points (C.ortho)
 \end{tkzelements}
-       
 \begin{tikzpicture}
    \tkzGetNodes
-   \tkzDrawCircle(A,a)
-   \tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+   \tkzDrawPolygon(A,B,C)
+   \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
+   \tkzDrawCircles[red,thick](w,a)
+   \tkzDrawPoints(A,B,C)
+   \tkzLabelPoints(A,B,C)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
-\begin{minipage}{.5\textwidth}
+
 \begin{tkzelements}
-z.A = point : new ( 1  , 0  )
-z.a = point : new ( 3  , 0  )
-z.B = point : new ( 2  , 0  )
-z.b = point : new ( 3  , 0  )
-C.Aa = circle: new (z.A,z.a)
-C.Bb = circle: new (z.B,z.b)
-position = C.Aa : circles_position (C.Bb)
-if position == "inside tangent" then color = "orange" else color = "blue" end
+   scale       = .5
+   z.A         = point: new (0,0)
+   z.B         = point: new (6,0)
+   z.C         = point: new (0.8,4)
+   T.ABC       = triangle : new ( z.A,z.B,z.C ) 
+   C.exa       = T.ABC : ex_circle ()
+   z.I_a,z.Xa  = get_points (C.exa)
+   C.exb       = T.ABC : ex_circle (1)
+   z.I_b,z.Xb  = get_points (C.exb)
+   C.exc       = T.ABC : ex_circle (2)
+   z.I_c,z.Xc  = get_points (C.exc)
+   C.ortho     = C.exa : radical_circle (C.exb,C.exc)
+   z.w,z.a     = get_points (C.ortho)
 \end{tkzelements}
-\hspace{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(A,a)
-\tkzDrawCircle[color=\tkzUseLua{color}](B,b)
-\end{tikzpicture}\hspace{\fill}
-\end{minipage}
-% subsection circles__position (end)
 
-\subsection{Common tangent: Angle of two intersecting circles} % (fold)
-\label{sub:common_tangent}
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygon(A,B,C)
+     \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
+     \tkzDrawCircles[red,thick](w,a)
+     \tkzDrawPoints(A,B,C)
+     \tkzLabelPoints(A,B,C)
+  \end{tikzpicture}
+\end{center}
+% subsubsection radical_circle (end)
 
-Let be a tangent common to both circles at $T$ and $T'$ (closest to $C$). Let a secant parallel to this tangent pass through $C$. Then the segment $[TT']$ is seen from the other common point $D$ at an angle equal to half the angle of the two circles.
+\subsubsection{Method \Imeth{circle}{power(C)}} % (fold)
+\label{ssub:method_imeth_circle_power_c}
 
+\paragraph{Power v1} % (fold)
+\label{par:power_v1}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{Verbatim}
 \begin{tkzelements}
-   z.A   = point : new ( 0  , 0  )
-   z.B   = point : new ( 5  , 2  )
-   L.AB = line : new ( z.A , z.B )
-   z.C   = point : new ( 1 , 2 )
-   C.AC  = circle : new (z.A,z.C)
-   C.BC  = circle : new (z.B,z.C)
-   z.T,z.Tp = C.AC : common_tangent (C.BC)
-   L.TTp = line : new (z.T,z.Tp)
-   z.M   = C.AC : point (0.45)
-   L.MC  =line : new (z.M,z.C)
-   z.Mp  = intersection (L.MC, C.BC) 
-   L.mm = L.TTp : ll_from (z.C)
-   _,z.M = intersection (L.mm, C.AC)
-   z.Mp = intersection (L.mm, C.BC)
-   _,z.D = intersection (C.AC,C.BC)
-\end{tkzelements}         
+   z.O     = point : new (0,0)
+   z.A     = point : new (2,-2)
+   z.M     = point : new (-6,0)
+   L.AM    = line : new (z.A,z.M)
+   C.OA    = circle :    new (z.O,z.A)
+   z.Ap    = C.OA : antipode (z.A)
+   z.B     = intersection (L.AM, C.OA)
+\end{tkzelements}
 \begin{tikzpicture}
    \tkzGetNodes
-   \tkzDrawCircles(A,C B,C)
-   \tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
-   \tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
-   \tkzDrawPoints(A,B,C,D,M,M',T,T')
-   \tkzLabelPoints(A,B,D,M)
-   \tkzLabelPoints[above](C,M',T,T')
-   \tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
-   \tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
+   \tkzDrawCircle(O,A)
+   \tkzMarkRightAngle[fill=gray!10](A',B,M)
+   \tkzDrawSegments(M,O A,A' A',B)
+   \tkzDrawPoints(O,A,A',M,B)
+   \tkzLabelPoints(O,A,A',M,B)
+   \tkzDrawSegments[-Triangle](M,A M,A')
 \end{tikzpicture}
 \end{Verbatim}
-
-
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}
 \begin{tkzelements}
-z.A   = point : new ( 0  , 0  )
-z.B   = point : new ( 5  , 2  )
-L.AB = line : new ( z.A , z.B )
-z.C   = point : new ( 1 , 2 )
-C.AC  = circle : new (z.A,z.C)
-C.BC  = circle : new (z.B,z.C)
-z.T,z.Tp = C.AC : common_tangent (C.BC)
-L.TTp = line : new (z.T,z.Tp)
-z.M   = C.AC : point (0.45)
-L.MC  =line : new (z.M,z.C)
-z.Mp  = intersection (L.MC, C.BC) 
-L.mm = L.TTp : ll_from (z.C)
-_,z.M = intersection (L.mm, C.AC)
-z.Mp = intersection (L.mm, C.BC)
-_,z.D = intersection (C.AC,C.BC)
+scale = 1
+z.O   = point : new (0,0)
+z.A   = point : new (2,-2)
+z.M   = point : new (-6,0)
+L.AM  = line : new (z.A,z.M)
+C.OA  = circle : new (z.O,z.A)
+z.Ap  = C.OA : antipode (z.A)
+z.B   = intersection (L.AM, C.OA)
 \end{tkzelements}
-\hspace*{\fill}    
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,C B,C)
-\tkzDrawSegments(M,M' A,D B,D A,B C,D T,C T',C)
-\tkzDrawSegments[gray](D,M D,M' T,T' D,T D,T')
-\tkzDrawPoints(A,B,C,D,M,M',T,T')
-\tkzLabelPoints(A,B,D,M)
-\tkzLabelPoints[above](C,M',T,T')
-\tkzMarkAngles[mark=|,size=.75](T,C,M C,T,T' C,D,T T,D,M)
-\tkzMarkAngles[mark=||,size=.75](M',C,T' T,T',C T',D,C M',D,T')
-\end{tikzpicture}
-\hspace*{\fill}  
 
-% subsection common_tangent (end)
 
-\subsection{Common tangent: orthogonality} % (fold)
-\label{sub:common_tangent_orthogonality}
-For two circles  to be orthogonal, it is necessary and sufficient for a secant  passing through one of their common points to be seen from the other common point at a right angle.
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle(O,A)
+  \tkzMarkRightAngle[fill=gray!10](A',B,M)
+  \tkzDrawSegments(M,O A,A' A',B)
+  \tkzDrawPoints(O,A,A',M,B)
+  \tkzLabelPoints(O,A,A',M,B)
+  \tkzDrawSegments[-Triangle](M,A M,A')
+  \end{tikzpicture}
+\end{center}
 
+\end{minipage}
+% paragraph power_v1 (end)
+
+\paragraph{Power v2} % (fold)
+\label{par:power_v2}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{Verbatim}
 \begin{tkzelements}
-   z.A   = point : new ( 0  , 0  )
-   z.B   = point : new ( 4  , 2  )
-   L.AB = line : new ( z.A , z.B )
-   z.a   = point : new ( 1 , 2 )
-   C.Aa  = circle : new (z.A,z.a)
-   C.BC = C.Aa : orthogonal_from (z.B)
-   z.C,z.D = intersection (C.Aa,C.BC)
-   C.AC  = circle : new (z.A,z.C)
-   z.T,z.Tp = C.AC : common_tangent (C.BC)
-   L.TTp = line : new (z.T,z.Tp)
-   z.M   = C.AC : point (0.45)
-   L.MC  =line : new (z.M,z.C)
-   z.Mp  = intersection (L.MC, C.BC) 
-   L.mm = L.TTp : ll_from (z.C)
-   _,z.M = intersection (L.mm, C.AC)
-   z.Mp = intersection (L.mm, C.BC)
+   z.O     = point : new (0,0)
+   z.A     = point : new (2,2)
+   z.M     = point : new (-1.5,0)
+   L.AM    = line : new (z.A,z.M)
+   C.OA    = circle :    new (z.O,z.A)
+   z.Ap    = C.OA : antipode (z.A)
+   _,z.B   = intersection (L.AM, C.OA)
+   z.m     = z.M : north(1)
+   L.mM    = line : new (z.m,z.M)
+   z.U,z.V = intersection (L.mM,C.OA)
 \end{tkzelements}
-    
 \begin{tikzpicture}
    \tkzGetNodes
-   \tkzDrawCircles(A,C B,C)
-   \tkzDrawSegments(M,M' A,C B,C A,B)
-   \tkzDrawSegments[gray](D,M D,M' T,T')
-   \tkzDrawPoints(A,B,C,D,M,M',T,T')
-   \tkzLabelPoints(A,B,D,M)
-   \tkzLabelPoints[above](C,M',T,T')
-   \tkzMarkRightAngles(M',D,M A,C,B)
+   \tkzDrawCircle(O,A)
+   \tkzMarkRightAngle[fill=gray!10](A',B,M)
+   \tkzDrawSegments(M,O A,A' A',B A,B U,V)
+   \tkzDrawPoints(O,A,A',M,B,U,V,m)
+   \tkzLabelPoints(O,A,M,U,V,m)
+   \tkzLabelPoints[below left](A',B)
+   \tkzDrawSegments(M,A M,A')
 \end{tikzpicture}
 \end{Verbatim}
-
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{tkzelements}
-z.A   = point : new ( 0  , 0  )
-z.B   = point : new ( 4  , 2  )
-L.AB = line : new ( z.A , z.B )
-z.a   = point : new ( 1 , 2 )
-C.Aa  = circle : new (z.A,z.a)
-C.BC = C.Aa : orthogonal_from (z.B)
-z.C,z.D = intersection (C.Aa,C.BC)
-C.AC  = circle : new (z.A,z.C)
-z.T,z.Tp = C.AC : common_tangent (C.BC)
-L.TTp = line : new (z.T,z.Tp)
-z.M   = C.AC : point (0.45)
-L.MC  =line : new (z.M,z.C)
-z.Mp  = intersection (L.MC, C.BC) 
-L.mm = L.TTp : ll_from (z.C)
-_,z.M = intersection (L.mm, C.AC)
-z.Mp = intersection (L.mm, C.BC)
+scale = 1
+z.O     = point : new (0,0)
+z.A     = point : new (2,2)
+z.M     = point : new (-1.5,0)
+L.AM    = line : new (z.A,z.M)
+C.OA    = circle :    new (z.O,z.A)
+z.Ap    = C.OA : antipode (z.A)
+_,z.B   = intersection (L.AM, C.OA)
+z.m     = z.M : north(1)
+L.mM    = line : new (z.m,z.M)
+z.U,z.V = intersection (L.mM,C.OA)
 \end{tkzelements}
- \hspace*{\fill}     
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(A,C B,C)
-   \tkzDrawSegments(M,M' A,C B,C A,B)
-   \tkzDrawSegments[gray](D,M D,M' T,T')
-   \tkzDrawPoints(A,B,C,D,M,M',T,T')
-   \tkzLabelPoints(A,B,D,M)
-   \tkzLabelPoints[above](C,M',T,T')
-   \tkzMarkRightAngles(M',D,M A,C,B)
-\end{tikzpicture}
-\hspace*{\fill}  
-% subsection common_tangent_orthogonality (end)
 
-\subsection{In\_out for circle and disk} % (fold)
-\label{sub:in_out_for_circle_and_disk}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle(O,A)
+  \tkzMarkRightAngle[fill=gray!10](A',B,M)
+  \tkzDrawSegments(M,O A,A' A',B A,B U,V)
+  \tkzDrawPoints(O,A,A',M,B,U,V,m)
+  \tkzLabelPoints(O,A,M,U,V,m)
+  \tkzLabelPoints[below left](A',B)
+  \tkzDrawSegments(M,A M,A')
+  \end{tikzpicture}
+\end{center}
 
-\begin{Verbatim}
-\begin{tkzelements}
+\end{minipage}
+% paragraph power_v2 (end)
+
+% subsubsection method_imeth_circle_power_c (end)
+
+\subsubsection{Method \Imeth{circle}{in\_out} for circle and disk} % (fold)
+\label{ssub:in_out_for_circle_and_disk}
+
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+  \begin{tkzelements}
+  z.O = point : new (0,0)
+  z.A = point : new (1,2)
+  C.OA = circle : new (z.O,z.A)
+  z.N = point : new (-2,2)
+  z.M = point : new (1,0)
+  z.P = point : new (2,1)
+  BCm = C.OA : in_out (z.M)
+  BDm = C.OA : in_out_disk (z.M)
+  BCn = C.OA : in_out (z.N)
+  BDn = C.OA : in_out_disk (z.N)
+  BCp = C.OA : in_out (z.P)
+  BDp = C.OA : in_out_disk (z.P)
+  \end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}\begin{tkzelements}
 z.O = point : new (0,0)
 z.A = point : new (1,2)
 C.OA = circle : new (z.O,z.A)
@@ -965,53 +1778,104 @@
 \tkzLabelPoints(O,M,N,P)
    \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{
    \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on  the #3}}{%
-   \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out  the #3}}}    
+   \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out  the #3}}
+}    
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawSegments[dashed](O,M O,N O,P)
+  \tkzDrawCircle(O,A)
+  \tkzDrawPoints(O,M,N,P)
+  \tkzPosPoint{BCm}{M}{circle}{8}
+  \tkzPosPoint{BCn}{N}{circle}{8}
+  \tkzPosPoint{BCp}{P}{circle}{8}
+  \tkzPosPoint{BDm}{M}{disk}{14}
+  \tkzPosPoint{BDn}{N}{disk}{14}
+  \tkzPosPoint{BDp}{P}{disk}{14}
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+  \def\tkzPosPoint#1#2#3#4{%
+  \tkzLabelPoints(O,M,N,P)
+     \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{
+     \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on  the #3}}{%
+     \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out  the #3}}}    
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawSegments[dashed](O,M O,N O,P)
+  \tkzDrawCircle(O,A)
+  \tkzDrawPoints(O,M,N,P)
+  \tkzPosPoint{BCm}{M}{circle}{8}
+  \tkzPosPoint{BCn}{N}{circle}{8}
+  \tkzPosPoint{BCp}{P}{circle}{8}
+  \tkzPosPoint{BDm}{M}{disk}{14}
+  \tkzPosPoint{BDn}{N}{disk}{14}
+  \tkzPosPoint{BDp}{P}{disk}{14}
+  \end{tikzpicture}
+  \end{Verbatim}
+\end{minipage}
+
+% subsubsection in_out_for_circle_and_disk (end)
+
+\subsubsection{Method \Imeth{circle}{circles\_position}} % (fold)
+\label{ssub:circles_position}
+
+This function returns a string indicating the position of the circle in relation to another. Useful for creating a function. Cases are:
+
+\begin{itemize}
+   \item \code{outside}
+   \item \code{outside tangent}
+   \item \code{inside tangent}
+   \item \code{inside}
+   \item \code{intersect}
+\end{itemize}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A      = point : new ( 0  , 0  )
+   z.a      = point : new ( 3  , 0  )
+   z.B      = point : new ( 2  , 0  )
+   z.b      = point : new ( 3  , 0  )
+   C.Aa     = circle: new (z.A,z.a)
+   C.Bb     = circle: new (z.B,z.b)
+   position = C.Aa : circles_position (C.Bb)
+   if position == "inside tangent" 
+   then color = "orange" 
+   else color = "blue" end
+\end{tkzelements}
+       
 \begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSegments[dashed](O,M O,N O,P)
-\tkzDrawCircle(O,A)
-\tkzDrawPoints(O,M,N,P)
-\tkzPosPoint{BCm}{M}{circle}{8}
-\tkzPosPoint{BCn}{N}{circle}{8}
-\tkzPosPoint{BCp}{P}{circle}{8}
-\tkzPosPoint{BDm}{M}{disk}{14}
-\tkzPosPoint{BDn}{N}{disk}{14}
-\tkzPosPoint{BDp}{P}{disk}{14}
+   \tkzGetNodes
+   \tkzDrawCircle(A,a)
+   \tkzDrawCircle[color=\tkzUseLua{color}](B,b)
 \end{tikzpicture}
 \end{Verbatim}
-
+\end{minipage}
+\begin{minipage}{.5\textwidth}
 \begin{tkzelements}
-z.O = point : new (0,0)
-z.A = point : new (1,2)
-C.OA = circle : new (z.O,z.A)
-z.N = point : new (-2,2)
-z.M = point : new (1,0)
-z.P = point : new (2,1)
-BCm = C.OA : in_out (z.M)
-BDm = C.OA : in_out_disk (z.M)
-BCn = C.OA : in_out (z.N)
-BDn = C.OA : in_out_disk (z.N)
-BCp = C.OA : in_out (z.P)
-BDp = C.OA : in_out_disk (z.P)
+z.A = point : new ( 1  , 0  )
+z.a = point : new ( 3  , 0  )
+z.B = point : new ( 2  , 0  )
+z.b = point : new ( 3  , 0  )
+C.Aa = circle: new (z.A,z.a)
+C.Bb = circle: new (z.B,z.b)
+position = C.Aa : circles_position (C.Bb)
+if position == "inside tangent" then color = "orange" else color = "blue" end
 \end{tkzelements}
-\def\tkzPosPoint#1#2#3#4{%
-\tkzLabelPoints(O,M,N,P)
-   \ifthenelse{\equal{\tkzUseLua{#1}}{true}}{
-   \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){on  the #3}}{%
-   \tkzLabelPoint[below=#4pt,font=\scriptsize](#2){out  the #3}}
-}    
+\hspace{\fill}
 \begin{tikzpicture}
 \tkzGetNodes
-\tkzDrawSegments[dashed](O,M O,N O,P)
-\tkzDrawCircle(O,A)
-\tkzDrawPoints(O,M,N,P)
-\tkzPosPoint{BCm}{M}{circle}{8}
-\tkzPosPoint{BCn}{N}{circle}{8}
-\tkzPosPoint{BCp}{P}{circle}{8}
-\tkzPosPoint{BDm}{M}{disk}{14}
-\tkzPosPoint{BDn}{N}{disk}{14}
-\tkzPosPoint{BDp}{P}{disk}{14}
-\end{tikzpicture}
-% subsection in_out_for_circle_and_disk (end)
+\tkzDrawCircle(A,a)
+\tkzDrawCircle[color=\tkzUseLua{color}](B,b)
+\end{tikzpicture}\hspace{\fill}
+\end{minipage}
+% subsubsection circles__position (end)
+
+% subsection methods_of_the_class_circle (end)
 % section class_circle (end)
+
 \endinput

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-ellipse.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-ellipse.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-ellipse.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -141,10 +141,10 @@
 \Imeth{ellipse}{foci (f1,f2,v)} &  E = ellipse: foci ( focus 1, focus 2, vertex )    \\
 \Imeth{ellipse}{radii (c,a,b,sl) }     &   E = ellipse: radii ( center, radius a, radius b, slope )  \\
 \Imeth{ellipse}{in\_out (pt) }   & pt in/out of the ellipse  \\
-\Imeth{ellipse}{tangent\_at (pt) }     &  Refer to ex. \ref{ssub:method_point}   \\
-\Imeth{ellipse}{tangent\_from (pt) }    &  Refer to ex. \ref{ssub:method_point}    \\
-\Imeth{ellipse}{point (t)  }   &  vertex = point (0) covertex = point (0.25) ex Refer to  \ref{ssub:method_point}   \\
-\Imeth{ellipse}{orthoptic\_circle () }    &  Refer to ex. \ref{ssub:steiner_inellipse_and_circumellipse}   \\
+\Imeth{ellipse}{tangent\_at (pt) }     &  [ ex. \ref{ssub:method_point} ]  \\
+\Imeth{ellipse}{tangent\_from (pt) }    &  [ex. \ref{ssub:method_point} ]   \\
+\Imeth{ellipse}{point (t)  }   &  vertex = point (0) covertex = point (0.25) [ex. \ref{ssub:method_point} ]  \\
+\Imeth{ellipse}{orthoptic\_circle () }    &  [ex. \ref{ssub:steiner_inellipse_and_circumellipse}]   \\
 \bottomrule
 \end{tabular}
 
@@ -153,7 +153,7 @@
 \subsubsection{Method \Imeth{ellipse}{new}} % (fold)
 \label{ssub:method_imeth_ellipse_new}
 The main method for creating a new ellipse is \Imeth{ellipse}{new}. The arguments are three: \Iattr{ellipse}{center}, \Iattr{ellipse}{vertex} and \Iattr{ellipse}{covertex}
-For attributes Refer to  \ref{sec:class_ellipse}.
+For attributes  [\ref{sec:class_ellipse}].
 
 \begin{minipage}{0.5\textwidth}
 \begin{Verbatim}
@@ -258,22 +258,25 @@
      a,b   = E.Rx,E.Ry
      ang   = math.deg(E.slope)
   \end{tkzelements}
-  \hspace*{\fill}
-  \begin{tikzpicture}
-  \tkzGetNodes
-  \tkzDrawPolygon(A,B,C)
-  \tkzDrawCircles[cyan](O,A N,I)
-  \tkzDrawSegments(X,R A,X)
-  \tkzDrawEllipse[red](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-  \tkzDrawLines[add=.2 and .5](I,H)
-  \tkzDrawPoints(A,B,C,N,O,X,H,R,S,I)
-  \tkzLabelPoints[above](C,X)
-  \tkzLabelPoints[above right](N,O)
-  \tkzLabelPoints[above left](R)
-  \tkzLabelPoints[left](A)
-  \tkzLabelPoints[right](B,I,S,H)
-  \end{tikzpicture}
-  \hspace*{\fill}
+  
+  \begin{center}
+    \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPolygon(A,B,C)
+    \tkzDrawCircles[cyan](O,A N,I)
+    \tkzDrawSegments(X,R A,X)
+    \tkzDrawEllipse[red](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+    \tkzDrawLines[add=.2 and .5](I,H)
+    \tkzDrawPoints(A,B,C,N,O,X,H,R,S,I)
+    \tkzLabelPoints[above](C,X)
+    \tkzLabelPoints[above right](N,O)
+    \tkzLabelPoints[above left](R)
+    \tkzLabelPoints[left](A)
+    \tkzLabelPoints[right](B,I,S,H)
+    \end{tikzpicture}
+  \end{center}
+
+
 \end{minipage}
 
 \begin{Verbatim}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -26,15 +26,15 @@
 \Iattr{line}{pb}  & Second point of the segment & \\
 \Iattr{line}{type} & Type is 'line'    &  |L.AB.type = 'line'| \\  
 \Iattr{line}{mid} & Middle of the segment& |z.M = L.AB.mid|\\
-\Iattr{line}{slope} & Slope of the line & Refer to (\ref{ssub:example_class_line})\\
-\Iattr{line}{length} &|l = L.AB.length|&Refer to (\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line})\\  
-\Iattr{line}{north\_pa}   & &Refer to (\ref{ssub:example_class_line})  \\
+\Iattr{line}{slope} & Slope of the line & [\ref{ssub:example_class_line}] \\
+\Iattr{line}{length} &|l = L.AB.length|& [\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line}] \\  
+\Iattr{line}{north\_pa}   & & [\ref{ssub:example_class_line}]  \\
 \Iattr{line}{north\_pb}   & &\\
 \Iattr{line}{south\_pa}   & &\\
-\Iattr{line}{south\_pb}   & &Refer to (\ref{ssub:example_class_line}) \\
+\Iattr{line}{south\_pb}   & & [\ref{ssub:example_class_line}]  \\
 \Iattr{line}{east}   & &\\
 \Iattr{line}{west}   & &\\
-\Iattr{line}{vec}   & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$ Refer to (\ref{sec:class_vector})\\
+\Iattr{line}{vec}   & |V.AB = L.AB.vec|& defines $\overrightarrow{AB}$  [\ref{sec:class_vector}] \\
 \bottomrule
 \end{tabular}
 \egroup
@@ -41,7 +41,38 @@
 
 \subsubsection{Example: attributes of class line} % (fold)
 \label{ssub:example_class_line}
-\begin{minipage}{.5\textwidth}
+
+\vspace{5pt}
+\begin{tkzelements}
+z.a = point: new (1, 1)
+z.b = point: new (5, 4)
+L.ab = line : new (z.a,z.b)
+z.m = L.ab.mid
+z.w = L.ab.west
+z.e = L.ab.east
+z.r = L.ab.north_pa
+z.s  = L.ab.south_pb
+sl   = L.ab.slope
+len = L.ab.length
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPoints(a,b,m,e,r,s,w)
+     \tkzLabelPoints(a,b)
+     \tkzLabelPoint(r){north\_pa}
+     \tkzLabelPoint(s){south\_pb}
+     \tkzLabelPoint[below](m){mid}
+     \tkzLabelPoint[right](w){west}
+     \tkzLabelPoint[left](e){east}
+     \tkzDrawLine(a,b)
+     \tkzLabelSegment[above = 1em,sloped](a,b){ab = \pmpn{\tkzUseLua{len}}}
+     \tkzLabelSegment[above=2em,sloped](a,b){slope of (ab) =  \pmpn{\tkzUseLua{sl}}}
+  \end{tikzpicture}
+\end{center}
+
+
 \begin{Verbatim}
 \begin{tkzelements}
   scale  = .5
@@ -67,35 +98,8 @@
    \tkzLabelSegment[above=12pt,sloped](a,b){slope of (ab) = \tkzUseLua{sl}}
 \end{tikzpicture}
 \end{Verbatim}
-\end{minipage}
-\begin{minipage}{.5\textwidth}\begin{tkzelements}
-scale = .5
-z.a = point: new (1, 1)
-z.b = point: new (5, 4)
-L.ab = line : new (z.a,z.b)
-z.m = L.ab.mid
-z.w = L.ab.west
-z.e = L.ab.east
-z.r = L.ab.north_pa
-z.s  = L.ab.south_pb
-sl   = L.ab.slope
-len = L.ab.length
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawPoints(a,b,m,e,r,s,w)
-   \tkzLabelPoints(a,b)
-   \tkzLabelPoint(r){north\_pa}
-   \tkzLabelPoint(s){south\_pb}
-   \tkzLabelPoint[below](m){mid}
-   \tkzLabelPoint[right](w){west}
-   \tkzLabelPoint[left](e){east}
-   \tkzDrawLine(a,b)
-   \tkzLabelSegment[above = 1em,sloped](a,b){ab = \pmpn{\tkzUseLua{len}}}
-   \tkzLabelSegment[above=2em,sloped](a,b){slope of (ab) =  \pmpn{\tkzUseLua{sl}}}
-\end{tikzpicture}
-\end{minipage}
+
+
 % subsubsection example_class_line (end)
 
 \subsubsection{Method \Imeth{line}{new} and line attributes}
@@ -161,62 +165,54 @@
 \toprule
 \textbf{Methods} & \textbf{Comments} & \\
 \midrule 
-\Igfct{line}{new(pt, pt)}      & |L.AB = line : new(z.A,z.B)| & Create line $(AB)$ ; Refer to (\ref{ssub:altshiller})\\
+\Igfct{line}{new(pt, pt)}      & |L.AB = line : new(z.A,z.B)| & Create line $(AB)$ ;  [\ref{sub:altshiller}] \\
 \midrule 
 \textbf{Points} &&\\
 \midrule 
-\Imeth{line}{gold\_ratio ()}  & |z.C=L.AB : gold_ratio()|   & Refer to (\ref{sub:gold_ratio_with_segment} ; \ref{sub:the_figure_pappus_circle} ; \ref{sub:bankoff_circle})   \\
-\Imeth{line}{normalize ()}  & |z.C=L.AB : normalize()| & AC =1 and $C\in (AB)$ Refer to (\ref{ssub:normalize})  \\
+\Imeth{line}{gold\_ratio ()}  & |z.C=L.AB : gold_ratio()|   &  [\ref{sub:gold_ratio_with_segment} ; \ref{sub:the_figure_pappus_circle} ; \ref{sub:bankoff_circle} ]  \\
+\Imeth{line}{normalize ()}  & |z.C=L.AB : normalize()| & AC =1 and $C\in (AB)$  [ \ref{ssub:normalize}]  \\
 \Imeth{line}{normalize\_inv ()}  & |z.C=L.AB : normalize_inv()|   & CB=1 and $C\in (AB)$  \\
-\Imeth{line}{barycenter (r,r)}    & |z.C=L.AB : barycenter (1,2)|  & Refer to (\ref{ssub:barycenter_with_a_line})\\
-\Imeth{line}{point (r)} & |z.C=L.AB : point (2)|   & $\overrightarrow{AC} = 2\overrightarrow{AB}$  Refer to (\ref{sub:ellipse} ; \ref{ssub:method_point})\\
+\Imeth{line}{barycenter (r,r)}    & |z.C=L.AB : barycenter (1,2)|  &   [\ref{ssub:barycenter_with_a_line}] \\
+\Imeth{line}{point (r)} & |z.C=L.AB : point (2)|   & $\overrightarrow{AC} = 2\overrightarrow{AB}$  [\ref{sub:ellipse} ; \ref{ssub:method_point}] \\
 \Imeth{line}{midpoint ()}    & |z.M=L.AB : midpoint ()| & better is |z.M = L.AB.mid|  \\
-\Imeth{line}{harmonic\_int (pt)}  & |z.D=L.AB : harmonic_int (z.C)| & Refer to (\ref{sub:bankoff_circle})\\
-\Imeth{line}{harmonic\_ext (pt)}  & |z.D=L.AB : harmonic_ext (z.C)| & Refer to (\ref{sub:bankoff_circle})\\
-\Imeth{line}{harmonic\_both (r)}  & |z.C,z.D=L.AB : harmonic_both|($\varphi$) & \ref{sub:harmonic_division_with_tkzphi}\\
+\Imeth{line}{harmonic\_int (pt)}  & |z.D=L.AB : harmonic_int (z.C)| &  [ \ref{sub:bankoff_circle}] \\
+\Imeth{line}{harmonic\_ext (pt)}  & |z.D=L.AB : harmonic_ext (z.C)| & [ \ref{sub:bankoff_circle}] \\
+\Imeth{line}{harmonic\_both (r)}  & |z.C,z.D=L.AB : harmonic_both|($\varphi$) & [\ref{sub:harmonic_division_with_tkzphi}] \\
 \Imeth{line}{\_east(d)}    & |z.M=L.AB : _east(2)| & |BM = 2| $A,B,M$ aligned  \\
 \Imeth{line}{\_west(d)}    & |z.M=L.AB : _east(2)| & |BM = 2| $A,B,M$ aligned  \\
-\Imeth{line}{\_north\_pa(d)}  &|z.M=L.AB: _north_pa(2)| &|AM=2| $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise   \\
-\Imeth{line}{\_south\_pa(d)}  &|z.M=L.AB:_south_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ clockwise   \\
-\Imeth{line}{\_north\_pb(d)}  &|z.M=L.AB:_north_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{BA},\overrightarrow{BM}$ clockwise   \\
-\Imeth{line}{\_south\_pb(d)}  &|z.M=L.AB:_south_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise   \\
-\Imeth{line}{report(d,pt)}    &|z.M=L.AB:report(2,z.N)| &|MN=2|; $AB\parallel MN$ ; Refer to ex. (\ref{ssub:method_report})\\
-\Imeth{line}{colinear\_at(pt,k)}    &|z.D=L.AB:colinear_at(z.C,2)| &|CD=2AB|; $AB\parallel CD$ ; Refer to ex. (\ref{ssub:method_imeth_line_colinear__at})\\
+\Imeth{line}{\_north\_pa(d)}  &|z.M=L.AB: _north_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise. \\
+...&&  [\ref{ssub:new_line_from_a_defined_line}; \ref{ssub:attributes_of_an_ellipse}]\\
+\Imeth{line}{\_south\_pa(d)}  &|z.M=L.AB: _south_pa(2)| &|AM=2|; $AM\perp AB$ ; $\overrightarrow{AB},\overrightarrow{AM}$ clockwise   \\
+\Imeth{line}{\_north\_pb(d)}  &|z.M=L.AB: _north_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{BA},\overrightarrow{BM}$ clockwise   \\
+\Imeth{line}{\_south\_pb(d)}  &|z.M=L.AB: _south_pb(2)| &|BM=2|; $BM\perp BA$ ; $\overrightarrow{AB},\overrightarrow{AM}$ counterclockwise   \\
+\Imeth{line}{report(d,pt)}    &|z.M=L.AB: report(2,z.N)| &|MN=2|; $AB\parallel MN$ ;  [ex. \ref{ssub:method_report}]\\
+\Imeth{line}{colinear\_at(pt,k)}    &|z.D=L.AB: colinear_at(z.C,2)| &|CD=2AB|; $AB\parallel CD$ ;  [ex. \ref{ssub:method_imeth_line_colinear__at}]\\
 \midrule 
 \textbf{Lines} &&\\
 \midrule  
-\Imeth{line}{ll\_from ( pt )}  &|L.CD=L.AB: ll_from(z.C)| &$(CD) \parallel (AB)$ \\
-\Imeth{line}{ortho\_from ( pt )} &|L.CD=L.AB: ortho_from(z.C)|&$(CD) \perp (AB)$\\
-\Imeth{line}{mediator ()}&|L.uv=L.AB: mediator()| & $(u,v)$mediator of $(A,B)$\\
+\Imeth{line}{ll\_from ( pt )}  &|L.CD=L.AB: ll_from(z.C)| &$(CD) \parallel (AB)$;  [\ref{ssub:new_line_from_a_defined_line}] \\
+\Imeth{line}{ortho\_from ( pt )} &|L.CD=L.AB: ortho_from(z.C)|&$(CD) \perp (AB)$;  [\ref{ssub:newline_ortho_from}] \\
+ \Imeth{line}{mediator ()} & |L.uv=L.AB: mediator()| & perpendicular bisector of $(A,B)$ \footnote{You can use |perpendicular_bisector| intead of \tkzname{mediator}.}; [\ref{ssub:method_imeth_line_mediator}]\\
 \midrule 
 \textbf{Triangles}&&\\
 \midrule  
-\Imeth{line}{equilateral (<swap>)}  & |T.ABC=L.AB:equilateral()|   & $(\overrightarrow{AB},\overrightarrow{AC})>0$ or $<0$ with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.}  \\
-\Imeth{line}{isosceles (an<,swap>)}&|T.ABC=L.AB:isosceles(math.pi/6)|&\\
-\Imeth{line}{two\_angles (an,an)} &|T.ABC=L.AB:two_angles(an,an)|&note \footnote{The given side is between the two angles} Refer to (\ref{ssub:triangle_with_two__angles}) \\
+\Imeth{line}{equilateral (<swap>)}  & |T.ABC=L.AB:equilateral()|   & $(\overrightarrow{AB},\overrightarrow{AC})>0$ or $<0$ with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.}; [\ref{ssub:object_rotation}]  \\
+\Imeth{line}{isosceles (an<,swap>)}&|T.ABC=L.AB:isosceles(math.pi/6)|& [\ref{ssub:method_imeth_line_isosceles}]\\
+\Imeth{line}{two\_angles (an,an)} &|T.ABC=L.AB:two_angles(an,an)|&note \footnote{The given side is between the two angles} [\ref{ssub:triangle_with_two__angles}] \\
 \Imeth{line}{school ()}  & 30°,60°, 90°  & \\
-\Imeth{line}{sss (r,r)}  & $AC=r$ $BC=r$ & \\
-\Imeth{line}{as (r,an)}  & $AC =r$ $\widehat{BAC} = an$& \\
-\Imeth{line}{sa (r,an)}  & $AC =r$ $\widehat{ABC} = an$& \\
+\Imeth{line}{sss (r,r)}  & $AC=r$ $BC=r$ & [\ref{ssub:triangle_with_three_given_sides}] \\
+\Imeth{line}{sas (r,an)}  & $AC =r$ $\widehat{BAC} = an$ & [\ref{ssub:triangle_with_three_given_sides}]  \\
+\Imeth{line}{ssa (r,an)}  & $AC =r$ $\widehat{ABC} = an$&  [\ref{ssub:triangle_with_three_given_sides}]\\
 \midrule 
-\textbf{Sacred triangles}&&\\
-\midrule  
-\Imeth{line}{gold (<swap>)}    &|T.ABC=L.AB:gold()| & right in $B$ and $AC = \varphi \times AB $ \\
-\Imeth{line}{euclide (<swap>)} &|T.ABC=L.AB:euclide()| &$AB=AC$ ; $(\overrightarrow{AB},\overrightarrow{AC}) = \pi/5$ \\
-\Imeth{line}{golden (<swap>)}  &|T.ABC=L.AB:golden()|   &
-    $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$   \\
-\Imeth{line}{divine ()}  & & \\   
-\Imeth{line}{egyptian ()} & & \\
-\Imeth{line}{cheops ()}  & & \\
-\midrule 
 \textbf{Squares}&&\\
 \midrule  
-\Imeth{line}{square ()} &|S.AB=L.AB : square () | &  create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}\\
+\Imeth{line}{square ()} &|S.AB=L.AB : square () | &  create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}; [\ref{ssub:object_rotation}] \\
 \bottomrule
 \end{tabular}
 \egroup
 \end{minipage}
 
+
 \begin{minipage}{\textwidth}
 \bgroup
 \catcode`_=12
@@ -226,23 +222,33 @@
 \toprule
 \textbf{Methods} & \textbf{Comments} & \\
 \midrule 
+\textbf{Sacred triangles}&&\\
+\midrule  
+\Imeth{line}{gold (<swap>)}    &|T.ABC=L.AB:gold()| & right in $B$ and $AC = \varphi \times AB $; [\ref{line:met}] \\
+\Imeth{line}{euclide (<swap>)} &|T.ABC=L.AB:euclide()| &$AB=AC$ ; $(\overrightarrow{AB},\overrightarrow{AC}) = \pi/5$; [\ref{line:met}] \\
+\Imeth{line}{golden (<swap>)}  &|T.ABC=L.AB:golden()|   &
+    $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$ ;  [\ref{line:met}] \\
+\Imeth{line}{divine ()}  & &   [\ref{line:met}] \\  
+\Imeth{line}{egyptian ()} & & [\ref{line:met}] \\
+\Imeth{line}{cheops ()}  & & [\ref{line:met}] \\
+\midrule 
 \textbf{Circles} &&\\
 \midrule 
 \Imeth{line}{circle ()}  & |C.AB = L.AB : circle ()| &  center pa through pb \\
-\Imeth{line}{circle\_swap ()}  & |C.BA = L.AB : circle_swap ()|&  center pb through pa \\
-\Imeth{line}{apollonius (r)}  & |C.apo = L.AB : apollonius (2)|&  Set of points tq. |MA/MB = 2| \\
+\Imeth{line}{apollonius (r)}  & |C.apo = L.AB : apollonius (2)|&  Set of points tq. |MA/MB = 2|; [\ref{ssub:apollonius_circle_ma_mb_k}] \\
 \midrule 
 \textbf{Transformations} &&\\
 \midrule 
-\Imeth{line}{reflection ( obj )}  & |new obj = L.AB : reflection (obj|&\\
-\Imeth{line}{translation ( obj )} & |new obj = L.AB : translation (obj)|&\\
-\Imeth{line}{projection ( obj )}  & |z.H = L.AB : projection (z.C)| & $CH \perp (AB)$ and $H\in (AB)$\\
+\Imeth{line}{reflection ( obj )}  & |new obj = L.AB : reflection (obj|&  [\ref{ssub:reflection_of_object}] \\
+\Imeth{line}{translation ( obj )} & |new obj = L.AB : translation (obj)|& [\ref{ssub:example_translation}] \\
+\Imeth{line}{projection ( obj )}  & |z.H = L.AB : projection (z.C)| & $CH \perp (AB)$ and $H\in (AB)$; [\ref{ssub:example_projection_of_several_points}; \ref{ssub:example_combination_of_methods}]\\
+...  & &  [ \ref{ssub:example_projection_of_several_points}; \ref{ssub:example_combination_of_methods}]\\
 \midrule 
 \textbf{Miscellaneous} &&\\
 \midrule 
-\Imeth{line}{distance (pt)}   & |d = L.Ab : distance (z.C)|  & Refer to \ref{ssub:example_distance_and_projection}\\
-\Imeth{line}{in\_out (pt)}  & |b = L.AB: in_out(z.C)|  & b=true if $C\in (AB)$ \\
-\Imeth{line}{slope ()} &   |a = L.AB : slope()| & better is L.AB.slope \\ 
+\Imeth{line}{distance (pt)}   & |d = L.Ab : distance (z.C)|  &   [\ref{ssub:example_distance_and_projection}] \\
+\Imeth{line}{in\_out (pt)}  & |b = L.AB: in_out(z.C)|  & b=true if $C\in (AB)$ ;  [\ref{ssub:in_out_for_a_line}] \\
+\Imeth{line}{slope ()} &   |a = L.AB : slope()| & better is L.AB.slope; [\ref{ssub:example_class_line}]\\ 
 \Imeth{line}{in\_out\_segment (pt)} &   |b = L.AB : in_out_segment(z.C)| & b=true if $C\in [AB$]  \\ 
 \bottomrule
 \end{tabular}
@@ -309,7 +315,11 @@
    \tkzDrawPolygons(A,B,C) 
    \tkzDrawPoints(A,B,C)
    \tkzLabelPoints(A,B)
-    \tkzLabelPoints[above](C)
+   \tkzLabelPoints[above](C)
+   \tkzMarkAngle[red](C,B,A)
+   \tkzMarkAngle[red](B,A,C)
+   \tkzLabelAngle[red,pos=1.3](C,B,A){$\pi/2$}
+   \tkzLabelAngle[red,pos=1.3](B,A,C){$\pi/6$}
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
@@ -321,57 +331,130 @@
       T.ABC= L.AB : two_angles (math.pi/6,math.pi/2)
       z.C = T.ABC.pc
    \end{tkzelements}
-   \hspace*{\fill}
-   \begin{tikzpicture}
-      \tkzGetNodes
-      \tkzDrawPolygons(A,B,C) 
-      \tkzDrawPoints(A,B,C)
-      \tkzLabelPoints(A,B)
-       \tkzLabelPoints[above](C)
-   \end{tikzpicture}
-   \hspace*{\fill}
+
+   \begin{center}
+     \begin{tikzpicture}
+        \tkzGetNodes
+        \tkzDrawPolygons(A,B,C) 
+        \tkzDrawPoints(A,B,C)
+        \tkzLabelPoints(A,B)
+        \tkzLabelPoints[above](C)
+        \tkzMarkAngle[red](C,B,A)
+        \tkzMarkAngle[red](B,A,C)
+        \tkzLabelAngle[red,pos=1.3](C,B,A){$\pi/2$}
+        \tkzLabelAngle[red,pos=1.3](B,A,C){$\pi/6$}
+     \end{tikzpicture}
+   \end{center}
+
 \end{minipage}
 % subsubsection triangle_with_two__angles (end)
 
-\subsubsection{Method \Imeth{line}{sss}} % (fold)
+\subsubsection{Method \Imeth{line}{isosceles}} % (fold)
+\label{ssub:method_imeth_line_isosceles}
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+\begin{tkzelements}
+   scale          = 2
+   z.a            = point :   new (1,2)
+   z.b            = point :   new (5,1)
+   L.ab           = line :    new (z.a,z.b)
+   T.abc          = L.ab :    isosceles (math.pi/6,indirect)
+   z.c            = T.abc.pc
+   z.L            = T.abc : lemoine_point ()
+   T.SY           = T.abc : symmedian ()
+   z.Ka,z.Kb,z.Kc = get_points (T.SY)
+   L.Kb          = T.abc : symmedian_line (1)
+  _,z.Kb        = get_points(L.Kb) 
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(a,b,c Ka,Kb,Kc)
+\tkzDrawPoints(a,b,c,L,Ka,Kb,Kc)
+\tkzLabelPoints(c,L,Ka,Kb)
+\tkzLabelPoints[above](a,b,Kc)
+\tkzDrawSegments[cyan](a,Ka b,Kb c,Kc)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+   scale      = 2
+   z.a        = point : new (1,2)
+   z.b        = point : new (5,1)
+   L.ab       = line :  new (z.a,z.b)
+   T.abc      = L.ab :  isosceles (math.pi/6,indirect)
+   z.c        = T.abc.pc
+   z.L        = T.abc : lemoine_point ()
+   T.SY       = T.abc : symmedian ()
+   z.Ka,z.Kb,
+   z.Kc       = get_points (T.SY)
+   L.Kb       = T.abc : symmedian_line (1)
+  _,z.Kb      = get_points(L.Kb) 
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(a,b,c Ka,Kb,Kc)
+\tkzDrawPoints(a,b,c,L,Ka,Kb,Kc)
+\tkzLabelPoints(c,L,Ka,Kb)
+\tkzLabelPoints[above](a,b,Kc)
+\tkzDrawSegments[cyan](a,Ka b,Kb c,Kc)
+\end{tikzpicture}
+\end{minipage}
+
+% subsubsection method_imeth_line_isosceles (end)
+
+\subsubsection{Methods \Imeth{line}{sss}, \Imeth{line}{sas}, \Imeth{line}{ssa}} % (fold)
 \label{ssub:triangle_with_three_given_sides}
 
 In the following example, a small difficulty arises. The given lengths are not affected by scaling, so it's necessary to use the \Igfct{math}{value (r) } function, which will modify the lengths according to the scale.
 
+\vspace{6pt}
 \begin{minipage}{.4\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
-   z.A = point : new ( 0 , 0 )
-   z.B = point : new ( 5 , 0 )
-   L.AB = line : new ( z.A , z.B )
-   T.ABC =   L.AB : sss (value(3),value(4))
-   z.C = T.ABC.pc
+  z.A = point : new ( 0 , 0 )
+  z.B = point : new ( 5 , 0 )
+  L.AB = line : new ( z.A , z.B )
+  T.ABC =  L.AB : sss (value(3),value(4))
+  T.ABD =  L.AB : sas (value(3),math.pi/2)
+  T.ABE =  L.AB : ssa (value(7),math.pi/2)
+  z.C = T.ABC.pc
+  z.D = T.ABD.pc
+  z.E = T.ABE.pc
 \end{tkzelements}
+\hspace{\fill}  
 \begin{tikzpicture}[gridded]
-   \tkzGetNodes
-   \tkzDrawPolygons(A,B,C) 
-   \tkzDrawPoints(A,B,C)
-   \tkzLabelPoints(A,B)
-   \tkzLabelPoints[above](C)
+  \tkzGetNodes
+  \tkzDrawPolygons(A,B,C A,B,D A,B,E) 
+  \tkzDrawPoints(A,B,C,D,E)
+  \tkzLabelPoints(A,B)
+  \tkzLabelPoints[above](C,D,E)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.6\textwidth}
-   \begin{tkzelements}
-      z.A = point : new ( 0 , 0 )
-      z.B = point : new ( 5 , 0 )
-      L.AB = line : new ( z.A , z.B )
-      T.ABC =   L.AB : sss (value(3),value(4))
-      z.C = T.ABC.pc
-   \end{tkzelements}
-\hspace{\fill}  
- \begin{tikzpicture}[gridded]
-      \tkzGetNodes
-      \tkzDrawPolygons(A,B,C) 
-      \tkzDrawPoints(A,B,C)
-      \tkzLabelPoints(A,B)
-      \tkzLabelPoints[above](C)
-   \end{tikzpicture}
+\begin{tkzelements}
+  z.A = point : new ( 0 , 0 )
+  z.B = point : new ( 5 , 0 )
+  L.AB = line : new ( z.A , z.B )
+  T.ABC =  L.AB : sss (value(3),value(4))
+  T.ABD =  L.AB : sas (value(3),math.pi/2)
+  T.ABE =  L.AB : ssa (value(7),math.pi/2)
+  z.C = T.ABC.pc
+  z.D = T.ABD.pc
+  z.E = T.ABE.pc
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}[gridded]
+    \tkzGetNodes
+    \tkzDrawPolygons(A,B,C A,B,D A,B,E) 
+    \tkzDrawPoints(A,B,C,D,E)
+    \tkzLabelPoints(A,B)
+    \tkzLabelPoints[above](C,D,E)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection triangle_with_three_given_sides (end)
 
@@ -413,16 +496,20 @@
       z.C = T.ABC.pc
       z.D = T.ABD.pc
    \end{tkzelements}
-  \hspace{\fill} \begin{tikzpicture}[gridded]
-      \tkzGetNodes
-      \tkzDrawPolygons(A,B,C A,B,D) 
-      \tkzDrawPoints(A,B,C,D)
-      \tkzLabelPoints(A,B)
-      \tkzLabelPoints[above](C,D)
-      \tkzLabelAngle[teal](C,B,A){$\pi/6$}
-      \tkzLabelSegment[below left](A,C){$7$}
-      \tkzLabelSegment[below left](A,D){$7$}
-   \end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}[gridded]
+        \tkzGetNodes
+        \tkzDrawPolygons(A,B,C A,B,D) 
+        \tkzDrawPoints(A,B,C,D)
+        \tkzLabelPoints(A,B)
+        \tkzLabelPoints[above](C,D)
+        \tkzLabelAngle[teal](C,B,A){$\pi/6$}
+        \tkzLabelSegment[below left](A,C){$7$}
+        \tkzLabelSegment[below left](A,D){$7$}
+     \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 
 % subsubsection triangle_with_side_between_side_and_angle (end)
@@ -536,12 +623,15 @@
    z.J = L.AB : point (-0.5)
    z.K = L.AB : point (2)
 \end{tkzelements}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-   \tkzDrawLine(J,K)
-   \tkzDrawPoints(A,B,I,J,K)
-   \tkzLabelPoints(A,B,I,J,K)
- \end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}[gridded]
+  \tkzGetNodes
+     \tkzDrawLine(J,K)
+     \tkzDrawPoints(A,B,I,J,K)
+     \tkzLabelPoints(A,B,I,J,K)
+   \end{tikzpicture}
+\end{center}
+
  \end{minipage}
 % subsubsection method_point (end)
 
@@ -576,12 +666,15 @@
   z.D      = L.AB : colinear_at (z.C,.5)
   z.E      = L.AB : colinear_at (z.C)
 \end{tkzelements}
-\begin{tikzpicture}
-  \tkzGetNodes
-  \tkzDrawSegments(A,B C,E)
-  \tkzDrawPoints(A,B,C,D,E)
-  \tkzLabelPoints(A,B,C,D,E)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawSegments(A,B C,E)
+    \tkzDrawPoints(A,B,C,D,E)
+    \tkzLabelPoints(A,B,C,D,E)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 
 % subsubsection method_imeth_line_colinear__at (end)
@@ -615,15 +708,17 @@
    L.ab = line : new (z.a,z.b)
    z.c   = L.ab : normalize ()
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-\tkzDrawSegments(a,b)
-\tkzDrawCircle(a,c)
-\tkzDrawPoints(a,b,c)
-\tkzLabelPoints(a,b,c)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}[gridded]
+  \tkzGetNodes
+  \tkzDrawSegments(a,b)
+  \tkzDrawCircle(a,c)
+  \tkzDrawPoints(a,b,c)
+  \tkzLabelPoints(a,b,c)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection normalize (end)
 
@@ -654,16 +749,19 @@
    L.AB = line : new ( z.A , z.B )
    z.G = L.AB : barycenter (1,2)
 \end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawLine(A,B)
-   \tkzDrawPoints(A,B,G)
-   \tkzLabelPoints(A,B,G)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawLine(A,B)
+     \tkzDrawPoints(A,B,G)
+     \tkzLabelPoints(A,B,G)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection barycenter_with_a_line (end)
 
-\subsubsection{method \Imeth{line}{ll\_from}} % (fold)
+\subsubsection{Method \Imeth{line}{ll\_from}} % (fold)
 \label{ssub:new_line_from_a_defined_line}
 \begin{minipage}{0.5\textwidth}
 \begin{Verbatim}
@@ -700,21 +798,163 @@
 _,z.E   = get_points ( L.CD: ll_from (z.B))
 -- or  z.E   = L2.pb with |L2 = L.CD: ll_from (z.B)|
 \end{tkzelements}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(A,B C,D B,E)
+  \tkzDrawPoints(A,...,E)
+  \tkzLabelPoints(A,...,E)
+  \tkzMarkRightAngle(B,A,C)
+  \tkzMarkSegments(A,C A,B A,D)
+  \end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+ %  \caption{New line from defined line}
+% subsubsection new_line_from_a_defined_line (end)
+
+\subsubsection{Method \Imeth{line}{ortho\_from}} % (fold)
+\label{ssub:newline_ortho_from}
+\begin{minipage}{0.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A   = point : new (1,1)
+   z.B   = point : new (3,2)
+   L.AB  = line :  new (z.A,z.B)
+   z.C   = point : new (1,3)
+   L.CD  = L.AB :  ortho_from(z.C)
+   z.D   = L.CD.pb
+\end{tkzelements}
 \begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,B C,D B,E)
-\tkzDrawPoints(A,...,E)
-\tkzLabelPoints(A,...,E)
-\tkzMarkRightAngle(B,A,C)
-\tkzMarkSegments(A,C A,B A,D)
+   \tkzGetNodes
+   \tkzDrawLines(A,B C,D)
+   \tkzDrawPoints(A,...,D)
+   \tkzLabelPoints(A,...,D)
 \end{tikzpicture}
-\hspace*{\fill}
+\end{Verbatim}
 \end{minipage}
- %  \caption{New line from defined line}
+\begin{minipage}{0.5\textwidth}
+\begin{tkzelements}
+   z.A   = point : new (1,1)
+   z.B   = point : new (3,2)
+   L.AB  = line :  new (z.A,z.B)
+  z.C   = point : new (1,3)
+   L.CD  = L.AB :  ortho_from(z.C)
+   z.D   = L.CD.pb
+\end{tkzelements}
+
+\begin{center}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawLines(A,B C,D)
+   \tkzDrawPoints(A,...,D)
+   \tkzLabelPoints(A,...,D)
+\end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+
 % subsubsection new_line_from_a_defined_line (end)
 
+\subsubsection{Method \Imeth{line}{mediator}} % (fold)
+\label{ssub:method_imeth_line_mediator}
 
+In Mathworld, the mediator is the plane through the midpoint of a line segment and perpendicular to that segment, also called a mediating plane. The term "mediator" was introduced by J. Neuberg (Altshiller-Court 1979, p. 298). Here, I have adopted the French term and the mediator or 
+the perpendicular bisector  of a line segment, is a line segment perpendicular to the segment and passing through the midpoint of this segment.
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  z.A    = point: new(0,0)
+  z.B    = point: new(5,0)
+  L.AB   = line: new (z.A,z.B)
+  L.med  = L.AB : mediator ()
+  z.M    = L.AB.mid
+  z.x,z.y= get_points(L.med)
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawLine(A,B)
+\tkzDrawSegments(x,y)
+\tkzDrawPoints(A,B,M)
+\tkzLabelPoints(A,B)
+\tkzLabelPoints[below left](x,y,M)
+\tkzMarkSegments(A,M M,B)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  z.A    = point: new(0,0)
+  z.B    = point: new(5,0)
+  L.AB   = line: new (z.A,z.B)
+  L.med  = L.AB : mediator ()
+  z.M    = L.AB.mid
+  z.x,z.y= get_points(L.med)
+\end{tkzelements}
+\begin{center}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawLine(A,B)
+\tkzDrawSegments(x,y)
+\tkzDrawPoints(A,B,M)
+\tkzLabelPoints(A,B)
+\tkzLabelPoints[below left](x,y,M)
+\tkzMarkSegments(A,M M,B)
+\end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_line_mediator (end)
+
+\subsubsection{Method \Imeth{line}{equilateral}} % (fold)
+\label{ssub:method_imeth_line_equilateral}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  z.A    = point: new(0,0)
+  z.B    = point: new(5,0)
+  L.AB   = line: new (z.A,z.B)
+  T.ABC  = L.AB : equilateral ()
+  z.C    = T.ABC.pc
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawLine(A,B)
+\tkzDrawPolygon(A,B,C)
+\tkzMarkSegments(A,B B,C C,A)
+\tkzDrawPoints(A,B,C)
+\tkzMarkAngles(B,A,C C,B,A A,C,B)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  z.A    = point: new(0,0)
+  z.B    = point: new(5,0)
+  L.AB   = line: new (z.A,z.B)
+  T.ABC  = L.AB : equilateral ()
+  z.C    = T.ABC.pc
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLine(A,B)
+  \tkzDrawPolygon(A,B,C)
+  \tkzMarkSegments(A,B B,C C,A)
+  \tkzDrawPoints(A,B,C)
+  \tkzMarkAngles(B,A,C C,B,A A,C,B)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_line_equilateral (end)
+
 \subsubsection{Method \Imeth{line}{projection}} % (fold)
 \label{ssub:example_projection_of_several_points}
 \begin{minipage}{0.5\textwidth}
@@ -746,14 +986,16 @@
 L.ab        = line:   new (z.a,z.b)
 z.cp,z.dp   = L.ab :  projection(z.c,z.d)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(a,b c,c' d,d')
-\tkzDrawPoints(a,...,d,c',d')
-\tkzLabelPoints(a,...,d,c',d')
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(a,b c,c' d,d')
+  \tkzDrawPoints(a,...,d,c',d')
+  \tkzLabelPoints(a,...,d,c',d')
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 
 % \caption{Projection of several points}
@@ -809,23 +1051,26 @@
 z.a,z.b = L.ab.pa,L.ab.pb
    -- or z.a,z.b  = get_points (L.ab)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawCircle(O,A)
-\tkzDrawSegments[purple](O,A O,B O,H)
-\tkzDrawArc[red](O,A)(B)
-\tkzDrawArc[blue](O,B)(A)
-\tkzDrawLine[add = 2 and 1](A,a)
-\tkzFillAngles[teal!30,opacity=.4,,size=.5](A,C,B b,A,B A,O,H)
-\tkzMarkAngles[mark=|,size=.5](A,C,B b,A,B A,O,H H,O,B)
-\tkzDrawPoints(A,B,C,H,O)
-\tkzLabelPoints(B,H)
-\tkzLabelPoints[above](O,C)
-\tkzLabelPoints[left](A)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawCircle(O,A)
+  \tkzDrawSegments[purple](O,A O,B O,H)
+  \tkzDrawArc[red](O,A)(B)
+  \tkzDrawArc[blue](O,B)(A)
+  \tkzDrawLine[add = 2 and 1](A,a)
+  \tkzFillAngles[teal!30,opacity=.4,,size=.5](A,C,B b,A,B A,O,H)
+  \tkzMarkAngles[mark=|,size=.5](A,C,B b,A,B A,O,H H,O,B)
+  \tkzDrawPoints(A,B,C,H,O)
+  \tkzLabelPoints(B,H)
+  \tkzLabelPoints[above](O,C)
+  \tkzLabelPoints[left](A)
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
 
 % subsubsection example_combination_of_methods (end)
@@ -860,64 +1105,22 @@
    L.AB = line : new (z.A,z.B)
    z.E,z.F = L.AB : translation (z.C,z.D)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(A,...,F)
-\tkzLabelPoints(A,...,F)
-\tkzDrawSegments[->,red,> =latex](C,E D,F A,B) )
-\end{tikzpicture}
-\hspace*{\fill}
-\end{minipage}
 
-% subsubsection example_translation (end)
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(A,...,F)
+  \tkzLabelPoints(A,...,F)
+  \tkzDrawSegments[->,red,> =latex](C,E D,F A,B) )
+  \end{tikzpicture}
+\end{center}
 
-\subsubsection{Method \Imeth{line}{distance}} % (fold)
-\label{ssub:example_distance_and_projection}
 
-\begin{minipage}{0.5\textwidth}
-\begin{Verbatim}
-\begin{tkzelements}
-   z.A    = point : new (0 , 0)
-   z.B    = point : new (5 , -2)
-   z.C    = point : new (3 , 3)
-   L.AB   = line : new (z.A,z.B)
-   d      = L.AB : distance (z.C)
-   z.H    = L.AB : projection (z.C)
-\end{tkzelements}
-\begin{tikzpicture}
-  \tkzGetNodes
-  \tkzDrawLines(A,B C,H)
-  \tkzDrawPoints(A,B,C,H)
-  \tkzLabelPoints(A,B,C,H)
-  \tkzLabelSegment[above left,
-  draw](C,H){$CH = \tkzUseLua{d}$}
-\end{tikzpicture}
-\end{Verbatim}
 \end{minipage}
-\begin{minipage}{0.5\textwidth}
-\begin{tkzelements}
-   z.A    = point : new (0 , 0)
-   z.B    = point : new (5 , -2)
-   z.C    = point : new (3 , 3)
-   L.AB   = line : new (z.A,z.B)
-   d      = L.AB : distance (z.C)
-   z.H    = L.AB : projection (z.C)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,B C,H)
-\tkzDrawPoints(A,B,C,H)
-\tkzLabelPoints(A,B,C,H)
-\tkzLabelSegment[above left,draw](C,H){$CH = \tkzUseLua{d}$}
-\end{tikzpicture}
-\hspace*{\fill}
-\end{minipage}
 
-% \caption{Method distance with line object}
-% subsubsection example_distance_and_projection (end)
+% subsubsection example_translation (end)
 
+
 \subsubsection{Method \Imeth{line}{reflection} of an object} % (fold)
 \label{ssub:reflection_of_object}
 
@@ -955,20 +1158,73 @@
    T.new = L.AB : reflection (T.EFG)
    z.Ep,z.Fp,z.Gp = get_points(T.new)
 \end{tkzelements}
-\hspace{\fill}\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawLine(A,B)
-   \tkzDrawPolygon(E,F,G)
-   \tkzDrawPolygon[new](E',F',G')
-   \tkzDrawSegment[red,dashed](E,E')
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawLine(A,B)
+     \tkzDrawPolygon(E,F,G)
+     \tkzDrawPolygon[new](E',F',G')
+     \tkzDrawSegment[red,dashed](E,E')
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection reflection_of_object (end)
 
+\subsubsection{Method \Imeth{line}{distance}} % (fold)
+\label{ssub:example_distance_and_projection}
 
-\subsection{Method \Imeth{line}{apollonius} Apollonius circle MA/MB = k} % (fold)
-\label{sub:apollonius_circle_ma_mb_k}
+\begin{minipage}{0.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A    = point : new (0 , 0)
+   z.B    = point : new (5 , -2)
+   z.C    = point : new (3 , 3)
+   L.AB   = line : new (z.A,z.B)
+   d      = L.AB : distance (z.C)
+   z.H    = L.AB : projection (z.C)
+\end{tkzelements}
+\begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(A,B C,H)
+  \tkzDrawPoints(A,B,C,H)
+  \tkzLabelPoints(A,B,C,H)
+  \tkzLabelSegment[above left,
+  draw](C,H){$CH = \tkzUseLua{d}$}
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{0.5\textwidth}
+\begin{tkzelements}
+   z.A    = point : new (0 , 0)
+   z.B    = point : new (5 , -2)
+   z.C    = point : new (3 , 3)
+   L.AB   = line : new (z.A,z.B)
+   d      = L.AB : distance (z.C)
+   z.H    = L.AB : projection (z.C)
+\end{tkzelements}
 
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(A,B C,H)
+  \tkzDrawPoints(A,B,C,H)
+  \tkzLabelPoints(A,B,C,H)
+  \tkzLabelSegment[above left,draw](C,H){$CH = \tkzUseLua{d}$}
+  \end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+
+% \caption{Method distance with line object}
+% subsubsection example_distance_and_projection (end)
+
+
+\subsubsection{Method \Imeth{line}{apollonius} (Apollonius circle MA/MB = k)} % (fold)
+\label{ssub:apollonius_circle_ma_mb_k}
+
 \begin{Verbatim}
 \begin{tkzelements}
    z.A = point : new ( 0 , 0 )
@@ -984,7 +1240,6 @@
    \tkzFillCircle[blue!20,opacity=.2](O,C)
    \tkzDrawCircle[blue!50!black](O,C)
    \tkzDrawPoints(A,B,O,C,D,P)
-   \tkzLabelPoints[below right](A,B,O,C,D,P)
    \tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
    \tkzDrawSegments[red](A,C)
    \tkzDrawPoints(A,B)
@@ -991,7 +1246,9 @@
    \tkzLabelCircle[draw,fill=green!10,%
       text width=3cm,text centered,left=24pt](O,D)(60)%
      {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
-   \tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C)
+   \tkzLabelPoints[below right](A,B,O,C,D)
+   \tkzLabelPoints[above](P)
+   \tkzMarkRightAngle[opacity=.3,fill=lightgray](D,P,C)
    \tkzMarkAngles[mark=||](A,P,D D,P,B)
 \end{tikzpicture}
 \end{Verbatim}
@@ -1006,24 +1263,28 @@
 z.P = C.apo : point  (0.30)
 \end{tkzelements}
 
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzFillCircle[blue!20,opacity=.2](O,C)
-\tkzDrawCircle[blue!50!black](O,C)
-\tkzDrawPoints(A,B,O,C,D,P)
-\tkzLabelPoints[below right](A,B,O,C,D,P)
-\tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
-\tkzDrawSegments[red](A,C)
-\tkzDrawPoints(A,B)
-\tkzLabelCircle[draw,fill=green!10,%
-    text width=3cm,text centered,left=24pt](O,D)(60)%
-  {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
-\tkzMarkRightAngle[opacity=.3,fill=lightgray](O,P,C)
-\tkzMarkAngles[mark=||](A,P,D D,P,B)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzFillCircle[blue!20,opacity=.2](O,C)
+  \tkzDrawCircle[blue!50!black](O,C)
+  \tkzDrawPoints(A,B,O,C,D,P)
+  \tkzDrawSegments[orange](P,A P,B P,D B,D P,C)
+  \tkzDrawSegments[red](A,C)
+  \tkzDrawPoints(A,B)
+  \tkzLabelCircle[draw,fill=green!10,%
+      text width=3cm,text centered,left=24pt](O,D)(60)%
+    {$CA/CB=2$\\$PA/PB=2$\\$DA/DB=2$}
+    \tkzLabelPoints[below right](A,B,O,C,D)
+    \tkzLabelPoints[above](P)
+  \tkzMarkRightAngle[opacity=.3,fill=lightgray](D,P,C)
+  \tkzMarkAngles[mark=||](A,P,D D,P,B)
+  \end{tikzpicture}
+\end{center}
 
+
 Remark: |\tkzUseLua{length(z.P,z.A)/length(z.P,z.B)}| = \tkzUseLua{length(z.P,z.A)/length(z.P,z.B)}
-% subsection apollonius_circle_ma_mb_k (end)
+% subsubsection apollonius_circle_ma_mb_k (end)
 
 % subsection methods_from_class_line (end)
 

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-matrices.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-matrices.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-matrices.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -15,7 +15,7 @@
 
 \begin{itemize}
 
-\item  The first method is: (Refer to \ref{ssub:method_new})
+\item  The first method is: [\ref{ssub:method_new}]
 
   \begin{minipage}{.5\textwidth}
     \begin{mybox}
@@ -33,13 +33,13 @@
   \end{minipage}
 
 
-\item  It is also possible to obtain a square matrix with: (Refer to \ref{ssub:method_square})
+\item  It is also possible to obtain a square matrix with: [\ref{ssub:method_square}]
 
   \begin{mybox}
   |M = matrix : square (2,a,b,c,d)| 
   \end{mybox}
 
-\item  In the case of a column vector: (Refer to \ref{ssub:method_vector})
+\item  In the case of a column vector: [\ref{ssub:method_vector}]
 
 \begin{minipage}{.5\textwidth}
   \begin{mybox}
@@ -52,7 +52,7 @@
   \end{tkzelements}
 \end{minipage}
 
-\item  Homogeneous transformation matrix (Refer to \ref{ssub:method_htm})
+\item  Homogeneous transformation matrix [\ref{ssub:method_htm}]
 
   The objective is to generate a matrix with homogeneous coordinates capable of transforming a coordinate system through rotation, translation, and scaling. To achieve this, it is necessary to define both the rotation angle, the coordinates of the new origin ans the scaling factors.
 

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-misc.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-misc.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-misc.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -17,11 +17,11 @@
 %tkzround( num, idp )   &   \\
 % Cramer33(a1,a2,a3,b1,b2,b3,c1,c2,c3) &  \\
 % Cramer22(a1,a2,b1,b2)  &   \\
-\Igfct{math}{length (a,b) }     &  point.abs(a-b) Refer to (\ref{ssub:report_de_distance})   \\
+\Igfct{math}{length (a,b) }     &  point.abs(a-b) [\ref{sub:report_de_distance}]  \\
 \Igfct{math}{islinear (z1,z2,z3) }   & Are the points aligned? (z2-z1) $\parallel$ (z3-z1) ?  \\
 \Igfct{math}{isortho (z1,z2,z3)} &  (z2-z1) $\perp$ (z3-z1)  ? boolean\\
-\Igfct{math}{get\_angle (z1,z2,z3)} & the vertex is z1 Refer to (\ref{sub:get_angle}) \\
-\Igfct{math}{bisector (z1,z2,z3)} & L.Aa = bisector (z.A,z.B,z.C) from A (\ref{sub:get_angle})\\
+\Igfct{math}{get\_angle (z1,z2,z3)} & the vertex is z1 [\ref{sub:get_angle}] \\
+\Igfct{math}{bisector (z1,z2,z3)} & L.Aa = bisector (z.A,z.B,z.C) from A [\ref{sub:get_angle}] \\
 \Igfct{math}{bisector\_ext (z1,z2,z3)} & L.Aa = bisector_ext (z.A,z.B,z.C) from A \\
 \Igfct{math}{altitude (z1,z2,z3)} & altitude from z1 \\
 \Igfct{package}{set\_lua\_to\_tex (list)}   & set\_lua\_to\_tex('a','n') defines |\a| and |\n|   \\
@@ -31,7 +31,7 @@
 \Igfct{math}{real (v) }     &  apply  | value /scale |     \\
 \Igfct{math}{angle\_normalize (an) }   &  to get a value between 0 and $2\pi$ \\
 \Igfct{misc}{barycenter (\{z1,n1\},\{z2,n2\}, ...)} & barycenter of list of points  \\
-\Igfct{math}{solve\_quadratic (a,b,c) }   & gives the solution of $ax^2+bx+c =0$  a,b,c real or complex (Refer to \ref{ssub:function_solve__quadratic})\\
+\Igfct{math}{solve\_quadratic (a,b,c) }   & gives the solution of $ax^2+bx+c =0$  a,b,c real or complex  [\ref{ssub:function_solve__quadratic}] \\
 \bottomrule
 \end{tabular}
 \egroup

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -92,7 +92,6 @@
 
 This is the creation of a fixed point with coordinates 1 and 2 and which is named $A$. The notation |z.A| indicates that the coordinates will be stored in a table denoted as  |z| (reference to the notation of the affixes of the complex numbers) that $A$ is the name of the point and the key allowing access to the values. 
 
-
 \begin{center}
   \bgroup
   \small
@@ -101,21 +100,18 @@
   \begin{tabular}{lll}
   \toprule
   \textbf{Attributes}     & \textbf{Application}& \textbf{Example}\\
-  \Iattr{point}{re}       &  |z.A.re = 1|    & Refer to (\ref{ssub:methods}) \\
-  \Iattr{point}{im}       &  |z.A.im = 2|    & Refer to (\ref{ssub:methods})  \\
+  \Iattr{point}{re}       &  |z.A.re = 1|    & [\ref{ssub:methods}] \\
+  \Iattr{point}{im}       &  |z.A.im = 2|    & [\ref{ssub:methods}]  \\
   \Iattr{point}{type}     &  |z.A.type = 'point'|  & \\  
-  \Iattr{point}{argument} &  |z.A.argument $\approx$ 0.78539816339745| & Refer to (\ref{ssub:example_point_attributes})\\
-  \Iattr{point}{modulus}  & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ & Refer to (\ref{ssub:example_point_attributes})\\
+  \Iattr{point}{argument} &  |z.A.argument $\approx$ 0.78539816339745| &  [\ref{ssub:example_point_attributes}] \\
+  \Iattr{point}{modulus}  & |z.A.modulus| $\approx$ |2.2360...| =$\sqrt{5}$ &  [\ref{ssub:example_point_attributes}] \\
   \bottomrule
   \end{tabular}
   \egroup
 \end{center}
 
-
-
-
 \newpage
-\subsubsection{Example:point attributes} % (fold)
+\subsubsection{Example: point attributes} % (fold)
 \label{ssub:example_point_attributes}
 
 \begin{tkzelements}
@@ -189,7 +185,7 @@
 \end{center}
 
  \MakeShortVerb{\|}
-    \hspace*{\fill}
+
 %  \caption{Class Point}
 % subsubsection example_point_attributes (end)
 % subsection attributes_of_a_point (end)
@@ -225,19 +221,20 @@
       z.O = point : new ( 0 , 0 )
       z.I = point : new ( 1 , 0 )
    \end{tkzelements}
-   \hspace{\fill}\begin{tikzpicture}
-      \tkzGetNodes
-      \tkzInit[xmin=-4,ymin=-4,xmax=4,ymax=4]
-      \tkzDrawCircle[dashed,red](O,A)
-      \tkzPointShowCoord(A)
-      \tkzDrawPoint(A)
-      \tkzLabelPoint[above right](A){\normalsize $a+ib$}
-      \tkzDrawX\tkzDrawY
-      \tkzDrawSegment(O,A)
-      \tkzLabelSegment[above,anchor=south,sloped](O,A){ OA = modulus of $z_A$}
-     \tkzLabelAngle[anchor=west,pos=.5](I,O,A){$\theta$ = argument of $z_A$}
-   \end{tikzpicture}
-   \hspace{\fill}
+\begin{center}
+  \begin{tikzpicture}
+        \tkzGetNodes
+        \tkzInit[xmin=-4,ymin=-4,xmax=4,ymax=4]
+        \tkzDrawCircle[dashed,red](O,A)
+        \tkzPointShowCoord(A)
+        \tkzDrawPoint(A)
+        \tkzLabelPoint[above right](A){\normalsize $a+ib$}
+        \tkzDrawX\tkzDrawY
+        \tkzDrawSegment(O,A)
+        \tkzLabelSegment[above,anchor=south,sloped](O,A){ OA = modulus of $z_A$}
+       \tkzLabelAngle[anchor=west,pos=.5](I,O,A){$\theta$ = argument of $z_A$}
+     \end{tikzpicture}
+\end{center}
 \end{minipage}
 
 
@@ -257,8 +254,8 @@
 \toprule
 \textbf{Functions} & \textbf{Application}& \\
 \midrule
-\Igfct{point}{new(r,r)}    & |z.A = point : new(1,2)| & Refer to (\ref{ssub:method_normalize}) \\
-\Igfct{point}{polar (d,an)}  & |z.A = point : polar(1,math.pi/3)| &  Refer to (\ref{sub:archimedes} )\\
+\Igfct{point}{new(r,r)}    & |z.A = point : new(1,2)| & [\ref{ssub:method_normalize}] \\
+\Igfct{point}{polar (d,an)}  & |z.A = point : polar(1,math.pi/3)| &  [\ref{sub:archimedes}] \\
 \Igfct{point}{polar\_deg (d,an)} &    an in deg    &  polar coordinates an deg \\
 \midrule
 \textbf{Methods} & \textbf{Application}& \\
@@ -265,29 +262,29 @@
 \midrule
 \textbf{Points} &&\\
 \midrule
-\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & Refer to (\ref{sub:power_v2}) ; \ref{ssub:methods})   \\
+\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & [\ref{par:power_v2} ; \ref{ssub:methods}]   \\
 \Imeth{point}{south(r)} & &  \\
 \Imeth{point}{east(r)}  &  & \\
 \Imeth{point}{west(r)}  &  & \\
-\Imeth{point}{normalize()} &  |z.b = z.a: normalize ()| &  Refer to (\ref{ssub:method_normalize}) \\
-\Imeth{point}{get\_points (obj)}     & retrieves points from the object &    \\
-\Imeth{point}{orthogonal (d)} & |z.B=z.A:orthogonal(d)| &  $\overrightarrow{OB}\perp \overrightarrow{OA}$  and $OB=d$\\
-\Imeth{point}{at ()} & |z.X = z.B : at (z.A)| &  $\overrightarrow{OB}= \overrightarrow{AX}$  and $OB=d$\\
+\Imeth{point}{normalize()} &  |z.b = z.a: normalize ()| &  [\ref{ssub:method_normalize}] \\
+\Imeth{point}{get\_points (obj)}     & retrieves points from the object & [\ref{ssub:object_rotation}; \ref{ssub:apollonius_circle_ma_mb_k} ]  \\
+\Imeth{point}{orthogonal (d)} & |z.B=z.A:orthogonal(d)| &  $\overrightarrow{OB}\perp \overrightarrow{OA}$  and $OB=d$.  [\ref{ssub:orthogonal_method}]\\
+\Imeth{point}{at ()} & |z.X = z.B : at (z.A)| &  $\overrightarrow{OB}= \overrightarrow{AX}$  and $OB=d$.  [\ref{ssub:_imeth_point_at_method}] \\
  \midrule
   \textbf{Transformations} &&\\
  \midrule
-  \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & Refer to (\ref{ssub:object_symmetry}) \\
- \Imeth{point}{rotation(an , obj)}  & point, line, etc.  &  Refer to (\ref{ssub:object_rotation})\\
-  \Imeth{point}{homothety(r,obj)}     & |z.c = z.a : homothety (2,z.b)| & Refer to (\ref{sub:homothety})   \\
+  \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & [\ref{ssub:object_symmetry}] \\
+ \Imeth{point}{rotation(an , obj)}  & point, line, etc.  & [\ref{ssub:object_rotation}] \\
+  \Imeth{point}{homothety(r,obj)}     & |z.c = z.a : homothety (2,z.b)| & [\ref{sub:homothety}]   \\
   \midrule
    \textbf{Misc.} &&\\
   \midrule
-    \Imeth{point}{print()} & displays the affix of the point & Refer to (\ref{ssub:object_symmetry}) \\
+    \Imeth{point}{print()} & displays the affix of the point & [\ref{ssub:object_symmetry} ]\\
 \bottomrule %
 \end{tabular}
 \egroup
 
-\subsubsection{Example: method  \Imeth{point}{north (d)} } % (fold)
+\subsubsection{Method  \Imeth{point}{north (d)} } % (fold)
 \label{ssub:example_method_imeth_point_north_d}
 
 This function defines a point located on a vertical line passing through the given point. This function is useful if you want to report a certain distance (Refer to the following example).
@@ -320,71 +317,21 @@
    z.C = z.O : west ()
    z.D = z.O : south ()
 \end{tkzelements}
-\hspace{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawPolygon(A,B,C,D)
-   \tkzDrawPoints(A,B,C,D,O,A')
-   \tkzLabelPoints(A,B,C,D,O,A')
-\end{tikzpicture}
-\end{minipage}
-% subsubsection example_method_imeth_point_north_d (end)
 
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygon(A,B,C,D)
+     \tkzDrawPoints(A,B,C,D,O,A')
+     \tkzLabelPoints(A,B,C,D,O,A')
+  \end{tikzpicture}
+\end{center}
 
-\subsubsection{Length transfer} % (fold)
-\label{ssub:report_de_distance}
-
-Use of |north and east| functions linked to points, to transfer lengths, Refer to (\ref{sub:length_of_a_segment})
-
-\begin{minipage}{.4\textwidth}
-\begin{Verbatim}
-\begin{tkzelements}
-   z.A = point : new ( 0 , 0 )
-   z.B = point : new ( 3 , 0 )
-   L.AB = line : new ( z.A , z.B )
-   T.ABC =   L.AB : sublime ()
-   z.C = T.ABC.pc
-   z.D = z.B: north (length(z.B,z.C))
-   z.E = z.B: east (L.AB.length)
-   z.M = L.AB.mid
-   z.F = z.E : north (length(z.C,z.M))
-\end{tkzelements}
-\begin{tikzpicture}[gridded]
-   \tkzGetNodes
-   \tkzDrawPolygons(A,B,C) 
-   \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
-   \tkzDrawPoints(A,...,F)
-   \tkzLabelPoints(A,B,E,M)
-   \tkzLabelPoints[above right](C,D,F)
-\end{tikzpicture}
-\end{Verbatim}
 \end{minipage}
-\begin{minipage}{.6\textwidth}
-\begin{tkzelements}
-   z.A = point : new ( 0 , 0 )
-   z.B = point : new ( 3 , 0 )
-   L.AB = line : new ( z.A , z.B )
-   T.ABC =   L.AB : sublime ()
-   z.C = T.ABC.pc
-   z.D = z.B: north (length(z.B,z.C))
-   z.E = z.B: east (L.AB.length)
-   z.M = L.AB.mid
-   z.F = z.E : north (length(z.C,z.M))
-\end{tkzelements}
-\hspace{\fill}
-\begin{tikzpicture}[gridded]
-   \tkzGetNodes
-   \tkzDrawPolygons(A,B,C) 
-   \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
-   \tkzDrawPoints(A,...,F)
-   \tkzLabelPoints(A,B,E,M)
-   \tkzLabelPoints[above right](C,D,F)
-\end{tikzpicture}
-\end{minipage}
-% subsubsection report_de_distance (end)
+% subsubsection example_method_imeth_point_north_d (end)
 
 
-\subsubsection{Example: method \Imeth{point}{polar} } % (fold)
+\subsubsection{Method \Imeth{point}{polar} } % (fold)
 \label{ssub:example_polar_method}
 
 This involves defining a point using its modulus and argument.
@@ -402,7 +349,8 @@
    \tkzDrawSegments[new](O,A)
    \tkzDrawSegments[purple](O,F)
    \tkzDrawPoints(A,O,F)
-   \tkzLabelPoints[below right=6pt](A,O,F)
+   \tkzLabelPoints[below right=6pt](A,O)
+   \tkzLabelPoints[above](F)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
@@ -413,16 +361,20 @@
     z.A     = point:   new  (3, 0)
     z.F     = point:   polar (3, math.pi/3)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzDrawSegments[new](O,A)
-\tkzDrawSegments[purple](O,F)
-\tkzDrawPoints(A,O,F)
-\tkzLabelPoints(A,O,F)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle(O,A)
+  \tkzDrawSegments[new](O,A)
+  \tkzDrawSegments[purple](O,F)
+  \tkzDrawPoints(A,O,F)
+  \tkzLabelPoints[below right=6pt](A,O)
+  \tkzLabelPoints[above](F)
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
 % subsubsection example_polar_method (end)
 
@@ -431,7 +383,26 @@
 
 The result is a point located between the origin and the initial point at a distance of $1$ from the origin.
 
-\begin{minipage}{.4\textwidth}
+\begin{tkzelements}
+scale = 1.5
+z.O = point : new (0,0)
+z.A = point : new (2,1)
+z.B = z.A : normalize ()
+z.I = point : new (1,0)
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawSegment(O,A)
+  \tkzDrawCircle(O,B)
+  \tkzDrawPoints(O,A,B,I)
+  \tkzLabelPoints(O,A)
+  \tkzLabelPoints[above](B)
+  \tkzLabelPoint[below right](I){$1$}
+  \end{tikzpicture}
+\end{center}
+
 \begin{Verbatim}
 \begin{tkzelements}
    scale = 1.5
@@ -449,29 +420,11 @@
    \tkzLabelPoint[below right](I){$1$}
 \end{tikzpicture}
 \end{Verbatim}
-\end{minipage}
-\begin{minipage}{.6\textwidth}
-\begin{tkzelements}
-scale = 1.5
-z.O = point : new (0,0)
-z.A = point : new (1,2)
-z.B = z.A : normalize ()
-z.I = point : new (1,0)
-\end{tkzelements}
- \hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSegment(O,A)
-\tkzDrawCircle(O,B)
-\tkzDrawPoints(O,A,B,I)
-\tkzLabelPoints(O,A,B)
-\tkzLabelPoint[below right](I){$1$}
-\end{tikzpicture}
- \hspace*{\fill}
-\end{minipage}
+
+
 % subsubsection method_normalize (end)
 
-\subsubsection{\Imeth{point}{Orthogonal (d)} method} % (fold)
+\subsubsection{Method \Imeth{point}{orthogonal (d)}} % (fold)
 \label{ssub:orthogonal_method}
 
 Let $O$ be the origin of the plane. The "orthogonal (d)" method is used to obtain a point $B$ from a point $A$ such that $\overrightarrow{OB}\perp \overrightarrow{OA}$ with $OB=OA$ if $d$ is empty, otherwise $OB = d$.
@@ -499,16 +452,19 @@
   z.O = point : new ( 0,0  )
   z.C = z.A : orthogonal ()
 \end{tkzelements}
-\begin{tikzpicture}[gridded]
-  \tkzGetNodes
-  \tkzDrawSegments(O,A O,C)
-  \tkzDrawPoints(O,A,B,C)
-  \tkzLabelPoints[below right](O,A,B,C)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}[gridded]
+    \tkzGetNodes
+    \tkzDrawSegments(O,A O,C)
+    \tkzDrawPoints(O,A,B,C)
+    \tkzLabelPoints[below right](O,A,B,C)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection orthogonal_method (end)
 
-\subsubsection{\Imeth{point}{at} method} % (fold)
+\subsubsection{Method \Imeth{point}{at}} % (fold)
 \label{ssub:_imeth_point_at_method}
 
 This method is complementary to the previous one, so you may not wish to have $\overrightarrow{OB}\perp \overrightarrow{OA}$ but $\overrightarrow{AB}\perp \overrightarrow{OA}$.
@@ -521,14 +477,16 @@
   z.O = point : new ( 0,0  )
   -- z.B = z.B : at (z.A) -- or
   z.B = z.A : orthogonal (1) : at (z.A)
+  z.E = z.A : orthogonal (1)
   z.C = z.A+z.B
   z.D =(z.C-z.A):orthogonal(2) : at (z.C) 
 \end{tkzelements}
 \begin{tikzpicture}[gridded]
   \tkzGetNodes
-  \tkzLabelPoints[below right](O,A,B,C,D)
-  \tkzDrawSegments(O,A A,B A,C C,D)
-  \tkzDrawPoints(O,A,B,C,D)
+  \tkzLabelPoints[below right](O,A,C)
+  \tkzLabelPoints[above](B,D,E)
+  \tkzDrawSegments(O,A A,B A,C C,D O,E)
+  \tkzDrawPoints(O,A,B,C,D,E)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
@@ -539,20 +497,24 @@
 z.O = point : new ( 0,0  )
 -- z.B = z.B : at (z.A) -- or
 z.B = z.A : orthogonal (1) : at (z.A)
+z.E = z.A : orthogonal (1)
 z.C = z.A+z.B
 z.D =(z.C-z.A):orthogonal(2) : at (z.C) 
 \end{tkzelements}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-\tkzLabelPoints[below right](O,A,B,C,D)
-\tkzDrawSegments(O,A A,B A,C C,D)
-\tkzDrawPoints(O,A,B,C,D)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}[gridded]
+  \tkzGetNodes
+  \tkzLabelPoints[below right](O,A,C)
+  \tkzLabelPoints[above](B,D,E)
+  \tkzDrawSegments(O,A A,B A,C C,D O,E)
+  \tkzDrawPoints(O,A,B,C,D,E)
+  \end{tikzpicture}
+\end{center}
 \end{minipage}
 
 % subsubsection _imeth_point_at_method (end)
 
-\subsubsection{Example: \Imeth{point}{rotation of points}} % (fold)
+\subsubsection{Method \Imeth{point}{rotation} first example} % (fold)
 \label{ssub:example_rotation_of_points}
 
 The arguments are the angle of rotation in radians, and here a list of points.
@@ -565,26 +527,27 @@
   z.o       = point:  new(6, -2)
   z.ap,z.bp = z.o : rotation (math.pi/2,z.a,z.b)
 \end{tkzelements}
-       \begin{tikzpicture}
-       \tkzGetNodes
-       \tkzDrawLines(o,a o,a' o,b o,b')
-       \tkzDrawPoints(a,a',b,b',o)
-       \tkzLabelPoints(b,b',o)
-       \tkzLabelPoints[below left](a,a')
-       \tkzDrawArc(o,a)(a')
-       \tkzDrawArc(o,b)(b')
-       \end{tikzpicture}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(o,a o,a' o,b o,b')
+  \tkzDrawPoints(a,a',b,b',o)
+  \tkzLabelPoints(b,b',o)
+  \tkzLabelPoints[below left](a,a')
+  \tkzDrawArc(o,a)(a')
+  \tkzDrawArc(o,b)(b')
+  \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.4\textwidth}
 \begin{tkzelements}
-      scale = .5
+    scale = .5
     z.a = point:  new(0, -1)
     z.b = point:  new(4, 0)
     z.o = point:  new(6, -2)
     z.ap,z.bp =  z.o : rotation (math.pi/2,z.a,z.b)
 \end{tkzelements}
-\hspace*{\fill}
+
+\begin{center}
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawLines(o,a o,a' o,b o,b')
@@ -594,16 +557,16 @@
    \tkzDrawArc(o,a)(a')
    \tkzDrawArc(o,b)(b')
 \end{tikzpicture}
-\hspace*{\fill}
+\end{center}
 \end{minipage}
 % subsubsection example_rotation_of_points (end)
 
-\subsubsection{Object \Imeth{point}{rotation}} % (fold)
+\subsubsection{Method \Imeth{point}{rotation} second example} % (fold)
 \label{ssub:object_rotation}
 Rotate a triangle by an angle of $\pi/6$ around $O$.
 
 \begin{minipage}{.5\textwidth}
-   \begin{Verbatim}
+\begin{Verbatim}
 \begin{tkzelements}
   scale = .75
    z.O   = point : new ( -1 , -1 )
@@ -619,13 +582,12 @@
    T.ApBpCp = z.O : rotation (math.pi/3,T.ABC)
    z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp)
 \end{tkzelements}
-
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawPolygons(A,B,C A',B',C' A,B,E,F A',B',E',F')
    \tkzDrawPoints (A,B,C,A',B',C',O)
-    \tkzLabelPoints (A,B,C,A',B',C',O)
-    \tkzDrawArc[delta=0,->](O,A)(A')
+   \tkzLabelPoints (A,B,C,A',B',C',O)
+   \tkzDrawArc[delta=0,->](O,A)(A')
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
@@ -645,61 +607,68 @@
 z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp)
 \end{tkzelements}
 
-\hspace{\fill}\begin{tikzpicture}
+\begin{center}
+\begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawPolygons(A,B,C A',B',C' A,B,E,F A',B',E',F')
    \tkzDrawPoints (A,B,C,A',B',C',O)
-    \tkzLabelPoints (A,B,C,A',B',C',O)
+   \tkzLabelPoints (A,B,C,A',B',C',O)
     \begin{scope}
        \tkzDrawArc[delta=0,->,dashed,red](O,A)(A')
        \tkzDrawSegments[dashed,red](O,A O,A')
     \end{scope}
-
 \end{tikzpicture}
+\end{center}
 \end{minipage}
 % subsubsection object_rotation (end)
 
-\subsubsection{Object \Imeth{point}{symmetry}} % (fold)
+\subsubsection{Method \Imeth{point}{symmetry}} % (fold)
 \label{ssub:object_symmetry}
+
+Example of the symmetry of an object
+
+
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
-    z.a = point:  new(0,-1)
-    z.b = point:  new(2, 0)
-    L.ab = line : new (z.a,z.b)
-    C.ab = circle : new (z.a,z.b)
-    z.o = point:  new(1,1)
-    z.ap,z.bp =  get_points (z.o: symmetry (C.ab))
+  z.a = point:  new(0,-1)
+  z.b = point:  new(2, 0)
+  L.ab = line : new (z.a,z.b)
+  C.ab = circle : new (z.a,z.b)
+  z.o = point:  new(1,1)
+  z.ap,z.bp =  get_points (z.o: symmetry (C.ab))
 \end{tkzelements}
-
 \begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(a,b a',b')
-\tkzDrawLines(a,a' b,b')
-\tkzDrawLines[red](a,b a',b')
-\tkzDrawPoints(a,a',b,b',o)
-\tkzLabelPoints(a,a',b,b',o)
+ \tkzGetNodes
+ \tkzDrawCircles(a,b a',b')
+ \tkzDrawLines(a,a' b,b')
+ \tkzDrawLines[red](a,b a',b')
+ \tkzDrawPoints(a,a',b,b',o)
+ \tkzLabelPoints(a,a',b,b',o)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.5\textwidth}
 \begin{tkzelements}
-    z.a = point:  new(0, -1)
-    z.b = point:  new(2, 0)
-    L.ab = line : new (z.a,z.b)
-    C.ab = circle : new (z.a,z.b)
-    z.o = point:  new(1, 1)
-    z.ap,z.bp =  get_points (z.o: symmetry (C.ab))
+  z.a = point:  new(0, -1)
+  z.b = point:  new(2, 0)
+  L.ab = line : new (z.a,z.b)
+  C.ab = circle : new (z.a,z.b)
+  z.o = point:  new(1, 1)
+  z.ap,z.bp =  get_points (z.o: symmetry (C.ab))
 \end{tkzelements}
 
-\hspace{\fill}\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(a,b a',b')
-\tkzDrawLines(a,a' b,b')
-\tkzDrawLines[red](a,b a',b')
-\tkzDrawPoints(a,a',b,b',o)
-\tkzLabelPoints(a,a',b,b',o)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(a,b a',b')
+  \tkzDrawLines(a,a' b,b')
+  \tkzDrawLines[red](a,b a',b')
+  \tkzDrawPoints(a,a',b,b',o)
+  \tkzLabelPoints(a,a',b,b',o)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection object_symmetry (end)
 % subsection methods_of_the_class_point (end)

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-regular.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-regular.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-regular.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -94,7 +94,7 @@
 \midrule 
 \textbf{Points} &\\
 \midrule 
-\Imeth{regular\_polygon}{name (string)} & Refer to\ref{ssub:pentagon} \\
+\Imeth{regular\_polygon}{name (string)} & [\ref{ssub:pentagon}] \\
 \bottomrule %
 \end{tabular}
 \egroup

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -21,12 +21,13 @@
 \Iattr{triangle}{pb} &T.ABC.pb \\
 \Iattr{triangle}{pc} &T.ABC.pc \\
 \Iattr{triangle}{type} & 'triangle' \\
-\Iattr{triangle}{circumcenter} & T.ABC.circumcenter\\
+\Iattr{triangle}{circumcenter} & T.ABC.circumcenter; [\ref{ssub:example_triangle_attributes}
+]\\
 \Iattr{triangle}{centroid} &T.ABC.centroid\\
 \Iattr{triangle}{incenter} &T.ABC.incenter\\
 \Iattr{triangle}{orthocenter}  &T.ABC.orthocenter\\
 \Iattr{triangle}{eulercenter} &T.ABC.eulercenter  \\
-\Iattr{triangle}{spiekercenter} &T.ABC.spiekercenter  \\
+\Iattr{triangle}{spiekercenter} &T.ABC.spiekercenter; [\ref{ssub:example_apollonius_circle}]  \\
 \Iattr{triangle}{a}& It's the length of the side opposite the first vertex  \\
 \Iattr{triangle}{b}& It's the length of the side opposite the second verte\\
 \Iattr{triangle}{c}& It's the length of the side opposite the third vertex \\
@@ -116,7 +117,7 @@
 \begin{tkzelements}
    z.A   = point: new (0 , 0)
    z.B   = point: new (4 , 0)
-   z.C   = point: new (0 , 3)
+   z.C   = point: new (1 , 3)
    T.ABC = triangle : new (z.A,z.B,z.C)
    z.O   = T.ABC.circumcenter
    z.I   = T.ABC.incenter
@@ -129,18 +130,22 @@
    beta  = T.ABC.beta
    gamma = T.ABC.gamma
 \end{tkzelements}  
-\hspace*{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawPolygon(A,B,C)
-   \tkzDrawPoints(A,B,C,O,G,I,H)
-   \tkzLabelPoints[below](A,B,O,G,I)
-   \tkzLabelPoints[above right](H,C)
-   \tkzDrawCircles(O,A)
-   \tkzLabelSegment[sloped](A,B){\tkzUseLua{c}}
-   \tkzLabelSegment[sloped,above](B,C){\tkzUseLua{a}}
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygon(A,B,C)
+     \tkzDrawPoints(A,B,C,O,G,I,H)
+     \tkzDrawCircles(O,A)
+     \tkzLabelPoints[below](A,B,O,G,I)
+     \tkzLabelPoints[above right](H)
+     \tkzLabelPoints[above](C)
+     \tkzLabelSegment[sloped](A,B){\tkzUseLua{c}}
+     \tkzLabelSegment[sloped,above](B,C){\tkzUseLua{a}}
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
 
 % subsubsection example_triangle_attributes (end)
@@ -155,65 +160,96 @@
 \small
 \begin{minipage}{\textwidth}
 \captionof{table}{triangle methods.}\label{triangle:met}
-\begin{tabular}{ll}
+\begin{tabular}{lll}
 \toprule
-\textbf{Methods} & \textbf{Comments}     \\
+\textbf{Methods} & \textbf{Comments}  &    \\
 \midrule
-\Imeth{triangle}{new} (a, b ,c) & |T.ABC = triangle : new (z.A,z.B,z.C)|    \\
- ... & |T| or |T.name| with what you want for name, is possible.\\
+\Imeth{triangle}{new} (a, b ,c) & |T.ABC = triangle : new (z.A,z.B,z.C)|& [\ref{sub:triangle_attributes_angles}] \footnote{|T| or |T.name| with what you want for name, is possible.}  \\
 \midrule 
- \textbf{Points} &\\
+ \textbf{Points} &&\\
 \midrule 
-\Imeth{triangle}{lemoine\_point ()} &  |T.ABC : lemoine_point ()| intersection os the symmedians\\
-\Imeth{triangle}{symmedian\_point ()}  & Lemoine point  or the Grebe point \\
-\Imeth{triangle}{bevan\_point ()}  &  Circumcenter of the excentral triangle\\
-\Imeth{triangle}{mittenpunkt\_point ()}  &  Symmedian point of the excentral triangle\\
-\Imeth{triangle}{gergonne\_point ()}  & Intersection of the three cevians that lead to the contact points \\
-\Imeth{triangle}{nagel\_point () } & Intersection of the three cevians that lead to the extouch points\\
-\Imeth{triangle}{feuerbach\_point () } & The point at which the incircle and euler circle are tangent. \\
-\Imeth{triangle}{spieker\_center ()} &  Incenter of the medial triangle \\
-\Imeth{triangle}{barycenter (ka,kb,kc)} & |T.ABC: barycenter (2,1,1)| barycenter of |({A,2},{B,1},{C,1}) |\\
-\Imeth{triangle}{base (u,v)  }  &  |z.D = T.ABC: base(1,1)| \tkzar ABDC is a parallelogram   \\
-\Imeth{triangle}{projection (p) }   &  Projection of a point on the sides \\
-\Imeth{triangle}{euler\_points () } & Euler points of euler circle   \\
-\Imeth{triangle}{nine\_points () }   & 9 Points of the euler circle  \\
-\Imeth{triangle}{parallelogram ()} & |z.D = T.ABC : parallelogram ()| \tkzar ABCD is a parallelogram\\
+\Imeth{triangle}{lemoine\_point ()} &  |T.ABC : lemoine_point ()| intersection of the symmedians & [\ref{ssub:method_imeth_line_isosceles}]\\
+
+\Imeth{triangle}{symmedian\_point ()}  & Lemoine point  or the Grebe point& [\ref{ssub:method_imeth_triangle_symmedial}] \\
+
+\Imeth{triangle}{lemoine\_point ()}  & symmedian point  or the Grebe point& [\ref{ssub:method_imeth_triangle_symmedial}] \\
+
+\Imeth{triangle}{bevan\_point ()}  &  Circumcenter of the excentral triangle& [\ref{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}
+]\\
+
+\Imeth{triangle}{mittenpunkt\_point ()}  &  Symmedian point of the excentral triangle& [\ref{ssub:method_imeth_triangle_mittenpunkt}]\\
+
+\Imeth{triangle}{gergonne\_point ()}  & Intersection of the three cevians that lead to the contact points& [\ref{ssub:gergonne_point}]\\
+
+\Imeth{triangle}{nagel\_point () } & Intersection of the three cevians that lead to the extouch points& [\ref{ssub:method_imeth_triangle_nagel__point}]\\
+
+\Imeth{triangle}{feuerbach\_point () } & The point at which the incircle and euler circle are tangent.& [\ref{ssub:method_imeth_triangle_feuerbach}]\\
+
+\Imeth{triangle}{spieker\_center ()} &  Incenter of the medial triangle& [\ref{sub:apollonius_circle_v1_with_inversion}]\\
+
+\Imeth{triangle}{barycentric (ka,kb,kc)} & |T.ABC: barycentric (2,1,1)| barycenter of |({A,2},{B,1},{C,1}) |&Remark \footnote{The function \code{barycenter} is used to obtain the barycentre for any number of points }\\
+
+\Imeth{triangle}{base (u,v)  }  &  |z.D = T.ABC: base(1,1)| \tkzar ABDC is a parallelogram  & [\ref{ssub:method_imeth_triangle_base}] \\
+\Imeth{triangle}{trilinear (u,v,w)  }  &  |z.D = T.ABC: trilinear(1,1,1)| \tkzar ABDC parallelogram  & [\ref{ssub:method_imeth_triangle_trilinear}] \\
+
+\Imeth{triangle}{projection (p) }   &  Projection of a point on the sides &[\ref{sub:euler_relation}; \ref{ssub:method_imeth_triangle_projection}]\\
+
+\Imeth{triangle}{euler\_points () } & Euler points of euler circle  & [\ref{ssub:method_imeth_triangle_euler__points}] \\
+
+\Imeth{triangle}{nine\_points () }   & 9 Points of the euler circle & [\ref{ssub:method_imeth_triangle_nine__points}] \\
+
+\Imeth{triangle}{parallelogram ()} & |z.D = T.ABC : parallelogram ()| \tkzar ABCD parallelogram& [\ref{sub:director_circle}]\\
 \midrule
- \textbf{Lines} &\\
+ \textbf{Lines} &&\\
 \midrule 
 \Imeth{triangle}{altitude (n) }  & |L.AHa = T.ABC : altitude () | n empty or 0  line from $A$  
-\footnote{|z.Ha = L.AHa.pb| recovers the common point of the opposite side and altitude. The method |orthic| is usefull.}\\
-\Imeth{triangle}{bisector (n) }  & |L.Bb = T.ABC : bisector (1) |  n = 1   line from $B$     \footnote{|_,z.b = get_points(L.Bb)| recovers the common point of the opposite side and bisector. }\\
-\Imeth{triangle}{bisector\_ext(n) }   &   n=2  line from the third vertex.\\
-\Imeth{triangle}{symmedian\_line (n)}  & Cevian with respect to Lemoine point. \\
+\footnote{|z.Ha = L.AHa.pb| recovers the common point of the opposite side and altitude. The method |orthic| is usefull. If you don't need to use the triangle object several times, you can obtain a bisector or a altitude with the function |altitude (z.A,z.B,z.C)| ; [ \ref{misc}]}& [\ref{ssub:method_imeth_triangle_altitude} ]\\
+
+\Imeth{triangle}{bisector (n) }  & |L.Bb = T.ABC : bisector (1) |  n = 1   line from $B$     \footnote{|_,z.b = get_points(L.Bb)| recovers the common point of the opposite side and bisector. If you don't need to use the triangle object several times, you can obtain a bisector  with the function |bisector (z.A,z.B,z.C)|  [\ref{misc}]}& [\ref{ssub:method_imeth_triangle_bisector}]\\
+
+\Imeth{triangle}{bisector\_ext(n) }   &   n=2  line from the third vertex.& [\ref{sub:harmonic_division_and_bisector}]\\
+
+\Imeth{triangle}{symmedian\_line (n)}  & Cevian with respect to Lemoine point.& [\ref{ssub:method_imeth_triangle_symmedial} ; \ref{ssub:method_imeth_line_isosceles}]\\
+
 \Imeth{triangle}{euler\_line () } & the line through $N$ ,$G$, $H$ and $O$ if the triangle is not equilateral
-\footnote{N center of nine points circle, G centroid, H orthocenter , O circum center } \\
-\Imeth{triangle}{antiparallel(pt,n)} & n=0 antiparallel through pt to $(BC)$, n=1 to $(AC)$ etc.\\
+\footnote{N center of nine points circle, G centroid, H orthocenter , O circum center } & [\ref{sub:hexagram}]\\
+
+\Imeth{triangle}{antiparallel(pt,n)} & n=0 antiparallel through pt to $(BC)$, n=1 to $(AC)$ etc.& [\ref{sub:antiparallel_through_lemoine_point}]\\
 \midrule 
- \textbf{Circles} &\\
+ \textbf{Circles} &&\\
 \midrule 
 \Imeth{triangle}{euler\_circle ()} & C.|NP = T.ABC : euler_circle ()| \tkzar $N$ euler point 
- \footnote{ The midpoint of each side of the triangle, the foot of each altitude, the midpoint of the line segment from each vertex of the triangle to the orthocenter.}   \\
-\Imeth{triangle}{circum\_circle ()}  & |C.OA = T.ABC : circum ()| Triangle's circumscribed circle \\
-\Imeth{triangle}{in\_circle ()}   &   Inscribed circle of  the triangle\\
-\Imeth{triangle}{ex\_circle (n)}  &  Circle tangent to  the three sides of the triangle ; n =1 swap ; n=2 2 swap \\
-\Imeth{triangle}{first\_lemoine\_circle ()}  & The center is the midpoint between Lemoine point and the circumcenter.\footnote{
-Through the Lemoine point draw lines parallel to the triangle's sides. The points where the parallel lines intersect the sides of ABC
- then lie on a circle known as the first Lemoine circle. } \\
-\Imeth{triangle}{second\_lemoine\_circle ()} & Refer to example \ref{sub:antiparallel_through_lemoine_point}\\
-\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle\\
-\Imeth{triangle}{cevian\_circle ()} & Circumscribed circle of a Cevian triangle Refer to (\ref{ssub:method_imeth_triangle_cevian})\\
-\Imeth{triangle}{pedal\_circle ()} & Circumscribed circle of the podar triangle Refer to (\ref{ssub:method_imeth_triangle_pedal})\\
-\Imeth{triangle}{conway\_circle ()} & Circumscribed circle of Conway points Refer to (\ref{ssub:method_imeth_triangle_conway})\\
+ \footnote{ The midpoint of each side of the triangle, the foot of each altitude, the midpoint of the line segment from each vertex of the triangle to the orthocenter.}  & [\ref{ssub:method_imeth_triangle_euler_circle}]\\
+ 
+\Imeth{triangle}{circum\_circle ()}  & |C.OA = T.ABC : circum ()| Triangle's circumscribed circle & [\ref{ssub:method_imeth_triangle_circum_circle}] \\
+
+\Imeth{triangle}{in\_circle ()}   &   Inscribed circle of  the triangle& 
+[\ref{ssub:method_imeth_triangle_in_circle}]\\
+
+\Imeth{triangle}{ex\_circle (n)}  &  Circle tangent to  the three sides of the triangle ; n =1 swap ; n=2 2 swap & [\ref{ssub:method_imeth_triangle_ex__circle}]\\
+
+\Imeth{triangle}{first\_lemoine\_circle ()}  & The center is the midpoint between Lemoine point and the circumcenter.\footnote{Through the Lemoine point draw lines parallel to the triangle's sides. The points where the parallel lines intersect the sides of ABC then lie on a circle known as the first Lemoine circle. }& [\ref{sub:first_and_second_lemoine_circles}
+] \\
+ 
+\Imeth{triangle}{second\_lemoine\_circle ()} & &  \ref{sub:antiparallel_through_lemoine_point}] \\
+
+\Imeth{triangle}{spieker\_circle ()} & The incircle of the medial triangle& [\ref{ssub:method_imeth_triangle_spieker__circle}]\\
+
+\Imeth{triangle}{bevan\_circle ()} & Circumscribed circle of a excentral triangle & [\ref{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}]\\
+
+\Imeth{triangle}{cevian\_circle ()} & Circumscribed circle of a Cevian triangle  & [\ref{ssub:method_imeth_triangle_cevian}]\\
+
+\Imeth{triangle}{symmedial\_circle ()} & Circumscribed circle of a symmedial triangle  & [\ref{ssub:method_imeth_triangle_symmedial}]\\
+
+\Imeth{triangle}{pedal\_circle ()} & Circumscribed circle of the podar triangle & [\ref{ssub:method_imeth_triangle_pedal}]\\
+
+\Imeth{triangle}{conway\_circle ()} & Circumscribed circle of Conway points  & [\ref{ssub:method_imeth_triangle_conway}]\\
 \bottomrule
 \end{tabular}
 \end{minipage}
 \egroup
 
-Remark: If you don't need to use the triangle object several times, you can obtain a bisector or a altitude with the next functions 
 
-|bisector (z.A,z.B,z.C)| and |altitude (z.A,z.B,z.C)| Refer to (\ref{misc})
-
 \clearpage\newpage
 \bgroup
 \catcode`_=12
@@ -227,29 +263,48 @@
 \midrule 
  \textbf{Triangles} &\\
 \midrule 
-\Imeth{triangle}{orthic ()}  &  |T = T.ABC : orthic ()| triangle joining the feet of the altitudes   \\
-\Imeth{triangle}{medial ()}  &   |T = T.ABC : medial ()| triangle with vertices at the midpoints\\
-\Imeth{triangle}{incentral ()}    &   Cevian triangle of the triangle with respect to its incenter \\
-\Imeth{triangle}{excentral ()  }  &   Triangle with vertices corresponding to the excenters   \\
-\Imeth{triangle}{extouch ()}  & Triangle formed by the points of tangency with the excircles    \\
-\Imeth{triangle}{intouch () } &  Contact triangle formed by the points of tangency of the incircle \\
-\Imeth{triangle}{tangential ()} & Triangle formed by the lines tangent to the circumcircle at the vertices\\
-\Imeth{triangle}{feuerbach ()} & Triangle formed by the points of tangency of the euler circle with the excircles\\
-\Imeth{triangle}{anti () }&  Anticomplementary Triangle The given triangle is its medial triangle.   \\
-\Imeth{triangle}{cevian (pt)} & Triangle formed with the endpoints of the three cevians with respect to |pt|. refer to (\ref{ssub:method_imeth_triangle_cevian})\\
-\Imeth{triangle}{pedal (pt)} & Triangle formed by projections onto the sides of  |pt| Refer to \ref{ssub:method_imeth_triangle_pedal}\\
-\Imeth{triangle}{symmedian ()} & Triangle formed with the intersection points of the symmedians. \\
-\Imeth{triangle}{euler ()} &  Triangle formed with the euler points \\
+\Imeth{triangle}{orthic ()}  &  |T = T.ABC : orthic ()| triangle joining the feet of the altitudes ; [\ref{ssub:method_imeth_triangle_altitude}]   \\
+
+\Imeth{triangle}{medial ()}  &  |T = T.ABC : medial ()| triangle with vertices at the midpoints; [\ref{ssub:method_imeth_triangle_medial} ; \ref{sub:nine_points} ; \ref{ssub:method_imeth_triangle_symmedial}]\\
+
+\Imeth{triangle}{incentral ()}&   Cevian triangle of the triangle with respect to its incenter.  [\ref{ssub:method_incentral}] \\
+
+\Imeth{triangle}{excentral ()}  &   Triangle with vertices corresponding to the excenters.  [\ref{ssub:method_imeth_triangle_feuerbach} ]  \\
+
+\Imeth{triangle}{extouch ()}  & Triangle formed by the points of tangency with the excircles.   [\ref{sub:excircles} ] \\
+
+\Imeth{triangle}{intouch () } &  Contact triangle formed by the points of tangency of the incircle [\ref{ssub:gergonne_point}]\\
+
+\Imeth{triangle}{contact () } &  contact = intouch ; [
+\ref{ssub:gergonne_point}] \\
+
+\Imeth{triangle}{tangential ()} & Triangle formed by the lines tangent to the circumcircle at the vertices; [\ref{ssub:method_imeth_triangle_tangential}]\\
+
+\Imeth{triangle}{feuerbach ()} & Triangle formed by the points of tangency of the euler circle with the excircles; [\ref{ssub:method_imeth_triangle_feuerbach}]\\
+
+\Imeth{triangle}{anti () }&  Anticomplementary Triangle The given triangle is its medial triangle.\footnote{You can use \tkzname{similar} instead of \tkzname{anti}.} ; [\ref{ssub:method_imeth_triangle_anti}]  \\
+
+\Imeth{triangle}{cevian (pt)} & Triangle formed with the endpoints of the three cevians with respect to |pt|; [\ref{ssub:method_imeth_triangle_cevian}] \\
+
+\Imeth{triangle}{pedal (pt)} & Triangle formed by projections onto the sides of  |pt|  [\ref{ssub:method_imeth_triangle_pedal}]\\
+
+\Imeth{triangle}{symmedial ()} & Triangle formed with the intersection points of the symmedians ; [\ref{ssub:method_imeth_triangle_symmedial}] \\
+
+\Imeth{triangle}{euler ()} &  Triangle formed with the euler points ; [\ref{ssub:method_imeth_triangle_euler__points}] \\
+
+\Imeth{triangle}{similar ()} &  Triangle formed with straight lines parallel to the sides [\ref{ssub:method_imeth_triangle_similar}] \\
 \midrule 
  \textbf{Ellipses} &\\
-\Imeth{triangle}{steiner\_inellipse ()}   & Refer to ex. (\ref{ssub:steiner_inellipse_and_circumellipse})\\ 
-\Imeth{triangle}{steiner\_circumellipse ()}   & Refer to ex. (\ref{ssub:steiner_inellipse_and_circumellipse})\\ 
-\Imeth{triangle}{euler\_ellipse ()}   & Refer to ex. (\ref{sub:euler_ellipse})\\ 
+\Imeth{triangle}{steiner\_inellipse ()}   & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\ 
+
+\Imeth{triangle}{steiner\_circumellipse ()}   & [ex. \ref{ssub:steiner_inellipse_and_circumellipse}] \\ 
+
+\Imeth{triangle}{euler\_ellipse ()}   &  [ex. (\ref{sub:euler_ellipse}]\\ 
  \midrule 
  \textbf{Miscellaneous} &\\
 \midrule 
 \Imeth{triangle}{area ()}   & $ \mathcal{A}$| = T.ABC: area ()|\\
-\Imeth{triangle}{barycentric\_coordinates (pt)} & Triples of numbers corresponding to masses placed at the vertices\\
+\Imeth{triangle}{barycentric\_coordinates(pt)}& Triples of numbers corresponding to masses placed at the vertices\\
 \Imeth{triangle}{in\_out (pt)}  & Boolean. Test if |pt| is inside the triangle\\
 \Imeth{triangle}{check\_equilateral ()} & Boolean. Test if the triangle is equilateral\\
 \bottomrule
@@ -259,61 +314,1139 @@
 \egroup
 % subsubsection methods_of_the_class_triangle (end)
 
+\subsubsection{Gergonne point} % (fold)
+\label{ssub:gergonne_point}
 
-\subsubsection{Méthodes \Imeth{triangle}{cevian} et \Imeth{triangle}{cevian\_circle}} % (fold)
-\label{ssub:method_imeth_triangle_cevian}
+In this example, some usefull methods are applied like \Imeth{triangle}{intouch} or \Imeth{triangle}{contact}.
+The points of contact of the inscribed circle (incircle) with the triangle in question are obtained.
+
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
+\begin{tkzelements}
+z.a  = point: new(1,0)
+z.b  = point: new(6,2)
+z.c  = point: new(2,5)
+T    = triangle : new (z.a,z.b,z.c)
+z.g  = T : gergonne_point ()
+z.i  = T.incenter
+z.ta,z.tb,z.tc = get_points (T :  intouch ())
+\end{tkzelements}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(a,b,c)
+  \tkzDrawSegments (a,ta b,tb c,tc)
+  \tkzDrawCircle(i,ta)
+  \tkzDrawPoints(a,b,c,g,ta,tb,tc)
+  \tkzLabelPoints(a,b,tc)
+  \tkzLabelPoints[above](c,ta)
+  \tkzLabelPoints[above left](tb)
+  \end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{tkzelements}
+z.a  = point: new(1,0)
+z.b  = point: new(6,2)
+z.c  = point: new(2,5)
+T    = triangle : new (z.a,z.b,z.c)
+z.g  = T : gergonne_point ()
+z.i  = T.incenter
+z.ta,z.tb,z.tc = get_points (T :  intouch ())
+\end{tkzelements}
+
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(a,b,c)
+  \tkzDrawSegments (a,ta b,tb c,tc)
+  \tkzDrawCircle(i,ta)
+  \tkzDrawPoints(a,b,c,g,ta,tb,tc)
+  \tkzLabelPoints(a,b,tc)
+  \tkzLabelPoints[above](c,ta)
+  \tkzLabelPoints[above left](tb)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection gergonne_point (end)
+
+\subsubsection{Method \Imeth{triangle}{Nagel\_point}} % (fold)
+\label{ssub:method_imeth_triangle_nagel__point}
+
+Let $E_a$ be the point at which the $J_a$-excircle meets the side $(BC)$ of a triangle $ABC$, and define $E_b$ and $E_c$ similarly. Then the lines $A,E_a$, $B,E_b$ and $C,E_c$ concur in the Nagel point  $Na$.
+
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
-  scale = 2
-  z.a = point:  new (1,2)
-  z.b = point:  new (5,1)
-  z.c = point:  new (3,5)
-  T = triangle: new (z.a,z.b,z.c)
-  z.i = T.orthocenter 
-  T.cevian = T : cevian (z.i)
-  z.ta,z.tb,z.tc = get_points (T.cevian)
-  C.cev = T : cevian_circle (z.i)
-  z.w = C.cev.center
+  scale         = .7
+  z.A           = point :   new (0,0)
+  z.B           = point :   new (3.6,0)
+  z.C           = point :   new (2.8,4)
+  T.ABC         = triangle: new (z.A,z.B,z.C)
+  z.Na          = T.ABC : nagel_point ()
+  z.J_a,z.J_b,
+  z.J_c         = get_points (T.ABC : excentral ())
+  z.E_a,z.E_b,
+  z.E_c         = get_points (T.ABC : extouch ())
 \end{tkzelements}
 \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(A,B,C)
+  \tkzDrawPoints[red,size=2](J_a,J_b,J_c)
+  \tkzClipBB
+  \tkzDrawLines[add=1.75 and 1.75,teal](A,B A,C B,C)
+  \tkzDrawCircles(J_a,E_a J_b,E_b J_c,E_c)
+  \tkzDrawSegments[dashed,gray](J_a,E_a J_b,E_b J_c,E_c)
+  \tkzDrawSegments[orange](A,E_a B,E_b C,E_c)
+  \tkzDrawPoints[red,size=2](Na,E_a,E_b,E_c)
+  \tkzLabelPoints(A,B,Na)
+  \tkzLabelPoints(E_c,J_a,J_b,J_c)
+  \tkzLabelPoints[above](E_a,E_b,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale         = .7
+  z.A           = point :   new (0,0)
+  z.B           = point :   new (3.6,0)
+  z.C           = point :   new (2.8,4)
+  T.ABC         = triangle: new (z.A,z.B,z.C)
+  z.Na           = T.ABC : nagel_point ()
+  z.J_a,z.J_b,
+    z.J_c = get_points (T.ABC : excentral ())
+  z.E_a,z.E_b,
+    z.E_c = get_points (T.ABC : extouch ())
+\end{tkzelements}
+
+\begin{center}
+\begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(A,B,C)
+  \tkzDrawPoints[red,size=2](J_a,J_b,J_c)
+  \tkzClipBB
+  \tkzDrawLines[add=1.75 and 1.75,teal](A,B A,C B,C)
+  \tkzDrawCircles(J_a,E_a J_b,E_b J_c,E_c)
+  \tkzDrawSegments[dashed,gray](J_a,E_a J_b,E_b J_c,E_c)
+  \tkzDrawSegments[orange](A,E_a B,E_b C,E_c)
+  \tkzDrawPoints[red,size=2](Na,E_a,E_b,E_c)
+  \tkzLabelPoints(A,B,Na)
+  \tkzLabelPoints(E_c,J_a,J_b,J_c)
+  \tkzLabelPoints[above](E_a,E_b,C)
+\end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection method_imeth_triangle_nagel__point (end)
+
+
+\subsubsection{Method \Imeth{triangle}{mittenpunkt}} % (fold)
+\label{ssub:method_imeth_triangle_mittenpunkt}
+
+The Mittenpunkt is the symmedian point of the excentral triangle. The mittenpunkt (also called the middlespoint) of a triangle  is the symmedian point of the excentral triangle, i.e., the point of concurrence of the lines from the excenters  through the corresponding triangle side midpoints.
+[ \href{https://mathworld.wolfram.com/Mittenpunkt.html}{Weisstein, Eric W. "Mittenpunkt." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt} 
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale = 1
+  z.A   = point : new ( 0  , 0  )
+  z.B   = point : new ( 6  , 0  )
+  z.C   = point : new ( 4  , 6  )
+  T     = triangle : new (z.A,z.B,z.C)
+  z.Ma,
+  z.Mb,
+  z.Mc  = get_points (T : medial ())
+  z.Ia,z.Ib,z.Ic = get_points(T : excentral ())
+  z.Mi  = T : mittenpunkt_point ()
+  T.int = T : extouch ()
+  z.Ta,z.Tb,z.Tc = get_points(T.int)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale = 1
+  z.A   = point : new ( 0  , 0  )
+  z.B   = point : new ( 6  , 0  )
+  z.C   = point : new ( 4  , 6  )
+  T     = triangle : new (z.A,z.B,z.C)
+  z.Ma,
+  z.Mb,
+  z.Mc = get_points (T : medial ())
+  z.Ia,z.Ib,z.Ic = get_points(T : excentral ())
+  z.Mi            = T : mittenpunkt_point ()
+  T.int     = T : extouch ()
+  z.Ta,z.Tb,z.Tc = get_points(T.int)
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}[scale=.5]
+    \tkzGetNodes
+   \tkzDrawPolygons[](A,B,C Ma,Mb,Mc)
+   \tkzDrawPoints(Ma,Mb,Mc,Ia,Ib,Ic)
+    \tkzDrawPoints[red](Ta,Tb,Tc)
+    \tkzLabelPoints[below](Ib)
+    \tkzLabelPoints[above left](Ia,Ic)
+    \tkzClipBB
+    \tkzDrawLines[add=0 and 1](Ia,Ma Ib,Mb Ic,Mc)
+    \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+    \tkzDrawCircles[red](Ia,Ta Ib,Tb Ic,Tc)
+    \tkzDrawPoints(B,C,A,Mi) %
+    \tkzLabelPoints(B,A)
+    \tkzLabelPoints[above](C,Mi)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tikzpicture}[scale=.5]
+  \tkzGetNodes
+  \tkzDrawPolygons[](A,B,C Ma,Mb,Mc)
+  \tkzDrawPoints(Ma,Mb,Mc,Ia,Ib,Ic)
+  \tkzDrawPoints[red](Ta,Tb,Tc)
+  \tkzLabelPoints[below](Ib)
+  \tkzLabelPoints[above left](Ia,Ic)
+  \tkzClipBB
+  \tkzDrawLines[add=0 and 1](Ia,Ma Ib,Mb Ic,Mc)
+  \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+  \tkzDrawCircles[red](Ia,Ta Ib,Tb Ic,Tc)
+  \tkzDrawPoints(B,C,A,Mi) 
+  \tkzLabelPoints(B,A)
+  \tkzLabelPoints[above](C,Mi)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_mittenpunkt (end)
+
+\subsubsection{Method \Imeth{triangle}{projection}} % (fold)
+\label{ssub:method_imeth_triangle_projection}
+
+This involves obtaining the projections of a point onto the sides of a triangle. In the following example, we are going to find the projections of a centre of an exinscribed circle.
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A    = point: new (0 , 0)
+z.B    = point: new (5 , 0)
+z.C    = point: new (-.4 , 4)
+T.ABC  = triangle: new (z.A,z.B,z.C)
+z.J,_  = get_points(T.ABC: ex_circle (2))
+z.X ,
+z.Y,
+z.Z    = T.ABC : projection (z.J)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+z.A    = point: new (0 , 0)
+z.B    = point: new (5 , 0)
+z.C    = point: new (-.4 , 4)
+T.ABC  = triangle: new (z.A,z.B,z.C)
+z.J,_  = get_points(T.ABC: ex_circle (2))
+z.X ,
+z.Y,
+z.Z    = T.ABC : projection (z.J)
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawArc(J,X)(Y)
+  \tkzDrawSegments[blue](J,X J,Y J,Z C,Y C,X)
+  \tkzDrawPoints(A,B,C,J,X,Y,Z)
+  \tkzLabelPoints(J,X,Y)
+  \tkzLabelPoints[above](C,B,Z)
+  \tkzLabelPoints[left](A)
+  \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Z,J A,Y,J J,X,B)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawArc(J,X)(Y)
+  \tkzDrawSegments[blue](J,X J,Y J,Z C,Y C,X)
+  \tkzDrawPoints(A,B,C,J,X,Y,Z)
+  \tkzLabelPoints(J,X,Y)
+  \tkzLabelPoints[above](C,B,Z)
+  \tkzLabelPoints[left](A)
+  \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Z,J A,Y,J J,X,B)
+  \end{tikzpicture}
+\end{center}
+\end{Verbatim}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_projection (end)
+
+\subsubsection{Method \Imeth{triangle}{trilinear}} % (fold)
+\label{ssub:method_imeth_triangle_trilinear}
+
+Given a reference triangle $ABC$, the trilinear coordinates of a point $P$ with respect to $ABC$ are an ordered triple of numbers, each of which is proportional to the directed distance from $P$ to one of the side lines. Trilinear coordinates are denoted alpha:beta:gamma or (alpha,beta,gamma) and also are known as homogeneous coordinates or "trilinears." Trilinear coordinates were introduced by Plücker in 1835.
+[\href{https://mathworld.wolfram.com/TrilinearCoordinates.html}{Weisstein, Eric W. "Trilinear Coordinates." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A = point : new ( 0  , 0  )
+z.B = point : new ( 4  , 0  )
+z.C = point : new ( 4 , 3 )
+T.ABC = triangle : new ( z.A , z.B , z.C )
+a = T.ABC.a
+b = T.ABC.b
+c = T.ABC.c
+z.Gp = T.ABC : trilinear (b*c,a*c,a*b)
+z.G = T.ABC : barycentric (1,1,1)
+\end{tkzelements}
+\begin{tikzpicture}
 \tkzGetNodes
-\tkzDrawPolygons(a,b,c ta,tb,tc)
-\tkzDrawSegments(a,ta b,tb c,tc)
-\tkzDrawPoints(a,b,c,i,ta,tb,tc)
-\tkzLabelPoints(a,b,c,i)
-\tkzDrawCircles(w,ta)
+\tkzDrawPolygon(A,B,C)
+\tkzDrawPoints(A,B,C,G',G)
+\tkzLabelPoints(A,B,G')
+\tkzLabelPoints[above](C,G)
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.5\textwidth}
 \begin{tkzelements}
-scale = 2
-z.a = point:  new (1,2)
-z.b = point:  new (5,1)
-z.c = point:  new (3,5)
-T = triangle: new (z.a,z.b,z.c)
-z.i = T.orthocenter 
-T.cevian = T : cevian (z.i)
-z.ta,z.tb,z.tc = get_points (T.cevian)
-C.cev = T : cevian_circle (z.i)
-z.w = C.cev.center
+z.A = point : new ( 0  , 0  )
+z.B = point : new ( 4  , 0  )
+z.C = point : new ( 4 , 3 )
+T.ABC = triangle : new ( z.A , z.B , z.C )
+a = T.ABC.a
+b = T.ABC.b
+c = T.ABC.c
+z.Gp = T.ABC : trilinear (b*c,a*c,a*b)
+z.G = T.ABC : barycentric (1,1,1)
 \end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawPoints(A,B,C,G',G)
+  \tkzLabelPoints(A,B,G')
+  \tkzLabelPoints[above](C,G)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection method_imeth_triangle_trilinear (end)
+
+\subsubsection{Method \Imeth{triangle}{barycentric\_coordinates}} % (fold)
+\label{ssub:method_imeth_triangle_barycentric__coordinates}
+
+This method produces a triplet of coordinates which are the barycentric coordinates of a point as a function of the three points of a given triangle.
+
+\vspace{6pt}
+
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+\begin{tkzelements}
+  z.A       = point: new (1,1)
+  z.B       = point: new (8,0)
+  z.C       = point: new (2,5)
+  T         = triangle: new(z.A,z.B,z.C)
+  z.G       = T.centroid  
+  ca,cb,cc  = T : barycentric_coordinates  (z.G) 
+\end{tkzelements}
 \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(A,B,C)
+  \tkzDrawPoints(A,B,C,G)
+  \tkzLabelPoints(A,B,C,G)
+  \tkzLabelPoint(G){\pmpn{\tkzUseLua{ca}}:\pmpn{\tkzUseLua{cb}}:\pmpn{\tkzUseLua{cc}}}
+\end{tikzpicture}
+  \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+    scale = .75
+      z.A           = point: new (1,1)
+      z.B           = point: new (8,0)
+      z.C           = point: new (2,5)
+      T            = triangle: new(z.A,z.B,z.C)
+      z.G = T.centroid 
+      ca,cb,cc      =   T : barycentric_coordinates  (z.G) 
+  \end{tkzelements}
+  \begin{center}
+  \begin{tikzpicture}
+           \tkzGetNodes
+           \tkzDrawPolygons(A,B,C)
+           \tkzDrawPoints(A,B,C,G)
+           \tkzLabelPoints(A,B)
+           \tkzLabelPoints[above](C) \tkzLabelPoint(G){\pmpn{\tkzUseLua{ca}}:\pmpn{\tkzUseLua{cb}}:\pmpn{\tkzUseLua{cc}}}
+  \end{tikzpicture}
+  \end{center}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_barycentric__coordinates (end)
+
+\subsubsection{Method \Imeth{triangle}{base}} % (fold)
+\label{ssub:method_imeth_triangle_base}
+
+In the next example, the point $D$ is defined by $\overrightarrow{AD} = 1\cdot \overrightarrow{AB}+1\cdot \overrightarrow{AC}$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+    scale         = .75
+    z.A           = point: new (1,1)
+    z.B           = point: new (8,0)
+    z.C           = point: new (0,5)
+    z.X           = point: new (2,2)
+    T             = triangle: new(z.A,z.B,z.C)   
+    z.D           = T : base (1,1)
+    z.E           = T : base (.5,1)
+\end{tkzelements}
+\begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygons(A,B,D,C A,B,E,C)
+     \tkzDrawPoints(A,B,C,D,E)
+     \tkzLabelPoints(A,B)
+     \tkzLabelPoints[above](C,D,E)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+    \begin{tkzelements}
+        scale         = .75
+        z.A           = point: new (1,1)
+        z.B           = point: new (8,0)
+        z.C           = point: new (0,5)
+        z.X           = point: new (2,2)
+        T             = triangle: new(z.A,z.B,z.C)   
+        z.D           = T : base (1,1)
+        z.E           = T : base (.5,1)
+    \end{tkzelements}
+    \begin{center}
+      \begin{tikzpicture}
+           \tkzGetNodes
+           \tkzDrawPolygons(A,B,D,C A,B,E,C)
+           \tkzDrawPoints(A,B,C,D,E)
+           \tkzLabelPoints(A,B)
+           \tkzLabelPoints[above](C,D,E)
+      \end{tikzpicture}
+    \end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_base (end)
+
+
+\subsubsection{Method \Imeth{triangle}{euler\_points}} % (fold)
+\label{ssub:method_imeth_triangle_euler__points}
+
+The points $a$, $b$ and $c$ are the Euler points. They are the midpoints of the segments $AH$, $BH$ and $CH$. 
+
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+  \begin{tkzelements}
+    scale     = 1.25
+    z.A       = point: new (0,0)
+    z.B       = point: new (5,0)
+    z.C       = point: new (1,4)
+      T       = triangle: new(z.A,z.B,z.C)
+    z.N       = T.eulercenter
+    z.a,
+    z.b,
+    z.c       = get_points (T : euler ())
+    z.H       = T.orthocenter
+    T.orthic  = T: orthic()
+    z.Ha,
+    z.Hb,
+    z.Hc      = get_points (T.orthic)
+  \end{tkzelements}
+  \begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons[red](A,B,C)
+   \tkzDrawPolygons[cyan](a,b,c)
+   \tkzDrawCircle[purple](N,a)
+   \tkzDrawPoints(a,b,B,C,A,c,H)
+   \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+   \tkzLabelPoints(A,B,a,b,H)
+   \tkzLabelPoints[above](c,C)
+  \end{tikzpicture}
+  \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+    scale     = 1.25
+    z.A       = point: new (0,0)
+    z.B       = point: new (5,0)
+    z.C       = point: new (1,4)
+      T       = triangle: new(z.A,z.B,z.C)
+    z.N       = T.eulercenter
+    z.a,
+    z.b,
+    z.c       = get_points (T : euler ())
+    z.H       = T.orthocenter
+    T.orthic  = T: orthic()
+    z.Ha,
+    z.Hb,
+    z.Hc      = get_points (T.orthic)
+\end{tkzelements}
+
+\begin{center}
+    \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygons[red](A,B,C)
+     \tkzDrawPolygons[cyan](a,b,c)
+     \tkzDrawCircle[purple](N,a)
+     \tkzDrawPoints(a,b,B,C,A,c,H)
+     \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+     \tkzLabelPoints(A,B,a,b,H)
+     \tkzLabelPoints[above](c,C)
+    \end{tikzpicture}
+\end{center}
+\end{minipage}
+% subsubsection method_imeth_triangle_euler__points (end)
+
+\subsubsection{Method \Imeth{triangle}{nine\_points}} % (fold)
+\label{ssub:method_imeth_triangle_nine__points}
+
+This method gives the nine main points belonging to the Euler circle: in order, first the midpoints of the sides of the triangle, then the feet of the altitudes and finally the three Euler points. Refer to the last example.
+In the next example, we look for the centre of gravity in two different ways: the first uses the \code{trilinear} method, the second the \code{barycentric} method.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale     = 1.5
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,4)
+    T       = triangle: new(z.A,z.B,z.C)
+  z.N       = T.eulercenter
+  z.e1,
+  z.e2,
+  z.e3,
+  z.e4,
+  z.e5,
+  z.e6,
+  z.e7,
+  z.e8,
+  z.e9      = T : nine_points ()
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale     = 1.5
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,4)
+    T       = triangle: new(z.A,z.B,z.C)
+  z.N       = T.eulercenter
+  z.e1,
+  z.e2,
+  z.e3,
+  z.e4,
+  z.e5,
+  z.e6,
+  z.e7,
+  z.e8,
+  z.e9      = T : nine_points ()
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle[purple](N,e1)
+ \tkzDrawPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+  \tkzLabelPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+\end{tikzpicture}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle[purple](N,e1)
+ \tkzDrawPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+  \tkzLabelPoints(e1,e2,e3,e4,e5,e6,e7,e8,e9)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_nine__points (end)
+
+\subsubsection{Method \Imeth{triangle}{altitude}} % (fold)
+\label{ssub:method_imeth_triangle_altitude}
+
+There are several methods to obtain one or more altitudes of a triangle. One possible method is the \Imeth{triangle}{orthic} method. This method allows for defining the \code{orthic} triangle whose vertices are the feet of the altitudes from each vertex. If only one altitude is needed, one can use the \code{altitude(n)} method. The numeric value $n$ can be $0$, $1$, or $2$. By default, if it is absent, it is considered to be $0$. Considering the triangle $ABC$, $n=0$ means no cyclic permutation of the vertices, and the altitude will be from the first point, here $A$. If $n=1$, the point trio $BCA$ is considered, and the altitude will be from $B$. For $n=2$, the altitude will be from $C$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (2,4)
+    T       = triangle: new(z.A,z.B,z.C)
+  z.H       = T.orthocenter
+  L.HA  = T : altitude ()
+  L.HC = T :altitude (2)
+  z.Hc = L.HC.pb
+  z.Ha = L.HA.pb
+  z.a,z.b,z.c = get_points (T : orthic ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](a,b,c)
+ \tkzDrawPoints(A,B,C,H)
+ \tkzDrawSegments[red](C,Hc A,Ha)
+ \tkzLabelPoints(A,B,H)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,C)
+ \tkzMarkRightAngles[fill = gray!30,opacity=.4](B,Hc,C A,Ha,C)
+ \end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (2,4)
+    T       = triangle: new(z.A,z.B,z.C)
+  z.H       = T.orthocenter
+  L.HA      = T : altitude ()
+  L.HC      = T : altitude (2)
+  z.Hc      = L.HC.pb
+  z.Ha      = L.HA.pb
+  z.a,z.b,z.c = get_points (T : orthic ())
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygon(A,B,C)
+   \tkzDrawPolygon[red](a,b,c)
+   \tkzDrawPoints(A,B,C,H)
+   \tkzDrawSegments[red](C,Hc A,Ha)
+   \tkzLabelPoints(A,B,H)
+   \tkzLabelPoints[font=\small](Hc)
+   \tkzLabelPoints[font=\small,above](Ha,C)
+   \tkzMarkRightAngles[fill = gray!30,opacity=.4](B,Hc,C A,Ha,C)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsubsection method_imeth_triangle_altitude (end)
+
+\subsubsection{Method \Imeth{triangle}{bisector}} % (fold)
+\label{ssub:method_imeth_triangle_bisector}
+
+There are several methods to obtain one or more bisectors of a triangle. One possible method is the \Imeth{triangle}{incentral} method. This method allows for defining the \code{incentral} triangle whose vertices are the feet of the bisectors from each vertex. If only one bisector is needed, one can use the \code{bisector(n)} method. The numeric value $n$ can be $0$, $1$, or $2$. By default, if it is absent, it is considered to be $0$. Considering the triangle $ABC$, $n=0$ means no cyclic permutation of the vertices, and the bisector will be from the first point, here $A$. If $n=1$, the point trio $BCA$ is considered, and the bisector will be from $B$. For $n=2$, the bisector will be from $C$.
+
+\vspace{6pt}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A    = point : new (0 , 0)
+   z.B    = point : new (3 , 2)
+   z.C    = point : new (2 , 5)
+   T.ABC  = triangle : new ( z.A , z.B , z.C )
+   L.AE   = T.ABC : bisector ()
+   z.E    = L.AE.pb
+   z.F    = T.ABC : bisector (1).pb
+   z.a,z.b,z.c = get_points (T.ABC : incentral ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygon(A,B,C)
+ \tkzDrawPolygon[red](a,b,c)
+ \tkzDrawLines(A,B A,C A,E B,F)
+ \tkzDrawPoints(A,B,C,a,b,c)
+ \tkzLabelPoints(A,B,c)
+ \tkzLabelPoints[above](C,b,a)
+ \tkzMarkAngles[mark=|](B,A,a a,A,C)
+ \tkzMarkAngles[mark=||](C,B,b b,B,A)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+   z.A    = point : new (0 , 0)
+   z.B    = point : new (3 , 2)
+   z.C    = point : new (2 , 5)
+   T.ABC  = triangle : new ( z.A , z.B , z.C )
+   L.AE   = T.ABC : bisector ()
+   z.E    = L.AE.pb
+   z.F    = T.ABC : bisector (1).pb
+   z.a,z.b,z.c = get_points (T.ABC : incentral ())
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygon(A,B,C)
+   \tkzDrawPolygon[red](a,b,c)
+   \tkzDrawLines(A,B A,C A,E B,F)
+   \tkzDrawPoints(A,B,C,a,b,c)
+   \tkzLabelPoints(A,B,c)
+   \tkzLabelPoints[above](C,b,a)
+   \tkzMarkAngles[cyan,mark=|,size=.75](B,A,a a,A,C)
+   \tkzMarkAngles[mark=||,size=.5](C,B,b b,B,A)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_bisector (end)
+
+%%%%%% Circles %%%%%%
+
+\subsubsection{Method \Imeth{triangle}{euler\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_euler_circle}
+
+The nine-point circle, also called Euler's circle or the Feuerbach circle, is the circle that passes through the perpendicular feet $H_A,  H_B, and H_C$ dropped from the vertices of any reference triangle DeltaABC on the sides opposite them. Euler showed in 1765 that it also passes through the midpoints$ M_A, M_B, M_C$ of the sides of DeltaABC. By Feuerbach's theorem, the nine-point circle also passes through the midpoints $E_A, E_B, and E_C$ of the segments that join the vertices and the orthocenter $H$. These points are commonly referred to as the Euler points.
+\href{https://mathworld.wolfram.com/Nine-PointCircle.html}{Weisstein, Eric W. "Nine-Point Circle." From MathWorld--A Wolfram Web Resource.}
+
+\vspace{6pt}
+There are several ways of obtaining the Euler circle. The first would be to use an attribute of the triangle to determine the centre. This centre is defined by |z.N = T.eulercenter|. Next, the circle passes through the midpoint of one of the sides. IF this circle is useful later on, it is best to define it using the \code{euler\_circle} method.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,4)
+  T         = triangle: new(z.A,z.B,z.C)
+  C.euler   = T : euler_circle ()
+  z.N,z.K   = get_points (C.euler)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(N,K)
+ \tkzDrawPoints(A,B,C,N,K)
+ \tkzLabelPoints(A,B,N)
+ \tkzLabelPoints[above](C,K)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,4)
+  T         = triangle: new(z.A,z.B,z.C)
+  C.euler   = T : euler_circle ()
+  z.N,z.K   = get_points (C.euler)
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons[red](A,B,C)
+   \tkzDrawCircle(N,K)
+   \tkzDrawPoints(A,B,C,N,K)
+   \tkzLabelPoints(A,B,N)
+   \tkzLabelPoints[above](C,K)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_euler_circle (end)
+
+\subsubsection{Method \Imeth{triangle}{circum\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_circum_circle}
+
+To obtain the circumscribed circle, simply use the \code{T.circumcenter} attribute, but if it is necessary to determine the circle then the method is \code{circum\_circle}.
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,4)
+  T         = triangle: new(z.A,z.B,z.C)
+  C.circum  = T : circum_circle ()
+  z.O,z.K   = get_points (C.circum)
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(O,K)
+ \tkzDrawPoints(A,B,C,O,K)
+ \tkzLabelPoints(A,B,O)
+ \tkzLabelPoints[above](C,K)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,4)
+  T         = triangle: new(z.A,z.B,z.C)
+  C.circum   = T : circum_circle ()
+  z.O,z.K   = get_points (C.circum)
+\end{tkzelements}
+
+\begin{center}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawCircle(O,K)
+ \tkzDrawPoints(A,B,C,O,K)
+ \tkzLabelPoints(A,B,O)
+ \tkzLabelPoints[above](C,K)
+\end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_circum_circle (end)
+
+\subsubsection{Method \Imeth{triangle}{in\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_in_circle}
+
+An incircle is an inscribed circle of a polygon, i.e., a circle that is tangent to each of the polygon's sides. The center $I$ of the incircle is called the incenter, and the radius $r$ of the circle is called the inradius.
+
+The incenter is the point of concurrence of the triangle's angle bisectors. In addition, the points $M_A, M_B, and M_C$ of intersection of the incircle with the sides of $ABC$ are the polygon vertices of the pedal triangle [\ref{ssub:method_imeth_triangle_pedal}] taking the incenter as the pedal point (c.f. tangential triangle [\ref{ssub:method_imeth_triangle_medial}]). This triangle is called the contact triangle.
+
+[\href{https://mathworld.wolfram.com/Incircle.html}{Weisstein, Eric W. "Incircle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+
+\begin{tkzelements}
+  scale   = 2
+   z.A    = point : new (0 , 0)
+   z.B    = point : new (5 , 0)
+   z.C    = point : new (1 , 3)
+   T.ABC  = triangle : new ( z.A , z.B , z.C )
+   z.E    = T.ABC : bisector ().pb
+   z.F    = T.ABC : bisector (1).pb
+   z.G    = T.ABC : bisector (2).pb
+   C.IH     = T.ABC : in_circle ()
+   z.I,z.H  = get_points (C.IH)
+\end{tkzelements}
+\begin{tikzpicture}%
+  [ new/.style ={ color = orange },
+                  one/.style = { new,/tkzmkangle/size=.5 },
+                  two/.style = { new,/tkzmkangle/size=.6 },
+                  l/.style   = { /tkzmkangle/arc=l },
+                  ll/.style  = { /tkzmkangle/arc=ll },
+                  lll/.style = { /tkzmkangle/arc=lll }]
 \tkzGetNodes
-\tkzDrawPolygons(a,b,c ta,tb,tc)
-\tkzDrawSegments(a,ta b,tb c,tc)
-\tkzDrawPoints(a,b,c,i,ta,tb,tc)
-\tkzLabelPoints(a,b,c,i)
-\tkzDrawCircles(w,ta)
+\tkzDrawPolygon(A,B,C)
+\tkzDrawSegments[new](A,E B,F C,G)
+   \tkzDrawSegments[dashed,add=0 and .5](I,H)
+   \tkzDrawPoints(A,B,C,E,F,G,I)
+   \tkzDrawCircle(I,H)
+   \tkzDrawPoints(I,A,B,C,H)
+\begin{scope}[one]
+  \tkzMarkAngles[l](B,A,E)
+  \tkzMarkAngles[ll](C,B,F)
+  \tkzMarkAngles[lll](A,C,G)
+\end{scope}
+\begin{scope}[two]
+  \tkzMarkAngles[l](E,A,C)
+  \tkzMarkAngles[ll](F,B,A)
+  \tkzMarkAngles[lll](G,C,B)
+\end{scope}
+\tkzLabelPoints(A,B,I)
+\tkzLabelPoints[above](C,H)
 \end{tikzpicture}
+
+
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  z.A    = point : new (0 , 0)
+  z.B    = point : new (5 , 0)
+  z.C    = point : new (1 , 3)
+  T.ABC  = triangle : new(z.A,z.B,z.C)
+  z.E    = T.ABC : bisector ().pb
+  z.F    = T.ABC : bisector (1).pb
+  z.G    = T.ABC : bisector (2).pb
+  C.IH     = T.ABC : in_circle ()
+  z.I,z.H  = get_points (C.IH)
+\end{tkzelements}
+\end{Verbatim}
 \end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tikzpicture}%
+  [ new/.style ={color = orange },
+    one/.style = { new,/tkzmkangle/size=.5 },
+    two/.style = { new,/tkzmkangle/size=.6 },
+    l/.style   = { /tkzmkangle/arc=l },
+    ll/.style  = { /tkzmkangle/arc=ll },
+    lll/.style = { /tkzmkangle/arc=lll }]
+\tkzGetNodes
+\tkzDrawPolygon(A,B,C)
+\tkzDrawSegments[new](A,E B,F C,G)
+\tkzDrawSegments[dashed,add=0 and .5](I,H)
+\tkzDrawPoints(A,B,C,E,F,G,I)
+\tkzDrawCircle(I,H)
+\tkzDrawPoints(I,A,B,C,H)
+\begin{scope}[one]
+  \tkzMarkAngles[l](B,A,E)
+  \tkzMarkAngles[ll](C,B,F)
+  \tkzMarkAngles[lll](A,C,G)
+\end{scope}
+\begin{scope}[two]
+  \tkzMarkAngles[l](E,A,C)
+  \tkzMarkAngles[ll](F,B,A)
+  \tkzMarkAngles[lll](G,C,B)
+\end{scope}
+\tkzLabelPoints(A,B,I)
+\tkzLabelPoints[above](C,H)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_in_circle (end)
+
+\subsubsection{Method \Imeth{triangle}{ex\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_ex__circle}
+
+Given a triangle, extend two sides in the direction opposite their common vertex. The circle tangent to these two lines and to the other side of the triangle is called an excircle, or sometimes an escribed circle. The center  of the excircle is called the excenter and lies on the external angle bisector of the opposite angle.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+z.A    = point: new (0 , 0)
+z.B    = point: new (5 , 0)
+z.C    = point: new (-.4 , 4)
+T.ABC  = triangle: new (z.A,z.B,z.C)
+z.I,_  = get_points(T.ABC: ex_circle ())
+z.J,_  = get_points(T.ABC: ex_circle (1))
+z.K,_  = get_points(T.ABC: ex_circle (2))
+z.Xk ,
+z.Yk,
+z.Zk    = T.ABC : projection (z.K)
+z.Xi ,
+z.Yi,
+z.Zi    = T.ABC : projection (z.I)
+z.Xj ,
+z.Yj,
+z.Zj    = T.ABC : projection (z.J)
+\end{tkzelements}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale = .5
+z.A    = point: new (0 , 0)
+z.B    = point: new (5 , 0)
+z.C    = point: new (-.4 , 4)
+T.ABC  = triangle: new (z.A,z.B,z.C)
+z.I,_  = get_points(T.ABC: ex_circle ())
+z.J,_  = get_points(T.ABC: ex_circle (1))
+z.K,_  = get_points(T.ABC: ex_circle (2))
+z.Xk ,
+z.Yk,
+z.Zk    = T.ABC : projection (z.K)
+z.Xi ,
+z.Yi,
+z.Zi    = T.ABC : projection (z.I)
+z.Xj ,
+z.Yj,
+z.Zj    = T.ABC : projection (z.J)
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawArc(K,Xk)(Yk)
+  \tkzDrawArc(I,Yi)(Zi)
+  \tkzDrawArc(J,Zj)(Yj)
+  \tkzDrawSegments[blue](K,Xk K,Yk K,Zk C,Yk C,Xk I,Xi J,Yj)
+  \tkzDrawPoints(A,B,C,I,J,K,Xk,Yk,Zk,Xi,Yj)
+  \tkzLabelPoints(K,Xk,Yk)
+  \tkzLabelPoints[above](C,B,Zk,I,J)
+  \tkzLabelPoints[left](A)
+  \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Zk,K A,Yk,K K,Xk,B)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawArc(K,Xk)(Yk)
+  \tkzDrawArc(I,Yi)(Zi)
+  \tkzDrawArc(J,Zj)(Yj)
+  \tkzDrawSegments[blue](K,Xk K,Yk K,Zk C,Yk C,Xk I,Xi J,Yj)
+  \tkzDrawPoints(A,B,C,I,J,K,Xk,Yk,Zk,Xi,Yj)
+  \tkzLabelPoints(K,Xk,Yk)
+  \tkzLabelPoints[above](C,B,Zk,I,J)
+  \tkzLabelPoints[left](A)
+  \tkzMarkRightAngles[fill=gray!20,opacity=.4](A,Zk,K A,Yk,K K,Xk,B)
+  \end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+% subsubsection method_imeth_triangle_ex__circle (end)
+
+\subsubsection{Method \Imeth{triangle}{spieker\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_spieker__circle}
+
+In geometry, the incircle of the medial triangle of a triangle is the Spieker circle. Its center is  the Spieker center.
+
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale = 1.5
+   z.A      = point:  new (1,1)
+   z.B      = point:  new (5,1)
+   z.C      = point:  new (2.2,4)
+   T        = triangle: new (z.A,z.B,z.C) 
+   C.first_lemoine = T:spieker_circle()
+   z.S,z.w  = get_points( C.first_lemoine )
+   z.Ma,z.Mb,z.Mc = get_points(T : medial ())
+   z.N           = T : nagel_point ()
+   z.Qa = midpoint(z.A,z.N)
+   z.Qb = midpoint(z.B,z.N)
+   z.Qc = midpoint(z.C,z.N)
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygons(A,B,C Qa,Qb,Qc)
+     \tkzDrawPolygons[red](Ma,Mb,Mc)
+     \tkzDrawCircles[red](S,w)
+     \tkzDrawSegments[dashed](N,A N,B N,C)
+     \tkzDrawPoints(A,B,C,S,w,Ma,Mb,Mc,Qa,Qb,Qc,N)
+     \tkzLabelPoints(A,B,S,w,Mc,N)
+     \tkzLabelPoints[above](C,Ma,Mb,Qa,Qb,Qc)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A      = point:  new (1,1)
+   z.B      = point:  new (5,1)
+   z.C      = point:  new (2.2,4)
+   T        = triangle: new (z.A,z.B,z.C) 
+   C.first_lemoine = T:spieker_circle()
+   z.S,z.w  = get_points( C.first_lemoine )
+   z.Ma,z.Mb,z.Mc = get_points(T : medial ())
+   z.N           = T : nagel_point ()
+   z.Qa = midpoint(z.A,z.N)
+   z.Qb = midpoint(z.B,z.N)
+   z.Qc = midpoint(z.C,z.N)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C Qa,Qb,Qc)
+   \tkzDrawPolygons[red](Ma,Mb,Mc)
+   \tkzDrawCircles[red](S,w)
+   \tkzDrawSegments[dashed](N,A N,B N,C)
+   \tkzDrawPoints(A,B,C,S,w,Ma,Mb,Mc,Qa,Qb,Qc,N)
+   \tkzLabelPoints(A,B,S,w,Mc,N)
+   \tkzLabelPoints[above](C,Ma,Mb,Qa,Qb,Qc)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_spieker__circle (end)
+
+\subsubsection{Methods \Imeth{triangle}{cevian} and \Imeth{triangle}{cevian\_circle}} % (fold)
+\label{ssub:method_imeth_triangle_cevian}
+
+A Cevian is a line segment which joins a vertex of a triangle with a point on the opposite side (or its extension). The condition for three general Cevians from the three vertices of a triangle to concur is known as Ceva's theorem.
+
+Picking a Cevian point $P$ in the interior of a triangle $ABC$ and drawing Cevians from each vertex through $P$ to the opposite side produces a set of three intersecting Cevians $APa$, $BPb$, and $CPc$ with respect to that point. The triangle $PaPbPc$ is known as the Cevian triangle of $ABC$ with respect to $P$, and the circumcircle of $PaPbPc$ is similarly known as the Cevian circle. [\href{https://mathworld.wolfram.com/CevianTriangle.html}{Weisstein, Eric W. "Cevian Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+
+\vspace{6pt}
+
+\begin{tkzelements}
+  scale = 1.25
+ z.A            = point: new (0,0)
+ z.B            = point: new (4,0)
+ z.C            = point: new (1.8,3)
+ T.ABC          = triangle: new(z.A,z.B,z.C)
+ z.Q            = point : new (1,-0.4) 
+ z.P            = point : new (2,1) 
+ T.cevian       = T.ABC : cevian (z.Q)
+ z.Qa,z.Qb,z.Qc = get_points (T.cevian)
+ T.cevian       = T.ABC : cevian (z.P)
+ z.Pa,z.Pb,z.Pc = get_points (T.cevian)
+ C.cev          = T.ABC : cevian_circle (z.P)
+ z.w            = C.cev.center
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons[cyan](A,B,C)
+  \tkzDrawSegments[cyan](A,Qb B,Qa)
+  \tkzDrawSegments[red](A,Qa B,Qb C,Q)
+  \tkzDrawSegments[blue](A,Pa B,Pb C,Pc)
+  \tkzDrawCircles(w,Pa)
+  \tkzDrawPoints(A,B,C,Qa,Qb,Qc,P,Q,Pa,Pb,Pc)
+  \tkzLabelPoints(A,B,P,Q,Pc)
+  \tkzLabelPoints[above](C,Qc)
+  \tkzLabelPoints[left](Qb,Pb)
+  \tkzLabelPoints[right](Qa,Pa)
+  \end{tikzpicture}
+\end{center}
+
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A            = point: new (0,0)
+ z.B            = point: new (4,0)
+ z.C            = point: new (1.8,3)
+ T.ABC          = triangle: new(z.A,z.B,z.C)
+ z.Q            = point : new (1,-0.4) 
+ z.P            = point : new (2,1) 
+ T.cevian       = T.ABC : cevian (z.Q)
+ z.Qa,z.Qb,z.Qc = get_points (T.cevian)
+ T.cevian       = T.ABC : cevian (z.P)
+ z.Pa,z.Pb,z.Pc = get_points (T.cevian)
+ C.cev          = T.ABC : cevian_circle (z.P)
+ z.w            = C.cev.center
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons[cyan](A,B,C)
+\tkzDrawSegments[cyan](A,Qb B,Qa)
+\tkzDrawSegments[red](A,Qa B,Qb C,Q)
+\tkzDrawSegments[blue](A,Pa B,Pb C,Pc)
+\tkzDrawCircles(w,Pa)
+\tkzDrawPoints(A,B,C,Qa,Qb,Qc,P,Q,Pa,Pb,Pc)
+\tkzLabelPoints(A,B,P,Q,Pc)
+\tkzLabelPoints[above](C,Qc)
+\tkzLabelPoints[left](Qb,Pb)
+\tkzLabelPoints[right](Qa,Pa)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
 % subsubsection method_imeth_triangle_cevian (end)
 
 
-\subsubsection{Méthodes \Imeth{triangle}{pedal} et \Imeth{triangle}{pedal\_circle}} % (fold)
+\subsubsection{Methods \Imeth{triangle}{pedal} and \Imeth{triangle}{pedal\_circle}} % (fold)
 \label{ssub:method_imeth_triangle_pedal}
 
+Given a point $P$, the pedal triangle of $P$ is the triangle whose polygon vertices are the feet of the perpendiculars from $P$ to the side lines. 
+
+\vspace{6pt}
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
   \begin{tkzelements}
@@ -320,7 +1453,7 @@
     z.A    = point: new(0,0)
     z.B    = point: new(5,0)
     z.C    = point: new(1.5,3)
-    z.O    = point: new (2,1) 
+    z.O    = point: new (2,1)
     T.ABC  = triangle: new (z.A,z.B,z.C)
     T.pedal = T.ABC : pedal (z.O)
     z.E,z.F,z.G = get_points(T.pedal)
@@ -334,7 +1467,8 @@
   \tkzDrawPolygon[red](E,F,G)
   \tkzDrawCircle(w,T)
   \tkzDrawPoints(A,B,C,E,F,G,O)
-  \tkzLabelPoints(A,B,C,E,F,G)
+  \tkzLabelPoints(A,B,G)
+  \tkzLabelPoints[above](C,E,F) 
   \tkzDrawSegments(O,E O,F O,G)
   \end{tikzpicture}
 \end{Verbatim}
@@ -344,7 +1478,7 @@
     z.A    = point: new(0,0)
     z.B    = point: new(5,0)
     z.C    = point: new(1.5,3)
-    z.O    = point: new (2,1) 
+    z.O    = point: new (2,1)
     T.ABC  = triangle: new (z.A,z.B,z.C)
     T.pedal = T.ABC : pedal (z.O)
     z.E,z.F,z.G = get_points(T.pedal)
@@ -352,23 +1486,28 @@
     z.w = C.pedal.center
     z.T = C.pedal.through
   \end{tkzelements}
-  \begin{tikzpicture}
-  \tkzGetNodes
-  \tkzDrawPolygon(A,B,C)
-  \tkzDrawPolygon[red](E,F,G)
-  \tkzDrawCircle(w,T)
-  \tkzDrawPoints(A,B,C,E,F,G,O)
-  \tkzLabelPoints(A,B,C,E,F,G)
-  \tkzDrawSegments(O,E O,F O,G)
-  \end{tikzpicture}
+  \begin{center}
+    \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPolygon(A,B,C)
+    \tkzDrawPolygon[red](E,F,G)
+    \tkzDrawCircle(w,T)
+    \tkzDrawPoints(A,B,C,E,F,G,O)
+    \tkzLabelPoints(A,B,G)
+    \tkzLabelPoints[above](C,E,F) 
+    \tkzDrawSegments(O,E O,F O,G)
+    \end{tikzpicture}
+  \end{center}
+
 \end{minipage}
 % subsubsection method_imeth_triangle_pedal (end)
 
-\subsubsection{Méthodes \Imeth{triangle}{conway\_points} et \Imeth{triangle}{conway\_circle}} % (fold)
+\subsubsection{Methods \Imeth{triangle}{conway\_points} and \Imeth{triangle}{conway\_circle}} % (fold)
 \label{ssub:method_imeth_triangle_conway}
 
-En géométrie plane, le théorème du cercle de Conway stipule que lorsque les côtés se rencontrant à chaque sommet d'un triangle sont prolongés par la longueur du côté opposé, les six points d'extrémité des trois segments de droite résultants se trouvent sur un cercle dont le centre est le centre d'incidence du triangle.
+In plane geometry, Conway's circle theorem states that when the sides meeting at each vertex of a triangle are extended by the length of the opposite side, the six endpoints of the three resulting line segments lie on a circle whose centre is the centre of incidence of the triangle.
 
+\vspace{6pt}
 \begin{minipage}{.5\textwidth}
   \begin{Verbatim}
   \begin{tkzelements}
@@ -424,9 +1563,557 @@
 % subsubsection methode_imeth_triangle_conway (end)
 
 
+\subsubsection{Methods \Imeth{triangle}{bevan\_circle} and \Imeth{triangle}{bevan\_point} } % (fold)
+\label{ssub:methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale = .5
+    z.A           = point: new (1,1)
+    z.B           = point: new (6,0)
+    z.C           = point: new (2,4)
+    T             = triangle: new(z.A,z.B,z.C)
+    C.bevan       = T : bevan_circle ()
+    z.c,z.t       = get_points (C.bevan)
+   -- or z.c      = T : bevan_point ()
+\end{tkzelements}
+\begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPolygons(A,B,C)
+    \tkzDrawCircle(c,t)
+    \tkzDrawPoints(A,B,C,c,t)
+    \tkzLabelPoints(A,B,c,t)
+    \tkzLabelPoints[above](C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+     scale =.5
+      z.A           = point: new (1,1)
+      z.B           = point: new (6,0)
+      z.C           = point: new (2,4)
+      T             = triangle: new(z.A,z.B,z.C)
+      C.bevan       = T : bevan_circle ()
+      z.c,z.t       = get_points (C.bevan)
+     -- or z.c      = T : bevan_point ()
+  \end{tkzelements}
+  \begin{center}
+    \begin{tikzpicture}
+        \tkzGetNodes
+        \tkzDrawPolygons(A,B,C)
+        \tkzDrawCircle(c,t)
+        \tkzDrawPoints(A,B,C,c,t)
+        \tkzLabelPoints(A,B,c,t)
+        \tkzLabelPoints[above](C)
+    \end{tikzpicture}
+  \end{center}
+
+\end{minipage}
+
+% subsubsection methods_imeth_triangle_bevan_circle_and_imeth_triangle_bevan_point (end)
+
+
+
+%%%%%% Triangles %%%%%
+
+
+
+\subsubsection{Method \Imeth{triangle}{feuerbach} and method \Imeth{triangle}{feuerbach\_point}} % (fold)
+\label{ssub:method_imeth_triangle_feuerbach}
+
+The Feuerbach triangle is the triangle formed by the three points of tangency of the nine-point circle with the excircles. (The fact that the excircles touch the nine-point circle is known as Feuerbach's theorem.)
+Refer to \href{https://mathworld.wolfram.com/FeuerbachTriangle.html}{Weisstein, Eric W. "Feuerbach Triangle." From MathWorld--A Wolfram Web Resource.}.
+
+The exinscribed circles of a triangle are tangent to the circle of the nine points of a triangle at points which form the \code{Feuerbach} triangle ($FaFbFc$). The inscribed circle and the circle of nine points are tangent at a point called the Feurerbach point $F$.
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+\begin{tkzelements}
+   scale             = .8
+   z.A               = point: new (0,0)
+   z.B               = point: new (6,0)
+   z.C               = point: new (0.8,4)
+   T.ABC             = triangle : new ( z.A,z.B,z.C )
+   z.N               = T.ABC.eulercenter
+   z.Fa,z.Fb,z.Fc    = get_points ( T.ABC : feuerbach () )
+   z.F               =  T.ABC : feuerbach_point ()
+   z.Ja,z.Jb,z.Jc    = get_points ( T.ABC : excentral () )
+   z.I = T.ABC.incenter
+   z.Ia,z.Ib,z.Ic = get_points (T.ABC :  intouch ())
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPoints(Ja,Jb,Jc)
+\tkzClipBB
+\tkzFillCircles[green!30,,opacity=.5](N,Fa)
+\tkzFillCircles[lightgray,,opacity=.5](I,F)
+\tkzDrawLines[add=3 and 3](A,B A,C B,C)
+\tkzDrawCircles(Ja,Fa Jb,Fb Jc,Fc N,Fa N,F I,F)
+\tkzDrawPoints(A,B,C,F,Fa,Fb,Fc,N,I,Ia,Ib,Ic)
+\tkzLabelPoints(N,A,B,Ia,Ib,Ic)
+\tkzLabelPoints[above](Fa,Fb,Fc,F,I,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+
+\begin{tkzelements}
+   scale             = .7
+   z.A               = point: new (0,0)
+   z.B               = point: new (6,0)
+   z.C               = point: new (0.8,4)
+   T.ABC             = triangle : new ( z.A,z.B,z.C )
+   z.N               = T.ABC.eulercenter
+   z.Fa,z.Fb,z.Fc    = get_points ( T.ABC : feuerbach () )
+   z.F               =  T.ABC : feuerbach_point ()
+   z.Ja,z.Jb,z.Jc    = get_points ( T.ABC : excentral () )
+   z.I               = T.ABC.incenter
+   z.Ia,z.Ib,z.Ic    = get_points (T.ABC :  intouch ())
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(Ja,Jb,Jc)
+  \tkzClipBB
+  \tkzFillCircles[green!30,,opacity=.5](N,Fa)
+  \tkzFillCircles[lightgray,,opacity=.5](I,F)
+  \tkzDrawLines[add=3 and 3](A,B A,C B,C)
+  \tkzDrawCircles(Ja,Fa Jb,Fb Jc,Fc N,Fa N,F I,F)
+  \tkzDrawPoints(A,B,C,F,Fa,Fb,Fc,N,I,Ia,Ib,Ic)
+  \tkzLabelPoints(N,A,B,Ia,Ib,Ic)
+  \tkzLabelPoints[above](Fa,Fb,Fc,F,I,C)
+  \end{tikzpicture}
+\end{center}
+
+%subsubsection method_imeth_triangle_feuerbach (end)
+
+
+\subsubsection{Method \Imeth{triangle}{similar}} % (fold)
+\label{ssub:method_imeth_triangle_similar}
+
+The \code{similar} method creates a new triangle whose sides are parallel to the sides of the original triangle and pass through its vertices.
+
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+  \begin{tkzelements}
+   scale =.5
+   z.A            = point: new (0 , 0)
+   z.B            = point: new (6 , 0)
+   z.C            = point: new (1.5 , 3.5)
+   T.ABC          = triangle: new (z.A,z.B,z.C)
+   z.X,z.Y,z.Z    = get_points ( T.ABC : similar ())
+   z.H_a,z.H_b,
+   z.H_c          = get_points (T.ABC : orthic ())
+  \end{tkzelements}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygons(A,B,C  X,Y,Z)
+     \tkzDrawLines(A,H_a B,H_b C,H_c)
+     \tkzDrawPoints(A,B,C,X,Y,Z)
+     \tkzLabelPoints(A,B,Z)
+     \tkzLabelPoints[above](X,Y,C)
+   \end{tikzpicture}
+   \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+    \begin{tkzelements}
+   scale =.5
+   z.A            = point: new (0 , 0)
+   z.B            = point: new (6 , 0)
+   z.C            = point: new (1.5 , 3.5)
+   T.ABC          = triangle: new (z.A,z.B,z.C)
+   z.X,z.Y,z.Z    = get_points ( T.ABC : similar ())
+   z.H_a,z.H_b,
+   z.H_c          = get_points (T.ABC : orthic ())
+  \end{tkzelements}
+\hspace*{\fill}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawPolygons(A,B,C  X,Y,Z)
+     \tkzDrawLines(A,H_a B,H_b C,H_c)
+     \tkzDrawPoints(A,B,C,X,Y,Z)
+     \tkzLabelPoints(A,B,Z)
+     \tkzLabelPoints[above](X,Y,C)
+   \end{tikzpicture}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_similar (end)
+
+\subsubsection{Method \Imeth{triangle}{medial}} % (fold)
+\label{ssub:method_imeth_triangle_medial}
+
+The triangle $MaMbMc$ formed by joining the midpoints of the sides of a triangle $ABC$. The medial triangle is sometimes also called the auxiliary triangle (Dixon 1991).
+[\href{https://mathworld.wolfram.com/MedialTriangle.html}{Weisstein, Eric W. "Medial Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+  \begin{tkzelements}
+    scale           = 1.25
+      z.A           = point: new (0,1)
+      z.B           = point: new (6,0)
+      z.C           = point: new (2,4)
+      T             = triangle: new(z.A,z.B,z.C)
+      T.med         = T : medial ()
+      z.Ma,z.Mb,z.Mc= get_points (T.med)
+      z.G           = T.centroid
+      z.O           = T.circumcenter
+  \end{tkzelements}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(A,B,C)
+  \tkzDrawPolygons[red](Ma,Mb,Mc)
+  \tkzDrawSegments(A,Ma B,Mb C,Mc)
+   \tkzDrawSegments[dashed,cyan](O,Ma O,Mb O,Mc)
+  \tkzDrawPoints(A,B,C,Ma,Mb,Mc,O,G)
+  \tkzLabelPoints(A,B,Mc,O)
+  \tkzLabelPoints[above](C)
+  \tkzLabelPoints[left](Mb)
+  \tkzLabelPoints[right](Ma,G)
+  \tkzMarkRightAngles[fill=cyan!20,
+               opacity=.4](O,Ma,B O,Mb,A O,Mc,A)
+  \end{tikzpicture}
+  \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+    scale           = 1.25
+      z.A           = point: new (0,1)
+      z.B           = point: new (6,0)
+      z.C           = point: new (2,4)
+      T             = triangle: new(z.A,z.B,z.C)
+      T.med         = T : medial ()
+      z.Ma,z.Mb,z.Mc= get_points (T.med)
+      z.G           = T.centroid
+      z.O           = T.circumcenter
+  \end{tkzelements}
+  \begin{center}
+    \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPolygons(A,B,C)
+    \tkzDrawPolygons[red](Ma,Mb,Mc)
+    \tkzDrawSegments(A,Ma B,Mb C,Mc)
+     \tkzDrawSegments[dashed,cyan](O,Ma O,Mb O,Mc)
+    \tkzDrawPoints(A,B,C,Ma,Mb,Mc,O,G)
+    \tkzLabelPoints(A,B,Mc,O)
+    \tkzLabelPoints[above](C)
+    \tkzLabelPoints[left](Mb)
+    \tkzLabelPoints[right](Ma,G)
+    \tkzMarkRightAngles[fill=cyan!20,
+                 opacity=.4](O,Ma,B O,Mb,A O,Mc,A)
+    \end{tikzpicture}
+  \end{center}
+\end{minipage}
+
+
+% subsubsection method_imeth_triangle_medial (end)
+
+\subsubsection{Method \Imeth{triangle}{incentral} } % (fold)
+\label{ssub:method_incentral}
+
+The incentral triangle $IaIbIc$ is the Cevian triangle of a triangle $ABC$ with respect to its incenter $I$. It is therefore also the triangle whose vertices are determined by the intersections of the reference triangle's angle bisectors with the respective opposite sides.
+[ \href{https://mathworld.wolfram.com/IncentralTriangle.html}{Weisstein, Eric W. "Incentral Triangle." From MathWorld--A Wolfram Web Resource.}
+]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+ z.A        = point: new (0 , 0)
+ z.B        = point: new (6 , 0)
+ z.C        = point: new (1 , 4)
+ T.ABC      = triangle: new (z.A,z.B,z.C)
+ z.I        = T.ABC.incenter
+ z.Ia,z.Ib,
+ z.Ic       = get_points (T.ABC : incentral ())
+ z.Ta,z.Tb,
+ z.Tc       = get_points (T.ABC :  intouch ())
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygon(A,B,C)
+   \tkzDrawPolygon[dashed,red](Ia,Ib,Ic)
+   \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+   \tkzDrawCircle(I,Ta)
+   \tkzDrawPoints(A,B,C,Ia,Ib,Ic,I,Ta,Tb,Tc)
+   \tkzLabelPoints(A,B,Ic,I,Tc)
+   \tkzLabelPoints[above](Ia,Ta,C)
+   \tkzLabelPoints[above left](Ib,Tb)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+   z.A        = point: new (0 , 0)
+   z.B        = point: new (6 , 0)
+   z.C        = point: new (1 , 4)
+   T.ABC      = triangle: new (z.A,z.B,z.C)
+   z.I        = T.ABC.incenter
+   z.Ia,z.Ib,
+   z.Ic       = get_points (T.ABC : incentral ())
+   z.Ta,z.Tb,
+   z.Tc       = get_points (T.ABC :  intouch ())
+  \end{tkzelements}
+  \begin{center}
+    \begin{tikzpicture}
+       \tkzGetNodes
+       \tkzDrawPolygon(A,B,C)
+       \tkzDrawPolygon[dashed,red](Ia,Ib,Ic)
+       \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+       \tkzDrawCircle(I,Ta)
+       \tkzDrawPoints(A,B,C,Ia,Ib,Ic,I,Ta,Tb,Tc)
+       \tkzLabelPoints(A,B,Ic,I,Tc)
+       \tkzLabelPoints[above](Ia,Ta,C)
+       \tkzLabelPoints[above left](Ib,Tb)
+    \end{tikzpicture}
+  \end{center}
+
+\end{minipage}
+
+% subsubsection method_incentral (end)
+
+
+\subsubsection{Method \Imeth{triangle}{tangential}} % (fold)
+\label{ssub:method_imeth_triangle_tangential}
+
+The tangential triangle is the triangle $TaTbTc$ formed by the lines tangent to the circumcircle of a given triangle DeltaABC at its vertices. It is therefore antipedal triangle of $ABC$ with respect to the circumcenter $O$. It is also anticevian triangle of $ABC$ with the symmedian point $K$ as the anticevian point (Kimberling 1998, p. 156). Furthermore, the symmedian point $K$ of $ABC$ is the Gergonne point of $TaTbTc$.
+
+The sides of an orthic triangle are parallel to the tangents to the circumcircle at the vertices (Johnson 1929, p. 172). This is equivalent to the statement that each line from a triangle's circumcenter to a vertex is always perpendicular to the corresponding side of the orthic triangle (Honsberger 1995, p. 22), and to the fact that the orthic and tangential triangles are homothetic.
+[ \href{https://mathworld.wolfram.com/TangentialTriangle.html}{Weisstein, Eric W. "Tangential Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale    = .75
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,3)
+    T       = triangle: new(z.A,z.B,z.C)
+  z.H       = T.orthocenter
+  z.O       = T.circumcenter
+  z.L       = T : symmedian_point ()
+  T.orthic  = T: orthic()
+  z.Ha,
+  z.Hb,
+  z.Hc      = get_points (T.orthic)
+  z.Ta,
+  z.Tb,
+  z.Tc       = get_points (T : tangential ())
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C Ta,Tb,Tc)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,O,H,Ta,Tb,Tc,L)
+ \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+ \tkzDrawSegments[green](C,Tc B,Tb A,Ta)
+ \tkzDrawPolygon[blue](Ha,Hb,Hc)
+ \tkzLabelPoints(A,B,O,Tc)
+ \tkzLabelPoints[above](C,Tb,Ta)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,Hb)
+ \tkzMarkRightAngles(A,Ha,C B,Hb,A C,Hc,B)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale    = .75
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (1,3)
+    T       = triangle: new(z.A,z.B,z.C)
+  z.H       = T.orthocenter
+  z.O       = T.circumcenter
+  z.L       = T : symmedian_point ()
+  T.orthic  = T: orthic()
+  z.Ha,
+  z.Hb,
+  z.Hc      = get_points (T.orthic)
+  z.Ta,
+  z.Tb,
+  z.Tc       = get_points (T : tangential ())
+\end{tkzelements}
+
+  \begin{center}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C Ta,Tb,Tc)
+ \tkzDrawCircle(O,A)
+ \tkzDrawPoints(A,B,C,O,H,Ta,Tb,Tc,L)
+ \tkzDrawSegments[red](C,Hc B,Hb A,Ha)
+ \tkzDrawSegments[green](C,Tc B,Tb A,Ta)
+ \tkzDrawPolygon[blue](Ha,Hb,Hc)
+ \tkzLabelPoints(A,B,O,Tc)
+ \tkzLabelPoints[above](C,Tb,Ta)
+ \tkzLabelPoints[font=\small](Hc)
+ \tkzLabelPoints[font=\small,above](Ha,Hb)
+ \tkzMarkRightAngles(A,Ha,C B,Hb,A C,Hc,B)
+\end{tikzpicture}
+  \end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_tangential (end)
+
+
+\subsubsection{Method \Imeth{triangle}{symmedial}} % (fold)
+\label{ssub:method_imeth_triangle_symmedial}
+
+The symmedial triangle $LaLbLc$  is the triangle whose vertices are the intersection points of the symmedians with the reference triangle $ABC$.
+
+The symmedial circle is the circumcircle of the symmedial triangle.
+
+The following example groups several concepts around the symmedian. As a reminder, a symmedian of a triangle is the reflection of the median with respect to the angle bisector.
+
+The points of contact of the symmedians with the sides of the triangle are obtained using the \code{symmedian} method.
+The intersection of the symmedians is the point known as the \code{Lemoine} or \code{Symmedian} point.
+You can use the triangle methods \code{lemoine\_point} or \code{symmedian\_point}. If you only need one of the lines, you can use the method \code{symmedian\_line(n)}. \(n=0\) corresponds to the line coming from the first vertex of the triangle, \(n=1\) to the second, and so on.
+
+In the next example, $L$ is the \code{Lemoine point} or the \code{Symmedian point}. $LaLbLc$ is the symmedian triangle.[\href{https://mathworld.wolfram.com/SymmedianPoint.html}{Weisstein, Eric W. "Symmedian Point." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   scale          = 2
+   z.A            = point :   new (0,0)
+   z.B            = point :   new (7,0)
+   z.C            = point :   new (2,3)
+   T.ABC          = triangle : new (z.A,z.B,z.C)
+   z.L            = T.ABC : lemoine_point ()
+   T.SY           = T.ABC : symmedian ()
+   T.med          = T.ABC : medial ()
+   z.Ka,z.Kb,z.Kc = get_points (T.SY)
+   z.Ma,z.Mb,z.Mc = get_points (T.med)
+   L.Kb           = T.ABC : symmedian_line (1)
+  _,z.Kb          = get_points(L.Kb)
+  z.G             = T.ABC.centroid
+  z.Ia,z.Ib,z.Ic  = get_points ( T.ABC : incentral ())
+  --          z.T = T.ABC : trilinear (0,1,1)
+  z.I             = T.ABC.incenter
+\end{tkzelements}
+\begin{tikzpicture}
+\tkzGetNodes
+\tkzDrawPolygons(A,B,C)
+\tkzDrawPoints(A,B,C,L,Ka,Kb,Kc,G,Ma,Mb,Mc,Ia,Ib,Ic,I)
+\tkzDrawSegments[cyan](A,Ka B,Kb C,Kc)
+\tkzDrawSegments[green](A,Ma B,Mb C,Mc)
+\tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+\tkzLabelPoints[above](C,Ka,Ia,Ma)
+\tkzLabelPoints[above left](Kb,Ib,Mb)
+\tkzLabelPoints(A,B,L,Kc,I,Ic,Mc,G)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+   scale          = 2
+   z.A            = point :   new (0,0)
+   z.B            = point :   new (7,0)
+   z.C            = point :   new (2,3)
+   T.ABC          = triangle : new (z.A,z.B,z.C)
+   z.L            = T.ABC : lemoine_point ()
+   T.SY           = T.ABC : symmedian ()
+   T.med          = T.ABC : medial ()
+   z.Ka,z.Kb,z.Kc = get_points (T.SY)
+   z.Ma,z.Mb,z.Mc = get_points (T.med)
+   L.Kb           = T.ABC : symmedian_line (1)
+  _,z.Kb          = get_points(L.Kb)
+  z.G             = T.ABC.centroid
+  z.Ia,z.Ib,z.Ic  = get_points ( T.ABC : incentral ())
+  --          z.T = T.ABC : trilinear (0,1,1)
+  z.I             = T.ABC.incenter
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(A,B,C)
+  \tkzDrawPoints(A,B,C,L,Ka,Kb,Kc,G,Ma,Mb,Mc,Ia,Ib,Ic,I)
+  \tkzDrawSegments[cyan](A,Ka B,Kb C,Kc)
+  \tkzDrawSegments[green](A,Ma B,Mb C,Mc)
+  \tkzDrawSegments[dashed,red](A,Ia B,Ib C,Ic)
+  \tkzLabelPoints[above](C,Ka,Ia,Ma)
+  \tkzLabelPoints[above left](Kb,Ib,Mb)
+  \tkzLabelPoints(A,B,L,Kc,I,Ic,Mc,G)
+  \end{tikzpicture}
+\end{center}
+
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_symmedial (end)
+
+\subsubsection{Method \Imeth{triangle}{anti}} % (fold)
+\label{ssub:method_imeth_triangle_anti}
+
+The anticomplementary triangle is the triangle $TaTbTc$ which has a given triangle $ABC$ as its medial triangle. It is therefore the anticevian triangle with respect to the triangle centroid G (Kimberling 1998, p. 156). [\href{https://mathworld.wolfram.com/AnticomplementaryTriangle.html}{Weisstein, Eric W. "Anticomplementary Triangle." From MathWorld--A Wolfram Web Resource.}]
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale     = .6
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (2,4)
+  T         = triangle: new(z.A,z.B,z.C)  
+  T.similar = T: anti()
+  z.Ta,
+  z.Tb,
+  z.Tc      = get_points (T.similar) 
+\end{tkzelements}
+\begin{tikzpicture}
+ \tkzGetNodes
+ \tkzDrawPolygons[red](A,B,C)
+ \tkzDrawPolygon[blue](Ta,Tb,Tc)
+ \tkzDrawPoints(A,B,C,Ta,Tb,Tc)
+ \tkzLabelPoints(A,B,Tc)
+ \tkzLabelPoints[above](Ta,Tb,C)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+  scale    = .6
+  z.A       = point: new (0,0)
+  z.B       = point: new (5,0)
+  z.C       = point: new (2,4)
+  T       = triangle: new(z.A,z.B,z.C)  
+  T.similar  = T: anti()
+  z.Ta,
+  z.Tb,
+  z.Tc      = get_points (T.similar) 
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons[red](A,B,C)
+   \tkzDrawPolygon[blue](Ta,Tb,Tc)
+   \tkzDrawPoints(A,B,C,Ta,Tb,Tc)
+   \tkzLabelPoints(A,B,Tc)
+   \tkzLabelPoints[above](Ta,Tb,C)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+
+% subsubsection method_imeth_triangle_anti (end)
+
+
 \subsubsection{Euler line} % (fold)
 \label{ssub:euler_line}
 
+The line on which the orthocenter $H$, triangle centroid $G$, circumcenter $O$, nine-point center $N$, and a number of other important triangle centers lie.
+[ \href{https://mathworld.wolfram.com/EulerLine.html}{Weisstein, Eric W. "Euler Line." From MathWorld--A Wolfram Web Resource.}]
+
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
@@ -468,26 +2155,31 @@
  z.P,z.Q,z.R    = get_points (T.ABC: orthic())
  z.K,z.I,z.J    = get_points (T.ABC: medial ())
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines[blue](O,H)
-\tkzDrawCircle[red](N,I)
-\tkzDrawCircles[teal](O,A)
-\tkzDrawSegments(A,P B,Q C,R)
-\tkzDrawSegments[red](A,I B,J C,K)
-\tkzDrawPolygons(A,B,C)
-\tkzDrawPoints(A,B,C,N,I,J,K,O,P,Q,R,H,G)
-\tkzLabelPoints(A,B,C,I,J,K,P,Q,R)
-\tkzLabelPoints[below](N,O,G,H)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines[blue](O,H)
+  \tkzDrawCircle[red](N,I)
+  \tkzDrawCircles[teal](O,A)
+  \tkzDrawSegments(A,P B,Q C,R)
+  \tkzDrawSegments[red](A,I B,J C,K)
+  \tkzDrawPolygons(A,B,C)
+  \tkzDrawPoints(A,B,C,N,I,J,K,O,P,Q,R,H,G)
+  \tkzLabelPoints(A,B,J,P,R)
+  \tkzLabelPoints[above](C,I,Q,K)
+  \tkzLabelPoints[below](N,O,G,H)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsubsection euler_line (end)
 
 \subsection{Euler ellipse} % (fold)
 \label{sub:euler_ellipse}
+The Euler ellipse is a conic, tangent to the three sides of a triangle, with the orthocentre and the centre of the circumscribed circle as foci.
 Example of obtaining the Euler circle as well as the Euler ellipse.
 
+\vspace{6pt}
 \begin{tkzelements}
 z.A     = point: new (2,3.8)
 z.B     = point: new (0 ,0)
@@ -494,7 +2186,7 @@
 z.C     = point: new (6.2 ,0)
 L.AB    = line : new ( z.A , z.B )
 T.ABC   = triangle: new (z.A,z.B,z.C)
-z.K     = midpoint (z.B,z.C) 
+z.K     = midpoint (z.B,z.C)
 E.euler = T.ABC : euler_ellipse ()
 z.N     = T.ABC.eulercenter
 C.euler = circle : new (z.N,z.K)
@@ -512,7 +2204,7 @@
 z.C     = point: new (6.2 ,0)
 L.AB    = line : new ( z.A , z.B )
 T.ABC   = triangle: new (z.A,z.B,z.C)
-z.K     = midpoint (z.B,z.C) 
+z.K     = midpoint (z.B,z.C)
 E.euler = T.ABC : euler_ellipse ()
 z.N     = T.ABC.eulercenter
 C.euler = circle : new (z.N,z.K)
@@ -554,8 +2246,9 @@
 
 \subsubsection{Steiner inellipse and circumellipse} % (fold)
 \label{ssub:steiner_inellipse_and_circumellipse}
-In this example, the inner and outer Steiner ellipses, referred to as the "inellipse" and "circumellipse" (Mathworld.com), respectively, along with the orthoptic circle, are depicted.. The triangle must be acutangle.
+In this example, the inner and outer Steiner ellipses, referred to as the "inellipse" and "circumellipse" [\href{https://mathworld.wolfram.com/SteinerInellipse.html}{Weisstein, Eric W. "Steiner Inellipse." From MathWorld--A Wolfram Web Resource.} and  \href{https://mathworld.wolfram.com/SteinerCircumellipse.html}{Weisstein, Eric W. "Steiner Circumellipse." From MathWorld--A Wolfram Web Resource.}], respectively, along with the orthoptic circle, are depicted.. The triangle must be acutangle.
 
+\vspace{6pt}
 \begin{minipage}{.5\textwidth}
 \begin{Verbatim}
 \begin{tkzelements}
@@ -562,13 +2255,13 @@
   scale    = .5
   z.A      = point: new (1 , 4)
   z.B      = point: new (11 , 1)
-  z.C      = point: new (5 , 12) 
+  z.C      = point: new (5 , 12)
   T.ABC    = triangle: new(z.A,z.B,z.C)
   E        = T.ABC: steiner_inellipse ()
   z.G      = E.center
   ang      = math.deg(E.slope)
   z.F      = E.Fa
-  z.E      = E.Fb   
+  z.E      = E.Fb
   C        = E: orthoptic_circle ()
   z.w      = C.center
   z.o      = C.through
@@ -584,13 +2277,13 @@
   scale = .5
 z.A      = point: new (1 , 4)
 z.B      = point: new (11 , 1)
-z.C      = point: new (5 , 12) 
+z.C      = point: new (5 , 12)
 T.ABC    = triangle: new(z.A,z.B,z.C)
 E        = T.ABC: steiner_inellipse ()
 z.G      = E.center
 ang      = math.deg(E.slope)
 z.F      = E.Fa
-z.E      = E.Fb   
+z.E      = E.Fb
 C        = E: orthoptic_circle ()
 z.w      = C.center
 z.o      = C.through
@@ -611,7 +2304,7 @@
   \tkzUseLua{EE.Ry},\tkzUseLua{ang})
 \tkzDrawLines(F,E M,T1 M,T2) %
 \tkzDrawPoints(A,B,C,F,E,G,M,T1,T2)
-\tkzLabelPoints[above](C,M,T1)  
+\tkzLabelPoints[above](C,M,T1)
 \tkzLabelPoints[right](T2,B)
 \tkzLabelPoints[below left](A,F,E,G)
 \end{tikzpicture}
@@ -628,7 +2321,7 @@
   \tkzUseLua{EE.Ry},\tkzUseLua{ang})
 \tkzDrawLines(F,E M,T1 M,T2) %
 \tkzDrawPoints(A,B,C,F,E,G,M,T1,T2)
-\tkzLabelPoints[above](C,M,T1)  
+\tkzLabelPoints[above](C,M,T1)
 \tkzLabelPoints[right](T2,B)
 \tkzLabelPoints[below left](A,F,E,G)
 \end{tikzpicture}
@@ -639,9 +2332,17 @@
 \subsection{Harmonic division and bisector} % (fold)
 \label{sub:harmonic_division_and_bisector}
 
+Let four points $A$, $C$, $B$ and $D$, in this order, lying on the straight line $(d)$ and $M$ un point pris hors de $(d)$. Then, if two of the following three propositions are true, then the third is also true:
+   \begin{enumerate}
+   \item  The division (A,B;C,D) is harmonic. ($CA/CB = DA/DB$)
+   \item  $(MC)$ is the internal angle bisector of $\widehat{AMB}$.
+   \item  $(MD) \perp (MC)$.
+   \end{enumerate}
+  
+  \vspace{6pt}
 \begin{minipage}{.4\textwidth}
 \begin{Verbatim}
-\begin{tkzelements}  
+\begin{tkzelements}
    scale    =  .4
    z.A      = point: new (0 , 0)
    z.B      = point: new (6 , 0)
@@ -664,7 +2365,7 @@
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.6\textwidth}
-\begin{tkzelements}  
+\begin{tkzelements}
    scale =.4
    z.A  = point: new (0 , 0)
    z.B  = point: new (6 , 0)
@@ -684,7 +2385,7 @@
    z.E  = intersection (L.LL,L.MC)
    z.F  = intersection (L.LL,L.MD)
 \end{tkzelements}
-\hspace{\fill}   
+\hspace{\fill}
 \begin{tikzpicture}
   \tkzGetNodes
   \tkzDrawPolygon(A,B,M)
@@ -719,59 +2420,8 @@
 \end{Verbatim}
 % subsection harmonic_division_and_bisector (end)
 
-\subsubsection{Method \Imeth{triangle}{cevan}} % (fold)
-\label{ssub:method_imeth_triangle_cevan}
 
-\begin{minipage}{.5\textwidth}
-  \begin{Verbatim}
-    \begin{tkzelements}
-    scale = 2
-    z.a = point:  new (1,2)
-    z.b = point:  new (5,1)
-    z.c = point:  new (3,5)
-    T = triangle: new (z.a,z.b,z.c)
-    z.i = T.orthocenter 
-    T.cevian = T : cevian (z.i)
-    z.ta,z.tb,z.tc = get_points (T.cevian)
-    C.cev = T : cevian_circle (z.i)
-    z.w = C.cev.center
-    \end{tkzelements}
-    \begin{tikzpicture}
-    \tkzGetNodes
-    \tkzDrawPolygons(a,b,c ta,tb,tc)
-    \tkzDrawSegments(a,ta b,tb c,tc)
-    \tkzDrawPoints(a,b,c,i,ta,tb,tc)
-    \tkzLabelPoints(a,b,c,i)
-    \tkzDrawCircles(w,ta)
-    \end{tikzpicture}
-  \end{Verbatim}
-\end{minipage}
-\begin{minipage}{.5\textwidth}
-  \begin{tkzelements}
-  scale = 2
-  z.a = point:  new (1,2)
-  z.b = point:  new (5,1)
-  z.c = point:  new (3,5)
-  T = triangle: new (z.a,z.b,z.c)
-  z.i = T.orthocenter 
-  T.cevian = T : cevian (z.i)
-  z.ta,z.tb,z.tc = get_points (T.cevian)
-  C.cev = T : cevian_circle (z.i)
-  z.w = C.cev.center
-  \end{tkzelements}
-  \begin{tikzpicture}
-  \tkzGetNodes
-  \tkzDrawPolygons(a,b,c ta,tb,tc)
-  \tkzDrawSegments(a,ta b,tb c,tc)
-  \tkzDrawPoints(a,b,c,i,ta,tb,tc)
-  \tkzLabelPoints(a,b,c,i)
-  \tkzDrawCircles(w,ta)
-  \end{tikzpicture}
-\end{minipage}
-
-
-% subsubsection method_imeth_triangle_cevan (end)
-
-% subsection methods_of_the_class_triangle (end)
-% section class_triangle (end)
+%
+% % subsection methods_of_the_class_triangle (end)
+% % section class_triangle (end)
 \endinput

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-vectors.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -41,11 +41,11 @@
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes}      & \textbf{Application}& \textbf{Example}\\
-\Iattr{vector}{tail}       &  |V.AB.t = z.A|   & Refer to (\ref{ssub:methods}) \\
-\Iattr{vector}{head}       &  |V.AB.head = z.B|  & Refer to (\ref{ssub:methods})  \\
+\Iattr{vector}{tail}       &  |V.AB.t = z.A|   & [\ref{ssub:methods}]\\
+\Iattr{vector}{head}       &  |V.AB.head = z.B|  &  [\ref{ssub:methods}] \\
 \Iattr{vector}{type}     &  |V.AB.type = 'vector'|  & \\  
-\Iattr{vector}{slope}    &  |V.AB.slope| & Refer to (\ref{ssub:example_vector_attributes})\\
-\Iattr{vector}{length}   &  |V.AB.norm|& Refer to (\ref{ssub:example_vector_attributes})\\
+\Iattr{vector}{slope}    &  |V.AB.slope| & [\ref{ssub:example_vector_attributes}] \\
+\Iattr{vector}{length}   &  |V.AB.norm|& [\ref{ssub:example_vector_attributes} ]\\
 \Iattr{vector}{mtx}   &  |V.AB.mtx| & The result is a column matrix |{{V.AB.t},{V.AB.h}}|\\
 \bottomrule
 \end{tabular}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -2,7 +2,65 @@
 
 \section{Examples} % (fold)
 \label{sec:examples}
-   
+
+\subsection{Length transfer} % (fold)
+\label{sub:report_de_distance}
+
+Use of |north and east| functions linked to points, to transfer lengths, Refer to (\ref{sub:length_of_a_segment})
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale = .75
+   z.A = point : new ( 0 , 0 )
+   z.B = point : new ( 3 , 0 )
+   L.AB = line : new ( z.A , z.B )
+   T.ABC =   L.AB : sublime ()
+   z.C = T.ABC.pc
+   z.D = z.B: north (length(z.B,z.C))
+   z.E = z.B: east (L.AB.length)
+   z.M = L.AB.mid
+   z.F = z.E : north (length(z.C,z.M))
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C) 
+   \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
+   \tkzDrawPoints(A,...,F)
+   \tkzLabelPoints(A,B,E,M)
+   \tkzLabelPoints[above right](C,D,F)
+\end{tikzpicture}
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+   scale = .75
+   z.A = point : new ( 0 , 0 )
+   z.B = point : new ( 3 , 0 )
+   L.AB = line : new ( z.A , z.B )
+   T.ABC =   L.AB : sublime ()
+   z.C = T.ABC.pc
+   z.D = z.B: north (length(z.B,z.C))
+   z.E = z.B: east (L.AB.length)
+   z.M = L.AB.mid
+   z.F = z.E : north (length(z.C,z.M))
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}[gridded]
+     \tkzGetNodes
+     \tkzDrawPolygons(A,B,C) 
+     \tkzDrawSegments[gray,dashed](B,D B,E E,F C,M)
+     \tkzDrawPoints(A,...,F)
+     \tkzLabelPoints(A,B,E,M)
+     \tkzLabelPoints[above right](C,D,F)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsection report_de_distance (end)
+
+
 \subsection{D'Alembert 1} % (fold)
 \label{sub:d_alembert_1}
 
@@ -54,15 +112,18 @@
 z.Jp    = C.Aa : internal_similitude (C.Cc)
 z.Kp    = C.Cc : internal_similitude (C.Bb)
 \end{tkzelements}
-\hspace*{\fill}  
-\begin{tikzpicture}[rotate=30]
-   \tkzGetNodes
-   \tkzDrawCircles(A,a B,b C,c)
-   \tkzDrawPoints(A,B,C,I,J,K,I',J',K')
-   \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K)
-   \tkzDrawSegments[purple](I,J' I',J I',K)
-   \tkzLabelPoints(I,J,K,I',J',K')
-\end{tikzpicture}
+  
+\begin{center}
+  \begin{tikzpicture}[rotate=30]
+     \tkzGetNodes
+     \tkzDrawCircles(A,a B,b C,c)
+     \tkzDrawPoints(A,B,C,I,J,K,I',J',K')
+     \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K)
+     \tkzDrawSegments[purple](I,J' I',J I',K)
+     \tkzLabelPoints(I,J,K,I',J',K')
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection d_alembert_1 (end)
 
@@ -110,15 +171,149 @@
    z.m,z.n = get_points (C.Bb : radical_axis (C.Cc))
 \end{tkzelements}
 
-\hspace*{\fill} 
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(A,a B,b C,c)
+  \tkzDrawLines[new](i,j k,l m,n)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+% subsection d_alembert_2 (end)
+
+\subsection{Altshiller} % (fold)
+\label{sub:altshiller}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   z.P   = point : new (0,0)
+   z.Q   = point : new (5,0)
+   z.I   = point : new (3,2)
+   C.QI  = circle :    new (z.Q,z.I)
+   C.PE  = C.QI : orthogonal_from (z.P)
+   z.E   = C.PE.through
+   C.QE  = circle :    new (z.Q,z.E)
+   _,z.F = intersection (C.PE,C.QE)
+   z.A   = C.PE: point (1/9)
+   L.AE  = line : new (z.A,z.E)
+   _,z.C = intersection (L.AE,C.QE)
+   L.AF  = line : new (z.A,z.F)
+   L.CQ  = line : new (z.C,z.Q)
+   z.D   = intersection (L.AF,L.CQ)
+\end{tkzelements}
 \begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,a B,b C,c)
-\tkzDrawLines[new](i,j k,l m,n)
+   \tkzGetNodes
+   \tkzDrawCircles(P,E Q,E)
+   \tkzDrawLines[add=0 and 1](P,Q)
+   \tkzDrawLines[add=0 and 2](A,E)
+   \tkzDrawSegments(P,E E,F F,C A,F C,D)
+   \tkzDrawPoints(P,Q,E,F,A,C,D)
+   \tkzLabelPoints(P,Q,E,F,A,C,D)
 \end{tikzpicture}
+\end{Verbatim}
 \end{minipage}
-% subsection d_alembert_2 (end)
+\begin{minipage}{.5\textwidth}
+   \begin{tkzelements}
+      scale =.5
+   z.P  = point : new (0,0)
+   z.Q  = point : new (5,0)
+   z.I  = point : new (3,2)
+   C.QI = circle :    new (z.Q,z.I)
+   C.PE = C.QI : orthogonal_from (z.P)
+   z.E  = C.PE.through
+   C.QE = circle :    new (z.Q,z.E)
+   _,z.F = intersection (C.PE,C.QE)
+   z.A  = C.PE: point (1/9)
+   L.AE = line : new (z.A,z.E)
+   _,z.C    = intersection (L.AE,C.QE)
+   L.AF = line : new (z.A,z.F)
+   L.CQ = line : new (z.C,z.Q)
+   z.D  = intersection (L.AF,L.CQ)
+   \end{tkzelements}
+   \begin{center}
+     \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawCircles(P,E Q,E)
+     \tkzDrawLines[add=0 and 1](P,Q)
+     \tkzDrawLines[add=0 and 2](A,E)
+     \tkzDrawSegments(P,E E,F F,C A,F C,D)
+     \tkzDrawPoints(P,Q,E,F,A,C,D)
+     \tkzLabelPoints(P,Q,E,F,A,C,D)
+     \end{tikzpicture}
+   \end{center}
+\end{minipage}
+%subsection altshiller (end)
 
+\subsection{Lemoine} % (fold)
+\label{sub:lemoine}
+
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+   scale = 1.25
+   z.A   = point: new (1,0)
+   z.B   = point: new (5,2)
+   z.C   = point: new (1.2,2)
+   T     = triangle: new(z.A,z.B,z.C)
+   z.O   = T.circumcenter
+   C.OA  = circle: new (z.O,z.A)
+   L.tA  = C.OA: tangent_at (z.A)
+   L.tB  = C.OA: tangent_at (z.B)
+   L.tC  = C.OA: tangent_at (z.C)
+   z.P   = intersection (L.tA,T.bc)
+   z.Q   = intersection (L.tB,T.ca)
+   z.R   = intersection (L.tC,T.ab)
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes  
+   \tkzDrawPolygon[teal](A,B,C)
+   \tkzDrawCircle(O,A)
+   \tkzDrawPoints(A,B,C,P,Q,R)
+   \tkzLabelPoints(A,B,C,P,Q,R)
+   \tkzDrawLine[blue](Q,R)
+   \tkzDrawLines[red](A,P B,Q R,C)
+   \tkzDrawSegments(A,R C,P C,Q)
+\end{tikzpicture}
+\end{Verbatim}
+
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+scale = .75
+z.A   = point: new (1,0)
+z.B   = point: new (5,2)
+z.C   = point: new (1.2,2)
+T     = triangle: new(z.A,z.B,z.C)
+z.O   = T.circumcenter
+C.OA  = circle: new (z.O,z.A)
+L.tA  = C.OA: tangent_at (z.A)
+L.tB  = C.OA: tangent_at (z.B)
+L.tC  = C.OA: tangent_at (z.C)
+z.R   = intersection (L.tC,T.ab)
+z.P   = intersection (L.tA,T.bc)
+z.Q   = intersection (L.tB,T.ca)
+\end{tkzelements}
+
+\begin{center}
+  \begin{tikzpicture}[rotate=90]
+  \tkzGetNodes  
+  \tkzDrawPolygon[teal](A,B,C)
+  \tkzDrawCircle(O,A)
+  \tkzDrawPoints(A,B,C,P,Q,R)
+  \tkzLabelPoints(A,B,C,P,Q,R)
+  \tkzDrawLine[blue](Q,R)
+  \tkzDrawLines[red](A,P B,Q R,C)
+  \tkzDrawSegments(A,R C,P C,Q)
+  \end{tikzpicture}
+\end{center}
+
+\end{minipage}
+%\caption{Lemoine line}
+% subsection lemoine (end)
+
+
 \subsection{Alternate} % (fold)
 \label{sub:alternate}
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
@@ -148,7 +343,7 @@
 \end{tikzpicture}
 \end{Verbatim}
 \end{minipage}
-\hspace*{\fill} 
+
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
 \begin{tkzelements}
 z.A  = point: new (0 , 0)
@@ -161,21 +356,94 @@
 L.LLC    = T.ab: ll_from (z.C)
 z.E  = intersection (L.AI,L.LLC)
 \end{tkzelements}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[purple](C,E)
-\tkzDrawSegment[purple](A,E)
-\tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D)
-\tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)
-\tkzDrawPoints(A,...,E)
-\tkzLabelPoints(A,B)
-\tkzLabelPoints[above](C,D,E)
-\tkzMarkSegments(A,C C,E)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawLine[purple](C,E)
+  \tkzDrawSegment[purple](A,E)
+  \tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D)
+  \tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)
+  \tkzDrawPoints(A,...,E)
+  \tkzLabelPoints(A,B)
+  \tkzLabelPoints[above](C,D,E)
+  \tkzMarkSegments(A,C C,E)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection alternate (end)
 
+\subsection{Method \Imeth{circle}{common tangent}: orthogonality} % (fold)
+\label{sub:common_tangent_orthogonality}
+For two circles  to be orthogonal, it is necessary and sufficient for a secant  passing through one of their common points to be seen from the other common point at a right angle.
+
+\begin{Verbatim}
+\begin{tkzelements}
+   z.A   = point : new ( 0  , 0  )
+   z.B   = point : new ( 4  , 2  )
+   L.AB = line : new ( z.A , z.B )
+   z.a   = point : new ( 1 , 2 )
+   C.Aa  = circle : new (z.A,z.a)
+   C.BC = C.Aa : orthogonal_from (z.B)
+   z.C,z.D = intersection (C.Aa,C.BC)
+   C.AC  = circle : new (z.A,z.C)
+   z.T,z.Tp = C.AC : common_tangent (C.BC)
+   L.TTp = line : new (z.T,z.Tp)
+   z.M   = C.AC : point (0.45)
+   L.MC  =line : new (z.M,z.C)
+   z.Mp  = intersection (L.MC, C.BC) 
+   L.mm = L.TTp : ll_from (z.C)
+   _,z.M = intersection (L.mm, C.AC)
+   z.Mp = intersection (L.mm, C.BC)
+\end{tkzelements}
+    
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircles(A,C B,C)
+   \tkzDrawSegments(M,M' A,C B,C A,B)
+   \tkzDrawSegments[gray](D,M D,M' T,T')
+   \tkzDrawPoints(A,B,C,D,M,M',T,T')
+   \tkzLabelPoints(A,B,D,M)
+   \tkzLabelPoints[above](C,M',T,T')
+   \tkzMarkRightAngles(M',D,M A,C,B)
+\end{tikzpicture}
+\end{Verbatim}
+
+\begin{tkzelements}
+z.A   = point : new ( 0  , 0  )
+z.B   = point : new ( 4  , 2  )
+L.AB = line : new ( z.A , z.B )
+z.a   = point : new ( 1 , 2 )
+C.Aa  = circle : new (z.A,z.a)
+C.BC = C.Aa : orthogonal_from (z.B)
+z.C,z.D = intersection (C.Aa,C.BC)
+C.AC  = circle : new (z.A,z.C)
+z.T,z.Tp = C.AC : common_tangent (C.BC)
+L.TTp = line : new (z.T,z.Tp)
+z.M   = C.AC : point (0.45)
+L.MC  =line : new (z.M,z.C)
+z.Mp  = intersection (L.MC, C.BC) 
+L.mm = L.TTp : ll_from (z.C)
+_,z.M = intersection (L.mm, C.AC)
+z.Mp = intersection (L.mm, C.BC)
+\end{tkzelements}
+  
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawCircles(A,C B,C)
+     \tkzDrawSegments(M,M' A,C B,C A,B)
+     \tkzDrawSegments[gray](D,M D,M' T,T')
+     \tkzDrawPoints(A,B,C,D,M,M',T,T')
+     \tkzLabelPoints(A,B,D,M)
+     \tkzLabelPoints[above](C,M',T,T')
+     \tkzMarkRightAngles(M',D,M A,C,B)
+  \end{tikzpicture}
+\end{center}
+% subsection common_tangent_orthogonality (end)
+
+
 \subsection{Apollonius circle} % (fold)
 \label{sub:apollonius_circle}
 
@@ -215,23 +483,26 @@
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.5\textwidth}
-  \hspace*{\fill}  
-  \begin{tikzpicture}[scale=.8]
-     \tkzGetNodes
-     \tkzDrawSegment[add=0 and 1](A,M)
-     \tkzDrawSegments[purple](M,C M,D)
-     \tkzDrawCircle[purple](O,C)
-     \tkzDrawSegments(A,B B,M D,B)
-     \tkzDrawPoints(A,B,M,C,D)
-     \tkzLabelPoints[below right](A,B,C,D)
-     \tkzLabelPoints[above](M)
-     \tkzFillAngles[opacity=.4,cyan!20](A,M,B)
-     \tkzFillAngles[opacity=.4,purple!20](B,M,E)
-     \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
-     \tkzMarkAngles[mark=|](A,M,C C,M,B)
-     \tkzMarkAngles[mark=||](B,M,D D,M,E)
-  \end{tikzpicture} 
-  \hspace*{\fill}
+
+  \begin{center}
+    \begin{tikzpicture}[scale=.8]
+       \tkzGetNodes
+       \tkzDrawSegment[add=0 and 1](A,M)
+       \tkzDrawSegments[purple](M,C M,D)
+       \tkzDrawCircle[purple](O,C)
+       \tkzDrawSegments(A,B B,M D,B)
+       \tkzDrawPoints(A,B,M,C,D)
+       \tkzLabelPoints[below right](A,B,C,D)
+       \tkzLabelPoints[above](M)
+       \tkzFillAngles[opacity=.4,cyan!20](A,M,B)
+       \tkzFillAngles[opacity=.4,purple!20](B,M,E)
+       \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
+       \tkzMarkAngles[mark=|](A,M,C C,M,B)
+       \tkzMarkAngles[mark=||](B,M,D D,M,E)
+    \end{tikzpicture} 
+  \end{center}
+
+
 \end{minipage}
 
 
@@ -319,20 +590,23 @@
    _,z.N = intersection (C.GA , C.OC)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,M)
-\tkzDrawCircles[purple](O,C G,A)
-\tkzDrawSegments[purple](M,D)
-\tkzDrawSegments(D,B O,G M,C)
-\tkzDrawSegments[red,dashed](M,N M,O M,G)
-\tkzDrawPoints(A,B,M,C,D,N,O,G)
-\tkzLabelPoints[below right](A,B,C,D,N,O,G)
-\tkzLabelPoints[above](M)
-\tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,M)
+  \tkzDrawCircles[purple](O,C G,A)
+  \tkzDrawSegments[purple](M,D)
+  \tkzDrawSegments(D,B O,G M,C)
+  \tkzDrawSegments[red,dashed](M,N M,O M,G)
+  \tkzDrawPoints(A,B,M,C,D,N,O,G)
+  \tkzLabelPoints[below right](A,B,C,D,N,O,G)
+  \tkzLabelPoints[above](M)
+  \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection apollonius_and_circle_circumscribed (end)
 
 \subsection{Apollonius circles in a triangle} % (fold)
@@ -414,20 +688,23 @@
 z.O3  = L.Bpt.mid
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles[blue!50!black](O1,C' O2,A' O3,B')
-\tkzDrawSegments[new](B,S C,T A,R)
-\tkzDrawPolygon(A,B,C)
-\tkzDrawPoints(A,B,C,A',B',C',O,I,R,S,T,O1,O2,O3)
-\tkzLabelPoints(A,B,C,A',B',C',O,I)
-\tkzLabelPoints(O1,O2,O3)
-\tkzDrawCircle[purple](O,A)
-\tkzDrawLine(O1,O2)
-\end{tikzpicture}
-\hspace*{\fill}
 
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles[blue!50!black](O1,C' O2,A' O3,B')
+  \tkzDrawSegments[new](B,S C,T A,R)
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawPoints(A,B,C,A',B',C',O,I,R,S,T,O1,O2,O3)
+  \tkzLabelPoints(A,B,C,A',B',C',O,I)
+  \tkzLabelPoints(O1,O2,O3)
+  \tkzDrawCircle[purple](O,A)
+  \tkzDrawLine(O1,O2)
+  \end{tikzpicture}
+\end{center}
+
+
+
 Same result using the function |T.ABC.ab : apollonius (k) |
 
 \begin{Verbatim}
@@ -493,15 +770,18 @@
     C     = circle: new  (z.O_2,z.A)
     z.C,z.D   = intersection (L ,C)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O_1,A O_2,A)
-\tkzDrawSegments[new](O_1,A E,F C,D)
-\tkzDrawSegments[purple](A,E A,F)
-\tkzDrawPoints(A,O_1,O_2,E,F,C,D)
-\tkzLabelPoints(A,O_1,O_2,E,F,C,D)
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(O_1,A O_2,A)
+  \tkzDrawSegments[new](O_1,A E,F C,D)
+  \tkzDrawSegments[purple](A,E A,F)
+  \tkzDrawPoints(A,O_1,O_2,E,F,C,D)
+  \tkzLabelPoints(A,O_1,O_2,E,F,C,D)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection archimedes (end)
 
@@ -615,31 +895,157 @@
    z.O_5    = T.CP1P2.circumcenter
 \end{tkzelements}
 
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawSemiCircles[teal](O_0,B)
+  \tkzDrawSemiCircles[teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
+  \tkzDrawCircle[fill=green!10](O_4,P_0)
+  \tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
+  \tkzDrawSegments(A,B O_0,P' B,P A,Q)
+  \tkzDrawSegments(P,B Q,O_2 P,O_1)
+  \tkzDrawSegments[purple](O_5,P_2 O_5,P_1 O_5,C)
+  \tkzDrawPoints(A,B,C,P_0,P_2,P_1,O_0,O_1,O_2,O_4,O_5,Q,P,P',S)
+  \tkzLabelPoints[below](A,B,C,O_0,O_1,O_2,P')
+  \tkzLabelPoints[above](Q,P)
+  \tkzLabelPoints[above right](P_0,P_2,P_1,O_5,O_4,S)
+  \begin{scope}[font=\scriptsize]
+    \tkzLabelCircle[above](O_1,C)(120){$(\beta)$}
+    \tkzLabelCircle[above](O_2,B)(70){$(\gamma)$}
+    \tkzLabelCircle[above](O_0,B)(110){$(\alpha)$}
+    \tkzLabelCircle[left](O_4,P_2)(60){$(\delta)$}
+    \tkzLabelCircle[left](O_5,C)(140){$(\epsilon)$}
+  \end{scope}
+  \end{tikzpicture}
+\end{center}
+
+% subsection bankoff_circle (end)
+
+\subsection{Symmedian property} % (fold)
+\label{sub:example_symmedian_property}
+
+$L$ is the symmedian point or lemoine point. $\dfrac{CL}{CLc} = \dfrac{a^2+b^2}{a^2+b^2+c^2}$
+
+\vspace{6pt}
+\begin{minipage}{.5\textwidth}
+  \begin{Verbatim}
+    \begin{tkzelements}
+       scale          = 1.5
+       z.A            = point :   new (1,2)
+       z.B            = point :   new (5,1)
+       z.C            = point :   new (3,5)
+       T.ABC          = triangle : new (z.A,z.B,z.C)
+       T.SY           = T.ABC : symmedian ()
+       z.La,z.Lb,z.Lc = get_points (T.SY) 
+       k              = (T.ABC.a*T.ABC.a +    
+                        T.ABC.b*T.ABC.b)/(T.ABC.a*T.ABC.a +     
+                        T.ABC.b*T.ABC.b+T.ABC.c*T.ABC.c)
+       L.SY            = line : new (z.C,z.Lc)
+       z.L             = L.SY : point (k)
+    \end{tkzelements}
+    \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPolygons(A,B,C)
+    \tkzDrawPoints(A,B,C,L,Lc)
+    \tkzDrawPoints[red](L)
+    \tkzDrawSegments[cyan](C,Lc)
+    \tkzLabelPoints(A,B,Lc)
+    \tkzLabelPoints[above](C)
+    \tkzLabelPoints[left](L)
+    \tkzLabelSegment(B,C){$a$}
+    \tkzLabelSegment(A,C){$b$}
+    \tkzLabelSegment(A,B){$ca$}
+    \end{tikzpicture}
+  \end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+  \begin{tkzelements}
+     scale          = 1.5
+     z.A            = point :   new (1,2)
+     z.B            = point :   new (5,1)
+     z.C            = point :   new (3,5)
+     T.ABC          = triangle : new (z.A,z.B,z.C)
+     T.SY           = T.ABC : symmedian ()
+     z.La,z.Lb,z.Lc = get_points (T.SY) 
+     k              = (T.ABC.a*T.ABC.a +    
+                      T.ABC.b*T.ABC.b)/(T.ABC.a*T.ABC.a +     
+                      T.ABC.b*T.ABC.b+T.ABC.c*T.ABC.c)
+     L.SY            = line : new (z.C,z.Lc)
+     z.L             = L.SY : point (k)
+  \end{tkzelements}
+  \begin{center}
+    \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPolygons(A,B,C)
+    \tkzDrawPoints(A,B,C,L,Lc)
+    \tkzDrawPoints[red](L)
+    \tkzDrawSegments[cyan](C,Lc)
+    \tkzLabelPoints(A,B,Lc)
+    \tkzLabelPoints[above](C)
+    \tkzLabelPoints[left](L)
+    \tkzLabelSegment(B,C){$a$}
+    \tkzLabelSegment(A,C){$b$}
+    \tkzLabelSegment(A,B){$ca$}
+    \end{tikzpicture}
+  \end{center}
+\end{minipage}
+
+
+% subsection example_symmedian_property (end)
+
+\subsection{Example: Cevian with orthocenter} % (fold)
+\label{sub:example_cevian_with_orthocenter}
+\begin{minipage}{.5\textwidth}
+\begin{Verbatim}
+\begin{tkzelements}
+  scale = 1.5
+  z.a = point:  new (1,2)
+  z.b = point:  new (5,1)
+  z.c = point:  new (3,5)
+  T = triangle: new (z.a,z.b,z.c)
+  z.i = T.orthocenter
+  T.cevian = T : cevian (z.i)
+  z.ta,z.tb,z.tc = get_points (T.cevian)
+  C.cev = T : cevian_circle (z.i)
+  z.w = C.cev.center
+\end{tkzelements}
 \begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSemiCircles[teal](O_0,B)
-\tkzDrawSemiCircles[teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
-\tkzDrawCircle[fill=green!10](O_4,P_0)
-\tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
-\tkzDrawSegments(A,B O_0,P' B,P A,Q)
-\tkzDrawSegments(P,B Q,O_2 P,O_1)
-\tkzDrawSegments[purple](O_5,P_2 O_5,P_1 O_5,C)
-\tkzDrawPoints(A,B,C,P_0,P_2,P_1,O_0,O_1,O_2,O_4,O_5,Q,P,P',S)
-\tkzLabelPoints[below](A,B,C,O_0,O_1,O_2,P')
-\tkzLabelPoints[above](Q,P)
-\tkzLabelPoints[above right](P_0,P_2,P_1,O_5,O_4,S)
-\begin{scope}[font=\scriptsize]
-  \tkzLabelCircle[above](O_1,C)(120){$(\beta)$}
-  \tkzLabelCircle[above](O_2,B)(70){$(\gamma)$}
-  \tkzLabelCircle[above](O_0,B)(110){$(\alpha)$}
-  \tkzLabelCircle[left](O_4,P_2)(60){$(\delta)$}
-  \tkzLabelCircle[left](O_5,C)(140){$(\epsilon)$}
-\end{scope}
+  \tkzGetNodes
+  \tkzDrawPolygons(a,b,c ta,tb,tc)
+  \tkzDrawSegments(a,ta b,tb c,tc)
+  \tkzDrawPoints(a,b,c,i,ta,tb,tc)
+  \tkzLabelPoints(a,b,c,i)
+  \tkzDrawCircles(w,ta)
 \end{tikzpicture}
-\hspace*{\fill}
-% subsection bankoff_circle (end)
+\end{Verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+scale =  1.5
+z.a = point:  new (1,2)
+z.b = point:  new (5,1)
+z.c = point:  new (3,5)
+T = triangle: new (z.a,z.b,z.c)
+z.i = T.orthocenter
+T.cevian = T : cevian (z.i)
+z.ta,z.tb,z.tc = get_points (T.cevian)
+C.cev = T : cevian_circle (z.i)
+z.w = C.cev.center
+\end{tkzelements}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(a,b,c ta,tb,tc)
+  \tkzDrawSegments(a,ta b,tb c,tc)
+  \tkzDrawPoints(a,b,c,i,ta,tb,tc)
+  \tkzLabelPoints(a,b,c,i)
+  \tkzDrawCircles(w,ta)
+  \end{tikzpicture}
+\end{center}
+\end{minipage}
 
+% subsection example_cevian_with_orthocenter (end)
+
 \subsection{Excircles} % (fold)
 \label{sub:excircles}
 
@@ -693,74 +1099,34 @@
    z.G    = intersection (la,lb)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints[new](J_a,J_b,J_c)
-\tkzClipBB
-\tkzDrawCircles[gray](J_a,T_a J_b,T_b J_c,T_c)
-\tkzDrawLines[add=1 and 1](A,B B,C C,A)
-\tkzDrawSegments[new](A,T_a B,T_b C,T_c)
-\tkzDrawSegments[new](J_a,T_a J_b,T_b J_c,T_c)
-\tkzDrawPolygon(A,B,C)
-\tkzDrawPolygon[new](T_a,T_b,T_c)
-\tkzDrawPoints(A,B,C,K)
-\tkzDrawPoints[new](T_a,T_b,T_c)
-\tkzLabelPoints[below left](A)
-\tkzLabelPoints[below](B)
-\tkzLabelPoints[above](C)
-\tkzLabelPoints[new,below left](T_b)
-\tkzLabelPoints[new,below right](T_c)
-\tkzLabelPoints[new,right=6pt](T_a)
-\tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints[new](J_a,J_b,J_c)
+  \tkzClipBB
+  \tkzDrawCircles[gray](J_a,T_a J_b,T_b J_c,T_c)
+  \tkzDrawLines[add=1 and 1](A,B B,C C,A)
+  \tkzDrawSegments[new](A,T_a B,T_b C,T_c)
+  \tkzDrawSegments[new](J_a,T_a J_b,T_b J_c,T_c)
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawPolygon[new](T_a,T_b,T_c)
+  \tkzDrawPoints(A,B,C,K)
+  \tkzDrawPoints[new](T_a,T_b,T_c)
+  \tkzLabelPoints[below left](A)
+  \tkzLabelPoints[below](B)
+  \tkzLabelPoints[above](C)
+  \tkzLabelPoints[new,below left](T_b)
+  \tkzLabelPoints[new,below right](T_c)
+  \tkzLabelPoints[new,right=6pt](T_a)
+  \tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection excircles (end)
 
 
-\subsection{Orthogonal circle through} % (fold)
-\label{sub:orthogonal_circle_through}
-\begin{minipage}{.5\textwidth}
-\begin{Verbatim}
-\begin{tkzelements}
-   z.O   = point: new (0,1)
-   z.A   = point: new (1,0)
-   z.z1  = point: new (-1.5,-1.5)
-   z.z2  = point: new (2.5,-1.25)
-   C.OA  = circle: new (z.O,z.A)
-   C     = C.OA: orthogonal_through (z.z1,z.z2)
-   z.c   = C.center
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircle(O,A)
-   \tkzDrawCircle[new](c,z1)
-   \tkzDrawPoints[new](O,A,z1,z2,c)
-   \tkzLabelPoints[right](O,A,z1,z2,c)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}{.5\textwidth}\begin{tkzelements}
-   z.O   = point: new (0,1)
-   z.A   = point: new (1,0)
-   z.z1  = point: new (-1.5,-1.5)
-   z.z2  = point: new (2.5,-1.25)
-   C.OA  = circle: new (z.O,z.A)
-   C = C.OA: orthogonal_through (z.z1,z.z2)
-   z.c   = C.center
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzDrawCircle[orange](c,z1)
-\tkzDrawPoints[orange](O,A,z1,z2,c)
-\tkzLabelPoints[right](O,A,z1,z2,c)
-\end{tikzpicture}
-\hspace*{\fill}
-\end{minipage}
-% subsection orthogonal_circle_through (end)
-
 \subsection{Divine ratio} % (fold)
 \label{sub:divine_ratio}
 
@@ -826,16 +1192,19 @@
 z.L = intersection (L.AR,L.BG)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(A,C,E,F A,B,G,H)
-\tkzDrawCircles(O_1,C O_2,B O_0,B)
-\tkzDrawSegments(H,C B,K A,L)
-\tkzDrawPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
-\tkzLabelPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(A,C,E,F A,B,G,H)
+  \tkzDrawCircles(O_1,C O_2,B O_0,B)
+  \tkzDrawSegments(H,C B,K A,L)
+  \tkzDrawPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
+  \tkzLabelPoints(A,B,C,K,E,F,G,H,O_0,O_1,O_2,R,S,T,L)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection divine_ratio (end)
 
 \subsection{Director circle} % (fold)
@@ -893,19 +1262,22 @@
 z.K      = L.K.pb
 \end{tkzelements}
 
-\hspace*{\fill} 
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(F1,F2,O)
-\tkzDrawCircles[teal](O,P)
-\tkzDrawPolygon(H,O,A,P)
-\tkzDrawEllipse[red](O,\tkzUseLua{a},\tkzUseLua{b},0)
-\tkzDrawSegments[orange](O,P O,L L,J L,K)
-\tkzDrawPoints(F1,F2,O,H,A,P,L,J,K)
-\tkzLabelPoints(F1,F2,O,H,A,P,L,J,K)
-\tkzLabelPoints[above](L)
-\tkzMarkRightAngles(A,P,H J,L,K)
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(F1,F2,O)
+  \tkzDrawCircles[teal](O,P)
+  \tkzDrawPolygon(H,O,A,P)
+  \tkzDrawEllipse[red](O,\tkzUseLua{a},\tkzUseLua{b},0)
+  \tkzDrawSegments[orange](O,P O,L L,J L,K)
+  \tkzDrawPoints(F1,F2,O,H,A,P,L,J,K)
+  \tkzLabelPoints(F1,F2,O,H,A,P,L,J,K)
+  \tkzLabelPoints[above](L)
+  \tkzMarkRightAngles(A,P,H J,L,K)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection director_circle (end)
 
@@ -961,18 +1333,21 @@
 z.O     = C.AB: antipode (z.B)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawArc[delta=5](O,B)(G)
-   \tkzDrawCircles(A,B B,A)
-   \tkzDrawSegments(A,E B,E O,I)
-   \tkzDrawSegments[purple](J,E A,G G,I K,G E,G)
-   \tkzMarkSegments[mark=s||](A,E B,E O,A)
-   \tkzDrawPoints(A,B,C,E,I,J,G,O,K)
-   \tkzLabelPoints(A,B,C,E,I,J,G,O,K)
-\end{tikzpicture}
-  \hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+     \tkzDrawArc[delta=5](O,B)(G)
+     \tkzDrawCircles(A,B B,A)
+     \tkzDrawSegments(A,E B,E O,I)
+     \tkzDrawSegments[purple](J,E A,G G,I K,G E,G)
+     \tkzMarkSegments[mark=s||](A,E B,E O,A)
+     \tkzDrawPoints(A,B,C,E,I,J,G,O,K)
+     \tkzLabelPoints(A,B,C,E,I,J,G,O,K)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection gold_division (end)
 
 \subsection{Ellipse} % (fold)
@@ -1014,15 +1389,17 @@
 slope    = math.deg(E.slope)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles[teal](C,A)
-\tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope})
-\tkzDrawPoints(C,A,B,b)
-\tkzLabelPoints(C,A,B)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles[teal](C,A)
+ \tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope})
+  \tkzDrawPoints(C,A,B,b)
+  \tkzLabelPoints(C,A,B)
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
  % subsection ellipse (end)
 
@@ -1060,12 +1437,15 @@
 z.CoV  = E : point (math.pi/2)
 \end{tkzelements}  
 
-\hspace*{\fill}
-\begin{tikzpicture}[gridded]
-\tkzGetNodes
-\tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-\tkzDrawPoints(C,V,CoV)
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}[gridded]
+  \tkzGetNodes
+  \tkzDrawEllipse[blue](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+  \tkzDrawPoints(C,V,CoV)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection ellipse_with_radii (end)
 
@@ -1122,15 +1502,18 @@
 z.G         = L.tb.pb
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-  \tkzGetNodes
-  \tkzDrawPoints(A,B,C,K,F,G,V,cV)
-  \tkzLabelPoints(A,B,C,K,F,G,V,cV)
+
+\begin{center}
+  \begin{tikzpicture}
+    \tkzGetNodes
+    \tkzDrawPoints(A,B,C,K,F,G,V,cV)
+    \tkzLabelPoints(A,B,C,K,F,G,V,cV)
   \tkzDrawEllipse[teal](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-  \tkzDrawLines(K,F K,G)
-\end{tikzpicture}
- \hspace*{\fill}
+    \tkzDrawLines(K,F K,G)
+  \end{tikzpicture}
+\end{center}
+
+
  \end{minipage}
 % subsection ellipse_with_foci (end)
 
@@ -1184,19 +1567,21 @@
 _,z.E     = intersection (L.Ow, C.OA)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawArc(J,X)(Y)
-\tkzDrawCircles(I,H O,A)
-\tkzDrawCircle[red](w,I)
-\tkzDrawLines(Y,C A,B X,C E,w E,B)
-\tkzDrawSegments[blue](J,C J,K I,H I,O w,B)
-\tkzDrawPoints(A,B,C,I,J,E,w,H,K,O)
-\tkzLabelPoints(A,B,C,J,I,w,H,K,E,O)
-\tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawArc(J,X)(Y)
+  \tkzDrawCircles(I,H O,A)
+  \tkzDrawCircle[red](w,I)
+  \tkzDrawLines(Y,C A,B X,C E,w E,B)
+  \tkzDrawSegments[blue](J,C J,K I,H I,O w,B)
+  \tkzDrawPoints(A,B,C,I,J,E,w,H,K,O)
+  \tkzLabelPoints(A,B,C,J,I,w,H,K,E,O)
+  \tkzMarkRightAngles[fill=gray!20,opacity=.4](C,H,I A,K,J)
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
 % subsection euler_relation (end)
 
@@ -1242,20 +1627,23 @@
 z.E      = z.C: symmetry (z.B)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[purple,add=0 and .5](B,C)
-\tkzDrawSegment[purple](A,D)
-\tkzDrawSegment[orange](C,D)
-\tkzFillAngles[purple!30,opacity=.2](D,C,A E,C,D)
-\tkzMarkAngles[mark=|](D,C,A E,C,D)
-\tkzDrawPoints(A,...,D)
-\tkzLabelPoints[above](C)
-\tkzLabelPoints(A,B,D)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawLine[purple,add=0 and .5](B,C)
+  \tkzDrawSegment[purple](A,D)
+  \tkzDrawSegment[orange](C,D)
+  \tkzFillAngles[purple!30,opacity=.2](D,C,A E,C,D)
+  \tkzMarkAngles[mark=|](D,C,A E,C,D)
+  \tkzDrawPoints(A,...,D)
+  \tkzLabelPoints[above](C)
+  \tkzLabelPoints(A,B,D)
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
 % subsection external_angle (end)
 
@@ -1304,19 +1692,22 @@
 L.AD    = line: new (z.A,z.D)
 z.E = intersection (L.LL,L.AD)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[purple](C,E)
-\tkzDrawSegment[purple](A,E)
-\tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D) 
-\tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)    
-\tkzDrawPoints(A,...,E) 
-\tkzLabelPoints(A,B)   
-\tkzLabelPoints[above](C,D,E) 
-\tkzMarkSegments(A,C C,E)   
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawLine[purple](C,E)
+  \tkzDrawSegment[purple](A,E)
+  \tkzFillAngles[purple!30,opacity=.4](B,A,C C,E,D) 
+  \tkzMarkAngles[mark=|](B,A,D D,A,C C,E,D)    
+  \tkzDrawPoints(A,...,E) 
+  \tkzLabelPoints(A,B)   
+  \tkzLabelPoints[above](C,D,E) 
+  \tkzMarkSegments(A,C C,E)   
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 %subsection internal_angle (end)
 
@@ -1392,18 +1783,20 @@
 z.F  = intersection (L.LH,C.IH) -- feuerbach
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}[rotate=90]
-\tkzGetNodes
-\tkzDrawLine(L,F)
-\tkzDrawCircle[red](N,A')
-\tkzDrawCircle[blue](I,H)
-\tkzDrawCircles[teal](O,A L,C')
-\tkzDrawSegments(M,L B,U Q,C C,X A,P B,Q)
-\tkzDrawPolygons(A,B,C A',B',C')
-\tkzDrawPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
-\tkzLabelPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
-\end{tikzpicture}   
+\begin{center}
+  \begin{tikzpicture}[rotate=90]
+  \tkzGetNodes
+  \tkzDrawLine(L,F)
+  \tkzDrawCircle[red](N,A')
+  \tkzDrawCircle[blue](I,H)
+  \tkzDrawCircles[teal](O,A L,C')
+  \tkzDrawSegments(M,L B,U Q,C C,X A,P B,Q)
+  \tkzDrawPolygons(A,B,C A',B',C')
+  \tkzDrawPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
+  \tkzLabelPoints(A,B,C,N,H,A',B',C',U,L,M,P,Q,F,I)
+  \end{tikzpicture}
+\end{center}
+   
 \end{minipage}
 % subsection nine_points (end)
 
@@ -1448,15 +1841,17 @@
 z.C = intersection (L.AK,L.AB)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,B X,K)
-\tkzDrawLine[teal](Y,K)
-\tkzDrawPoints(A,B,C,X,Y,M,K)
-\tkzDrawArc[delta=20](M,A)(K)
-\tkzLabelPoints(A,B,C)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(A,B X,K)
+  \tkzDrawLine[teal](Y,K)
+  \tkzDrawPoints(A,B,C,X,Y,M,K)
+  \tkzDrawArc[delta=20](M,A)(K)
+  \tkzLabelPoints(A,B,C)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 %subsection gold_ratio_with_segment (end)
 
@@ -1502,13 +1897,15 @@
 z.O_0    = L.AB.mid
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O_1,C O_2,B O_0,B O_1,x)
-\tkzDrawPoints(A,C,B,O_1,O_2,O_0,x)
-\tkzLabelPoints[below right](A,C,B)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(O_1,C O_2,B O_0,B O_1,x)
+  \tkzDrawPoints(A,C,B,O_1,O_2,O_0,x)
+  \tkzLabelPoints[below right](A,C,B)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection gold_arbelos (end)
 
@@ -1554,15 +1951,16 @@
  L.GF = line :new (z.G,z.F)
  z.C  = intersection (L.GF,L.AB)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
- \tkzGetNodes
- \tkzDrawLines(A,B A,G A,D A,G F,E G,F G,D)
- \tkzDrawPoints(A,B,G,E,F,C,D) 
- \tkzLabelPoints(A,B,G,E,F,C,D)
- \tkzMarkSegments(F,B B,E)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawLines(A,B A,G A,D A,G F,E G,F G,D)
+   \tkzDrawPoints(A,B,G,E,F,C,D) 
+   \tkzLabelPoints(A,B,G,E,F,C,D)
+   \tkzMarkSegments(F,B B,E)
+  \end{tikzpicture}
+\end{center}
 \end{minipage}
 % subsection harmonic_division_v1 (end)
 
@@ -1616,13 +2014,15 @@
 z.C    = intersection (L.GX,L.AB)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines(A,D A,E B,F D,F X,A X,B X,C)
-\tkzDrawPoints(A,...,G,X)
-\tkzLabelPoints(A,...,G,X)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines(A,D A,E B,F D,F X,A X,B X,C)
+  \tkzDrawPoints(A,...,G,X)
+  \tkzLabelPoints(A,...,G,X)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection harmonic_division_v2 (end)
 
@@ -1666,390 +2066,21 @@
 z.R   = intersection (L.BC,L.PX)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawLine[new](P,R)
-\tkzDrawLines(P,B A,C B,C)
-\tkzDrawPoints(P,Q,R,A,B,C)
-\tkzLabelPoints(A,B,C,P,Q,R)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawLine[new](P,R)
+  \tkzDrawLines(P,B A,C B,C)
+  \tkzDrawPoints(P,Q,R,A,B,C)
+  \tkzLabelPoints(A,B,C,P,Q,R)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection menelaus (end)
 
-\subsection{Radical axis v1} % (fold)
-\label{sub:radical_axis_v1}
 
-\begin{Verbatim}
-\begin{tkzelements}
-scale    = .75
-z.X      = point : new (0,0)
-z.B      = point : new (2,2)
-z.Y      = point : new (7,1)
-z.Ap     = point : new (8,-1)
-L.XY     = line :    new (z.X,z.Y)
-C.XB     = circle : new (z.X,z.B)
-C.YAp    = circle : new (z.Y,z.Ap)
-z.E,z.F  = get_points (C.XB : radical_axis (C.YAp))
-z.A      = C.XB : point (0.4)
-T.ABAp   = triangle: new (z.A,z.B,z.Ap)
-z.O      = T.ABAp.circumcenter
-C.OAp    = circle : new (z.O,z.Ap)
-_,z.Bp   = intersection (C.OAp,C.YAp)
-L.AB     = line : new (z.A,z.B)
-L.ApBp   = line : new (z.Ap,z.Bp)
-z.M      = intersection (L.AB,L.ApBp)
-z.H      = L.XY : projection (z.M)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(X,B Y,A')
-   \tkzDrawArc[dashed,delta=30](O,A')(A)
-   \tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
-   \tkzDrawLines[red](A,M A',M X,Y E,F)
-   \tkzDrawLines[red,add=1 and 3](M,H)
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-scale    = .75
-z.X      = point : new (0,0)
-z.B      = point : new (2,2)
-z.Y      = point : new (7,1)
-z.Ap     = point : new (8,-1)
-L.XY     = line :    new (z.X,z.Y)
-C.XB     = circle : new (z.X,z.B)
-C.YAp    = circle : new (z.Y,z.Ap)
-z.E,z.F  = get_points (C.XB : radical_axis (C.YAp))
-z.A      = C.XB : point (0.4)
-T.ABAp   = triangle: new (z.A,z.B,z.Ap)
-z.O      = T.ABAp.circumcenter
-C.OAp    = circle : new (z.O,z.Ap)
-_,z.Bp   = intersection (C.OAp,C.YAp)
-L.AB     = line : new (z.A,z.B)
-L.ApBp   = line : new (z.Ap,z.Bp)
-z.M      = intersection (L.AB,L.ApBp)
-z.H      = L.XY : projection (z.M)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(X,B Y,A')
-\tkzDrawArc[dashed,delta=30](O,A')(A)
-\tkzDrawPoints(A,B,A',B',M,H,X,Y,O,E,F)
-\tkzDrawLines[red](A,M A',M X,Y E,F)
-\tkzDrawLines[red,add=1 and 3](M,H)
-\end{tikzpicture}
-% subsection radical_axis_v1 (end)
-
-\subsection{Radical axis v2} % (fold)
-\label{sub:radical_axis_v2}
-
-\begin{Verbatim}
-\begin{tkzelements}
-scale       = 1.25
-z.O         = point : new (-1,0)
-z.Op        = point : new (4,-1)
-z.B         = point : new (0,2)
-z.D         = point : new (4,0)
-C.OB        = circle :    new (z.O,z.B)
-C.OpD       = circle :    new (z.Op,z.D)
-L.EF        = C.OB : radical_axis (C.OpD)
-z.E,z.F     = get_points (L.EF)
-z.M         = L.EF : point (.75)
-L.MT,L.MTp  = C.OB : tangent_from (z.M)
-_,z.T       = get_points (L.MT)
-_,z.Tp      = get_points (L.MTp)
-L.MK,L.MKp  = C.OpD : tangent_from (z.M)
-_,z.K       = get_points (L.MK)
-_,z.Kp      = get_points (L.MKp)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(O,B O',D)
-   \tkzDrawLine(E,F)
-   \tkzDrawLine[add=.5 and .5](O,O')
-   \tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
-   \tkzDrawCircle(M,T)
-   \tkzDrawPoints(O,O',T,M,T',K,K')
-   \tkzLabelPoints(O,O',T,T',K,K',M)
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-scale =1.25
-z.O     = point : new (-1,0)
-z.Op    = point : new (4,-1)
-z.B     = point : new (0,2)
-z.D     = point : new (4,0)
-C.OB    = circle :    new (z.O,z.B)
-C.OpD   = circle :    new (z.Op,z.D)
-L.EF    = C.OB : radical_axis (C.OpD)
-z.E,z.F = get_points (L.EF)
-z.M     = L.EF : point (.75)
-L.MT,L.MTp  = C.OB : tangent_from (z.M)
-_,z.T = get_points (L.MT)
-_,z.Tp = get_points (L.MTp)
-L.MK,L.MKp  = C.OpD : tangent_from (z.M)
-_,z.K = get_points (L.MK)
-_,z.Kp = get_points (L.MKp)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,B O',D)
-\tkzDrawLine(E,F)
-\tkzDrawLine[add=.5 and .5](O,O')
-\tkzDrawLines[add = 0 and .5](M,T M,T' M,K M,K')
-\tkzDrawCircle(M,T)
-\tkzDrawPoints(O,O',T,M,T',K,K')
-\tkzLabelPoints(O,O',T,T',K,K',M)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection radical_axis_v2 (end)
-
-\subsection{Radical axis v3} % (fold)
-\label{sub:radical_axis_v3}
-
-\begin{Verbatim}
-   \begin{tkzelements}
-   z.O      = point : new (0,0)
-   z.B      = point : new (4,0)
-   z.Op     = point : new (6,0)
-   C.OB     = circle :    new (z.O,z.B)
-   C.OpB    = circle :    new (z.Op,z.B)
-   L.EF     = C.OB : radical_axis (C.OpB)
-   z.E,z.F  = get_points(L.EF)
-   z.M      = L.EF : point (0.2)
-   L        = C.OB : tangent_from (z.M)
-   _,z.T    = get_points (L)
-   L        = C.OpB : tangent_from (z.M)
-   _,z.Tp   = get_points (L)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(O,B O',B)
-   \tkzDrawSegments(M,T M,T')
-   \tkzDrawSegments(E,F)
-   \tkzDrawLine[add=.5 and .5](O,O')
-   \tkzDrawPoints(O,B,O',E,F,M,T,T')
-   \tkzLabelPoints(O,O',B,E,F,T,T')
-   \tkzDrawArc(M,T')(T)
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-z.O      = point : new (0,0)
-z.B      = point : new (4,0)
-z.Op     = point : new (6,0)
-C.OB     = circle :    new (z.O,z.B)
-C.OpB    = circle :    new (z.Op,z.B)
-L.EF     = C.OB : radical_axis (C.OpB)
-z.E,z.F  = get_points(L.EF)
-z.M      = L.EF : point (0.2)
-L        = C.OB : tangent_from (z.M)
-_,z.T    = get_points (L)
-L        = C.OpB : tangent_from (z.M)
-_,z.Tp   = get_points (L)
-\end{tkzelements}
-\hspace*{\fill}  
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,B O',B)
-\tkzDrawSegments(M,T M,T')
-\tkzDrawSegments(E,F)
-\tkzDrawLine[add=.5 and .5](O,O')
-\tkzDrawPoints(O,B,O',E,F,M,T,T')
-\tkzLabelPoints(O,O',B,E,F,T,T')
-\tkzDrawArc(M,T')(T)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection radical_axis_v3 (end)
-
-\subsection{Radical axis v4} % (fold)
-\label{sub:radical_axis_v4}
-\begin{Verbatim}
-\begin{tkzelements}
-   z.O     = point : new (0,0)
-   z.B     = point : new (5,0)
-   z.Op    = point : new (3,0)
-   C.OB    = circle :    new (z.O,z.B)
-   C.OpB   = circle :    new (z.Op,z.B)
-   L.EF    = C.OB : radical_axis (C.OpB)
-   z.E,z.F = get_points(L.EF)
-   z.H     = L.EF.mid
-   z.M     = L.EF : point (.8)
-   _,L     = C.OB : tangent_from (z.M)
-   _,z.T   = get_points (L)
-   _,L     = C.OpB : tangent_from (z.M)
-   _,z.Tp  = get_points (L)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(O,B O',B)
-   \tkzDrawSegments(M,T M,T')
-   \tkzDrawSegments(E,F)
-   \tkzDrawLine[add=.3 and .3](O,H)
-   \tkzDrawPoints(O,O',B,E,H,M)
-   \tkzLabelPoints[below right](O,O',E,F,M,T,T')
-   \tkzDrawArc(M,B)(T)
-\end{tikzpicture}
-\end{Verbatim}
-
-
-\begin{tkzelements}
-   z.O     = point : new (0,0)
-   z.B     = point : new (5,0)
-   z.Op    = point : new (3,0)
-   C.OB    = circle :    new (z.O,z.B)
-   C.OpB   = circle :    new (z.Op,z.B)
-   L.EF    = C.OB : radical_axis (C.OpB)
-   z.E,z.F = get_points(L.EF)
-   z.H     = L.EF.mid
-   z.M     = L.EF : point (.8)
-   _,L     = C.OB : tangent_from (z.M)
-   _,z.T   = get_points (L)
-   _,L     = C.OpB : tangent_from (z.M)
-   _,z.Tp  = get_points (L)
-\end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(O,B O',B)
-   \tkzDrawSegments(M,T M,T')
-   \tkzDrawSegments(E,F)
-   \tkzDrawLine[add=.3 and .3](O,H)
-   \tkzDrawPoints(O,O',B,E,H,M)
-   \tkzLabelPoints[below right](O,O',E,F,M,T,T')
-   \tkzDrawArc(M,B)(T)
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection radical_axis_v4 (end)
-
-\subsection{Radical center} % (fold)
-\label{sub:radical_center}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
-   z.O      = point : new (0,0)
-   z.x      = point : new (1,0)
-   z.y      = point : new (4,0)
-   z.z      = point : new (2,0)
-   z.Op     = point : new (4,2)
-   z.P      = point : new (2,2.5)
-   C.Ox     = circle :    new (z.O,z.x)
-   C.Pz     = circle :    new (z.P,z.z)
-   C.Opy    = circle :    new (z.Op,z.y)
-   z.ap,z.a = intersection (C.Ox,C.Pz)
-   z.bp,z.b = intersection (C.Opy,C.Pz)
-   L.aap    = line : new (z.a,z.ap)
-   L.bbp    = line : new (z.b,z.bp)
-   z.X      = intersection (L.aap,L.bbp)
--- or z.X   = radical_center(C.Ox,C.Pz,C.Opy)
-   L.OOp    = line : new (z.O,z.Op)
-   z.H      = L.OOp : projection (z.X)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(O,a O',b P,z)
-   \tkzDrawLines[red](a,X b',X H,X O,O')
-   \tkzDrawPoints(O,O',P,a,a',b,b',X,H)
-   \tkzLabelPoints[below right](O,O',P,H)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-z.O         = point : new (0,0)
-z.x         = point : new (1,0)
-z.y         = point : new (4,0)
-z.z         = point : new (2,0)
-z.Op        = point : new (4,2)
-z.P         = point : new (2,2.5)
-C.Ox        = circle :    new (z.O,z.x)
-C.Pz        = circle :    new (z.P,z.z)
-C.Opy       = circle :    new (z.Op,z.y)
-z.ap,z.a    = intersection (C.Ox,C.Pz)
-z.bp,z.b    = intersection (C.Opy,C.Pz)
-L.aap       = line : new (z.a,z.ap)
-L.bbp       = line : new (z.b,z.bp)
-z.X         = intersection (L.aap,L.bbp)
-L.OOp       = line : new (z.O,z.Op)
-z.H         = L.OOp : projection (z.X)
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,a O',b P,z)
-\tkzDrawLines[red](a,X b',X H,X O,O')
-\tkzDrawPoints(O,O',P,a,a',b,b',X,H)
-\tkzLabelPoints[below right](O,O',P,H)
-\end{tikzpicture}
-\end{minipage}
-% subsection radical_center (end)
-
-\subsection{Radical circle} % (fold)
-\label{sub:radical_circle}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim} 
-\begin{tkzelements}
-   scale       = .5
-   z.A         = point: new (0,0)
-   z.B         = point: new (6,0)
-   z.C         = point: new (0.8,4)
-   T.ABC       = triangle : new ( z.A,z.B,z.C ) 
-   C.exa       = T.ABC : ex_circle ()
-   z.I_a,z.Xa  = get_points (C.exa)
-   C.exb       = T.ABC : ex_circle (1)
-   z.I_b,z.Xb  = get_points (C.exb)
-   C.exc       = T.ABC : ex_circle (2)
-   z.I_c,z.Xc  = get_points (C.exc)
-   C.ortho     = C.exa : radical_circle (C.exb,C.exc)
-   z.w,z.a     = get_points (C.ortho)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawPolygon(A,B,C)
-   \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
-   \tkzDrawCircles[red,thick](w,a)
-   \tkzDrawPoints(A,B,C)
-   \tkzLabelPoints(A,B,C)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-
-
-\begin{tkzelements}
-   scale       = .5
-   z.A         = point: new (0,0)
-   z.B         = point: new (6,0)
-   z.C         = point: new (0.8,4)
-   T.ABC       = triangle : new ( z.A,z.B,z.C ) 
-   C.exa       = T.ABC : ex_circle ()
-   z.I_a,z.Xa  = get_points (C.exa)
-   C.exb       = T.ABC : ex_circle (1)
-   z.I_b,z.Xb  = get_points (C.exb)
-   C.exc       = T.ABC : ex_circle (2)
-   z.I_c,z.Xc  = get_points (C.exc)
-   C.ortho     = C.exa : radical_circle (C.exb,C.exc)
-   z.w,z.a     = get_points (C.ortho)
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawPolygon(A,B,C)
-   \tkzDrawCircles(I_a,Xa I_b,Xb I_c,Xc)
-   \tkzDrawCircles[red,thick](w,a)
-   \tkzDrawPoints(A,B,C)
-   \tkzLabelPoints(A,B,C)
-\end{tikzpicture}
-\hspace*{\fill}
-
-% subsection radical_circle (end)
  
 \subsection{Euler ellipse} % (fold)
 \label{sub:hexagram}
@@ -2136,21 +2167,22 @@
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.6\textwidth}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon(A,B,C)
-\tkzDrawCircles[red](N,Ma O,A)
-\tkzDrawSegments(A,X B,Y C,Z B,Hb C,Hc X,O Y,O Z,O)
-\tkzDrawPolygon[red](U,V,W)
-\tkzLabelPoints[red](U,V,W)
-\tkzLabelPoints(A,B,C,X,Y,Z)
-\tkzDrawLine[blue](I,J)
-\tkzLabelPoints[blue,right](O,N,G,H,I,J)
-\tkzDrawPoints(I,J,U,V,W)
-\tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
-\tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawCircles[red](N,Ma O,A)
+  \tkzDrawSegments(A,X B,Y C,Z B,Hb C,Hc X,O Y,O Z,O)
+  \tkzDrawPolygon[red](U,V,W)
+  \tkzLabelPoints[red](U,V,W)
+  \tkzLabelPoints(A,B,C,X,Y,Z)
+  \tkzDrawLine[blue](I,J)
+  \tkzLabelPoints[blue,right](O,N,G,H,I,J)
+  \tkzDrawPoints(I,J,U,V,W)
+  \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
+  \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+  \end{tikzpicture}
+\end{center}
 \end{minipage}
 
 \begin{Verbatim}
@@ -2165,8 +2197,8 @@
    \tkzDrawLine[blue](I,J)
    \tkzLabelPoints[blue,right](O,N,G,H,I,J)
    \tkzDrawPoints(I,J,U,V,W)
-   \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)
-   \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
+   \tkzDrawPoints(A,B,C,N,G,H,O,X,Y,Z,Ma,Mb,Mc,Ha,Hb,Hc)  
+  \tkzDrawEllipse[blue](N,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{ang})
 \end{tikzpicture}
 \end{Verbatim}
 
@@ -2256,36 +2288,39 @@
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}{.6\textwidth}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles[teal](O_1,B)
-\tkzDrawSemiCircles[thin,teal](O_2,C O_3,B)
-\tkzDrawArc[purple,delta=0](D,V)(U)
-\tkzDrawCircle[new](O_7,C)
-\tkzDrawSegments[thin,purple](A,D D,B C,R C,S C,D U,V)
-\tkzDrawSegments[thin,red](O,D A,O O,B)
-\tkzDrawPoints(A,B,C,D,O_7) %,
-\tkzDrawPoints(O_1,O_2,O_3,U,V,R,S,W,O)
-\tkzDrawSegments[cyan](O_3,S O_2,R)
-\tkzDrawSegments[very thin](A,B)
-\tkzDrawSegments[cyan,thin](C,U U,D)
-\tkzMarkRightAngles[size=.2,fill=gray!40,opacity=.4](D,C,A A,D,B
- D,S,C D,W,V O_3,S,U O_2,R,U)
-\tkzFillAngles[cyan!40,opacity=.4](B,A,D A,D,O_1
- C,D,B D,C,R B,C,S A,R,O_2)
-\tkzFillAngles[green!40,opacity=.4](S,C,D W,R,D
- D,B,C R,C,A O_3,S,B)
-\tkzLabelPoints[below](C,O_2,O_3,O_1)
-\tkzLabelPoints[above](D)
-\tkzLabelPoints[below](O)
-\tkzLabelPoints[below left](A)
-\tkzLabelPoints[above left](R)
-\tkzLabelPoints[above right](S)
-\tkzLabelPoints[left](V)
-\tkzLabelPoints[below right](B,U,W,O_7)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles[teal](O_1,B)
+  \tkzDrawSemiCircles[thin,teal](O_2,C O_3,B)
+  \tkzDrawArc[purple,delta=0](D,V)(U)
+  \tkzDrawCircle[new](O_7,C)
+  \tkzDrawSegments[thin,purple](A,D D,B C,R C,S C,D U,V)
+  \tkzDrawSegments[thin,red](O,D A,O O,B)
+  \tkzDrawPoints(A,B,C,D,O_7) %,
+  \tkzDrawPoints(O_1,O_2,O_3,U,V,R,S,W,O)
+  \tkzDrawSegments[cyan](O_3,S O_2,R)
+  \tkzDrawSegments[very thin](A,B)
+  \tkzDrawSegments[cyan,thin](C,U U,D)
+  \tkzMarkRightAngles[size=.2,fill=gray!40,opacity=.4](D,C,A A,D,B
+   D,S,C D,W,V O_3,S,U O_2,R,U)
+  \tkzFillAngles[cyan!40,opacity=.4](B,A,D A,D,O_1
+   C,D,B D,C,R B,C,S A,R,O_2)
+  \tkzFillAngles[green!40,opacity=.4](S,C,D W,R,D
+   D,B,C R,C,A O_3,S,B)
+  \tkzLabelPoints[below](C,O_2,O_3,O_1)
+  \tkzLabelPoints[above](D)
+  \tkzLabelPoints[below](O)
+  \tkzLabelPoints[below left](A)
+  \tkzLabelPoints[above left](R)
+  \tkzLabelPoints[above right](S)
+  \tkzLabelPoints[left](V)
+  \tkzLabelPoints[below right](B,U,W,O_7)
+  \end{tikzpicture}
+\end{center}
+
+
 \end{minipage}
 
 \begin{Verbatim}
@@ -2379,25 +2414,27 @@
    z.xa,z.xb,z.xc    = C.ortho : inversion (z.Ea,z.Eb,z.Ec)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-   \tkzGetNodes
-\tkzDrawCircles[red](O,xa N,Ea)
-\tkzFillCircles[green!30!black,opacity=.3](O,xa)
-\tkzFillCircles[yellow!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
-\tkzFillCircles[teal!30!black,opacity=.3](S,a)
-\tkzFillCircles[green!30,opacity=.3](N,Ea)
-\tkzDrawPoints[red](Ea,Eb,Ec,xa,xb,xc,N)
-\tkzClipCircle(O,xa)
-\tkzDrawLines[add=3 and 3](A,B A,C B,C)
-\tkzDrawCircles(Ja,Ea Jb,Eb Jc,Ec)
-\tkzFillCircles[lightgray!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
-\tkzDrawCircles[teal](S,a)
-\tkzDrawPoints(A,B,C,O)
-\tkzDrawPoints[teal](S)
-\tkzLabelPoints(A,B,C,O,S,N)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+     \tkzGetNodes
+  \tkzDrawCircles[red](O,xa N,Ea)
+  \tkzFillCircles[green!30!black,opacity=.3](O,xa)
+  \tkzFillCircles[yellow!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
+  \tkzFillCircles[teal!30!black,opacity=.3](S,a)
+  \tkzFillCircles[green!30,opacity=.3](N,Ea)
+  \tkzDrawPoints[red](Ea,Eb,Ec,xa,xb,xc,N)
+  \tkzClipCircle(O,xa)
+  \tkzDrawLines[add=3 and 3](A,B A,C B,C)
+  \tkzDrawCircles(Ja,Ea Jb,Eb Jc,Ec)
+  \tkzFillCircles[lightgray!30,opacity=.7](Ja,Ea Jb,Eb Jc,Ec)
+  \tkzDrawCircles[teal](S,a)
+  \tkzDrawPoints(A,B,C,O)
+  \tkzDrawPoints[teal](S)
+  \tkzLabelPoints(A,B,C,O,S,N)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection apollonius_circle_v1_with_inversion (end)
 
 \subsection{Apollonius circle v2} % (fold)
@@ -2472,82 +2509,24 @@
 z.t    = intersection (L.ox,L.MaS) -- through
 \end{tkzelements}
 
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawLines[add=1 and 1](A,B A,C B,C)
-\tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
-\tkzClipCircle(o,t)
-\tkzDrawLines[red](o,L N,o Ma,t)
-\tkzDrawLines[cyan,add=4 and 4](Ma,N o,t)
-\tkzDrawPoints(A,B,C,Ma,Ja,Jb,Jc)
-\tkzDrawPoints[red](N,O,L,S,o,t)
-\tkzLabelPoints[right,font=\tiny](A,B,C,Ja,Jb,Jc,O,N,L,S,Ma,o)
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawLines[add=1 and 1](A,B A,C B,C)
+  \tkzDrawCircles(Ja,Xa Jb,Xb Jc,Xc o,t N,Ma) %
+  \tkzClipCircle(o,t)
+  \tkzDrawLines[red](o,L N,o Ma,t)
+  \tkzDrawLines[cyan,add=4 and 4](Ma,N o,t)
+  \tkzDrawPoints(A,B,C,Ma,Ja,Jb,Jc)
+  \tkzDrawPoints[red](N,O,L,S,o,t)
+  \tkzLabelPoints[right,font=\tiny](A,B,C,Ja,Jb,Jc,O,N,L,S,Ma,o)
+  \end{tikzpicture}
+\end{center}
 % subsection apollonius_circle_v2 (end)
 
 
-\subsection{Orthogonal circles v1} % (fold)
-\label{sub:orthogonal_circles_v1}
 
-\begin{Verbatim}
-\begin{tkzelements}
-   scale    = .6
-   z.C_1    = point: new (0,0)
-   z.C_2    = point: new (8,0)
-   z.A      = point: new (5,0)
-   C        = circle: new (z.C_1,z.A)
-   z.S,z.T  = get_points (C: orthogonal_from (z.C_2))
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircles(C_1,T C_2,T)
-   \tkzDrawSegments(C_1,T C_2,T)
-   \tkzDrawLine(C_1,C_2)
-   \tkzMarkRightAngle[fill=teal,%
-  opacity=.2,size=1](C_1,T,C_2)
-   \tkzDrawPoints(C_1,C_2,T)
-   \tkzLabelPoints(C_1,C_2)
-   \tkzLabelPoints[above](T)
-   \tkzLabelSegment[left](C_1,T){r}
-   \tkzLabelSegments[right](C_2,T){$\gamma$}
-   \tkzLabelSegment[below](C_1,C_2){d}
-   \tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
-   \tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
-\end{tikzpicture}
-\end{Verbatim}
-
-\begin{tkzelements}
-scale    = .6
-z.C_1    = point: new (0,0)
-z.C_2    = point: new (8,0)
-z.A  = point: new (5,0)
-C    = circle: new (z.C_1,z.A)
-z.S,z.T  = get_points (C: orthogonal_from (z.C_2))
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(C_1,T C_2,T)
-\tkzDrawSegments(C_1,T C_2,T)
-\tkzDrawLine(C_1,C_2)
-\tkzMarkRightAngle[fill=teal,opacity=.2,size=.5](C_1,T,C_2)
-\tkzDrawPoints(C_1,C_2,T)
-\tkzLabelPoints(C_1,C_2)
-\tkzLabelPoints[above](T)
-\tkzLabelSegment[left](C_1,T){r}
-\tkzLabelSegments[right](C_2,T){$\gamma$}
-\tkzLabelSegment[below](C_1,C_2){d}
-\tkzLabelCircle[left=10pt](C_1,T)(180){Circle 1}
-\tkzLabelCircle[right=10pt](C_2,T)(180){Circle 2}
-\end{tikzpicture}
-\hspace*{\fill}
-% subsection orthogonal_circles_v1 (end)
-
-\subsection{Orthogonal circles v2} % (fold)
+\subsection{Orthogonal circles} % (fold)
 \label{sub:orthogonal_circles_v2}
 
 \begin{Verbatim}
@@ -2602,24 +2581,26 @@
 z.M      = L.OOp.mid
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle[red](O,P)
-\tkzDrawCircle[purple](O',z1)
-\tkzDrawCircle[cyan](M,T)
-\tkzDrawSegments(O',T O,T' O',T')
-\tkzDrawSegment[purple](O',T)
-\tkzDrawSegments[red](O,T O,O')
-\tkzDrawPoints(O,O',T,T',M)
-\tkzMarkRightAngle[fill=gray!10](O',T,O)
-\tkzLabelPoint[below](O){$O$}
-\tkzLabelPoint[above](T){$T$}
-\tkzLabelPoint[above](M){$M$}
-\tkzLabelPoint[below](T'){$T'$}
-\tkzLabelPoint[above left](O'){$O'$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle[red](O,P)
+  \tkzDrawCircle[purple](O',z1)
+  \tkzDrawCircle[cyan](M,T)
+  \tkzDrawSegments(O',T O,T' O',T')
+  \tkzDrawSegment[purple](O',T)
+  \tkzDrawSegments[red](O,T O,O')
+  \tkzDrawPoints(O,O',T,T',M)
+  \tkzMarkRightAngle[fill=gray!10](O',T,O)
+  \tkzLabelPoint[below](O){$O$}
+  \tkzLabelPoint[above](T){$T$}
+  \tkzLabelPoint[above](M){$M$}
+  \tkzLabelPoint[below](T'){$T'$}
+  \tkzLabelPoint[above left](O'){$O'$}
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection orthogonal_circles_v2 (end)
 %
 \subsection{Orthogonal circle to two circles} % (fold)
@@ -2674,20 +2655,23 @@
 z.Kp = L.Kp.pb
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(O,B O',D)
-\tkzDrawLine[cyan](E,F)
-\tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
-\tkzDrawSegments[cyan](M,T M,T' M,K M,K')
-\tkzDrawCircle(M,T)
-\tkzDrawPoints(O,O',T,M,T',K,K')
-\tkzLabelPoints(O,O',T,T',M,K,K')
-\end{tikzpicture}
-\hspace*{\fill}
-% \subsection{Orthogonal to two circles} % (fold)
 
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(O,B O',D)
+  \tkzDrawLine[cyan](E,F)
+  \tkzDrawLines[add=.5 and .5,orange](O,O' O,T O,T')
+  \tkzDrawSegments[cyan](M,T M,T' M,K M,K')
+  \tkzDrawCircle(M,T)
+  \tkzDrawPoints(O,O',T,M,T',K,K')
+  \tkzLabelPoints(O,O',T,T',M,K,K')
+  \end{tikzpicture}
+\end{center}
+
+
+% subsection Orthogonal to two circles (fold)
+
 \subsection{Midcircles} % (fold)
 \label{sub:midcircles}
 
@@ -2738,37 +2722,40 @@
 z.H_4,z.F,z.E,z.H_0 = L.AB : projection (z.O_4,z.G,z.H,z.P_0)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle[thin,fill=green!10](O_4,P_0)
-\tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
-\tkzDrawSemiCircles[teal](O_0,B)
-\tkzDrawSemiCircles[thin,teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
-\tkzDrawSemiCircles[color = orange](M_2,B)
-\tkzDrawSemiCircles[color = orange](M_1,A')
-\tkzDrawArc[purple,delta=0](M_0,P_0)(C)
-\tkzDrawSegments[very thin](A,B A,P B,Q)
-\tkzDrawSegments[color=cyan](O_0,P_0 B,J G,J G,O_0 H,O_2)
-\tkzDrawSegments[ultra thin,purple](M_1,P_0 M_2,P_0 M_1,M_0 M_0,P_1 M_0,P_0 M_1,J)
-\tkzDrawPoints(A,B,C,P_0,P_2,P_1,M_0,M_1,M_2,J,P,Q,S)
-\tkzDrawPoints(O_0,O_1,O_2,O_4,O_5,G,H)
-\tkzMarkRightAngle[size=.2,fill=gray!20,opacity=.4](O_0,P_0,M_0)
-\tkzLabelPoints[below](A,B,C,M_0,M_1,M_2,O_1,O_2,O_0)
-\tkzLabelPoints[above](P_0,O_5,O_4)
-\tkzLabelPoints[above](P_1,J)
-\tkzLabelPoints[above](P_2,P,Q,S)
-\tkzLabelPoints[above right](H,E)
-\tkzLabelPoints[above left](F,G)
-\tkzLabelPoints[below right](H_0)
-\tkzLabelCircle[below=4pt,font=\scriptsize](O_1,C)(80){$(\beta)$}
-\tkzLabelCircle[below=4pt,font=\scriptsize](O_2,B)(80){$(\gamma)$}
-\tkzLabelCircle[below=4pt,font=\scriptsize](O_0,B)(110){$(\alpha)$}
-\tkzLabelCircle[left,font=\scriptsize](O_4,P_2)(60){$(\delta)$}
-\tkzLabelCircle[above left,font=\scriptsize](O_5,C)(40){$(\epsilon)$}
-\end{tikzpicture}
-\hspace*{\fill}
 
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle[thin,fill=green!10](O_4,P_0)
+  \tkzDrawCircle[purple,fill=purple!10,opacity=.5](O_5,C)
+  \tkzDrawSemiCircles[teal](O_0,B)
+  \tkzDrawSemiCircles[thin,teal,fill=teal!20,opacity=.5](O_1,C O_2,B)
+  \tkzDrawSemiCircles[color = orange](M_2,B)
+  \tkzDrawSemiCircles[color = orange](M_1,A')
+  \tkzDrawArc[purple,delta=0](M_0,P_0)(C)
+  \tkzDrawSegments[very thin](A,B A,P B,Q)
+  \tkzDrawSegments[color=cyan](O_0,P_0 B,J G,J G,O_0 H,O_2)
+  \tkzDrawSegments[ultra thin,purple](M_1,P_0 M_2,P_0 M_1,M_0 M_0,P_1 M_0,P_0 M_1,J)
+  \tkzDrawPoints(A,B,C,P_0,P_2,P_1,M_0,M_1,M_2,J,P,Q,S)
+  \tkzDrawPoints(O_0,O_1,O_2,O_4,O_5,G,H)
+  \tkzMarkRightAngle[size=.2,fill=gray!20,opacity=.4](O_0,P_0,M_0)
+  \tkzLabelPoints[below](A,B,C,M_0,M_1,M_2,O_1,O_2,O_0)
+  \tkzLabelPoints[above](P_0,O_5,O_4)
+  \tkzLabelPoints[above](P_1,J)
+  \tkzLabelPoints[above](P_2,P,Q,S)
+  \tkzLabelPoints[above right](H,E)
+  \tkzLabelPoints[above left](F,G)
+  \tkzLabelPoints[below right](H_0)
+  \tkzLabelCircle[below=4pt,font=\scriptsize](O_1,C)(80){$(\beta)$}
+  \tkzLabelCircle[below=4pt,font=\scriptsize](O_2,B)(80){$(\gamma)$}
+  \tkzLabelCircle[below=4pt,font=\scriptsize](O_0,B)(110){$(\alpha)$}
+  \tkzLabelCircle[left,font=\scriptsize](O_4,P_2)(60){$(\delta)$}
+  \tkzLabelCircle[above left,font=\scriptsize](O_5,C)(40){$(\epsilon)$}
+  \end{tikzpicture}
+\end{center}
+
+
+
 \begin{Verbatim}
 \begin{tkzelements}
    z.A      = point: new (0 , 0)
@@ -2900,18 +2887,20 @@
 z.O     = L.BA.mid
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(C_0,A C_1,A C_3,A C_5,A)
-\tkzDrawCircles[thick,color=red](M_0,x M_1,x')
-\tkzDrawCircles[thick,color=blue](O,A)
-\tkzDrawLines(C_0,C_1 B,M_1)
-\tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,x,y)
-\tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,x,y)
-\tkzLabelLine[pos=1.25,right]( M_0,M_1){$(\Delta)$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(C_0,A C_1,A C_3,A C_5,A)
+  \tkzDrawCircles[thick,color=red](M_0,x M_1,x')
+  \tkzDrawCircles[thick,color=blue](O,A)
+  \tkzDrawLines(C_0,C_1 B,M_1)
+  \tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,x,y)
+  \tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,x,y)
+  \tkzLabelLine[pos=1.25,right]( M_0,M_1){$(\Delta)$}
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection pencil_v1 (end)
 
 \subsection{Pencil v2} % (fold)
@@ -2967,124 +2956,21 @@
    z.t         = C.orth2.through
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(C_0,A C_1,B)
-\tkzDrawCircles[thick,color=red](M_0,u M_1,v M_2,t)
-\tkzDrawLines[add= .75 and .75](C_0,C_1 M_0,M_1)
-\tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,M_2)
-\tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,M_2)
-\tkzLabelLine[pos=2,right]( M_0,M_1){$(\Delta)$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(C_0,A C_1,B)
+  \tkzDrawCircles[thick,color=red](M_0,u M_1,v M_2,t)
+  \tkzDrawLines[add= .75 and .75](C_0,C_1 M_0,M_1)
+  \tkzDrawPoints(A,B,C_0,C_1,M_0,M_1,M_2)
+  \tkzLabelPoints[below right](A,B,C_0,C_1,M_0,M_1,M_2)
+  \tkzLabelLine[pos=2,right]( M_0,M_1){$(\Delta)$}
+  \end{tikzpicture}
+\end{center}
+
 %subsection pencil_v2 (end)
 
-\subsection{Power v1} % (fold)
-\label{sub:power_v1}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
-   z.O     = point : new (0,0)
-   z.A     = point : new (2,-2)
-   z.M     = point : new (-6,0)
-   L.AM    = line : new (z.A,z.M)
-   C.OA    = circle :    new (z.O,z.A)
-   z.Ap    = C.OA : antipode (z.A)
-   z.B     = intersection (L.AM, C.OA)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircle(O,A)
-   \tkzMarkRightAngle[fill=gray!10](A',B,M)
-   \tkzDrawSegments(M,O A,A' A',B)
-   \tkzDrawPoints(O,A,A',M,B)
-   \tkzLabelPoints(O,A,A',M,B)
-   \tkzDrawSegments[-Triangle](M,A M,A')
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-scale = 1
-z.O   = point : new (0,0)
-z.A   = point : new (2,-2)
-z.M   = point : new (-6,0)
-L.AM  = line : new (z.A,z.M)
-C.OA  = circle : new (z.O,z.A)
-z.Ap  = C.OA : antipode (z.A)
-z.B   = intersection (L.AM, C.OA)
-\end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzMarkRightAngle[fill=gray!10](A',B,M)
-\tkzDrawSegments(M,O A,A' A',B)
-\tkzDrawPoints(O,A,A',M,B)
-\tkzLabelPoints(O,A,A',M,B)
-\tkzDrawSegments[-Triangle](M,A M,A')
-\end{tikzpicture}
-\end{minipage}
-% subsection power_v1 (end)
-
-\subsection{Power v2} % (fold)
-\label{sub:power_v2}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
-   z.O     = point : new (0,0)
-   z.A     = point : new (2,2)
-   z.M     = point : new (-1.5,0)
-   L.AM    = line : new (z.A,z.M)
-   C.OA    = circle :    new (z.O,z.A)
-   z.Ap    = C.OA : antipode (z.A)
-   _,z.B   = intersection (L.AM, C.OA)
-   z.m     = z.M : north(1)
-   L.mM    = line : new (z.m,z.M)
-   z.U,z.V = intersection (L.mM,C.OA)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawCircle(O,A)
-   \tkzMarkRightAngle[fill=gray!10](A',B,M)
-   \tkzDrawSegments(M,O A,A' A',B A,B U,V)
-   \tkzDrawPoints(O,A,A',M,B,U,V,m)
-   \tkzLabelPoints(O,A,M,U,V,m)
-   \tkzLabelPoints[below left](A',B)
-   \tkzDrawSegments(M,A M,A')
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-scale = 1
-z.O     = point : new (0,0)
-z.A     = point : new (2,2)
-z.M     = point : new (-1.5,0)
-L.AM    = line : new (z.A,z.M)
-C.OA    = circle :    new (z.O,z.A)
-z.Ap    = C.OA : antipode (z.A)
-_,z.B   = intersection (L.AM, C.OA)
-z.m     = z.M : north(1)
-L.mM    = line : new (z.m,z.M)
-z.U,z.V = intersection (L.mM,C.OA)
-\end{tkzelements}
-
-\hspace*{\fill}\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzMarkRightAngle[fill=gray!10](A',B,M)
-\tkzDrawSegments(M,O A,A' A',B A,B U,V)
-\tkzDrawPoints(O,A,A',M,B,U,V,m)
-\tkzLabelPoints(O,A,M,U,V,m)
-\tkzLabelPoints[below left](A',B)
-\tkzDrawSegments(M,A M,A')
-\end{tikzpicture}
-\end{minipage}
-% subsection power_v2 (end)
-
 \subsection{Reim v1} % (fold)
 \label{sub:reim_v1}
 \begin{Verbatim}
@@ -3137,22 +3023,25 @@
    z.O     = intersection (L.EC,L.FD)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,E B,H)
-\tkzDrawSegments(E,D C,F)
-\tkzDrawLines(E,O F,O)
-\tkzDrawLines[red](E,F H,G)
-\tkzDrawPoints(A,...,H,O)
-\tkzLabelPoints(A,B,D,F,G,O)
-\tkzLabelPoints[above](E,C,H)
-\tkzMarkAngles[size=.5](E,C,F E,D,F)
-\tkzFillAngles[green!40,opacity=.4,size=.5](E,C,F E,D,F)
-\tkzMarkAngles[size=.5](F,C,H G,D,E)
-\tkzFillAngles[red!40,opacity=.4,size=.5](F,C,H G,D,E)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(A,E B,H)
+  \tkzDrawSegments(E,D C,F)
+  \tkzDrawLines(E,O F,O)
+  \tkzDrawLines[red](E,F H,G)
+  \tkzDrawPoints(A,...,H,O)
+  \tkzLabelPoints(A,B,D,F,G,O)
+  \tkzLabelPoints[above](E,C,H)
+  \tkzMarkAngles[size=.5](E,C,F E,D,F)
+  \tkzFillAngles[green!40,opacity=.4,size=.5](E,C,F E,D,F)
+  \tkzMarkAngles[size=.5](F,C,H G,D,E)
+  \tkzFillAngles[red!40,opacity=.4,size=.5](F,C,H G,D,E)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection reim_v1 (end)
 
 \subsection{Reim v2} % (fold)
@@ -3200,19 +3089,22 @@
 z.n,z.np    = get_points (C.BC: tangent_at (z.N))
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,C B,C)
-\tkzDrawLines[new,add=1 and 1](M,m N,n C,c)
-\tkzDrawSegment(M,N)
-\tkzDrawPoints(A,B,C,M,N)
-\tkzLabelPoints[below right](A,B,C,M,N)
-\tkzFillAngles[blue!30,opacity=.3](m',M,C N,C,c' M,C,c n',N,C)
-\tkzLabelCircle[below=4pt,font=\scriptsize](A,C)(90){$(\alpha)$}
-\tkzLabelCircle[left=4pt,font=\scriptsize](B,C)(-90){$(\beta)$}
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(A,C B,C)
+  \tkzDrawLines[new,add=1 and 1](M,m N,n C,c)
+  \tkzDrawSegment(M,N)
+  \tkzDrawPoints(A,B,C,M,N)
+  \tkzLabelPoints[below right](A,B,C,M,N)
+  \tkzFillAngles[blue!30,opacity=.3](m',M,C N,C,c' M,C,c n',N,C)
+  \tkzLabelCircle[below=4pt,font=\scriptsize](A,C)(90){$(\alpha)$}
+  \tkzLabelCircle[left=4pt,font=\scriptsize](B,C)(-90){$(\beta)$}
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection reim_v2 (end)
 
 \subsection{Reim v3} % (fold)
@@ -3282,21 +3174,23 @@
    z.D     = intersection (L.KO,C.zO)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawSegments(K,D D,C)
-\tkzDrawPolygon[teal](A,B,C)
-\tkzDrawCircles[orange](x,A y,B z,C)
-\tkzDrawPoints[fill=white](A,B,C,I,J,K,D)
-\tkzLabelPoints[below](A,B,J,K,O)
-\tkzLabelPoints[above](C,D,I)
-\tkzDrawPoints[fill=black](O)
-\tkzLabelCircle[below=4pt,font=\scriptsize](x,A)(20){$(\alpha)$}
-\tkzLabelCircle[left=4pt,font=\scriptsize](y,B)(60){$(\beta)$}
-\tkzLabelCircle[below=4pt,font=\scriptsize](z,C)(60){$(\gamma)$}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawSegments(K,D D,C)
+  \tkzDrawPolygon[teal](A,B,C)
+  \tkzDrawCircles[orange](x,A y,B z,C)
+  \tkzDrawPoints[fill=white](A,B,C,I,J,K,D)
+  \tkzLabelPoints[below](A,B,J,K,O)
+  \tkzLabelPoints[above](C,D,I)
+  \tkzDrawPoints[fill=black](O)
+  \tkzLabelCircle[below=4pt,font=\scriptsize](x,A)(20){$(\alpha)$}
+  \tkzLabelCircle[left=4pt,font=\scriptsize](y,B)(60){$(\beta)$}
+  \tkzLabelCircle[below=4pt,font=\scriptsize](z,C)(60){$(\gamma)$}
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection reim_v3 (end)
 
 \subsection{Tangent and circle} % (fold)
@@ -3339,14 +3233,17 @@
 z.j     = L.Tj.pb
 z.k,z.l = get_points (C.AB:  tangent_at (z.B))
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(A,B M,A)
-\tkzDrawPoints(A,B,E,i,j,M,S)
-\tkzDrawLines(E,i E,j k,l)
-\tkzLabelPoints[right,font=\small](A,B,E,S,M)
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(A,B M,A)
+  \tkzDrawPoints(A,B,E,i,j,M,S)
+  \tkzDrawLines(E,i E,j k,l)
+  \tkzLabelPoints[right,font=\small](A,B,E,S,M)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection tangent_and_circle (end)
 
@@ -3377,13 +3274,16 @@
 z.E  = point:  new (-3,2)
 z.C,z.D  = z.E : homothety(2,z.A,z.B)
 \end{tkzelements}
-\hspace*{\fill}\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(A,B,C,E,D)
-\tkzLabelPoints(A,B,C,E)
-\tkzDrawCircles(A,B C,D)
-\tkzDrawLines(E,C E,D)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(A,B,C,E,D)
+  \tkzLabelPoints(A,B,C,E)
+  \tkzDrawCircles(A,B C,D)
+  \tkzDrawLines(E,C E,D)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection homothety (end)
 
@@ -3436,18 +3336,21 @@
 z.H     = L.AB: projection (z.O)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircle(O,A)
-\tkzDrawPolygon(A,B,C)
-\tkzDrawSegments[new](A,O B,O O,H A,D D,B)
-\tkzDrawLine(b1,b2)
-\tkzDrawPoints(A,B,C,D,H,O)
-\tkzFillAngles[green!20,opacity=.3](H,O,B A,C,B  A,B,b1)
-\tkzFillAngles[teal!20,opacity=.3](A,D,B b2,B,A)
-\tkzLabelPoints(A,B,C,D,H,O)
-\end{tikzpicture}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircle(O,A)
+  \tkzDrawPolygon(A,B,C)
+  \tkzDrawSegments[new](A,O B,O O,H A,D D,B)
+  \tkzDrawLine(b1,b2)
+  \tkzDrawPoints(A,B,C,D,H,O)
+  \tkzFillAngles[green!20,opacity=.3](H,O,B A,C,B  A,B,b1)
+  \tkzFillAngles[teal!20,opacity=.3](A,D,B b2,B,A)
+  \tkzLabelPoints(A,B,C,D,H,O)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection tangent_and_chord (end)
 
@@ -3541,26 +3444,26 @@
 \end{Verbatim}
 \end{minipage}
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\hspace*{\fill}
-\begin{tikzpicture}[scale=.75]
-\tkzGetNodes
-\tkzDrawCircles(O,B)
-\tkzDrawCircles[cyan](P,B)
-\tkzDrawCircles[red](w,E)
-\tkzDrawCircles[new](x,F)
-\tkzDrawSegments(A,G E,G C,G)
-\tkzDrawPolygons[new](A,E,C A',E',C')
-\tkzDrawPoints(A,...,G,A',E',C',O,P)
-\begin{scope}[font=\scriptsize]
-   \tkzLabelPoints(A,...,F)
-   \tkzLabelPoints[above left](G,A',E',C')
-   \tkzLabelCircle[left](O,B)(30){$(\beta)$}
-   \tkzLabelCircle[below](P,A)(40){$(\gamma)$}
-   \tkzLabelCircle[right](w,C)(90){$(\alpha)$}
-   \tkzLabelCircle[left](x,B)(-230){$((\delta))$}
-\end{scope}
-\end{tikzpicture}
-\hspace*{\fill}
+\begin{center}
+  \begin{tikzpicture}[scale=.75]
+  \tkzGetNodes
+  \tkzDrawCircles(O,B)
+  \tkzDrawCircles[cyan](P,B)
+  \tkzDrawCircles[red](w,E)
+  \tkzDrawCircles[new](x,F)
+  \tkzDrawSegments(A,G E,G C,G)
+  \tkzDrawPolygons[new](A,E,C A',E',C')
+  \tkzDrawPoints(A,...,G,A',E',C',O,P)
+  \begin{scope}[font=\scriptsize]
+     \tkzLabelPoints(A,...,F)
+     \tkzLabelPoints[above left](G,A',E',C')
+     \tkzLabelCircle[left](O,B)(30){$(\beta)$}
+     \tkzLabelCircle[below](P,A)(40){$(\gamma)$}
+     \tkzLabelCircle[right](w,C)(90){$(\alpha)$}
+     \tkzLabelCircle[left](x,B)(-230){$((\delta))$}
+  \end{scope}
+  \end{tikzpicture}
+\end{center}
 \end{minipage}
 % subsection three_chords (end)
 
@@ -3620,19 +3523,20 @@
 L.TC   = C.xE : tangent_at (z.C)
 z.I    = intersection (L.TA,L.TC)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawCircles(w,E)
-\tkzDrawCircles[cyan](x,E)
-\tkzDrawCircles[red](G,A)
-\tkzDrawLines(A,I C,I F,I)
-\tkzDrawPoints(A,C,E,F)
-\tkzLabelPoints[right](A)
-\tkzLabelPoints[above right](E,F)
-\tkzLabelPoints[below](C)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawCircles(w,E)
+  \tkzDrawCircles[cyan](x,E)
+  \tkzDrawCircles[red](G,A)
+  \tkzDrawLines(A,I C,I F,I)
+  \tkzDrawPoints(A,C,E,F)
+  \tkzLabelPoints[right](A)
+  \tkzLabelPoints[above right](E,F)
+  \tkzLabelPoints[below](C)
+  \end{tikzpicture}
+\end{center}
 \end{minipage}
 % subsection three_tangents (end)
 
@@ -3665,15 +3569,16 @@
 z.C =  z.A: rotation (math.pi/3,z.B)
 z.D = C.AB: midarc (z.B,z.C)
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPoints(A,B,C)
-\tkzDrawCircles(A,B)
-\tkzDrawPoints(A,...,D)
-\tkzLabelPoints(A,...,D)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPoints(A,B,C)
+  \tkzDrawCircles(A,B)
+  \tkzDrawPoints(A,...,D)
+  \tkzLabelPoints(A,...,D)
+  \end{tikzpicture}
+\end{center}
 \end{minipage}
 % subsection midarc (end)
 
@@ -3738,17 +3643,19 @@
 z.R         = intersection (L.tC,L.AB)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygon[teal](A,B,C)
-\tkzDrawCircle(O,A)
-\tkzDrawPoints(A,B,C,P,Q,R)
-\tkzLabelPoints(A,B,C,P,Q,R)
-\tkzDrawLine[blue](Q,R)
-\tkzDrawLines[red](Ar,Al Br,Q Cr,Cl)
-\tkzDrawSegments(A,R C,P C,Q)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygon[teal](A,B,C)
+  \tkzDrawCircle(O,A)
+  \tkzDrawPoints(A,B,C,P,Q,R)
+  \tkzLabelPoints(A,B,C,P,Q,R)
+  \tkzDrawLine[blue](Q,R)
+  \tkzDrawLines[red](Ar,Al Br,Q Cr,Cl)
+  \tkzDrawSegments(A,R C,P C,Q)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection lemoine_line_without_macro (end)
 
@@ -3755,51 +3662,73 @@
 \subsection{First Lemoine circle} % (fold)
 \label{sub:first_lemoine_circle}
 
+Draw lines through the symmedian point $L$ and parallel to the sides of the triangle. The points where the parallel lines intersect the sides of the triangle then lie on a circle known as the first Lemoine circle.  It has center at the Brocard midpoint, i.e., the midpoint of $[OL]$, where $O$ is the circumcenter and $K$ is the symmedian point
+
+[\href{https://mathworld.wolfram.com/FirstLemoineCircle.html}{Weisstein, Eric W. "First Lemoine Circle." From MathWorld--A Wolfram Web Resource.}]
+
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
 \begin{tkzelements}
    z.A      = point:  new (1,1)
    z.B      = point:  new (5,1)
-   z.C      = point:  new (2,3)
-   T        = triangle: new (z.A,z.B,z.C)
-   z.O      = T.circumcenter
-   z.o,z.w  = get_points (T : first_lemoine_circle ())
+   z.C      = point:  new (2.2,4)
+   T        = triangle: new (z.A,z.B,z.C) 
+   z.O = T.circumcenter
+   C.first_lemoine = T:first_lemoine_circle()
+  z.o,z.w  = get_points( C.first_lemoine )
+   z.y1,z.y2         = intersection (T.ab,C.first_lemoine)
+   z.y5,z.y6         = intersection (T.bc,C.first_lemoine)
+   z.y3,z.y4         = intersection (T.ca,C.first_lemoine)
    z.L      = T : lemoine_point ()
 \end{tkzelements}
 
+\begin{center}
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawPolygons(A,B,C)
-   \tkzDrawPoints(A,B,C,o,w,O,L)
-   \tkzLabelPoints(A,B,C,o,w,O,L)
-   \tkzDrawCircles(o,w  O,A)
+   \tkzDrawPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+   \tkzLabelPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+   \tkzDrawCircles(o,w)
+   \tkzDrawLines(y1,y6 y5,y4 y2,y3 O,L)  
 \end{tikzpicture}
-\end{Verbatim}
+\end{center}
 \end{minipage}
+
 \begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
+\begin{Verbatim}
 \begin{tkzelements}
-z.A      = point:  new (1,1)
-z.B      = point:  new (5,1)
-z.C      = point:  new (2,3)
-T        = triangle: new (z.A,z.B,z.C)
-z.O      = T.circumcenter
-z.o,z.w  = get_points(T:first_lemoine_circle())
-z.L      = T : lemoine_point ()
+   z.A      = point:  new (1,1)
+   z.B      = point:  new (5,1)
+   z.C      = point:  new (2.2,4)
+   T        = triangle: new (z.A,z.B,z.C) 
+   z.O = T.circumcenter
+   C.first_lemoine = T:first_lemoine_circle()
+  z.o,z.w  = get_points( C.first_lemoine )
+   z.y1,z.y2         = intersection (T.ab,C.first_lemoine)
+   z.y5,z.y6         = intersection (T.bc,C.first_lemoine)
+   z.y3,z.y4         = intersection (T.ca,C.first_lemoine)
+   z.L      = T : lemoine_point ()
 \end{tkzelements}
-\hspace*{\fill}
-\begin{tikzpicture}[scale = 1.25]
-\tkzGetNodes
-\tkzDrawPolygons(A,B,C)
-\tkzDrawPoints(A,B,C,o,w,O,L)
-\tkzLabelPoints(A,B,C,o,w,O,L)
-\tkzDrawCircles(o,w  O,A)
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C)
+   \tkzDrawPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+   \tkzLabelPoints(A,B,C,o,O,L,y1,y2,y3,y4,y5,y6)
+   \tkzDrawCircles(o,w)
+   \tkzDrawLines(y1,y6 y5,y4 y2,y3 O,L)  
 \end{tikzpicture}
+\end{Verbatim}
 \end{minipage}
+
 % subsection first_lemoine_circle (end)
 
 \subsection{First and second Lemoine circles} % (fold)
 \label{sub:first_and_second_lemoine_circles}
 
+Draw antiparallels through the symmedian point $L$. The points where these lines intersect the sides then lie on a circle, known as the cosine circle (or sometimes the second Lemoine circle). Refer to [\ref{sub:antiparallel_through_lemoine_point}]
+
+[\href{https://mathworld.wolfram.com/CosineCircle.html}{Weisstein, Eric W. "Cosine Circle." From MathWorld--A Wolfram Web Resource.}]
+
+
 \begin{Verbatim}
 \begin{tkzelements}
    scale             = 2
@@ -3863,19 +3792,22 @@
 L.y2y3    = line : new (z.y2,z.y3)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}[scale = .75]
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c y1,y2,y3,y4,y5,y6)
-\tkzDrawPoints(x1,x2,x3,x4,x5,x6,L)
-\tkzDrawPoints(a,b,c,o,O,y1,y2,y3,y4,y5,y6)
-\tkzLabelPoints[below right](a,b,c,o,O,y1,y2,y3,y4,y5,y6)
-\tkzLabelPoints[below left](x1,x2,x3,x4,x5,x6)
-\tkzLabelPoints[above](L)
-\tkzDrawCircles(L,x o,p O,a)
-\tkzDrawSegments(L,O x1,x4 x2,x5 x3,x6)
-\end{tikzpicture}
-\hspace*{\fill}
+
+\begin{center}
+  \begin{tikzpicture}[scale = .75]
+  \tkzGetNodes
+  \tkzDrawPolygons(a,b,c y1,y2,y3,y4,y5,y6)
+  \tkzDrawPoints(x1,x2,x3,x4,x5,x6,L)
+  \tkzDrawPoints(a,b,c,o,O,y1,y2,y3,y4,y5,y6)
+  \tkzLabelPoints[below right](a,b,c,o,O,y1,y2,y3,y4,y5,y6)
+  \tkzLabelPoints[below left](x1,x2,x3,x4,x5,x6)
+  \tkzLabelPoints[above](L)
+  \tkzDrawCircles(L,x o,p O,a)
+  \tkzDrawSegments(L,O x1,x4 x2,x5 x3,x6)
+  \end{tikzpicture}
+\end{center}
+
+
 % subsection first_and_second_lemoine_circles (end)
 
 \subsection{Inversion} % (fold)
@@ -3942,53 +3874,7 @@
 \end{minipage}
 % subsection inversion (end)
 
-\subsection{Gergonne point} % (fold)
-\label{sub:gergonne_point}
 
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{Verbatim}
-\begin{tkzelements}
-z.a  = point: new(1,0)
-z.b  = point: new(6,2)
-z.c  = point: new(2,5)
-T    = triangle : new (z.a,z.b,z.c)
-z.g  = T : gergonne_point ()
-z.i  = T.incenter
-z.ta,z.tb,z.tc = get_points (T :  intouch ())
-\end{tkzelements}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c)
-\tkzDrawPoints(a,b,c,g)
-\tkzLabelPoints(a,b,c)
-\tkzDrawSegments (a,ta b,tb c,tc)
-\tkzDrawCircle(i,ta)
-\end{tikzpicture}
-\end{Verbatim}
-\end{minipage}
-\begin{minipage}[t]{.5\textwidth}\vspace{0pt}%
-\begin{tkzelements}
-z.a  = point: new(1,0)
-z.b  = point: new(6,2)
-z.c  = point: new(2,5)
-T    = triangle : new (z.a,z.b,z.c)
-z.g  = T : gergonne_point ()
-z.i  = T.incenter
-z.ta,z.tb,z.tc = get_points (T :  intouch ())
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c)
-\tkzDrawPoints(a,b,c,g)
-\tkzLabelPoints(a,b,c)
-\tkzDrawSegments (a,ta b,tb c,tc)
-\tkzDrawCircle(i,ta)
-\end{tikzpicture}
-\end{minipage}
-% subsection gergonne_point (end)
-
 \subsection{Antiparallel through Lemoine point} % (fold)
 \label{sub:antiparallel_through_lemoine_point}
 
@@ -4035,16 +3921,18 @@
 z.z_0,z.z_1 = get_points (L.anti)
 \end{tkzelements}
 
-\hspace*{\fill}
-\begin{tikzpicture}
-\tkzGetNodes
-\tkzDrawPolygons(a,b,c)
-\tkzDrawPoints(a,b,c,L,x_0,x_1,y_0,y_1,z_0,z_1)
-\tkzLabelPoints(a,b)
-\tkzLabelPoints[above](L,c)
-\tkzDrawSegments(x_0,x_1 y_0,y_1 z_0,z_1)
-\tkzDrawCircle(L,x_0)
-\end{tikzpicture}
+\begin{center}
+  \begin{tikzpicture}
+  \tkzGetNodes
+  \tkzDrawPolygons(a,b,c)
+  \tkzDrawPoints(a,b,c,L,x_0,x_1,y_0,y_1,z_0,z_1)
+  \tkzLabelPoints(a,b)
+  \tkzLabelPoints[above](L,c)
+  \tkzDrawSegments(x_0,x_1 y_0,y_1 z_0,z_1)
+  \tkzDrawCircle(L,x_0)
+  \end{tikzpicture}
+\end{center}
+
 \end{minipage}
 % subsection antiparallel_through_lemoine_point (end)
 
@@ -4362,7 +4250,8 @@
 \end{minipage}
 % subsection three_circles (end)
 
-\subsection{pentagons in a golden arbelos} % (fold)
+\subsection{p
+Pentagons in a golden arbelos} % (fold)
 \label{sub:golden_arbelos}
 
 \begin{tkzelements}
@@ -4499,6 +4388,5 @@
 \end{tikzpicture}
 \end{Verbatim}
 
-
-
-% subsection golden_arbelos (end)
\ No newline at end of file
+% subsection golden_arbelos (end)
+% section examples (end)
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -282,7 +282,7 @@
 \end{minipage}
 % subsubsection example_of_complex_use (end)
 
-\subsubsection{Point operations(complex)} % (fold)
+\subsubsection{Point operations (complex)} % (fold)
 \label{ssub:point_operations_complex}
 
 \begin{minipage}{.5\textwidth}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-intersection.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-intersection.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-intersection.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -61,7 +61,7 @@
 \end{tikzpicture}
 \end{minipage}
 
-Other examples: \ref{ssub:altshiller}, \ref{ssub:lemoine}, \ref{sub:alternate}
+Other examples: \ref{sub:altshiller}, \ref{sub:lemoine}, \ref{sub:alternate}
 % subsection line_line (end)
 
 \newpage
@@ -117,7 +117,7 @@
 \end{tikzpicture}
 \end{minipage}
 
-Other examples: \ref{ssub:altshiller}
+Other examples: \ref{sub:altshiller}
 % subsection line_circle (end)
 
 \newpage
@@ -168,7 +168,7 @@
 \end{tikzpicture}
 \end{minipage}
 
-Other examples: \ref{ssub:altshiller}, \ref{sub:the_figure_pappus_circle}
+Other examples: \ref{sub:altshiller}, \ref{sub:the_figure_pappus_circle}
 % subsection circle_circle (end)
 
 \newpage

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 % !TEX TS-program = lualatex
 % encoding : utf8 
-% Documentation of tkz-elements v2.25c
+% Documentation of tkz-elements v2.30c
 % Copyright 2024  Alain Matthes
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -21,10 +21,10 @@
                headings    = small
                ]{tkz-doc}
 \gdef\tkznameofpack{tkz-elements}
-\gdef\tkzversionofpack{2.25c}
+\gdef\tkzversionofpack{2.30c}
 \gdef\tkzdateofpack{\today}
 \gdef\tkznameofdoc{tkz-elements.pdf}
-\gdef\tkzversionofdoc{2.25c}
+\gdef\tkzversionofdoc{2.30c}
 \gdef\tkzdateofdoc{\today}
 \gdef\tkzauthorofpack{Alain Matthes}
 \gdef\tkzadressofauthor{}
@@ -170,10 +170,8 @@
 
 \AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb
 
-
-
 \begin{document} 
-\LuaCodeDebugOn 
+%\LuaCodeDebugOn 
   
 \parindent=0pt
 \tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/tkz-elements.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,5 +1,5 @@
 % encoding : utf8 
-% tkz-elements.sty v2.25c
+% tkz-elements.sty v2.30c
 % Copyright 2024  Alain Matthes
 % This work may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either version 1.3
@@ -11,7 +11,7 @@
 % This work has the LPPL maintenance status “maintained”.
 % The Current Maintainer of this work is Alain Matthes.
 
-\ProvidesPackage{tkz-elements}[2024/04/27 v2.25c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[2024/07/16 version 2.30c Graphic Object Library]
 \RequirePackage{luacode}
 \directlua{require "tkz_elements_main"}
 
@@ -34,20 +34,19 @@
                  V={}}
       \luacode}
   {\endluacode}
- 
+ % new version of the next macro proposed by Sanskar Singh
 \def\tkzGetNodes{\directlua{%
-   for K,V in pairs(z) do
-      local n,sd,ft
-      n = string.len(K)
-      if n >1 then
-      _,_,ft, sd = string.find( K , "(.+)(.)" )  
-     if sd == "p" then   K=ft.."'" end 
-     _,_,xft, xsd = string.find( ft , "(.+)(.)" ) 
-     if xsd == "p" then  K=xft.."'".."'" end 
-       end    
-  tex.print("\\coordinate ("..K..") at ("..V.re..","..V.im..") ;\\\\")
-end}
-}
+  for K,V in pairs(z) do
+     local n,sd,ft
+     n = string.len(K)
+     if n >1 then
+     _,_,ft, sd = string.find( K , "(.+)(.)" )  
+    if sd == "p" then   K=ft.."'" end
+    _,_,xft, xsd = string.find( ft , "(.+)(.)" )
+    if xsd == "p" then  K=xft.."'".."'" end
+      end    
+ tex.sprint("\string\\coordinate ("..K..") at ("..V.re..","..V.im..") ; \string\r")
+end}}
 
 \def\tkzUseLua#1{\directlua{tex.print(tostring(#1))}} 
 \makeatletter

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements-circles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_class.lua 
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- from class.lua (Simple Lua Classes from Lua-users wiki)
 -- Compatible with Lua 5.1 (not 5.0).
 --  http://lua-users.org/wiki/SimpleLuaClasses DavidManura 

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements-ellipses.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_circles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_intersections.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_lines.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_maths.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_matrices.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_matrices.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_points.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_regular.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_triangles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3
@@ -259,6 +259,15 @@
     intersection_cc_ (e,m,jb,hb),
     intersection_cc_ (e,m,jc,hc)
 end
+
+function similar_ (a,b,c)
+  local x,y,z,g
+   g = centroid_ (a,b,c)
+   x = homothety_ (g,-2,a)
+   y = homothety_ (g,-2,b)
+   z = homothety_ (g,-2,c)
+   return x,y,z
+end
 --------------------
 -- ellipse --
 --------------------

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_lines.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3
@@ -324,11 +324,25 @@
    m = midpoint_ (self.pa,self.pb)
   return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb)) 
 end
+
+function line : perpendicular_bisector ()
+   local m
+   m = midpoint_ (self.pa,self.pb)
+  return line : new (rotation_ (m,-math.pi/2,self.pb),rotation_ (m,math.pi/2,self.pb))
+end
+
 -------------------
 -- Result -> circle
 -------------------
-function line: circle ()   
+function line: circle (swap)
+  if swap == nil then
+      swap = false
+  end
+  if swap then
+    return circle : new (self.pb,self.pa)
+  else
     return circle : new (self.pa,self.pb)
+  end
 end
 
 function line: circle_swap ()   

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements-main.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_matrices.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_matrices.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_functions_maths.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_parallelogram.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_point.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_quadrilateral.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements-rectangle.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_regular.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements-square.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_triangles.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3
@@ -57,19 +57,19 @@
 -- points --
 -----------------------
 function triangle: trilinear (a,b,c)
-   return barycenter_ ( {self.pa,a*self.a },{self.pb,b*self.b},{self.pc,c*self.c} )
+   return barycenter_ ({self.pa,a*self.a},{self.pb,b*self.b},{self.pc,c*self.c})
 end
 
 function triangle: barycentric (a,b,c)
-   return barycenter_ ( {self.pa,a },{self.pb,b},{self.pc,c} )
+   return barycenter_ ({self.pa,a},{self.pb,b},{self.pc,c})
 end
 
 function triangle: bevan_point ()
-   return circum_center_ ( self : excentral_tr())
+   return circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
 end
 
 function triangle: mittenpunkt_point ()
-   return lemoine_point_ ( self : excentral_tr())
+   return lemoine_point_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
 end
 
 function triangle: gergonne_point ()
@@ -322,13 +322,20 @@
      pta,ptb,ptc = cevian_  (self.pa,self.pb,self.pc,p)
      return circle : new (circum_circle_ (pta,ptb,ptc),pta)
   end
+
+function triangle :  symmedial_circle ()
+  local pta,ptb,ptc,p
+   p = lemoine_point_ ( self.pa , self.pb , self.pc)
+   pta,ptb,ptc = cevian_  (self.pa,self.pb,self.pc,p)
+   return circle : new (circum_circle_ (pta,ptb,ptc),pta)
+end
   
-  function triangle :  conway_circle ()
-      local i,t
-       i = in_center_ (self.pa,self.pb,self.pc)
-       t =      report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa)
-       return circle : new (i,t)
-    end
+function triangle :  conway_circle ()
+  local i,t
+   i = in_center_ (self.pa,self.pb,self.pc)
+   t =      report_ (self.pb,self.pa,length(self.pb,self.pc),self.pa)
+   return circle : new (i,t)
+end
 
 function triangle :  pedal_circle (pt)
   local x,y,z,c
@@ -338,7 +345,13 @@
   c = circum_center_ (x,y,z)
   return circle : new (c,x)
 end    
-    
+
+function triangle: bevan_circle ()
+   local o,r,s,t
+   o = circum_center_ ( excentral_tr_ ( self.pa , self.pb , self.pc))
+   r,s,t = excentral_tr_ ( self.pa , self.pb , self.pc)
+return  circle : new  (o, r)
+end
 -------------------
 -- Result -> triangle
 -------------------
@@ -392,6 +405,12 @@
    return triangle : new  (cevian_  (self.pa,self.pb,self.pc,p))
 end
 
+function triangle: symmedial ()
+   local p
+   p = lemoine_point_ ( self.pa , self.pb , self.pc)
+   return triangle : new  (cevian_  (self.pa,self.pb,self.pc,p))
+end
+
 function triangle: euler ()
    return triangle : new  (euler_points_ (self.pa,self.pb,self.pc) )
 end
@@ -403,6 +422,10 @@
   z = projection_ (self.pa,self.pb,pt)
    return triangle : new  (x,y,z)
 end
+
+function triangle: similar ()
+   return triangle : new  (similar_ (self.pa,self.pb,self.pc) )
+end
 -------------------
 -- Result -> ellipse
 -------------------

Modified: trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua	2024-07-17 19:40:48 UTC (rev 71826)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua	2024-07-17 19:41:10 UTC (rev 71827)
@@ -1,6 +1,6 @@
 -- tkz_elements_vectors.lua
--- date 2024/04/27
--- version 2.25c
+-- date 2024/07/16
+-- version 2.30c
 -- Copyright 2024  Alain Matthes
 -- This work may be distributed and/or modified under the
 -- conditions of the LaTeX Project Public License, either version 1.3



More information about the tex-live-commits mailing list.