texlive[69461] Master/texmf-dist: tkz-elements (16jan24)

commits+karl at tug.org commits+karl at tug.org
Tue Jan 16 22:29:12 CET 2024


Revision: 69461
          https://tug.org/svn/texlive?view=revision&revision=69461
Author:   karl
Date:     2024-01-16 22:29:12 +0100 (Tue, 16 Jan 2024)
Log Message:
-----------
tkz-elements (16jan24)

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-misc.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-parallelogram.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-quadrilateral.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.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-square.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.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-main.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-transferts.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-why.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_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_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

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-inversion.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-tests.tex
    trunk/Master/texmf-dist/doc/latex/tkz-elements/gold_preamble.lua
    trunk/Master/texmf-dist/doc/latex/tkz-elements/sangaku.lua

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/README.md	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,10 +1,10 @@
 # tkz-elements — for euclidean geometry
 
-Release 1.72c 2023/12/24
+Release 1.82c 2024/01/16
 
 ## Description
 
-`tkz-elements v.1.72c` 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.1.82c` 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.
 
@@ -60,7 +60,39 @@
 are on the site.
 
 ## History
+   - version 1.82c
+      - Point object  : name like z.App now gives a node with name A''
+      - Modification of methods north,south 
+      - Added the function length(z.A,z.B) shortcut for point.abs(z.A-z.B).
+      - Line object added  some methods
+      - Added method in\_out\_segment 
+      - (sacred triangle)
+         - gold
+         - sublime or euclide
+         - cheops
+         - divine
+         - pythagoras or isis or egyptian
+         - golden
+      - (classic triangles)
+         - two\_angles (side between)
+         - sss (three sides)
+         - ssa (two sides and an angle)
+         - sas (an angle between two sides)
+         - school (30°, 60° and 90°)
+         - half right triangle in A with AB= 2AC
+      -  Circle object 
+         - added method common_tangent (gives the common tangents of two circles)
+         - Correction for a bug and an oversight in the circles_position method.
+         - Rewriting the radical_axis methods
+      - Triangle object
+         - method trilinear (to use trilinear coordinates)  
+         - method barycentric (to use barycentric coordinates)
+      - Added some functions
+         - bisector (a,b,c) altitude (a,b,c) bisector_ext(a,b,c) equilateral (a,b) midpoint (a,b) to avoid creating unnecessary objects.
+      - Added new examples and a cheat sheet in the documentation
+      
 
+
    - version 1.72c
        - added a line method (apollonius) set of points M with MA/MB = k
        - example with line : apollonius

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-circle.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -13,18 +13,20 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Circle attributes.}
+\captionof{table}{Circle attributes.}\label{circle:att}
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes}     & \textbf{Application} &\\
 \Iattr{circle}{center}  & |z.A = C.AB.center| &\\
 \Iattr{circle}{through} & |z.B = C.AB.through| &\\
-\Iattr{circle}{type}    &  |C.AB.type|   &\tkzar  |C.OA.type = 'circle'|\\
-\Iattr{circle}{radius}  &  |C.AB.radius| &\tkzar   |r = C.OA.radius | $r$ real number\\
-\Iattr{circle}{north}   &  |C.AB.north|  &\tkzar   |z.N = C.OA.north|\\
-\Iattr{circle}{south}   &  |C.AB.south|  & \tkzar   |z.S = C.OA.south| \\
-\Iattr{circle}{east}    &  |C.AB.east|   &\tkzar   |z.E = C.OA.east| \\
-\Iattr{circle}{west}    &  |C.AB.west|   &\tkzar   |z.W = C.OA.west| \\
+\Iattr{circle}{type}    &  |C.AB.type|   &  |C.OA.type = 'circle'|\\
+\Iattr{circle}{radius}  &  |C.AB.radius| &   |r = C.OA.radius | $r$ real number\\
+\Iattr{circle}{north}   &  |C.AB.north|  &   |z.N = C.OA.north|\\
+\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|   & see (\ref{ssub:example_circle_attributes})  \\
+\Iattr{circle}{ct}    &  |L = C.AB.ct|   & see (\ref{ssub:example_circle_attributes})   \\
 \bottomrule %
 \end{tabular}
 \egroup
@@ -44,14 +46,16 @@
    z.s   = C.ab.south
    z.w   = C.ab.west
    r     = C.ab.radius
+   z.c   = C.ab.opp
+   z.r,z.t = get_points (C.ab.ct : ortho_from (z.b))
 \end{tkzelements}
 \begin{tikzpicture}
-    \tkzGetNodes
-    \tkzDrawPoints(a,b,s,w)
-    \tkzLabelPoints(a,b,s,w)
-    \tkzDrawCircle(a,b)
-    \tkzDrawSegment(a,b)
-    \tkzLabelSegment[sloped](a,b){ab = \tkzUseLua{r}}
+\tkzGetNodes
+\tkzDrawPoints(a,b,c,s,w)
+\tkzLabelPoints(a,b,c,s,w)
+\tkzDrawCircle(a,b)
+\tkzDrawSegments(a,b r,t b,c)
+\tkzLabelSegment[sloped](a,b){ab = \tkzUseLua{r}}
 \end{tikzpicture}
 \end{tkzexample}
 \end{minipage}
@@ -64,15 +68,16 @@
    z.s = C.ab.south
    z.w = C.ab.west
    r   = C.ab.radius
+   z.c   = C.ab.opp
+   z.r,z.t = get_points (C.ab.ct : ortho_from (z.b))
 \end{tkzelements}
-
 \hspace*{\fill}
 \begin{tikzpicture}
 \tkzGetNodes
-\tkzDrawPoints(a,b,s,w)
-\tkzLabelPoints(a,b,s,w)
+\tkzDrawPoints(a,b,c,s,w)
+\tkzLabelPoints(a,b,c,s,w)
 \tkzDrawCircle(a,b)
-\tkzDrawSegment(a,b)
+\tkzDrawSegments(a,b r,t b,c)
 \tkzLabelSegment[sloped](a,b){ab = \tkzUseLua{r}}
 \end{tikzpicture}
 \hspace*{\fill}
@@ -86,7 +91,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Circle methods.}
+\captionof{table}{Circle methods.}\label{circle:met}
 \begin{tabular}{lll}
 \toprule
 \textbf{Methods} & \textbf{Comments}   & \\
@@ -93,38 +98,42 @@
 \midrule   \\
 \Imeth{circle}{new(O,A)} & |C.OA = circle : new (z.O,z.A)| & circle  center $O$ through $A$\\
 \Imeth{circle}{radius(O,r)} & |C.OA = circle : radius (z.O,2)| & circle  center $O$ radius =2 cm\\
+\Imeth{circle}{diameter(A,B)} & |C.OA = circle :diameter(z.A,z.B)| & circle diameter $[AB]$  \\
 \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 (z1,z2)} & |z.D = C.AB: midarc (z.B,z.C)|& $D$ is the midarc of $\widearc{BC}$\\
-\Imeth{circle}{point (t)} & |z.E = C.AB: point (0.25)|& |t| between 0 and 1\\
+\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}{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) & see \ref{sub:radical_center}   \\
 \midrule 
  \textbf{Lines} & & \\
 \midrule 
-\Imeth{circle}{radical\_axis (C)} & &  \\
-\Imeth{circle}{tangent\_at (pt)} & |z.P = C.OA: tangent_at (z.M)| & $((PM) \perp (OM))$\\
-\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N = C.OA: tangent_from (z.P)| &\\
-\Imeth{circle}{inversion (line)} & |L or C = C.AC: inversion (L.EF)|&\\
+\Imeth{circle}{radical\_axis (C)} &  see ( \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)| & see (\ref{ssub:lemoine} ; \ref{ssub:example_combination_of_methods})\\
+\Imeth{circle}{tangent\_from (pt)}& |z.M,z.N = C.OA: tangent_from (z.P)| & see (\ref{tangent_from})\\
+\Imeth{circle}{inversion (line)} & |L or C = C.AC: inversion (L.EF)|& see (\ref{ssub:inversion_line})\\
+\Imeth{circle}{common\_tangent (C)} & |z.a,z.b = C.AC: common_tangent (C.EF)|& see  (\ref{sub:common_tangent} ; \ref{sub:common_tangent_orthogonality})\\
 \midrule 
  \textbf{Circles}& &\\
 \midrule 
-\Imeth{circle}{orthogonal\_from (pt)}  & |C = C.OA: orthogonal_from (z.P)|  & \\
-\Imeth{circle}{orthogonal\_through (pta,ptb)}  & |C = C.OA: orthogonal_through (z.z1,z.z2)|\\
+\Imeth{circle}{orthogonal\_from (pt)}  & |C = C.OA: orthogonal_from (z.P)|  & see (\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)| & see (\ref{sub:orthogonal_circle_through})\\
 \Imeth{circle}{inversion (...)} & | C.AC: inversion (pt, pts, L or C )|& see \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)|  & see \ref{ssub:midcircle} \\
+\Imeth{circle}{radical\_circle (C1<,C2>)} & or only (C1) & see \ref{sub:radical_circle}\\
 \midrule 
  \textbf{Miscellaneous} &&\\
 \midrule 
-\Imeth{circle}{power (pt)}     &|p = C.OA: power (z.M)| &   power  with respect to a circle   \\
-\Imeth{circle}{in\_out (pt)} & |C.OA : in_out (z.M)| & boolean  \\
-\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & boolean  \\
+\Imeth{circle}{power (pt)}     &|p = C.OA: power (z.M)| &   see (\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)| & see (\ref{sub:in_out_for_circle_and_disk})  \\
+\Imeth{circle}{in\_out\_disk (pt)} & |C.OA : in_out_disk (z.M)| & see (\ref{sub:in_out_for_circle_and_disk})  \\
 \Imeth{circle}{draw ()} & for further use &\\
-\Imeth{circle}{circles\_position (C1,C2)} & see \ref{sub:circles_position} \\
+\Imeth{circle}{circles\_position (C1)} & result = string &see (\ref{sub:circles_position}) \\
 \bottomrule 
 \end{tabular}
 \egroup
@@ -570,7 +579,7 @@
 This case is a little more complicated. We'll construct the two circles $(\alpha)$ and $(\beta)$ tangent to the two given circles. Then we construct the radical circle orthogonal to the circles $(\alpha)$ and $(\beta)$. Its center is the radical center as well as the center of internal similtude of circles of center $A$ and $B$.
 
 \item When the two given circles are external to each other,  we  construct  the external center of similitude of the two given circles.
-$I$ is the center of external similarity of the two given circles. To obtain the inversion circle, simply note that $H$ is such that $IH^2= IE\times IF$
+$I$ is the center of external similarity of the two given circles. To obtain the inversion circle, simply note that $H$ is such that $IH^2= IE\times IF$. \label{tangent_from}
 
 \begin{minipage}{.4\textwidth}
 \begin{verbatim}
@@ -757,13 +766,13 @@
 \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 = circles_position (C.Aa,C.Bb)
+   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
@@ -784,7 +793,7 @@
 z.b = point : new ( 3  , 0  )
 C.Aa = circle: new (z.A,z.a)
 C.Bb = circle: new (z.B,z.b)
-position = circles_position (C.Aa,C.Bb)
+position = C.Aa : circles_position (C.Bb)
 if position == "inside tangent" then color = "orange" else color = "blue" end
 \end{tkzelements}
 \hspace{\fill}
@@ -795,5 +804,214 @@
 \end{tikzpicture}\hspace{\fill}
 \end{minipage}
 % subsection circles__position (end)
+
+\subsection{Common tangent: Angle of two intersecting circles} % (fold)
+\label{sub: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}
+\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{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}
+ \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{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}
+\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}
+
+\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}
+\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}
+% subsection in_out_for_circle_and_disk (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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-ellipse.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -10,7 +10,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Ellipse attributes.}
+\captionof{table}{Ellipse attributes.}\label{ellipse:att}
 \begin{tabular}{ll}
 \toprule
 \textbf{Attributes}     & \textbf{Application}\\
@@ -34,84 +34,85 @@
 
 \subsubsection{Atributes of an ellipse: example} % (fold)
 \label{ssub:attributes_of_an_ellipse}
-\begin{tkzexample}[latex=0cm,small,code only]
-\begin{tkzelements}
-   z.C   = point: new (3 , 2)
-   z.A   = point: new (5 , 1)
-   L.CA  = line : new (z.C,z.A)
-   z.b   = L.CA.north_pa
-   L     = line : new (z.C,z.b)
-   z.B   = L : point (0.5)
-   E     = ellipse: new (z.C,z.A,z.B)
-   a     = E.Rx
-   b     = E.Ry
-   z.F1  = E.Fa
-   z.F2  = E.Fb
-   slope = math.deg(E.slope)
-   z.E   = E.east
-   z.N   = E.north
-   z.W   = E.west
-   z.S   = E.south
-   z.Co  = E.covertex
-   z.Ve  = E.vertex
-\end{tkzelements}
-\begin{tikzpicture}
+\begin{minipage}{.5\textwidth}
+   \begin{verbatim}
+   \begin{tkzelements}
+      z.C   = point: new (3 , 2)
+      z.A   = point: new (5 , 1)
+      L.CA  = line : new (z.C,z.A)
+      z.b   = L.CA.north_pa
+      L     = line : new (z.C,z.b)
+      z.B   = L : point (0.5)
+      E     = ellipse: new (z.C,z.A,z.B)
+      a     = E.Rx
+      b     = E.Ry
+      z.F1  = E.Fa
+      z.F2  = E.Fb
+      slope = math.deg(E.slope)
+      z.E   = E.east
+      z.N   = E.north
+      z.W   = E.west
+      z.S   = E.south
+      z.Co  = E.covertex
+      z.Ve  = E.vertex
+   \end{tkzelements}
+   \begin{tikzpicture}
+      \pgfkeys{/pgf/number format/.cd,fixed,precision=2}
+      \tkzGetNodes
+      \tkzDrawCircles[teal](C,A)
+      \tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},
+      \tkzUseLua{slope})
+      \tkzDrawPoints(C,A,B,b,W,S,F1,F2)
+      \tkzLabelPoints(C,A,B)
+      \tkzDrawLine[add = .5 and .5](A,W)
+      \tkzLabelSegment[pos=1.5,above,sloped](A,W){%
+       slope = \pgfmathprintnumber{\tkzUseLua{slope}}}
+      \tkzLabelPoint[below](S){South}
+      \tkzLabelPoint[below left](F1){Focus 1}
+      \tkzLabelPoint[below left](F2){Focus 2}
+      \tkzLabelPoint[above right](Ve){Vertex ; East}
+      \tkzLabelPoint[above right](Co){Covertex ; North}
+   \end{tikzpicture}
+   \end{verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+   \begin{tkzelements}
+   z.C  = point: new (3 , 2)
+   z.A  = point: new (5 , 1)
+   L.CA = line : new (z.C,z.A)
+   z.b  = L.CA.north_pa
+   L    = line : new (z.C,z.b)
+   z.B  = L : point (0.5)
+   E    = ellipse: new (z.C,z.A,z.B)
+   a    = E.Rx
+   b    = E.Ry
+   z.F1 = E.Fa
+   z.F2 = E.Fb
+   slope    = math.deg(E.slope)
+   z.E  = E.east
+   z.N  = E.north
+   z.W  = E.west
+   z.S  = E.south
+   z.Co = E.covertex
+   z.Ve = E.vertex
+   \end{tkzelements}
+   \hspace*{\fill}
+   \begin{tikzpicture}
    \pgfkeys{/pgf/number format/.cd,fixed,precision=2}
    \tkzGetNodes
    \tkzDrawCircles[teal](C,A)
-   \tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},
-   \tkzUseLua{slope})
+   \tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope})
    \tkzDrawPoints(C,A,B,b,W,S,F1,F2)
    \tkzLabelPoints(C,A,B)
    \tkzDrawLine[add = .5 and .5](A,W)
-   \tkzLabelSegment[pos=1.5,above,sloped](A,W){%
-    slope = \pgfmathprintnumber{\tkzUseLua{slope}}}
+   \tkzLabelSegment[pos=1.25,above,sloped](A,W){slope = \pgfmathprintnumber{\tkzUseLua{slope}}}
    \tkzLabelPoint[below](S){South}
    \tkzLabelPoint[below left](F1){Focus 1}
    \tkzLabelPoint[below left](F2){Focus 2}
    \tkzLabelPoint[above right](Ve){Vertex ; East}
    \tkzLabelPoint[above right](Co){Covertex ; North}
-\end{tikzpicture}
-\end{tkzexample}
-
-\begin{tkzelements}
-z.C  = point: new (3 , 2)
-z.A  = point: new (5 , 1)
-L.CA = line : new (z.C,z.A)
-z.b  = L.CA.north_pa
-L    = line : new (z.C,z.b)
-z.B  = L : point (0.5)
-E    = ellipse: new (z.C,z.A,z.B)
-a    = E.Rx
-b    = E.Ry
-z.F1 = E.Fa
-z.F2 = E.Fb
-slope    = math.deg(E.slope)
-z.E  = E.east
-z.N  = E.north
-z.W  = E.west
-z.S  = E.south
-z.Co = E.covertex
-z.Ve = E.vertex
-\end{tkzelements}
-
-\hspace*{\fill}
-\begin{tikzpicture}
-\pgfkeys{/pgf/number format/.cd,fixed,precision=2}
-\tkzGetNodes
-\tkzDrawCircles[teal](C,A)
-\tkzDrawEllipse[red](C,\tkzUseLua{a},\tkzUseLua{b},\tkzUseLua{slope})
-\tkzDrawPoints(C,A,B,b,W,S,F1,F2)
-\tkzLabelPoints(C,A,B)
-\tkzDrawLine[add = .5 and .5](A,W)
-\tkzLabelSegment[pos=1.5,above,sloped](A,W){slope = \pgfmathprintnumber{\tkzUseLua{slope}}}
-\tkzLabelPoint[below](S){South}
-\tkzLabelPoint[below left](F1){Focus 1}
-\tkzLabelPoint[below left](F2){Focus 2}
-\tkzLabelPoint[above right](Ve){Vertex ; East}
-\tkzLabelPoint[above right](Co){Covertex ; North}
-\end{tikzpicture}
-\hspace*{\fill}
+   \end{tikzpicture}
+\end{minipage}
 % \caption{Class Ellipse}
 % subsection attributes_of_an_ellipse (end)
 
@@ -128,7 +129,7 @@
 \bgroup
 \catcode`_=12 
 \small
