% !TEX TS-program = lualatex % encoding : utf8 % Documentation of tkz-elements v3.10c % 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.10c} \gdef\tkzdateofpack{\today} \gdef\tkznameofdoc{tkz-elements.pdf} \gdef\tkzversionofdoc{3.10c} \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{fontspec} \setmainfont{texgyrepagella}[ UprightFont = texgyrepagella-regular.otf, SmallCapsFeatures={FakeSmallCaps}, Extension = .otf, UprightFont = *-regular , ItalicFont = *-italic , BoldFont = *-bold , BoldItalicFont = *-bolditalic ] \setsansfont{texgyreheros}[ Extension = .otf, UprightFont = *-regular , ItalicFont = *-italic , BoldFont = *-bold , BoldItalicFont = *-bolditalic , BoldItalicFeatures = {RawFeature=-smcp} % Désactiver smcp ] \setmonofont{lmmono10-regular.otf}[ Numbers={Lining,SlashedZero}, ItalicFont=lmmonoslant10-regular.otf, BoldFont=lmmonolt10-bold.otf, BoldItalicFont=lmmonolt10-boldoblique.otf, ] \newfontfamily\ttcondensed{lmmonoltcond10-regular.otf} %% (La)TeX font-related declarations: \linespread{1.05} % Pagella needs more space between lines %\usepackage[math-style=literal,bold-style=literal]{unicode-math} \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{\lefthand\ \\ 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 primary programming approach offered is oriented towards object programming, utilizing object classes such as point, line, triangle, circle, and ellipse. Currently, after the calculations are completed, \pkg{tkz-euclide} is used for drawing purposes. (but you can 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-ellipse.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| \\ |translation (...) -> O| \\ |projection (...) -> O| \\ |reflection (...) -> O| \\ |ll_from ( p ) -> L| \\ |ortho_from ( p ) -> L| \\ |mediator () -> L| \\ |circle () -> C| \\ |circle_swap () -> C| \\ |diameter () -> C| \\ |apollonius (r) -> C| \\ |c_ll_p (p,p) -> C| \\ |c_l_pp (p,p) -> C| \\ |equilateral () -> T| \\ |isosceles (an,) -> T| \\ |school () -> T| \\ |two_angles (an,an) -> T| \\ |half () -> T| \\ |sss (r,r,r) -> T| \\ |sas (r,an) -> T| \\ |ssa (r,an) -> T| \\ |gold () -> T| \\ |euclide () -> T| \\ |golden () -> T| \\ |divine () -> T| \\ |cheops () -> T| \\ |pythagoras () -> T| \\ |sublime () -> T| \\ |egyptian () -> T| \\ |square () -> 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| \\ |gamma -> r| \\ \textbf{Methods} table(\ref{triangle:met}) \\ |new (p,p,p) -> 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| \\ |conway_points () -> pts| \\ |euler_line () -> L| \\ |symmedian_line (n) -> L| \\ |altitude (n) -> L| \\ |bisector (n) -> L| \\ |bisector_ext(n) -> L| \\ |antiparallel(p,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| \\ |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| \\ |projection (p) -> p,p,p| \\ |parallelogram () -> p| \\ |area () -> d| \\ |barycentric_coordinates(p)| \\ |-> r,r,r| \\ |in_out (p) -> p| \\ |check_equilateral () -> b| \\ \\ \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,) -> p| \\ |tangent_at (p) -> L| \\ |radical_axis (C) -> L| \\ |radical_circle(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| \\ |external_tangent(C) -> L,L| \\ |internal_tangent(C) -> L,L| \\ |common_tangent(C) -> L,L| \\ |tangent_from (p) -> L,L| \\ |inversion (...) -> O | \\ \\ \fbox{\textbf{ellipse}} \\ \textbf{Attributes} table(\ref{ellipse:met}) \\ |center -> p| \\ |vertex -> p| \\ |covertex -> p| \\ |Fa -> p| \\ |Fb -> p| \\ |north -> p| \\ |south -> p| \\ |east -> p| \\ |west -> p| \\ |Rx -> d| \\ |Ry -> d| \\ |slope -> r| \\ |type -> s| \\ \textbf{Methods} table(\ref{ellipse:met}) \\ |new (p,p,p) -> E| \\ |foci (p,p,p) -> E| \\ |radii (p,r,r,an) -> E| \\ |in_out (p) -> b| \\ |tangent_at (p) -> L| \\ |tangent_from (p) -> L| \\ |point (r) -> p| \\ \\ \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,) -> 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,) -> R| \\ |diagonal (p,p,) -> R| \\ |side (p,p,r,) -> 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) ->| \\ |fourth (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}