% !TEX TS-program = lualatex
% encoding : utf8 
% Documentation of tkz-elements v3.32c
% 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.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
% This work has the LPPL maintenance status “maintained”.
% The Current Maintainer of this work is Alain Matthes.
\PassOptionsToPackage{unicode}{hyperref}

\documentclass[DIV         = 14,
               fontsize    = 10,
               index       = totoc,
               twoside,
               cadre,
               headings    = small
               ]{tkz-doc}
\gdef\tkznameofpack{tkz-elements}
\gdef\tkzversionofpack{3.32c}
\gdef\tkzdateofpack{\today}
\gdef\tkznameofdoc{tkz-elements.pdf}
\gdef\tkzversionofdoc{3.32c}
\gdef\tkzdateofdoc{\today}
\gdef\tkzauthorofpack{Alain Matthes}
\gdef\tkzadressofauthor{}
\gdef\tkznamecollection{AlterMundus}
\gdef\tkzurlauthor{http://altermundus.fr}
\gdef\tkzengine{lualatex}
\gdef\tkzurlauthorcom{http://altermundus.fr}
\nameoffile{\tkznameofpack}

% -- Packages ---------------------------------------------------  
\usepackage[dvipsnames,svgnames]{xcolor}
\usepackage{calc}
\usepackage{tkz-base}
\usepackage[mini]{tkz-euclide}
\usepackage{tkz-elements}
\usepackage{pgfornament}
\usetikzlibrary{backgrounds}
\usetikzlibrary{mindmap}
\usetikzlibrary{shapes.multipart}
\usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref}
\hypersetup{
      linkcolor=Gray,
      citecolor=Green,
      filecolor=Mulberry,
      urlcolor=orange,
      menucolor=Gray,
      runcolor=Mulberry,
      linkbordercolor=Gray,
      citebordercolor=Green,
      filebordercolor=Mulberry,
      urlbordercolor=NavyBlue,
      menubordercolor=Gray,
      runbordercolor=Mulberry,
      pdfsubject={Euclidean Geometry},
      pdfauthor={\tkzauthorofpack},
      pdftitle={\tkznameofpack},
      pdfcreator={\tkzengine}
}
\usepackage{unicode-math} 
\usepackage{fourier-otf}
\setmathfont{Concrete-Math.otf}
\let\rmfamily\ttfamily
\usepackage{multicol,lscape,wrapfig}
\usepackage[english]{babel}
\usepackage[normalem]{ulem}
\usepackage{multirow,multido,booktabs,cellspace}
\usepackage{shortvrb,fancyvrb,bookmark,enumitem} 
\usepackage{makeidx}
\usepackage[most]{tcolorbox}
\def\code{\texttt}
\newtcolorbox{mybox}{
enhanced,
boxrule=0pt,frame hidden,
borderline west={4pt}{0pt}{darkgray!50!white},
colback=lightgray!10!white,
sharp corners
}
%\usepackage{float}
\makeindex 

\makeatletter
\renewenvironment{theindex}
   {\section*{\indexname}\begin{multicols}{2}%
    \@mkboth{\MakeUppercase\indexname}%
  {\MakeUppercase\indexname}%
    \thispagestyle{plain}\parindent\z@
    \parskip\z@ \@plus .3\p@\relax
    \columnseprule \z@
    \columnsep 35\p@
    \let\item\@idxitem}
   {\end{multicols}}
\makeatother
\newcommand*{\tkzfname}[1]{\Amacro{#1}\textbf{\texttt{\textcolor{MidnightBlue}{%
 #1}}}}
 \newcommand*{\tkzmname}[1]{\Amacro{#1}\textbf{\texttt{\textcolor{MidnightBlue}{%
#1}}}}
 \newcommand*{\tkzaname}[1]{\Amacro{#1}\textbf{\texttt{\textcolor{MidnightBlue}{%
#1}}}}  
\def\langle{} \def\rangle{}
\renewcommand*{\IargName}[2]{\texttt{#2}\index{#1_2@\texttt{#1: argument(s)}!\texttt{#2}}}
\newcommand*{\Amacro}[1]{\index{#1_1@\texttt{#1}}}
\renewcommand*{\IoptName}[2]{\texttt{#2}\index{#1_3@\texttt{#1: attribute(s)}!\texttt{#2}}}
\newcommand*{\Iattr}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  attribute}!\texttt{#2}}}
\newcommand*{\Imeth}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  method}!\texttt{#2}}}
\newcommand*{\Immeth}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  metamethod}!\_\_\texttt{#2}}}
\newcommand*{\Igfct}[2]{\texttt{#2}\index{#1_3@\texttt{#1:  function}!\texttt{#2}}}
\newcommand*{\Iclass}[1]{\texttt{#1}\index{Class !#1@\texttt{#1}}}
\newcommand*{\Iengine}[1]{\texttt{#1}\index{Engine !#1@\texttt{#1}}}
\newcommand*{\Iprimitive}[1]{\textbackslash\texttt{#1}\index{Lua\TeX\ primitive !#1@\texttt{\textbackslash#1}}}
\newcommand*{\tkzNameObj}[1]{\tkzname{#1}\Iobj{#1}}
\newcommand*{\Iobj}[1]{\index{Object_1@\texttt{Object}!\texttt{#1}}}
\newcommand*{\tkzRBomb}{\textcolor{red}{\bomb}}
\newcommand*{\IEmacro}[1]{\index{#1_1@\texttt{\textbackslash#1}}\texttt{#1}}
\newcommand*{\tkzimpbf}[1]{\texttt{\textbf{#1}}}
\newcommand*{\tkzEHand}{\textcolor{red}{\lefthand}}
\newcommand*{\ItkzPopt}[2]{\texttt{#2}\index{#1_3@\texttt{#1: options}!\texttt{#2}}}
%<---------------------------------------------------------------------------> 
% settings styles

\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
\def\luaveclen#1#2{%
\directlua{tex.print(string.format(
'\percentchar.5f',math.sqrt((#1)*(#1)+(#2)*(#2))))
}}
% printnumber

\let\pmpn\pgfmathprintnumber
\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb

\begin{document} 
  
\parindent=0pt
\tkzTitleFrame{tkz-elements \tkzversionofpack\\Euclidean Geometry}
\clearpage


\defoffile{
 This document compiles some notes about  \tkzname{\tkznameofpack}, the initial version of a \code{Lua}  library designed to perform all the necessary calculations for defining objects in Euclidean geometry figures. Your document  must be compiled using Lua\LaTeX.\\ 
 With \pkg{tkz-elements}, definitions and calculations are exclusively conducted using \pkg{Lua}. \\ 
 The main programming approach provided is object-oriented, utilizing object classes such as point, line, triangle,  and conic.  Currently, after the calculations are completed, \pkg{tkz-euclide} is used for drawing purposes. (but you can also use \TIKZ)\\
 I discovered Lua and object-oriented programming  while developing this package, so it's highly likely that I've made a few mistakes.   If you'd like to contribute to the development of this package or provide advice on how to proceed, please contact me via email.
}

\presentation

\vspace*{1cm}

\lefthand\ Acknowledgements : I received much valuable advices, remarks, corrections  from \\ \tkzimp{Nicolas Kisselhoff}, \tkzimp{David Carlisle}, \tkzimp{Roberto Giacomelli} and \tkzimp{Qrrbrbirlbel}.\\
Special thanks to \tkzimp{Wolfgang Büchel} for his invaluable contribution in correcting the examples.

\vspace*{12pt}
\lefthand\ I would also like to extend my gratitude to \tkzimp{Eric Weisstein}, creator of 
\href{http://mathworld.wolfram.com/about/author.html}{MathWorld}.

\vspace*{12pt}
\lefthand\ You can find some examples on my site and a french documentation:
\href{http://altermundus.fr}{altermundus.fr}.

\vfill
Please report typos or any other comments to this documentation to: \href{mailto:al.ma@mac.com}{\textcolor{blue}{Alain Matthes}}.

This file can be redistributed and/or modified under the terms of the \LaTeX{} 
Project Public License Distributed from \href{http://www.ctan.org/}{CTAN}\  archives.

\clearpage


\tableofcontents

\clearpage
\newpage
\input{TKZdoc-elements-news.tex}
\input{TKZdoc-elements-structure.tex}
\input{TKZdoc-elements-why.tex}
\input{TKZdoc-elements-presentation.tex}
\input{TKZdoc-elements-convention.tex}
\input{TKZdoc-elements-organization.tex}
\input{TKZdoc-elements-transfers.tex}
\input{TKZdoc-elements-classes.tex}
\input{TKZdoc-elements-classes-point.tex}
\input{TKZdoc-elements-classes-line.tex}
\input{TKZdoc-elements-classes-circle.tex}
\input{TKZdoc-elements-classes-triangle.tex}
\input{TKZdoc-elements-classes-conic.tex}
\input{TKZdoc-elements-classes-occs.tex}
\input{TKZdoc-elements-classes-quadrilateral.tex}
\input{TKZdoc-elements-classes-square.tex}
\input{TKZdoc-elements-classes-rectangle.tex}
\input{TKZdoc-elements-classes-parallelogram.tex}
\input{TKZdoc-elements-classes-regular.tex}
\input{TKZdoc-elements-classes-vectors.tex}
\input{TKZdoc-elements-classes-matrices.tex}
\input{TKZdoc-elements-classes-misc.tex}
\input{TKZdoc-elements-intersection.tex}
\input{TKZdoc-elements-indepthstudy.tex}
\input{TKZdoc-elements-theorems.tex}
 \input{TKZdoc-elements-examples.tex}

\clearpage\newpage
\small\printindex

\newpage
\section{Cheat\_sheet} % (fold)
\label{sec:cheat_sheet}

% section cheat_sheet (end)
|r| denotes a real number, |cx| complex number, |d| a positive real number, |n| an integer, |an| an angle, |b| a boolean, |s| a character string, |p| a point, |t| a table, |m| a matrix, |v| variable, |L| a straight line, |C| a circle, |T| a triangle, |E| an ellipse, |V| a vector,|Q| a quadrilateral, |P| a parallelogram, |R| a rectangle, |S| a square, |RP| a regular polygon, |M| a matrix, |O| an object (p, 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{Functions} table(\ref{point:att})   \\
|new                       -> p|   \\
|polar                     -> p|   \\
|polar_deg                 -> p|   \\
\\
\textbf{Methods} table(\ref{complex:meta})  \\
|+ - * /     (p,p)         -> p|   \\
|..          (p,p)         -> r|   \\
|^           (p,p)         -> r|   \\
|=                         -> b|   \\
|tostring                  -> s|   \\
\\
\textbf{Methods} table(\ref{point:met})  table(\ref{complex:met})    \\
|conj                      -> p|   \\
|abs                       -> r|   \\
|mod                       -> d|   \\
|norm                      -> d|   \\
|arg                       -> d|   \\
|get                     -> r,r|   \\
|sqrt                      -> p|   \\
|north(d)                  -> p|   \\
|south(d)                  -> p|   \\
|east(d)                   -> p|   \\
|west(d)                   -> p|   \\
|normalize(p)              -> p|   \\
|symmetry (...)            -> O|   \\
|rotation (an , ...)       -> O|   \\
|homothety (r , ...)       -> O|   \\
|orthogonal(d)             -> p|   \\
|at()                      -> p|   \\
|print()                   -> s|   \\
                                   \\
\fbox{\textbf{line}}               \\
\textbf{Attributes} table(\ref{line:att})  \\
|pa,pb                     -> p|   \\
|type                      -> s|   \\
|mid                       -> p|   \\
|north_pa                  -> p|   \\
|north_pb                  -> p|   \\
|south_pa                  -> p|   \\
|south_pb                  -> p|   \\
|east                      -> p|   \\
|west                      -> p|   \\
|slope                     -> r|   \\
|length                    -> d|   \\
|vec                       -> V|   \\
\\
\textbf{Methods} table(\ref{line:met})     \\
|new (p,p)                 -> d|   \\
|distance (p)              -> d|   \\
|slope ()                  -> r|   \\
|in_out (p)                -> b|   \\
|in_out_segment (p)        -> b|   \\
|is_parallel (l)           -> b|   \\
|is_orthogonal (l)         -> b|   \\
|is_equidistant (p)        -> b|   \\
|barycenter (r,r)          -> p|   \\
|point (t)                 -> p|   \\
|midpoint ()               -> p|   \\
|harmonic_int (p)          -> p|   \\
|harmonic_ext (p)          -> p|   \\
|harmonic_both (d)         -> p|   \\
|gold_ratio()              -> p|   \\
|normalize ()              -> p|   \\
|normalize_inv ()          -> p|   \\
|_north_pa (d)             -> p|   \\
|_north_pb (d)             -> p|   \\
|_south_pa (d)             -> p|   \\
|_south_pb (d)             -> p|   \\ 
|_east (d)                 -> p|   \\
|_west (d)                 -> p|   \\
|report (r,p)              -> p|   \\
|colinear_at (p,k)         -> p|   \\
|affinity (p)              -> P|   \\
|affinity (pts)          -> pts|   \\
|projection (pts)        -> pts|   \\
|projection_ll (pts)     -> pts|   \\
|translation (...)         -> O|   \\
|reflection (...)          -> O|   \\
|ll_from ( p )             -> L|   \\
|ortho_from ( p )          -> L|   \\
|mediator ()               -> L|   \\
|swap_line ()              -> L|   \\
|circle ()                 -> C|   \\
|circle_swap ()            -> C|   \\
|diameter ()               -> C|   \\
|apollonius (r)            -> C|   \\
|c_ll_p (p,p)              -> C|   \\
|c_l_pp (p,p)              -> 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|   \\
|divine ()                 -> T|   \\
|cheops ()                 -> T|   \\
|pythagoras ()             -> T|   \\
|sublime  ()               -> T|   \\
|egyptian ()               -> T|   \\
|square (<swap>)           -> T|   \\
                                   \\
\fbox{\textbf{triangle}}           \\
\textbf{Attributes} table(\ref{triangle:att})  \\
|pa,pb,pc                  -> p|  \\
|circumcenter              -> p|  \\
|centroid                  -> p|  \\
|incenter                  -> p|  \\
|eulercenter               -> p|  \\
|orthocenter               -> p|  \\
|spiekercenter             -> p|  \\
|type                      -> s|  \\
|a                         -> d|  \\
|b                         -> d|  \\
|c                         -> d|  \\
|ab                        -> L|  \\
|bc                        -> L|  \\
|ca                        -> L|  \\
|alpha                     -> r|  \\
|beta                      -> r|  \\
|area                      -> r|  \\
|semiperimeter             -> r|  \\
|inradius                  -> r|  \\
|circumradius              -> r|  \\
\\
\textbf{Methods} table(\ref{triangle:met}) \\
|new (p,p,p)               -> T|  \\
|check_equilateral ()      -> b|  \\
|in_out (p)                -> b|  \\
|area ()                   -> d|  \\
|parallelogram ()          -> p|  \\
|trilinear (r,r,r)         -> p|  \\
|barycentric (r,r,r)       -> p|  \\
|bevan_point ()            -> p|  \\
|mittenpunkt_point ()      -> p|  \\
|gergonne_point ()         -> p|  \\
|nagel_point ()            -> p|  \\
|feuerbach_point ()        -> p|  \\
|lemoine_point()           -> p|  \\
|symmedian_point()         -> p|  \\
|spieker_center()          -> p|  \\
|barycenter (r,r,r)        -> p|  \\
|base (u,v)                -> p|  \\
|euler_points ()           -> p|  \\
|nine_points ()            -> p|  \\
|point (t)                 -> p|  \\
|soddy_center ()           -> p|  \\
|isogonal (p)              -> p|   \\
|conway_points ()        -> pts|   \\
|projection (p)        -> p,p,p|   \\
|euler_line ()             -> L|   \\
|symmedian_line (n)        -> L|   \\
|altitude (n)              -> L|   \\
|bisector (n)              -> L|   \\
|bisector_ext(n)           -> L|   \\
|antiparallel(p,n)         -> L|   \\
|brocard_axis ()           -> L|   \\
|simson_line (p)           -> L|   \\
|steiner_line (p)          -> L|   \\
|euler_line ()             -> L|   \\
|fermat_axis (p)           -> L|   \\
|lemoine_axis ()           -> 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|   \\
|conway_circle ()          -> C|   \\
|pedal_circle ()           -> C|   \\
|cevian_circle ()          -> C|   \\
|c_ll_p (p)                -> C|   \\
|orthic()                  -> T|   \\
|medial()                  -> T|   \\
|incentral()               -> T|   \\
|excentral()               -> T|   \\
|intouch()                 -> T|   \\
|contact()                 -> T|   \\
|extouch()                 -> T|   \\
|feuerbach()               -> T|   \\
|anti ()                   -> T|   \\
|tangential ()             -> T|   \\
|cevian (p)                -> T|   \\
|symmedian ()              -> T|   \\
|euler ()                  -> T|   \\
|pedal (p)                 -> T|   \\
|barycentric_coordinates(p)|       \\
                      |-> r,r,r|   \\
\\
\fbox{\textbf{circle}}             \\
\textbf{Attributes} table(\ref{circle:att}) \\
|center                    -> p|  \\
|through                   -> p|  \\
|north                     -> p|  \\
|south                     -> p|  \\
|east                      -> p|  \\
|west                      -> p|  \\
|opp                       -> p|  \\
|type                      -> s|   \\
|radius                    -> d|   \\
|ct                        -> L|   \\ 
|perimeter                 -> r|   \\ 
|area                      -> r|   \\ 
\\
\textbf{Methods} table(\ref{circle:met})  \\
|new (p,p)                 -> C|   \\
|radius (p, r)             -> C|   \\
|diameter (p,p)            -> C|   \\ 
|in_out (p)                -> b|   \\ 
|in_out_disk (p)           -> b|   \\ 
|circles_position (C)      -> s|   \\ 
|power (p)                 -> r|   \\ 
|antipode (p)              -> p|   \\ 
|midarc (p,p)              -> p|   \\ 
|point (r)                 -> p|   \\ 
|random_pt (lower, upper)  -> p|   \\ 
|internal_similitude (C)   -> p|   \\ 
|external_similitude (C)   -> p|   \\ 
|radical_center(C,<C>)     -> p|   \\
|taylor_points()         -> pts|  \\
|tangent_at (p)            -> L|   \\ 
|radical_axis (C)          -> L|   \\ 
|polar (p)                 -> L|   \\ 
|radical_circle(C,<C>)     -> C|   \\ 
|orthogonal_from (p)       -> C|   \\ 
|orthogonal_through(p,p)   -> C|   \\
|c_lc_p (L,p,inside)       -> C|   \\
|c_c_pp(a,b)(p,p)          -> C|   \\
|c_cc_p (C,p)              -> C|   \\
|midcircle(C)              -> C|   \\
|taylor_circle()           -> C|   \\
|external_tangent(C)     -> L,L|   \\
|internal_tangent(C)     -> L,L|   \\
|common_tangent(C)       -> L,L|   \\
|tangent_from (p)        -> L,L|   \\
|inversion (...)           -> O|   \\
                                   \\
\fbox{\textbf{conic}}              \\
\textbf{Attributes} table(\ref{conic:att}) \\
|center                    -> p|  \\
|vertex                    -> p|  \\
|covertex                  -> p|  \\
|Fa                        -> p|  \\
|Fb                        -> p|  \\
|center                    -> p|  \\
|K                         -> p|  \\
|e                         -> r|  \\
|a                         -> r|  \\
|b                         -> r|  \\
|c                         -> r|  \\
|h                         -> r|  \\
|p                         -> r|  \\
|Rx                        -> d|  \\
|Ry                        -> d|  \\
|slope                     -> r|  \\
|type                      -> s|  \\
|subtype                   -> s|  \\
|major_axis                -> L|  \\
|minor_axis                -> L|  \\
\\
\textbf{Methods} table(\ref{conic:met}) \\
|new (p,L,r)               -> E|   \\
|points (r,r,n,< swap >)   -> E|   \\
|point (r,< swap >)        -> E|   \\
|in_out (p)                -> b|   \\
|tangent_at (p)            -> L|   \\
|tangent_from (p)          -> L|   \\
|asymptotes (r))           -> L|   \\
|orthoptic ()           -> L,Co|   \\
|antipode (p)              -> p|    \\
                                   \\                        
\textbf{Functions}  \ref{sub:useful_tools}  \\
|EL_points (p,p,p)     -> p,L,r|   \\
|EL_bifocal(p,p,r or p)-> p,L,r|   \\
|HY_bifocal(p,p,r or p)-> p,L,r|   \\
|PA_dir(p,p,p)         -> p,L,r|   \\
|PA_focus(L,p,p)       -> p,L,r|    \\
\\
\fbox{\textbf{occs}}          \\
\textbf{Attributes} table(\ref{occs:att}) \\
|L,p                    -> occs|  \\
|type                      -> s|   \\
|origin                    -> p|  \\
|y                         -> p|   \\
|x                         -> p|   \\
|abscissa                  -> L|   \\
|ordinate                  -> L|   \\
 \\
 \textbf{Methods} table(\ref{rectangle:met}) \\
|new (L,p)                 -> R|   \\ 
|coordinates (p)         -> r,r|   \\
                                   \\
\fbox{\textbf{square} }            \\
      \\
 \textbf{Attributes} table(\ref{square:att}) \\
|pa,pb,pc,pd               -> p|   \\
|type                      -> s|   \\
|side                      -> d|   \\
|center                    -> p|   \\
|circumradius              -> d|   \\
|inradius                  -> d|   \\
|diagonal                  -> d|   \\
|proj                      -> p|   \\
|ab bc cd da               -> L|   \\
|ac bd                     -> L|   \\
 \textbf{Methods} table(\ref{square:met}) \\
|new (p,p,p,p)             -> S|   \\ 
|rotation (p,p)            -> S|   \\
|side (p,p,<swap>)         -> S|   \\
                                   \\
\fbox{\textbf{rectangle}}          \\
\textbf{Attributes} table(\ref{rectangle:att}) \\
|pa,pb,pc,pd               -> p|  \\
|type                      -> s|   \\
|center                    -> p|  \\
|circumradius              -> d|   \\
|length                    -> r|   \\
|width                     -> r|   \\
|diagonal                  -> d|   \\
|ab bc cd da               -> L|   \\
|ac bd                     -> L|   \\
 \textbf{Methods} table(\ref{rectangle:met}) \\
|new (p,p,p,p)             -> R|   \\ 
|angle (p,p,an)            -> R|   \\
|gold  (p,p,<swap>)        -> R|   \\
|diagonal  (p,p,<swap>)    -> R|   \\
|side  (p,p,r,<swap>)      -> R|   \\
|get_lengths ()           ->r,r|  \\
                                   \\
\fbox{\textbf{quadrilateral} }     \\
 \textbf{Attributes} table(\ref{quadrilateral:att}) \\
|pa,pb,pc,pd               -> p|  \\
|ab bc cd da               -> L|  \\
|ac bd                     -> L|  \\
|type                      -> s|  \\
|i                         -> p|  \\
|g                         -> p|  \\
|a b c d                   -> r|  \\
 \textbf{Methods} table(\ref{quadrilateral:met}) \\
|new (p,p,p,p)             -> Q|   \\ 
|iscyclic ()               -> b|   \\         
                                   \\
\fbox{\textbf{parallelogram}}      \\
 \textbf{Attributes} table(\ref{parallelogram:att}) \\
|pa,pb,pc,pd               -> p|   \\
|ab bc cd da               -> L|  \\
|ac bd                     -> L|  \\
|type                      -> s|  \\
|center                    -> p|   \\
 \textbf{Methods} table(\ref{parallelogram:met}) \\
|new (p,p,p,p)              ->P|     \\ 
|fourth (p,p,p)             ->P|     \\
                                   \\
\fbox{\textbf{Regular\_polygon}}   \\
 \textbf{Attributes} table(\ref{regular:att}) \\
|center                    -> p|   \\
|through                   -> p|  \\
|circle                    -> C|  \\
|type                      -> s|  \\
|side                      -> d|   \\
|circumradius              -> d|   \\
|inradius                  -> d|   \\
|proj                      -> p|   \\
|nb                        -> i|   \\
|angle                    -> an|  \\
 \textbf{Methods} table(\ref{regular:met})  \\
|new (p,p,n)              -> PR|  \\
|incircle ()               -> C|   \\
|name (s)                  -> ?|   \\
                                   \\
\fbox{\textbf{vector}}             \\
\textbf{Attributes} table(\ref{vector:att}) \\
|type                      -> s|   \\
|norm                      -> d|   \\
|slope                     -> r|   \\
|mtx                       -> M|   \\
\textbf{Methods} table(\ref{vector:met})  \\
|new (p,p)                 -> V|   \\
|+ - *                     -> p|   \\
|normalize (V)             -> V|   \\
|orthogonal (d)            -> V|   \\
|scale (r)                 -> V|   \\
|at (p)                    -> V|   \\
        \\
\fbox{\textbf{matrix}}             \\
\textbf{Attributes} table(\ref{matrix:att})   \\
|set                       ->  t|  \\
|rows                      ->  n|  \\
|cols                      ->  n|  \\
|type                      ->  s|  \\
|det                       ->  r|  \\
\textbf{Functions} table(\ref{matrix:met}) \\
|new                       ->  m|  \\
|square                    ->  m|  \\
|htm                       ->  m|  \\
|vector                    ->  m|  \\
\\
\textbf{Metamethods} table(\ref{matrix:meta}) \\
|+ - *  (m,m)               -> m|   \\
|^ (m,n)                    -> m|   \\
|=                          -> b|   \\
|tostring                   -> s|   \\
\\
\textbf{Method} table(\ref{matrix:met})   \\
|print                      -> s|   \\                    
|get                     -> r/cx|   \\
|inverse                    -> m|   \\    
|adjugate                   -> m|   \\ 
|transpose                  -> m|   \\   
|is_diagonal                -> b|   \\   
|is_orthogonal              -> b|   \\  
|homogenization             -> m|   \\  
|htm_apply                  -> m|   \\  
                                   \\                       
\fbox{\textbf{Misc.}}              \\
 \textbf{Attributes} table(\ref{misc}) \\
|scale (default =1)          -> r|   \\ 
|tkzphi                      -> r|   \\
|tkzinvphi                   -> r|   \\
|tkzsqrtphi                  -> r|   \\
|tkz_epsilon (default=1e-8)  -> r|   \\
|length                      -> d|   \\
|islinear(p,p,p)             -> b|   \\
|isortho(p,p,p)              -> b|   \\
|value{r}                    -> r|   \\
|real                        -> r|   \\
|angle_normalize (an)       -> an|  \\
|barycenter (...)            -> p|  \\
|bisector (p,p,p)            -> L|   \\
|bisector_ext (p,p,p)        -> L|   \\
|altitude (p,p,p)            -> L|   \\
|midpoint (p,p)              -> p|  \\
|midpoints (...)   -> list of pts|  \\
|equilateral (p,p)           -> T|   \\
|format_number(r,n)          -> r|   \\
|solve_quadratic(cx,cx,cx)->cx,cx|\\
|\tkzUseLua{v}               -> s|   \\
                                   \\
\fbox{\textbf{Macros}}             \\
|\tkzDN[n]{r}                -> r|   \\
|\tkzDrawLuaEllipse(p,p,p)|   \\
\end{multicols}
\end{document}