-\captionof{table}{Ellipse methods.}
+\captionof{table}{Ellipse methods.}\label{ellipse:met}
 \begin{tabular}{ll}
 \toprule
 \textbf{Methods} & \textbf{Example}     \\
@@ -193,7 +194,7 @@
 \end{tikzpicture}
 \end{minipage}
 
-The function \Igfct{package}{set\_lua\_to\_tex (list)} is used to define the macros that will be used to draw the ellipse with \TIKZ\ or \pkg{tkz-euclide}.
+The function \Igfct{package}{tkzUseLua (variable)} is used to transfer values to \TIKZ\ or \pkg{tkz-euclide}.
 % subsubsection method_imeth_ellipse_new (end)
 
 
@@ -203,7 +204,8 @@
 
 \emph{The function launches the |new| method, all the characteristics of the ellipse are defined.}
 
-\begin{tkzexample}[latex=0cm,small,code only]
+\begin{minipage}{0.6\textwidth}
+\begin{verbatim}
 \begin{tkzelements}
    z.A      = point: new (0 , 0)
    z.B      = point: new (5 , 1)
@@ -227,9 +229,6 @@
    a,b      = E.Rx,E.Ry
    ang      = math.deg(E.slope)
 \end{tkzelements}
-\end{tkzexample}
-\begin{minipage}{0.6\textwidth}
- \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawPolygon(A,B,C)
@@ -245,7 +244,7 @@
    \tkzLabelPoints[left](A)
    \tkzLabelPoints[right](B,I,S,H)
    \end{tikzpicture}
-\end{tkzexample}
+\end{verbatim}
 \end{minipage}
 \begin{minipage}{0.4\textwidth}
 \begin{tkzelements}
@@ -290,7 +289,7 @@
 % subsubsection function_tkzname_ellipse__foci (end)
 
 \subsubsection{Method \Imeth{ellipse}{point} and \Imeth{ellipse}{radii}} % (fold)
-\label{ssub:method_point}
+\label{ssub:ellipse_method_point}
  The method \Imeth{ellipse}{point} defines a point $M$ of the ellipse whose coordinates are $(a\times  cos(phi), b\times sin(phi))$. |phi| angle between (center,vertex) and (center,M)
 
  \emph{The environment \tkzNameEnv{tkzelements} uses as \tkzname{lua} the radian as unit for angles. }

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-line.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -18,7 +18,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Line attributes.}
+\captionof{table}{Line attributes.}\label{line:att}
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes} & \textbf{Application} & \\
@@ -26,12 +26,12 @@
 \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 & obtained with |an = L.AB.slope|\\
-\Iattr{line}{length} & Length of the segment& |l = L.AB.length| \\  
-\Iattr{line}{north\_pa}   & See next example& d(a,north—pa)=d(a,b)=d(east,b) =etc. \\
+\Iattr{line}{slope} & Slope of the line & see (\ref{ssub:example_class_line})\\
+\Iattr{line}{length} &|l = L.AB.length|&see (\ref{sub:transfer_from_lua_to_tex} ; \ref{ssub:example_class_line})\\  
+\Iattr{line}{north\_pa}   & See (\ref{ssub:example_class_line}) &  \\
 \Iattr{line}{north\_pb}   & &\\
 \Iattr{line}{south\_pa}   & &\\
-\Iattr{line}{south\_pb}   & &\\
+\Iattr{line}{south\_pb}   & &See (\ref{ssub:example_class_line}) \\
 \Iattr{line}{east}   & &\\
 \Iattr{line}{west}   & &\\
 \bottomrule
@@ -76,8 +76,8 @@
 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
+z.s  = L.ab.south_pb
+sl   = L.ab.slope
 len = L.ab.length
 \end{tkzelements}
 \hspace*{\fill}
@@ -146,78 +146,433 @@
 % subsubsection example_line_attributes (end)
 % subsection attributes_of_a_line (end)
 
-\clearpage\newpage
+\newpage
 \subsection{Methods of the class line} % (fold)
 \label{sub:methods_from_class_line}
-Here's the list of methods for the \tkzNameObj{line} object. The results are either reals, points, lines, circles or triangles.
-\subsubsection{Table of the methods from  class line} % (fold)
-\label{ssub:table_of_the_methods_from_class_line}
+Here's the list of methods for the \tkzNameObj{line} object. The results are either reals, points, lines, circles or triangles. The triangles obtained are similar to the triangles defined below.
 
-\vspace{1em}
 \begin{minipage}{\textwidth}
-   \bgroup
-   \catcode`_=12
-   \small
-   \captionof{table}{Methods of the class line.}
-   \begin{tabular}{lll}
-   \toprule
-   \textbf{Methods} & \textbf{Comments} & \\
-   \midrule 
-   \Imeth{line}{new(A, B)}      & |L.AB = line : new(z.A,z.B)| line through the points $A$ and $B$&\\
-   \midrule 
-    \textbf{Points} &&\\
-   \midrule 
-   \Imeth{line}{gold\_ratio ()}  & |z.C = L.AB : gold_ratio()|   & gold ratio   \\
-   \Imeth{line}{normalize ()}  & |z.C = L.AB : normalize()| & AC =1 and $C\in (AB)$   \\
-   \Imeth{line}{normalize\_inv ()}  & |z.C = L.AB : normalize_inv()|   & CB =1 and $C\in (AB)$  \\
-   \Imeth{line}{barycenter (ka,kb)}    & |z.C = L.AB : barycenter (1,2)| $C$ & barycenter of |{(A,1)(B,2)}|\\
-   \Imeth{line}{point (t)} & |z.C = L.AB : point (2)| &  $\overrightarrow{AC} = 2\overrightarrow{AB}$\\
-   \Imeth{line}{midpoint ()}    & |z.M = L.AB : midpoint ()| & better is |z.M = L.AB.mid|  \\
-   \Imeth{line}{harmonic\_int }  & |z.D = L.AB : harmonic_int (z.C)| & $D\in [AB]$ $C\notin [AB]$\\
-   \Imeth{line}{harmonic\_ext (pt)}  & |z.D = L.AB : harmonic_ext (z.C)| & $D\notin [AB]$ $C\in [AB]$\\
-   \Imeth{line}{harmonic\_both (k)}  & |z.C,z.D = L.AB : harmonic_both (tkzphi)| & ${ {CA/CB}={DA/DB}=t\varphi.}$\\
-   \Imeth{line}{square ()} & |S.AB =(L.AB : square ()) | &  create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}\\
-   \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)$\\
-   \midrule 
-    \textbf{Triangles}&&\\
-   \midrule  
-   \Imeth{line}{equilateral (swap)}  & |T.ABC = L.AB : equilateral ()|  $(\overrightarrow{AB},\overrightarrow{AC})>0$  & or < with swap \footnote{Triangles are defined in the direct sense of rotation, unless the "swap" option is present.}  \\
-   \Imeth{line}{isosceles (phi,swap)}     & |T.ABC = L.AB : isosceles (math.pi/6)|& \\
-   \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$ and   $(\overrightarrow{AB},\overrightarrow{AC}) = math.pi/5$    \\
-   \Imeth{line}{golden (swap)}    & |T.ABC = L.AB : golden ()|   & $(\overrightarrow{AB},\overrightarrow{AC}) = 2\times \pi/5$   \\
-   \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 (k)}  & |C.apo = L.AB : apollonius (2)|&  Ensemble des points tq. |MA/MB = 2| \\
-   \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)$\\
-   \midrule 
-    \textbf{Miscellaneous} &&\\
-   \midrule 
-   \Imeth{line}{distance (pt)}   & |d = L.Ab : distance (z.C)|  & see \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 \\
-   \bottomrule
-   \end{tabular}
+\bgroup
+\catcode`_=12
+\small
+\captionof{table}{Methods of the class line.(part 1)}\label{line:methods1}
+\begin{tabular}{lll}
+\toprule
+\textbf{Methods} & \textbf{Comments} & \\
+\midrule 
+\Imeth{line}{new(pt, pt)}      & |L.AB = line : new(z.A,z.B)| line $(AB)$& see (\ref{ssub:altshiller})\\
+\midrule 
+\textbf{Points} &&\\
+\midrule 
+\Imeth{line}{gold\_ratio ()}  & |z.C = L.AB : gold_ratio()|   & see (\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)$ see (\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)|  & see (\ref{ssub:barycenter_with_a_line})\\
+   \Imeth{line}{point (r)} & |z.C = L.AB : point (2)|   & $\overrightarrow{AC} = 2\overrightarrow{AB}$  See (\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)| & See (\ref{sub:bankoff_circle})\\
+\Imeth{line}{harmonic\_ext (pt)}  & |z.D = L.AB : harmonic_ext (z.C)| & See (\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}{square ()} & |S.AB = L.AB : square () | &  create a square |S.AB|.\footnote{ |_,_,z.C,z.D = get_points(S.AB)|}\\
+\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)$\\
+\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} see ( ) \\
+\Imeth{line}{school ()}  & Angle measurements are 30°,60° and 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$& \\
+\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$ and   $(\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 ()}  & & \\
+\bottomrule
+\end{tabular}
+\egroup
+\end{minipage}
 
-   \egroup
+\begin{minipage}{\textwidth}
+\bgroup
+\catcode`_=12
+\small
+\captionof{table}{Methods of the class line.(part 2)}\label{line:methods2}
+\begin{tabular}{lll}
+\toprule
+\textbf{Methods} & \textbf{Comments} & \\
+\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)|&  Ensemble des points tq. |MA/MB = 2| \\
+\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)$\\
+\midrule 
+\textbf{Miscellaneous} &&\\
+\midrule 
+\Imeth{line}{distance (pt)}   & |d = L.Ab : distance (z.C)|  & see \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}{in\_out\_segment (pt)} &   |b = L.AB : in_out_segment(z.C)| & b=true if $C\in [AB$]  \\ 
+\bottomrule
+\end{tabular}
+\egroup
 \end{minipage}
-% subsubsection table_of_the_methods_from_class_line (end)
 
+\vspace{1 em}
 Here are a few examples.
 
+\subsubsection{Triangle with two\_angles} % (fold)
+\label{ssub:triangle_with_two__angles}
+
+The angles are on either side of the given segment
+
+\begin{minipage}{.4\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+   z.A   = point : new ( 0 , 0 )
+   z.B   = point : new ( 4 , 0 )
+   L.AB  = line : new ( z.A , z.B )
+   T.ABC = L.AB : two_angles (math.pi/6,math.pi/2)
+   z.C   = T.ABC.pc
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C) 
+   \tkzDrawPoints(A,B,C)
+   \tkzLabelPoints(A,B)
+    \tkzLabelPoints[above](C)
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+   \begin{tkzelements}
+      z.A = point : new ( 0 , 0 )
+      z.B = point : new ( 4 , 0 )
+      L.AB = line : new ( z.A , z.B )
+      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}
+\end{minipage}
+% subsubsection triangle_with_two__angles (end)
+
+\subsubsection{Triangle with three given sides} % (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.
+
+\begin{minipage}{.4\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+   scale =1.25
+   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}
+\begin{tikzpicture}[gridded]
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C) 
+   \tkzDrawPoints(A,B,C)
+   \tkzLabelPoints(A,B)
+   \tkzLabelPoints[above](C)
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+   \begin{tkzelements}
+      scale =1.25
+      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}
+\end{minipage}
+% subsubsection triangle_with_three_given_sides (end)
+
+\subsubsection{Triangle with side between side and angle} % (fold)
+\label{ssub:triangle_with_side_between_side_and_angle}
+
+In some cases, two solutions are possible.
+
+\begin{minipage}{.4\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+   scale =1.2
+   z.A = point : new ( 0 , 0 )
+   z.B = point : new ( 5 , 0 )
+   L.AB = line : new ( z.A , z.B )
+   T.ABC,T.ABD =   L.AB : ssa (value(3),math.pi/6)
+   z.C = T.ABC.pc
+   z.D = T.ABD.pc
+\end{tkzelements}
+\begin{tikzpicture}[gridded]
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C A,B,D) 
+   \tkzDrawPoints(A,B,C,D)
+   \tkzLabelPoints(A,B)
+   \tkzLabelPoints[above](C,D)
+   \tkzLabelAngle(C,B,A){$\pi/3$}
+   \tkzLabelSegment[below left](A,C){$7$}
+   \tkzLabelSegment[below left](A,D){$7$}
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+   \begin{tkzelements}
+      scale =1.2
+      z.A = point : new ( 0 , 0 )
+      z.B = point : new ( 5 , 0 )
+      L.AB = line : new ( z.A , z.B )
+      T.ABC,T.ABD =   L.AB : ssa (value(3),math.pi/6)
+      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(C,B,A){$\pi/3$}
+      \tkzLabelSegment[below left](A,C){$7$}
+      \tkzLabelSegment[below left](A,D){$7$}
+   \end{tikzpicture}
+\end{minipage}
+
+% subsubsection triangle_with_side_between_side_and_angle (end)
+
+\subsubsection{About sacred triangles} % (fold)
+\label{ssub:about_triangles}
+The side lengths are proportional to the lengths given in the table. They depend on the length of the initial segment.
+
+\captionof{table}{Sacred triangles.}\label{line:met}
+\begin{tabular}{ll}
+\toprule
+\textbf{Name} & \textbf{definition}  \\
+\midrule 
+\Imeth{line}{gold (<swap>)}     & Right triangle with $a=\varphi$, $b=1$ and $c=\sqrt{\varphi}$\\
+\Imeth{line}{golden (<swap>)}    &Right triangle $b=\varphi$ $c=1$ ; half of gold rectangle   \\
+\Imeth{line}{divine ()}  & Isosceles $a=\varphi$, $b=c=1$ and $\beta = \gamma=\pi/5$ \\   
+\Imeth{line}{pythagoras ()}  & $a=5$, $b=4$, $c=3$ and other names: isis or egyptian\\
+\Imeth{line}{sublime ()}  & Isosceles $a=1$, $b=c=\varphi$  and $\beta =\gamma=2\pi/5$ ; other name: euclid\\
+\Imeth{line}{cheops ()}  &  Isosceles $a=2$, $b=c=\varphi$  and height = $\sqrt{\varphi}$ \\
+\bottomrule
+\end{tabular}
+
+\begin{minipage}{.4\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+   z.A = point : new ( 0 , 0 )
+   z.B = point : new ( 4 , 0 )
+   L.AB = line : new ( z.A , z.B )
+   T.ABC = L.AB : cheops ()
+   z.C = T.ABC.pc
+   T.ABD = L.AB : gold ()
+   z.D = T.ABD.pc
+   T.ABE = L.AB : euclide ()
+   z.E = T.ABE.pc
+   T.ABF = L.AB : golden ()
+   z.F = T.ABF.pc
+   T.ABG = L.AB : devine ()
+   z.G = T.ABG.pc
+   T.ABH = L.AB : pythagoras ()
+   z.H = T.ABH.pc
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C A,B,D A,B,E A,B,F A,B,G A,B,H) 
+   \tkzDrawPoints(A,...,H)
+   \tkzLabelPoints(A,...,H)
+\end{tikzpicture}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+\begin{tkzelements}
+   z.A = point : new ( 0 , 0 )
+   z.B = point : new ( 4 , 0 )
+   L.AB = line : new ( z.A , z.B )
+   T.ABC = L.AB : cheops ()
+   z.C = T.ABC.pc
+   T.ABD = L.AB : gold ()
+   z.D = T.ABD.pc
+   T.ABE = L.AB : euclide ()
+   z.E = T.ABE.pc
+   T.ABF = L.AB : golden ()
+   z.F = T.ABF.pc
+   T.ABG = L.AB : divine ()
+   z.G = T.ABG.pc
+   T.ABH = L.AB : pythagoras ()
+   z.H = T.ABH.pc
+\end{tkzelements}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygons(A,B,C A,B,D A,B,E A,B,F A,B,G A,B,H) 
+   \tkzDrawPoints(A,...,H)
+   \tkzLabelPoints(A,...,H)
+\end{tikzpicture}
+\end{minipage}
+% subsubsection about_triangles (end)
+
+\subsubsection{Method point }% (fold)
+\label{ssub:method_point}
+This method is very useful. It allows you to place a point on the line under consideration.
+If |r = 0|  then the point is |pa|, if |r = 1| it's |pb|.
+
+If |r = .5| the point obtained is the midpoint of the segment. |r| can be negative or greater than 1.
+
+This method exists for all objects except quadrilaterals.
+
+
+\begin{minipage}{.4\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+   z.A = point : new (-1,-1)
+   z.B = point : new (1,1)
+   L.AB = line : new (z.A,z.B)
+   z.I = L.AB : point (0.5)
+   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}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+   \begin{tkzelements}
+   z.A = point : new (-1,-1)
+   z.B = point : new (1,1)
+   L.AB = line : new (z.A,z.B)
+   z.I = L.AB : point (0.5)
+   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}
+ \end{minipage}
+% subsubsection method_point (end)
+
+\subsubsection{Normalize} % (fold)
+\label{ssub:normalize}
+
+
+\begin{minipage}{.4\textwidth}
+   \begin{verbatim}
+   \begin{tkzelements}
+      z.a = point: new (1, 1)
+      z.b = point: new (5, 4)
+      L.ab = line : new (z.a,z.b)
+      z.c   = L.ab : normalize ()
+   \end{tkzelements}
+
+   \begin{tikzpicture}[gridded]
+   \tkzGetNodes
+   \tkzDrawSegments(a,b)
+   \tkzDrawCircle(a,c)
+   \tkzDrawPoints(a,b,c)
+   \tkzLabelPoints(a,b,c)
+   \end{tikzpicture}
+   \end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+\begin{tkzelements}
+   z.a = point: new (1, 1)
+   z.b = point: new (5, 4)
+   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}
+\end{minipage}
+% subsubsection normalize (end)
+
+
+\subsubsection{Barycenter with a line} % (fold)
+\label{ssub:barycenter_with_a_line}
+
+\begin{minipage}{.4\textwidth}
+\begin{verbatim}
+\begin{tkzelements}
+   z.A = point : new ( 0 , -1 )
+   z.B = point : new ( 4 , 2 )
+   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}
+\end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
+\begin{tkzelements}
+   z.A = point : new ( 0 , -1 )
+   z.B = point : new ( 4 , 2 )
+   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}
+\end{minipage}
+% subsubsection barycenter_with_a_line (end)
+
 \subsubsection{Example: new line from a defined line} % (fold)
 \label{ssub:new_line_from_a_defined_line}
 \begin{minipage}{0.5\textwidth}
@@ -520,7 +875,34 @@
 \subsection{Apollonius circle MA/MB = k} % (fold)
 \label{sub:apollonius_circle_ma_mb_k}
 
+\begin{verbatim}
 \begin{tkzelements}
+   z.A = point : new ( 0 , 0 )
+   z.B = point : new ( 6 , 0 )  
+   L.AB =line: new (z.A,z.B)
+   C.apo = L.AB : apollonius (2)
+   z.O,z.C = get_points (   C.apo   ) 
+   z.D = C.apo : antipode (z.C)
+   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}
+\end{verbatim}
+
+\begin{tkzelements}
 z.A = point : new ( 0 , 0 )
 z.B = point : new ( 6 , 0 )  
 L.AB =line: new (z.A,z.B)
@@ -546,7 +928,7 @@
 \tkzMarkAngles[mark=||](A,P,D D,P,B)
 \end{tikzpicture}
 
-Remark: |\tkzUseLua{point.mod(z.P-z.A)/point.mod(z.P-z.B)}| = \tkzUseLua{point.mod(z.P-z.A)/point.mod(z.P-z.B)}
+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)
 
 % subsection methods_from_class_line (end)

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-misc.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -5,7 +5,7 @@
 \bgroup
 \catcode`_=12 
 \small
