% !TEX TS-program = lualatex % encoding : utf8 % Documentation of tkz-elements v3.00c % 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.00c} \gdef\tkzdateofpack{\today} \gdef\tkznameofdoc{tkz-elements.pdf} \gdef\tkzversionofdoc{3.00c} \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}[ Extension = .otf, UprightFont = *-regular , ItalicFont = *-italic , BoldFont = *-bold , BoldItalicFont = *-bolditalic ] \setsansfont{texgyreheros}[ Extension = .otf, UprightFont = *-regular , ItalicFont = *-italic , BoldFont = *-bold , BoldItalicFont = *-bolditalic , ] \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 \code{object programming}, utilizing object classes such as point, line, triangle, circle, and ellipse. Currently, after the calculations are completed, \pkg{tkz-euclide} or \pkg{TikZ} is used for drawing purposes.\\ 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-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, |pt| 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 (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{Functions} table(\ref{point:att}) \\ |new -> pt| \\ |polar -> pt| \\ |polar_deg -> pt| \\ \textbf{Methods} table(\ref{complex:meta}) \\ |+ - * / (pt,pt) -> pt| \\ |.. (pt,pt) -> r| \\ |^ (pt,pt) -> r| \\ |= -> b| \\ |tostring -> s| \\ \textbf{Methods} table(\ref{point:met}) table(\ref{complex:met}) \\ |conj -> pt| \\ |abs -> r| \\ |mod -> d| \\ |norm -> d| \\ |arg -> d| \\ |get -> r,r| \\ |sqrt -> pt| \\ |north(d) -> pt| \\ |south(d) -> pt| \\ |east(d) -> pt| \\ |west(d) -> pt| \\ |normalize(pt) -> pt| \\ |symmetry (...) -> O| \\ |rotation (an , ...) -> O| \\ |homothety (r , ...) -> O| \\ |orthogonal(d) -> pt| \\ |at() -> pt| \\ |print() -> s| \\ \\ \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| \\ |vec -> V| \\ \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| \\ |report (r,pt) -> pt| \\ |colinear_at (pt,k) -> 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 () -> 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 -> 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| \\ |conway_points () -> pts| \\ |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| \\ |conway_circle () -> C| \\ |pedal_circle () -> C| \\ |cevian_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| \\ |pedal (pt) -> 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,) -> pt| \\ |tangent_at (pt) -> L| \\ |radical_axis (C) -> L| \\ |radical_circle(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,) -> 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,) -> R| \\ |diagonal (pt,pt,) -> R| \\ |side (pt,pt,r,) -> 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{vector}} \\ \textbf{Attributes} table(\ref{vector:att}) \\ |type -> s| \\ |norm -> d| \\ |slope -> r| \\ |mtx -> M| \\ \textbf{Methods} table(\ref{vector:met}) \\ |new (pt,pt) -> V| \\ |+ - * -> pt| \\ |normalize (V) -> V| \\ |orthogonal (d) -> V| \\ |scale (r) -> V| \\ |at (pt) -> 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(pt,pt,pt) -> b| \\ |isortho(pt,pt,pt) -> b| \\ |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| \\ |format_number(r,n) -> r| \\ |solve_quadratic(cx,cx,cx) -> cx,cx| \\ |\tkzUseLua{v} -> s| \\ \\ \fbox{\textbf{Macros}} \\ |\tkzDN[n]{r} -> r| \\ |\tkzDrawLuaEllipse((pt,pt,pt))| \\ \end{multicols} \end{document}