-\captionof{table}{Math constants and functions.}
+\captionof{table}{Math constants and functions.}\label{misc}
 \begin{tabular}{ll}
 \toprule
 \textbf{contants or functions} & \textbf{Comments}\\
@@ -17,21 +17,31 @@
 %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) See (\ref{ssub: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 See (\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|   \\
 \Igfct{package}{tkzUseLua (variable)}   & |\textbackslash\tkzUseLua{a}| prints  the value of a\\
 %parabola (a,b,c)   & to get   \\
 \Igfct{math}{value (v) }     &  apply |scale * value |    \\
 \Igfct{math}{real (v) }     &  apply  | value /scale |     \\
-\Igfct{math}{angle\_normalize (a) }   &  to get a value between 0 and $2\pi$ \\
-\Igfct{misc}{radical\_center (C1,C2,C3)} & see \ref{sub:radical_center}    \\
-\Igfct{misc}{radical\_circle (C1,C2,C3)} & see \ref{sub:radical_circle}  \\
+\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  \\
 \bottomrule
 \end{tabular}
 \egroup
 
+\subsection{Length of a segment} % (fold)
+\label{sub:length_of_a_segment}
+|length(z.A,z.B)| is a shortcut for |point.abs(z.A-z.B)|. This avoids the need to use complexes.
+
+% subsection length_of_a_segment (end)
+
+
 \subsection{Harmonic division with tkzphi } % (fold)
 \label{sub:harmonic_division_with_tkzphi}
 \begin{tkzexample}[latex=0cm,small,code only]
@@ -111,7 +121,7 @@
 
 % subsection function_islinear (end)
 
-\subsection{Function  \tkzfname{value} }% (fold)
+\subsection{Function  value }% (fold)
 \label{sub:function_value}
 
 value to apply scaling if necessary
@@ -120,7 +130,7 @@
 
 % subsubsection function_value (end)
 
-\subsubsection{Function  \tkzfname{real} }% (fold)
+\subsubsection{Function  real }% (fold)
 \label{ssub:function_real}
 
 If |scale = 1.2| with a = 6 then real(a) = $6 / 1.2 = 5$ .
@@ -135,31 +145,30 @@
 
 
 \begin{minipage}{.5\textwidth}
-   \begin{verbatim}
-   \begin{tkzelements}
-      z.A            = point : new (0 , 0)
-      z.B            = point : new (4 , 3)
-      z.C            = point : new (2 , 5)
-      L.AB           = line : new (z.A,z.B)
-      d              = L.AB : distance (z.C)
-      l              = L.AB.length
-      z.H            = L.AB : projection (z.C)
-   \end{tkzelements}
-   % possible here \tkzUseLua{L.AB.length}
-   \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}$}
-   \tkzLabelSegment[below left,draw](C,H){$AB = \tkzUseLua{l}$}
-   \end{tikzpicture}
-   \end{verbatim}
+\begin{verbatim}
+\begin{tkzelements}
+   z.A            = point : new (0 , 0)
+   z.B            = point : new (3 , 2)
+   z.C            = point : new (2 , 5)
+   L.AB           = line : new (z.A,z.B)
+   d              = L.AB : distance (z.C)
+   l              = L.AB.length
+   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 right,draw](C,H){$CH = \tkzUseLua{d}$}
+\tkzLabelSegment[below right,draw](A,B){$AB = \tkzUseLua{l}$}
+\end{tikzpicture}
+\end{verbatim}
 \end{minipage}
 \begin{minipage}{.5\textwidth}
 \begin{tkzelements}
    z.A            = point : new (0 , 0)
-   z.B            = point : new (4 , 3)
+   z.B            = point : new (3 , 2)
    z.C            = point : new (2 , 5)
    L.AB           = line : new (z.A,z.B)
    d              = L.AB : distance (z.C)
@@ -166,13 +175,14 @@
    l              = L.AB.length
    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}$}
-\tkzLabelSegment[below left,draw](C,H){$AB = \tkzUseLua{l}$}
+\tkzLabelSegment[above right,draw](C,H){$CH = \tkzUseLua{d}$}
+\tkzLabelSegment[below right,draw](A,B){$AB = \tkzUseLua{l}$}
 \end{tikzpicture}
 \end{minipage}
 % subsection transfer_from_lua_to_tex (end)
@@ -280,7 +290,6 @@
 \end{tikzpicture}
 \hspace*{\fill}
 \end{minipage}
-
 % subsection get_angle (end)
 
 \subsection{Dot or scalar product} % (fold)
@@ -343,6 +352,64 @@
 |isortho(z.a,z.b,z.c)| gives |true| if the line $(ab)$ is orthogonal to the line $(ac)$.
 % subsection alignment_or_orthogonality (end)
 
+\subsection{Bisector and altitude} % (fold)
+\label{sub:bisector_and_altitude}
+These functions are useful if you don't need to create a useful triangle object for the rest of your code.
+
+\begin{minipage}{.5\textwidth}
+   \begin{verbatim}
+\begin{tkzelements}
+   z.a   = point: new (0, 0)
+   z.b   = point: new (5, -2)
+   z.c   = point: new (2, 3)
+   z.i   = bisector (z.a,z.c,z.b).pb
+   z.h   = altitude (z.b,z.a,z.c).pb
+   angic = tkzround ( get_angle (z.a,z.i,z.c),2)
+   angci = tkzround ( get_angle (z.a,z.b,z.i),2)
+   z.e = bisector_ext (z.a,z.b,z.c).pb
+\end{tkzelements}
+
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygon(a,b,c)
+   \tkzDrawSegments(a,i b,h a,e)
+   \tkzDrawPoints(a,b,c,i,h)
+   \tkzLabelPoints(a,b)
+   \tkzLabelPoints[above](c,i,h)
+   \tkzMarkAngle[->](i,a,c)
+   \tkzLabelAngle[font=\tiny,pos=.75](i,a,c){\tkzUseLua{angci}}
+   \tkzMarkAngle[<-](b,a,i)
+   \tkzLabelAngle[font=\tiny,pos=.75](b,a,i){\tkzUseLua{angic}}
+\end{tikzpicture}
+   \end{verbatim}
+\end{minipage}
+\begin{minipage}{.5\textwidth}
+\begin{tkzelements}
+   z.a   = point: new (0, 0)
+   z.b   = point: new (5, -2)
+   z.c   = point: new (2, 3)
+   z.i   = bisector (z.a,z.c,z.b).pb
+   z.h   = altitude (z.b,z.a,z.c).pb
+   angic = tkzround ( get_angle (z.a,z.i,z.c),2)
+   angci = tkzround ( get_angle (z.a,z.b,z.i),2)
+   z.e = bisector_ext (z.a,z.b,z.c).pb
+\end{tkzelements}
+\hspace{\fill}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygon(a,b,c)
+   \tkzDrawSegments(a,i b,h a,e)
+   \tkzDrawPoints(a,b,c,i,h)
+   \tkzLabelPoints(a,b)
+   \tkzLabelPoints[above](c,i,h)
+   \tkzMarkAngle[->](i,a,c)
+   \tkzLabelAngle[font=\tiny,pos=.75](i,a,c){\tkzUseLua{angci}}
+   \tkzMarkAngle[<-](b,a,i)
+   \tkzLabelAngle[font=\tiny,pos=.75](b,a,i){\tkzUseLua{angic}}
+\end{tikzpicture}
+\end{minipage}
+% subsection bisector_and_altitude (end)
+
 \subsection{Other functions} % (fold)
 \label{sub:other_functions}
 
@@ -349,53 +416,7 @@
 Not documented because still in beta version: |parabola|, |Cramer22|, |Cramer33|.
 
 % subsection other_functions (end)
+% section math_functions (end)
 
-% section math_functions (end)
-% % section classes_and_objects (end)
 \endinput
 
-
-
-
-% \bgroup
-% \catcode`_=12
-% \begin{table}[H]
-% \small
-% \begin{center}
-% \caption{functions\_polygons.lua }
-% \begin{tabular}{lll}
-% \toprule
-% \textbf{Functions} & \textbf{Comments}\\
-% \midrule
-% function square (a,b)  \\
-% function parallelogram (a,b,c) \\
-% \bottomrule
-% \end{tabular}
-% \end{center}
-% \end{table}
-% \egroup
-
-
-% \bgroup
-% \catcode`_=12
-% \begin{table}[H]
-% \small
-% \begin{center}
-% \caption{elements\_vectors.lua    }
-% \begin{tabular}{lll}
-% \toprule
-% \textbf{Methods} & \textbf{Comments}\\
-% \midrule
-% vector = {} class vector  \\
-% \Imeth{vector}{function vector:  new (z1,z2)} &  st, ed   \\
-% \Imeth{vector}{function vector: normalize  ()} &\\
-% \bottomrule
-% \end{tabular}
-% \end{center}
-% \end{table}
-% \egroup
-
-
-
-
-\endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-parallelogram.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-parallelogram.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-parallelogram.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -14,7 +14,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Parallelogram attributes.}
+\captionof{table}{Parallelogram attributes.}\label{parallelogram:att}
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes}        & \textbf{Application}  &  \\
@@ -93,7 +93,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Parallelogram methods.}
+\captionof{table}{Parallelogram methods.}\label{parallelogram:met}
 \begin{tabular}{ll}
 \toprule
 \textbf{Methods} & \textbf{Comments}    \\

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-point.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -97,15 +97,15 @@
 \bgroup
 \small
 \catcode`_=12
-\captionof{table}{Point attributes.}
+\captionof{table}{Point attributes.}\label{point:att}  
 \begin{tabular}{lll}
 \toprule
-\textbf{Attributes}  & \textbf{Application}\\
-\Iattr{point}{re}    &  |z.A.re|   &\tkzar |z.A = point:new (1,2) x = z.A.re|=1\\
-\Iattr{point}{im}    &  |z.A.im|   &\tkzar |z.A = point:new (1,2) y= z.A.im|=2\\
-\Iattr{point}{type}  &  |z.A.type| &\tkzar |z.A.type = 'point'|\\  
-\Iattr{point}{argument} &  |z.A.argument| &\tkzar |z.A.argument $\approx$ 0.78539816339745|\\
-\Iattr{point}{module}   &  |z.A.module|   &\tkzar |z.A.module| $\approx$ |2.2360...| =$\sqrt{5}$\\
+\textbf{Attributes}     & \textbf{Application}& \textbf{Example}\\
+\Iattr{point}{re}       &  |z.A.re = 1|    & see (\ref{ssub:methods}) \\
+\Iattr{point}{im}       &  |z.A.im = 2|    &see (\ref{ssub:methods})  \\
+\Iattr{point}{type}     &  |z.A.type = 'point|  & \\  
+\Iattr{point}{argument} &  |z.A.argument $\approx$ 0.78539816339745| & see (\ref{ssub:example_point_attributes})\\
+\Iattr{point}{module}   & |z.A.module| $\approx$ |2.2360...| =$\sqrt{5}$ & see (\ref{ssub:example_point_attributes})\\
 \bottomrule
 \end{tabular}
 \egroup
@@ -126,13 +126,13 @@
 \end{tkzelements}
 \end{verbatim}
 \pgfkeys{/pgf/number format/.cd,std,precision=2}
-\let\pmpn\pgfmathprintnumber  
+\let\pmpn\pgfmathprintnumber
 \DeleteShortVerb{\|}
 
 \begin{verbatim}
 \begin{tikzpicture}[scale = 1]
 \pgfkeys{/pgf/number format/.cd,std,precision=2}
-\let\pmpn\pgfmathprintnumber 
+\let\pmpn\pgfmathprintnumber
 \tkzDefPoints{2/4/M,2/0/A,0/0/O,0/4/B}
 \tkzLabelPoints(O)
 \tkzMarkAngle[fill=gray!30,size=1](A,O,M)
@@ -154,7 +154,7 @@
 \begin{center}
    \begin{tikzpicture}
    \pgfkeys{/pgf/number format/.cd,std,precision=2}
-   \let\pmpn\pgfmathprintnumber 
+   \let\pmpn\pgfmathprintnumber
    \tkzDefPoints{2/4/M,2/0/A,0/0/O,0/4/B}
    \tkzLabelPoints(O)
    \tkzMarkAngle[fill=gray!30,size=1](A,O,M)
@@ -172,7 +172,7 @@
    \begin{scope}[every annotation/.style={fill=lightgray!15,anchor = east}]
    \node [annotation,font =\small,text width=6cm] at (current bounding box.west) {
 Attributes of \texttt{z.M}
-   \begin{itemize} 
+   \begin{itemize}
    \item \texttt{z.M.re} = 1
    \item \texttt{z.M.im} = 2
    \item \texttt{z.M.type} = 'point'
@@ -184,7 +184,7 @@
    \end{tikzpicture}
 \end{center}
 
-\MakeShortVerb{\|}
+ \MakeShortVerb{\|}
     \hspace*{\fill}
  %  \caption{Class Point}
 % subsubsection example_point_attributes (end)
@@ -192,13 +192,13 @@
 
 \subsubsection{Argand diagram} % (fold)
 \label{ssub:argand_diagram}
-\normalsize	
+\normalsize
 \begin{minipage}{\textwidth}
    \begin{verbatim}
    \begin{tkzelements}
       z.A = point : new ( 2 , 3 )
-      z.O = point : new ( 0 , 0 ) 
-      z.I = point : new ( 1 , 0 ) 
+      z.O = point : new ( 0 , 0 )
+      z.I = point : new ( 1 , 0 )
    \end{tkzelements}
    \hspace{\fill}\begin{tikzpicture}
       \tkzGetNodes
@@ -218,8 +218,8 @@
 \begin{minipage}{\textwidth}
    \begin{tkzelements}
       z.A = point : new ( 2 , 3 )
-      z.O = point : new ( 0 , 0 ) 
-      z.I = point : new ( 1 , 0 ) 
+      z.O = point : new ( 0 , 0 )
+      z.I = point : new ( 1 , 0 )
    \end{tkzelements}
    \hspace{\fill}\begin{tikzpicture}
       \tkzGetNodes
@@ -242,36 +242,36 @@
 \subsection{Methods of the class point} % (fold)
 \label{sub:methods_of_the_class_point}
 
-The methods described in the following table are standard. You'll find them in most of the examples at the end of this documentation. The result of the different methods presented in the following table is a \tkzNameObj{point}. 
+The methods described in the following table are standard. You'll find them in most of the examples at the end of this documentation. The result of the different methods presented in the following table is a \tkzNameObj{point}.
 
 \vspace{1em}
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Methods of the class point.}
-\begin{tabular}{lll}   
-\toprule   
-\textbf{Methods} & \textbf{Application}& \\  
+\captionof{table}{Methods of the class point.}\label{point:met}
+\begin{tabular}{lll}
+\toprule
+\textbf{Methods} & \textbf{Application}& \\
 \midrule
- new (a,b)    & |z.a = point : new(1,2)| &\tkzar  affix z.a=1+2i \\
- polar (radius, phi)  & |z.a = point : polar(1,math.pi/3)| &\tkzar  affix $cos(\pi/3)+sin(\pi/3)i$ \\
- polar_deg (radius, phi) &    phi in deg    &\tkzar  polar coordinates phi deg \\
-\midrule 
- \textbf{Points} &&\\
-\midrule 
- north(d) & see \ref{sub:power_v2}    |d| distance to the point & d=1 1 if empty  \\
- south(d) &   \\
- east(d)  &   \\
- west(d)  &   \\
- normalize() &  |z.b = z.a: normalize ()| &\tkzar  |z.b| = 1  and z.a = k$\times$ z.b \\
- get_points (obj)     & retrieves points from the object &    \\ 
- \midrule 
+\Imeth{point}{new(r, r)}    & |z.A = point : new(1,2)| & see (\ref{ssub:method_normalize}) \\
+\Imeth{point}{polar (d, an)}  & |z.A = point : polar(1,math.pi/3)| &  see (\ref{sub:archimedes} )\\
+\Imeth{point}{polar\_deg an} &    an in deg    &  polar coordinates an deg \\
+\midrule
+\textbf{Points} &&\\
+\midrule
+\Imeth{point}{north(r)} & |r| distance to the point (1 if empty) & see (\ref{sub: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 ()| &  see (\ref{ssub:method_normalize}) \\
+\Imeth{point}{get\_points (obj)}     & retrieves points from the object &    \\
+ \midrule
   \textbf{Transformations} &&\\
  \midrule
-  symmetry(obj) & obj : point,line,etc. &\tkzar z.a:symmetry (C.OH)  \\
- rotation(angle , obj)  & point,line,etc.  &\tkzar  rotation center a\\
-  homothety(k,obj)     & |z.c = z.a : homothety (2,z.b)| &    \\
-\bottomrule % 
+  \Imeth{point}{symmetry(obj)} & obj : point, line, etc. & see (\ref{ssub:object_symmetry}) \\
+ \Imeth{point}{rotation(an , obj)}  & point, line, etc.  &  see (\ref{ssub:object_rotation})\\
+  \Imeth{point}{homothety(r,obj)}     & |z.c = z.a : homothety (2,z.b)| & see (\ref{sub:homothety})   \\
+\bottomrule %
 \end{tabular}
 \egroup
 
@@ -278,17 +278,18 @@
 \subsubsection{Example: 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 (see the following example).
 If |d| is absent then it is considered equal to 1.
 
 \begin{minipage}{.5\textwidth}
 \begin{verbatim}
 \begin{tkzelements}
-   z.O   = point : new ( 0, 0 ) 
-   z.A   = z.O : east () 
-   z.Ap   = z.O : east (2) : north (2)
-   z.B   = z.O : north () 
-   z.C   = z.O : west () 
-   z.D   = z.O : south () 
+   z.O   = point : new ( 0, 0 )
+   z.A   = z.O : east ()
+   z.Ap  = z.O : east (2) : north (2)
+   z.B   = z.O : north ()
+   z.C   = z.O : west ()
+   z.D   = z.O : south ()
 \end{tkzelements}
 \begin{tikzpicture}
    \tkzGetNodes
@@ -300,12 +301,12 @@
 \begin{minipage}{.5\textwidth}
 \begin{tkzelements}
    scale = 1.5
-   z.O = point : new ( 0, 0 ) 
-   z.A = z.O : east () 
+   z.O = point : new ( 0, 0 )
+   z.A = z.O : east ()
    z.Ap = z.O : east (2) : north (2)
-   z.B = z.O : north () 
-   z.C = z.O : west () 
-   z.D = z.O : south () 
+   z.B = z.O : north ()
+   z.C = z.O : west ()
+   z.D = z.O : south ()
 \end{tkzelements}
 \hspace{\fill}
 \begin{tikzpicture}
@@ -317,8 +318,66 @@
 \end{minipage}
 % subsubsection example_method_imeth_point_north_d (end)
 
+
+\subsubsection{Length transfer} % (fold)
+\label{ssub:report_de_distance}
+
+Use of |north and east| functions linked to points, to transfer lengths, see (\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}{polar} } % (fold)
 \label{ssub:example_polar_method}
+
+This involves defining a point using its modulus and argument.
+
 \begin{minipage}{0.6\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
@@ -327,7 +386,7 @@
    z.F     = point:   polar (3, math.pi/3)
 \end{tkzelements}
 \begin{tikzpicture}
-   \tkzGetNodes 
+   \tkzGetNodes
    \tkzDrawCircle(O,A)
    \tkzDrawSegments[new](O,A)
    \tkzDrawSegments[purple](O,F)
@@ -345,7 +404,7 @@
 \end{tkzelements}
 \hspace*{\fill}
 \begin{tikzpicture}
-\tkzGetNodes 
+\tkzGetNodes
 \tkzDrawCircle(O,A)
 \tkzDrawSegments[new](O,A)
 \tkzDrawSegments[purple](O,F)
@@ -356,8 +415,57 @@
 \end{minipage}
 % subsubsection example_polar_method (end)
 
-\subsubsection{Example: rotation of points} % (fold)
+\subsubsection{Method \Imeth{point}{normalize ()}} % (fold)
+\label{ssub:method_normalize}
+
+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{verbatim}
+\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}
+\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}
+\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{Example: \Imeth{point}{rotation of points}} % (fold)
 \label{ssub:example_rotation_of_points}
+
+The arguments are the angle of rotation in radians, and here a list of points.
+
 \begin{minipage}{.6\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
@@ -398,7 +506,7 @@
 \end{minipage}
 % subsubsection example_rotation_of_points (end)
 
-\subsubsection{Object rotation} % (fold)
+\subsubsection{Object \Imeth{point}{rotation}} % (fold)
 \label{ssub:object_rotation}
 Rotate a triangle by an angle of $\pi/6$ around $O$.
 
@@ -405,18 +513,18 @@
 \begin{minipage}{.5\textwidth}
    \begin{verbatim}
 \begin{tkzelements}
-z.O = point : new ( -1 , -1 ) 
-z.A = point : new ( 2 , 0 ) 
-z.B = point : new ( 5 , 0 ) 
-L.AB = line : new (z.A,z.B)
-T.ABC = L.AB : equilateral ()
-S.fig = L.AB : square ()
-_,_,z.E,z.F = get_points (	S.fig	) 
-S.new = z.O : rotation (math.pi/3,S.fig)
-_,_,z.Ep,z.Fp = get_points (	S.new	) 
-z.C = T.ABC.pc
-T.ApBpCp = z.O : rotation (math.pi/3,T.ABC)
-z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp) 
+   z.O   = point : new ( -1 , -1 )
+   z.A   = point : new ( 2 , 0 )
+   z.B   = point : new ( 5 , 0 )
+   L.AB  = line : new (z.A,z.B)
+   T.ABC = L.AB : equilateral ()
+   S.fig = L.AB : square ()
+   _,_,z.E,z.F = get_points (   S.fig   )
+   S.new = z.O : rotation (math.pi/3,S.fig)
+   _,_,z.Ep,z.Fp = get_points (   S.new   )
+   z.C = T.ABC.pc
+   T.ApBpCp = z.O : rotation (math.pi/3,T.ABC)
+   z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp)
 \end{tkzelements}
 
 \begin{tikzpicture}
@@ -430,18 +538,18 @@
 \end{minipage}
 \begin{minipage}{.5\textwidth}
 \begin{tkzelements}
-z.O = point : new ( -1 , -1 ) 
-z.A = point : new ( 2 , 0 ) 
-z.B = point : new ( 5 , 0 ) 
+z.O = point : new ( -1 , -1 )
+z.A = point : new ( 2 , 0 )
+z.B = point : new ( 5 , 0 )
 L.AB = line : new (z.A,z.B)
 T.ABC = L.AB : equilateral ()
 S.fig = L.AB : square ()
-_,_,z.E,z.F = get_points (	S.fig	) 
+_,_,z.E,z.F = get_points (   S.fig   )
 S.new = z.O : rotation (math.pi/3,S.fig)
-_,_,z.Ep,z.Fp = get_points (	S.new	) 
+_,_,z.Ep,z.Fp = get_points (   S.new   )
 z.C = T.ABC.pc
 T.ApBpCp = z.O : rotation (math.pi/3,T.ABC)
-z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp) 
+z.Ap,z.Bp,z.Cp = get_points ( T.ApBpCp)
 \end{tkzelements}
 
 \hspace{\fill}\begin{tikzpicture}
@@ -453,12 +561,12 @@
        \tkzDrawArc[delta=0,->,dashed,red](O,A)(A')
        \tkzDrawSegments[dashed,red](O,A O,A')
     \end{scope}
- 
+
 \end{tikzpicture}
 \end{minipage}
 % subsubsection object_rotation (end)
 
-\subsubsection{Object symmetry} % (fold)
+\subsubsection{Object \Imeth{point}{symmetry}} % (fold)
 \label{ssub:object_symmetry}
 \begin{minipage}{.5\textwidth}
    \begin{verbatim}
@@ -470,7 +578,7 @@
        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')
@@ -490,7 +598,7 @@
     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')
@@ -502,5 +610,6 @@
 \end{minipage}
 % subsubsection object_symmetry (end)
 % subsection methods_of_the_class_point (end)
+
 % section class_point (end)
 \endinput
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-quadrilateral.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-quadrilateral.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-quadrilateral.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -13,7 +13,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{rectangle attributes.}
+\captionof{table}{rectangle attributes.}\label{quadrilateral:att}
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes}         & \textbf{Application} & \\
@@ -88,7 +88,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Quadrilateral methods.}
+\captionof{table}{Quadrilateral methods.}\label{quadrilateral:met}
 \begin{tabular}{ll}
 \toprule
 \textbf{Methods} & \textbf{Comments}    \\

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-rectangle.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -14,7 +14,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{rectangle attributes.}
+\captionof{table}{rectangle attributes.}\label{rectangle:att}
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes}       & \textbf{Application} & \\
@@ -95,7 +95,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Rectangle methods.}
+\captionof{table}{Rectangle methods.}\label{rectangle:met}
 \begin{tabular}{lll}
 \toprule
 \textbf{Methods} & \textbf{Comments}  &  \\

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-regular.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -11,20 +11,20 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Regular\_polygon attributes.}
+\captionof{table}{Regular\_polygon attributes.}\label{regular:att}
 \begin{tabular}{ll}
 \toprule
-\textbf{Attributes}     & \textbf{Application}  \\
-\Iattr{square}{center}  & |z.I = RP.IA.center|  \\
-\Iattr{square}{table}   & array containing all vertex affixes  \\
-\Iattr{square}{through} & first vertex  \\
-\Iattr{square}{circle}  & defines the circle with center I passing through A \\
-\Iattr{square}{type}    & |RP.IA.type= 'regular\_polygon'|   \\
-\Iattr{square}{side}    & |s = RP.IA.side| ; s = length of side\\
-\Iattr{square}{exradius}&  |S.AB.exradius| ; radius of the circumscribed circle \\
-\Iattr{square}{inradius}&  |S.AB.inxradius| ; radius of the inscribed circle   \\
-\Iattr{square}{proj}    &  |RP.IA.proj| ; projection of the center on one side   \\
-\Iattr{square}{angle}   &  |RP.IA.angle| ; angle formed by the center and 2 consecutive vertices   \\
+\textbf{Attributes}      & \textbf{Application}  \\
+\Iattr{regular}{center}  & |z.I = RP.IA.center|  \\
+\Iattr{regular}{table}   & array containing all vertex affixes  \\
+\Iattr{regular}{through} & first vertex  \\
+\Iattr{regular}{circle}  & defines the circle with center I passing through A \\
+\Iattr{regular}{type}    & |RP.IA.type= 'regular\_polygon'|   \\
+\Iattr{regular}{side}    & |s = RP.IA.side| ; s = length of side\\
+\Iattr{regular}{exradius}&  |S.AB.exradius| ; radius of the circumscribed circle \\
+\Iattr{regular}{inradius}&  |S.AB.inxradius| ; radius of the inscribed circle   \\
+\Iattr{regular}{proj}    &  |RP.IA.proj| ; projection of the center on one side   \\
+\Iattr{regular}{angle}   &  |RP.IA.angle| ; angle formed by the center and 2 consecutive vertices   \\
 \bottomrule %
 \end{tabular}
 \egroup
@@ -81,7 +81,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Circle methods.}
+\captionof{table}{Circle methods.}\label{regular:met}
 \begin{tabular}{ll}
 \toprule
 \textbf{Methods} & \textbf{Comments}    \\

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-square.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-square.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-square.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -13,7 +13,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Square attributes.}
+\captionof{table}{Square attributes.}\label{square:att}
 \begin{tabular}{lll}
 \toprule
 \textbf{Attributes}        & \textbf{Application}  &  \\
@@ -98,7 +98,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Square methods.}
+\captionof{table}{Square methods.}\label{square:met}
 \begin{tabular}{lll}
 \toprule
 \textbf{Methods} & \textbf{Comments}&    \\

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes-triangle.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -13,7 +13,7 @@
 \bgroup
 \catcode`_=12
 \small
-\captionof{table}{Triangle attributes.}
+\captionof{table}{Triangle attributes.}\label{triangle:att}
 \begin{tabular}{ll}
 \toprule
 \textbf{Attributes}     & \textbf{Application}\\
@@ -114,7 +114,7 @@
 \catcode`_=12
 \small
 \begin{minipage}{\textwidth}
-\captionof{table}{triangle methods.}
+\captionof{table}{triangle methods.}\label{triangle:met}
 \begin{tabular}{ll}
 \toprule
 \textbf{Methods} & \textbf{Comments}     \\
@@ -154,6 +154,10 @@
 \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)| See (\ref{misc})
+
 \clearpage\newpage
 \bgroup
 \catcode`_=12
@@ -210,6 +214,7 @@
 \subsubsection{Euler line} % (fold)
 \label{ssub:euler_line}
 
+\begin{minipage}{.5\textwidth}
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
    z.A           = point: new (0 , 0)
@@ -229,7 +234,7 @@
    \tkzDrawCircle[red](N,I)
    \tkzDrawCircles[teal](O,A)
    \tkzDrawSegments(A,P B,Q C,R)
-   \tkzDrawSegments[red](A,I B,J C,K)
+   \tkzDrawSegments[red](A,I B,J C,K)\include{TKZdoc-elements-classes-triangle.tex}
    \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,H)
@@ -236,9 +241,9 @@
    \tkzLabelPoints[below](N,O,G)
 \end{tikzpicture}
 \end{tkzexample}
-
+\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 (1.5 , 3.5)
@@ -250,7 +255,6 @@
  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
@@ -264,7 +268,8 @@
 \tkzLabelPoints(A,B,C,I,J,K,P,Q,R)
 \tkzLabelPoints[below](N,O,G,H)
 \end{tikzpicture}
-\hspace*{\fill}
+\end{minipage}
+
 %\caption{Euler line}
 % subsubsection euler_line (end)
 
@@ -271,47 +276,33 @@
 \subsection{Harmonic division and bisector} % (fold)
 \label{sub:harmonic_division_and_bisector}
 
-\begin{tkzexample}[small,code only]
+\begin{minipage}{.4\textwidth}
+   \begin{verbatim}
+   \begin{tkzelements}  
+      scale    =  .4
+      z.A      = point: new (0 , 0)
+      z.B      = point: new (6 , 0)
+      z.M      = point: new (5 , 4)
+      T.AMB    = triangle : new (z.A,z.M,z.B)
+      L.AB     = T.AMB.ca
+      L.bis    = T.AMB : bisector (1)
+      z.C      = L.bis.pb
+      L.bisext = T.AMB : bisector_ext (1)
+      z.D      = intersection (L.bisext,L.AB)
+      L.CD     = line: new (z.C,z.D)
+      z.O      = L.CD.mid
+      L.AM     = line: new (z.A,z.M)
+      L.LL     = L.AM : ll_from (z.B)
+      L.MC     = line: new (z.M,z.C)
+      L.MD     = line: new (z.M,z.D)
+      z.E      = intersection (L.LL,L.MC)
+      z.F      = intersection (L.LL,L.MD)
+   \end{tkzelements}
+   \end{verbatim}
+\end{minipage}
+\begin{minipage}{.6\textwidth}
 \begin{tkzelements}  
-   scale    =  .75
-   z.A      = point: new (0 , 0)
-   z.B      = point: new (6 , 0)
-   z.M      = point: new (5 , 4)
-   T.AMB    = triangle : new (z.A,z.M,z.B)
-   L.AB     = T.AMB.ca
-   L.bis    = T.AMB : bisector (1)
-   z.C      = L.bis.pb
-   L.bisext = T.AMB : bisector_ext (1)
-   z.D      = intersection (L.bisext,L.AB)
-   L.CD     = line: new (z.C,z.D)
-   z.O      = L.CD.mid
-   L.AM     = line: new (z.A,z.M)
-   L.LL     = L.AM : ll_from (z.B)
-   L.MC     = line: new (z.M,z.C)
-   L.MD     = line: new (z.M,z.D)
-   z.E      = intersection (L.LL,L.MC)
-   z.F      = intersection (L.LL,L.MD)
-\end{tkzelements}
-\begin{tikzpicture}
-   \tkzGetNodes
-   \tkzDrawPolygon(A,B,M)
-   \tkzDrawCircle[purple](O,C)
-   \tkzDrawSegments[purple](M,E M,D E,F)
-   \tkzDrawSegments(D,B)
-   \tkzDrawPoints(A,B,M,C,D,E,F)
-   \tkzLabelPoints[below right](A,B,C,D,E)
-   \tkzLabelPoints[above](M,F)
-   \tkzFillAngles[opacity=.4,cyan!20](A,M,B B,E,M)
-   \tkzFillAngles[opacity=.4,purple!20](B,M,F M,F,B)
-   \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
-   \tkzMarkAngles[mark=||](A,M,E E,M,B B,E,M)
-   \tkzMarkAngles[mark=|](B,M,F M,F,B)
-   \tkzMarkSegments(B,E B,M B,F)
-\end{tikzpicture}
-\end{tkzexample}
-
-\begin{tkzelements}  
-   scale =.75
+   scale =.4
    z.A  = point: new (0 , 0)
    z.B  = point: new (6 , 0)
    z.M  = point: new (5 , 4)
@@ -330,9 +321,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)
@@ -349,8 +338,29 @@
   \tkzMarkAngles[mark=|](B,M,F M,F,B)
   \tkzMarkSegments(B,E B,M B,F)
 \end{tikzpicture}
-\hspace*{\fill}
+\end{minipage}
 
+\begin{verbatim}
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawPolygon(A,B,M)
+   \tkzDrawCircle[purple](O,C)
+   \tkzDrawSegments[purple](M,E M,D E,F)
+   \tkzDrawSegments(D,B)
+   \tkzDrawPoints(A,B,M,C,D,E,F)
+   \tkzLabelPoints[below right](A,B,C,D,E)
+   \tkzLabelPoints[above](M,F)
+   \tkzFillAngles[opacity=.4,cyan!20](A,M,B B,E,M)
+   \tkzFillAngles[opacity=.4,purple!20](B,M,F M,F,B)
+   \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
+   \tkzMarkAngles[mark=||](A,M,E E,M,B B,E,M)
+   \tkzMarkAngles[mark=|](B,M,F M,F,B)
+   \tkzMarkSegments(B,E B,M B,F)
+\end{tikzpicture}
+\end{verbatim}
+
+
+
 % subsection harmonic_division_and_bisector (end)
 % subsection methods_of_the_class_triangle (end)
 % section classe_triangle (end)

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-classes.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -49,7 +49,6 @@
    \end{tkzelements}
 \end{verbatim}
 
-
 \begin{tkzelements}
    z.A = point (1,0)
    z.B = z.A : north (2)

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-examples.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -321,10 +321,8 @@
 \tkzMarkRightAngle[opacity=.4,fill=gray!20](C,M,D)
 \end{tikzpicture}
 \hspace*{\fill}
+% subsection apollonius_and_circle_circumscribed (end)
 
-
-%subsection apollonius_and_circle_circumscribed (end)
-%
 \subsection{Apollonius circles in a triangle} % (fold)
 \label{sub:apollonius_circles}
 
@@ -415,6 +413,26 @@
 \tkzDrawLine(O1,O2)
 \end{tikzpicture}
 \hspace*{\fill}
+
+Same result using the function |T.ABC.ab : apollonius (k) |
+
+\begin{verbatim}
+   \begin{tkzelements}
+   scale       = .75
+   z.A         = point: new (0 , 0)
+   z.B         = point: new (6 , 0)
+   z.C         = point: new (4.5 , 1)
+   T.ABC       = triangle : new (z.A,z.B,z.C)
+   z.O         = T.ABC.circumcenter
+   C.AB        = T.ABC.ab : apollonius (length(z.C,z.A)/length(z.C,z.B))
+   z.w1,z.t1   = get_points ( C.AB )
+   C.AC        = T.ABC.ca : apollonius (length(z.B,z.C)/length(z.B,z.A))
+   z.w2,z.t2   = get_points ( C.AC )
+   C.AC        = T.ABC.bc : apollonius (length(z.A,z.B)/length(z.A,z.C))
+   z.w3,z.t3   = get_points ( C.AC )
+   \end{tkzelements}
+\end{verbatim}
+
 % subsection apollonius_circles (end)
 
 \subsection{Archimedes} % (fold)
@@ -471,8 +489,9 @@
 \tkzLabelPoints(A,O_1,O_2,E,F,C,D)
 \end{tikzpicture}
 \end{minipage}
-%\subsection{Bankoff circle} % (fold)
+% subsection archimedes (end)
 
+\subsection{Bankoff circle} % (fold)
 \label{sub:bankoff_circle}
 \begin{tkzexample}[small,code only]
 \begin{tkzelements}
@@ -1722,32 +1741,33 @@
 
 \begin{tkzexample}[latex=0cm,small,code only]
 \begin{tkzelements}
-   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 (2)
-   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)
+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[add=1 and 2](E,F)
+   \tkzDrawLine(E,F)
    \tkzDrawLine[add=.5 and .5](O,O')
-   \tkzDrawSegments(M,T M,T' M,K M,K')
+   \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{tikzpicture}
 \end{tkzexample}
 
 \begin{tkzelements}
@@ -1760,7 +1780,7 @@
 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 (2)
+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)
@@ -1768,18 +1788,18 @@
 _,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[add=1 and 2](E,F)
+\tkzDrawLine(E,F)
 \tkzDrawLine[add=.5 and .5](O,O')
-\tkzDrawSegments(M,T M,T' M,K M,K')
+\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}
+\end{tikzpicture}
+\hspace*{\fill}
 % subsection radical_axis_v2 (end)
 
 \subsection{Radical axis v3} % (fold)
@@ -1786,25 +1806,25 @@
 \label{sub:radical_axis_v3}
 
 \begin{tkzexample}[latex=0cm,small,code only]
-\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 (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)
+   \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')
-   \tkzDrawLine[add=.5 and 1](E,F)
+   \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')
@@ -1813,27 +1833,25 @@
 \end{tkzexample}
 
 \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 (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)
+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')
-\tkzDrawLine[add=.5 and 1](E,F)
+\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')
@@ -1853,10 +1871,11 @@
    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 (1.5)
-   L,_     = C.OB : tangent_from (z.M)
+   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)
+   _,L     = C.OpB : tangent_from (z.M)
    _,z.Tp  = get_points (L)
 \end{tkzelements}
 \begin{tikzpicture}
@@ -1863,11 +1882,11 @@
    \tkzGetNodes
    \tkzDrawCircles(O,B O',B)
    \tkzDrawSegments(M,T M,T')
-   \tkzDrawLine[add=1 and 1](E,F)
-   \tkzDrawLine[add=.3 and .3](O,O')
-   \tkzDrawPoints(O,O',B,E,F,T,T',M)
-   \tkzLabelPoints[below right](O,O',B,E,F,T,T')
-   \tkzDrawArc(M,T)(B)
+   \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{tkzexample}
 
@@ -1880,23 +1899,23 @@
    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 (1.5)
-   L,_     = C.OB : tangent_from (z.M)
+   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)
+   _,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')
-\tkzDrawLine[add=1 and 1](E,F)
-\tkzDrawLine[add=.3 and .3](O,O')
-\tkzDrawPoints(O,O',B,E,F,T,T',M)
-\tkzLabelPoints[below right](O,O',B,E,F,T,T')
-\tkzDrawArc(M,T)(B)
+   \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)
@@ -1980,7 +1999,7 @@
    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     = radical_circle (C.exa,C.exb,C.exc)
+   C.ortho     = C.exa : radical_circle (C.exb,C.exc)
    z.w,z.a     = get_points (C.ortho)
 \end{tkzelements}
 \begin{tikzpicture}
@@ -2006,7 +2025,7 @@
    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     = radical_circle (C.exa,C.exb,C.exc)
+   C.ortho     = C.exa : radical_circle (C.exb,C.exc)
    z.w,z.a     = get_points (C.ortho)
 \end{tkzelements}
 
@@ -2590,7 +2609,7 @@
    C.OpD       = circle :  new (z.Op,z.D)
    z.E,z.F     = get_points (C.OB : radical_axis (C.OpD))
    L.EF        = line : new (z.E,z.F)
-   z.M         = L.EF : point (2.25)
+   z.M         = L.EF : point (.25)
    L.T,L.Tp    = C.OB : tangent_from (z.M)
    L.K,L.Kp    = C.OpD : tangent_from (z.M)
    z.T         = L.T.pb
@@ -2601,7 +2620,7 @@
 \begin{tikzpicture}
    \tkzGetNodes
    \tkzDrawCircles(O,B O',D)
-   \tkzDrawLine[add=1 and 2,cyan](E,F)
+   \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)
@@ -2620,7 +2639,7 @@
 C.OpD = circle :  new (z.Op,z.D)
 z.E,z.F   = get_points (C.OB : radical_axis (C.OpD))
 L.EF  = line : new (z.E,z.F)
-z.M   = L.EF : point (2.25)
+z.M   = L.EF : point (.25)
 L.T,L.Tp  = C.OB : tangent_from (z.M)
 L.K,L.Kp  = C.OpD : tangent_from (z.M)
 z.T = L.T.pb
@@ -2633,7 +2652,7 @@
 \begin{tikzpicture}
 \tkzGetNodes
 \tkzDrawCircles(O,B O',D)
-\tkzDrawLine[add=1 and 2,cyan](E,F)
+\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)
@@ -2877,9 +2896,9 @@
    C.C0A   = circle : new (z.C_0,z.A)
    C.C1B   = circle : new (z.C_1,z.B)
    L.EF    = C.C0A : radical_axis (C.C1B)
-   z.M_0   = L.EF : point (2)
-   z.M_1   = L.EF : point (-1)
-   z.M_2   = L.EF : point (-2)
+   z.M_0   = L.EF : point (.4)
+   z.M_1   = L.EF : point (.1)
+   z.M_2   = L.EF : point (.6)
    C.orth0     = C.C0A : orthogonal_from (z.M_0)
    C.orth1     = C.C0A : orthogonal_from (z.M_1)
    C.orth2     = C.C0A : orthogonal_from (z.M_2)
@@ -2907,9 +2926,9 @@
    C.C0A   = circle :    new (z.C_0,z.A)
    C.C1B   = circle : new (z.C_1,z.B)
    L.EF    = C.C0A : radical_axis (C.C1B)
-   z.M_0   = L.EF : point (2)
-   z.M_1   = L.EF : point (-1)
-   z.M_2   = L.EF : point (-2)
+   z.M_0   = L.EF : point (.4)
+   z.M_1   = L.EF : point (.1)
+   z.M_2   = L.EF : point (.6)
    C.orth0     = C.C0A : orthogonal_from (z.M_0)
    C.orth1     = C.C0A : orthogonal_from (z.M_1)
    C.orth2     = C.C0A : orthogonal_from (z.M_2)

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-indepthstudy.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -703,8 +703,9 @@
 \label{sub:behind_the_objects}
 
 Before introducing objects, I only used functions whose parameters were points (comlexes). 
-For example, |z.m = midpoint_ (z.a,z.b)| defines the midpoint of points $a$ and $b$. Avec les objets, il faut d'abord définir la droite/sgment |L.ab| puis on obtient le milieu avec |z.m = L.ab.mid|.
 
+For example, |z.m = midpoint_ (z.a,z.b)| defines the midpoint of points $a$ and $b$. With objects, first define the line/sgment |L.ab| and then obtain the middle with |z.m = L.ab.mid|.
+
 I've kept the functions (which I'll call "primary") whose only arguments are points. They are distinguished from the others by a terminal underscore. In fact, all (almost) object-related functions depend on a primary function.
 
 We've just seen the case of the midpoint of a point, so let's look at two other cases:

Added: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-inversion.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-inversion.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-inversion.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -0,0 +1,4 @@
+\section{Inversion} % (fold)
+\label{sec:inversion}
+midcircless
+% section inversion (end)
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-inversion.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-main.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,6 +1,6 @@
 % !TEX TS-program = lualatex
 % encoding : utf8 
-% Documentation of tkz-elements v1.40c
+% Documentation of tkz-elements v1.82c
 % Copyright 2023  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{1.72c}
+\gdef\tkzversionofpack{1.82c}
 \gdef\tkzdateofpack{\today}
 \gdef\tkznameofdoc{tkz-elements.pdf}
-\gdef\tkzversionofdoc{1.72c}
+\gdef\tkzversionofdoc{1.82c}
 \gdef\tkzdateofdoc{\today}
 \gdef\tkzauthorofpack{Alain Matthes}
 \gdef\tkzadressofauthor{}
@@ -97,7 +97,7 @@
 \usepackage[english]{babel}
 \usepackage[normalem]{ulem}
 \usepackage{multirow,multido,booktabs,cellspace}
-\usepackage{shortvrb,bookmark,caption,enumitem} 
+\usepackage{shortvrb,bookmark,enumitem} 
 \usepackage{makeidx}
 \usepackage[most]{tcolorbox}
 
@@ -145,16 +145,15 @@
 \newcommand*{\tkzEHand}{\textcolor{red}{\lefthand}}
 %<---------------------------------------------------------------------------> 
 % settings styles
-\tkzSetUpColors[background=white,text=black]  
-\tkzSetUpCompass[color=orange, line width=.2pt,delta=10]
-\tkzSetUpArc[color=gray,line width=.2pt]
-\tkzSetUpPoint[size=2,color=teal]
-\tkzSetUpLine[line width=.2pt,color=teal]
-\tkzSetUpStyle[color=orange,line width=.2pt]{new}
-\tikzset{every picture/.style={line width=.2pt}}
-\tikzset{label angle style/.append style={color=teal,font=\footnotesize}} 
-\tikzset{label style/.append style={below,color=teal,font=\scriptsize}}
-\tikzset{new/.style={color=orange,line width=.2pt}} 
+
+\tkzSetUpColors[background=white,text=darkgray]  
+\tkzSetUpPoint[size=2,color=teal,fill=teal!10]
+\tkzSetUpLine[ultra thin,color=teal]
+\tkzSetUpCompass[color=orange,ultra thin,/tkzcompass/delta=10] 
+\tikzset{label style/.append style={below right,color=teal,font=\scriptsize}}
+\tikzset{new/.style={color=orange,ultra thin}} 
+\tikzset{step 1/.style={color=cyan,ultra thin}} 
+\tikzset{step 2/.style={color=purple,ultra thin}} 
 \def\tkzar{\hspace{1em}-->\hspace{1em}}
 
 \makeatletter\let\percentchar\@percentchar\makeatother
@@ -167,8 +166,11 @@
 \let\pmpn\pgfmathprintnumber
 
 \AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb
+
+
+
 \begin{document} 
-%   \LuaCodeDebugOn 
+\LuaCodeDebugOn 
   
 \parindent=0pt
 \tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}
@@ -210,6 +212,7 @@
 \input{TKZdoc-elements-why.tex}
 \input{TKZdoc-elements-presentation.tex}
 \input{TKZdoc-elements-convention.tex}
+\input{TKZdoc-elements-organization.tex}
 \input{TKZdoc-elements-transferts.tex}
 \input{TKZdoc-elements-classes.tex}
 \input{TKZdoc-elements-classes-point.tex}
@@ -229,4 +232,337 @@
 
 \clearpage\newpage
 \small\printindex
+
+\newpage
+\section{Cheat\_sheet} % (fold)
+\label{sec:cheat_sheet}
+
+% section cheat_sheet (end)
+|r| denotes a real number, |d| a positive real number, |n|an integer, |an| an angle, |b| a boolean, |s| a character string, |pt| a point, |v| variable, |L| a straight line, |C| a circle, |T| a triangle, |E| an ellipse, |Q| a quadrilateral, |P| a parallelogram, |R| a rectangle, |S| a square, |RP| a regular polygon, |O| an object (pt, L,C,T), . . a list of points or an object, < > optional argument. 
+
+\begin{multicols}{3}
+  
+\fbox{\textbf{Point}}\\
+\textbf{Attributes} table(\ref{point:att})      \\                       
+|re                        -> r|   \\
+|im                        -> r|   \\
+|type                      -> s|   \\
+|argument                  -> r|   \\
+|modulus                   -> d|   \\
+\textbf{Methods} table(\ref{point:met})      \\
+|+ - * /                   -> pt|  \\
+|..                        -> r|   \\
+|^                         -> r|   \\
+|conj                      -> pt|  \\
+|abs                       -> |    \\
+|mod                       -> |    \\
+|norm                      -> |    \\
+|arg                       -> r|   \\
+|get                       -> r,r| \\
+|sqrt                      -> pt|  \\
+|new                       -> pt|  \\
+|polar                     -> pt|  \\
+|polar_deg                 -> pt|  \\
+|north(d)                  -> pt|  \\
+|south(d)                  -> pt|  \\
+|east(d)                   -> pt|  \\
+|west(d)                   -> pt|  \\
+|normalize(pt)             -> pt|  \\
+|symmetry (...)            -> O|   \\
+|rotation (an , ...)       -> O|   \\
+|homothety (r , ...)       -> O|   \\
+                                   \\
+\fbox{\textbf{line}}               \\
+\textbf{Attributes} table(\ref{line:att})      \\
+|pa,pb                     -> pt|  \\
+|type                      -> s|   \\
+|mid                       -> pt|  \\
+|north_pa                  -> pt|  \\
+|north_pb                  -> pt|  \\
+|south_pa                  -> pt|  \\
+|south_pb                  -> pt|  \\
+|east                      -> pt|  \\
+|west                      -> pt|  \\
+|slope                     -> r|   \\
+|length                    -> d|   \\
+\textbf{Methods} table(\ref{line:met})     \\
+|new (pt,pt)               -> d|   \\
+|distance (pt)             -> d|   \\
+|slope ()                  -> r|   \\
+|in_out (pt)               -> b|   \\
+|in_out_segment (pt)       -> b|   \\
+|barycenter (r,r)          -> pt|  \\
+|point (t)                 -> pt|  \\
+|midpoint ()               -> pt|  \\
+|harmonic_int (pt)         -> pt|  \\
+|harmonic_ext (pt)         -> pt|  \\
+|harmonic_both (d)         -> pt|  \\
+|gold_ratio()              -> pt|  \\
+|normalize ()              -> pt|  \\
+|normalize_inv ()          -> pt|  \\
+|_north_pa (d)             -> pt|  \\
+|_north_pb (d)             -> pt|  \\               
+|_south_pa (d)             -> pt|  \\
+|_south_pb (d)             -> pt|  \\                  
+|_east (d)                 -> pt|  \\
+|_west (d)                 -> pt|  \\                 
+|translation (...)         -> O|   \\
+|projection (...)          -> O|   \\
+|reflection (...)          -> O|   \\
+|ll_from ( pt )            -> L|   \\
+|ortho_from ( pt )         -> L|   \\
+|mediator ()               -> L|   \\
+|circle ()                 -> C|   \\
+|circle_swap ()            -> C|   \\
+|diameter ()               -> C|   \\
+|apollonius (r)            -> C|   \\                     
+|equilateral (<swap>)      -> T|   \\
+|isosceles (an,<swap>)     -> T|   \\
+|school ()                 -> T|   \\
+|two_angles (an,an)        -> T|   \\
+|half ()                   -> T|   \\
+|sss (r,r,r)               -> T|   \\
+|sas (r,an)                -> T|   \\
+|ssa (r,an)                -> T|   \\
+|gold (<swap>)             -> T|   \\
+|euclide (<swap>)          -> T|   \\
+|golden (<swap>)           -> T|   \\
+|devine ()                 -> T|   \\
+|cheops ()                 -> T|   \\
+|pythagoras ()             -> T|   \\
+|sublime  ()               -> T|   \\
+|egyptian ()               -> T|   \\
+|square (<swap>)           -> T|   \\
+|report (r,pt)             -> T|   \\
+                                   \\
+\fbox{\textbf{triangle}}           \\
+\textbf{Attributes} table(\ref{triangle:att})      \\
+|pa,pb,pc                  -> pt|  \\
+|circumcenter              -> pt|  \\
+|centroid                  -> pt|  \\
+|incenter                  -> pt|  \\
+|eulercenter               -> pt|  \\
+|orthocenter               -> pt|  \\
+|spiekercenter             -> pt|  \\
+|type                      -> s|   \\
+|a                         -> d|   \\
+|b                         -> d|   \\
+|c                         -> d|   \\
+|ab                        -> L|   \\
+|bc                        -> L|   \\
+|ca                        -> L|   \\
+|alpha                     -> r|   \\
+|beta                      -> r|   \\
+|gamma                     -> r|   \\
+\textbf{Methods} table(\ref{triangle:met}) \\
+|new (pt,pt,pt)            -> pt|  \\
+|trilinear (r,r,r)         -> pt|  \\
+|barycentric (r,r,r)       -> pt|  \\
+|bevan_point ()            -> pt|  \\
+|mittenpunkt_point ()      -> pt|  \\
+|gergonne_point ()         -> pt|  \\
+|nagel_point ()            -> pt|  \\
+|feuerbach_point ()        -> pt|  \\
+|lemoine_point()           -> pt|  \\
+|symmedian_point()         -> pt|  \\
+|spieker_center()          -> pt|  \\
+|barycenter (r,r,r)        -> pt|  \\
+|base (u,v)                -> pt|  \\
+|euler_points ()           -> pt|  \\
+|nine_points ()            -> pt|  \\
+|point (t)                 -> pt|  \\
+|soddy_center ()           -> pt|  \\
+|euler_line ()             -> L|   \\
+|symmedian_line (n)        -> L|   \\
+|altitude (n)              -> L|   \\
+|bisector (n)              -> L|   \\
+|bisector_ext(n)           -> L|   \\
+|antiparallel(pt,n)        -> L|   \\
+|euler_circle ()           -> C|   \\
+|circum_circle()           -> C|   \\
+|in_circle ()              -> C|   \\
+|ex_circle (n)             -> C|   \\
+|first_lemoine_circle()    -> C|   \\
+|second_lemoine_circle()   -> C|   \\
+|spieker_circle()          -> C|   \\
+|soddy_circle ()           -> C|   \\
+|orthic()                  -> T|   \\
+|medial()                  -> T|   \\
+|incentral()               -> T|   \\
+|excentral()               -> T|   \\
+|intouch()                 -> T|   \\
+|contact()                 -> T|   \\
+|extouch()                 -> T|   \\
+|feuerbach()               -> T|   \\
+|anti ()                   -> T|   \\
+|tangential ()             -> T|   \\
+|cevian (pt)               -> T|   \\
+|symmedian ()              -> T|   \\
+|euler ()                  -> T|   \\
+|projection (pt)     -> pt,pt,pt|  \\
+|parallelogram ()          -> pt|  \\
+|area ()                   -> d|   \\
+|barycentric_coordinates(pt)|      \\
+                      |-> r,r,r|   \\
+|in_out (pt)               -> pt|  \\
+|check_equilateral ()      -> b|   \\
+\fbox{\textbf{circle}}             \\
+\textbf{Attributes} table(\ref{circle:att}) \\
+|center                    -> pt|  \\
+|through                   -> pt|  \\
+|north                     -> pt|  \\
+|south                     -> pt|  \\
+|east                      -> pt|  \\
+|west                      -> pt|  \\
+|opp                       -> pt|  \\
+|type                      -> s|   \\
+|radius                    -> d|   \\
+|ct                        -> L|   \\ 
+\textbf{Methods} table(\ref{circle:met})  \\
+|new (pt,pt)               -> C|   \\
+|radius (pt, r)            -> C|   \\
+|diameter (pt,pt)          -> C|   \\       
+|in_out (pt)               -> b|   \\     
+|in_out_disk (pt)          -> b|   \\     
+|circles_position (C)      -> s|   \\     
+|power (pt)                -> r|   \\     
+|antipode (pt)             -> pt|  \\     
+|midarc (pt,pt)            -> pt|  \\     
+|point (r)                 -> pt|  \\     
+|random_pt (lower, upper)  -> pt|  \\     
+|internal_similitude (C)   -> pt|  \\     
+|external_similitude (C)   -> pt|  \\       
+|radical_center(C,<C>)     -> pt|  \\
+|tangent_at (pt)           -> L|   \\     
+|radical_axis (C)          -> L|   \\     
+|radical_circle(C,<C>)     -> C|   \\     
+|orthogonal_from (pt)      -> C|   \\     
+|orthogonal_through(pt,pt) -> C|   \\
+|midcircle(C)              -> C|   \\
+|external_tangent(C)       -> L,L| \\
+|internal_tangent(C)       -> L,L| \\
+|common_tangent(C)         -> L,L| \\
+|tangent_from (pt)         -> L,L| \\
+|inversion (...)           -> O |  \\
+                                   \\
+\fbox{\textbf{ellipse}}            \\
+\textbf{Attributes} table(\ref{ellipse:met})      \\
+|center                    -> pt|  \\
+|vertex                    -> pt|  \\
+|covertex                  -> pt|  \\
+|Fa                        -> pt|  \\
+|Fb                        -> pt|  \\
+|north                     -> pt|  \\
+|south                     -> pt|  \\
+|east                      -> pt|  \\
+|west                      -> pt|  \\
+|Rx                        -> d|   \\
+|Ry                        -> d|   \\
+|slope                     -> r|   \\
+|type                      -> s|   \\
+\textbf{Methods} table(\ref{ellipse:met}) \\
+|new (pt,pt,pt)            -> E|   \\
+|foci (pt,pt,pt)           -> E|   \\
+|radii (pt,r,r,an)         -> E|   \\
+|in_out (pt)               -> b|   \\
+|tangent_at (pt)           -> L|   \\
+|tangent_from (pt)         -> L|   \\
+|point (r)                 -> pt|  \\
+   \\
+\fbox{\textbf{square}}             \\                      
+ \textbf{Attributes} table(\ref{square:att})      \\
+|pa,pb,pc,pd               -> pt|  \\
+|type                      -> s|   \\
+|side                      -> d|   \\
+|center                    -> pt|  \\
+|exradius                  -> d|   \\
+|inradius                  -> d|   \\
+|diagonal                  -> d| \\
+|proj                      -> pt|  \\
+|ab bc cd da               -> L|   \\
+|ac bd                     -> L|   \\
+ \textbf{Methods} table(\ref{square:met})      \\
+|new (pt,pt,pt,pt)         -> S|   \\ 
+|rotation (pt,pt)          -> S|   \\
+|side (pt,pt,<swap>)       -> S|   \\
+                                   \\
+\fbox{\textbf{rectangle}}          \\
+\textbf{Attributes} table(\ref{rectangle:att}) \\
+|pa,pb,pc,pd               -> pt|  \\
+|type                      -> s|   \\
+|center                    -> pt|  \\
+|exradius                  -> d|   \\
+|length                    -> r|   \\
+|width                     -> r|   \\
+|diagonal                  -> d|   \\
+|ab bc cd da               -> L|   \\
+|ac bd                     -> L|   \\
+ \textbf{Methods} table(\ref{rectangle:met}) \\
+|new (pt,pt,pt,pt)         -> R|   \\ 
+|angle (pt,pt,an)          -> R|   \\
+|gold  (pt,pt,<swap>)      -> R|   \\
+|diagonal  (pt,pt,<swap>)  -> R|   \\
+|side  (pt,pt,r,<swap>)    -> R|   \\
+|get_lengths ()            ->r,r|  \\
+                                   \\
+\fbox{\textbf{quadrilateral} }     \\
+ \textbf{Attributes} table(\ref{quadrilateral:att}) \\
+|pa,pb,pc,pd               -> pt|  \\
+|ab bc cd da               -> L |  \\
+|ac bd                     -> L |  \\
+|type                      -> s |  \\
+|i                         -> pt|  \\
+|g                         -> pt|  \\
+|a b c d                   -> r|   \\
+ \textbf{Methods} table(\ref{quadrilateral:met}) \\
+|new (pt,pt,pt,pt)         -> Q|   \\ 
+|iscyclic ()               -> b|   \\         
+                                   \\
+\fbox{\textbf{parallelogram}}      \\
+ \textbf{Attributes} table(\ref{parallelogram:att}) \\
+|pa,pb,pc,pd               -> pt|  \\
+|ab bc cd da               -> L |  \\
+|ac bd                     -> L |  \\
+|type                      -> s |  \\
+|center                    -> pt|  \\
+ \textbf{Methods} table(\ref{parallelogram:met}) \\
+|new (pt,pt,pt,pt)         ->|     \\ 
+|fourth (pt,pt,pt)         ->|     \\
+                                   \\
+\fbox{\textbf{Regular\_polygon}}   \\
+ \textbf{Attributes} table(\ref{regular:att}) \\
+|center                    -> pt|  \\
+|through                   -> pt | \\
+|circle                    -> C |  \\
+|type                      -> s |  \\
+|side                      -> d|   \\
+|exradius                  -> d|   \\
+|inradius                  -> d|   \\
+|proj                      -> pt|  \\
+|nb                        -> i|   \\
+|angle                     -> an|  \\
+ \textbf{Methods} table(\ref{regular:met})\\
+|new (pt,pt,n)             -> PR|  \\
+|incircle ()               -> C|   \\
+|name (s)                  -> ?|   \\
+                                   \\
+\fbox{\textbf{Misc.}}              \\
+ \textbf{Attributes} table(\ref{misc}) \\                        
+|tkzphi                    -> r|   \\
+|tkzinvphi                 -> r |  \\
+|tkzsqrtphi                -> r |  \\
+|length                    -> d |  \\
+|islinear(pt,pt,pt)        -> b |  \\
+|isortho(pt,pt,pt)         -> b |  \\
+|\tkzUseLua{v}             -> ?|   \\
+|value{r}                  -> r|   \\
+|real                      -> r|   \\
+|angle_normalize (an)      -> an|  \\
+|barycenter (...)          -> pt|  \\
+|bisector (pt,pt,pt)       -> L|   \\
+|bisector_ext (pt,pt,pt)   -> L|   \\
+|altitude (pt,pt,pt)       -> L|   \\
+|midpoint (pt,pt)          -> pt|  \\
+|equilateral (pt,pt)       -> T|   \\
+\end{multicols}
 \end{document}
\ No newline at end of file

Added: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -0,0 +1,100 @@
+\section{Work organization} % (fold)
+\label{sec:work_organization}
+
+Here's a sample organization. 
+
+The line |% !TEX TS-program = lualatex| ensures that you don't forget to compile with Lua\LATEX{}. The "standalone" class is useful, as all you need to do here is create a figure.
+
+The "mini" option in \pkg{tkz-euclide} allows you to load and use only plot-related macros.
+
+The package \pkg{ifthen} is useful if you need to use some Boolean.
+
+The macro \tkzcname{LuaCodeDebugOn} allows you to try and find errors in Lua code.   
+
+It is of course possible to leave the Lua code in the \tkzNameEnv{tkzelements} environment, but externalizing this code has its advantages. 
+
+The first advantage, if you use a good editor, is to have a good presentation of the code. Styles are different between "Lua" and \LATEX{}. This makes the code clearer. This is how I proceeded, then reintegrated the code into the main code.
+
+Another advantage is that you don't have to comment the code incorrectly. For Lua code, you comment lines with |--| (double minus sign), whereas for \LATEX{}, you comment with |%|.
+
+Third advantage: the code can be reused.
+
+
+
+\begin{verbatim}
+% !TEX TS-program = lualatex
+% Created by Alain Matthes on 2024-01-09.
+
+\documentclass[margin = 12pt]{standalone} 
+\usepackage[mini]{tkz-euclide}
+\usepackage{tkz-elements,ifthen}
+
+\begin{document} 
+\LuaCodeDebugOn    
+\begin{tkzelements}
+ scale = 1.25
+ dofile ("sangaku.lua")
+\end{tkzelements}
+
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircle(I,F)
+   \tkzFillPolygon[color = purple](A,C,D)%
+   \tkzFillPolygon[color = blue!50!black](A,B,C)%
+   \tkzFillCircle[color = orange](I,F)%
+\end{tikzpicture}
+\end{document}
+\end{verbatim}
+
+And here is the code for the "Lua" part: the file |ex_sangaku.lua|
+
+\begin{verbatim}
+z.A         = point : new ( 0,0 ) 
+z.B         = point : new ( 8,0 )
+L.AB        = line : new ( z.A , z.B )
+S           = L.AB : square ()
+_,_,z.C,z.D = get_points (S)
+z.F         = S.ac : projection (z.B)
+L.BF        = line : new (z.B,z.F)
+T.ABC       = triangle : new ( z.A , z.B , z.C )
+L.bi        = T.ABC : bisector (2)
+z.c         = L.bi.pb
+L.Cc        = line : new (z.C,z.c)
+z.I         = intersection (L.Cc,L.BF)
+\end{verbatim}
+
+\begin{tkzelements}
+ scale = 1.25
+ dofile ("sangaku.lua")
+\end{tkzelements}
+
+\begin{tikzpicture}
+   \tkzGetNodes
+   \tkzDrawCircle(I,F)
+   \tkzFillPolygon[color = purple](A,C,D)%
+   \tkzFillPolygon[color = blue!50!black](A,B,C)%
+   \tkzFillCircle[color = orange](I,F)%
+\end{tikzpicture}
+
+\subsection{Scale problem} % (fold)
+\label{sub:scale_problem}
+
+If necessary, it's better to do the scaling in the "Lua" section. The reason is that it will be more accurate. There is, however, a problem to be aware of. I've made it a point of honor to avoid using numerical values in my codes whenever possible. In principle, these values only appear in the definition of fixed points. If the "scale" option is used, scaling is applied when points are created. Let's imagine you want to organize your code as follows:
+
+|scale = 1.5|\\
+|xB = 8|\\
+|z.B         = point : new ( xB,0 )|
+
+Scaling would then be ineffective, as the numerical values are not modified, only the point coordinates. To take scaling into account, use the function \Igfct{math}{value (v) }.
+
+|scale = 1.5|\\
+|xB = value (8)|\\
+|z.B         = point : new ( xB,0 )|
+
+\subsection{Code presentation} % (fold)
+\label{sub:code_presentation}
+
+The key point is that, unlike \LATEX{} or \TEX{}, you can insert spaces absolutely anywhere. 
+% subsection code_presentation (end)
+% subsection scale_problem (end)
+% section work_organization (end)
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-organization.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-tests.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-tests.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-tests.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -0,0 +1,4 @@
+\section{tests} % (fold)
+\label{sec:tests}
+
+% section tests (end)
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-tests.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-transferts.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-transferts.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-transferts.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -23,18 +23,21 @@
       n = string.len(K)
       if n >1 then
       _,_,ft, sd = string.find( K , "(.+)(.)" )  
-     if sd == "p" then   K=ft.."'" end  
+     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}
-}\end{verbatim}
+}
+\end{verbatim}
 \end{mybox}
 See the section In-depth Study \ref{sec:in_depth_study} for an explanation of the previous code.
 
-The environment \tkzNameEnv{tkzelements} allows to use the underscore |_| and the macro \tkzcname{tkzGetNodes} allows to obtain names of nodes containing \tkzname{prime}. (see the next example)
+The environment \tkzNameEnv{tkzelements} allows to use the underscore |_| and the macro \tkzcname{tkzGetNodes} allows to obtain names of nodes containing \tkzname{prime} or \tkzname{double prime}. (see the next example)
 
 \begin{minipage}{0.5\textwidth}
-\begin{tkzexample}[latex=0cm,small,code only]
+\begin{verbatim}
 \begin{tkzelements}
    scale = 1.2
    z.o   = point: new (0,0)
@@ -41,31 +44,37 @@
    z.a_1 = point: new (2,1)
    z.a_2 = point: new (1,2)
    z.ap  = z.a_1 + z.a_2
+   z.app = z.a_1 - z.a_2
 \end{tkzelements}
 \begin{tikzpicture}
    \tkzGetNodes
-   \tkzDrawSegments(o,a_1 o,a_2 o,a')
+   \tkzDrawSegments(o,a_1 o,a_2 o,a' o,a'')
    \tkzDrawSegments[red](a_1,a' a_2,a')
-   \tkzDrawPoints(a_1,a_2,a',o)
-   \tkzLabelPoints(o,a_1,a_2,a')
+   \tkzDrawSegments[blue](a_1,a'' a_2,a'')
+   \tkzDrawPoints(a_1,a_2,a',o,a'')
+   \tkzLabelPoints(o,a_1,a_2,a',a'')
 \end{tikzpicture}
-\end{tkzexample}%
-\end{minipage}%
+\end{verbatim}
+\end{minipage}
 \begin{minipage}{0.5\textwidth}
 \begin{tkzelements}
-scale = 1.2
-z.o = point: new (0,0)
-z.a_1 = point: new (2,1)
-z.a_2 = point: new (1,2)
-z.ap = z.a_1 + z.a_2
+   scale = 1.2
+   z.o   = point: new (0,0)
+   z.a_1 = point: new (2,1)
+   z.a_2 = point: new (1,2)
+   z.ap  = z.a_1 + z.a_2
+   z.app = z.a_1 - z.a_2
 \end{tkzelements}
+\hspace{\fill}
 \begin{tikzpicture}
-\tkzGetNodes
- \tkzDrawSegments(o,a_1 o,a_2 o,a')
- \tkzDrawSegments[red](a_1,a' a_2,a')
- \tkzDrawPoints(a_1,a_2,a',o)
- \tkzLabelPoints(o,a_1,a_2,a')
+   \tkzGetNodes
+   \tkzDrawSegments(o,a_1 o,a_2 o,a' o,a'')
+   \tkzDrawSegments[red](a_1,a' a_2,a')
+   \tkzDrawSegments[blue](a_1,a'' a_2,a'')
+   \tkzDrawPoints(a_1,a_2,a',o,a'')
+   \tkzLabelPoints(o,a_1,a_2,a',a'')
 \end{tikzpicture}
+\hspace{\fill}
 \end{minipage}%
 
 \newpage

Modified: trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-why.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-why.tex	2024-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/TKZdoc-elements-why.tex	2024-01-16 21:29:12 UTC (rev 69461)
@@ -69,7 +69,7 @@
 
 See \href{https://mathworld.wolfram.com/ApolloniusCircle.html}{MathWorld} for more details.
 
-This example was my reference for testing the tkz-euclide package. With my first methods and the tools at my disposition, the results lacked precision. Now, with tkz-elements, I can use tools that are more powerful, more precise and easier to create.
+This example was my reference for testing the \pkg{tkz-euclide} package. With my first methods and the tools at my disposition, the results lacked precision. Now, with tkz-elements, I can use tools that are more powerful, more precise and easier to create.
 
 The essential principles of figure construction with \tkzname{tkz-euclide} are kept: definitions, calculations, tracings, labels as well as the  step-by-step programmation, corresponding to a construction with a ruler and a compass.
 
@@ -136,7 +136,7 @@
 
 Now that all the points have been defined, it's time to start drawing the paths. To do this, you need to create the nodes. This is the role of the macro \Imacro{tkzGetNodes}. See \ref{ssub:points_transfer}
 
-The following section concerns only drawings, and is handled by tkz-euclide.
+The following section concerns only drawings, and is handled by \pkg{tkz-euclide}.
 
 \begin{verbatim}
 \begin{tikzpicture}

Added: trunk/Master/texmf-dist/doc/latex/tkz-elements/gold_preamble.lua
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/gold_preamble.lua	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/gold_preamble.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -0,0 +1,46 @@
+z.A            = point: new (0 , 0)
+z.B            = point: new (10 , 0)
+L.AB           = line:  new ( z.A, z.B)
+z.C            = L.AB : gold_ratio ()
+L.AC           = line:  new ( z.A, z.C)
+L.CB           = line:  new ( z.C, z.B)
+z.O_0          = L.AB.mid
+z.O_1          = L.AC.mid
+z.O_2          = L.CB.mid
+C.O0B          = circle: new ( z.O_0, z.B)
+C.O1C          = circle: new ( z.O_1, z.C)
+C.O2B          = circle: new ( z.O_2, z.B)
+z.M_0          = C.O1C : external_similitude (C.O2B)
+z.M_1          = C.O0B : internal_similitude (C.O1C)
+z.M_2          = C.O0B : internal_similitude (C.O2B)
+z.Q            = C.O2B.north
+z.P            = C.O1C.north
+z.O            = C.O0B.south
+z.W            = C.O0B.north
+L.O1Q          = line   :  new (z.O_1,z.Q)
+L.O2P          = line   :  new (z.O_2,z.P)
+z.O_4          = intersection (L.O1Q,L.O2P)
+L.CO4          = line  :  new (z.C,z.O_4)
+z.D            = intersection (L.CO4,C.O0B)
+L.CD           = line   :  new (z.C,z.D)
+L.PQ           = line   :  new (z.P,z.Q)
+L.CQ           = line   :  new (z.C,z.Q)
+z.O_5          = intersection (L.CD,L.PQ)
+C.QC           = circle: new ( z.Q, z.C)
+C.PA           = circle: new ( z.P, z.A)
+z.P_0          = intersection (C.QC,C.O0B)
+z.P_1          = intersection (C.QC,C.O1C)
+_,z.P_2        = intersection (C.PA,C.O2B)
+T.P            = triangle: new ( z.P_0, z.P_1, z.P_2)
+z.O_3          = T.P.circumcenter
+L.AQ           = line   :  new (z.A,z.Q)
+L.BP           = line   :  new (z.B,z.P)
+z.T            = intersection(L.BP,L.AQ)
+z.O_6          = L.CD.mid
+C.DC           = circle :  new   (z.D,z.C)
+z.U,z.V        = intersection (C.DC,C.O0B)
+L.UV           = line :  new (z.U,z.V)
+z.R,z.S        = L.UV : projection (z.O_1,z.O_2)
+
+
+


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-elements/gold_preamble.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/tkz-elements/sangaku.lua
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tkz-elements/sangaku.lua	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/tkz-elements/sangaku.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -0,0 +1,14 @@
+xB = value(8)
+z.A = point : new ( 0,0 ) 
+z.B = point : new ( 
+xB,0 )
+L.AB = line : new ( z.A , z.B )
+S = L.AB : square ()
+_,_,z.C,z.D = get_points (S)
+z.F = S.ac : projection (z.B)
+L.BF = line : new (z.B,z.F)
+T.ABC = triangle : new ( z.A , z.B , z.C )
+L.bi = T.ABC : bisector (2)
+z.c = L.bi.pb
+L.Cc = line : new (z.C,z.c)
+z.I = intersection (L.Cc,L.BF)
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/doc/latex/tkz-elements/sangaku.lua
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz-elements.sty	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,6 +1,6 @@
 % encoding : utf8 
-% tkz-elements.sty v1.72c
-% Copyright 2023  Alain Matthes
+% tkz-elements.sty v1.82c
+% 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
 % of this license or (at your option) any later version.
@@ -11,7 +11,7 @@
 % This work has the LPPL maintenance status “maintained”.
 % The Current Maintainer of this work is Alain Matthes.
 
-\ProvidesPackage{tkz-elements}[23/12/24 v1.72c Graphic Object Library]
+\ProvidesPackage{tkz-elements}[2024/01/16 v1.82c Graphic Object Library]
 \RequirePackage{luacode}
 \directlua{require "tkz_elements_main"}
 
@@ -36,7 +36,9 @@
       n = string.len(K)
       if n >1 then
       _,_,ft, sd = string.find( K , "(.+)(.)" )  
-     if sd == "p" then   K=ft.."'" end  
+     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}

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_circle.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements-circles.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -17,9 +17,8 @@
 circle = {}
 function circle: new (c, t) -- c --> center t --> through
    local type              = 'circle'
-   local ra                = line :new (c,t) 
-   local anti              = antipode_ (c,t)
-   local di                = line : new (anti, t)
+   local ct                = line :new (c,t) 
+   local opp               = antipode_ (c,t)
    local radius            = point.abs ( c - t )
    local south             = c - point (0,radius)
    local east              = c + point (radius,0)
@@ -27,8 +26,8 @@
    local west              = c - point (radius,0)
    local o = { center      = c, 
                through     = t, 
-               ra          = ra,
-               di          = di,
+               ct          = ct,
+               opp         = opp,
                radius      = radius,
                south       = south,
                east        = east,
@@ -75,18 +74,11 @@
     end
 end
 
-function circles_position (C1,C2)
-   local d,max,min
-   d = point.mod(C1.center-C2.center)
-   max = C1.radius + C2.radius
-   min = math.abs ( C1.radius - C2.radius)
-   if d > max then return "outside"
-      elseif d == max then return "outside tangent" -- epsilon
-      elseif d == min then return "inside tangent" -- epsilon
-      elseif d < min then return "inside"
-      else return "intersect"
-   end
+-- new version 1.80 added 
+function circle : circles_position (C)
+   return circles_position_ (self.center,self.radius,C.center,C.radius)
 end
+
 -----------------------
 -- real --
 -----------------------
@@ -122,7 +114,7 @@
    return rotation_ (self.center,phi,self.through) 
 end
 
-function circle: random_pt(lower, upper)
+function circle: random_pt (lower, upper)
 local t
      math.randomseed( tonumber(tostring(os.time()):reverse():sub(1,6)) )
       phi = lower + math.random() * (upper - lower)
@@ -136,6 +128,21 @@
 function circle: external_similitude (C)
   return  external_similitude_ (self.center,self.radius,C.center,C.radius)
 end
+
+function circle : common_tangent(C)
+   local o,s1,s2,t1,t2
+  o = external_similitude_ (self.center,self.radius,C.center,C.radius)
+
+ if  self.radius < C.radius then 
+    t1,t2 = tangent_from_ (C.center,C.through,o) 
+    s1,s2 = tangent_from_ (self.center,self.through,o) 
+     return s1,t1,t2,s2
+  else
+     s1,s2 = tangent_from_ (C.center,C.through,o) 
+     t1,t2 = tangent_from_ (self.center,self.through,o) 
+      return s1,t1,t2,s2     
+  end
+end
 -----------------------
 -- lines --
 -----------------------
@@ -148,12 +155,41 @@
    t1,t2 = tangent_from_ (self.center,self.through,pt) 
     return line :new (pt,t1),line : new (pt,t2)
  end
- 
+ -- version 1.80 
  function circle: radical_axis (C)
     local t1,t2
+    if self.radius > C.radius then
     t1,t2 = radical_axis_ (self.center,self.through,C.center,C.through)
- return line : new (t1,t2)
+ else
+    t1,t2 = radical_axis_ (C.center,C.through,self.center,self.through)
  end
+  return line :new (t1,t2)
+ end
+ 
+ -- version 1.80
+function circle: radical_center (C1,C2)
+if C2 == nil then
+    if self.radius > C1.radius then
+       return radical_center_ (self.center,self.through,C1.center,C1.through)
+    else
+       return radical_center_ (C1.center,C1.through,self.center,self.through)
+    end
+else
+    return radical_center3 (self,C1,C2)
+end
+end 
+ -- version 1.80
+function circle : radical_circle (C1,C2)
+   local rc
+    if C2 == nil then
+       rc = self : radical_center (C1)
+       return self : orthogonal_from (rc)
+    else
+       rc = self : radical_center (C1,C2)
+       return C1 : orthogonal_from (rc)
+    end
+end
+ 
  -- version 1.60 new
  function circle : external_tangent(C)
    local i,t1,t2,k,T1,T2
@@ -230,7 +266,7 @@
     else
         t = {}
         for i=1,tp.n do
-            table.insert( t , inversion_ (self.center,self.through , tp[i])  ) 
+         table.insert( t , inversion_ (self.center,self.through , tp[i])  ) 
          end
       return table.unpack ( t )     
     end

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_class.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,6 +1,6 @@
 -- tkz_elements_class.lua 
--- date 23/12/24
--- version 1.72c
+-- date 2024/01/16
+-- version 1.82c
 -- 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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_ellipse.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements-ellipses.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_circles.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_circles.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -51,40 +51,55 @@
   local r  = (ry*ry)/d
   return c+polar_ (r,point.arg(pt-c))
 end
-  
+
+function circles_position_ (c1,r1,c2,r2)
+   local d,max,min,epsilon
+   epsilon  = 10^(-12)
+   d        = point.mod(c1-c2)
+   max      = r1+r2
+   min      = math.abs ( r1 - r2)
+   if d > max then return "outside"
+      elseif math.abs(d - max) < epsilon then return "outside tangent" -- epsilon
+      elseif math.abs(d - min) < epsilon then return "inside tangent" -- epsilon
+      elseif d < min then return "inside"
+      else return "intersect"
+   end
+end
+ 
 function radical_axis_ (c1,p1,c2,p2)
-   local d,m,m1,m2,epsilon,ci,cj,ck,cm,cn,r1,r2,t
+   local ci,cj
    r1 = point.abs(c1-p1)
    r2 = point.abs(c2-p2)
-   epsilon = 10^(-12)
-   d = point.abs (c2 - c1)
-   m = d - (r1+r2)
-   m1 = math.abs (d - (r1+r2))
-   m2 = math.abs (d - math.abs(r1-(r2)))
-   if m2 < epsilon then
-      ci = rotation_ (p1,math.pi/2,c2)
-      cj = rotation_ (p1,-math.pi/2,c2)
-      return ci,cj
-   elseif m1 < epsilon then -- circles tangent
-      -- z.A = point : new ( x , y ) contact
-      t,t = intersection_cc_ (c1,p1,c2,p2)
-   ci = rotation_ (t,math.pi/2,c2)
-   cj = rotation_ (t,-math.pi/2,c2)
-   return ci,cj
-    -- circles disjoints
-     elseif   m > 0 then
-         ck = rotation_ (c1,math.pi/3,c2)
-         ci,cj = intersection_cc_ (c1,p1,ck,c1)
-         cm,cn = intersection_cc_ (c2,p2,ck,c1)
-         ci = intersection_ll_ (ci,cj,cm,cn)
-         cj = symmetry_axial_ (c1,c2,ci) -- projection_ (c1,c2,ci)
-         return ci,cj
-     else         
-     ci,cj = intersection_cc_ (c1,p1,c2,p2)
-     return ci,cj
-   end
+   d  = point.abs(c1-c2)
+   h  = (r1*r1-r2*r2+d*d)/(2*d)
+   ck = radical_center_ (c1,p1,c2,p2)
+   cj = rotation_ (ck,-math.pi/2,c1)
+   ci = symmetry_ (ck,cj)
+   return cj,ci
 end
 
+function radical_center_ (c1,p1,c2,p2)
+   local d,r1,r2,h
+   r1 = point.abs(c1-p1)
+   r2 = point.abs(c2-p2)
+   d  = point.abs(c1-c2)
+   h  = (r1*r1-r2*r2+d*d)/(2*d)
+   return h*(c2-c1)/d+c1
+end
+
+-- version 1.60 center pour deux cercles ?
+function radical_center3 (C1,C2,C3)
+   local t1,t2,t3,t4
+   t1,t2 = radical_axis_ (C1.center,C1.through,C2.center,C2.through)
+   if C3 == nil then
+    return  intersection_ll_ (t1,t2,C1.center,C2.center)
+   else
+   t3,t4 = radical_axis_ (C3.center,C3.through,C2.center,C2.through)
+return intersection_ll_ (t1,t2,t3,t4)
+end
+end
+
+
 function south_pole_ (c,p)
    local r
    r = point.abs (c-p)
@@ -117,7 +132,7 @@
 -- version 1.60 new
 function midcircle_(C1,C2)
    local state,r,s,t1,t2,T1,T2,p,a,b,c,d,Cx,Cy,i,j
-   state = circles_position(C1,C2)
+   state =  circles_position_(C1.center,C1.radius,C2.center,C2.radius)
    i = barycenter_ ({C2.center,C1.radius},{C1.center,-C2.radius})
    j = barycenter_ ({C2.center,C1.radius},{C1.center,C2.radius})
    t1,t2 = tangent_from_ (C1.center,C1.through,i)

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_intersections.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_intersections.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_lines.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_lines.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -50,7 +50,7 @@
    return (z1+z2)/2
  end
 -- triangle specific
-function equilateral_tr (a,b)
+function equilateral_tr_ (a,b)
    return rotation_ (a,math.pi/3,b)
 end
 

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_maths.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_maths.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_points.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_points.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_regular.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_regular.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -15,7 +15,7 @@
 --------------------------------------------------------------------------- 
  --  
 --------------------------------------------------------------------------- 
-function regular_(c,th,s)
+function regular_(c,th,s) -- center through side
     local r,t,dep
     dep = angle_normalize(point.arg (th-c))
      t = {}

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_functions_triangles.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_triangles.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_line.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_lines.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -51,6 +51,10 @@
     return point.mod(projection(self,pt)-pt)
 end
 
+function length(a,b)
+  return  point.abs (a-b)
+end
+
 function line: slope ()
    return slope_(self.pa,self.pb)
 end
@@ -118,6 +122,36 @@
 function line: normalize_inv ()
    return normalize_ (self.pb,self.pa)
 end
+
+function line: _east (d)
+   local d = d or 1
+   return self.pb+ d/self.length * (self.pb-self.pa)
+end
+
+function line: _west (d)
+   local d = d or 1
+   return self.pa+ d/self.length * (self.pa-self.pb)
+end
+
+function line: _north_pa (d)
+   local d = d or 1
+   return d/self.length * ( self.north_pa - self.pa ) + self.pa
+end
+
+function line: _south_pa (d)
+   local d = d or 1
+   return d/self.length *( self.south_pa - self.pa ) + self.pa
+end
+
+function line: _south_pb (d)
+   local d = d or 1
+   return d/self.length *( self.south_pb - self.pb ) + self.pb
+end
+
+function line: _north_pb (d)
+   local d = d or 1
+   return d/self.length *( self.north_pb - self.pb ) + self.pb
+end
 -------------- transformations -------------
 function line: translation_pt ( pt )
     return translation_ ( self.pb-self.pa,pt )
@@ -262,7 +296,7 @@
 end
 
 function line: ortho_from ( pt )
-	return  line : new (pt,pt+(self.pb-self.pa)*point(0,1))
+	return  line : new (pt+(self.pb-self.pa)*point(0,-1),pt+(self.pb-self.pa)*point(0,1))
 end
 
 function line: mediator () 
@@ -304,12 +338,10 @@
    if swap  then 
         return triangle : new (self.pa,self.pb,rotation_ (self.pa,-math.pi/3,self.pb))
     else
-          return triangle : new (self.pa,self.pb,rotation_ (self.pa,math.pi/3,self.pb))
-  
+          return triangle : new (self.pa,self.pb,rotation_ (self.pa,math.pi/3,self.pb)) 
 end
 end
 
-
 function line: isosceles (phi,swap)
       local pta,ptb
        if swap == nil then
@@ -324,9 +356,55 @@
     ptb = rotation_ (self.pb,-phi,self.pa)
   return triangle : new (self.pa,self.pb, intersection_ll_ (self.pa,pta,self.pb,ptb ))
 end
-  
 end
 
+function line: two_angles (alpha,beta)
+   local pta,ptb,pt
+   pta = rotation_ (self.pa,alpha,self.pb)
+   ptb = rotation_ (self.pb,-beta,self.pa)
+   pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
+   return triangle : new (self.pa,self.pb,pt)
+end
+
+function line: school ()
+   local pta,ptb,pt
+   pta = rotation_ (self.pa,math.pi/6,self.pb)
+   ptb = rotation_ (self.pb,-math.pi/3,self.pa)
+   pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
+   return triangle : new (self.pa,self.pb,pt)
+end
+
+function line: half ()
+   local x,pt
+   x  = midpoint_(self.pa,self.pb)
+   pt = rotation_ (self.pb,-math.pi/2,x)
+   return triangle : new (self.pa,self.pb,pt)
+end
+
+function line: sss (a,b)
+   local pta,ptb,i,j
+    pta = self.pa + point ( a,  0 )
+    ptb = self.pb + point ( -b , 0)
+    i,j = intersection_cc_ (self.pa,pta,self.pb,ptb)
+   return triangle : new (self.pa,self.pb,i),triangle : new (self.pa,self.pb,j)
+end
+
+function line: ssa (a,phi)
+   local x,y,pt
+    x = rotation_ (self.pb,-phi,self.pa)
+    y = self.pa + polar_ ( a , self.slope)
+    i,j = intersection_lc_ (self.pb,x,self.pa,y)
+   return triangle : new (self.pa,self.pb,i),triangle : new (self.pa,self.pb,j)
+end
+
+function line: sas (a,phi)
+   local x,pt
+    x  = self.pa + polar_ ( a , self.slope)
+    pt = rotation_ (self.pa,phi,x)
+   return triangle : new (self.pa,self.pb,pt)
+end
+---- sacred triangles ----
+
 function line: gold (swap)
     local pt
      if swap == nil then
@@ -341,6 +419,16 @@
 end
 end
 
+function line: sublime ()
+   local pta,ptb,pt
+  pta = rotation_ (self.pa,2*math.pi/5,self.pb)
+  ptb = rotation_ (self.pb,-2*math.pi/5,self.pa)
+  pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
+  return triangle : new (self.pa,self.pb,pt)
+end
+
+line.euclid = line.sublime
+
 function line: euclide (swap)
      if swap == nil then
      swap = false
@@ -352,20 +440,39 @@
   end
   end
 
-function line: golden (swap)
-    local pt
-    local pta,ptb
-     if swap == nil then
-     swap = false
- end
-if swap  then 
-   pt = rotation_ (self.pa,-2*math.pi/5,self.pb)
-   return triangle : new (self.pa,self.pb, self.pa + (pt-self.pa) * tkzphi)  
-else
-    pt = rotation_ (self.pa,2*math.pi/5,self.pb)
-    return triangle : new (self.pa,self.pb, self.pa + (pt-self.pa) * tkzphi)
- end
+function line: divine ()
+   local pta,ptb,pt,h
+   pta = rotation_ (self.pa,math.pi/5,self.pb)
+   ptb = rotation_ (self.pb,-math.pi/5,self.pa)
+   pt = intersection_ll_ (self.pa,pta,self.pb,ptb)
+   return triangle : new (self.pa,self.pb,pt)
 end
+
+function line: cheops ()
+   local m,n,pt
+   m = midpoint_ (self.pa,self.pb)
+   n = rotation_ (m,- math.pi/2,self.pa)
+   pt = m + (n-m)* tkzsqrtphi
+   return triangle : new (self.pa,self.pb,pt)
+end
+
+function line: egyptian ()
+   local n,pt
+    n = rotation_ (self.pb,- math.pi/2,self.pa)
+    pt = self.pb + (n-self.pb)/point.mod(n-self.pb)*self.length* 0.75
+   return triangle : new (self.pa,self.pb,pt)
+end
+line.pythagoras = line.egyptian
+line.isis = line.egyptian
+
+function line: golden ()
+   local n,pt
+    n = rotation_ (self.pb,- math.pi/2,self.pa)
+    pt = self.pb + (n-self.pb)/tkzphi
+   return triangle : new (self.pa,self.pb,pt)
+end
+
+
 ------------------------------
 -- Result -> couple of points
 ------------------------------

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_main.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements-main.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_misc.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_functions_maths.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -33,26 +33,31 @@
     token.set_macro(v,_ENV[v],'global')
    end
 end  
--- version 1.60 center pour deux cercles ?
-function radical_center (C1,C2,C3)
-   local t1,t2,t3,t4
-   t1,t2 = radical_axis_ (C1.center,C1.through,C2.center,C2.through)
-   if C3 == nil then
-    return  intersection_ll_ (t1,t2,C1.center,C2.center)
-   else
-   t3,t4 = radical_axis_ (C3.center,C3.through,C2.center,C2.through)
-return intersection_ll_ (t1,t2,t3,t4)
+
+function bisector (a,b,c)
+   local i
+      i = in_center_ (a,b,c)
+   return  line : new (a,intersection_ll_ (a,i,b,c))
 end
+
+function altitude (a,b,c)
+   local o,p 
+   o = ortho_center_ (a,b,c)
+   p = projection_ (b,c,a)
+   return  line : new (a,p) 
 end
--- version 1.60 modif case 2 circles
-function  radical_circle (C1,C2,C3)
-   local rc
-    if C3 == nil then
-       rc = radical_center (C1,C2)
-       return C1 : orthogonal_from (rc)
-    else
-   rc = radical_center (C1,C2,C3)
- return C1 : orthogonal_from (rc)
+
+function  bisector_ext(a,b,c)   -- n =1 swap n=2 2 swap
+ local i,p
+    i = in_center_ (a,b,c)
+    p = rotation_ (a,math.pi/2,i)
+   return line : new (a,p)
 end
+
+function equilateral (a,b)
+   return equilateral_tr_ (a,b)
 end
 
+function midpoint (a,b)
+    return (a+b)/2
+end
\ No newline at end of file

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_parallelogram.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_parallelogram.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -16,7 +16,7 @@
 ---------------------------------------------------------------------------
 
 parallelogram = {}
-function parallelogram: new (za, zb, zc,zd)
+function parallelogram: new (za, zb, zc, zd)
    local d,epsilon
     epsilon = 10^(-8)
    local zi = midpoint_ (za,zc)

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_point.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_point.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -187,7 +187,7 @@
 end
 
 function point: polar ( radius, phi )
-	return scale * polar_ ( radius, phi )
+	return point: new (radius * math.cos(phi), radius * math.sin(phi))
 end
 
 function point: polar_deg ( radius, phi )
@@ -196,22 +196,22 @@
 
 function point: north(d)
    local d = d or 1
-   return self+ polar_ ( d * scale,  math.pi/2 )
+   return self+ polar_ ( d ,  math.pi/2 )
 end
 
 function point: south(d)
     local d = d or 1
-      return self + polar_ ( d  * scale, 3 * math.pi/2 )
+      return self + polar_ ( d , 3 * math.pi/2 )
    end
    
 function point: east(d)
     local d = d or 1
-   return self+ polar_( d * scale,  0 )
+   return self+ polar_( d ,  0 )
 end
 
 function point: west(d)
     local d = d or 1
-      return self + polar_ ( d * scale, math.pi )
+      return self + polar_ ( d , math.pi )
    end
 -- ----------------------------------------------------------------
 -- transformations

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_quadrilateral.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_quadrilateral.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_rectangle.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements-rectangle.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -36,7 +36,7 @@
    local bd                 = line : new (zb,zd)
    local length             = point.mod (zb-za)
    local width              = point.mod (zd-za)
-   local diagonal          = point.abs (zc-za)
+   local diagonal           = point.abs (zc-za)
    local o  = {   pa        = za, 
                   pb        = zb, 
                   pc        = zc,
@@ -47,7 +47,7 @@
                   da        = da,
                   cd        = cd,
                   bd        = bd,
-                  diagonal = diagonal,
+                  diagonal  = diagonal,
                   exradius  = exradius,
                   center    = center,
                   length    = length,

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_regular.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_regular.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_square.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements-square.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_triangle.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_triangles.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.
@@ -56,6 +56,15 @@
 -----------------------
 -- points --
 -----------------------
+-- version 1.80
+function triangle: trilinear (a,b,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} )
+end
+
 function triangle: bevan_point ()
    return circum_center_ ( self : excentral_tr())
 end
@@ -128,6 +137,11 @@
       return self.ca : point ((t*p-self.c-self.b)/self.a)
    end
 end
+
+function triangle :  soddy_center ()
+   local s,i,j,k
+   return soddy_center_ (self.pa,self.pb,self.pc)
+end
 -------------------
 -- Result -> line
 -------------------
@@ -152,17 +166,20 @@
 end
 
 function triangle: altitude (n)
-   local a,b,c,o
+   local a,b,c,o,p
    a = self.pa
    b = self.pb
    c = self.pc
    o = ortho_center_ (a,b,c)
    if n==1 then 
-           return line : new (b,intersection_ll_ (b,o,a,c))
+      p = projection_ (a,c,b)
+           return line : new (b,p)
     elseif n==2 then
-           return line : new (c,intersection_ll_ (c,o,a,b))
+        p = projection_ (a,b,c)
+           return line : new (c,p)
      else
-           return  line : new (a,intersection_ll_ (a,o,b,c)) 
+         p = projection_ (b,c,a)
+           return  line : new (a,p) 
     end
 end
 
@@ -223,7 +240,7 @@
   end
 end
 -----------------------
--- circles --
+--- Result -> circles --
 -----------------------
 function triangle: euler_circle ()
    return circle : new (euler_center_ ( self.pa , self.pb , self.pc),midpoint_( self.pb , self.pc))
@@ -281,6 +298,12 @@
 return circle : new (sp,projection_ (ma,mb,sp))
 end
 
+
+function triangle :  soddy_circle ()
+   local s,i
+   s,i = soddy_center_ (self.pa,self.pb,self.pc)
+   return circle : new ( s , i )
+end
 -------------------
 -- Result -> triangle
 -------------------
@@ -367,19 +390,6 @@
     local x = self.pc + self.pa - self.pb
   return  x
 end
-  
-function triangle: check_equilateral ()
-    local A,B,C,epsilon
-    epsilon = 10 ^(-8)
-    A = self.pb - self.pc
-    B = self.pa - self.pc
-    C = self.pa - self.pb
-    if (point.abs(A)-point.abs(B) < epsilon) and (point.abs(B)-point.abs(C) < epsilon) 
-    then
-       tex.print("equilateral !!")
-        error("something went wrong!")
-    end
-end
 
 function triangle: area ()
     return area_(self.pa,self.pb,self.pc)
@@ -396,15 +406,7 @@
 function triangle: check_equilateral ()
  return check_equilateral_ (self.pa,self.pb,self.pc)
 end
-function triangle :  soddy_center ()
-   local s,i,j,k
-   return soddy_center_ (self.pa,self.pb,self.pc)
-end
 
-function triangle :  soddy_circle ()
-   local s,i
-   s,i = soddy_center_ (self.pa,self.pb,self.pc)
-   return circle : new ( s , i )
-end
 
+
 return triangle
\ No newline at end of file

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-01-16 21:28:56 UTC (rev 69460)
+++ trunk/Master/texmf-dist/tex/latex/tkz-elements/tkz_elements_vector.lua	2024-01-16 21:29:12 UTC (rev 69461)
@@ -1,7 +1,7 @@
 -- tkz_elements_vectors.lua
--- date 23/12/24
--- version 1.72c
--- Copyright 2023  Alain Matthes
+-- date 2024/01/16
+-- version 1.82c
+-- 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
 -- of this license or (at your option) any later version.



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